From eeb88c96f716dbaceecd1ff871e22994723203e3 Mon Sep 17 00:00:00 2001 From: Jason Clark Date: Mon, 18 Dec 2017 15:26:55 -0800 Subject: [PATCH 1/2] Move customization to layout generation --- lib/dashboard.js | 8 +------- lib/generate-layouts.js | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/lib/dashboard.js b/lib/dashboard.js index 015e7d8..5b0f570 100644 --- a/lib/dashboard.js +++ b/lib/dashboard.js @@ -20,7 +20,6 @@ var THROTTLE_TIMEOUT = 150; var Dashboard = function Dashboard(options) { this.options = options || {}; this.views = {}; - this.settings = options.settings; this.screen = blessed.screen({ smartCSR: true, @@ -36,7 +35,7 @@ var Dashboard = function Dashboard(options) { }; Dashboard.prototype._createViews = function () { - this.layouts = generateLayouts(this.options.layoutsFile); + this.layouts = generateLayouts(this.options.layoutsFile, this.options.settings); this.views = []; // container prevents stream view scrolling from interfering with side views @@ -156,11 +155,6 @@ Dashboard.prototype._showLayout = function (id) { } if (View) { - if (this.settings[layoutConfig.view.type]) { - layoutConfig = _.merge(layoutConfig, { - view: this.settings[layoutConfig.view.type] - }); - } var view = new View({ parent: this.container, logProvider: this.logProvider, diff --git a/lib/generate-layouts.js b/lib/generate-layouts.js index 091b82c..9c599b6 100644 --- a/lib/generate-layouts.js +++ b/lib/generate-layouts.js @@ -1,11 +1,11 @@ "use strict"; + var _ = require("lodash"); var assert = require("assert"); var path = require("path"); var defaultLayoutConfig = require("./default-layout-config"); var validate = require("jsonschema").validate; var layoutConfigSchema = require("./layout-config-schema.json"); -/* eslint-disable no-magic-numbers */ // Each layout consists of vertical panels, that contains its position and horizontal views. // Flex-like positions of panels and views defined by 'grow' and 'size' parameters. @@ -108,7 +108,7 @@ var createLayout = function (panelsConfig) { }, []); }; -module.exports = function generateLayouts(layoutsFile) { +var loadConfigs = function (layoutsFile) { var layoutConfig = defaultLayoutConfig; if (layoutsFile) { /* eslint-disable global-require */ @@ -124,6 +124,24 @@ module.exports = function generateLayouts(layoutsFile) { "Layout config is invalid:\n\n * " + validationResult.errors.join("\n * ") + "\n" ); } + return layoutConfig; +}; + +var applyCustomizations = function (customizations) { + return function (panelsConfig) { + var customized = panelsConfig.map(function (view) { + var customization = customizations[view.type]; + if (!customization) { + return view; + } + return _.merge(view, { view: customization }); + }); + return customized; + }; +}; - return layoutConfig.map(createLayout); +module.exports = function generateLayouts(layoutsFile, customizations) { + return loadConfigs(layoutsFile) + .map(applyCustomizations(customizations || {})) + .map(createLayout); }; From c2a9fee5ea64e9b0023bef634ae1f929f881c018 Mon Sep 17 00:00:00 2001 From: Jason Clark Date: Wed, 27 Dec 2017 08:55:48 -0800 Subject: [PATCH 2/2] Directly return result of map call Remove `customized` variable --- lib/generate-layouts.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/generate-layouts.js b/lib/generate-layouts.js index 9c599b6..e8a1642 100644 --- a/lib/generate-layouts.js +++ b/lib/generate-layouts.js @@ -129,14 +129,13 @@ var loadConfigs = function (layoutsFile) { var applyCustomizations = function (customizations) { return function (panelsConfig) { - var customized = panelsConfig.map(function (view) { + return panelsConfig.map(function (view) { var customization = customizations[view.type]; if (!customization) { return view; } return _.merge(view, { view: customization }); }); - return customized; }; };