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;