diff --git a/docs/docs/meshcentral/config.md b/docs/docs/meshcentral/config.md
index 9c2aebe4..2bc3a643 100644
--- a/docs/docs/meshcentral/config.md
+++ b/docs/docs/meshcentral/config.md
@@ -1642,6 +1642,11 @@ See description for information about each item.
"type": "object",
"description": "LDAP options passed to ldapauth-fork"
},
+ "hidePowerTimeline": {
+ "type": "boolean",
+ "default": false,
+ "description": "When enabled, this will hide the power timeline in the web ui"
+ },
"agentInviteCodes": {
"type": "boolean",
"default": false,
diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json
index 571cffd6..68769f94 100644
--- a/meshcentral-config-schema.json
+++ b/meshcentral-config-schema.json
@@ -1640,6 +1640,11 @@
"type": "object",
"description": "LDAP options passed to ldapauth-fork"
},
+ "hidePowerTimeline": {
+ "type": "boolean",
+ "default": false,
+ "description": "When enabled, this will hide the power timeline in the web ui"
+ },
"agentInviteCodes": {
"type": "boolean",
"default": false,
diff --git a/sample-config-advanced.json b/sample-config-advanced.json
index 556ade53..8a1314ae 100644
--- a/sample-config-advanced.json
+++ b/sample-config-advanced.json
@@ -189,6 +189,7 @@
"_agentKey": [ "abc", "123" ],
"_ipkvm": false,
"minify": true,
+ "_hidePowerTimeline": true,
"_newAccounts": true,
"_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ],
"_userNameIsEmail": true,
diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars
index 5ce93198..e050b84c 100644
--- a/views/default-mobile.handlebars
+++ b/views/default-mobile.handlebars
@@ -1250,6 +1250,7 @@
var logoutControls = JSON.parse(decodeURIComponent('{{{logoutControls}}}'));
var authCookieRenewTimer = null;
var webRelayPort = parseInt('{{{webRelayPort}}}');
+ var hidePowerTimeline = {{{hidePowerTimeline}}};
var webRelayDns = '{{{webRelayDns}}}';
var meshserver = null;
var xdr = null;
@@ -3917,7 +3918,7 @@
// Draw device power bars. The bars are 766px wide.
function drawDeviceTimeline() {
- if (currentNode.mtype == 3) { QH('p10html2', '
'); return; }
+ if (currentNode.mtype == 3 || hidePowerTimeline) { QH('p10html2', '
'); return; }
var timeline = null, now = Date.now();
if (currentNode._id == powerTimelineNode) { timeline = powerTimeline; }
diff --git a/views/default.handlebars b/views/default.handlebars
index 2311b78b..a167cf48 100644
--- a/views/default.handlebars
+++ b/views/default.handlebars
@@ -1474,6 +1474,7 @@
var sessionTime = parseInt('{{{sessiontime}}}');
var webRelayPort = parseInt('{{{webRelayPort}}}');
var webRelayDns = '{{{webRelayDns}}}';
+ var hidePowerTimeline = {{{hidePowerTimeline}}};
var sessionRefreshTimer = null;
var domain = '{{{domain}}}';
var domainUrl = '{{{domainurl}}}';
@@ -8270,7 +8271,7 @@
// Draw device power bars. The bars are 766px wide.
function drawDeviceTimeline() {
- if ((currentNode == null) || (xxcurrentView < 10) || (xxcurrentView > 19) || (currentNode.mtype == 3)) return;
+ if ((currentNode == null) || (xxcurrentView < 10) || (xxcurrentView > 19) || (currentNode.mtype == 3) || (hidePowerTimeline)) return;
var timeline = null, now = Date.now();
if (currentNode._id == powerTimelineNode) { timeline = powerTimeline; }
diff --git a/webserver.js b/webserver.js
index 819736a9..45c3b926 100644
--- a/webserver.js
+++ b/webserver.js
@@ -3104,7 +3104,8 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
amtscanoptions: amtscanoptions,
pluginHandler: (parent.pluginHandler == null) ? 'null' : parent.pluginHandler.prepExports(),
webRelayPort: ((args.relaydns != null) ? ((typeof args.aliasport == 'number') ? args.aliasport : args.port) : ((parent.webrelayserver != null) ? ((typeof args.relayaliasport == 'number') ? args.relayaliasport : parent.webrelayserver.port) : 0)),
- webRelayDns: ((args.relaydns != null) ? args.relaydns[0] : '')
+ webRelayDns: ((args.relaydns != null) ? args.relaydns[0] : ''),
+ hidePowerTimeline: (domain.hidepowertimeline ? 'true' : 'false')
}, dbGetFunc.req, domain), user);
}
xdbGetFunc.req = req;