Web app improvements and support for high SPI screens.
|
@ -3526,7 +3526,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||
// Event the node change
|
||||
var newMesh = parent.meshes[command.meshid];
|
||||
var event = { etype: 'node', userid: user._id, username: user.name, action: 'nodemeshchange', nodeid: node._id, node: node, oldMeshId: oldMeshId, newMeshId: command.meshid, msgid: 85, msgArgs: [node.name, newMesh.name], msg: 'Moved device ' + node.name + ' to group ' + newMesh.name, domain: domain.id };
|
||||
if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the mesh. Another event will come.
|
||||
// Even if change stream is enabled on this server, we still make the nodemeshchange actionable. This is because the DB can't send out a change event that will match this.
|
||||
parent.parent.DispatchEvent(parent.CreateMeshDispatchTargets(command.meshid, [oldMeshId, node._id]), obj, event);
|
||||
|
||||
// Send response if required
|
||||
|
|
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 132 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 10 KiB |
|
@ -858,17 +858,17 @@ NoMeshesPanel img {
|
|||
box-shadow:none;
|
||||
}
|
||||
|
||||
.deviceBatterySmall1 { background: url(../images/batteries24.png) 0px 0px; }
|
||||
.deviceBatterySmall2 { background: url(../images/batteries24.png) -14px 0px; }
|
||||
.deviceBatterySmall3 { background: url(../images/batteries24.png) -28px 0px; }
|
||||
.deviceBatterySmall4 { background: url(../images/batteries24.png) -42px 0px; }
|
||||
.deviceBatterySmall5 { background: url(../images/batteries24.png) -56px 0px; }
|
||||
.deviceBatterySmall6 { background: url(../images/batteries24.png) -70px 0px; }
|
||||
.deviceBatterySmall7 { background: url(../images/batteries24.png) -84px 0px; }
|
||||
.deviceBatterySmall8 { background: url(../images/batteries24.png) -98px 0px; }
|
||||
.deviceBatterySmall9 { background: url(../images/batteries24.png) -112px 0px; }
|
||||
.deviceBatterySmall10 { background: url(../images/batteries24.png) -126px 0px; }
|
||||
.deviceBatterySmall11 { background: url(../images/batteries24.png) -140px 0px; }
|
||||
.deviceBatterySmall1 { background: url(../images/batteries24.png) 0px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall2 { background: url(../images/batteries24.png) -14px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall3 { background: url(../images/batteries24.png) -28px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall4 { background: url(../images/batteries24.png) -42px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall5 { background: url(../images/batteries24.png) -56px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall6 { background: url(../images/batteries24.png) -70px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall7 { background: url(../images/batteries24.png) -84px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall8 { background: url(../images/batteries24.png) -98px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall9 { background: url(../images/batteries24.png) -112px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall10 { background: url(../images/batteries24.png) -126px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
.deviceBatterySmall11 { background: url(../images/batteries24.png) -140px 0px; background-image: -webkit-image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
|
||||
|
||||
.deviceNotifyLargeDot {
|
||||
position:absolute;
|
||||
|
@ -1303,6 +1303,7 @@ a {
|
|||
|
||||
.i1 {
|
||||
background: url(../images/icons50.png) 0px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
cursor: pointer;
|
||||
|
@ -1311,6 +1312,7 @@ a {
|
|||
|
||||
.i2 {
|
||||
background: url(../images/icons50.png) -50px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
cursor: pointer;
|
||||
|
@ -1319,6 +1321,7 @@ a {
|
|||
|
||||
.i3 {
|
||||
background: url(../images/icons50.png) -100px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
cursor: pointer;
|
||||
|
@ -1327,6 +1330,7 @@ a {
|
|||
|
||||
.i4 {
|
||||
background: url(../images/icons50.png) -150px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
cursor: pointer;
|
||||
|
@ -1335,6 +1339,7 @@ a {
|
|||
|
||||
.i5 {
|
||||
background: url(../images/icons50.png) -200px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
cursor: pointer;
|
||||
|
@ -1343,6 +1348,7 @@ a {
|
|||
|
||||
.i6 {
|
||||
background: url(../images/icons50.png) -250px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
cursor: pointer;
|
||||
|
@ -1351,6 +1357,7 @@ a {
|
|||
|
||||
.i7 {
|
||||
background: url(../images/icons50.png) -300px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
cursor: pointer;
|
||||
|
@ -1359,6 +1366,7 @@ a {
|
|||
|
||||
.i8 {
|
||||
background: url(../images/icons50.png) -350px 0px;
|
||||
background-image: -webkit-image-set(url(../images/icons50.png) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
cursor: pointer;
|
||||
|
@ -1367,6 +1375,7 @@ a {
|
|||
|
||||
.j1 {
|
||||
background: url(../images/icons16.png) 0px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons16.webp) 1x, url(../images/webp/icons32.webp) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
cursor: pointer;
|
||||
|
@ -1375,6 +1384,7 @@ a {
|
|||
|
||||
.j2 {
|
||||
background: url(../images/icons16.png) -16px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons16.webp) 1x, url(../images/webp/icons32.webp) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
cursor: pointer;
|
||||
|
@ -1383,6 +1393,7 @@ a {
|
|||
|
||||
.j3 {
|
||||
background: url(../images/icons16.png) -32px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons16.webp) 1x, url(../images/webp/icons32.webp) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
cursor: pointer;
|
||||
|
@ -1391,6 +1402,7 @@ a {
|
|||
|
||||
.j4 {
|
||||
background: url(../images/icons16.png) -48px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons16.webp) 1x, url(../images/webp/icons32.webp) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
cursor: pointer;
|
||||
|
@ -1399,6 +1411,7 @@ a {
|
|||
|
||||
.j5 {
|
||||
background: url(../images/icons16.png) -64px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons16.webp) 1x, url(../images/webp/icons32.webp) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
cursor: pointer;
|
||||
|
@ -1407,6 +1420,7 @@ a {
|
|||
|
||||
.j6 {
|
||||
background: url(../images/icons16.png) -80px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons16.webp) 1x, url(../images/webp/icons32.webp) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
cursor: pointer;
|
||||
|
@ -1415,6 +1429,7 @@ a {
|
|||
|
||||
.j7 {
|
||||
background: url(../images/icons16.png) -96px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons16.webp) 1x, url(../images/webp/icons32.webp) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
cursor: pointer;
|
||||
|
@ -1423,6 +1438,7 @@ a {
|
|||
|
||||
.j8 {
|
||||
background: url(../images/icons16.png) -112px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons16.webp) 1x, url(../images/webp/icons32.webp) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
cursor: pointer;
|
||||
|
@ -1469,6 +1485,7 @@ a {
|
|||
|
||||
.lb1 {
|
||||
background: url(../images/leftbar-64.png) -1px -2px;
|
||||
background-image: -webkit-image-set(url(../images/webp/leftbar-64.webp) 1x, url(../images/webp/leftbar-128.webp) 2x);
|
||||
height: 62px;
|
||||
width: 62px;
|
||||
cursor: pointer;
|
||||
|
@ -1480,6 +1497,7 @@ a {
|
|||
|
||||
.lb2 {
|
||||
background: url(../images/leftbar-64.png) -66px -2px;
|
||||
background-image: -webkit-image-set(url(../images/webp/leftbar-64.webp) 1x, url(../images/webp/leftbar-128.webp) 2x);
|
||||
height: 62px;
|
||||
width: 62px;
|
||||
cursor: pointer;
|
||||
|
@ -1491,6 +1509,7 @@ a {
|
|||
|
||||
.lb3 {
|
||||
background: url(../images/leftbar-64.png) -130px -2px;
|
||||
background-image: -webkit-image-set(url(../images/webp/leftbar-64.webp) 1x, url(../images/webp/leftbar-128.webp) 2x);
|
||||
height: 62px;
|
||||
width: 62px;
|
||||
cursor: pointer;
|
||||
|
@ -1502,6 +1521,7 @@ a {
|
|||
|
||||
.lb4 {
|
||||
background: url(../images/leftbar-64.png) -194px -2px;
|
||||
background-image: -webkit-image-set(url(../images/webp/leftbar-64.webp) 1x, url(../images/webp/leftbar-128.webp) 2x);
|
||||
height: 62px;
|
||||
width: 62px;
|
||||
cursor: pointer;
|
||||
|
@ -1513,6 +1533,7 @@ a {
|
|||
|
||||
.lb5 {
|
||||
background: url(../images/leftbar-64.png) -257px -2px;
|
||||
background-image: -webkit-image-set(url(../images/webp/leftbar-64.webp) 1x, url(../images/webp/leftbar-128.webp) 2x);
|
||||
height: 62px;
|
||||
width: 62px;
|
||||
cursor: pointer;
|
||||
|
@ -1524,6 +1545,7 @@ a {
|
|||
|
||||
.lb6 {
|
||||
background: url(../images/leftbar-64.png) -318px -2px;
|
||||
background-image: -webkit-image-set(url(../images/webp/leftbar-64.webp) 1x, url(../images/webp/leftbar-128.webp) 2x);
|
||||
height: 62px;
|
||||
width: 62px;
|
||||
cursor: pointer;
|
||||
|
@ -1583,6 +1605,7 @@ a {
|
|||
|
||||
.si1 {
|
||||
background: url(../images/icons16.png) 0px 0px;
|
||||
background-image: -webkit-image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
border: none;
|
||||
|
@ -1591,6 +1614,7 @@ a {
|
|||
|
||||
.si2 {
|
||||
background: url(../images/icons16.png) -16px 0px;
|
||||
background-image: -webkit-image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
border: none;
|
||||
|
@ -1599,6 +1623,7 @@ a {
|
|||
|
||||
.si3 {
|
||||
background: url(../images/icons16.png) -32px 0px;
|
||||
background-image: -webkit-image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
border: none;
|
||||
|
@ -1607,6 +1632,7 @@ a {
|
|||
|
||||
.si4 {
|
||||
background: url(../images/icons16.png) -48px 0px;
|
||||
background-image: -webkit-image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
border: none;
|
||||
|
@ -1615,6 +1641,7 @@ a {
|
|||
|
||||
.si5 {
|
||||
background: url(../images/icons16.png) -64px 0px;
|
||||
background-image: -webkit-image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
border: none;
|
||||
|
@ -1623,6 +1650,7 @@ a {
|
|||
|
||||
.si6 {
|
||||
background: url(../images/icons16.png) -80px 0px;
|
||||
background-image: -webkit-image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
border: none;
|
||||
|
@ -1631,6 +1659,7 @@ a {
|
|||
|
||||
.si7 {
|
||||
background: url(../images/icons16.png) -96px 0px;
|
||||
background-image: -webkit-image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
border: none;
|
||||
|
@ -1639,6 +1668,7 @@ a {
|
|||
|
||||
.si8 {
|
||||
background: url(../images/icons16.png) -112px 0px;
|
||||
background-image: -webkit-image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
border: none;
|
||||
|
@ -1647,6 +1677,7 @@ a {
|
|||
|
||||
.mi {
|
||||
background: url(../images/meshicon50.png) 0px 0px;
|
||||
background-image: -webkit-image-set(url(../images/meshicon50.png) 1x, url(../images/meshicon100.png) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
cursor: pointer;
|
||||
|
|
|
@ -2392,7 +2392,7 @@
|
|||
"zh-chs": "AMT",
|
||||
"zh-cht": "AMT",
|
||||
"xloc": [
|
||||
"default.handlebars->29->219",
|
||||
"default.handlebars->29->244",
|
||||
"default.handlebars->29->430"
|
||||
]
|
||||
},
|
||||
|
@ -3214,7 +3214,7 @@
|
|||
"default.handlebars->29->1482",
|
||||
"default.handlebars->29->1886",
|
||||
"default.handlebars->29->2004",
|
||||
"default.handlebars->29->239"
|
||||
"default.handlebars->29->224"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -3855,7 +3855,7 @@
|
|||
"zh-chs": "地址",
|
||||
"zh-cht": "地址",
|
||||
"xloc": [
|
||||
"default.handlebars->29->235"
|
||||
"default.handlebars->29->220"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -4064,7 +4064,7 @@
|
|||
"default-mobile.handlebars->9->250",
|
||||
"default.handlebars->29->1545",
|
||||
"default.handlebars->29->1553",
|
||||
"default.handlebars->29->215",
|
||||
"default.handlebars->29->240",
|
||||
"default.handlebars->29->426",
|
||||
"default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->1"
|
||||
]
|
||||
|
@ -6314,7 +6314,7 @@
|
|||
"zh-cht": "CIRA",
|
||||
"xloc": [
|
||||
"default-mobile.handlebars->9->204",
|
||||
"default.handlebars->29->217",
|
||||
"default.handlebars->29->242",
|
||||
"default.handlebars->29->428"
|
||||
]
|
||||
},
|
||||
|
@ -7530,7 +7530,7 @@
|
|||
"nl": "Wis zoekfilter",
|
||||
"xloc": [
|
||||
"default-mobile.handlebars->9->154",
|
||||
"default.handlebars->29->229"
|
||||
"default.handlebars->29->214"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -8919,8 +8919,8 @@
|
|||
"default-mobile.handlebars->9->2",
|
||||
"default-mobile.handlebars->9->337",
|
||||
"default-mobile.handlebars->9->37",
|
||||
"default.handlebars->29->245",
|
||||
"default.handlebars->29->248",
|
||||
"default.handlebars->29->230",
|
||||
"default.handlebars->29->233",
|
||||
"default.handlebars->29->277",
|
||||
"default.handlebars->29->9",
|
||||
"default.handlebars->29->945",
|
||||
|
@ -9028,7 +9028,7 @@
|
|||
"xloc": [
|
||||
"default-mobile.handlebars->9->255",
|
||||
"default.handlebars->29->1556",
|
||||
"default.handlebars->29->236",
|
||||
"default.handlebars->29->221",
|
||||
"default.handlebars->29->616",
|
||||
"default.handlebars->container->column_l->p21->3->1->meshConnChartDiv->1"
|
||||
]
|
||||
|
@ -9666,7 +9666,7 @@
|
|||
"zh-chs": "创建一个新的设备组。",
|
||||
"zh-cht": "創建一個新的裝置群。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->238"
|
||||
"default.handlebars->29->223"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -11614,7 +11614,7 @@
|
|||
"xloc": [
|
||||
"default-mobile.handlebars->9->160",
|
||||
"default-mobile.handlebars->9->216",
|
||||
"default.handlebars->29->213",
|
||||
"default.handlebars->29->238",
|
||||
"default.handlebars->29->545"
|
||||
]
|
||||
},
|
||||
|
@ -11862,7 +11862,7 @@
|
|||
"xloc": [
|
||||
"default-mobile.handlebars->9->159",
|
||||
"default-mobile.handlebars->9->215",
|
||||
"default.handlebars->29->212",
|
||||
"default.handlebars->29->237",
|
||||
"default.handlebars->29->544"
|
||||
]
|
||||
},
|
||||
|
@ -12134,9 +12134,9 @@
|
|||
"default-mobile.handlebars->9->1",
|
||||
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3->deskstatus",
|
||||
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3->p13Status",
|
||||
"default.handlebars->29->224",
|
||||
"default.handlebars->29->244",
|
||||
"default.handlebars->29->247",
|
||||
"default.handlebars->29->229",
|
||||
"default.handlebars->29->232",
|
||||
"default.handlebars->29->249",
|
||||
"default.handlebars->29->276",
|
||||
"default.handlebars->29->8",
|
||||
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->deskstatus",
|
||||
|
@ -12543,7 +12543,7 @@
|
|||
"zh-chs": "下载MeshCentral Router,一个TCP端口映射工具。",
|
||||
"zh-cht": "下載MeshCentral Router,一個TCP端口映射工具。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->242"
|
||||
"default.handlebars->29->227"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -12583,7 +12583,7 @@
|
|||
"zh-chs": "下载MeshCmd,这是一个多功能的指令执行工具。",
|
||||
"zh-cht": "下載MeshCmd,這是一個多功能的指令執行工具。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->240"
|
||||
"default.handlebars->29->225"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -18029,8 +18029,8 @@
|
|||
"xloc": [
|
||||
"default-mobile.handlebars->9->148",
|
||||
"default.handlebars->29->209",
|
||||
"default.handlebars->29->225",
|
||||
"default.handlebars->29->226"
|
||||
"default.handlebars->29->210",
|
||||
"default.handlebars->29->211"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -18410,7 +18410,7 @@
|
|||
"zh-chs": "英特尔®AMT CIRA已连接并可以使用。",
|
||||
"zh-cht": "Intel® AMT CIRA已連接並可以使用。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->216",
|
||||
"default.handlebars->29->241",
|
||||
"default.handlebars->29->427",
|
||||
"default.handlebars->29->608"
|
||||
]
|
||||
|
@ -18701,7 +18701,7 @@
|
|||
"zh-chs": "英特尔®AMT是可路由的。",
|
||||
"zh-cht": "Intel® AMT是可路由的。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->218",
|
||||
"default.handlebars->29->243",
|
||||
"default.handlebars->29->429"
|
||||
]
|
||||
},
|
||||
|
@ -22004,7 +22004,7 @@
|
|||
"default-mobile.handlebars->9->254",
|
||||
"default.handlebars->29->1028",
|
||||
"default.handlebars->29->1029",
|
||||
"default.handlebars->29->223",
|
||||
"default.handlebars->29->248",
|
||||
"default.handlebars->29->434",
|
||||
"default.handlebars->29->615",
|
||||
"default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->3"
|
||||
|
@ -22109,7 +22109,7 @@
|
|||
"zh-chs": "与设备的MQTT连接已激活。",
|
||||
"zh-cht": "與裝置的MQTT連接已啟動。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->222",
|
||||
"default.handlebars->29->247",
|
||||
"default.handlebars->29->433",
|
||||
"default.handlebars->29->614"
|
||||
]
|
||||
|
@ -22902,7 +22902,7 @@
|
|||
"zh-chs": "已连接网状代理并准备使用。",
|
||||
"zh-cht": "已連接Mesh Agent並準備使用。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->214",
|
||||
"default.handlebars->29->239",
|
||||
"default.handlebars->29->425",
|
||||
"default.handlebars->29->606"
|
||||
]
|
||||
|
@ -22924,7 +22924,7 @@
|
|||
"zh-chs": "网格代理可以经过其他代理作为中继访问得到。",
|
||||
"zh-cht": "Mesh Agent可以經過其他代理作為中繼訪問得到。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->220",
|
||||
"default.handlebars->29->245",
|
||||
"default.handlebars->29->431",
|
||||
"default.handlebars->29->612"
|
||||
]
|
||||
|
@ -23170,7 +23170,7 @@
|
|||
"zh-chs": "MeshCmd",
|
||||
"zh-cht": "MeshCmd",
|
||||
"xloc": [
|
||||
"default.handlebars->29->241",
|
||||
"default.handlebars->29->226",
|
||||
"default.handlebars->29->639",
|
||||
"default.handlebars->29->819"
|
||||
]
|
||||
|
@ -24745,7 +24745,7 @@
|
|||
"zh-chs": "此网格中没有英特尔®AMT设备",
|
||||
"zh-cht": "此網格中沒有Intel® AMT裝置",
|
||||
"xloc": [
|
||||
"default.handlebars->29->230"
|
||||
"default.handlebars->29->215"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -25031,7 +25031,7 @@
|
|||
"zh-chs": "没有一个设备被加入任何一组,请单击一个设备的“组”以添加到一个组中。",
|
||||
"zh-cht": "沒有一個裝置被加入任何一群,請單擊一個裝置的“群”以新增到一個群中。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->227"
|
||||
"default.handlebars->29->212"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -25130,7 +25130,7 @@
|
|||
"zh-cht": "該群中沒有裝置",
|
||||
"xloc": [
|
||||
"default-mobile.handlebars->9->151",
|
||||
"default.handlebars->29->232"
|
||||
"default.handlebars->29->217"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -25152,7 +25152,7 @@
|
|||
"xloc": [
|
||||
"default-mobile.handlebars->9->149",
|
||||
"default-mobile.handlebars->9->153",
|
||||
"default.handlebars->29->228"
|
||||
"default.handlebars->29->213"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -25172,7 +25172,7 @@
|
|||
"zh-chs": "找不到带有标签的设备。",
|
||||
"zh-cht": "找不到帶有標籤的裝置。",
|
||||
"xloc": [
|
||||
"default.handlebars->29->237"
|
||||
"default.handlebars->29->222"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -25490,8 +25490,8 @@
|
|||
"default.handlebars->29->1945",
|
||||
"default.handlebars->29->1949",
|
||||
"default.handlebars->29->1961",
|
||||
"default.handlebars->29->210",
|
||||
"default.handlebars->29->211",
|
||||
"default.handlebars->29->235",
|
||||
"default.handlebars->29->236",
|
||||
"default.handlebars->29->546",
|
||||
"default.handlebars->29->557",
|
||||
"default.handlebars->29->558",
|
||||
|
@ -28875,7 +28875,7 @@
|
|||
"zh-cht": "中繼",
|
||||
"xloc": [
|
||||
"default-mobile.handlebars->9->206",
|
||||
"default.handlebars->29->221",
|
||||
"default.handlebars->29->246",
|
||||
"default.handlebars->29->432"
|
||||
]
|
||||
},
|
||||
|
@ -30662,7 +30662,7 @@
|
|||
"zh-chs": "路由器",
|
||||
"zh-cht": "路由器",
|
||||
"xloc": [
|
||||
"default.handlebars->29->243"
|
||||
"default.handlebars->29->228"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -32875,8 +32875,8 @@
|
|||
"xloc": [
|
||||
"default-mobile.handlebars->9->3",
|
||||
"default.handlebars->29->10",
|
||||
"default.handlebars->29->246",
|
||||
"default.handlebars->29->249",
|
||||
"default.handlebars->29->231",
|
||||
"default.handlebars->29->234",
|
||||
"default.handlebars->29->278",
|
||||
"desktop.handlebars->3->3",
|
||||
"terminal.handlebars->3->3",
|
||||
|
@ -38257,7 +38257,7 @@
|
|||
"default.handlebars->29->1745",
|
||||
"default.handlebars->29->1884",
|
||||
"default.handlebars->29->2067",
|
||||
"default.handlebars->29->234",
|
||||
"default.handlebars->29->219",
|
||||
"default.handlebars->29->671"
|
||||
]
|
||||
},
|
||||
|
@ -41188,8 +41188,8 @@
|
|||
"zh-chs": "加一",
|
||||
"zh-cht": "加一",
|
||||
"xloc": [
|
||||
"default.handlebars->29->231",
|
||||
"default.handlebars->29->233"
|
||||
"default.handlebars->29->216",
|
||||
"default.handlebars->29->218"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
|
||||
.i1 {
|
||||
background: url(../images/icons50.png) 0px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
border: none;
|
||||
|
@ -59,6 +60,7 @@
|
|||
|
||||
.i2 {
|
||||
background: url(../images/icons50.png) -50px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
border: none;
|
||||
|
@ -66,6 +68,7 @@
|
|||
|
||||
.i3 {
|
||||
background: url(../images/icons50.png) -100px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
border: none;
|
||||
|
@ -73,6 +76,7 @@
|
|||
|
||||
.i4 {
|
||||
background: url(../images/icons50.png) -150px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
border: none;
|
||||
|
@ -80,6 +84,7 @@
|
|||
|
||||
.i5 {
|
||||
background: url(../images/icons50.png) -200px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
border: none;
|
||||
|
@ -87,6 +92,7 @@
|
|||
|
||||
.i6 {
|
||||
background: url(../images/icons50.png) -250px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
border: none;
|
||||
|
@ -94,6 +100,7 @@
|
|||
|
||||
.i7 {
|
||||
background: url(../images/icons50.png) -300px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
border: none;
|
||||
|
@ -101,6 +108,7 @@
|
|||
|
||||
.i8 {
|
||||
background: url(../images/icons50.png) -350px 0px;
|
||||
background-image: -webkit-image-set(url(../images/webp/icons50.webp) 1x, url(../images/webp/icons100.webp) 2x);
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
border: none;
|
||||
|
@ -146,15 +154,15 @@
|
|||
float: left;
|
||||
}
|
||||
|
||||
.NotifyIconSmall1 { width:24px; height:24px; background: url(../images/notify24.png) 0px 0px; }
|
||||
.NotifyIconSmall2 { width:24px; height:24px; background: url(../images/notify24.png) -24px 0px; }
|
||||
.NotifyIconSmall3 { width:24px; height:24px; background: url(../images/notify24.png) -48px 0px; }
|
||||
.NotifyIconSmall4 { width:24px; height:24px; background: url(../images/notify24.png) -72px 0px; }
|
||||
.NotifyIconSmall5 { width:24px; height:24px; background: url(../images/notify24.png) -96px 0px; }
|
||||
.NotifyIconSmall6 { width:24px; height:24px; background: url(../images/notify24.png) -120px 0px; }
|
||||
.NotifyIconSmall7 { width:24px; height:24px; background: url(../images/notify24.png) -144px 0px; }
|
||||
.NotifyIconSmall8 { width:24px; height:24px; background: url(../images/notify24.png) -168px 0px; }
|
||||
.NotifyIconSmall9 { width:24px; height:24px; background: url(../images/notify24.png) -192px 0px; }
|
||||
.NotifyIconSmall1 { width:24px; height:24px; background: url(../images/notify24.png) 0px 0px; background-image: -webkit-image-set(url(../images/webp/notify24.webp) 1x, url(../images/webp/notify48.webp) 2x); }
|
||||
.NotifyIconSmall2 { width:24px; height:24px; background: url(../images/notify24.png) -24px 0px; background-image: -webkit-image-set(url(../images/webp/notify24.webp) 1x, url(../images/webp/notify48.webp) 2x); }
|
||||
.NotifyIconSmall3 { width:24px; height:24px; background: url(../images/notify24.png) -48px 0px; background-image: -webkit-image-set(url(../images/webp/notify24.webp) 1x, url(../images/webp/notify48.webp) 2x); }
|
||||
.NotifyIconSmall4 { width:24px; height:24px; background: url(../images/notify24.png) -72px 0px; background-image: -webkit-image-set(url(../images/webp/notify24.webp) 1x, url(../images/webp/notify48.webp) 2x); }
|
||||
.NotifyIconSmall5 { width:24px; height:24px; background: url(../images/notify24.png) -96px 0px; background-image: -webkit-image-set(url(../images/webp/notify24.webp) 1x, url(../images/webp/notify48.webp) 2x); }
|
||||
.NotifyIconSmall6 { width:24px; height:24px; background: url(../images/notify24.png) -120px 0px; background-image: -webkit-image-set(url(../images/webp/notify24.webp) 1x, url(../images/webp/notify48.webp) 2x); }
|
||||
.NotifyIconSmall7 { width:24px; height:24px; background: url(../images/notify24.png) -144px 0px; background-image: -webkit-image-set(url(../images/webp/notify24.webp) 1x, url(../images/webp/notify48.webp) 2x); }
|
||||
.NotifyIconSmall8 { width:24px; height:24px; background: url(../images/notify24.png) -168px 0px; background-image: -webkit-image-set(url(../images/webp/notify24.webp) 1x, url(../images/webp/notify48.webp) 2x); }
|
||||
.NotifyIconSmall9 { width:24px; height:24px; background: url(../images/notify24.png) -192px 0px; background-image: -webkit-image-set(url(../images/webp/notify24.webp) 1x, url(../images/webp/notify48.webp) 2x); }
|
||||
|
||||
.gray {
|
||||
/*filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");*/ /* Firefox 10+, Firefox on Android */
|
||||
|
@ -442,7 +450,7 @@
|
|||
<div id=xdevicesBar style="position:absolute;overflow-y:auto;height:34px;left:0;right:0;bottom:0px;background-color:#aaa">
|
||||
<div style="margin:4px">
|
||||
<span style="width:20px;display:inline-block;text-align:center;cursor:pointer;font-size:16px" onclick=clearSearchInput()><b>X</b></span>
|
||||
<input id=SearchInput type=text placeholder=Filter onchange=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) autocomplete=off style="padding:2px;margin:0;height:20px" />
|
||||
<input id=SearchInput autocomplete=off type=search placeholder=Filter onchange=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) style="padding:2px;margin:0;height:20px" />
|
||||
<label class=noselect><input type=checkbox id=RealNameCheckBox onclick=onRealNameCheckBox() />OS Name</label>
|
||||
<label class=noselect><input type=checkbox id=OnlineCheckBox onclick=onOnlineCheckBox(event) />Online</label>
|
||||
</div>
|
||||
|
@ -2359,9 +2367,7 @@
|
|||
var onDevicesTouchActive = false;
|
||||
var onDevicesScrollnagleTimer = null;
|
||||
function onDevicesScroll() {
|
||||
if (onDevicesScrollnagleTimer != null) { clearTimeout(onDevicesScrollnagleTimer); onDevicesScrollnagleTimer = null; }
|
||||
if (onDevicesTouchActive) return;
|
||||
onDevicesScrollnagleTimer = setTimeout(onDevicesScrollEx, 50);
|
||||
if (onDevicesScrollnagleTimer == null) { onDevicesScrollnagleTimer = setTimeout(onDevicesScrollEx, 250); }
|
||||
}
|
||||
|
||||
function onDeviceTouch(x) {
|
||||
|
@ -4021,7 +4027,7 @@
|
|||
var m = hardware.windows.osinfo;
|
||||
if (m.OSArchitecture) { x += addDetailItem("Architecture", EscapeHtml(m.OSArchitecture), s); }
|
||||
}
|
||||
if (x != '') { sections.push({ name: "Operating System", html: x, img: 'software32.png' }); }
|
||||
if (x != '') { sections.push({ name: "Operating System", html: x, img: 'software' }); }
|
||||
}
|
||||
|
||||
// MeshAgent
|
||||
|
@ -4052,7 +4058,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
if (x != '') { sections.push({ name: "Mesh Agent", html: x, img: 'meshagent32.png' }); }
|
||||
if (x != '') { sections.push({ name: "Mesh Agent", html: x, img: 'meshagent' }); }
|
||||
}
|
||||
|
||||
// Networking
|
||||
|
@ -4094,7 +4100,7 @@
|
|||
x += '</div>';
|
||||
}
|
||||
x += '</table>';
|
||||
if (x != '') { sections.push({ name: "Networking", html: x, img: 'networking64.png' }); }
|
||||
if (x != '') { sections.push({ name: "Networking", html: x, img: 'networking' }); }
|
||||
}
|
||||
|
||||
// Attribute: Intel AMT
|
||||
|
@ -4107,7 +4113,7 @@
|
|||
x += addDetailItem("Provisioning State", ((node.intelamt.state) ? (provisioningStates[node.intelamt.state]) : ('<i>' + "Unknown" + '</i>')) + provisioningMode, s);
|
||||
x += addDetailItem("Security", (node.intelamt.tls == 1) ? "Secured using TLS" : "TLS is not setup", s);
|
||||
x += addDetailItem("Admin Credentials", (node.intelamt.user == null || node.intelamt.user == '') ? "Not Known" : "Known", s);
|
||||
if (x != '') { sections.push({ name: "Intel® Active Management Technology (Intel® AMT)", html: x, img: 'amt32.png' }); }
|
||||
if (x != '') { sections.push({ name: "Intel® Active Management Technology (Intel® AMT)", html: x, img: 'amt' }); }
|
||||
}
|
||||
|
||||
if (hardware.identifiers) {
|
||||
|
@ -4115,7 +4121,7 @@
|
|||
// BIOS
|
||||
if (ident.bios_vendor) { x += addDetailItem("Vendor", EscapeHtml(ident.bios_vendor), s); }
|
||||
if (ident.bios_version) { x += addDetailItem("Version", EscapeHtml(ident.bios_version), s); }
|
||||
if (x != '') { sections.push({ name: "BIOS", html: x, img: 'chip32.png' }); }
|
||||
if (x != '') { sections.push({ name: "BIOS", html: x, img: 'chip' }); }
|
||||
|
||||
// Motherboard
|
||||
x = '';
|
||||
|
@ -4126,7 +4132,7 @@
|
|||
if (ident.product_uuid) { x += addDetailItem("Identifier", EscapeHtml(ident.product_uuid), s); }
|
||||
if (ident.cpu_name) { x += addDetailItem("CPU", EscapeHtml(ident.cpu_name).split('(TM)').join('™').split('(R)').join('®'), s); }
|
||||
if (ident.gpu_name) { for (var i in ident.gpu_name) { x += addDetailItem("GPU", EscapeHtml(ident.gpu_name[i]).split('(TM)').join('™').split('(R)').join('®'), s); } }
|
||||
if (x != '') { sections.push({ name: "Motherboard", html: x, img: 'motherboard32.png' }); }
|
||||
if (x != '') { sections.push({ name: "Motherboard", html: x, img: 'motherboard' }); }
|
||||
}
|
||||
|
||||
if (hardware.windows) {
|
||||
|
@ -4147,7 +4153,7 @@
|
|||
}
|
||||
x += '</table>';
|
||||
|
||||
if (x != '') { sections.push({ name: "Memory", html: x, img: 'ram32.png' }); }
|
||||
if (x != '') { sections.push({ name: "Memory", html: x, img: 'ram' }); }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4174,7 +4180,7 @@
|
|||
}
|
||||
x += '</table>';
|
||||
|
||||
if (x != '') { sections.push({ name: "Storage", html: x, img: 'storage32.png' }); }
|
||||
if (x != '') { sections.push({ name: "Storage", html: x, img: 'storage' }); }
|
||||
}
|
||||
|
||||
// Render the sections
|
||||
|
@ -4184,7 +4190,7 @@
|
|||
x += '<div class=DevSt style=margin-bottom:3px;margin-left:4px><b>' + sections[i].name + '</b></div><div style=margin-bottom:10px;margin-left:4px>' + sections[i].html + '</div>';
|
||||
} else {
|
||||
x += '<table style=width:100%><tr>';
|
||||
x += '<td style=width:32px;vertical-align:top><img src=images/details/' + sections[i].img + ' border=0 width=32 /></td>'; // height=12
|
||||
x += '<td style=width:32px;vertical-align:top><img src=images/details/' + sections[i].img + '32.png srcset="images/details/' + sections[i].img + '64.png 2x" border=0 width=32 /></td>'; // height=12
|
||||
x += '<td><div class=DevSt style=margin-bottom:3px;margin-left:4px><b>' + sections[i].name + '</b></div><div style=margin-bottom:10px;margin-left:4px>' + sections[i].html + '</div></td>';
|
||||
x += '</tr></table>';
|
||||
}
|
||||
|
|
|
@ -246,7 +246,7 @@
|
|||
<td id=devListToolbar class=style14 style="display:none">
|
||||
<input type="button" id="SelectAllButton" onclick="selectallButtonFunction();" value="Select All" />
|
||||
<input type=button id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />
|
||||
<input id=SearchInput type=text placeholder=Filter onchange=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) autocomplete=off onfocus=onSearchFocus(1) onblur=onSearchFocus(0) />
|
||||
<input id=SearchInput type=search autocomplete=off placeholder=Filter onchange=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) />
|
||||
<select id=DevFilterSelect onchange=onOnlineCheckBox(event) title="Device Filter">
|
||||
<option value=0>All</option>
|
||||
<option value=1>Online</option>
|
||||
|
@ -267,10 +267,10 @@
|
|||
<input type="button" onclick="disconnectAllKvmFunction()" value="Disconnect All" />
|
||||
<label><input type="checkbox" id="autoConnectDesktopCheckbox" onclick="autoConnectDesktops(event)" title="Automatic connect" />Auto </label>
|
||||
<input type="button" onclick="showMultiDesktopSettings()" value="Settings" />
|
||||
<input id=KvmSearchInput type=text placeholder=Filter onchange=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) autocomplete=off onfocus=onSearchFocus(1) onblur=onSearchFocus(0) />
|
||||
<input id=KvmSearchInput type=search placeholder=Filter onchange=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) autocomplete=off onfocus=onSearchFocus(1) onblur=onSearchFocus(0) />
|
||||
</td>
|
||||
<td id=devMapToolbar class=style14 style="display:none">
|
||||
<input type=text id=mapSearchLocation placeholder="Search Location" onfocus=onMapSearchFocus(1) onblur=onMapSearchFocus(0) />
|
||||
<input type=search id=mapSearchLocation placeholder="Search Location" onfocus=onMapSearchFocus(1) onblur=onMapSearchFocus(0) />
|
||||
<input type=button value=Search title="Search for location" onclick=getSearchLocation() />
|
||||
<input type=button id=refreshmap title="Reset map view" value=Reset onclick=refreshMap(false,true) />
|
||||
</td>
|
||||
|
@ -411,7 +411,7 @@
|
|||
<input type=button id=UsersSelectAllButton onclick="p3usersSelectallButtonFunction()" value="Select All" />
|
||||
<input type=button id=UsersGroupActionButton disabled="disabled" value="Group Action" onclick=p3usersGroupActionFunction() />
|
||||
<input id=UserNewAccountButton type=button onclick=showCreateNewAccountDialog() value="New Account..." />
|
||||
<input id=UserSearchInput type=text style=width:120px;margin-left:6px placeholder=Filter onchange=onUserSearchInputChanged() onkeyup=onUserSearchInputChanged() autocomplete=off onfocus=onUserSearchFocus(1) onblur=onUserSearchFocus(0) />
|
||||
<input id=UserSearchInput type=search style=width:120px;margin-left:6px placeholder=Filter onchange=onUserSearchInputChanged() onkeyup=onUserSearchInputChanged() autocomplete=off onfocus=onUserSearchFocus(1) onblur=onUserSearchFocus(0) />
|
||||
</div>
|
||||
</td>
|
||||
<td class="h2"></td>
|
||||
|
@ -1299,7 +1299,6 @@
|
|||
var logoutControls = JSON.parse(decodeURIComponent('{{{logoutControls}}}'));
|
||||
var authCookieRenewTimer = null;
|
||||
var multiDesktop = {};
|
||||
var multiDesktopFilter = null;
|
||||
var serverPublicNamePort = '{{{serverDnsName}}}:{{{serverPublicPort}}}';
|
||||
var amtScanResults = null;
|
||||
var debugmode = 0;
|
||||
|
@ -1329,6 +1328,7 @@
|
|||
var xtermfit = null;
|
||||
var xtermResizeTimer = null;
|
||||
var miscState = {};
|
||||
var checkedNodeids = {};
|
||||
|
||||
// Console Message Display Timers
|
||||
var p11DeskConsoleMsgTimer = null;
|
||||
|
@ -2853,6 +2853,27 @@
|
|||
if (node.rname) { node.rnamel = node.rname.toLowerCase(); } else { node.rnamel = node.namel; }
|
||||
if (message.event.node.icon) { node.icon = message.event.node.icon; }
|
||||
|
||||
// Check if this device has changed device group
|
||||
if (message.event.node.meshid != node.meshid) {
|
||||
if ((meshes[message.event.node.meshid] == null) && ((userinfo.links == null) || (userinfo.links[node._id] == null))) {
|
||||
// We don't see the new mesh, remove this device
|
||||
// TODO: Correctly disconnect from this node (Desktop/Terminal/Files...)
|
||||
if ((currentNode != null) && (currentNode._id == node._id)) {
|
||||
if ((xxcurrentView >= 10) && (xxcurrentView < 20) && !IsNodeViewable(currentNode)) { currentNode = null; setDialogMode(0); go(1); }
|
||||
}
|
||||
var index = -1;
|
||||
for (var i in nodes) { if (nodes[i]._id == message.event.nodeid) { index = i; break; } }
|
||||
nodes.splice(index, 1);
|
||||
|
||||
mainUpdate(4 | 16);
|
||||
} else {
|
||||
// We see the new mesh, move this device
|
||||
node.meshid = message.event.node.meshid;
|
||||
node.meshnamel = meshes[message.event.node.meshid]?meshes[message.event.node.meshid].name.toLowerCase():'*';
|
||||
mainUpdate(1 | 2 | 4);
|
||||
}
|
||||
}
|
||||
|
||||
// Web page update
|
||||
updateDeviceViewDevice(node);
|
||||
mainUpdate(2 | 8 | 16);
|
||||
|
@ -2871,7 +2892,9 @@
|
|||
// We don't see the new mesh, remove this device
|
||||
|
||||
// TODO: Correctly disconnect from this node (Desktop/Terminal/Files...)
|
||||
if ((currentNode != null) && (currentNode._id == node._id)) {
|
||||
if ((xxcurrentView >= 10) && (xxcurrentView < 20) && !IsNodeViewable(currentNode)) { currentNode = null; setDialogMode(0); go(1); }
|
||||
}
|
||||
nodes.splice(index, 1);
|
||||
mainUpdate(4 | 16);
|
||||
} else {
|
||||
|
@ -3441,12 +3464,6 @@
|
|||
else if (sort == 1) { nodes.sort(powerSort); }
|
||||
else if (sort == 2) { if (showRealNames == true) { nodes.sort(deviceHostSort); } else { nodes.sort(deviceSort); } }
|
||||
|
||||
// Save the list of currently checked nodeid's
|
||||
var checkedNodeids = [], elements = document.getElementsByClassName('DeviceCheckbox'), checkcount = 0;
|
||||
for (var i=0;i<elements.length;i++) { if (elements[i].checked) { checkedNodeids.push(elements[i].value); } }
|
||||
if ((oldviewmode < 3) && (view == 3)) { multiDesktopFilter = checkedNodeids; }
|
||||
else if ((oldviewmode == 3) && (view < 3)) { checkedNodeids = multiDesktopFilter; }
|
||||
|
||||
// Compute the width of the device view.
|
||||
var totalDeviceViewWidth = Q('column_l').clientWidth - 60;
|
||||
var deviceBoxWidth = Math.floor(totalDeviceViewWidth / 301);
|
||||
|
@ -3525,95 +3542,9 @@
|
|||
var collapsed = (sort != 3) & (sort != 4) & CollapsedGroups[collapseName];
|
||||
r += '<tr name=xxdevice2 colname=DevxCol' + collapseName + ' style=height:20px' + (collapsed?';display:none':'') + ' id=xv2' + node._id + '></tr>';
|
||||
} else if ((view == 3) && (node.conn & 1) && (((meshrights & 8) || (meshrights & 256)) != 0) && ((node.agent.caps & 1) != 0)) { // Check if we have rights and agent is capable of KVM.
|
||||
if ((multiDesktopFilter) && ((multiDesktopFilter.length == 0) || (multiDesktopFilter.indexOf('devid_' + node._id) >= 0))) {
|
||||
var title = EscapeHtml(node.name);
|
||||
if (title.length == 0) { title = '<i>' + "None" + '</i>'; }
|
||||
if ((node.rname != null) && (node.rname.length > 0)) { title += ' / ' + EscapeHtml(node.rname); }
|
||||
var name = EscapeHtml(node.name);
|
||||
if (showRealNames == true && node.rname != null) name = EscapeHtml(node.rname);
|
||||
if (name.length == 0) { name = '<i>' + "None" + '</i>'; }
|
||||
|
||||
// Add device notification icons
|
||||
var devNotify = '', devNotifySub = '';
|
||||
|
||||
// This device is "starred"
|
||||
if (stars[node._id] == 1) {
|
||||
if (view == 2) {
|
||||
devNotifySub += '<img class=deviceNotifySmallDotSub src=images/icon-star-notify-10.png width=10 height=10>';
|
||||
} else {
|
||||
devNotifySub += '<img class=deviceNotifyDotSub src=images/icon-star-notify-16.png width=16 height=16>';
|
||||
}
|
||||
}
|
||||
|
||||
// This device has session information
|
||||
if (node.sessions != null) {
|
||||
// Display any agent messages
|
||||
if (node.sessions.msg != null) {
|
||||
if (view == 2) {
|
||||
devNotifySub += '<div onclick=showDeviceMessages(\'' + node._id + '\',null,event) style="width:10;height:10" class=deviceNotifySmallDotSub></div>';
|
||||
} else {
|
||||
devNotifySub += '<div onclick=showDeviceMessages(\'' + node._id + '\',null,event) style="width:16;height:16" class=deviceNotifyDotSub>' + Object.keys(node.sessions.msg).length + '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
// Sessions are active
|
||||
if ((node.sessions.kvm != null) || (node.sessions.terminal != null) || (node.sessions.files != null) || (node.sessions.tcp != null) || (node.sessions.udp != null)) {
|
||||
if (view == 2) {
|
||||
devNotifySub += '<img onclick=showDeviceSessions(\'' + node._id + '\',null,event) class=deviceNotifySmallDotSub src=images/icon-relay-notify10.png width=10 height=10>';
|
||||
} else {
|
||||
devNotifySub += '<img onclick=showDeviceSessions(\'' + node._id + '\',null,event) class=deviceNotifyDotSub src=images/icon-relay-notify.png width=16 height=16>';
|
||||
}
|
||||
}
|
||||
|
||||
// Help is required
|
||||
if (node.sessions.help != null) {
|
||||
if (view == 2) {
|
||||
devNotifySub += '<img onclick=showDeviceHelpRequests(\'' + node._id + '\',null,event) class=deviceNotifySmallDotSub src=images/icon-help-notify-10.png width=10 height=10>';
|
||||
} else {
|
||||
devNotifySub += '<img onclick=showDeviceHelpRequests(\'' + node._id + '\',null,event) class=deviceNotifyDotSub src=images/icon-help-notify-16.png width=16 height=16>';
|
||||
}
|
||||
}
|
||||
|
||||
// Battery state
|
||||
if ((node.sessions.battery != null) && (view == 1)) {
|
||||
var bat = node.sessions.battery;
|
||||
var statestr = '';
|
||||
if (bat.state == 'ac') { statestr = "Device is plugged-in"; }
|
||||
if (bat.state == 'dc') { statestr = "Device is battery powered"; }
|
||||
|
||||
var levelstr = '', levelnum = -1;
|
||||
if ((typeof bat.level == 'number') && (bat.level >= 0) && (bat.level <= 100)) {
|
||||
levelstr = bat.level + '%';
|
||||
levelnum = (Math.floor((bat.level + 10) / 25) + 1);
|
||||
if (levelnum > 5) { lvl = 5; }
|
||||
if (bat.state == 'ac') { if (bat.level == 100) { levelnum = 11; } else { levelnum += 5; } }
|
||||
}
|
||||
|
||||
if (levelnum > 0) {
|
||||
devNotify += '<div class="deviceBatterySmall deviceBatterySmall' + levelnum + '" title="' + ((statestr != null)?(statestr + ', ' + levelstr):levelstr) + '"></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add any device icons
|
||||
if (devNotifySub != '') {
|
||||
if (view == 2) {
|
||||
devNotify += '<div class=deviceNotifySmallDot>' + devNotifySub + '</div>';
|
||||
} else {
|
||||
devNotify += '<div class=deviceNotifyDot>' + devNotifySub + '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
// Node
|
||||
var icon = node.icon;
|
||||
if ((!node.conn) || (node.conn == 0)) { icon += ' gray'; }
|
||||
|
||||
// Draw the device and canvas
|
||||
r += '<div id=devs cmenu=devsContentMenu style=display:inline-block;position:relative;margin:1px;background-color:lightgray;border-radius:5px;position:relative><div tabindex=0 style=padding:3px;cursor:pointer onclick=gotoDevice(\'' + node._id + '\',11,null,event) onkeypress="if (event.key==\'Enter\') gotoDevice(\'' + node._id + '\',11,null,event)">' + devNotify;
|
||||
//r += '<input class="' + node.meshid + ' DeviceCheckbox" onclick=p1updateInfo() value=devid_' + node._id + ' type=checkbox style=float:left>';
|
||||
r += '<div class="j' + icon + '" style=width:16px;float:left></div> ' + name + '</div>';
|
||||
r += '<span onclick=gotoDevice(\'' + node._id + '\',null,null,event)></span><div id=xkvmid_' + node._id.split('/')[2] + '><div id=skvmid_' + node._id.split('/')[2] + ' tabindex=0 style="position:absolute;color:white;left:5px;top:27px;text-shadow:0px 0px 5px #000;z-index:1000;cursor:default" onclick=toggleKvmDevice(\'' + node._id + '\') onkeypress="if (event.key==\'Enter\') toggleKvmDevice(\'' + node._id + '\')">' + "Disconnected" + '</div></div>';
|
||||
r += '</div>';
|
||||
// Draw the device (TODO: See if we can replace this with a standin in the future)
|
||||
if ((Object.keys(checkedNodeids).length == 0) || checkedNodeids[node._id]) {
|
||||
r += updateDeviceViewHtml(3, null, node);
|
||||
kvmDivs.push(node._id);
|
||||
}
|
||||
}
|
||||
|
@ -3741,10 +3672,6 @@
|
|||
QH('xdevices', r);
|
||||
deviceHeaderSet();
|
||||
|
||||
// Re-check nodeid's
|
||||
var elements = document.getElementsByClassName('DeviceCheckbox'), checkcount = 0;
|
||||
if (checkedNodeids) { for (var i=0;i<elements.length;i++) { elements[i].checked = (checkedNodeids.indexOf(elements[i].value) >= 0); } }
|
||||
|
||||
for (var i in deviceHeaders) { QH(i, deviceHeaders[i]); }
|
||||
for (var i in deviceHeadersTitles) { Q(i).title = deviceHeadersTitles[i]; }
|
||||
p1updateInfo();
|
||||
|
@ -3835,7 +3762,7 @@
|
|||
}
|
||||
|
||||
function onDevicesScrollEx() {
|
||||
onDevicesScrollnagleTimer = null;
|
||||
if (onDevicesScrollnagleTimer != null) { clearTimeout(onDevicesScrollnagleTimer); onDevicesScrollnagleTimer = null; }
|
||||
var visibleTop = Q('xdevices').scrollTop - 200, visibleBottom = Q('xdevices').scrollTop + Q('xdevices').clientHeight + 200;
|
||||
var view = Q('viewselect').value, devdivs = document.getElementsByName('xxdevice' + view);
|
||||
for (var i = 0; i < devdivs.length; i++) {
|
||||
|
@ -3855,18 +3782,17 @@
|
|||
if (typeof node == 'string') { node = getNodeFromId(node); }
|
||||
if (node == null) return;
|
||||
var devdiv = Q('xv' + view + node._id);
|
||||
if (devdiv.innerHTML != '') { updateDeviceViewHtml(view, devdiv, node); } // Only update if the device is visible
|
||||
if ((devdiv != null) && (devdiv.innerHTML != '')) { updateDeviceViewHtml(view, devdiv, node); } // Only update if the device is visible
|
||||
}
|
||||
|
||||
function updateDeviceViewHtml(view, div, node) {
|
||||
var deviceBoxWidth = div.clientWidth;
|
||||
|
||||
var title = EscapeHtml(node.name);
|
||||
if (title.length == 0) { title = '<i>' + "None" + '</i>'; }
|
||||
if ((node.rname != null) && (node.rname.length > 0)) { title += ' / ' + EscapeHtml(node.rname); }
|
||||
var name = EscapeHtml(node.name);
|
||||
if (showRealNames == true && node.rname != null) name = EscapeHtml(node.rname);
|
||||
if (name.length == 0) { name = '<i>' + "None" + '</i>'; }
|
||||
if (((view == 1) && (div.parentNode.style['display'] == 'none')) || ((view == 2) && (div.style['display'] == 'none'))) { div.innerHTML = ''; return; } // If this section is collapsed, don't render
|
||||
|
||||
// Add device notification icons
|
||||
var devNotify = '', devNotifySub = '';
|
||||
|
@ -3944,8 +3870,8 @@
|
|||
if ((!node.conn) || (node.conn == 0)) { icon += ' gray'; }
|
||||
|
||||
if (view == 1) {
|
||||
div.innerHTML = '<div id=devs cmenu=devsContentMenu onmouseover=devMouseHover(this,1) onmouseout=devMouseHover(this,0) style=width:100%;height:100%><div style=width:22px;height:50%;float:left;padding-top:12px><input class="' + node.meshid + ' DeviceCheckbox" onclick=p1updateInfo() value=devid_' + node._id + ' type=checkbox></div><div style=height:100%;cursor:pointer tabindex=0 onclick=gotoDevice(\'' + node._id + '\',null,null,event) onkeypress="if (event.key==\'Enter\') gotoDevice(\'' + node._id + '\',null,null,event)"><div class="i' + icon + '" style=width:50px;float:left></div><div style=height:100%><div class=g1></div><div class=e2><div class=e1 style=width:' + (deviceBoxWidth - 100) + 'px title="' + title + '">' + name + '</div><div>' + NodeStateStr(node) + '</div></div><div class=g2></div></div></div>' + devNotify + '</div>';
|
||||
} else {
|
||||
div.innerHTML = '<div id=devs cmenu=devsContentMenu onmouseover=devMouseHover(this,1) onmouseout=devMouseHover(this,0) style=width:100%;height:100%><div style=width:22px;height:50%;float:left;padding-top:12px><input class="' + node.meshid + ' DeviceCheckbox" onchange=p1devcheck(event) value=devid_' + node._id + ' type=checkbox ' + (checkedNodeids[node._id]?' checked':'') + '></div><div style=height:100%;cursor:pointer tabindex=0 onclick=gotoDevice(\'' + node._id + '\',null,null,event) onkeypress="if (event.key==\'Enter\') gotoDevice(\'' + node._id + '\',null,null,event)"><div class="i' + icon + '" style=width:50px;float:left></div><div style=height:100%><div class=g1></div><div class=e2 style=width:' + ((div.clientWidth) - 100) + 'px><div class=e1 title="' + title + '">' + name + '</div><div>' + NodeStateStr(node) + '</div></div><div class=g2></div></div></div>' + devNotify + '</div>';
|
||||
} else if (view == 2) {
|
||||
var states = [];
|
||||
if (node.conn) {
|
||||
if ((node.conn & 1) != 0) { states.push('<span title="' + "Mesh agent is connected and ready for use." + '">' + "Agent" + '</span>'); }
|
||||
|
@ -3959,18 +3885,21 @@
|
|||
if (sort == 1) { collapseName = ('pwr:' + (node.pwr?node.pwr:0)); }
|
||||
else if ((sort == 3) || (sort == 4)) { collapseName = 'tag:**xx**xx*TaG*xx**xx**'; }
|
||||
var collapsed = (sort != 3) & (sort != 4) & CollapsedGroups[collapseName];
|
||||
//r += '<tr name=DevxCol' + collapseName + (collapsed?' style=display:none':'') + '><td style=position:relative><div id=devs cmenu=devsContentMenu class=bar18 tabindex=0 onmouseover=devMouseHover(this,1) onmouseout=devMouseHover(this,0) style=height:18px;width:100%;font-size:medium onkeypress="if (event.key==\'Enter\') gotoDevice(\'' + node._id + '\',null,null,event)">';
|
||||
var r = '<td style=position:relative><div id=devs cmenu=devsContentMenu class=bar18 tabindex=0 onmouseover=devMouseHover(this,1) onmouseout=devMouseHover(this,0) style=height:18px;width:100%;font-size:medium onkeypress="if (event.key==\'Enter\') gotoDevice(\'' + node._id + '\',null,null,event)">';
|
||||
r += '<div class=deviceBarCheckbox><input class="' + node.meshid + ' DeviceCheckbox" onclick=p1updateInfo() value=devid_' + node._id + ' type=checkbox></div>';
|
||||
r += '<div class=deviceBarCheckbox><input class="' + node.meshid + ' DeviceCheckbox" value=devid_' + node._id + ' type=checkbox onchange=p1devcheck(event) ' + (checkedNodeids[node._id]?' checked':'') + '></div>';
|
||||
r += '<div class=deviceBarIcon onclick=gotoDevice(\'' + node._id + '\',null,null,event)><div class="j' + icon + '" style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>';
|
||||
r += '<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>';
|
||||
r += '<div class=style10 style=cursor:pointer;font-size:14px title="' + title + '" onclick=gotoDevice(\'' + node._id + '\',null,null,event)><span style=width:300px>' + name + '</span></div></div>' + devNotify + '</td>';
|
||||
r += '<td style=text-align:center>' + getUserShortStr(node);
|
||||
r += '<td style=text-align:center>' + (node.ip != null ? node.ip : '');
|
||||
r += '<td style=text-align:center>' + states.join(' + ');
|
||||
//r += '<td style=text-align:center>' + (node.pwr != null ? powerStateStrings[node.pwr] : '');
|
||||
//r += '</tr>';
|
||||
r += '<td style=text-align:center>' + getUserShortStr(node) + '<td style=text-align:center>' + (node.ip != null ? node.ip : '') + '<td style=text-align:center>' + states.join(' + ');
|
||||
div.innerHTML = r;
|
||||
} else if (view == 3) {
|
||||
// Draw the device and canvas
|
||||
var r = '<div id=devs cmenu=devsContentMenu style=display:inline-block;position:relative;margin:1px;background-color:lightgray;border-radius:5px;position:relative><div tabindex=0 style=padding:3px;cursor:pointer onclick=gotoDevice(\'' + node._id + '\',11,null,event) onkeypress="if (event.key==\'Enter\') gotoDevice(\'' + node._id + '\',11,null,event)">' + devNotify;
|
||||
//r += '<input class="' + node.meshid + ' DeviceCheckbox" onclick=p1updateInfo() value=devid_' + node._id + ' type=checkbox style=float:left>';
|
||||
r += '<div class="j' + icon + '" style=width:16px;float:left></div> ' + name + '</div>';
|
||||
r += '<span onclick=gotoDevice(\'' + node._id + '\',null,null,event)></span><div id=xkvmid_' + node._id.split('/')[2] + '><div id=skvmid_' + node._id.split('/')[2] + ' tabindex=0 style="position:absolute;color:white;left:5px;top:27px;text-shadow:0px 0px 5px #000;z-index:1000;cursor:default" onclick=toggleKvmDevice(\'' + node._id + '\') onkeypress="if (event.key==\'Enter\') toggleKvmDevice(\'' + node._id + '\')">' + "Disconnected" + '</div></div>';
|
||||
r += '</div>';
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4062,6 +3991,7 @@
|
|||
}
|
||||
Q('DevxColImg' + id).src = x?'images/c2.png':'images/c1.png';
|
||||
putstore('_collapse', JSON.stringify(CollapsedGroups));
|
||||
onDevicesScrollEx();
|
||||
}
|
||||
|
||||
function toggleKvmDevice(node) {
|
||||
|
@ -4091,7 +4021,7 @@
|
|||
var count = 0;
|
||||
for (var i in nodes) {
|
||||
var node = nodes[i], nodeid = nodes[i]._id;
|
||||
if ((multiDesktop[nodeid] == null) && ((multiDesktopFilter.length == 0) || (multiDesktopFilter.indexOf('devid_' + nodeid) >= 0))) {
|
||||
if ((multiDesktop[nodeid] == null) && ((Object.keys(checkedNodeids).length == 0) || checkedNodeids[nodeid])) {
|
||||
var rights = GetNodeRights(node);
|
||||
if ((rights & 8) || (rights & 256)) { // Requires remote control rights or desktop view only rights
|
||||
//var conn = 0;
|
||||
|
@ -4105,7 +4035,7 @@
|
|||
|
||||
// Perform connect all
|
||||
for (var i in nodes) {
|
||||
if ((nodes[i].v == true) && (multiDesktop[nodes[i]._id] == null) && ((multiDesktopFilter.length == 0) || (multiDesktopFilter.indexOf('devid_' + nodes[i]._id) >= 0))) {
|
||||
if ((nodes[i].v == true) && (multiDesktop[nodes[i]._id] == null) && ((Object.keys(checkedNodeids).length == 0) || checkedNodeids[nodes[i]._id])) {
|
||||
toggleKvmDevice(nodes[i]._id);
|
||||
}
|
||||
}
|
||||
|
@ -4579,16 +4509,23 @@
|
|||
}
|
||||
|
||||
function selectallButtonFunction() {
|
||||
var elements = document.getElementsByClassName('DeviceCheckbox'), checkcount = 0;
|
||||
for (var i=0;i<elements.length;i++) { if (elements[i].checked === true) checkcount++; }
|
||||
var elements = document.getElementsByClassName('DeviceCheckbox'), checkcount = Object.keys(checkedNodeids).length;
|
||||
for (var i = 0; i < elements.length; i++) { elements[i].checked = (checkcount == 0); }
|
||||
checkedNodeids = {};
|
||||
if (checkcount == 0) {
|
||||
var devdivs = document.getElementsByName('xxdevice' + Q('viewselect').value);
|
||||
for (var i = 0; i < devdivs.length; i++) { checkedNodeids[devdivs[i].id.substring(3)] = 1; }
|
||||
}
|
||||
p1updateInfo();
|
||||
}
|
||||
|
||||
function p1devcheck(e) {
|
||||
if (e.srcElement.checked) { checkedNodeids[e.srcElement.value.substring(6)] = 1; } else { delete checkedNodeids[e.srcElement.value.substring(6)]; }
|
||||
p1updateInfo();
|
||||
}
|
||||
|
||||
function p1updateInfo() {
|
||||
var elements = document.getElementsByClassName('DeviceCheckbox'), checkcount = 0;
|
||||
for (var i=0;i<elements.length;i++) { if (elements[i].checked === true) { checkcount++; } }
|
||||
if (checkcount > 0) {
|
||||
if (Object.keys(checkedNodeids).length > 0) {
|
||||
QE('GroupActionButton', true);
|
||||
Q('SelectAllButton').value = "Select None";
|
||||
QV('cxmdesktop', true);
|
||||
|
@ -4636,16 +4573,13 @@
|
|||
setDialogMode(2, "Group Action", 3, groupActionFunctionEx, x);
|
||||
}
|
||||
|
||||
// Get the list of checked devices, removes any duplicates.
|
||||
function getCheckedDevices() {
|
||||
var nodeids = [], elements = document.getElementsByClassName('DeviceCheckbox'), checkcount = 0;
|
||||
for (var i=0;i<elements.length;i++) { if (elements[i].checked) { if (elements[i].value) { var nid = elements[i].value.substring(6); if (nodeids.indexOf(nid) == -1) { nodeids.push(nid); } } } }
|
||||
return nodeids;
|
||||
}
|
||||
// Get the list of checked devices
|
||||
function getCheckedDevices() { return Object.keys(checkedNodeids); }
|
||||
|
||||
function uncheckAllDevices() {
|
||||
var elements = document.getElementsByClassName('DeviceCheckbox');
|
||||
for (var i=0;i<elements.length;i++) { elements[i].checked = false; }
|
||||
checkedNodeids = {};
|
||||
}
|
||||
|
||||
function groupActionFunctionEx() {
|
||||
|
@ -4778,7 +4712,6 @@
|
|||
csv += '"' + n._id.split(',').join('') + '","' + n.name.split(',').join('') + '","' + (n.rname?(n.rname.split(',').join('')):'') + '","' + (n.host?(n.host.split(',').join('')):'') + '","' + n.icon + '","' + (n.ip?n.ip:'') + '","' + (n.osdesc?(n.osdesc.split(',').join('')):'') + '","' + n.state + '","' + meshes[n.meshid].name.split(',').join('') + '","' + (n.conn?n.conn:'') + '","' + (n.pwr?n.pwr:'') + '"\r\n';
|
||||
}
|
||||
saveAs(new Blob([csv], { type: 'application/octet-stream' }), "devicelist.csv");
|
||||
uncheckAllDevices();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -4786,7 +4719,6 @@
|
|||
var chkNodeIds = getCheckedDevices(), r = [];
|
||||
for (var i in chkNodeIds) { r.push(getNodeFromId(chkNodeIds[i])); }
|
||||
saveAs(new Blob([JSON.stringify(r, null, 2)], { type: 'application/octet-stream' }), "devicelist.json");
|
||||
uncheckAllDevices();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -5001,9 +4933,16 @@
|
|||
var meshid = contextelement.attributes.onclick.value.substring(10, contextelement.attributes.onclick.value.length - 2);
|
||||
var elements = document.getElementsByClassName('DeviceCheckbox');
|
||||
if ((action == 1) || (action == 2)) {
|
||||
// Change the visible check boxes
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
if ((elements[i].attributes) && (elements[i].attributes['class']['value'].split(' ')[0] == meshid)) { elements[i].checked = (action == 1); }
|
||||
}
|
||||
// Update the list of checked nodes
|
||||
if (action == 1) {
|
||||
for (var i in nodes) { if (nodes[i].meshid == meshid) { checkedNodeids[nodes[i]._id] = 1; } }
|
||||
} else if (action == 2) {
|
||||
for (var i in checkedNodeids) { if (getNodeFromId(i).meshid == meshid) { delete checkedNodeids[i]; } }
|
||||
}
|
||||
}
|
||||
//if (action == 3) { window.location = "multidesktop.aspx?mesh=" + meshid + "&auto=1"; }
|
||||
p1updateInfo();
|
||||
|
|