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.multiServer = null;
obj.maintenanceTimer = null; obj.maintenanceTimer = null;
obj.serverId = null; obj.serverId = null;
obj.currentVer = null;
obj.serverKey = Buffer.from(obj.crypto.randomBytes(48), 'binary'); obj.serverKey = Buffer.from(obj.crypto.randomBytes(48), 'binary');
obj.loginCookieEncryptionKey = null; obj.loginCookieEncryptionKey = null;
obj.invitationLinkEncryptionKey = null; obj.invitationLinkEncryptionKey = null;
@ -71,7 +70,11 @@ function CreateMeshCentralServer(config, args) {
obj.serverWarnings = []; // List of warnings that should be shown to administrators obj.serverWarnings = []; // List of warnings that should be shown to administrators
obj.cookieUseOnceTable = {}; // List of cookies that are already expired obj.cookieUseOnceTable = {}; // List of cookies that are already expired
obj.cookieUseOnceTableCleanCounter = 0; // Clean the cookieUseOnceTable each 20 additions 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 // 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\\'))) { 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. 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)) { 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'); console.log('Details at: https://www.meshcommander.com/meshcentral2\r\n');
if (obj.platform == 'win32') { if (obj.platform == 'win32') {
console.log('Run as a Windows Service'); console.log('Run as a Windows Service');
@ -263,7 +266,7 @@ function CreateMeshCentralServer(config, args) {
try { try {
var errlogpath = null; var errlogpath = null;
if (typeof obj.args.mesherrorlogpath == 'string') { errlogpath = obj.path.join(obj.args.mesherrorlogpath, 'mesherrors.txt'); } else { errlogpath = obj.getConfigFilePath('mesherrors.txt'); } 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.'); } } 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); */ } }); 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) { obj.getLatestServerVersion = function (callback) {
if (callback == null) return; if (callback == null) return;
try { 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 child_process = require('child_process');
var npmpath = ((typeof obj.args.npmpath == 'string') ? obj.args.npmpath : 'npm'); var npmpath = ((typeof obj.args.npmpath == 'string') ? obj.args.npmpath : 'npm');
var npmproxy = ((typeof obj.args.npmproxy == 'string') ? (' --proxy ' + obj.args.npmproxy) : ''); var npmproxy = ((typeof obj.args.npmproxy == 'string') ? (' --proxy ' + obj.args.npmproxy) : '');
@ -284,9 +287,9 @@ function CreateMeshCentralServer(config, args) {
xxprocess.on('close', function (code) { xxprocess.on('close', function (code) {
var latestVer = null; var latestVer = null;
if (code == 0) { try { latestVer = xxprocess.data.split(' ').join('').split('\r').join('').split('\n').join(''); } catch (e) { } } 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 // Initiate server self-update
@ -702,7 +705,7 @@ function CreateMeshCentralServer(config, args) {
// If we are targetting a specific version, update now. // If we are targetting a specific version, update now.
if ((obj.serverSelfWriteAllowed == true) && (typeof obj.args.selfupdate == 'string')) { if ((obj.serverSelfWriteAllowed == true) && (typeof obj.args.selfupdate == 'string')) {
obj.args.selfupdate = obj.args.selfupdate.toLowerCase(); 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 // Write the server state
@ -966,7 +969,7 @@ function CreateMeshCentralServer(config, args) {
// Write server version and run mode // Write server version and run mode
var productionMode = (process.env.NODE_ENV && (process.env.NODE_ENV == 'production')); var productionMode = (process.env.NODE_ENV && (process.env.NODE_ENV == 'production'));
var runmode = (obj.args.lanonly ? 2 : (obj.args.wanonly ? 1 : 0)); 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 // Check that no sub-domains have the same DNS as the parent
for (i in obj.config.domains) { for (i in obj.config.domains) {
@ -1167,7 +1170,7 @@ function CreateMeshCentralServer(config, args) {
// Perform maintenance operations (called every hour) // Perform maintenance operations (called every hour)
obj.maintenanceActions = function () { obj.maintenanceActions = function () {
// Check for self-update that targets a specific version // 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 // Check if we need to perform server self-update
if ((obj.args.selfupdate) && (obj.serverSelfWriteAllowed == true)) { 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.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 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 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. // 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. 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; break;
} }
case 'mpsstats': { case 'mpsstats': {
var stats = parent.parent.mpsserver.getStats(); if (parent.parent.mpsserver == null) {
for (var i in stats) { r = 'MPS not enabled.';
if (typeof stats[i] == 'object') { r += (i + ': ' + JSON.stringify(stats[i]) + '\r\n'); } else { r += (i + ': ' + stats[i] + '\r\n'); } } 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; break;
} }

View File

@ -221,6 +221,14 @@ body {
right: 6px; right: 6px;
} }
#logoutControlSpan2 {
cursor: pointer;
color: white;
position: absolute;
top: 5px;
right: 24px;
}
#uiMenu { #uiMenu {
position: absolute; position: absolute;
top: 17px; 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 id=topbar class=noselect>
<div> <div>
<div style="position:relative"> <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 tabindex=0 id=uiMenuButton title="User interface selection" onclick="showUserInterfaceSelectMenu()" onkeypress="if (event.key == 'Enter') showUserInterfaceSelectMenu()">
&diams; &diams;
<div id=uiMenu style="display:none"> <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 id=p0message><span id=p0span>Server disconnected</span>, <href onclick=reload() style=cursor:pointer><u>click to reconnect</u></href>.</div>
</div> </div>
<div id=p1 style="display:none"> <div id=p1 style="display:none">
<div style="display:none" id="devListToolbarViewIcons"> <div id="p1title">
<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 style="display:none" id="devListToolbarViewIcons">
<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=devViewButton1 class=viewSelector onclick=onDeviceViewChange(1) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Columns"><div class="viewSelector2"></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=devViewButton2 class=viewSelector onclick=onDeviceViewChange(2) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="List"><div class="viewSelector1"></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 tabindex=0 id=devViewButton3 class=viewSelector onclick=onDeviceViewChange(3) onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Desktops"><div class="viewSelector3"></div></div>
</div><div><h1>My Devices</h1></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"> <table id="devListToolbarSpan" class="noselect">
<tr> <tr>
<td class=h1></td> <td class=h1></td>
@ -271,7 +274,7 @@
<div id="xmap-info-window"></div> <div id="xmap-info-window"></div>
</div> </div>
<div id=p2 style="display:none"> <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" /> <img id="p2AccountImage" alt="" src="images/clipboard-128.png" />
<div id="p2AccountSecurity" style="display:none"> <div id="p2AccountSecurity" style="display:none">
<p><strong>Account security</strong></p> <p><strong>Account security</strong></p>
@ -302,7 +305,7 @@
<br style=clear:both /> <br style=clear:both />
</div> </div>
<div id=p3 style="display:none"> <div id=p3 style="display:none">
<h1>My Events</h1> <div id="p3title"><h1>My Events</h1></div>
<table class="pTable"> <table class="pTable">
<tr> <tr>
<td class="h1"></td> <td class="h1"></td>
@ -323,7 +326,7 @@
<div id=p3events style=""></div> <div id=p3events style=""></div>
</div> </div>
<div id=p4 style="display:none"> <div id=p4 style="display:none">
<h1>My Users</h1> <div id="p4title"><h1>My Users</h1></div>
<table class="pTable"> <table class="pTable">
<tr> <tr>
<td class="h1"></td> <td class="h1"></td>
@ -344,7 +347,7 @@
<div id="p3users"></div> <div id="p3users"></div>
</div> </div>
<div id=p5 style="display:none"> <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"> <table id="p5toolbar" cellpadding="0" cellspacing="0">
<tr> <tr>
<td id="p5filehead" valign=bottom> <td id="p5filehead" valign=bottom>
@ -397,8 +400,10 @@
</table> </table>
</div> </div>
<div id=p6 style="display:none"> <div id=p6 style="display:none">
<img id=MainMeshImage src="serverpic.ashx"> <div id="p6title">
<h1>My Server</h1> <img id=MainMeshImage src="serverpic.ashx">
<h1>My Server</h1>
</div>
<div id="p2ServerActions"> <div id="p2ServerActions">
<p><strong>Server actions</strong></p> <p><strong>Server actions</strong></p>
<div class="mL"> <div class="mL">
@ -772,17 +777,21 @@
<div id=p17info></div> <div id=p17info></div>
</div> </div>
<div id=p20 style="display:none"> <div id=p20 style="display:none">
<picture id=MainMeshImage style=border-width:0px;height:200px;width:200px;float:right> <div id="p20title">
<source type="image/webp" width=200 height=200 srcset="images/webp/mesh-256.webp" /> <picture id=MainMeshImage style=border-width:0px;height:200px;width:200px;float:right>
<img alt="" width=200 height=200 src=images/mesh-256.png /> <source type="image/webp" width=200 height=200 srcset="images/webp/mesh-256.webp" />
</picture> <img alt="" width=200 height=200 src=images/mesh-256.png />
<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> </picture>
<h1>General - <span id=p20meshName></span></h1> <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> <p id=p20info></p>
</div> </div>
<div id=p21 style="display:none"> <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> <div id="p21title">
<h1>Summary - <span id=p21meshName></span></h1> <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="width:100%">
<div style="display:table;width:93%"> <div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px"> <div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -825,8 +834,10 @@
<div id=p30html3></div> <div id=p30html3></div>
</div> </div>
<div id=p31 style="display:none"> <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> <div id="p31title">
<h1>Events - <span id=p31userName></span></h1> <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"> <table class="pTable">
<tr> <tr>
<td class="h1"></td> <td class="h1"></td>
@ -848,7 +859,7 @@
<div id=p31events style=""></div> <div id=p31events style=""></div>
</div> </div>
<div id=p40 style="display:none"> <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="areaHead">
<div class="toright2"> <div class="toright2">
<select id=p40type onchange=updateServerTimelineStats()> <select id=p40type onchange=updateServerTimelineStats()>
@ -872,7 +883,7 @@
<canvas id=serverMainStats style=""></canvas> <canvas id=serverMainStats style=""></canvas>
</div> </div>
<div id=p41 style="display:none"> <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="areaHead">
<div class="toright2"> <div class="toright2">
Show Show
@ -1118,12 +1129,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; } 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 // Check if we are in debug mode
args = parseUriArgs(); args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } } if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1138,58 +1143,20 @@
toggleFullScreen(); toggleFullScreen();
// Setup page visuals // Setup page visuals
if (args.hide) { var hide = 0;
var hide = parseInt(args.hide); var globalHide = parseInt('{{{hide}}}');
QV('masthead', !(hide & 1)); if (globalHide || args.hide) {
QV('topbar', !(hide & 2)); if (args.hide) { hide = parseInt(args.hide); }
QV('footer', !(hide & 4)); if (globalHide) { hide = (hide | globalHide); }
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)';
} }
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons // Setup logout control
if ('{{currentNode}}' != '') { var logoutControl = '';
QV('p10BackButton', false); if (logoutControls.name != null) { logoutControl = format("Welcome {0}.", logoutControls.name); }
QV('p11BackButton', false); if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Logout" + '</a>'); }
QV('p12BackButton', false); if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup the context menu // Setup the context menu
document.onclick = function (e) { hideContextMenu(); } document.onclick = function (e) { hideContextMenu(); }
@ -1271,13 +1238,91 @@
d4ToggleSize(true); 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 // Toggle the web page to full screen
function toggleAspectRatio(toggle) { function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); } if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust(); deskAdjust();
} }
// If FullScreen, toggle menu to be horisontal or vertical // If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) { function toggleStackMenu(toggle) {
if (webPageFullScreen == true) { if (webPageFullScreen == true) {
if (toggle === 1) { if (toggle === 1) {
@ -1313,6 +1358,7 @@
toggleFullScreen(0); toggleFullScreen(0);
toggleStackMenu(0); toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); } if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
} }
function toggleNightMode() { function toggleNightMode() {
@ -1324,8 +1370,6 @@
// Toggle the web page to full screen // Toggle the web page to full screen
function toggleFullScreen(toggle) { function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); } if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) { if (webPageFullScreen == false) {
QC('body').remove('menu_stack'); QC('body').remove('menu_stack');
QC('body').remove('fullscreen'); QC('body').remove('fullscreen');
@ -1335,9 +1379,9 @@
//QV('page_leftbar', false); //QV('page_leftbar', false);
} else { } else {
QC('body').add('fullscreen'); QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16)); if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(hide & 16)); QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(hide & 16)); QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu'); if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen); QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
} }
@ -5489,8 +5533,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; } if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else { } else {
QC('body').remove('fulldesk'); QC('body').remove('fulldesk');
QS('deskarea3x')['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')['max-height'] = null; QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; } if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
} }
deskAdjust(); deskAdjust();
@ -9692,10 +9737,10 @@
QV('topbar', x != 0); QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); } 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('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30); QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', x >= 30 && x < 40); QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43); 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' }; 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) { 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 id="topbar" class="noselect">
<div> <div>
<div style="position:relative"> <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 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"> <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 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>
<div id="p1" style="display:none"> <div id="p1" style="display:none">
<div style="display:none" id="devListToolbarViewIcons"> <div id="p1title">
<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 style="display:none" id="devListToolbarViewIcons">
<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="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="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Desktopy"><div class="viewSelector3"></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="devViewButton4" class="viewSelector" onclick="onDeviceViewChange(4)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(4); }" title="Mapa" style="display:none"><div class="viewSelector4"></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><div><h1>Moje zařízení</h1></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"> <table id="devListToolbarSpan" class="noselect">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -269,7 +272,7 @@
<div id="xmap-info-window"></div> <div id="xmap-info-window"></div>
</div> </div>
<div id="p2" style="display:none"> <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"> <img id="p2AccountImage" alt="" src="images/clipboard-128.png">
<div id="p2AccountSecurity" style="display:none"> <div id="p2AccountSecurity" style="display:none">
<p><strong>Nastavení bezpečnosti</strong></p> <p><strong>Nastavení bezpečnosti</strong></p>
@ -300,7 +303,7 @@
<br style="clear:both"> <br style="clear:both">
</div> </div>
<div id="p3" style="display:none"> <div id="p3" style="display:none">
<h1>Moje události</h1> <div id="p3title"><h1>Moje události</h1></div>
<table class="pTable"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -321,7 +324,7 @@
<div id="p3events" style=""></div> <div id="p3events" style=""></div>
</div> </div>
<div id="p4" style="display:none"> <div id="p4" style="display:none">
<h1>Uživatelé</h1> <div id="p4title"><h1>Uživatelé</h1></div>
<table class="pTable"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -342,7 +345,7 @@
<div id="p3users"></div> <div id="p3users"></div>
</div> </div>
<div id="p5" style="display:none"> <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"> <table id="p5toolbar" cellpadding="0" cellspacing="0">
<tbody><tr> <tbody><tr>
<td id="p5filehead" valign="bottom"> <td id="p5filehead" valign="bottom">
@ -395,8 +398,10 @@
</tbody></table> </tbody></table>
</div> </div>
<div id="p6" style="display:none"> <div id="p6" style="display:none">
<img id="MainMeshImage" src="serverpic.ashx"> <div id="p6title">
<h1>Můj server</h1> <img id="MainMeshImage" src="serverpic.ashx">
<h1>Můj server</h1>
</div>
<div id="p2ServerActions"> <div id="p2ServerActions">
<p><strong>Kce serveru</strong></p> <p><strong>Kce serveru</strong></p>
<div class="mL"> <div class="mL">
@ -770,17 +775,21 @@
<div id="p17info"></div> <div id="p17info"></div>
</div> </div>
<div id="p20" style="display:none"> <div id="p20" style="display:none">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right"> <div id="p20title">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp"> <picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<img alt="" width="200" height="200" src="images/mesh-256.png"> <source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
</picture> <img alt="" width="200" height="200" src="images/mesh-256.png">
<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> </picture>
<h1>Obecné - <span id="p20meshName"></span></h1> <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> <p id="p20info"></p>
</div> </div>
<div id="p21" style="display:none"> <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> <div id="p21title">
<h1>Summary - <span id="p21meshName"></span></h1> <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="width:100%">
<div style="display:table;width:93%"> <div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px"> <div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -823,8 +832,10 @@
<div id="p30html3"></div> <div id="p30html3"></div>
</div> </div>
<div id="p31" style="display:none"> <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> <div id="p31title">
<h1>Události - <span id="p31userName"></span></h1> <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"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -846,7 +857,7 @@
<div id="p31events" style=""></div> <div id="p31events" style=""></div>
</div> </div>
<div id="p40" style="display:none"> <div id="p40" style="display:none">
<h1>Statistika serveru</h1> <div id="p40title"><h1>Statistika serveru</h1></div>
<div class="areaHead"> <div class="areaHead">
<div class="toright2"> <div class="toright2">
<select id="p40type" onchange="updateServerTimelineStats()"> <select id="p40type" onchange="updateServerTimelineStats()">
@ -870,7 +881,7 @@
<canvas id="serverMainStats" style=""></canvas> <canvas id="serverMainStats" style=""></canvas>
</div> </div>
<div id="p41" style="display:none"> <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="areaHead">
<div class="toright2"> <div class="toright2">
Zobrazit Zobrazit
@ -1116,12 +1127,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; } 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 // Check if we are in debug mode
args = parseUriArgs(); args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } } if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1136,58 +1141,20 @@
toggleFullScreen(); toggleFullScreen();
// Setup page visuals // Setup page visuals
if (args.hide) { var hide = 0;
var hide = parseInt(args.hide); var globalHide = parseInt('{{{hide}}}');
QV('masthead', !(hide & 1)); if (globalHide || args.hide) {
QV('topbar', !(hide & 2)); if (args.hide) { hide = parseInt(args.hide); }
QV('footer', !(hide & 4)); if (globalHide) { hide = (hide | globalHide); }
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)';
} }
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons // Setup logout control
if ('{{currentNode}}' != '') { var logoutControl = '';
QV('p10BackButton', false); if (logoutControls.name != null) { logoutControl = format("Vítejte {0}.", logoutControls.name); }
QV('p11BackButton', false); if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Odhlásit" + '</a>'); }
QV('p12BackButton', false); if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup the context menu // Setup the context menu
document.onclick = function (e) { hideContextMenu(); } document.onclick = function (e) { hideContextMenu(); }
@ -1269,13 +1236,91 @@
d4ToggleSize(true); 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 // Toggle the web page to full screen
function toggleAspectRatio(toggle) { function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); } if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust(); deskAdjust();
} }
// If FullScreen, toggle menu to be horisontal or vertical // If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) { function toggleStackMenu(toggle) {
if (webPageFullScreen == true) { if (webPageFullScreen == true) {
if (toggle === 1) { if (toggle === 1) {
@ -1311,6 +1356,7 @@
toggleFullScreen(0); toggleFullScreen(0);
toggleStackMenu(0); toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); } if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
} }
function toggleNightMode() { function toggleNightMode() {
@ -1322,8 +1368,6 @@
// Toggle the web page to full screen // Toggle the web page to full screen
function toggleFullScreen(toggle) { function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); } if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) { if (webPageFullScreen == false) {
QC('body').remove('menu_stack'); QC('body').remove('menu_stack');
QC('body').remove('fullscreen'); QC('body').remove('fullscreen');
@ -1333,9 +1377,9 @@
//QV('page_leftbar', false); //QV('page_leftbar', false);
} else { } else {
QC('body').add('fullscreen'); QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16)); if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(hide & 16)); QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(hide & 16)); QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu'); if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen); QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
} }
@ -5487,8 +5531,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; } if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else { } else {
QC('body').remove('fulldesk'); QC('body').remove('fulldesk');
QS('deskarea3x')['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')['max-height'] = null; QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; } if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
} }
deskAdjust(); deskAdjust();
@ -9690,10 +9735,10 @@
QV('topbar', x != 0); QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); } 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('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30); QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', x >= 30 && x < 40); QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43); 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' }; 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) { for (var i in panels) {

View File

@ -104,6 +104,7 @@
<div id="topbar" class="noselect"> <div id="topbar" class="noselect">
<div> <div>
<div style="position:relative"> <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 tabindex="0" id="uiMenuButton" title="User interface selection" onclick="showUserInterfaceSelectMenu()" onkeypress="if (event.key == 'Enter') showUserInterfaceSelectMenu()">
<div id="uiMenu" style="display:none"> <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 id="p0message"><span id="p0span">Server disconnected</span>, <href onclick="reload()" style="cursor:pointer"><u>click to reconnect</u></href>.</div>
</div> </div>
<div id="p1" style="display:none"> <div id="p1" style="display:none">
<div style="display:none" id="devListToolbarViewIcons"> <div id="p1title">
<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 style="display:none" id="devListToolbarViewIcons">
<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="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Columns"><div class="viewSelector2"></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="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Liste"><div class="viewSelector1"></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 tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Desktops"><div class="viewSelector3"></div></div>
</div><div><h1>Mes Appareils</h1></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"> <table id="devListToolbarSpan" class="noselect">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -269,7 +272,7 @@
<div id="xmap-info-window"></div> <div id="xmap-info-window"></div>
</div> </div>
<div id="p2" style="display:none"> <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"> <img id="p2AccountImage" alt="" src="images/clipboard-128.png">
<div id="p2AccountSecurity" style="display:none"> <div id="p2AccountSecurity" style="display:none">
<p><strong>Account security</strong></p> <p><strong>Account security</strong></p>
@ -300,7 +303,7 @@
<br style="clear:both"> <br style="clear:both">
</div> </div>
<div id="p3" style="display:none"> <div id="p3" style="display:none">
<h1>Mes Événements</h1> <div id="p3title"><h1>Mes Événements</h1></div>
<table class="pTable"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -321,7 +324,7 @@
<div id="p3events" style=""></div> <div id="p3events" style=""></div>
</div> </div>
<div id="p4" style="display:none"> <div id="p4" style="display:none">
<h1>Mes Utilisateurs</h1> <div id="p4title"><h1>Mes Utilisateurs</h1></div>
<table class="pTable"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -342,7 +345,7 @@
<div id="p3users"></div> <div id="p3users"></div>
</div> </div>
<div id="p5" style="display:none"> <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"> <table id="p5toolbar" cellpadding="0" cellspacing="0">
<tbody><tr> <tbody><tr>
<td id="p5filehead" valign="bottom"> <td id="p5filehead" valign="bottom">
@ -395,8 +398,10 @@
</tbody></table> </tbody></table>
</div> </div>
<div id="p6" style="display:none"> <div id="p6" style="display:none">
<img id="MainMeshImage" src="serverpic.ashx"> <div id="p6title">
<h1>Mon Serveur</h1> <img id="MainMeshImage" src="serverpic.ashx">
<h1>Mon Serveur</h1>
</div>
<div id="p2ServerActions"> <div id="p2ServerActions">
<p><strong>Server actions</strong></p> <p><strong>Server actions</strong></p>
<div class="mL"> <div class="mL">
@ -770,17 +775,21 @@
<div id="p17info"></div> <div id="p17info"></div>
</div> </div>
<div id="p20" style="display:none"> <div id="p20" style="display:none">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right"> <div id="p20title">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp"> <picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<img alt="" width="200" height="200" src="images/mesh-256.png"> <source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
</picture> <img alt="" width="200" height="200" src="images/mesh-256.png">
<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> </picture>
<h1>Général - <span id="p20meshName"></span></h1> <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> <p id="p20info"></p>
</div> </div>
<div id="p21" style="display:none"> <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> <div id="p21title">
<h1>Summary - <span id="p21meshName"></span></h1> <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="width:100%">
<div style="display:table;width:93%"> <div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px"> <div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -823,8 +832,10 @@
<div id="p30html3"></div> <div id="p30html3"></div>
</div> </div>
<div id="p31" style="display:none"> <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> <div id="p31title">
<h1>Événements - <span id="p31userName"></span></h1> <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"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -846,7 +857,7 @@
<div id="p31events" style=""></div> <div id="p31events" style=""></div>
</div> </div>
<div id="p40" style="display:none"> <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="areaHead">
<div class="toright2"> <div class="toright2">
<select id="p40type" onchange="updateServerTimelineStats()"> <select id="p40type" onchange="updateServerTimelineStats()">
@ -870,7 +881,7 @@
<canvas id="serverMainStats" style=""></canvas> <canvas id="serverMainStats" style=""></canvas>
</div> </div>
<div id="p41" style="display:none"> <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="areaHead">
<div class="toright2"> <div class="toright2">
Afficher Afficher
@ -1116,12 +1127,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; } 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 // Check if we are in debug mode
args = parseUriArgs(); args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } } if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1136,58 +1141,20 @@
toggleFullScreen(); toggleFullScreen();
// Setup page visuals // Setup page visuals
if (args.hide) { var hide = 0;
var hide = parseInt(args.hide); var globalHide = parseInt('{{{hide}}}');
QV('masthead', !(hide & 1)); if (globalHide || args.hide) {
QV('topbar', !(hide & 2)); if (args.hide) { hide = parseInt(args.hide); }
QV('footer', !(hide & 4)); if (globalHide) { hide = (hide | globalHide); }
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)';
} }
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons // Setup logout control
if ('{{currentNode}}' != '') { var logoutControl = '';
QV('p10BackButton', false); if (logoutControls.name != null) { logoutControl = format("Bienvenue {0}.", logoutControls.name); }
QV('p11BackButton', false); if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Déconnexion" + '</a>'); }
QV('p12BackButton', false); if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup the context menu // Setup the context menu
document.onclick = function (e) { hideContextMenu(); } document.onclick = function (e) { hideContextMenu(); }
@ -1269,13 +1236,91 @@
d4ToggleSize(true); 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 // Toggle the web page to full screen
function toggleAspectRatio(toggle) { function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); } if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust(); deskAdjust();
} }
// If FullScreen, toggle menu to be horisontal or vertical // If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) { function toggleStackMenu(toggle) {
if (webPageFullScreen == true) { if (webPageFullScreen == true) {
if (toggle === 1) { if (toggle === 1) {
@ -1311,6 +1356,7 @@
toggleFullScreen(0); toggleFullScreen(0);
toggleStackMenu(0); toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); } if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
} }
function toggleNightMode() { function toggleNightMode() {
@ -1322,8 +1368,6 @@
// Toggle the web page to full screen // Toggle the web page to full screen
function toggleFullScreen(toggle) { function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); } if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) { if (webPageFullScreen == false) {
QC('body').remove('menu_stack'); QC('body').remove('menu_stack');
QC('body').remove('fullscreen'); QC('body').remove('fullscreen');
@ -1333,9 +1377,9 @@
//QV('page_leftbar', false); //QV('page_leftbar', false);
} else { } else {
QC('body').add('fullscreen'); QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16)); if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(hide & 16)); QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(hide & 16)); QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu'); if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen); QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
} }
@ -5487,8 +5531,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; } if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else { } else {
QC('body').remove('fulldesk'); QC('body').remove('fulldesk');
QS('deskarea3x')['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')['max-height'] = null; QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; } if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
} }
deskAdjust(); deskAdjust();
@ -9690,10 +9735,10 @@
QV('topbar', x != 0); QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); } 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('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30); QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', x >= 30 && x < 40); QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43); 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' }; 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) { for (var i in panels) {

View File

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

View File

@ -104,6 +104,7 @@
<div id="topbar" class="noselect"> <div id="topbar" class="noselect">
<div> <div>
<div style="position:relative"> <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 tabindex="0" id="uiMenuButton" title="Selectie gebruikersinterface" onclick="showUserInterfaceSelectMenu()" onkeypress="if (event.key == 'Enter') showUserInterfaceSelectMenu()">
<div id="uiMenu" style="display:none"> <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 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>
<div id="p1" style="display:none"> <div id="p1" style="display:none">
<div style="display:none" id="devListToolbarViewIcons"> <div id="p1title">
<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 style="display:none" id="devListToolbarViewIcons">
<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="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="kolommen"><div class="viewSelector2"></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="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Lijst"><div class="viewSelector1"></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 tabindex="0" id="devViewButton3" class="viewSelector" onclick="onDeviceViewChange(3)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(3); }" title="Bureaubladen"><div class="viewSelector3"></div></div>
</div><div><h1>Mijn apparaten</h1></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"> <table id="devListToolbarSpan" class="noselect">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -269,7 +272,7 @@
<div id="xmap-info-window"></div> <div id="xmap-info-window"></div>
</div> </div>
<div id="p2" style="display:none"> <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"> <img id="p2AccountImage" alt="" src="images/clipboard-128.png">
<div id="p2AccountSecurity" style="display:none"> <div id="p2AccountSecurity" style="display:none">
<p><strong>Gebruikersaccount beveiliging</strong></p> <p><strong>Gebruikersaccount beveiliging</strong></p>
@ -300,7 +303,7 @@
<br style="clear:both"> <br style="clear:both">
</div> </div>
<div id="p3" style="display:none"> <div id="p3" style="display:none">
<h1>Mijn gebeurtenissen</h1> <div id="p3title"><h1>Mijn gebeurtenissen</h1></div>
<table class="pTable"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -321,7 +324,7 @@
<div id="p3events" style=""></div> <div id="p3events" style=""></div>
</div> </div>
<div id="p4" style="display:none"> <div id="p4" style="display:none">
<h1>Mijn gebruikers</h1> <div id="p4title"><h1>Mijn gebruikers</h1></div>
<table class="pTable"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -342,7 +345,7 @@
<div id="p3users"></div> <div id="p3users"></div>
</div> </div>
<div id="p5" style="display:none"> <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"> <table id="p5toolbar" cellpadding="0" cellspacing="0">
<tbody><tr> <tbody><tr>
<td id="p5filehead" valign="bottom"> <td id="p5filehead" valign="bottom">
@ -395,8 +398,10 @@
</tbody></table> </tbody></table>
</div> </div>
<div id="p6" style="display:none"> <div id="p6" style="display:none">
<img id="MainMeshImage" src="serverpic.ashx"> <div id="p6title">
<h1>Mijn server</h1> <img id="MainMeshImage" src="serverpic.ashx">
<h1>Mijn server</h1>
</div>
<div id="p2ServerActions"> <div id="p2ServerActions">
<p><strong>Server acties</strong></p> <p><strong>Server acties</strong></p>
<div class="mL"> <div class="mL">
@ -770,17 +775,21 @@
<div id="p17info"></div> <div id="p17info"></div>
</div> </div>
<div id="p20" style="display:none"> <div id="p20" style="display:none">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right"> <div id="p20title">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp"> <picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<img alt="" width="200" height="200" src="images/mesh-256.png"> <source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
</picture> <img alt="" width="200" height="200" src="images/mesh-256.png">
<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> </picture>
<h1>Algemeen - <span id="p20meshName"></span></h1> <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> <p id="p20info"></p>
</div> </div>
<div id="p21" style="display:none"> <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> <div id="p21title">
<h1>Summary - <span id="p21meshName"></span></h1> <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="width:100%">
<div style="display:table;width:93%"> <div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px"> <div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -823,8 +832,10 @@
<div id="p30html3"></div> <div id="p30html3"></div>
</div> </div>
<div id="p31" style="display:none"> <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> <div id="p31title">
<h1>Gebeurtenissen - <span id="p31userName"></span></h1> <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"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -846,7 +857,7 @@
<div id="p31events" style=""></div> <div id="p31events" style=""></div>
</div> </div>
<div id="p40" style="display:none"> <div id="p40" style="display:none">
<h1>Mijn serverstatistieken</h1> <div id="p40title"><h1>Mijn serverstatistieken</h1></div>
<div class="areaHead"> <div class="areaHead">
<div class="toright2"> <div class="toright2">
<select id="p40type" onchange="updateServerTimelineStats()"> <select id="p40type" onchange="updateServerTimelineStats()">
@ -870,7 +881,7 @@
<canvas id="serverMainStats" style=""></canvas> <canvas id="serverMainStats" style=""></canvas>
</div> </div>
<div id="p41" style="display:none"> <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="areaHead">
<div class="toright2"> <div class="toright2">
Tonen Tonen
@ -1116,12 +1127,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; } 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 // Check if we are in debug mode
args = parseUriArgs(); args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } } if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1136,58 +1141,20 @@
toggleFullScreen(); toggleFullScreen();
// Setup page visuals // Setup page visuals
if (args.hide) { var hide = 0;
var hide = parseInt(args.hide); var globalHide = parseInt('{{{hide}}}');
QV('masthead', !(hide & 1)); if (globalHide || args.hide) {
QV('topbar', !(hide & 2)); if (args.hide) { hide = parseInt(args.hide); }
QV('footer', !(hide & 4)); if (globalHide) { hide = (hide | globalHide); }
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)';
} }
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons // Setup logout control
if ('{{currentNode}}' != '') { var logoutControl = '';
QV('p10BackButton', false); if (logoutControls.name != null) { logoutControl = format("Welkom {0}.", logoutControls.name); }
QV('p11BackButton', false); if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Uitloggen" + '</a>'); }
QV('p12BackButton', false); if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup the context menu // Setup the context menu
document.onclick = function (e) { hideContextMenu(); } document.onclick = function (e) { hideContextMenu(); }
@ -1269,13 +1236,91 @@
d4ToggleSize(true); 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 // Toggle the web page to full screen
function toggleAspectRatio(toggle) { function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); } if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust(); deskAdjust();
} }
// If FullScreen, toggle menu to be horisontal or vertical // If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) { function toggleStackMenu(toggle) {
if (webPageFullScreen == true) { if (webPageFullScreen == true) {
if (toggle === 1) { if (toggle === 1) {
@ -1311,6 +1356,7 @@
toggleFullScreen(0); toggleFullScreen(0);
toggleStackMenu(0); toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); } if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
} }
function toggleNightMode() { function toggleNightMode() {
@ -1322,8 +1368,6 @@
// Toggle the web page to full screen // Toggle the web page to full screen
function toggleFullScreen(toggle) { function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); } if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) { if (webPageFullScreen == false) {
QC('body').remove('menu_stack'); QC('body').remove('menu_stack');
QC('body').remove('fullscreen'); QC('body').remove('fullscreen');
@ -1333,9 +1377,9 @@
//QV('page_leftbar', false); //QV('page_leftbar', false);
} else { } else {
QC('body').add('fullscreen'); QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16)); if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(hide & 16)); QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(hide & 16)); QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu'); if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen); QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
} }
@ -5487,8 +5531,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; } if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else { } else {
QC('body').remove('fulldesk'); QC('body').remove('fulldesk');
QS('deskarea3x')['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')['max-height'] = null; QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; } if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
} }
deskAdjust(); deskAdjust();
@ -9690,10 +9735,10 @@
QV('topbar', x != 0); QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); } 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('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30); QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', x >= 30 && x < 40); QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43); 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' }; 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) { for (var i in panels) {

View File

@ -104,6 +104,7 @@
<div id="topbar" class="noselect"> <div id="topbar" class="noselect">
<div> <div>
<div style="position:relative"> <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 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"> <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 id="p0message"><span id="p0span">Servidor desconectado</span>, <href onclick="reload()" style="cursor:pointer"><u>clique para reconectar</u></href>.</div>
</div> </div>
<div id="p1" style="display:none"> <div id="p1" style="display:none">
<div style="display:none" id="devListToolbarViewIcons"> <div id="p1title">
<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 style="display:none" id="devListToolbarViewIcons">
<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="devViewButton1" class="viewSelector" onclick="onDeviceViewChange(1)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(1); }" title="Colunas"><div class="viewSelector2"></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="devViewButton2" class="viewSelector" onclick="onDeviceViewChange(2)" onkeypress="if (event.key == 'Enter') { onDeviceViewChange(2); }" title="Lista"><div class="viewSelector1"></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 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><div><h1>Meus dispositivos</h1></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"> <table id="devListToolbarSpan" class="noselect">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -269,7 +272,7 @@
<div id="xmap-info-window"></div> <div id="xmap-info-window"></div>
</div> </div>
<div id="p2" style="display:none"> <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"> <img id="p2AccountImage" alt="" src="images/clipboard-128.png">
<div id="p2AccountSecurity" style="display:none"> <div id="p2AccountSecurity" style="display:none">
<p><strong>Segurança da conta</strong></p> <p><strong>Segurança da conta</strong></p>
@ -300,7 +303,7 @@
<br style="clear:both"> <br style="clear:both">
</div> </div>
<div id="p3" style="display:none"> <div id="p3" style="display:none">
<h1>Meus Eventos</h1> <div id="p3title"><h1>Meus Eventos</h1></div>
<table class="pTable"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -321,7 +324,7 @@
<div id="p3events" style=""></div> <div id="p3events" style=""></div>
</div> </div>
<div id="p4" style="display:none"> <div id="p4" style="display:none">
<h1>Meus usuários</h1> <div id="p4title"><h1>Meus usuários</h1></div>
<table class="pTable"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -342,7 +345,7 @@
<div id="p3users"></div> <div id="p3users"></div>
</div> </div>
<div id="p5" style="display:none"> <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"> <table id="p5toolbar" cellpadding="0" cellspacing="0">
<tbody><tr> <tbody><tr>
<td id="p5filehead" valign="bottom"> <td id="p5filehead" valign="bottom">
@ -395,8 +398,10 @@
</tbody></table> </tbody></table>
</div> </div>
<div id="p6" style="display:none"> <div id="p6" style="display:none">
<img id="MainMeshImage" src="serverpic.ashx"> <div id="p6title">
<h1>Meu servidor</h1> <img id="MainMeshImage" src="serverpic.ashx">
<h1>Meu servidor</h1>
</div>
<div id="p2ServerActions"> <div id="p2ServerActions">
<p><strong>Ações do servidor</strong></p> <p><strong>Ações do servidor</strong></p>
<div class="mL"> <div class="mL">
@ -770,17 +775,21 @@
<div id="p17info"></div> <div id="p17info"></div>
</div> </div>
<div id="p20" style="display:none"> <div id="p20" style="display:none">
<picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right"> <div id="p20title">
<source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp"> <picture id="MainMeshImage" style="border-width:0px;height:200px;width:200px;float:right">
<img alt="" width="200" height="200" src="images/mesh-256.png"> <source type="image/webp" width="200" height="200" srcset="images/webp/mesh-256.webp">
</picture> <img alt="" width="200" height="200" src="images/mesh-256.png">
<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> </picture>
<h1>Geral - <span id="p20meshName"></span></h1> <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> <p id="p20info"></p>
</div> </div>
<div id="p21" style="display:none"> <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> <div id="p21title">
<h1>Summary - <span id="p21meshName"></span></h1> <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="width:100%">
<div style="display:table;width:93%"> <div style="display:table;width:93%">
<div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px"> <div id="meshPowerChartDiv" style="width:31%;display:inline-block;text-align:center;max-width:250px">
@ -823,8 +832,10 @@
<div id="p30html3"></div> <div id="p30html3"></div>
</div> </div>
<div id="p31" style="display:none"> <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> <div id="p31title">
<h1>Eventos - <span id="p31userName"></span></h1> <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"> <table class="pTable">
<tbody><tr> <tbody><tr>
<td class="h1"></td> <td class="h1"></td>
@ -846,7 +857,7 @@
<div id="p31events" style=""></div> <div id="p31events" style=""></div>
</div> </div>
<div id="p40" style="display:none"> <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="areaHead">
<div class="toright2"> <div class="toright2">
<select id="p40type" onchange="updateServerTimelineStats()"> <select id="p40type" onchange="updateServerTimelineStats()">
@ -870,7 +881,7 @@
<canvas id="serverMainStats" style=""></canvas> <canvas id="serverMainStats" style=""></canvas>
</div> </div>
<div id="p41" style="display:none"> <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="areaHead">
<div class="toright2"> <div class="toright2">
Mostrar Mostrar
@ -1116,12 +1127,6 @@
if (top != self && (loc == null || top.active == false)) { top.location = self.location; return; } 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 // Check if we are in debug mode
args = parseUriArgs(); args = parseUriArgs();
if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } } if (!args.locale) { var x = getstore('loctag', 0); if ((x != null) && (x != '*')) { args.locale = x; } }
@ -1136,58 +1141,20 @@
toggleFullScreen(); toggleFullScreen();
// Setup page visuals // Setup page visuals
if (args.hide) { var hide = 0;
var hide = parseInt(args.hide); var globalHide = parseInt('{{{hide}}}');
QV('masthead', !(hide & 1)); if (globalHide || args.hide) {
QV('topbar', !(hide & 2)); if (args.hide) { hide = parseInt(args.hide); }
QV('footer', !(hide & 4)); if (globalHide) { hide = (hide | globalHide); }
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)';
} }
args.hide = hide;
adjustPanels();
// We are looking at a single device, remove all the back buttons // Setup logout control
if ('{{currentNode}}' != '') { var logoutControl = '';
QV('p10BackButton', false); if (logoutControls.name != null) { logoutControl = format("Welcome {0}.", logoutControls.name); }
QV('p11BackButton', false); if (logoutControls.logoutUrl != null) { logoutControl += format(' <a href=\"' + logoutControls.logoutUrl + '\" style="color:white">' + "Sair" + '</a>'); }
QV('p12BackButton', false); if (args.hide & 1) { QH('logoutControlSpan2', logoutControl); } else { QH('logoutControlSpan', logoutControl); }
QV('p13BackButton', false);
QV('p14BackButton', false);
QV('p15BackButton', false);
QV('p16BackButton', false);
}
p1updateInfo();
// Setup the context menu // Setup the context menu
document.onclick = function (e) { hideContextMenu(); } document.onclick = function (e) { hideContextMenu(); }
@ -1269,13 +1236,91 @@
d4ToggleSize(true); 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 // Toggle the web page to full screen
function toggleAspectRatio(toggle) { function toggleAspectRatio(toggle) {
if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); } if (toggle === 1) { deskAspectRatio = ((deskAspectRatio + 1) % 3); putstore('deskAspectRatio', deskAspectRatio); }
deskAdjust(); deskAdjust();
} }
// If FullScreen, toggle menu to be horisontal or vertical // If FullScreen, toggle menu to be horizontal or vertical
function toggleStackMenu(toggle) { function toggleStackMenu(toggle) {
if (webPageFullScreen == true) { if (webPageFullScreen == true) {
if (toggle === 1) { if (toggle === 1) {
@ -1311,6 +1356,7 @@
toggleFullScreen(0); toggleFullScreen(0);
toggleStackMenu(0); toggleStackMenu(0);
if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); } if (webPageStackMenu && (xxcurrentView >= 10)) { QC('column_l').add('room4submenu'); } else { QC('column_l').remove('room4submenu'); }
adjustPanels();
} }
function toggleNightMode() { function toggleNightMode() {
@ -1322,8 +1368,6 @@
// Toggle the web page to full screen // Toggle the web page to full screen
function toggleFullScreen(toggle) { function toggleFullScreen(toggle) {
if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); } if (toggle === 1) { webPageFullScreen = !webPageFullScreen; putstore('webPageFullScreen', webPageFullScreen); }
var hide = 0;
if (args.hide) { hide = parseInt(args.hide); }
if (webPageFullScreen == false) { if (webPageFullScreen == false) {
QC('body').remove('menu_stack'); QC('body').remove('menu_stack');
QC('body').remove('fullscreen'); QC('body').remove('fullscreen');
@ -1333,9 +1377,9 @@
//QV('page_leftbar', false); //QV('page_leftbar', false);
} else { } else {
QC('body').add('fullscreen'); QC('body').add('fullscreen');
if (hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(hide & 16)); if (args.hide & 16) QC('body').add('arg_hide'); // This is replacement for QV('page_leftbar', !(args.hide & 16));
QV('page_leftbar', !(hide & 16)); QV('page_leftbar', !(args.hide & 16));
QV('MainMenuSpan', !(hide & 16)); QV('MainMenuSpan', !(args.hide & 16));
if (xxcurrentView >= 10) QC('column_l').remove('room4submenu'); if (xxcurrentView >= 10) QC('column_l').remove('room4submenu');
QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen); QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
} }
@ -5487,8 +5531,9 @@
if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; } if (e.shiftKey == true) { enterBrowserFullscreen(Q('deskarea0')); browserfullscreen = true; }
} else { } else {
QC('body').remove('fulldesk'); QC('body').remove('fulldesk');
QS('deskarea3x')['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')['max-height'] = null; QS('deskarea3x')['height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
QS('deskarea3x')['max-height'] = 'calc(100vh - ' + (75 + xh) + 'px)';
if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; } if (browserfullscreen == true) { exitBrowserFullscreen(); browserfullscreen = false; }
} }
deskAdjust(); deskAdjust();
@ -9690,10 +9735,10 @@
QV('topbar', x != 0); QV('topbar', x != 0);
if ((x == 0) && (webPageFullScreen)) { QC('body').add('arg_hide'); } 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('UserDummyMenuSpan', (x < 10) && (x != 6) && webPageFullScreen);
QV('MeshSubMenuSpan', x >= 20 && x < 30); QV('MeshSubMenuSpan', (x >= 20) && (x < 30));
QV('UserSubMenuSpan', x >= 30 && x < 40); QV('UserSubMenuSpan', (x >= 30) && (x < 40));
QV('ServerSubMenuSpan', x == 6 || x == 115 || x == 40 || x == 41 || x == 42 || x == 43); 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' }; 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) { 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 // Handle a post request on the root
function handleRootPostRequest(req, res) { function handleRootPostRequest(req, res) {
const domain = checkUserIpAddress(req, res); const domain = checkUserIpAddress(req, res);
if (domain == null) { parent.debug('web', 'handleTermsRequest: Bad domain'); res.send('Not Found'); return; } 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.send('Not Found'); return; } // Check 3FA URL key 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); parent.debug('web', 'handleRootPostRequest, action: ' + req.body.action);
switch (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) { } 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'))) { if (parent.webPublicOverridePath) {
// Use the override logo picture obj.fs.exists(obj.path.join(obj.parent.webPublicOverridePath, 'images/mainwelcome.jpg'), function (exists) {
try { res.sendFile(obj.path.join(obj.parent.webPublicOverridePath, 'images/mainwelcome.jpg')); } catch (ex) { res.sendStatus(404); } 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 { } else {
// Use the default logo picture // Use the default logo picture
try { res.sendFile(obj.path.join(obj.parent.webPublicPath, 'images/mainwelcome.jpg')); } catch (ex) { res.sendStatus(404); } 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.extitle = encodeURIComponent(xargs.title);
xargs.domainurl = domain.url; xargs.domainurl = domain.url;
if (typeof domain.hide == 'number') { xargs.hide = domain.hide; }
return xargs; 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 ((acceptLanguages[i] == 'en') || (acceptLanguages[i].startsWith('en-'))) { break; } // English requested, break out.
if (fileOptions[acceptLanguages[i]] != null) { if (fileOptions[acceptLanguages[i]] != null) {
// Found a match. If the file no longer exists, default to English. // 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; return;
} }
} }