From 73af9e560de3d059c254275e1630ca5e0e902524 Mon Sep 17 00:00:00 2001 From: Hunternif Date: Sat, 27 Apr 2019 03:55:36 +0700 Subject: client,server: populate metrics menu on post list header --- client/js/controls/metric_header_control.js | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 client/js/controls/metric_header_control.js (limited to 'client/js/controls') diff --git a/client/js/controls/metric_header_control.js b/client/js/controls/metric_header_control.js new file mode 100644 index 0000000..428ba40 --- /dev/null +++ b/client/js/controls/metric_header_control.js @@ -0,0 +1,37 @@ +'use strict'; + +const events = require('../events.js'); +const misc = require('../util/misc.js'); +const views = require('../util/views.js'); +const MetricList = require('../models/metric_list.js'); + +const mainTemplate = views.getTemplate('metric-header'); +const metricItemTemplate = views.getTemplate('metric-header-item'); + +class MetricHeaderControl extends events.EventTarget { + constructor(hostNode, ctx) { + super(); + this._ctx = ctx; + this._hostNode = hostNode; + + this._headerNode = mainTemplate(ctx); + this._metricListNode = this._headerNode.querySelector('ul.metric-list'); + + this._hostNode.insertBefore( + this._headerNode, this._hostNode.nextSibling); + + MetricList.loadAll().then(response => { + this._metrics = response.results; + this._installMetrics(response.results); + }); + } + + _installMetrics(metrics) { + for (let metric of metrics) { + const node = metricItemTemplate({metric: metric, ctx: this._ctx}); + this._metricListNode.appendChild(node); + } + } +} + +module.exports = MetricHeaderControl; -- cgit v1.3