node-red-dashboard
Version:
A set of dashboard nodes for Node-RED
97 lines (87 loc) • 3.97 kB
JavaScript
module.exports = function(RED) {
var ui = require('../ui')(RED);
var path= require('path');
var node;
var set = RED.settings.ui || "{}";
function BaseNode(config) {
RED.nodes.createNode(this, config);
node = this;
var baseFontName = "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif";
var defaultLightTheme = {
baseColor: '#0094CE',
baseFont: baseFontName
}
var defaultDarkTheme = {
baseColor: '#097479',
baseFont: baseFontName
}
var defaultCustomTheme = {
name: 'Untitled Theme 1',
baseColor: defaultLightTheme.baseColor,
baseFont: baseFontName
}
var defaultAngularTheme = {
primary:'indigo',
accents:'teal',
warn: "red",
background:'grey'
};
// Setup theme name
// First try old format (for upgrading with old flow file)
// Then try new format
// Else fallback to theme-light
var themeName;
if (typeof(config.theme) === 'string') { themeName = config.theme; }
else { themeName = config.theme.name || "theme-light"; }
// Setup other styles
var defaultThemeState = {}
if (themeName === 'theme-light') {
defaultThemeState["base-font"] = {value: baseFontName};
defaultThemeState["base-color"] = {value: "#0094CE"};
defaultThemeState["page-backgroundColor"] = {value: "#fafafa"};
defaultThemeState["page-titlebar-backgroundColor"] = {value: "#0094CE"};
defaultThemeState["page-sidebar-backgroundColor"] = {value: "#ffffff"};
defaultThemeState["group-backgroundColor"] = {value: "#ffffff"};
defaultThemeState["group-textColor"] = {value: "#000000"};
defaultThemeState["group-borderColor"] = {value: "#ffffff"};
defaultThemeState["widget-textColor"] = {value: "#111111"};
defaultThemeState["widget-backgroundColor"] = {value: "#0094CE"};
}
else {
defaultThemeState["base-font"] = {value: baseFontName};
defaultThemeState["base-color"] = {value: "#097479"};
defaultThemeState["page-backgroundColor"] = {value: "#111111"};
defaultThemeState["page-titlebar-backgroundColor"] = {value: "#097479"};
defaultThemeState["page-sidebar-backgroundColor"] = {value: "#000000"};
defaultThemeState["group-backgroundColor"] = {value: "#333333"};
defaultThemeState["group-textColor"] = {value: "#10cfd8"};
defaultThemeState["group-borderColor"] = {value: "#555555"};
defaultThemeState["widget-textColor"] = {value: "#eeeeee"};
defaultThemeState["widget-backgroundColor"] = {value: "#097479"};
}
var defaultThemeObject = {
name: themeName,
lightTheme: config.theme.lightTheme || defaultLightTheme,
darkTheme: config.theme.darkTheme || defaultDarkTheme,
customTheme: config.theme.customTheme || defaultCustomTheme,
angularTheme: config.theme.angularTheme || defaultAngularTheme,
themeState: config.theme.themeState || defaultThemeState
}
this.config = {
theme: defaultThemeObject,
site: config.site
}
ui.addBaseConfig(this.config);
}
RED.nodes.registerType("ui_base", BaseNode);
RED.library.register("themes");
RED.httpAdmin.get('/uisettings', function(req, res) {
res.json(set);
});
RED.httpAdmin.get('/ui_base/js/*', function(req, res) {
var filename = path.join(__dirname , '../dist/js', req.params[0]);
res.sendFile(filename, function (err) {
if (err) { node.warn(filename + " not found. Maybe running in dev mode."); }
});
});
};