Skip to content
This repository was archived by the owner on Mar 4, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions lib/dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,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,
Expand All @@ -31,7 +30,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
Expand Down Expand Up @@ -136,11 +135,6 @@ Dashboard.prototype._showLayout = function (id) {
var View = views.getConstructor(layoutConfig.view);

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,
Expand Down
23 changes: 20 additions & 3 deletions lib/generate-layouts.js
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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 */
Expand All @@ -124,6 +124,23 @@ 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) {
return panelsConfig.map(function (view) {
var customization = customizations[view.type];
if (!customization) {
return view;
}
return _.merge(view, { view: customization });
});
};
};

return layoutConfig.map(createLayout);
module.exports = function generateLayouts(layoutsFile, customizations) {
return loadConfigs(layoutsFile)
.map(applyCustomizations(customizations || {}))
.map(createLayout);
};