Skip to content
This repository was archived by the owner on Mar 4, 2022. It is now read-only.

Commit fd3b84b

Browse files
authored
Merge pull request #83 from jjasonclark/view_constructor
Extract factory method for views
2 parents caf09c3 + 00ac885 commit fd3b84b

File tree

2 files changed

+32
-22
lines changed

2 files changed

+32
-22
lines changed

lib/dashboard.js

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,12 @@
33
var _ = require("lodash");
44
var blessed = require("blessed");
55

6-
var StreamView = require("./views/stream-view");
7-
var EventLoopView = require("./views/eventloop-view");
8-
var MemoryGaugeView = require("./views/memory-gauge-view");
9-
var MemoryGraphView = require("./views/memory-graph-view");
10-
var CpuView = require("./views/cpu-view");
116
var HelpView = require("./views/help");
127
var generateLayouts = require("./generate-layouts");
138
var LogProvider = require("./providers/log-provider");
149
var MetricsProvider = require("./providers/metrics-provider");
15-
var BaseView = require("./views/base-view");
1610
var GotoTimeView = require("./views/goto-time-view");
11+
var views = require("./views");
1712

1813
var THROTTLE_TIMEOUT = 150;
1914

@@ -127,14 +122,6 @@ Dashboard.prototype.onEvent = function (event) {
127122
}
128123
};
129124

130-
var VIEW_MAP = {
131-
log: StreamView,
132-
cpu: CpuView,
133-
memory: MemoryGaugeView,
134-
memoryGraph: MemoryGraphView,
135-
eventLoop: EventLoopView
136-
};
137-
138125
Dashboard.prototype._showLayout = function (id) {
139126
if (this.currentLayout === id) {
140127
return;
@@ -146,14 +133,7 @@ Dashboard.prototype._showLayout = function (id) {
146133
this.views = [];
147134

148135
_.each(this.layouts[id], function (layoutConfig) {
149-
var View;
150-
151-
if (VIEW_MAP[layoutConfig.view.type]) {
152-
View = VIEW_MAP[layoutConfig.view.type];
153-
} else if (layoutConfig.view.module) {
154-
// eslint-disable-next-line global-require
155-
View = require(layoutConfig.view.module)(BaseView);
156-
}
136+
var View = views.getConstructor(layoutConfig.view);
157137

158138
if (View) {
159139
if (this.settings[layoutConfig.view.type]) {

lib/views/index.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"use strict";
2+
3+
var StreamView = require("./stream-view");
4+
var EventLoopView = require("./eventloop-view");
5+
var MemoryGaugeView = require("./memory-gauge-view");
6+
var MemoryGraphView = require("./memory-graph-view");
7+
var CpuView = require("./cpu-view");
8+
var BaseView = require("./base-view");
9+
10+
var VIEW_MAP = {
11+
log: StreamView,
12+
cpu: CpuView,
13+
memory: MemoryGaugeView,
14+
memoryGraph: MemoryGraphView,
15+
eventLoop: EventLoopView
16+
};
17+
18+
var getConstructor = function (options) {
19+
if (VIEW_MAP[options.type]) {
20+
return VIEW_MAP[options.type];
21+
} else if (options.module) {
22+
// eslint-disable-next-line global-require
23+
return require(options.module)(BaseView);
24+
}
25+
return null;
26+
};
27+
28+
module.exports = {
29+
getConstructor: getConstructor
30+
};

0 commit comments

Comments
 (0)