diff options
| author | Hunternif <hunternif@gmail.com> | 2019-04-27 03:55:36 +0700 |
|---|---|---|
| committer | Hunternif <hunternif@gmail.com> | 2019-04-27 04:43:58 +0700 |
| commit | 73af9e560de3d059c254275e1630ca5e0e902524 (patch) | |
| tree | 690ba629cbe9cdd6846412551c267b628c24efa3 /client/js/controls | |
| parent | 9b59b5f3b095a08a7b871c32554822a764e778ee (diff) | |
client,server: populate metrics menu on post list header
Diffstat (limited to 'client/js/controls')
| -rw-r--r-- | client/js/controls/metric_header_control.js | 37 |
1 files changed, 37 insertions, 0 deletions
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; |