Improved user interface, new MeshAgent
Ylian Saint-Hilaire committed
Sep 14, 2018 at 17:42 UTC
3d98fe3770c92e396815d49aa3b5244b1d12a5e5
21 files changed
+237
-77
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
agents/MeshService-signed.exe
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64-signed.exe
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
agents/meshagent_arm
Binary files a/agents/meshagent_arm and b/agents/meshagent_arm differ
agents/meshagent_pi
Binary files a/agents/meshagent_pi and b/agents/meshagent_pi differ
agents/meshagent_pogo
Binary files a/agents/meshagent_pogo and b/agents/meshagent_pogo differ
agents/meshagent_poky
Binary files a/agents/meshagent_poky and b/agents/meshagent_poky differ
agents/meshagent_poky64
Binary files a/agents/meshagent_poky64 and b/agents/meshagent_poky64 differ
agents/meshagent_x86
Binary files a/agents/meshagent_x86 and b/agents/meshagent_x86 differ
agents/meshagent_x86-64
Binary files a/agents/meshagent_x86-64 and b/agents/meshagent_x86-64 differ
agents/meshagent_x86-64_nokvm
Binary files a/agents/meshagent_x86-64_nokvm and b/agents/meshagent_x86-64_nokvm differ
agents/meshagent_x86_nokvm
Binary files a/agents/meshagent_x86_nokvm and b/agents/meshagent_x86_nokvm differ
agents/meshcore.js
+6
-3
@@ -16,7 +16,8 @@ limitations under the License.
16
17
function createMeshCore(agent) {
18
var obj = {};
19
-
19
+
20
+ /*
21
function borderController() {
22
this.container = null;
23
this.Start = function Start(user) {
@@ -45,7 +46,7 @@ function createMeshCore(agent) {
46
}
47
}
48
}
48
-
49
+ */
50
51
require('events').EventEmitter.call(obj, true).createEvent('loggedInUsers_Updated');
52
obj.on('loggedInUsers_Updated', function ()
@@ -57,7 +58,7 @@ function createMeshCore(agent) {
58
}
59
sendConsoleText('LogOn Status Changed. Active Users => [' + users.join(', ') + ']');
60
});
60
- obj.borderManager = new borderController();
61
+ //obj.borderManager = new borderController();
62
63
// MeshAgent JavaScript Core Module. This code is sent to and running on the mesh agent.
64
obj.meshCoreInfo = "MeshCore v5";
@@ -910,6 +911,7 @@ function createMeshCore(agent) {
911
response = 'Available commands: help, info, args, print, type, dbget, dbset, dbcompact, eval, parseuri, httpget,\r\nwslist, wsconnect, wssend, wsclose, notify, ls, ps, kill, amt, netinfo, location, power, wakeonlan, scanwifi,\r\nscanamt, setdebug, smbios, rawsmbios, toast, lock, users, border.';
912
break;
913
}
914
+ /*
915
case 'border':
916
{
917
if ((args['_'].length == 1) && (args['_'][0] == 'on')) {
@@ -927,6 +929,7 @@ function createMeshCore(agent) {
929
}
930
}
931
break;
932
+ */
933
case 'users':
934
{
935
var retList = [];
package.json
+1
-1
@@ -1,6 +1,6 @@
1
{
2
"name": "meshcentral",
3
- "version": "0.2.0-i",
3
+ "version": "0.2.0-k",
4
"keywords": [
5
"Remote Management",
6
"Intel AMT",
public/images/leftbar-62.png
Binary files /dev/null and b/public/images/leftbar-62.png differ
public/images/leftbar-90.png
Binary files /dev/null and b/public/images/leftbar-90.png differ
public/styles/style.css
+66
@@ -170,6 +170,72 @@ a {
170
border: none;
171
}
172
173
+.lbbutton {
174
+ width:74px;
175
+ height:74px;
176
+ border-radius:5px;
177
+ background-color:white;
178
+ margin-left:8px;
179
+ margin-top:8px;
180
+ position:relative;
181
+ cursor:pointer;
182
+ opacity:0.5;
183
+}
184
+
185
+.lbbutton:hover {
186
+ opacity:1;
187
+}
188
+
189
+.lbbuttonsel {
190
+ opacity:0.9;
191
+}
192
+
193
+.lbbuttonsel2 {
194
+ width:82px;
195
+ border-radius:5px 0px 0px 5px;
196
+ opacity:1;
197
+}
198
+
199
+.lb1 {
200
+ background: url(../images/leftbar-62.png) -0px 0px;
201
+ height: 62px;
202
+ width: 62px;
203
+ cursor: pointer;
204
+ border: none;
205
+}
206
+
207
+.lb2 {
208
+ background: url(../images/leftbar-62.png) -75px 0px;
209
+ height: 62px;
210
+ width: 62px;
211
+ cursor: pointer;
212
+ border: none;
213
+}
214
+
215
+.lb3 {
216
+ background: url(../images/leftbar-62.png) -150px 0px;
217
+ height: 62px;
218
+ width: 62px;
219
+ cursor: pointer;
220
+ border: none;
221
+}
222
+
223
+.lb4 {
224
+ background: url(../images/leftbar-62.png) -225px 0px;
225
+ height: 62px;
226
+ width: 62px;
227
+ cursor: pointer;
228
+ border: none;
229
+}
230
+
231
+.lb5 {
232
+ background: url(../images/leftbar-62.png) -294px 0px;
233
+ height: 62px;
234
+ width: 62px;
235
+ cursor: pointer;
236
+ border: none;
237
+}
238
+
239
.m0 { background : url(../images/images16.png) -32px 0px; height : 16px; width : 16px; border:none; float:left }
240
.m1 { background : url(../images/images16.png) -16px 0px; height : 16px; width : 16px; border:none; float:left }
241
.m2 { background : url(../images/images16.png) -96px 0px; height : 16px; width : 16px; border:none; float:left }
views/default.handlebars
+164
-73
@@ -28,7 +28,7 @@
28
<script keeplink=1 type="text/javascript" src="scripts/ol3-contextmenu.js"></script>
29
<title>MeshCentral</title>
30
</head>
31
-<body onload="if (typeof(startup) !== 'undefined') startup();" oncontextmenu="handleContextMenu(event)">
31
+<body id="body" onload="if (typeof(startup) !== 'undefined') startup();" oncontextmenu="handleContextMenu(event)" style="display:none">
32
<!-- right click menu -->
33
<div id="contextMenu" class="contextMenu" style="display: none">
34
<div id="cxinfo" class="cmtext" onclick="cmaction(1)"><b>Information</b></div>
@@ -62,56 +62,82 @@
62
</div>
63
<p id="logoutControl">{{{logoutControl}}}</p>
64
</div>
65
- <div id=topbarmaster>
66
- <div id=topbar class=noselect style=display:none>
67
- <div>
65
+ <div id="page_leftbar" style="height:calc(100vh - 66px);width:90px;position:absolute;z-index:1000;background:#113962;background:linear-gradient(to bottom, #104893 0%,#113962 100%);color:white;display:none">
66
+ <div style="height:16px"></div>
67
+ <div id=LeftMenuMyDevices class="lbbutton lbbuttonsel" title="My Devices" onclick=go(1)>
68
+ <div class="lb2" style="position:absolute;top:6px;left:6px"></div>
69
+ </div>
70
+ <div id=LeftMenuMyAccount class="lbbutton" title="My Account" onclick=go(2)>
71
+ <div class="lb1" style="position:absolute;top:6px;left:6px"></div>
72
+ </div>
73
+ <div id=LeftMenuMyEvents class="lbbutton" title="My Events" onclick=go(3)>
74
+ <div class="lb3" style="position:absolute;top:6px;left:6px"></div>
75
+ </div>
76
+ <div id=LeftMenuMyFiles class="lbbutton" title="My Files" onclick=go(5)>
77
+ <div class="lb4" style="position:absolute;top:6px;left:6px"></div>
78
+ </div>
79
+ <div id=LeftMenuMyUsers class="lbbutton" title="My Users" onclick=go(4)>
80
+ <div class="lb5" style="position:absolute;top:6px;left:6px"></div>
81
+ </div>
82
+ </div>
83
+ <div id="page_content" style="max-height:calc(100vh - 130px)">
84
+ <div id=topbarmaster>
85
+ <div id=topbar class=noselect style=display:none>
86
<div>
69
- <table style=width:100%;height:22px cellpadding=0 cellspacing=0 class=style1>
70
- <tr>
71
- <td id=MainMenuMyDevices style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(1)>My Devices</td>
72
- <td id=MainMenuMyAccount style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(2)>My Account</td>
73
- <td id=MainMenuMyEvents style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(3)>My Events</td>
74
- <td id=MainMenuMyFiles style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(5)>My Files</td>
75
- <td id=MainMenuMyUsers style=width:100px;height:24px;cursor:pointer;display:none class=style3 onclick=go(4)>My Users</td>
76
- <td class=style3 style="text-align:right;height:24px"><span title="Toggle full width" style="cursor:pointer;opacity:0.2" onclick="toggleFullScreen(1)">↔</span> </td>
77
- </tr>
78
- </table>
79
- <div id=MainSubMenuSpan style=display:none>
80
- <table id=MainSubMenu style=width:100%;height:22px cellpadding=0 cellspacing=0 class=style1>
81
- <tr>
82
- <td id=MainDev style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(10)>General</td>
83
- <td id=MainDevDesktop style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(11)>Desktop</td>
84
- <td id=MainDevTerminal style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(12)>Terminal</td>
85
- <td id=MainDevFiles style=width:100px;height:24px;cursor:pointer;display:none class=style3 onclick=go(13)>Files</td>
86
- <td id=MainDevEvents style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(16)>Events</td>
87
- <td id=MainDevAmt style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(14)>Intel® AMT</td>
88
- <td id=MainDevConsole style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(15)>Console</td>
89
- <td class=style3 style=height:24px> </td>
90
- </tr>
91
- </table>
92
- </div>
93
- <div id=MeshSubMenuSpan style=display:none>
94
- <table id=MeshSubMenu style=width:100%;height:22px cellpadding=0 cellspacing=0 class=style1>
95
- <tr>
96
- <td id=MeshGeneral style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(20)>General</td>
97
- <td class=style3 style=height:24px> </td>
98
- </tr>
99
- </table>
100
- </div>
101
- <div id=UserSubMenuSpan style=display:none>
102
- <table id=UserSubMenu style=width:100%;height:22px cellpadding=0 cellspacing=0 class=style1>
87
+ <div style="position:relative">
88
+ <div style="position:absolute;top:3px;right:6px">
89
+ <span title="Toggle full width" style="cursor:pointer;color:white" onclick="toggleFullScreen(1)">↔</span>
90
+ </div>
91
+ <table id=MainMenuSpan style=width:100%;height:22px cellpadding=0 cellspacing=0 class=style1>
92
<tr>
104
- <td id=UserGeneral style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(30)>General</td>
105
- <td id=UserEvents style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(31)>Events</td>
106
- <td class=style3 style=height:24px> </td>
93
+ <td id=MainMenuMyDevices style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(1)>My Devices</td>
94
+ <td id=MainMenuMyAccount style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(2)>My Account</td>
95
+ <td id=MainMenuMyEvents style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(3)>My Events</td>
96
+ <td id=MainMenuMyFiles style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(5)>My Files</td>
97
+ <td id=MainMenuMyUsers style=width:100px;height:24px;cursor:pointer;display:none class=style3 onclick=go(4)>My Users</td>
98
+ <td class=style3 style="text-align:right;height:24px"> </td>
99
</tr>
100
</table>
101
+ <div id=MainSubMenuSpan style=display:none>
102
+ <table id=MainSubMenu style=width:100%;height:22px cellpadding=0 cellspacing=0 class=style1>
103
+ <tr>
104
+ <td id=MainDev style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(10)>General</td>
105
+ <td id=MainDevDesktop style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(11)>Desktop</td>
106
+ <td id=MainDevTerminal style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(12)>Terminal</td>
107
+ <td id=MainDevFiles style=width:100px;height:24px;cursor:pointer;display:none class=style3 onclick=go(13)>Files</td>
108
+ <td id=MainDevEvents style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(16)>Events</td>
109
+ <td id=MainDevAmt style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(14)>Intel® AMT</td>
110
+ <td id=MainDevConsole style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(15)>Console</td>
111
+ <td class=style3 style=height:24px> </td>
112
+ </tr>
113
+ </table>
114
+ </div>
115
+ <div id=MeshSubMenuSpan style=display:none>
116
+ <table id=MeshSubMenu style=width:100%;height:22px cellpadding=0 cellspacing=0 class=style1>
117
+ <tr>
118
+ <td id=MeshGeneral style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(20)>General</td>
119
+ <td class=style3 style=height:24px> </td>
120
+ </tr>
121
+ </table>
122
+ </div>
123
+ <div id=UserSubMenuSpan style=display:none>
124
+ <table id=UserSubMenu style=width:100%;height:22px cellpadding=0 cellspacing=0 class=style1>
125
+ <tr>
126
+ <td id=UserGeneral style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(30)>General</td>
127
+ <td id=UserEvents style=width:100px;height:24px;cursor:pointer class=style3 onclick=go(31)>Events</td>
128
+ <td class=style3 style=height:24px> </td>
129
+ </tr>
130
+ </table>
131
+ </div>
132
+ <div id=UserDummyMenuSpan style=display:none>
133
+ <table id=UserDummyMenu style=width:100%;height:22px cellpadding=0 cellspacing=0 class=style1>
134
+ <tr><td class=style3 style="text-align:right;height:24px"> </td></tr>
135
+ </table>
136
+ </div>
137
</div>
138
</div>
139
</div>
140
</div>
113
- </div>
114
- <div id="page_content" style="max-height:calc(100vh - 138px)">
141
<div id="column_l">
142
<div id=p0 style=display:none>
143
<div id=p0message style=margin:50px;text-align:center>Server disconnected, <href onclick=reload() style=cursor:pointer><u>click to reconnect</u></href>.</div>
@@ -182,8 +208,8 @@
208
</tr>
209
</table>
210
</div>
185
- <div id="xdevices" style="max-height:calc(100vh - 242px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch"></div>
186
- <div id="xdevicesmap" style="height:500px;width:100%;overflow:hidden;position:relative">
211
+ <div id="xdevices" style="max-height:calc(100vh - 239px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch"></div>
212
+ <div id="xdevicesmap" style="height:calc(100vh - 239px);width:100%;overflow:hidden;position:relative">
213
<div id=xmapSearchResultsDlg style="position:absolute;display:none;max-height:280px;left:5px;top:5px;max-width:250px;z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666">
214
<div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0">
215
<div id=xmapSearchClose style=float:right;padding:5px;cursor:pointer onclick=mapCloseSearchWindow()><b>X</b></div>
@@ -195,7 +221,7 @@
221
</div>
222
<div id="xmap-info-window" style="text-shadow: 0px 0px 15px #FFF"></div>
223
</div>
198
- <div id=p2 style=display:none>
224
+ <div id=p2 style="display:none">
225
<h1>My Account</h1>
226
<div id="p2AccountActions">
227
<p><strong><img alt="" width=150 height=103 src=images/mainaccount.png style=margin-bottom:10px;margin-right:20px;float:right />Account actions</strong></p>
@@ -239,7 +265,7 @@
265
<div class="h2" style="height:100%;float:right;"> </div>
266
</div>
267
</div>
242
- <div id=p3events style="max-height:600px;overflow-y:scroll"></div>
268
+ <div id=p3events style="height:calc(100vh - 243px);overflow-y:scroll"></div>
269
</div>
270
<div id=p4 style=display:none>
271
<h1>My Users</h1>
@@ -256,11 +282,11 @@
282
<div class=h2 style="height:100%;float:right"> </div>
283
</div>
284
</div>
259
- <div id="p3users" style="max-height:600px;overflow-y:auto"></div>
285
+ <div id="p3users" style="max-height:calc(100vh - 243px);overflow-y:auto"></div>
286
</div>
287
<div id=p5 style=display:none>
288
<h1>My Files</h1>
263
- <table id="p5toolbar" style="width: 100%" cellpadding="0" cellspacing="0">
289
+ <table id="p5toolbar" style="width:100%" cellpadding="0" cellspacing="0">
290
<tr>
291
<td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign=bottom>
292
<div id="p5rightOfButtons" style="float:right;margin-top:3px"></div>
@@ -293,7 +319,7 @@
319
</td>
320
</tr>
321
</table>
296
- <div id="p5filetable" style="width:100%;height:500px;overflow:auto;-webkit-user-select:none;position:relative">
322
+ <div id="p5filetable" style="width:100%;height:calc(100vh - 294px);overflow:auto;-webkit-user-select:none;position:relative">
323
<!--
324
<form id=p5fileCatchAll method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame>
325
<input type=file id=p5fileCatchAllInput name=files style="position:absolute;left:0;width:100%;top:0;bottom:0;opacity:0;display:none" onchange="p5fileCatchAllInputChanged(event)" />
@@ -310,7 +336,7 @@
336
<tr><td class=style6 style="text-align:left;padding:3px"> <span id="p5bottomstatus"></span></td></tr>
337
</table>
338
</div>
313
- <div id=p10 style=display:none>
339
+ <div id=p10 style="display:none">
340
<table style="width:100%" cellpadding="0" cellspacing="0">
341
<tr>
342
<td style=width:auto valign=top>
@@ -410,7 +436,7 @@
436
</tr>
437
</table>
438
</div>
413
- <div id=p12 style=display:none>
439
+ <div id=p12 style="display:none">
440
<div id="p12title"><h1>Terminal - <span id=p12deviceName></span></h1></div>
441
<div id="p12warning" style='max-width:100%;display:none;cursor:pointer;margin-bottom:5px' onclick=showFeaturesDlg()>
442
<div class="icon2" style="float:left;margin:7px"></div>
@@ -513,7 +539,7 @@
539
</td>
540
</tr>
541
</table>
516
- <div id="p13filetable" style="width:100%;height:500px;overflow:auto;-webkit-user-select:none">
542
+ <div id="p13filetable" style="width:100%;height:calc(100vh - 346px);overflow:auto;-webkit-user-select:none">
543
<div id="p13bigok" style="width:256px;overflow:hidden;position:absolute;left:337px;top:200px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>✓</b></div>
544
<div id="p13bigfail" style="width:256px;overflow:hidden;position:absolute;left:337px;top:200px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>✗</b></div>
545
<span id="p13files"></span>
@@ -524,7 +550,7 @@
550
</div>
551
<div id=p14 style=display:none>
552
<div id="p14title"><h1>Intel® AMT - <span id=p14deviceName></span></h1></div>
527
- <iframe id=p14iframe style="width:100%;height:650px;border:0;overflow:hidden" src="/commander.htm"></iframe>
553
+ <iframe id=p14iframe style="width:100%;height:calc(100vh - 242px);border:0;overflow:hidden" src="/commander.htm"></iframe>
554
</div>
555
<div id=p15 style=display:none>
556
<div id="p15title"><h1>Console - <span id=p15deviceName></span></h1></div>
@@ -544,8 +570,8 @@
570
</td>
571
</tr>
572
<tr>
547
- <td style="background:black;text-align:center;height:500px;position:relative">
548
- <div id=p15agentConsole style="background:black;margin:0;padding:0;color:lightgray;width:100%;max-width:930px;height:100%;text-align:left;overflow-y:scroll"><pre id=p15agentConsoleText></pre></div>
573
+ <td id=p15agentConsole style="background:black;margin:0;padding:0;color:lightgray;width:100%;height:calc(100vh - 296px);max-height:500px;position:relative">
574
+ <pre id=p15agentConsoleText style="position:absolute;margin:0;padding:0;top:0;bottom:0;left:0;right:0;overflow-y:scroll;overflow-x:auto"></pre>
575
</td>
576
</tr>
577
<tr>
@@ -583,9 +609,9 @@
609
<div class=h2 style=height:100%;float:right> </div>
610
</div>
611
</div>
586
- <div id=p16events style="max-height:600px;overflow-y:scroll"></div>
612
+ <div id=p16events style="max-height:calc(100vh - 267px);overflow-y:auto"></div>
613
</div>
588
- <div id=p20 style=display:none>
614
+ <div id=p20 style="display:none">
615
<img id=MainMeshImage src="images/mesh-200.png" style=border-width:0px;height:200px;width:200px;float:right>
616
<h1><span id=p20meshName></span> - General</h1>
617
<p id=p20info></p>
@@ -629,7 +655,7 @@
655
<div class="h2" style="height:100%;float:right;"> </div>
656
</div>
657
</div>
632
- <div id=p31events style="max-height:600px;overflow-y:scroll"></div>
658
+ <div id=p31events style="max-height:calc(100vh - 267px);overflow-y:scroll"></div>
659
</div>
660
<br id="column_l_bottomgap" />
661
</div>
@@ -784,8 +810,9 @@
810
var debugmode = false;
811
var clickOnce = (((features & 256) != 0) && detectClickOnce());
812
var attemptWebRTC = ((features & 128) != 0);
787
- var webPageFullScreen = getstore('webPageFullScreen', false);;
813
+ var webPageFullScreen = getstore('webPageFullScreen', true);
814
if (webPageFullScreen == 'false') { webPageFullScreen = false; }
815
+ if (webPageFullScreen == 'true') { webPageFullScreen = true; }
816
817
function startup() {
818
if ((features & 32) == 0) {
@@ -885,17 +912,41 @@
912
QS('container')['border-right'] = '1px solid #b7b7b7';
913
QS('container')['border-left'] = '1px solid #b7b7b7';
914
QS('container')['min-width'] = '960px';
888
- //QS('column_l').padding = '0 15px';
915
+ QS('container')['overflow'] = '';
916
QS('column_l').width = '930px';
917
+ QS('column_l').height = '';
918
+ QS('column_l')['margin-left'] = '';
919
+ QS('column_l')["overflow-y"] = '';
920
+ QS('column_l')["max-height"] = (xxcurrentView >= 10) ? 'calc(100vh - 159px)' : 'calc(100vh - 135px)';
921
+ QS('container').position = '';
922
+ QS('page_content').position = '';
923
+ QV('MainMenuSpan', true);
924
+ QV('UserDummyMenuSpan', false);
925
+ QV('page_leftbar', false);
926
} else {
927
+ QS('container').position = 'absolute';
928
QS('container').width = '100%';
929
+ QS('container').top = '0px';
930
+ QS('container').bottom = '0px';
931
QS('container')['border-right'] = '0';
932
QS('container')['border-left'] = '0';
933
QS('container')['min-width'] = '700px';
895
- //QS('column_l').padding = '0';
934
+ QS('container')['overflow'] = 'hidden';
935
+ QS('page_content').position = 'absolute';
936
+ QS('page_content').top = '66px';
937
+ QS('page_content').left = '90px';
938
+ QS('page_content').right = '0px';
939
+ QS('page_content').bottom = '0px';
940
+ QS('column_l').height = 'calc(100vh - 135px)';
941
QS('column_l').width = 'calc(100% - 30px)';
942
+ QS('column_l')["overflow-y"] = 'auto';
943
+ QS('column_l')["max-height"] = 'calc(100vh - 135px)';
944
+ QV('MainMenuSpan', false);
945
+ QV('UserDummyMenuSpan', (xxcurrentView < 10) && webPageFullScreen);
946
+ QV('page_leftbar', true);
947
}
948
drawDeviceTimeline();
949
+ QV('body', true);
950
}
951
952
function getNodeFromId(id) { for (var i in nodes) { if (nodes[i]._id == id) return nodes[i]; } return null; }
@@ -1682,7 +1733,7 @@
1733
r += '<div style=border-top-style:solid;border-top-width:1px;border-top-color:#DDDDDD;cursor:pointer;font-size:10px>';
1734
if ((view < 3) && (sort == 0) && (meshcount > 0)) { r += '<a onclick=account_createMesh() title="Create a new group of computers." style=cursor:pointer>Add Mesh</a> '; }
1735
r += '<a onclick=p10showMeshCmdDialog(0) style=cursor:pointer title="Download MeshCmd, a command line tool that performs many functions.">MeshCmd</a></div>';
1685
- r += '</div>';
1736
+ r += '</div><br/>';
1737
1738
QH('xdevices', r);
1739
deviceHeaderSet();
@@ -3578,12 +3629,21 @@
3629
QV('column_l_bottomgap', !fullscreen);
3630
QV('idx_deskFullBtn2', fullscreen);
3631
QV('deskFullBtn', !fullscreen);
3632
+ QV('page_leftbar', !fullscreen);
3633
if (fullscreen) {
3634
+ QS('column_l').width = '930px';
3635
+ QS('column_l').height = '';
3636
+ QS('column_l')['margin-left'] = '';
3637
+ QS('column_l')['overflow-y'] = '';
3638
+ QS('container').position = '';
3639
+ QS('page_content').position = '';
3640
+ QV('MainMenuSpan', true);
3641
QS('container').width = '100%';
3642
QS('container')['border-right'] = '0';
3643
QS('container')['border-left'] = '0';
3644
QS('column_l').padding = '0';
3645
QS('column_l').width = '100%';
3646
+ QS('column_l')["max-height"] = '';
3647
} else {
3648
QS('container').width = '960px';
3649
QS('container')['border-right'] = '1px solid #b7b7b7';
@@ -4358,7 +4418,7 @@
4418
var time = new Date(event.time);
4419
if (time.toLocaleDateString() != dateHeader) {
4420
if (dateHeader != null) x += '</table>';
4361
- x += '<table style=width:100% cellpadding=0 cellspacing=0><tr><td class=DevSt>' + time.toLocaleDateString() + '</td></tr>';
4421
+ x += '<table style=width:100% cellpadding=0 cellspacing=0><tr><td class=DevSt colspan=4>' + time.toLocaleDateString() + '</td></tr>';
4422
dateHeader = time.toLocaleDateString();
4423
}
4424
var icon = 'si3';
@@ -4367,10 +4427,7 @@
4427
4428
var msg = event.msg.split('(R)').join('®');
4429
//if (event.username && event.username != userinfo.name) { msg += ': ' + event.username; }
4370
- x += '<tr><td><div class=bar18 style=height:18px;width:100%;font-size:medium>';
4371
- x += '<div style=float:left;height:18px;width:18px;background-color:white><div class=' + icon + ' style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>';
4372
- x += '<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>';
4373
- x += '<div style=font-size:14px><span style=width:300px>' + time.toLocaleTimeString() + ' - ' + msg + '</span></div></div></td></tr>';
4430
+ x += '<tr><td style=width:18px><div class=' + icon + '></div></td><td class=g1 style=float:none> </td><td style=background-color:#C9C9C9>' + time.toLocaleTimeString() + ' - ' + msg + '</td><td class=g2 style=float:none> </td></tr><tr style=height:2px></tr>';
4431
}
4432
if (dateHeader != null) x += '</table>';
4433
if (x == '') x = "<br><i>No Events Found</i><br><br>";
@@ -5149,7 +5206,7 @@
5206
var time = new Date(event.time);
5207
if (time.toLocaleDateString() != dateHeader) {
5208
if (dateHeader != null) x += '</table>';
5152
- x += '<table style=width:100% cellpadding=0 cellspacing=0><tr><td class=DevSt>' + time.toLocaleDateString() + '</td></tr>';
5209
+ x += '<table style=width:100% cellpadding=0 cellspacing=0><tr><td colspan=4 class=DevSt>' + time.toLocaleDateString() + '</td></tr>';
5210
dateHeader = time.toLocaleDateString();
5211
}
5212
var icon = 'si3';
@@ -5158,10 +5215,7 @@
5215
5216
var msg = event.msg.split('(R)').join('®');
5217
if (event.username && event.username != userinfo.name) { msg += ': ' + event.username; }
5161
- x += '<tr><td><div class=bar18 style=height:18px;width:100%;font-size:medium>';
5162
- x += '<div style=float:left;height:18px;width:18px;background-color:white><div class=' + icon + ' style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>';
5163
- x += '<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>';
5164
- x += '<div style=font-size:14px><span style=width:300px>' + time.toLocaleTimeString() + ' - ' + msg + '</span></div></div></td></tr>';
5218
+ x += '<tr><td style=width:18px><div class=' + icon + '></div></td><td class=g1 style=float:none> </td><td style=background-color:#C9C9C9>' + time.toLocaleTimeString() + ' - ' + msg + '</td><td class=g2 style=float:none> </td></tr><tr style=height:2px></tr>';
5219
}
5220
if (dateHeader != null) x += '</table>';
5221
if (x == '') x = "<br><i>No Events Found</i><br><br>";
@@ -5194,6 +5248,7 @@
5248
5249
function updateUsers() {
5250
QV('MainMenuMyUsers', (users != null) && ((features & 4) == 0));
5251
+ QV('LeftMenuMyUsers', (users != null) && ((features & 4) == 0));
5252
if ((users == null) || ((features & 4) != 0)) { QH('p3users', ''); return; }
5253
5254
// Sort the list of user id's
@@ -5830,13 +5885,49 @@
5885
for (var i = 0; i < 32; i++) { QV('p' + i, i == x); }
5886
xxcurrentView = x;
5887
5888
+ // Remove left bar selection
5889
+ var leftBarItems = ['LeftMenuMyDevices', 'LeftMenuMyAccount', 'LeftMenuMyEvents', 'LeftMenuMyFiles', 'LeftMenuMyUsers'];
5890
+ for (var i in leftBarItems) { Q(leftBarItems[i]).classList.remove('lbbuttonsel', 'lbbuttonsel2'); }
5891
+
5892
+ // My Devices
5893
QV('topbar', x != 0);
5894
if (x >= 10 && x < 20) { QS('MainMenuMyDevices').backgroundColor = "#606060"; } else { QS('MainMenuMyDevices').backgroundColor = ((x == 1) ? "#003366" : "#808080"); }
5895
+ if (x == 1 || (x >= 10 && x < 20)) { Q('LeftMenuMyDevices').classList.add('lbbuttonsel'); }
5896
+ if (x == 1) { Q('LeftMenuMyDevices').classList.add('lbbuttonsel2'); }
5897
+
5898
+ // My Account
5899
if (x >= 20 && x < 30) { QS('MainMenuMyAccount').backgroundColor = "#606060"; } else { QS('MainMenuMyAccount').backgroundColor = ((x == 2) ? "#003366" : "#808080"); }
5900
+ if (x == 2 || (x >= 20 && x < 30)) { Q('LeftMenuMyAccount').classList.add('lbbuttonsel'); }
5901
+ if (x == 2) { Q('LeftMenuMyAccount').classList.add('lbbuttonsel2'); }
5902
+
5903
+ // My Events
5904
QS('MainMenuMyEvents').backgroundColor = ((x == 3) ? "#003366" : "#808080");
5905
+ if (x == 3) { Q('LeftMenuMyEvents').classList.add('lbbuttonsel', 'lbbuttonsel2'); }
5906
+
5907
+ // My Users
5908
if (x >= 30 && x < 40) { QS('MainMenuMyUsers').backgroundColor = "#606060"; } else { QS('MainMenuMyUsers').backgroundColor = ((x == 4) ? "#003366" : "#808080"); }
5909
+ if (x == 4 || (x >= 30 && x < 40)) { Q('LeftMenuMyUsers').classList.add('lbbuttonsel'); }
5910
+ if (x == 4) { Q('LeftMenuMyUsers').classList.add('lbbuttonsel2'); }
5911
+
5912
+ // My Files
5913
QS('MainMenuMyFiles').backgroundColor = ((x == 5) ? "#003366" : "#808080");
5914
+ if (x == 5) { Q('LeftMenuMyFiles').classList.add('lbbuttonsel', 'lbbuttonsel2'); }
5915
+
5916
+ // column_l max-height
5917
+ if (webPageFullScreen) {
5918
+ QS('column_l')["max-height"] = 'calc(100vh - 135px)';
5919
+ } else {
5920
+ QS('column_l')["max-height"] = (x >= 10) ? 'calc(100vh - 159px)' : 'calc(100vh - 135px)';
5921
+ }
5922
+ if ((x == 0) && (webPageFullScreen)) {
5923
+ QS('page_content').position = '';
5924
+ QV('page_leftbar', false);
5925
+ QS('column_l').height = 'calc(100vh - 110px)';
5926
+ QS('column_l')["max-height"] = '';
5927
+ }
5928
+
5929
QV('MainSubMenuSpan', x >= 10 && x < 20);
5930
+ QV('UserDummyMenuSpan', (x < 10) && webPageFullScreen);
5931
QS('MainDev').backgroundColor = ((x == 10) ? "#003366" : "#808080");
5932
QS('MainDevDesktop').backgroundColor = ((x == 11) ? "#003366" : "#808080");
5933
QS('MainDevTerminal').backgroundColor = ((x == 12) ? "#003366" : "#808080");