summaryrefslogtreecommitdiff
path: root/client/js/controls
diff options
context:
space:
mode:
authorHunternif <hunternif@gmail.com>2019-04-27 03:55:36 +0700
committerHunternif <hunternif@gmail.com>2019-04-27 04:43:58 +0700
commit73af9e560de3d059c254275e1630ca5e0e902524 (patch)
tree690ba629cbe9cdd6846412551c267b628c24efa3 /client/js/controls
parent9b59b5f3b095a08a7b871c32554822a764e778ee (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.js37
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;