Fixed web app interface and server version.

This commit is contained in:
Ylian Saint-Hilaire 2019-12-20 14:02:49 -08:00
parent 98dbbfde25
commit def2338f9c
16 changed files with 1473 additions and 974 deletions

View File

@ -60,7 +60,6 @@ function CreateMeshCentralServer(config, args) {
obj.multiServer = null;
obj.maintenanceTimer = null;
obj.serverId = null;
obj.currentVer = null;
obj.serverKey = Buffer.from(obj.crypto.randomBytes(48), 'binary');
obj.loginCookieEncryptionKey = null;
obj.invitationLinkEncryptionKey = null;
@ -71,7 +70,11 @@ function CreateMeshCentralServer(config, args) {
obj.serverWarnings = []; // List of warnings that should be shown to administrators
obj.cookieUseOnceTable = {}; // List of cookies that are already expired
obj.cookieUseOnceTableCleanCounter = 0; // Clean the cookieUseOnceTable each 20 additions
try { obj.currentVer = JSON.parse(obj.fs.readFileSync(obj.path.join(__dirname, 'package.json'), 'utf8')).version; } catch (e) { } // Fetch server version
// Server version
obj.currentVer = null;
function getCurrentVerion() { try { obj.currentVer = JSON.parse(obj.fs.readFileSync(obj.path.join(__dirname, 'package.json'), 'utf8')).version; } catch (e) { } return obj.currentVer; } // Fetch server version
getCurrentVerion();
// Setup the default configuration and files paths
if ((__dirname.endsWith('/node_modules/meshcentral')) || (__dirname.endsWith('\\node_modules\\meshcentral')) || (__dirname.endsWith('/node_modules/meshcentral/')) || (__dirname.endsWith('\\node_modules\\meshcentral\\'))) {
@ -126,7 +129,7 @@ function CreateMeshCentralServer(config, args) {
for (i in obj.config.settings) { obj.args[i] = obj.config.settings[i]; } // Place all settings into arguments, arguments have already been placed into settings so arguments take precedence.
if ((obj.args.help == true) || (obj.args['?'] == true)) {
console.log('MeshCentral v' + obj.currentVer + ', a open source remote computer management web portal.');
console.log('MeshCentral v' + getCurrentVerion() + ', a open source remote computer management web portal.');
console.log('Details at: https://www.meshcommander.com/meshcentral2\r\n');
if (obj.platform == 'win32') {
console.log('Run as a Windows Service');
@ -263,7 +266,7 @@ function CreateMeshCentralServer(config, args) {
try {
var errlogpath = null;
if (typeof obj.args.mesherrorlogpath == 'string') { errlogpath = obj.path.join(obj.args.mesherrorlogpath, 'mesherrors.txt'); } else { errlogpath = obj.getConfigFilePath('mesherrors.txt'); }
obj.fs.appendFileSync(obj.getConfigFilePath('mesherrors.txt'), '-------- ' + new Date().toLocaleString() + ' ---- ' + obj.currentVer + ' --------\r\n\r\n' + data + '\r\n\r\n\r\n');
obj.fs.appendFileSync(obj.getConfigFilePath('mesherrors.txt'), '-------- ' + new Date().toLocaleString() + ' ---- ' + getCurrentVerion() + ' --------\r\n\r\n' + data + '\r\n\r\n\r\n');
} catch (ex) { console.log('ERROR: Unable to write to mesherrors.txt.'); }
});
childProcess.on('close', function (code) { if ((code != 0) && (code != 123)) { /* console.log("Exited with code " + code); */ } });
@ -273,7 +276,7 @@ function CreateMeshCentralServer(config, args) {
obj.getLatestServerVersion = function (callback) {
if (callback == null) return;
try {
if (typeof obj.args.selfupdate == 'string') { callback(obj.currentVer, obj.args.selfupdate); return; } // If we are targetting a specific version, return that one as current.
if (typeof obj.args.selfupdate == 'string') { callback(getCurrentVerion(), obj.args.selfupdate); return; } // If we are targetting a specific version, return that one as current.
var child_process = require('child_process');
var npmpath = ((typeof obj.args.npmpath == 'string') ? obj.args.npmpath : 'npm');
var npmproxy = ((typeof obj.args.npmproxy == 'string') ? (' --proxy ' + obj.args.npmproxy) : '');
@ -284,9 +287,9 @@ function CreateMeshCentralServer(config, args) {
xxprocess.on('close', function (code) {
var latestVer = null;
if (code == 0) { try { latestVer = xxprocess.data.split(' ').join('').split('\r').join('').split('\n').join(''); } catch (e) { } }
callback(obj.currentVer, latestVer);
callback(getCurrentVerion(), latestVer);
});
} catch (ex) { callback(obj.currentVer, null, ex); } // If the system is running out of memory, an exception here can easily happen.
} catch (ex) { callback(getCurrentVerion(), null, ex); } // If the system is running out of memory, an exception here can easily happen.
};
// Initiate server self-update
@ -702,7 +705,7 @@ function CreateMeshCentralServer(config, args) {
// If we are targetting a specific version, update now.
if ((obj.serverSelfWriteAllowed == true) && (typeof obj.args.selfupdate == 'string')) {
obj.args.selfupdate = obj.args.selfupdate.toLowerCase();
if (obj.currentVer !== obj.args.selfupdate) { obj.performServerUpdate(); return; } // We are targetting a specific version, run self update now.
if (getCurrentVerion() !== obj.args.selfupdate) { obj.performServerUpdate(); return; } // We are targetting a specific version, run self update now.
}
// Write the server state
@ -966,7 +969,7 @@ function CreateMeshCentralServer(config, args) {
// Write server version and run mode
var productionMode = (process.env.NODE_ENV && (process.env.NODE_ENV == 'production'));
var runmode = (obj.args.lanonly ? 2 : (obj.args.wanonly ? 1 : 0));
console.log("MeshCentral v" + obj.currentVer + ', ' + (["Hybrid (LAN + WAN) mode", "WAN mode", "LAN mode"][runmode]) + (productionMode ? ", Production mode." : '.'));
console.log("MeshCentral v" + getCurrentVerion() + ', ' + (["Hybrid (LAN + WAN) mode", "WAN mode", "LAN mode"][runmode]) + (productionMode ? ", Production mode." : '.'));
// Check that no sub-domains have the same DNS as the parent
for (i in obj.config.domains) {
@ -1167,7 +1170,7 @@ function CreateMeshCentralServer(config, args) {
// Perform maintenance operations (called every hour)
obj.maintenanceActions = function () {
// Check for self-update that targets a specific version
if ((typeof obj.args.selfupdate == 'string') && (obj.currentVer === obj.args.selfupdate)) { obj.args.selfupdate = false; }
if ((typeof obj.args.selfupdate == 'string') && (getCurrentVerion() === obj.args.selfupdate)) { obj.args.selfupdate = false; }
// Check if we need to perform server self-update
if ((obj.args.selfupdate) && (obj.serverSelfWriteAllowed == true)) {
@ -1620,7 +1623,7 @@ function CreateMeshCentralServer(config, args) {
else if ((obj.args.minifycore !== false) && (obj.fs.existsSync(obj.path.join(__dirname, 'agents', 'meshcmd.min.js')))) { meshcmdPath = obj.path.join(__dirname, 'agents', 'meshcmd.min.js'); meshCmd = obj.fs.readFileSync(meshcmdPath).toString(); }
else if (obj.fs.existsSync(obj.path.join(__dirname, 'agents', 'meshcmd.js'))) { meshcmdPath = obj.path.join(__dirname, 'agents', 'meshcmd.js'); meshCmd = obj.fs.readFileSync(meshcmdPath).toString(); }
else { obj.defaultMeshCmd = null; if (func != null) { func(false); } } // meshcmd.js not found
meshCmd = meshCmd.replace("'***Mesh*Cmd*Version***'", '\'' + obj.currentVer + '\'');
meshCmd = meshCmd.replace("'***Mesh*Cmd*Version***'", '\'' + getCurrentVerion() + '\'');
// Figure out where the modules_meshcmd folder is.
if (obj.args.minifycore !== false) { try { moduleDirPath = obj.path.join(meshcmdPath, 'modules_meshcmd_min'); modulesDir = obj.fs.readdirSync(moduleDirPath); } catch (e) { } } // Favor minified modules if present.

View File

@ -756,9 +756,13 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
break;
}
case 'mpsstats': {
var stats = parent.parent.mpsserver.getStats();
for (var i in stats) {
if (typeof stats[i] == 'object') { r += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { r += (i + ': ' + stats[i] + '\r\n'); }
if (parent.parent.mpsserver == null) {
r = 'MPS not enabled.';
} else {
var stats = parent.parent.mpsserver.getStats();
for (var i in stats) {
if (typeof stats[i] == 'object') { r += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { r += (i + ': ' + stats[i] + '\r\n'); }
}
}
break;
}

View File

@ -221,6 +221,14 @@ body {
right: 6px;
}
#logoutControlSpan2 {
cursor: pointer;
color: white;
position: absolute;
top: 5px;
right: 24px;
}
#uiMenu {
position: absolute;
top: 17px;

File diff suppressed because one or more lines are too long

View File

@ -106,6 +106,7 @@
<div id=topbar class=noselect>
<div>
<div style="position:relative">
<span id=logoutControlSpan2 style="color:white"></span>
<div tabindex=0 id=uiMenuButton title="User interface selection" onclick="showUserInterfaceSelectMenu()" onkeypress="if (event.key == 'Enter') showUserInterfaceSelectMenu()">
&diams;
<div id=uiMenu style="display:none">
@ -185,12 +186,14 @@
<div id=p0message><span id=p0span>Server disconnected</span>, <href onclick=reload() style=cursor:pointer><u>click to reconnect</u></href>.</div>
</div>
<div id=p1 style="display:none">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex=0 id=devViewButton1 class=viewSelector onclick=onDeviceViewChange(1) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Columns"><div class="viewSelector2"></div></div>
<div tabindex=0 id=devViewButton2 class=viewSelector onclick=onDeviceViewChange(2) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="List"><div class="viewSelector1"></div></div>
<div tabindex=0 id=devViewButton3 class=viewSelector onclick=onDeviceViewChange(3) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Desktops"><div class="viewSelector3"></div></div>
<div tabindex=0 id=devViewButton4 class=viewSelector onclick=onDeviceViewChange(4) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Map" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>My Devices</h1></div>
<div id="p1title">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex=0 id=devViewButton1 class=viewSelector onclick=onDeviceViewChange(1) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Columns"><div class="viewSelector2"></div></div>
<div tabindex=0 id=devViewButton2 class=viewSelector onclick=onDeviceViewChange(2) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="List"><div class="viewSelector1"></div></div>
<div tabindex=0 id=devViewButton3 class=viewSelector onclick=onDeviceViewChange(3) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Desktops"><div class="viewSelector3"></div></div>
<div tabindex=0 id=devViewButton4 class=viewSelector onclick=onDeviceViewChange(4) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Map" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>My Devices</h1></div>
</div>
<table id="devListToolbarSpan" class="noselect">
<tr>
<td class=h1></td>
@ -271,7 +274,7 @@
<div id="xmap-info-window"></div>
</div>
<div id=p2 style="display:none">
<h1>My Account</h1>
<div id="p2title"><h1>My Account</h1></div>
<img id="p2AccountImage" alt="" src="images/clipboard-128.png" />
<div id="p2AccountSecurity" style="display:none">
<p><strong>Account security</strong></p>
@ -302,7 +305,7 @@
<br style=clear:both />
</div>
<div id=p3 style="display:none">
<h1>My Events</h1>
<div id="p3title"><h1>My Events</h1></div>
<table class="pTable">
<tr>
<td class="h1"></td>
@ -323,7 +326,7 @@
<div id=p3events style=""></div>
</div>
<div id=p4 style="display:none">
<h1>My Users</h1>
<div id="p4title"><h1>My Users</h1></div>
<table class="pTable">
<tr>
<td class="h1"></td>
@ -344,7 +347,7 @@
<div id="p3users"></div>
</div>
<div id=p5 style="display:none">
<h1>My Files</h1>
<div id="p5title"><h1>My Files</h1></div>
<table id="p5toolbar" cellpadding="0" cellspacing="0">
<tr>
<td id="p5filehead" valign=bottom>
@ -397,8 +400,10 @@
</table>
</div>
<div id=p6 style="display:none">
<img id=MainMeshImage src="serverpic.ashx">
<h1>My Server</h1>
<div id="p6title">
<img id=MainMeshImage src="serverpic.ashx">
<h1>My Server</h1>
</div>
<div id="p2ServerActions">
<p><strong>Server actions</strong></p>
<div class="mL">
@ -772,17 +777,21 @@
<div id=p17info></div>
</div>
<div id=p20 style="display:none">
<picture id=MainMeshImage style=border-width:0px;height:200px;width:200px;float:right>
<source type="image/webp" width=200 height=200 srcset="images/webp/mesh-256.webp" />
<img alt="" width=200 height=200 src=images/mesh-256.png />
</picture>
<div style="float:left"><div class="backButton" tabindex=0 onclick=goBack() title="Back" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>General - <span id=p20meshName></span></h1>
<div id="p20title">
<picture id=MainMeshImage style=border-width:0px;height:200px;width:200px;float:right>
<source type="image/webp" width=200 height=200 srcset="images/webp/mesh-256.webp" />
<img alt="" width=200 height=200 src=images/mesh-256.png />
</picture>
<div style="float:left"><div class="backButton" tabindex=0 onclick=goBack() title="Back" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>General - <span id=p20meshName></span></h1>
</div>
<p id=p20info></p>
</div>
<div id=p21 style="display:none">
<div style="float:left"><div class="backButton" tabindex=0 onclick=goBack() title="Back" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id=p21meshName></span></h1>
<div id="p21title">
<div style="float:left"><div class="backButton" tabindex=0 onclick=goBack() title="Back" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id=p21meshName></span></h1>
</div>
<div style="width:100%">
<div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -825,8 +834,10 @@
<div id=p30html3></div>
</div>
<div id=p31 style="display:none">
<div style="float:left"><div class="backButton" tabindex=0 onclick=goBack() title="Back" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Events - <span id=p31userName></span></h1>
<div id="p31title">
<div style="float:left"><div class="backButton" tabindex=0 onclick=goBack() title="Back" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Events - <span id=p31userName></span></h1>
</div>
<table class="pTable">
<tr>
<td class="h1"></td>
@ -848,7 +859,7 @@
<div id=p31events style=""></div>
</div>
<div id=p40 style="display:none">
<h1>My Server Stats</h1>
<div id="p40title"><h1>My Server Stats</h1></div>
<div class="areaHead">
<div class="toright2">
<select id=p40type onchange=updateServerTimelineStats()>
@ -872,7 +883,7 @@
<canvas id=serverMainStats style=""></canvas>
</div>
<div id=p41 style="display:none">
<h1>My Server Tracing</h1>
<div id="p41title"><h1>My Server Tracing</h1></div>
<div class="areaHead">
<div class="toright2">
Show
@ -1118,12 +1129,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; }
}
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Welcome {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Logout" + '</a>'); }
QH('logoutControlSpan', logoutControl);
// Check if we are in debug mode
args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1138,58 +1143,20 @@
toggleFullScreen();
// Setup page visuals
if (args.hide) {
var hide = parseInt(args.hide);
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
//if (hide & 16) {
// QV('page_leftbar', false);
// QS('page_content').left = '0px';
//}
// Fix the main grid to zero-height elements we want to hide.
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
// Adjust height of remote desktop, files and Intel AMT
var xh = (((hide & 1) ? 0 : 66) + ((hide & 2) ? 0 : 24) + ((hide & 4) ? 0 : 45) + ((hide & 8) ? 0 : 60)); // 0 to 195
QS('p3users')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p3events')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (160 + xh) + 'px)';
QS('p13filetable')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('serverMainStats')['height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('xdevices')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
var hide = 0;
var globalHide = parseInt('{{{hide}}}');
if (globalHide || args.hide) {
if (args.hide) { hide = parseInt(args.hide); }
if (globalHide) { hide = (hide | globalHide); }
}
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Welcome {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Logout" + '</a>'); }
if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
// Setup the context menu
document.onclick = function (e) { hideContextMenu(); }
@ -1271,13 +1238,91 @@
d4ToggleSize(true);
}
function adjustPanels() {
var hide = args.hide;
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p1title', !(hide & 8));
QV('p2title', !(hide & 8));
QV('p3title', !(hide & 8));
QV('p4title', !(hide & 8));
QV('p5title', !(hide & 8));
QV('p6title', !(hide & 8));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
QV('p17title', !(hide & 8));
QV('p20title', !(hide & 8));
QV('p21title', !(hide & 8));
QV('p30title', !(hide & 8));
QV('p31title', !(hide & 8));
QV('p40title', !(hide & 8));
QV('p41title', !(hide & 8));
//if (hide & 16) { QV('page_leftbar', false); QS('page_content').left = '0px'; }
if (hide != 0) {
// Fix the main grid to zero-height elements we want to hide.
if (uiMode == 2) {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
} else {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
}
}
// Adjust height of remote desktop, files and Intel AMT
// 1 = Top bar, 2 = Tool Bar, 4 = Bottom Bar, 8 = Tab Title
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
var xh2 = (uiMode > 1)?24:0;
QS('p3users')['max-height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('p3events')['height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('deskarea3x')['height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (99 + xh) + 'px)'; // 160
QS('p13filetable')['height'] = 'calc(100vh - ' + (127 + xh + xh2) + 'px)'; // 124
QS('serverMainStats')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('xdevices')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p14iframe')['height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p14iframe')['max-height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p16events')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p16events')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p41events')['height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
QS('p41events')['max-height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
}
// Toggle the web page to full screen
function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust();
}
// If FullScreen, toggle menu to be horisontal or vertical
// If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) {
if (webPageFullScreen == true) {
if (toggle === 1) {
@ -1313,6 +1358,7 @@
toggleFullScreen(0);
toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
}
function toggleNightMode() {
@ -1324,8 +1370,6 @@
// Toggle the web page to full screen
function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) {
QC('body').remove('menu_stack');
QC('body').remove('fullscreen');
@ -1335,9 +1379,9 @@
//QV('page_leftbar', false);
} else {
QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16));
QV('page_leftbar', !(hide & 16));
QV('MainMenuSpan', !(hide & 16));
if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
}
@ -5489,8 +5533,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else {
QC('body').remove('fulldesk');
QS('deskarea3x')['height'] = null;
QS('deskarea3x')['max-height'] = null;
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
}
deskAdjust();
@ -9692,10 +9737,10 @@
QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); }
QV('MainSubMenuSpan', x >= 10 && x < 20);
QV('MainSubMenuSpan', (x >= 10) && (x < 20));
QV('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30);
QV('UserSubMenuSpan', x >= 30 && x < 40);
QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43);
var panels = { 10: 'MainDev', 11: 'MainDevDesktop', 12: 'MainDevTerminal', 13: 'MainDevFiles', 14: 'MainDevAmt', 15: 'MainDevConsole', 16: 'MainDevEvents', 17: 'MainDevInfo', 19: 'MainDevPlugins', 20: 'MeshGeneral', 21: 'MeshSummary', 30: 'UserGeneral', 31: 'UserEvents', 6: 'ServerGeneral', 40: 'ServerStats', 41: 'ServerTrace', 42: 'ServerPlugins', 115: 'ServerConsole' };
for (var i in panels) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -104,6 +104,7 @@
<div id="topbar" class="noselect">
<div>
<div style="position:relative">
<span id="logoutControlSpan2" style="color:white"></span>
<div tabindex="0" id="uiMenuButton" title="Výběr rozhraní uživatele" onclick="showUserInterfaceSelectMenu()" onkeypress="if (event.key == 'Enter') showUserInterfaceSelectMenu()">
<div id="uiMenu" style="display:none">
@ -183,12 +184,14 @@
<div id="p0message"><span id="p0span">Server odpojen</span>, <href onclick="reload()" style="cursor:pointer"><u>klikni pro opětovné připojení</u></href>.</div>
</div>
<div id="p1" style="display:none">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Buňky"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Seznam"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Desktopy"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Mapa" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>Moje zařízení</h1></div>
<div id="p1title">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Buňky"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Seznam"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Desktopy"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Mapa" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>Moje zařízení</h1></div>
</div>
<table id="devListToolbarSpan" class="noselect">
<tbody><tr>
<td class="h1"></td>
@ -269,7 +272,7 @@
<div id="xmap-info-window"></div>
</div>
<div id="p2" style="display:none">
<h1>Můj účet</h1>
<div id="p2title"><h1>Můj účet</h1></div>
<img id="p2AccountImage" alt="" src="images/clipboard-128.png">
<div id="p2AccountSecurity" style="display:none">
<p><strong>Nastavení bezpečnosti</strong></p>
@ -300,7 +303,7 @@
<br style="clear:both">
</div>
<div id="p3" style="display:none">
<h1>Moje události</h1>
<div id="p3title"><h1>Moje události</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -321,7 +324,7 @@
<div id="p3events" style=""></div>
</div>
<div id="p4" style="display:none">
<h1>Uživatelé</h1>
<div id="p4title"><h1>Uživatelé</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -342,7 +345,7 @@
<div id="p3users"></div>
</div>
<div id="p5" style="display:none">
<h1>Moje soubory</h1>
<div id="p5title"><h1>Moje soubory</h1></div>
<table id="p5toolbar" cellpadding="0" cellspacing="0">
<tbody><tr>
<td id="p5filehead" valign="bottom">
@ -395,8 +398,10 @@
</tbody></table>
</div>
<div id="p6" style="display:none">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>Můj server</h1>
<div id="p6title">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>Můj server</h1>
</div>
<div id="p2ServerActions">
<p><strong>Kce serveru</strong></p>
<div class="mL">
@ -770,17 +775,21 @@
<div id="p17info"></div>
</div>
<div id="p20" style="display:none">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Zpět" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Obecné - <span id="p20meshName"></span></h1>
<div id="p20title">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Zpět" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Obecné - <span id="p20meshName"></span></h1>
</div>
<p id="p20info"></p>
</div>
<div id="p21" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Zpět" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
<div id="p21title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Zpět" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
</div>
<div style="width:100%">
<div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -823,8 +832,10 @@
<div id="p30html3"></div>
</div>
<div id="p31" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Zpět" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Události - <span id="p31userName"></span></h1>
<div id="p31title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Zpět" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Události - <span id="p31userName"></span></h1>
</div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -846,7 +857,7 @@
<div id="p31events" style=""></div>
</div>
<div id="p40" style="display:none">
<h1>Statistika serveru</h1>
<div id="p40title"><h1>Statistika serveru</h1></div>
<div class="areaHead">
<div class="toright2">
<select id="p40type" onchange="updateServerTimelineStats()">
@ -870,7 +881,7 @@
<canvas id="serverMainStats" style=""></canvas>
</div>
<div id="p41" style="display:none">
<h1>Moje serverové trasování</h1>
<div id="p41title"><h1>Moje serverové trasování</h1></div>
<div class="areaHead">
<div class="toright2">
Zobrazit
@ -1116,12 +1127,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; }
}
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Vítejte {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Odhlásit" + '</a>'); }
QH('logoutControlSpan', logoutControl);
// Check if we are in debug mode
args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1136,58 +1141,20 @@
toggleFullScreen();
// Setup page visuals
if (args.hide) {
var hide = parseInt(args.hide);
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
//if (hide & 16) {
// QV('page_leftbar', false);
// QS('page_content').left = '0px';
//}
// Fix the main grid to zero-height elements we want to hide.
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
// Adjust height of remote desktop, files and Intel AMT
var xh = (((hide & 1) ? 0 : 66) + ((hide & 2) ? 0 : 24) + ((hide & 4) ? 0 : 45) + ((hide & 8) ? 0 : 60)); // 0 to 195
QS('p3users')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p3events')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (160 + xh) + 'px)';
QS('p13filetable')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('serverMainStats')['height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('xdevices')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
var hide = 0;
var globalHide = parseInt('{{{hide}}}');
if (globalHide || args.hide) {
if (args.hide) { hide = parseInt(args.hide); }
if (globalHide) { hide = (hide | globalHide); }
}
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Vítejte {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Odhlásit" + '</a>'); }
if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
// Setup the context menu
document.onclick = function (e) { hideContextMenu(); }
@ -1269,13 +1236,91 @@
d4ToggleSize(true);
}
function adjustPanels() {
var hide = args.hide;
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p1title', !(hide & 8));
QV('p2title', !(hide & 8));
QV('p3title', !(hide & 8));
QV('p4title', !(hide & 8));
QV('p5title', !(hide & 8));
QV('p6title', !(hide & 8));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
QV('p17title', !(hide & 8));
QV('p20title', !(hide & 8));
QV('p21title', !(hide & 8));
QV('p30title', !(hide & 8));
QV('p31title', !(hide & 8));
QV('p40title', !(hide & 8));
QV('p41title', !(hide & 8));
//if (hide & 16) { QV('page_leftbar', false); QS('page_content').left = '0px'; }
if (hide != 0) {
// Fix the main grid to zero-height elements we want to hide.
if (uiMode == 2) {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
} else {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
}
}
// Adjust height of remote desktop, files and Intel AMT
// 1 = Top bar, 2 = Tool Bar, 4 = Bottom Bar, 8 = Tab Title
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
var xh2 = (uiMode > 1)?24:0;
QS('p3users')['max-height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('p3events')['height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('deskarea3x')['height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (99 + xh) + 'px)'; // 160
QS('p13filetable')['height'] = 'calc(100vh - ' + (127 + xh + xh2) + 'px)'; // 124
QS('serverMainStats')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('xdevices')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p14iframe')['height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p14iframe')['max-height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p16events')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p16events')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p41events')['height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
QS('p41events')['max-height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
}
// Toggle the web page to full screen
function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust();
}
// If FullScreen, toggle menu to be horisontal or vertical
// If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) {
if (webPageFullScreen == true) {
if (toggle === 1) {
@ -1311,6 +1356,7 @@
toggleFullScreen(0);
toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
}
function toggleNightMode() {
@ -1322,8 +1368,6 @@
// Toggle the web page to full screen
function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) {
QC('body').remove('menu_stack');
QC('body').remove('fullscreen');
@ -1333,9 +1377,9 @@
//QV('page_leftbar', false);
} else {
QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16));
QV('page_leftbar', !(hide & 16));
QV('MainMenuSpan', !(hide & 16));
if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
}
@ -5487,8 +5531,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else {
QC('body').remove('fulldesk');
QS('deskarea3x')['height'] = null;
QS('deskarea3x')['max-height'] = null;
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
}
deskAdjust();
@ -9690,10 +9735,10 @@
QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); }
QV('MainSubMenuSpan', x >= 10 && x < 20);
QV('MainSubMenuSpan', (x >= 10) && (x < 20));
QV('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30);
QV('UserSubMenuSpan', x >= 30 && x < 40);
QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43);
var panels = { 10: 'MainDev', 11: 'MainDevDesktop', 12: 'MainDevTerminal', 13: 'MainDevFiles', 14: 'MainDevAmt', 15: 'MainDevConsole', 16: 'MainDevEvents', 17: 'MainDevInfo', 19: 'MainDevPlugins', 20: 'MeshGeneral', 21: 'MeshSummary', 30: 'UserGeneral', 31: 'UserEvents', 6: 'ServerGeneral', 40: 'ServerStats', 41: 'ServerTrace', 42: 'ServerPlugins', 115: 'ServerConsole' };
for (var i in panels) {

View File

@ -104,6 +104,7 @@
<div id="topbar" class="noselect">
<div>
<div style="position:relative">
<span id="logoutControlSpan2" style="color:white"></span>
<div tabindex="0" id="uiMenuButton" title="User interface selection" onclick="showUserInterfaceSelectMenu()" onkeypress="if (event.key == 'Enter') showUserInterfaceSelectMenu()">
<div id="uiMenu" style="display:none">
@ -183,12 +184,14 @@
<div id="p0message"><span id="p0span">Server disconnected</span>, <href onclick="reload()" style="cursor:pointer"><u>click to reconnect</u></href>.</div>
</div>
<div id="p1" style="display:none">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Columns"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Liste"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Desktops"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Carte" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>Mes Appareils</h1></div>
<div id="p1title">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Columns"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Liste"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Desktops"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Carte" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>Mes Appareils</h1></div>
</div>
<table id="devListToolbarSpan" class="noselect">
<tbody><tr>
<td class="h1"></td>
@ -269,7 +272,7 @@
<div id="xmap-info-window"></div>
</div>
<div id="p2" style="display:none">
<h1>Mon Compte</h1>
<div id="p2title"><h1>Mon Compte</h1></div>
<img id="p2AccountImage" alt="" src="images/clipboard-128.png">
<div id="p2AccountSecurity" style="display:none">
<p><strong>Account security</strong></p>
@ -300,7 +303,7 @@
<br style="clear:both">
</div>
<div id="p3" style="display:none">
<h1>Mes Événements</h1>
<div id="p3title"><h1>Mes Événements</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -321,7 +324,7 @@
<div id="p3events" style=""></div>
</div>
<div id="p4" style="display:none">
<h1>Mes Utilisateurs</h1>
<div id="p4title"><h1>Mes Utilisateurs</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -342,7 +345,7 @@
<div id="p3users"></div>
</div>
<div id="p5" style="display:none">
<h1>Mes Dossiers</h1>
<div id="p5title"><h1>Mes Dossiers</h1></div>
<table id="p5toolbar" cellpadding="0" cellspacing="0">
<tbody><tr>
<td id="p5filehead" valign="bottom">
@ -395,8 +398,10 @@
</tbody></table>
</div>
<div id="p6" style="display:none">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>Mon Serveur</h1>
<div id="p6title">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>Mon Serveur</h1>
</div>
<div id="p2ServerActions">
<p><strong>Server actions</strong></p>
<div class="mL">
@ -770,17 +775,21 @@
<div id="p17info"></div>
</div>
<div id="p20" style="display:none">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Retour" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Général - <span id="p20meshName"></span></h1>
<div id="p20title">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Retour" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Général - <span id="p20meshName"></span></h1>
</div>
<p id="p20info"></p>
</div>
<div id="p21" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Retour" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
<div id="p21title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Retour" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
</div>
<div style="width:100%">
<div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -823,8 +832,10 @@
<div id="p30html3"></div>
</div>
<div id="p31" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Retour" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Événements - <span id="p31userName"></span></h1>
<div id="p31title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Retour" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Événements - <span id="p31userName"></span></h1>
</div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -846,7 +857,7 @@
<div id="p31events" style=""></div>
</div>
<div id="p40" style="display:none">
<h1>Statistiques de mon serveur</h1>
<div id="p40title"><h1>Statistiques de mon serveur</h1></div>
<div class="areaHead">
<div class="toright2">
<select id="p40type" onchange="updateServerTimelineStats()">
@ -870,7 +881,7 @@
<canvas id="serverMainStats" style=""></canvas>
</div>
<div id="p41" style="display:none">
<h1>Suivi de mon serveur</h1>
<div id="p41title"><h1>Suivi de mon serveur</h1></div>
<div class="areaHead">
<div class="toright2">
Afficher
@ -1116,12 +1127,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; }
}
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Bienvenue {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Déconnexion" + '</a>'); }
QH('logoutControlSpan', logoutControl);
// Check if we are in debug mode
args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1136,58 +1141,20 @@
toggleFullScreen();
// Setup page visuals
if (args.hide) {
var hide = parseInt(args.hide);
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
//if (hide & 16) {
// QV('page_leftbar', false);
// QS('page_content').left = '0px';
//}
// Fix the main grid to zero-height elements we want to hide.
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
// Adjust height of remote desktop, files and Intel AMT
var xh = (((hide & 1) ? 0 : 66) + ((hide & 2) ? 0 : 24) + ((hide & 4) ? 0 : 45) + ((hide & 8) ? 0 : 60)); // 0 to 195
QS('p3users')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p3events')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (160 + xh) + 'px)';
QS('p13filetable')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('serverMainStats')['height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('xdevices')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
var hide = 0;
var globalHide = parseInt('{{{hide}}}');
if (globalHide || args.hide) {
if (args.hide) { hide = parseInt(args.hide); }
if (globalHide) { hide = (hide | globalHide); }
}
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Bienvenue {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Déconnexion" + '</a>'); }
if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
// Setup the context menu
document.onclick = function (e) { hideContextMenu(); }
@ -1269,13 +1236,91 @@
d4ToggleSize(true);
}
function adjustPanels() {
var hide = args.hide;
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p1title', !(hide & 8));
QV('p2title', !(hide & 8));
QV('p3title', !(hide & 8));
QV('p4title', !(hide & 8));
QV('p5title', !(hide & 8));
QV('p6title', !(hide & 8));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
QV('p17title', !(hide & 8));
QV('p20title', !(hide & 8));
QV('p21title', !(hide & 8));
QV('p30title', !(hide & 8));
QV('p31title', !(hide & 8));
QV('p40title', !(hide & 8));
QV('p41title', !(hide & 8));
//if (hide & 16) { QV('page_leftbar', false); QS('page_content').left = '0px'; }
if (hide != 0) {
// Fix the main grid to zero-height elements we want to hide.
if (uiMode == 2) {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
} else {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
}
}
// Adjust height of remote desktop, files and Intel AMT
// 1 = Top bar, 2 = Tool Bar, 4 = Bottom Bar, 8 = Tab Title
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
var xh2 = (uiMode > 1)?24:0;
QS('p3users')['max-height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('p3events')['height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('deskarea3x')['height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (99 + xh) + 'px)'; // 160
QS('p13filetable')['height'] = 'calc(100vh - ' + (127 + xh + xh2) + 'px)'; // 124
QS('serverMainStats')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('xdevices')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p14iframe')['height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p14iframe')['max-height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p16events')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p16events')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p41events')['height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
QS('p41events')['max-height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
}
// Toggle the web page to full screen
function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust();
}
// If FullScreen, toggle menu to be horisontal or vertical
// If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) {
if (webPageFullScreen == true) {
if (toggle === 1) {
@ -1311,6 +1356,7 @@
toggleFullScreen(0);
toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
}
function toggleNightMode() {
@ -1322,8 +1368,6 @@
// Toggle the web page to full screen
function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) {
QC('body').remove('menu_stack');
QC('body').remove('fullscreen');
@ -1333,9 +1377,9 @@
//QV('page_leftbar', false);
} else {
QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16));
QV('page_leftbar', !(hide & 16));
QV('MainMenuSpan', !(hide & 16));
if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
}
@ -5487,8 +5531,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else {
QC('body').remove('fulldesk');
QS('deskarea3x')['height'] = null;
QS('deskarea3x')['max-height'] = null;
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
}
deskAdjust();
@ -9690,10 +9735,10 @@
QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); }
QV('MainSubMenuSpan', x >= 10 && x < 20);
QV('MainSubMenuSpan', (x >= 10) && (x < 20));
QV('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30);
QV('UserSubMenuSpan', x >= 30 && x < 40);
QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43);
var panels = { 10: 'MainDev', 11: 'MainDevDesktop', 12: 'MainDevTerminal', 13: 'MainDevFiles', 14: 'MainDevAmt', 15: 'MainDevConsole', 16: 'MainDevEvents', 17: 'MainDevInfo', 19: 'MainDevPlugins', 20: 'MeshGeneral', 21: 'MeshSummary', 30: 'UserGeneral', 31: 'UserEvents', 6: 'ServerGeneral', 40: 'ServerStats', 41: 'ServerTrace', 42: 'ServerPlugins', 115: 'ServerConsole' };
for (var i in panels) {

View File

@ -104,6 +104,7 @@
<div id="topbar" class="noselect">
<div>
<div style="position:relative">
<span id="logoutControlSpan2" style="color:white"></span>
<div tabindex="0" id="uiMenuButton" title="ユーザーインターフェイスの選択" onclick="showUserInterfaceSelectMenu()" onkeypress="if (event.key == 'Enter') showUserInterfaceSelectMenu()">
<div id="uiMenu" style="display:none">
@ -183,12 +184,14 @@
<div id="p0message"><span id="p0span">サーバーが切断されました</span>、 <href onclick="reload()" style="cursor:pointer"><u>クリックして再接続</u></href>。</div>
</div>
<div id="p1" style="display:none">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="列"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="リスト"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="デスクトップ"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="地図" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>私のデバイス</h1></div>
<div id="p1title">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="列"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="リスト"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="デスクトップ"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="地図" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>私のデバイス</h1></div>
</div>
<table id="devListToolbarSpan" class="noselect">
<tbody><tr>
<td class="h1"></td>
@ -269,7 +272,7 @@
<div id="xmap-info-window"></div>
</div>
<div id="p2" style="display:none">
<h1>マイアカウント</h1>
<div id="p2title"><h1>マイアカウント</h1></div>
<img id="p2AccountImage" alt="" src="images/clipboard-128.png">
<div id="p2AccountSecurity" style="display:none">
<p><strong>アカウントのセキュリティ</strong></p>
@ -300,7 +303,7 @@
<br style="clear:both">
</div>
<div id="p3" style="display:none">
<h1>私のイベント</h1>
<div id="p3title"><h1>私のイベント</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -321,7 +324,7 @@
<div id="p3events" style=""></div>
</div>
<div id="p4" style="display:none">
<h1>私のユーザー</h1>
<div id="p4title"><h1>私のユーザー</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -342,7 +345,7 @@
<div id="p3users"></div>
</div>
<div id="p5" style="display:none">
<h1>私のファイル</h1>
<div id="p5title"><h1>私のファイル</h1></div>
<table id="p5toolbar" cellpadding="0" cellspacing="0">
<tbody><tr>
<td id="p5filehead" valign="bottom">
@ -395,8 +398,10 @@
</tbody></table>
</div>
<div id="p6" style="display:none">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>私のサーバー</h1>
<div id="p6title">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>私のサーバー</h1>
</div>
<div id="p2ServerActions">
<p><strong>サーバーアクション</strong></p>
<div class="mL">
@ -770,17 +775,21 @@
<div id="p17info"></div>
</div>
<div id="p20" style="display:none">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="バック" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>全般- <span id="p20meshName"></span></h1>
<div id="p20title">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="バック" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>全般- <span id="p20meshName"></span></h1>
</div>
<p id="p20info"></p>
</div>
<div id="p21" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="バック" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
<div id="p21title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="バック" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
</div>
<div style="width:100%">
<div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -823,8 +832,10 @@
<div id="p30html3"></div>
</div>
<div id="p31" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="バック" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>イベント- <span id="p31userName"></span></h1>
<div id="p31title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="バック" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>イベント- <span id="p31userName"></span></h1>
</div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -846,7 +857,7 @@
<div id="p31events" style=""></div>
</div>
<div id="p40" style="display:none">
<h1>私のサーバー統計</h1>
<div id="p40title"><h1>私のサーバー統計</h1></div>
<div class="areaHead">
<div class="toright2">
<select id="p40type" onchange="updateServerTimelineStats()">
@ -870,7 +881,7 @@
<canvas id="serverMainStats" style=""></canvas>
</div>
<div id="p41" style="display:none">
<h1>私のサーバートレース</h1>
<div id="p41title"><h1>私のサーバートレース</h1></div>
<div class="areaHead">
<div class="toright2">
ショー
@ -1116,12 +1127,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; }
}
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("{0}へようこそ。", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "ログアウト" + '</a>'); }
QH('logoutControlSpan', logoutControl);
// Check if we are in debug mode
args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1136,58 +1141,20 @@
toggleFullScreen();
// Setup page visuals
if (args.hide) {
var hide = parseInt(args.hide);
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
//if (hide & 16) {
// QV('page_leftbar', false);
// QS('page_content').left = '0px';
//}
// Fix the main grid to zero-height elements we want to hide.
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
// Adjust height of remote desktop, files and Intel AMT
var xh = (((hide & 1) ? 0 : 66) + ((hide & 2) ? 0 : 24) + ((hide & 4) ? 0 : 45) + ((hide & 8) ? 0 : 60)); // 0 to 195
QS('p3users')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p3events')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (160 + xh) + 'px)';
QS('p13filetable')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('serverMainStats')['height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('xdevices')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
var hide = 0;
var globalHide = parseInt('{{{hide}}}');
if (globalHide || args.hide) {
if (args.hide) { hide = parseInt(args.hide); }
if (globalHide) { hide = (hide | globalHide); }
}
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("{0}へようこそ。", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "ログアウト" + '</a>'); }
if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
// Setup the context menu
document.onclick = function (e) { hideContextMenu(); }
@ -1269,13 +1236,91 @@
d4ToggleSize(true);
}
function adjustPanels() {
var hide = args.hide;
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p1title', !(hide & 8));
QV('p2title', !(hide & 8));
QV('p3title', !(hide & 8));
QV('p4title', !(hide & 8));
QV('p5title', !(hide & 8));
QV('p6title', !(hide & 8));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
QV('p17title', !(hide & 8));
QV('p20title', !(hide & 8));
QV('p21title', !(hide & 8));
QV('p30title', !(hide & 8));
QV('p31title', !(hide & 8));
QV('p40title', !(hide & 8));
QV('p41title', !(hide & 8));
//if (hide & 16) { QV('page_leftbar', false); QS('page_content').left = '0px'; }
if (hide != 0) {
// Fix the main grid to zero-height elements we want to hide.
if (uiMode == 2) {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
} else {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
}
}
// Adjust height of remote desktop, files and Intel AMT
// 1 = Top bar, 2 = Tool Bar, 4 = Bottom Bar, 8 = Tab Title
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
var xh2 = (uiMode > 1)?24:0;
QS('p3users')['max-height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('p3events')['height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('deskarea3x')['height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (99 + xh) + 'px)'; // 160
QS('p13filetable')['height'] = 'calc(100vh - ' + (127 + xh + xh2) + 'px)'; // 124
QS('serverMainStats')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('xdevices')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p14iframe')['height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p14iframe')['max-height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p16events')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p16events')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p41events')['height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
QS('p41events')['max-height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
}
// Toggle the web page to full screen
function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust();
}
// If FullScreen, toggle menu to be horisontal or vertical
// If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) {
if (webPageFullScreen == true) {
if (toggle === 1) {
@ -1311,6 +1356,7 @@
toggleFullScreen(0);
toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
}
function toggleNightMode() {
@ -1322,8 +1368,6 @@
// Toggle the web page to full screen
function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) {
QC('body').remove('menu_stack');
QC('body').remove('fullscreen');
@ -1333,9 +1377,9 @@
//QV('page_leftbar', false);
} else {
QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16));
QV('page_leftbar', !(hide & 16));
QV('MainMenuSpan', !(hide & 16));
if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
}
@ -5487,8 +5531,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else {
QC('body').remove('fulldesk');
QS('deskarea3x')['height'] = null;
QS('deskarea3x')['max-height'] = null;
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
}
deskAdjust();
@ -9690,10 +9735,10 @@
QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); }
QV('MainSubMenuSpan', x >= 10 && x < 20);
QV('MainSubMenuSpan', (x >= 10) && (x < 20));
QV('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30);
QV('UserSubMenuSpan', x >= 30 && x < 40);
QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43);
var panels = { 10: 'MainDev', 11: 'MainDevDesktop', 12: 'MainDevTerminal', 13: 'MainDevFiles', 14: 'MainDevAmt', 15: 'MainDevConsole', 16: 'MainDevEvents', 17: 'MainDevInfo', 19: 'MainDevPlugins', 20: 'MeshGeneral', 21: 'MeshSummary', 30: 'UserGeneral', 31: 'UserEvents', 6: 'ServerGeneral', 40: 'ServerStats', 41: 'ServerTrace', 42: 'ServerPlugins', 115: 'ServerConsole' };
for (var i in panels) {

View File

@ -104,6 +104,7 @@
<div id="topbar" class="noselect">
<div>
<div style="position:relative">
<span id="logoutControlSpan2" style="color:white"></span>
<div tabindex="0" id="uiMenuButton" title="Selectie gebruikersinterface" onclick="showUserInterfaceSelectMenu()" onkeypress="if (event.key == 'Enter') showUserInterfaceSelectMenu()">
<div id="uiMenu" style="display:none">
@ -183,12 +184,14 @@
<div id="p0message"><span id="p0span">Server verbroken</span>, <href onclick="reload()" style="cursor:pointer"><u>klik om opnieuw verbinding te maken</u></href>.</div>
</div>
<div id="p1" style="display:none">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="kolommen"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Lijst"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Bureaubladen"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Kaart" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>Mijn apparaten</h1></div>
<div id="p1title">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="kolommen"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Lijst"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Bureaubladen"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Kaart" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>Mijn apparaten</h1></div>
</div>
<table id="devListToolbarSpan" class="noselect">
<tbody><tr>
<td class="h1"></td>
@ -269,7 +272,7 @@
<div id="xmap-info-window"></div>
</div>
<div id="p2" style="display:none">
<h1>Mijn Account</h1>
<div id="p2title"><h1>Mijn Account</h1></div>
<img id="p2AccountImage" alt="" src="images/clipboard-128.png">
<div id="p2AccountSecurity" style="display:none">
<p><strong>Gebruikersaccount beveiliging</strong></p>
@ -300,7 +303,7 @@
<br style="clear:both">
</div>
<div id="p3" style="display:none">
<h1>Mijn gebeurtenissen</h1>
<div id="p3title"><h1>Mijn gebeurtenissen</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -321,7 +324,7 @@
<div id="p3events" style=""></div>
</div>
<div id="p4" style="display:none">
<h1>Mijn gebruikers</h1>
<div id="p4title"><h1>Mijn gebruikers</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -342,7 +345,7 @@
<div id="p3users"></div>
</div>
<div id="p5" style="display:none">
<h1>Mijn bestanden</h1>
<div id="p5title"><h1>Mijn bestanden</h1></div>
<table id="p5toolbar" cellpadding="0" cellspacing="0">
<tbody><tr>
<td id="p5filehead" valign="bottom">
@ -395,8 +398,10 @@
</tbody></table>
</div>
<div id="p6" style="display:none">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>Mijn server</h1>
<div id="p6title">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>Mijn server</h1>
</div>
<div id="p2ServerActions">
<p><strong>Server acties</strong></p>
<div class="mL">
@ -770,17 +775,21 @@
<div id="p17info"></div>
</div>
<div id="p20" style="display:none">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Terug" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Algemeen - <span id="p20meshName"></span></h1>
<div id="p20title">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Terug" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Algemeen - <span id="p20meshName"></span></h1>
</div>
<p id="p20info"></p>
</div>
<div id="p21" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Terug" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
<div id="p21title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Terug" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
</div>
<div style="width:100%">
<div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -823,8 +832,10 @@
<div id="p30html3"></div>
</div>
<div id="p31" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Terug" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Gebeurtenissen - <span id="p31userName"></span></h1>
<div id="p31title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Terug" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Gebeurtenissen - <span id="p31userName"></span></h1>
</div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -846,7 +857,7 @@
<div id="p31events" style=""></div>
</div>
<div id="p40" style="display:none">
<h1>Mijn serverstatistieken</h1>
<div id="p40title"><h1>Mijn serverstatistieken</h1></div>
<div class="areaHead">
<div class="toright2">
<select id="p40type" onchange="updateServerTimelineStats()">
@ -870,7 +881,7 @@
<canvas id="serverMainStats" style=""></canvas>
</div>
<div id="p41" style="display:none">
<h1>Mijn server traceren</h1>
<div id="p41title"><h1>Mijn server traceren</h1></div>
<div class="areaHead">
<div class="toright2">
Tonen
@ -1116,12 +1127,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; }
}
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Welkom {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Uitloggen" + '</a>'); }
QH('logoutControlSpan', logoutControl);
// Check if we are in debug mode
args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1136,58 +1141,20 @@
toggleFullScreen();
// Setup page visuals
if (args.hide) {
var hide = parseInt(args.hide);
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
//if (hide & 16) {
// QV('page_leftbar', false);
// QS('page_content').left = '0px';
//}
// Fix the main grid to zero-height elements we want to hide.
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
// Adjust height of remote desktop, files and Intel AMT
var xh = (((hide & 1) ? 0 : 66) + ((hide & 2) ? 0 : 24) + ((hide & 4) ? 0 : 45) + ((hide & 8) ? 0 : 60)); // 0 to 195
QS('p3users')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p3events')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (160 + xh) + 'px)';
QS('p13filetable')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('serverMainStats')['height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('xdevices')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
var hide = 0;
var globalHide = parseInt('{{{hide}}}');
if (globalHide || args.hide) {
if (args.hide) { hide = parseInt(args.hide); }
if (globalHide) { hide = (hide | globalHide); }
}
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Welkom {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Uitloggen" + '</a>'); }
if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
// Setup the context menu
document.onclick = function (e) { hideContextMenu(); }
@ -1269,13 +1236,91 @@
d4ToggleSize(true);
}
function adjustPanels() {
var hide = args.hide;
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p1title', !(hide & 8));
QV('p2title', !(hide & 8));
QV('p3title', !(hide & 8));
QV('p4title', !(hide & 8));
QV('p5title', !(hide & 8));
QV('p6title', !(hide & 8));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
QV('p17title', !(hide & 8));
QV('p20title', !(hide & 8));
QV('p21title', !(hide & 8));
QV('p30title', !(hide & 8));
QV('p31title', !(hide & 8));
QV('p40title', !(hide & 8));
QV('p41title', !(hide & 8));
//if (hide & 16) { QV('page_leftbar', false); QS('page_content').left = '0px'; }
if (hide != 0) {
// Fix the main grid to zero-height elements we want to hide.
if (uiMode == 2) {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
} else {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
}
}
// Adjust height of remote desktop, files and Intel AMT
// 1 = Top bar, 2 = Tool Bar, 4 = Bottom Bar, 8 = Tab Title
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
var xh2 = (uiMode > 1)?24:0;
QS('p3users')['max-height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('p3events')['height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('deskarea3x')['height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (99 + xh) + 'px)'; // 160
QS('p13filetable')['height'] = 'calc(100vh - ' + (127 + xh + xh2) + 'px)'; // 124
QS('serverMainStats')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('xdevices')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p14iframe')['height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p14iframe')['max-height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p16events')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p16events')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p41events')['height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
QS('p41events')['max-height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
}
// Toggle the web page to full screen
function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust();
}
// If FullScreen, toggle menu to be horisontal or vertical
// If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) {
if (webPageFullScreen == true) {
if (toggle === 1) {
@ -1311,6 +1356,7 @@
toggleFullScreen(0);
toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
}
function toggleNightMode() {
@ -1322,8 +1368,6 @@
// Toggle the web page to full screen
function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) {
QC('body').remove('menu_stack');
QC('body').remove('fullscreen');
@ -1333,9 +1377,9 @@
//QV('page_leftbar', false);
} else {
QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16));
QV('page_leftbar', !(hide & 16));
QV('MainMenuSpan', !(hide & 16));
if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
}
@ -5487,8 +5531,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else {
QC('body').remove('fulldesk');
QS('deskarea3x')['height'] = null;
QS('deskarea3x')['max-height'] = null;
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
}
deskAdjust();
@ -9690,10 +9735,10 @@
QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); }
QV('MainSubMenuSpan', x >= 10 && x < 20);
QV('MainSubMenuSpan', (x >= 10) && (x < 20));
QV('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30);
QV('UserSubMenuSpan', x >= 30 && x < 40);
QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43);
var panels = { 10: 'MainDev', 11: 'MainDevDesktop', 12: 'MainDevTerminal', 13: 'MainDevFiles', 14: 'MainDevAmt', 15: 'MainDevConsole', 16: 'MainDevEvents', 17: 'MainDevInfo', 19: 'MainDevPlugins', 20: 'MeshGeneral', 21: 'MeshSummary', 30: 'UserGeneral', 31: 'UserEvents', 6: 'ServerGeneral', 40: 'ServerStats', 41: 'ServerTrace', 42: 'ServerPlugins', 115: 'ServerConsole' };
for (var i in panels) {

View File

@ -104,6 +104,7 @@
<div id="topbar" class="noselect">
<div>
<div style="position:relative">
<span id="logoutControlSpan2" style="color:white"></span>
<div tabindex="0" id="uiMenuButton" title="Seleção da interface do usuário" onclick="showUserInterfaceSelectMenu()" onkeypress="if (event.key == 'Enter') showUserInterfaceSelectMenu()">
<div id="uiMenu" style="display:none">
@ -183,12 +184,14 @@
<div id="p0message"><span id="p0span">Servidor desconectado</span>, <href onclick="reload()" style="cursor:pointer"><u>clique para reconectar</u></href>.</div>
</div>
<div id="p1" style="display:none">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Colunas"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Lista"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Áreas de trabalho"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Mapa" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>Meus dispositivos</h1></div>
<div id="p1title">
<div style="display:none" id="devListToolbarViewIcons">
<div tabindex="0" id="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Colunas"><div class="viewSelector2"></div></div>
<div tabindex="0" id="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Lista"><div class="viewSelector1"></div></div>
<div tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Áreas de trabalho"><div class="viewSelector3"></div></div>
<div tabindex="0" id="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Mapa" style="display:none"><div class="viewSelector4"></div></div>
</div><div><h1>Meus dispositivos</h1></div>
</div>
<table id="devListToolbarSpan" class="noselect">
<tbody><tr>
<td class="h1"></td>
@ -269,7 +272,7 @@
<div id="xmap-info-window"></div>
</div>
<div id="p2" style="display:none">
<h1>Minha conta</h1>
<div id="p2title"><h1>Minha conta</h1></div>
<img id="p2AccountImage" alt="" src="images/clipboard-128.png">
<div id="p2AccountSecurity" style="display:none">
<p><strong>Segurança da conta</strong></p>
@ -300,7 +303,7 @@
<br style="clear:both">
</div>
<div id="p3" style="display:none">
<h1>Meus Eventos</h1>
<div id="p3title"><h1>Meus Eventos</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -321,7 +324,7 @@
<div id="p3events" style=""></div>
</div>
<div id="p4" style="display:none">
<h1>Meus usuários</h1>
<div id="p4title"><h1>Meus usuários</h1></div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -342,7 +345,7 @@
<div id="p3users"></div>
</div>
<div id="p5" style="display:none">
<h1>Meus arquivos</h1>
<div id="p5title"><h1>Meus arquivos</h1></div>
<table id="p5toolbar" cellpadding="0" cellspacing="0">
<tbody><tr>
<td id="p5filehead" valign="bottom">
@ -395,8 +398,10 @@
</tbody></table>
</div>
<div id="p6" style="display:none">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>Meu servidor</h1>
<div id="p6title">
<img id="MainMeshImage" src="serverpic.ashx">
<h1>Meu servidor</h1>
</div>
<div id="p2ServerActions">
<p><strong>Ações do servidor</strong></p>
<div class="mL">
@ -770,17 +775,21 @@
<div id="p17info"></div>
</div>
<div id="p20" style="display:none">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Voltar" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Geral - <span id="p20meshName"></span></h1>
<div id="p20title">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
<img alt="" width="200" height="200" src="images/mesh-256.png">
</picture>
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Voltar" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Geral - <span id="p20meshName"></span></h1>
</div>
<p id="p20info"></p>
</div>
<div id="p21" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Voltar" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
<div id="p21title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Voltar" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Summary - <span id="p21meshName"></span></h1>
</div>
<div style="width:100%">
<div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -823,8 +832,10 @@
<div id="p30html3"></div>
</div>
<div id="p31" style="display:none">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Voltar" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Eventos - <span id="p31userName"></span></h1>
<div id="p31title">
<div style="float:left"><div class="backButton" tabindex="0" onclick="goBack()" title="Voltar" onkeypress="if (event.key == 'Enter') goBack()"><div class="backButtonEx"></div></div></div>
<h1>Eventos - <span id="p31userName"></span></h1>
</div>
<table class="pTable">
<tbody><tr>
<td class="h1"></td>
@ -846,7 +857,7 @@
<div id="p31events" style=""></div>
</div>
<div id="p40" style="display:none">
<h1>Estatísticas do meu servidor</h1>
<div id="p40title"><h1>Estatísticas do meu servidor</h1></div>
<div class="areaHead">
<div class="toright2">
<select id="p40type" onchange="updateServerTimelineStats()">
@ -870,7 +881,7 @@
<canvas id="serverMainStats" style=""></canvas>
</div>
<div id="p41" style="display:none">
<h1>Rastreio do meu servidor</h1>
<div id="p41title"><h1>Rastreio do meu servidor</h1></div>
<div class="areaHead">
<div class="toright2">
Mostrar
@ -1116,12 +1127,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; }
}
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Welcome {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Sair" + '</a>'); }
QH('logoutControlSpan', logoutControl);
// Check if we are in debug mode
args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1136,58 +1141,20 @@
toggleFullScreen();
// Setup page visuals
if (args.hide) {
var hide = parseInt(args.hide);
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
//if (hide & 16) {
// QV('page_leftbar', false);
// QS('page_content').left = '0px';
//}
// Fix the main grid to zero-height elements we want to hide.
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
// Adjust height of remote desktop, files and Intel AMT
var xh = (((hide & 1) ? 0 : 66) + ((hide & 2) ? 0 : 24) + ((hide & 4) ? 0 : 45) + ((hide & 8) ? 0 : 60)); // 0 to 195
QS('p3users')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p3events')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (160 + xh) + 'px)';
QS('p13filetable')['height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('serverMainStats')['height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (110 + xh) + 'px)';
QS('xdevices')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (124 + xh) + 'px)';
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
var hide = 0;
var globalHide = parseInt('{{{hide}}}');
if (globalHide || args.hide) {
if (args.hide) { hide = parseInt(args.hide); }
if (globalHide) { hide = (hide | globalHide); }
}
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup logout control
var logoutControl = '';
if (logoutControls.name != null) { logoutControl = format("Welcome {0}.", logoutControls.name); }
if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Sair" + '</a>'); }
if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
// Setup the context menu
document.onclick = function (e) { hideContextMenu(); }
@ -1269,13 +1236,91 @@
d4ToggleSize(true);
}
function adjustPanels() {
var hide = args.hide;
QV('masthead', !(hide & 1));
QV('topbar', !(hide & 2));
QV('footer', !(hide & 4));
QV('p1title', !(hide & 8));
QV('p2title', !(hide & 8));
QV('p3title', !(hide & 8));
QV('p4title', !(hide & 8));
QV('p5title', !(hide & 8));
QV('p6title', !(hide & 8));
QV('p10title', !(hide & 8));
QV('p11title', !(hide & 8));
QV('p12title', !(hide & 8));
QV('p13title', !(hide & 8));
QV('p14title', !(hide & 8));
QV('p15title', !(hide & 8));
QV('p16title', !(hide & 8));
QV('p17title', !(hide & 8));
QV('p20title', !(hide & 8));
QV('p21title', !(hide & 8));
QV('p30title', !(hide & 8));
QV('p31title', !(hide & 8));
QV('p40title', !(hide & 8));
QV('p41title', !(hide & 8));
//if (hide & 16) { QV('page_leftbar', false); QS('page_content').left = '0px'; }
if (hide != 0) {
// Fix the main grid to zero-height elements we want to hide.
if (uiMode == 2) {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px fit-content(48px) auto ' + ((hide & 4) ? '0' : '45') + 'px';
} else {
QS('container')['grid-template-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
QS('container')['-ms-grid-rows'] = ((hide & 1) ? '0' : '66') + 'px ' + ((hide & 2) ? '0' : '24') + 'px auto ' + ((hide & 4) ? '0' : '45') + 'px';
}
}
// Adjust height of remote desktop, files and Intel AMT
// 1 = Top bar, 2 = Tool Bar, 4 = Bottom Bar, 8 = Tab Title
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
var xh2 = (uiMode > 1)?24:0;
QS('p3users')['max-height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('p3events')['height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
QS('deskarea3x')['height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (74 + xh + xh2) + 'px)';
QS('p5filetable')['height'] = 'calc(100vh - ' + (99 + xh) + 'px)'; // 160
QS('p13filetable')['height'] = 'calc(100vh - ' + (127 + xh + xh2) + 'px)'; // 124
QS('serverMainStats')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('serverMainStats')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)'; // 110
QS('xdevices')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('xdevicesmap')['max-height'] = 'calc(100vh - ' + (46 + xh) + 'px)'; // 124
QS('p15agentConsole')['height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsole')['max-height'] = 'calc(100vh - ' + (84 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p15agentConsoleText')['max-height'] = 'calc(100vh - ' + (81 + xh + xh2) + 'px)';
QS('p14iframe')['height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p14iframe')['max-height'] = 'calc(100vh - ' + (23 + xh + xh2) + 'px)';
QS('p43iframe')['height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p43iframe')['max-height'] = 'calc(100vh - ' + (84 + xh) + 'px)';
QS('p16events')['height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p16events')['max-height'] = 'calc(100vh - ' + (50 + xh + xh2) + 'px)';
QS('p41events')['height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
QS('p41events')['max-height'] = 'calc(100vh - ' + (48 + xh + xh2) + 'px)';
// We are looking at a single device, remove all the back buttons
if ('{{currentNode}}' != '') {
QV('p10BackButton', false);
QV('p11BackButton', false);
QV('p12BackButton', false);
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
}
// Toggle the web page to full screen
function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust();
}
// If FullScreen, toggle menu to be horisontal or vertical
// If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) {
if (webPageFullScreen == true) {
if (toggle === 1) {
@ -1311,6 +1356,7 @@
toggleFullScreen(0);
toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
}
function toggleNightMode() {
@ -1322,8 +1368,6 @@
// Toggle the web page to full screen
function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) {
QC('body').remove('menu_stack');
QC('body').remove('fullscreen');
@ -1333,9 +1377,9 @@
//QV('page_leftbar', false);
} else {
QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16));
QV('page_leftbar', !(hide & 16));
QV('MainMenuSpan', !(hide & 16));
if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
}
@ -5487,8 +5531,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else {
QC('body').remove('fulldesk');
QS('deskarea3x')['height'] = null;
QS('deskarea3x')['max-height'] = null;
var xh = (((args.hide & 1) ? 0 : 66) + ((args.hide & 2) ? 0 : 24) + ((args.hide & 4) ? 0 : 45) + ((args.hide & 8) ? 0 : 60)); // 0 to 195
QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
}
deskAdjust();
@ -9690,10 +9735,10 @@
QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); }
QV('MainSubMenuSpan', x >= 10 && x < 20);
QV('MainSubMenuSpan', (x >= 10) && (x < 20));
QV('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30);
QV('UserSubMenuSpan', x >= 30 && x < 40);
QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43);
var panels = { 10: 'MainDev', 11: 'MainDevDesktop', 12: 'MainDevTerminal', 13: 'MainDevFiles', 14: 'MainDevAmt', 15: 'MainDevConsole', 16: 'MainDevEvents', 17: 'MainDevInfo', 19: 'MainDevPlugins', 20: 'MeshGeneral', 21: 'MeshSummary', 30: 'UserGeneral', 31: 'UserEvents', 6: 'ServerGeneral', 40: 'ServerStats', 41: 'ServerTrace', 42: 'ServerPlugins', 115: 'ServerConsole' };
for (var i in panels) {

View File

@ -1642,8 +1642,8 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
// Handle a post request on the root
function handleRootPostRequest(req, res) {
const domain = checkUserIpAddress(req, res);
if (domain == null) { parent.debug('web', 'handleTermsRequest: Bad domain'); res.send('Not Found'); return; }
if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.send('Not Found'); return; } // Check 3FA URL key
if (domain == null) { parent.debug('web', 'handleTermsRequest: Bad domain'); res.end('Not Found'); return; }
if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.end('Not Found'); return; } // Check 3FA URL key
parent.debug('web', 'handleRootPostRequest, action: ' + req.body.action);
switch (req.body.action) {
@ -2026,9 +2026,16 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
try { res.sendFile(obj.path.join(obj.parent.datapath, domain.welcomepicture)); return; } catch (ex) { }
}
if (parent.webPublicOverridePath && obj.fs.existsSync(obj.path.join(obj.parent.webPublicOverridePath, 'images/mainwelcome.jpg'))) {
// Use the override logo picture
try { res.sendFile(obj.path.join(obj.parent.webPublicOverridePath, 'images/mainwelcome.jpg')); } catch (ex) { res.sendStatus(404); }
if (parent.webPublicOverridePath) {
obj.fs.exists(obj.path.join(obj.parent.webPublicOverridePath, 'images/mainwelcome.jpg'), function (exists) {
if (exists) {
// Use the override logo picture
try { res.sendFile(obj.path.join(obj.parent.webPublicOverridePath, 'images/mainwelcome.jpg')); } catch (ex) { res.sendStatus(404); }
} else {
// Use the default logo picture
try { res.sendFile(obj.path.join(obj.parent.webPublicPath, 'images/mainwelcome.jpg')); } catch (ex) { res.sendStatus(404); }
}
});
} else {
// Use the default logo picture
try { res.sendFile(obj.path.join(obj.parent.webPublicPath, 'images/mainwelcome.jpg')); } catch (ex) { res.sendStatus(404); }
@ -4017,6 +4024,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
}
xargs.extitle = encodeURIComponent(xargs.title);
xargs.domainurl = domain.url;
if (typeof domain.hide == 'number') { xargs.hide = domain.hide; }
return xargs;
}
@ -4124,7 +4132,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
if ((acceptLanguages[i] == 'en') || (acceptLanguages[i].startsWith('en-'))) { break; } // English requested, break out.
if (fileOptions[acceptLanguages[i]] != null) {
// Found a match. If the file no longer exists, default to English.
if (obj.fs.existsSync(fileOptions[acceptLanguages[i]] + '.handlebars')) { res.render(fileOptions[acceptLanguages[i]], args); } else { res.render(filename, args); }
obj.fs.exists(fileOptions[acceptLanguages[i]] + '.handlebars', function (exists) {
if (exists) { res.render(fileOptions[acceptLanguages[i]], args); } else { res.render(filename, args); }
});
return;
}
}