126 lines
4.9 KiB
JavaScript
126 lines
4.9 KiB
JavaScript
module.exports = function(RED) {
|
|
var ui = require('../ui')(RED);
|
|
var path= require('path');
|
|
var gsp = require.resolve('gridstack');
|
|
var node;
|
|
var uiset = 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',
|
|
palette:'light'
|
|
};
|
|
|
|
// 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: "#333333"};
|
|
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(uiset);
|
|
});
|
|
|
|
const optsjs = { root: path.join(__dirname , '../dist/js'), dotfiles: 'deny' };
|
|
const optscss = { root: path.join(__dirname , '../dist/css'), dotfiles: 'deny' };
|
|
const optsgs = { root: path.dirname(gsp), dotfiles: 'deny' };
|
|
|
|
RED.httpAdmin.get('/ui_base/js/*', function(req, res) {
|
|
res.sendFile(req.params[0], optsjs, function (err) {
|
|
if (err) {
|
|
res.sendStatus(404);
|
|
if (node) { node.warn("JS File not found."); }
|
|
else { console.log("ui_base - error:",err); }
|
|
}
|
|
});
|
|
});
|
|
|
|
RED.httpAdmin.get('/ui_base/css/*', function(req, res) {
|
|
res.sendFile(req.params[0], optscss, function (err) {
|
|
if (err) {
|
|
res.sendStatus(404);
|
|
if (node) { node.warn("CSS File not found."); }
|
|
else { console.log("ui_base - error:",err); }
|
|
}
|
|
});
|
|
});
|
|
|
|
RED.httpAdmin.get('/ui_base/gs/*', function(req, res) {
|
|
res.sendFile(req.params[0], optsgs, function (err) {
|
|
if (err) {
|
|
res.sendStatus(404);
|
|
if (node) { node.warn("Gridstack file not found."); }
|
|
else { console.log("ui_base - error:",err); }
|
|
}
|
|
});
|
|
});
|
|
};
|