Lots of changes
- ✅ Feedback van dataSensor array - ✅ dataSliders min/max and unit - ✅ Camera before Unity - ✅ Restart knop buiten service mode - ✅ Operator phonenumber button - ✅ Gracefull shutdown - ✅ Out of service control
This commit is contained in:
5
.vscode/launch.json
vendored
5
.vscode/launch.json
vendored
@@ -11,7 +11,10 @@
|
|||||||
"skipFiles": [
|
"skipFiles": [
|
||||||
"<node_internals>/**"
|
"<node_internals>/**"
|
||||||
],
|
],
|
||||||
"program": "${workspaceFolder}\\dist\\Entry.js"
|
"program": "${workspaceFolder}\\dist\\Entry.js",
|
||||||
|
"args": [
|
||||||
|
"--no-reboot"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
13
TODO.md
Normal file
13
TODO.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
- **SMS Service met log**
|
||||||
|
- ✅ Feedback van dataSensor array
|
||||||
|
- ✅ dataSliders min/max and unit
|
||||||
|
- ✅ Camera before Unity
|
||||||
|
- ✅ Restart knop buiten service mode
|
||||||
|
- ✅ Operator phonenumber button
|
||||||
|
- ✅ Gracefull shutdown
|
||||||
|
- ✅ Out of service control
|
||||||
|
|
||||||
|
Checken met Sjoerd
|
||||||
|
|
||||||
|
- Sliders opslaan
|
||||||
|
- Camera error code
|
||||||
2
dist/CameraRunner.js.map
vendored
2
dist/CameraRunner.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"CameraRunner.js","sourceRoot":"","sources":["../src/CameraRunner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA8C;AAE9C,iCAA8C;AAE9C,IAAM,MAAM,GAAG,gBAAgB,CAAC;AAChC;IAgBC,sBAAY,IAAU;QAXtB,UAAK,GAAiB,cAAc,CAAC;QAIrC,kBAAa,GAAkB;YAC9B,KAAK,EAAE,SAAS;YAEhB,SAAS,EAAE,CAAC,CAAC;YACb,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;SACjC,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,6BAAM,GAAN,UAAO,OAAe;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACrC,QAAQ,OAAO,EAAE,CAAC;YACjB,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ;gBACZ,IAAM,QAAQ,GAGD,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,OAAO,QAAQ,KAAK,UAAU;oBAAE,OAAO;gBAE3C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACpC,MAAM;QACR,CAAC;IACF,CAAC;IAED,kCAAW,GAAX,UACC,OAAe,EACf,QAAoE;QAEpE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YAChD,OAAO,QAAQ,CAAC;gBACf,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,+BAA+B;aACxC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,OAAO,EACP,UAAC,QAAgD;YAChD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC,CACD,CAAC;IACH,CAAC;IAED,qCAAc,GAAd;QACC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,+BAAQ,GAAR;QACC,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YAEjB,aAAa,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC;IACH,CAAC;IAED,8BAAO,GAAP,UAAQ,OAAe,EAAE,KAAa,EAAE,KAA8B;QAA9B,sBAAA,EAAA,gBAA8B;QACrE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,cAAc;YAC/C,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,KAAK,CAAC,CAAC;;YACnC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,KAAK,CAAC,CAAC;IAC5C,CAAC;IAGD,qCAAc,GAAd;QAAA,iBAyBC;QAxBA,IAAM,IAAI,GAAG;;;;;4BACgB,qBAAM,IAAI,OAAO,CAAC,UAAC,OAAO;4BACrD,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,UAAC,QAAuB;gCACrD,OAAA,OAAO,CAAC,QAAQ,CAAC;4BAAjB,CAAiB,CACjB,CAAC;wBACH,CAAC,CAAC,EAAA;;wBAJI,IAAI,GAAkB,SAI1B;wBAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;wBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;;;;aACtB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,UAAC,YAAiC;YAChE,KAAI,CAAC,aAAa,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;YAC9C,KAAI,CAAC,aAAa,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;YAClD,KAAI,CAAC,aAAa,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;YAC9C,KAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,WAAW,CAC3B,cAAM,OAAA,IAAI,EAAE,EAAN,CAAM,EACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAC3C,CAAC;QACF,IAAI,EAAE,CAAC;IACR,CAAC;IAEK,gCAAS,GAAf;;;;;wBACC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;4BACzB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;4BACzB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;4BACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;wBACpB,CAAC;wBAED,qBAAM,IAAA,aAAK,EAAC,IAAI,CAAC,EAAA;;wBAAjB,SAAiB,CAAC;wBAElB,IAAI,CAAC,OAAO,GAAG,+BAA+B,CAAC;wBAC/C,IAAI,CAAC,cAAc,EAAE,CAAC;wBAEtB,qBAAM,IAAA,aAAK,EAAC,IAAI,CAAC,EAAA;;wBAAjB,SAAiB,CAAC;wBAClB,qBAAM,IAAI,CAAC,OAAO,EAAE,EAAA;;wBAApB,SAAoB,CAAC;;;;;KACrB;IAEK,8BAAO,GAAb;;;;;;;wBACC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;wBAElD,qBAAM,IAAA,aAAK,EAAC,IAAI,CAAC,EAAA;;wBAAjB,SAAiB,CAAC;wBAEZ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;wBACjD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;wBAE3D,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;4BAChC,sBAAO,IAAI,CAAC,OAAO,CAClB,oBAAoB,EACpB,uDAAuD,CACvD,EAAC;wBACH,CAAC;wBAED,IAAI,CAAC,MAAM,GAAG,IAAA,qBAAE,EAAC,eAAQ,EAAE,cAAI,IAAI,CAAE,EAAE;4BACtC,oBAAoB,EAAE,CAAC;4BACvB,iBAAiB,EAAE,IAAI;yBACvB,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE;4BACzB,KAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;4BAC7C,KAAI,CAAC,cAAc,EAAE,CAAC;wBACvB,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE;4BAC5B,KAAI,CAAC,OAAO,CACX,cAAc,EACd,6CAA6C,EAC7C,cAAc,CACd,CAAC;4BACF,KAAI,CAAC,SAAS,EAAE,CAAC;wBAClB,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE;4BAC3B,KAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;wBAC7D,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,UAAC,GAAG;4BACnC,KAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,4BAAqB,GAAG,CAAE,CAAC,CAAC;4BAC/D,KAAI,CAAC,SAAS,EAAE,CAAC;wBAClB,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,GAAG;4BAC3B,KAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,wBAAiB,GAAG,CAAE,CAAC,CAAC;4BAC3D,KAAI,CAAC,SAAS,EAAE,CAAC;wBAClB,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE;4BACnC,KAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;wBAClD,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,kBAAkB,EAAE;4BAClC,KAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;4BAC1D,KAAI,CAAC,SAAS,EAAE,CAAC;wBAClB,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;4BACvB,KAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;4BACnD,KAAI,CAAC,SAAS,EAAE,CAAC;wBAClB,CAAC,CAAC,CAAC;;;;;KACH;IACF,mBAAC;AAAD,CAAC,AAzLD,IAyLC;AAzLY,oCAAY"}
|
{"version":3,"file":"CameraRunner.js","sourceRoot":"","sources":["../src/CameraRunner.ts"],"names":[],"mappings":"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"}
|
||||||
3
dist/Configuration/DefaultConfiguration.js
vendored
3
dist/Configuration/DefaultConfiguration.js
vendored
@@ -25,5 +25,8 @@ exports.DefaultConfiguration = {
|
|||||||
},
|
},
|
||||||
pollInterval: 5000,
|
pollInterval: 5000,
|
||||||
},
|
},
|
||||||
|
support: {
|
||||||
|
telephone: '+31613392837',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=DefaultConfiguration.js.map
|
//# sourceMappingURL=DefaultConfiguration.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"DefaultConfiguration.js","sourceRoot":"","sources":["../../src/Configuration/DefaultConfiguration.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAW;IAC3C,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;KACV;IACD,KAAK,EAAE;QACN,UAAU,EAAE;YACX,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,IAAI;SAClB;QAED,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,iBAAiB,EAAE,IAAI;QACvB,wBAAwB,EAAE,IAAI;KAC9B;IACD,YAAY,EAAE;QACb,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,YAAY,EAAE,IAAI;KAClB;CACD,CAAC"}
|
{"version":3,"file":"DefaultConfiguration.js","sourceRoot":"","sources":["../../src/Configuration/DefaultConfiguration.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAW;IAC3C,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;KACV;IACD,KAAK,EAAE;QACN,UAAU,EAAE;YACX,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,IAAI;SAClB;QAED,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,iBAAiB,EAAE,IAAI;QACvB,wBAAwB,EAAE,IAAI;KAC9B;IACD,YAAY,EAAE;QACb,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,YAAY,EAAE,IAAI;KAClB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,cAAc;KACzB;CACD,CAAC"}
|
||||||
39
dist/Main.js
vendored
39
dist/Main.js
vendored
@@ -76,6 +76,45 @@ var Main = /** @class */ (function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
Main.prototype.restart = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var doReboot, succeed;
|
||||||
|
var _this = this;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0:
|
||||||
|
console.log('Stopping UnityRunner...');
|
||||||
|
return [4 /*yield*/, this.UnityRunner.stop()];
|
||||||
|
case 1:
|
||||||
|
_a.sent();
|
||||||
|
doReboot = !process.argv.includes('--no-reboot');
|
||||||
|
console.log("".concat(doReboot ? 'Rebooting' : 'Restarting', " CameraRunner..."));
|
||||||
|
return [4 /*yield*/, new Promise(function (resolve) {
|
||||||
|
_this.CameraRunner.sendCommand(doReboot ? 'reboot' : 'restart', function (response) {
|
||||||
|
if (!response.succeed) {
|
||||||
|
console.error('Failed to reboot CameraRunner:', response.message);
|
||||||
|
resolve(false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log('CameraRunner rebooted successfully.');
|
||||||
|
resolve(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})];
|
||||||
|
case 2:
|
||||||
|
succeed = _a.sent();
|
||||||
|
if (!succeed)
|
||||||
|
return [2 /*return*/];
|
||||||
|
console.log('Starting UnityRunner...');
|
||||||
|
return [4 /*yield*/, this.UnityRunner.start()];
|
||||||
|
case 3:
|
||||||
|
_a.sent();
|
||||||
|
console.log('Restart complete.');
|
||||||
|
return [2 /*return*/];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
return Main;
|
return Main;
|
||||||
}());
|
}());
|
||||||
exports.Main = Main;
|
exports.Main = Main;
|
||||||
|
|||||||
2
dist/Main.js.map
vendored
2
dist/Main.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA4B;AAC5B,mDAAkD;AAClD,yBAA6B;AAC7B,6EAG8C;AAC9C,+CAA8C;AAC9C,mDAAkD;AAClD,yDAAwD;AAExD;IAAA;QACC,aAAQ,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAC;QAEhE,yBAAoB,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;QACtD,cAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,CAAC;QAEhC,iBAAY,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,CAAC;QACtC,gBAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QACpC,mBAAc,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;IAc3C,CAAC;IAVM,oBAAK,GAAX;;;;;;4BACC,qBAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAA;;wBAAtC,SAAsC,CAAC;wBACvC,qBAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAA;;wBAA7B,SAA6B,CAAC;wBAE9B,qBAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAA;;wBAAjC,SAAiC,CAAC;wBAElC,UAAU,CAAC;4BACV,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;wBAC1B,CAAC,EAAE,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,mCAAI,CAAC,CAAC,CAAC;;;;;KACnD;IACF,WAAC;AAAD,CAAC,AAtBD,IAsBC;AAtBY,oBAAI"}
|
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA4B;AAC5B,mDAAkD;AAClD,yBAA6B;AAC7B,6EAG8C;AAC9C,+CAA8C;AAC9C,mDAAkD;AAClD,yDAAwD;AAExD;IAAA;QACC,aAAQ,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAC;QAEhE,yBAAoB,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;QACtD,cAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,CAAC;QAEhC,iBAAY,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,CAAC;QACtC,gBAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QACpC,mBAAc,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;IA6C3C,CAAC;IAzCM,oBAAK,GAAX;;;;;;4BACC,qBAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAA;;wBAAtC,SAAsC,CAAC;wBACvC,qBAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAA;;wBAA7B,SAA6B,CAAC;wBAE9B,qBAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAA;;wBAAjC,SAAiC,CAAC;wBAElC,UAAU,CAAC;4BACV,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;wBAC1B,CAAC,EAAE,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,mCAAI,CAAC,CAAC,CAAC;;;;;KACnD;IAEK,sBAAO,GAAb;;;;;;;wBACC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACvC,qBAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAA;;wBAA7B,SAA6B,CAAC;wBAExB,QAAQ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;wBACvD,OAAO,CAAC,GAAG,CAAC,UAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,qBAAkB,CAAC,CAAC;wBACxD,qBAAM,IAAI,OAAO,CAAC,UAAC,OAAO;gCACzC,KAAI,CAAC,YAAY,CAAC,WAAW,CAC5B,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC/B,UAAC,QAAgD;oCAChD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;wCACvB,OAAO,CAAC,KAAK,CACZ,gCAAgC,EAChC,QAAQ,CAAC,OAAO,CAChB,CAAC;wCACF,OAAO,CAAC,KAAK,CAAC,CAAC;oCAChB,CAAC;yCAAM,CAAC;wCACP,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;wCACnD,OAAO,CAAC,IAAI,CAAC,CAAC;oCACf,CAAC;gCACF,CAAC,CACD,CAAC;4BACH,CAAC,CAAC,EAAA;;wBAhBI,OAAO,GAAG,SAgBd;wBACF,IAAI,CAAC,OAAO;4BAAE,sBAAO;wBAErB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACvC,qBAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAA;;wBAA9B,SAA8B,CAAC;wBAE/B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;;;;;KACjC;IACF,WAAC;AAAD,CAAC,AArDD,IAqDC;AArDY,oBAAI"}
|
||||||
89
dist/Unity/UnityRunner.js
vendored
89
dist/Unity/UnityRunner.js
vendored
@@ -104,6 +104,52 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
else
|
else
|
||||||
console.log(PREFIX, message !== null && message !== void 0 ? message : error);
|
console.log(PREFIX, message !== null && message !== void 0 ? message : error);
|
||||||
};
|
};
|
||||||
|
UnityRunner.prototype.stop = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var quitSucceeded;
|
||||||
|
var _this = this;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0:
|
||||||
|
if (this.process == null)
|
||||||
|
return [2 /*return*/];
|
||||||
|
this.restartTriggered = true;
|
||||||
|
if (this._Main.UnityWebSocket.state === 'CONNECTED') {
|
||||||
|
this._Main.UnityWebSocket.quitApplication();
|
||||||
|
this.setInfo('Requested quit through WebSocket...', null, 'STARTING');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.process.kill('SIGTERM');
|
||||||
|
this.setInfo('Requested quit through SIGTERM...', null, 'STARTING');
|
||||||
|
}
|
||||||
|
return [4 /*yield*/, new Promise(function (resolve) {
|
||||||
|
var timeout = setTimeout(function () {
|
||||||
|
clearInterval(c);
|
||||||
|
resolve(false);
|
||||||
|
}, 5000);
|
||||||
|
var c = setInterval(function () {
|
||||||
|
if (_this.process != null &&
|
||||||
|
!_this.process.killed &&
|
||||||
|
_this.process.exitCode == null)
|
||||||
|
return;
|
||||||
|
clearTimeout(timeout);
|
||||||
|
clearInterval(c);
|
||||||
|
resolve(true);
|
||||||
|
});
|
||||||
|
})];
|
||||||
|
case 1:
|
||||||
|
quitSucceeded = _a.sent();
|
||||||
|
if (!quitSucceeded)
|
||||||
|
this.process.kill('SIGKILL');
|
||||||
|
this.setInfo('Stopped', null, 'STOPPED');
|
||||||
|
this._Main.UnityWebSocket.disconnect();
|
||||||
|
this._Main.WebServer.Calibration.hasCalibrationImage = false;
|
||||||
|
this.startTime = -1;
|
||||||
|
return [2 /*return*/];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
UnityRunner.prototype.restart = function () {
|
UnityRunner.prototype.restart = function () {
|
||||||
return __awaiter(this, arguments, void 0, function (instant) {
|
return __awaiter(this, arguments, void 0, function (instant) {
|
||||||
if (instant === void 0) { instant = false; }
|
if (instant === void 0) { instant = false; }
|
||||||
@@ -112,42 +158,41 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
case 0:
|
case 0:
|
||||||
if (this.restartTriggered)
|
if (this.restartTriggered)
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
clearInterval(this.statusClock);
|
|
||||||
this._Main.WebServer.Calibration.hasCalibrationImage = false;
|
|
||||||
this._Main.UnityWebSocket.disconnect();
|
|
||||||
this.restartTriggered = true;
|
this.restartTriggered = true;
|
||||||
|
clearInterval(this.statusClock);
|
||||||
this.startTime = -1;
|
this.startTime = -1;
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
|
if (!!instant) return [3 /*break*/, 2];
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(2000)];
|
return [4 /*yield*/, (0, Utils_1.delay)(2000)];
|
||||||
case 1:
|
case 1:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
|
_a.label = 2;
|
||||||
|
case 2:
|
||||||
if (this.output.current.length > 0) {
|
if (this.output.current.length > 0) {
|
||||||
this.output.last = __spreadArray([], this.output.current, true);
|
this.output.last = __spreadArray([], this.output.current, true);
|
||||||
this.output.current = [];
|
this.output.current = [];
|
||||||
}
|
}
|
||||||
if (instant)
|
return [4 /*yield*/, this.stop()];
|
||||||
this.setInfo('Process will restart shortly...', null, 'STOPPED');
|
|
||||||
if (!(this.process != null)) return [3 /*break*/, 3];
|
|
||||||
this.process.kill('SIGTERM');
|
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(3000)];
|
|
||||||
case 2:
|
|
||||||
_a.sent();
|
|
||||||
if (!this.process.killed && this.process.exitCode === null) {
|
|
||||||
this.process.kill('SIGKILL');
|
|
||||||
console.log(PREFIX, 'Sent SIGKILL to process.');
|
|
||||||
}
|
|
||||||
_a.label = 3;
|
|
||||||
case 3:
|
case 3:
|
||||||
this.startTime = -1;
|
_a.sent();
|
||||||
if (!!instant) return [3 /*break*/, 5];
|
if (!instant) return [3 /*break*/, 6];
|
||||||
|
return [4 /*yield*/, (0, Utils_1.delay)(1000)];
|
||||||
|
case 4:
|
||||||
|
_a.sent();
|
||||||
|
this.setInfo('Process will restart shortly...', null, 'STOPPED');
|
||||||
|
return [4 /*yield*/, (0, Utils_1.delay)(2000)];
|
||||||
|
case 5:
|
||||||
|
_a.sent();
|
||||||
|
return [3 /*break*/, 8];
|
||||||
|
case 6:
|
||||||
this.message = 'Reconnecting in 10 seconds...';
|
this.message = 'Reconnecting in 10 seconds...';
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(10000)];
|
return [4 /*yield*/, (0, Utils_1.delay)(10000)];
|
||||||
case 4:
|
case 7:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
_a.label = 5;
|
_a.label = 8;
|
||||||
case 5: return [4 /*yield*/, this.start()];
|
case 8: return [4 /*yield*/, this.start()];
|
||||||
case 6:
|
case 9:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
}
|
}
|
||||||
@@ -214,7 +259,7 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
this.process.on('exit', function (code, signal) {
|
this.process.on('exit', function (code, signal) {
|
||||||
if (_this.restartTriggered)
|
if (_this.restartTriggered)
|
||||||
return;
|
return;
|
||||||
_this.setInfo('Process exited', "Process exited with code ".concat(code, " and signal ").concat(signal), 'STOPPED');
|
_this.setInfo('Process exited', "Process exited with code ".concat(code, " and signal ").concat(signal), 'PROBLEM');
|
||||||
_this.restart();
|
_this.restart();
|
||||||
});
|
});
|
||||||
this.process.on('error', function (err) {
|
this.process.on('error', function (err) {
|
||||||
|
|||||||
2
dist/Unity/UnityRunner.js.map
vendored
2
dist/Unity/UnityRunner.js.map
vendored
File diff suppressed because one or more lines are too long
84
dist/Unity/UnityWebSocket.js
vendored
84
dist/Unity/UnityWebSocket.js
vendored
@@ -1,4 +1,15 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __assign = (this && this.__assign) || function () {
|
||||||
|
__assign = Object.assign || function(t) {
|
||||||
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||||
|
s = arguments[i];
|
||||||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
||||||
|
t[p] = s[p];
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
return __assign.apply(this, arguments);
|
||||||
|
};
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
@@ -51,7 +62,9 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
zedPath: '',
|
zedPath: '',
|
||||||
zedReady: false,
|
zedReady: false,
|
||||||
zedFPS: '-',
|
zedFPS: '-',
|
||||||
parameters: [],
|
outOfService: null,
|
||||||
|
sliders: [],
|
||||||
|
sensors: [],
|
||||||
};
|
};
|
||||||
this.disconnected = false;
|
this.disconnected = false;
|
||||||
this.restartRequested = false;
|
this.restartRequested = false;
|
||||||
@@ -66,22 +79,54 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
case 'parameterValue':
|
case 'parameterValue':
|
||||||
var sliderIndex = args[0];
|
var sliderIndex = args[0];
|
||||||
var percentage = args[1];
|
var percentage = args[1];
|
||||||
if (this.parameters.parameters[sliderIndex] == undefined)
|
this.setSliderValue(sliderIndex, percentage);
|
||||||
|
break;
|
||||||
|
case 'enableOutOfService':
|
||||||
|
var enableCallback = args[0];
|
||||||
|
if (typeof enableCallback !== 'function')
|
||||||
return;
|
return;
|
||||||
this.parameters.parameters[sliderIndex].outputValue =
|
this.setOutOfService(true);
|
||||||
percentage;
|
enableCallback({ succeed: true });
|
||||||
if (this.socket == null ||
|
break;
|
||||||
this.socket.readyState !== ws_1.WebSocket.OPEN)
|
case 'disableOutOfService':
|
||||||
|
var disableCallback = args[0];
|
||||||
|
if (typeof disableCallback !== 'function')
|
||||||
return;
|
return;
|
||||||
this.socket.send(JSON.stringify({
|
this.setOutOfService(false);
|
||||||
type: 'set_slider_value',
|
disableCallback({ succeed: true });
|
||||||
sliderIndex: sliderIndex,
|
|
||||||
sliderValue: percentage,
|
|
||||||
}));
|
|
||||||
this.broadcastState();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
UnityWebSocket.prototype.quitApplication = function () {
|
||||||
|
if (this.socket == null || this.socket.readyState !== ws_1.WebSocket.OPEN)
|
||||||
|
return;
|
||||||
|
this.socket.send(JSON.stringify({
|
||||||
|
type: 'quit_application',
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
UnityWebSocket.prototype.setSliderValue = function (sliderIndex, sliderValue) {
|
||||||
|
if (this.socket == null || this.socket.readyState !== ws_1.WebSocket.OPEN)
|
||||||
|
return;
|
||||||
|
this.socket.send(JSON.stringify({
|
||||||
|
type: 'set_slider_value',
|
||||||
|
sliderIndex: sliderIndex,
|
||||||
|
sliderValue: sliderValue,
|
||||||
|
}));
|
||||||
|
if (this.parameters.sliders[sliderIndex] == undefined)
|
||||||
|
return;
|
||||||
|
this.parameters.sliders[sliderIndex].outputValue = sliderValue;
|
||||||
|
this.broadcastState();
|
||||||
|
};
|
||||||
|
UnityWebSocket.prototype.setOutOfService = function (state) {
|
||||||
|
if (this.socket == null || this.socket.readyState !== ws_1.WebSocket.OPEN)
|
||||||
|
return;
|
||||||
|
this.socket.send(JSON.stringify({
|
||||||
|
type: 'set_out_of_service',
|
||||||
|
showOutOfService: state,
|
||||||
|
}));
|
||||||
|
this.parameters.outOfService = true;
|
||||||
|
this.broadcastState();
|
||||||
|
};
|
||||||
UnityWebSocket.prototype.broadcastState = function () {
|
UnityWebSocket.prototype.broadcastState = function () {
|
||||||
this._Main.WebServer.socket.emit('unityWebSocketState', this.getState());
|
this._Main.WebServer.socket.emit('unityWebSocketState', this.getState());
|
||||||
};
|
};
|
||||||
@@ -101,6 +146,7 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
clearInterval(this.calibrationImageClock);
|
clearInterval(this.calibrationImageClock);
|
||||||
};
|
};
|
||||||
UnityWebSocket.prototype.handleSocketMessage = function (data) {
|
UnityWebSocket.prototype.handleSocketMessage = function (data) {
|
||||||
|
var _a;
|
||||||
var message;
|
var message;
|
||||||
try {
|
try {
|
||||||
message = JSON.parse(data.toString());
|
message = JSON.parse(data.toString());
|
||||||
@@ -120,7 +166,17 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
this.parameters.zedReady =
|
this.parameters.zedReady =
|
||||||
message.heartbeat.zedCamera.isZedReady;
|
message.heartbeat.zedCamera.isZedReady;
|
||||||
this.parameters.zedFPS = message.heartbeat.zedCamera.cameraFPS;
|
this.parameters.zedFPS = message.heartbeat.zedCamera.cameraFPS;
|
||||||
this.parameters.parameters = message.heartbeat.dataSliders;
|
this.parameters.outOfService =
|
||||||
|
(_a = message.heartbeat.showOutOfService) !== null && _a !== void 0 ? _a : false;
|
||||||
|
this.parameters.sensors = message.heartbeat.dataSensors;
|
||||||
|
this.parameters.sliders = message.heartbeat.dataSliders.map(function (slider) {
|
||||||
|
var _a, _b, _c, _d, _e, _f, _g;
|
||||||
|
return __assign(__assign({}, slider), { min: (_a = slider.min) !== null && _a !== void 0 ? _a : 0, max: (_b = slider.max) !== null && _b !== void 0 ? _b : 1, unit: (_c = slider.unit) !== null && _c !== void 0 ? _c : '%', visualMultiplier: ((_d = slider.min) !== null && _d !== void 0 ? _d : 0) == 0 && ((_e = slider.max) !== null && _e !== void 0 ? _e : 1) == 1
|
||||||
|
? 100
|
||||||
|
: null, decimalPlaces: ((_f = slider.min) !== null && _f !== void 0 ? _f : 0) == 0 && ((_g = slider.max) !== null && _g !== void 0 ? _g : 1) == 1
|
||||||
|
? 0
|
||||||
|
: 2 });
|
||||||
|
});
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
break;
|
break;
|
||||||
case 'response_camera_frame':
|
case 'response_camera_frame':
|
||||||
@@ -203,6 +259,8 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
_this.setInfo('Connected', null, 'CONNECTED');
|
_this.setInfo('Connected', null, 'CONNECTED');
|
||||||
});
|
});
|
||||||
this.socket.on('close', function () {
|
this.socket.on('close', function () {
|
||||||
|
if (_this._Main.UnityRunner.restartTriggered)
|
||||||
|
return;
|
||||||
if (_this.restartRequested)
|
if (_this.restartRequested)
|
||||||
return;
|
return;
|
||||||
_this.setInfo('Disconnected', 'Unity was disconnected unexpectedly', 'FAILED');
|
_this.setInfo('Disconnected', 'Unity was disconnected unexpectedly', 'FAILED');
|
||||||
|
|||||||
2
dist/Unity/UnityWebSocket.js.map
vendored
2
dist/Unity/UnityWebSocket.js.map
vendored
File diff suppressed because one or more lines are too long
10
dist/WebServer/WebServer.js
vendored
10
dist/WebServer/WebServer.js
vendored
@@ -36,6 +36,16 @@ var WebServer = /** @class */ (function () {
|
|||||||
socket.emit('cameraRunnerState', _this._Main.CameraRunner.getState());
|
socket.emit('cameraRunnerState', _this._Main.CameraRunner.getState());
|
||||||
socket.emit('unityRunnerState', _this._Main.UnityRunner.getStatus());
|
socket.emit('unityRunnerState', _this._Main.UnityRunner.getStatus());
|
||||||
socket.emit('unityWebSocketState', _this._Main.UnityWebSocket.getState());
|
socket.emit('unityWebSocketState', _this._Main.UnityWebSocket.getState());
|
||||||
|
socket.emit('supportNumber', _this._Main.Config.support.telephone.replace('+', ''));
|
||||||
|
socket.on('restartInstallation', function (callback) {
|
||||||
|
if (_this._Main.CameraRunner.state !== 'CONNECTED')
|
||||||
|
return callback({
|
||||||
|
succeed: false,
|
||||||
|
message: 'Cannot reboot camera runner because it is not connected.',
|
||||||
|
});
|
||||||
|
_this._Main.restart();
|
||||||
|
callback({ succeed: true });
|
||||||
|
});
|
||||||
socket.on('cameraRunner', function (command) {
|
socket.on('cameraRunner', function (command) {
|
||||||
var _a;
|
var _a;
|
||||||
var args = [];
|
var args = [];
|
||||||
|
|||||||
2
dist/WebServer/WebServer.js.map
vendored
2
dist/WebServer/WebServer.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../../src/WebServer/WebServer.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../../src/WebServer/WebServer.ts"],"names":[],"mappings":"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"}
|
||||||
187
frontend/views/dashboard/dist/dashboard.unity.js
vendored
187
frontend/views/dashboard/dist/dashboard.unity.js
vendored
@@ -48,6 +48,10 @@ var DashboardUnity = /** @class */ (function () {
|
|||||||
this.uptimeInfo = document.querySelector('.ntsh_dashboard-unity-uptime');
|
this.uptimeInfo = document.querySelector('.ntsh_dashboard-unity-uptime');
|
||||||
this.webSocketStatus = document.querySelector('.ntsh_dashboard-unity-websocketstatus');
|
this.webSocketStatus = document.querySelector('.ntsh_dashboard-unity-websocketstatus');
|
||||||
this.webSocketInfo = document.querySelector('.ntsh_dashboard-unity-websocketinfo');
|
this.webSocketInfo = document.querySelector('.ntsh_dashboard-unity-websocketinfo');
|
||||||
|
this.outOfServiceStatus = document.querySelector('.ntsh_dashboard-unity-outofservicestatus');
|
||||||
|
this.outOfServiceInfo = document.querySelector('.ntsh_dashboard-unity-outofserviceinfo');
|
||||||
|
this.enableOutOfServiceButton = document.querySelector('.ntsh_dashboard-unity-enableoutofservice');
|
||||||
|
this.disableOutOfServiceButton = document.querySelector('.ntsh_dashboard-unity-disableoutofservice');
|
||||||
this.zedStreamStatus = document.querySelector('.ntsh_dashboard-unity-zedstreamstatus');
|
this.zedStreamStatus = document.querySelector('.ntsh_dashboard-unity-zedstreamstatus');
|
||||||
this.zedStreamInfo = document.querySelector('.ntsh_dashboard-unity-zedstreaminfo');
|
this.zedStreamInfo = document.querySelector('.ntsh_dashboard-unity-zedstreaminfo');
|
||||||
this.zedStreamFps = document.querySelector('.ntsh_dashboard-unity-zedstreamfps');
|
this.zedStreamFps = document.querySelector('.ntsh_dashboard-unity-zedstreamfps');
|
||||||
@@ -56,6 +60,7 @@ var DashboardUnity = /** @class */ (function () {
|
|||||||
this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing');
|
this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing');
|
||||||
this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress');
|
this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress');
|
||||||
this.parametersTable = document.querySelector('.ntsh_dashboard-unity-parameters');
|
this.parametersTable = document.querySelector('.ntsh_dashboard-unity-parameters');
|
||||||
|
this.sensorsTable = document.querySelector('.ntsh_dashboard-unity-sensors');
|
||||||
this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error');
|
this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error');
|
||||||
this.errorText = document.querySelector('.ntsh_dashboard-unity-errortext');
|
this.errorText = document.querySelector('.ntsh_dashboard-unity-errortext');
|
||||||
this._Main = Main;
|
this._Main = Main;
|
||||||
@@ -73,7 +78,7 @@ var DashboardUnity = /** @class */ (function () {
|
|||||||
}
|
}
|
||||||
(0, utils_1.setStatusState)(this.processStatus, {
|
(0, utils_1.setStatusState)(this.processStatus, {
|
||||||
RUNNING: 'green',
|
RUNNING: 'green',
|
||||||
STOPPED: 'red',
|
STOPPED: 'gray',
|
||||||
STARTING: 'yellow',
|
STARTING: 'yellow',
|
||||||
PROBLEM: 'red',
|
PROBLEM: 'red',
|
||||||
}[state.state]);
|
}[state.state]);
|
||||||
@@ -99,6 +104,28 @@ var DashboardUnity = /** @class */ (function () {
|
|||||||
FAILED: 'red',
|
FAILED: 'red',
|
||||||
}[state.state]);
|
}[state.state]);
|
||||||
this.webSocketInfo.innerText = (_a = state.message) !== null && _a !== void 0 ? _a : '';
|
this.webSocketInfo.innerText = (_a = state.message) !== null && _a !== void 0 ? _a : '';
|
||||||
|
// ----------- Out of Service -----------
|
||||||
|
(0, utils_1.setStatusState)(this.outOfServiceStatus, state.parameters.outOfService == null
|
||||||
|
? 'gray'
|
||||||
|
: state.parameters.outOfService
|
||||||
|
? 'red'
|
||||||
|
: 'green');
|
||||||
|
this.outOfServiceInfo.innerText =
|
||||||
|
state.parameters.outOfService == null
|
||||||
|
? ''
|
||||||
|
: state.parameters.outOfService
|
||||||
|
? 'Out of Service'
|
||||||
|
: 'Operational';
|
||||||
|
this.enableOutOfServiceButton.style.display =
|
||||||
|
state.parameters.outOfService == null ||
|
||||||
|
state.parameters.outOfService
|
||||||
|
? 'none'
|
||||||
|
: 'flex';
|
||||||
|
this.disableOutOfServiceButton.style.display =
|
||||||
|
state.parameters.outOfService &&
|
||||||
|
state.parameters.outOfService != null
|
||||||
|
? 'flex'
|
||||||
|
: 'none';
|
||||||
// ----------- ZED Stream -----------
|
// ----------- ZED Stream -----------
|
||||||
(0, utils_1.setStatusState)(this.zedStreamStatus, state.parameters.zedReady ? 'green' : 'red');
|
(0, utils_1.setStatusState)(this.zedStreamStatus, state.parameters.zedReady ? 'green' : 'red');
|
||||||
this.zedStreamInfo.innerText = state.parameters.zedReady
|
this.zedStreamInfo.innerText = state.parameters.zedReady
|
||||||
@@ -113,9 +140,10 @@ var DashboardUnity = /** @class */ (function () {
|
|||||||
this.timelineStanding.innerText = state.parameters.timelineStanding
|
this.timelineStanding.innerText = state.parameters.timelineStanding
|
||||||
? 'Yes'
|
? 'Yes'
|
||||||
: 'No';
|
: 'No';
|
||||||
(0, utils_1.setProgressState)(this.timelineProgress, state.parameters.timelineProgress);
|
(0, utils_1.setProgressState)(this.timelineProgress, Math.round(state.parameters.timelineProgress * 100), 0, 100, '%');
|
||||||
// ----------- Parameters -----------
|
// ----------- Parameters -----------
|
||||||
this.renderParameterSliders(state.parameters.parameters);
|
this.renderParameterSliders(state.state == 'CONNECTED' ? state.parameters.sliders : []);
|
||||||
|
this.renderParameterSensors(state.state == 'CONNECTED' ? state.parameters.sensors : []);
|
||||||
// ----------- Error -----------
|
// ----------- Error -----------
|
||||||
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0)
|
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0)
|
||||||
this.webSocketError = state.error;
|
this.webSocketError = state.error;
|
||||||
@@ -123,55 +151,107 @@ var DashboardUnity = /** @class */ (function () {
|
|||||||
this.webSocketError = null;
|
this.webSocketError = null;
|
||||||
this.updateError();
|
this.updateError();
|
||||||
};
|
};
|
||||||
DashboardUnity.prototype.renderParameterSliders = function (parameters) {
|
DashboardUnity.prototype.renderParameterSliders = function (sliders) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
if (parameters.length === 0)
|
|
||||||
return;
|
|
||||||
var existingSliders = this.parametersTable.querySelectorAll('.ntsh_dashboard-unity-parameter-row');
|
var existingSliders = this.parametersTable.querySelectorAll('.ntsh_dashboard-unity-parameter-row');
|
||||||
if (existingSliders.length !== parameters.length) {
|
if (existingSliders.length !== sliders.length) {
|
||||||
this.parametersTable.innerHTML = '';
|
this.parametersTable.innerHTML = '';
|
||||||
parameters.forEach(function (param) {
|
if (sliders.length === 0) {
|
||||||
var row = (0, morphux_1.ce)('tr', 'ntsh_dashboard-unity-parameter-row');
|
var row = (0, morphux_1.ce)('tr');
|
||||||
var nameCell = (0, morphux_1.ce)('td');
|
var cell = (0, morphux_1.ce)('td');
|
||||||
nameCell.appendChild((0, morphux_1.ce)('div', 'mux_text', null, param.sliderName));
|
cell.appendChild((0, morphux_1.ce)('div', ['mux_text', 'ntsh_dashboard-unity-parameters-loading'], null, 'Waiting for Unity...'));
|
||||||
row.appendChild(nameCell);
|
row.appendChild(cell);
|
||||||
var progressCell = (0, morphux_1.ce)('td', 'no-service');
|
this.parametersTable.appendChild(row);
|
||||||
progressCell.appendChild((0, utils_1.createProgress)(param.outputValue));
|
}
|
||||||
row.appendChild(progressCell);
|
else
|
||||||
var sliderCell = (0, morphux_1.ce)('td', 'only-service');
|
sliders.forEach(function (slider) {
|
||||||
var sliderProgress = (0, utils_1.createProgress)(param.outputValue);
|
var _a, _b;
|
||||||
var sliderValue = sliderProgress.querySelector('.ntsh_progress-value');
|
var multiplierFactor = (_a = slider.visualMultiplier) !== null && _a !== void 0 ? _a : 1;
|
||||||
sliderValue.classList.add('mux_resizer');
|
var decimalPlacesFactor = Math.pow(10, ((_b = slider.decimalPlaces) !== null && _b !== void 0 ? _b : 0));
|
||||||
sliderCell.appendChild(sliderProgress);
|
var value = Math.round(slider.outputValue *
|
||||||
var resizer = new morphux_1.MorphComponent.Resizer({
|
multiplierFactor *
|
||||||
existingContainer: sliderValue,
|
decimalPlacesFactor) / decimalPlacesFactor;
|
||||||
direction: 'right',
|
var row = (0, morphux_1.ce)('tr', 'ntsh_dashboard-unity-parameter-row');
|
||||||
relative: true,
|
var nameCell = (0, morphux_1.ce)('td');
|
||||||
min: 0,
|
nameCell.appendChild((0, morphux_1.ce)('div', 'mux_text', null, slider.sliderName));
|
||||||
max: function () { return sliderProgress.clientWidth; },
|
row.appendChild(nameCell);
|
||||||
|
var progressCell = (0, morphux_1.ce)('td', 'no-service');
|
||||||
|
progressCell.appendChild((0, utils_1.createProgress)(value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit));
|
||||||
|
row.appendChild(progressCell);
|
||||||
|
var sliderCell = (0, morphux_1.ce)('td', 'only-service');
|
||||||
|
var sliderProgress = (0, utils_1.createProgress)(value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||||
|
var sliderValue = sliderProgress.querySelector('.ntsh_progress-value');
|
||||||
|
sliderValue.classList.add('mux_resizer');
|
||||||
|
sliderCell.appendChild(sliderProgress);
|
||||||
|
var resizer = new morphux_1.MorphComponent.Resizer({
|
||||||
|
existingContainer: sliderValue,
|
||||||
|
direction: 'right',
|
||||||
|
relative: true,
|
||||||
|
min: 0,
|
||||||
|
max: function () { return sliderProgress.clientWidth; },
|
||||||
|
});
|
||||||
|
var lastValue = -1;
|
||||||
|
resizer.on('resized', function (size) {
|
||||||
|
var percentage = Math.round((size / sliderProgress.clientWidth) * 100) / 100;
|
||||||
|
var actualValue = slider.min + percentage * (slider.max - slider.min);
|
||||||
|
if (actualValue === lastValue)
|
||||||
|
return;
|
||||||
|
lastValue = actualValue;
|
||||||
|
_this._Main.socket.emit('unityWebSocket', 'parameterValue', slider.sliderIndex, actualValue);
|
||||||
|
(0, utils_1.setProgressState)(sliderProgress, Math.round(actualValue *
|
||||||
|
multiplierFactor *
|
||||||
|
decimalPlacesFactor) / decimalPlacesFactor, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||||
|
});
|
||||||
|
row.appendChild(sliderCell);
|
||||||
|
_this.parametersTable.appendChild(row);
|
||||||
});
|
});
|
||||||
var lastPercentage = -1;
|
|
||||||
resizer.on('resized', function (size) {
|
|
||||||
var percentage = Math.round((size / sliderProgress.clientWidth) * 100) /
|
|
||||||
100;
|
|
||||||
if (percentage === lastPercentage)
|
|
||||||
return;
|
|
||||||
lastPercentage = percentage;
|
|
||||||
_this._Main.socket.emit('unityWebSocket', 'parameterValue', param.sliderIndex, percentage);
|
|
||||||
(0, utils_1.setProgressState)(sliderProgress, percentage);
|
|
||||||
});
|
|
||||||
row.appendChild(sliderCell);
|
|
||||||
_this.parametersTable.appendChild(row);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
existingSliders.forEach(function (row, index) {
|
existingSliders.forEach(function (row, index) {
|
||||||
var value = parameters[index].outputValue;
|
var _a, _b;
|
||||||
|
var slider = sliders[index];
|
||||||
|
var multiplierFactor = (_a = slider.visualMultiplier) !== null && _a !== void 0 ? _a : 1;
|
||||||
|
var decimalPlacesFactor = Math.pow(10, ((_b = slider.decimalPlaces) !== null && _b !== void 0 ? _b : 0));
|
||||||
|
var value = Math.round(slider.outputValue *
|
||||||
|
multiplierFactor *
|
||||||
|
decimalPlacesFactor) / decimalPlacesFactor;
|
||||||
var progressElement = row.querySelector('.no-service .ntsh_progress');
|
var progressElement = row.querySelector('.no-service .ntsh_progress');
|
||||||
(0, utils_1.setProgressState)(progressElement, value);
|
(0, utils_1.setProgressState)(progressElement, value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||||
var sliderElement = row.querySelector('.only-service .ntsh_progress');
|
var sliderElement = row.querySelector('.only-service .ntsh_progress');
|
||||||
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
||||||
(0, utils_1.setProgressState)(sliderElement, value);
|
(0, utils_1.setProgressState)(sliderElement, value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
DashboardUnity.prototype.renderParameterSensors = function (sensors) {
|
||||||
|
var _this = this;
|
||||||
|
var existingSensors = this.sensorsTable.querySelectorAll('.ntsh_dashboard-unity-sensor-row');
|
||||||
|
if (existingSensors.length !== sensors.length) {
|
||||||
|
this.sensorsTable.innerHTML = '';
|
||||||
|
if (sensors.length === 0) {
|
||||||
|
var row = (0, morphux_1.ce)('tr');
|
||||||
|
var cell = (0, morphux_1.ce)('td');
|
||||||
|
cell.appendChild((0, morphux_1.ce)('div', ['mux_text', 'ntsh_dashboard-unity-sensors-loading'], null, 'Waiting for Unity...'));
|
||||||
|
row.appendChild(cell);
|
||||||
|
this.sensorsTable.appendChild(row);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sensors.forEach(function (sensor) {
|
||||||
|
var row = (0, morphux_1.ce)('tr', 'ntsh_dashboard-unity-sensor-row');
|
||||||
|
var nameCell = (0, morphux_1.ce)('td');
|
||||||
|
nameCell.appendChild((0, morphux_1.ce)('div', 'mux_text', null, sensor.deviceName));
|
||||||
|
row.appendChild(nameCell);
|
||||||
|
var progressCell = (0, morphux_1.ce)('td');
|
||||||
|
progressCell.appendChild((0, utils_1.createProgress)(Math.round(sensor.outputValue * 100), 0, 100, '%'));
|
||||||
|
row.appendChild(progressCell);
|
||||||
|
_this.sensorsTable.appendChild(row);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
existingSensors.forEach(function (row, index) {
|
||||||
|
var value = sensors[index].outputValue;
|
||||||
|
var progressElement = row.querySelector('.ntsh_progress');
|
||||||
|
(0, utils_1.setProgressState)(progressElement, Math.round(value * 100), 0, 100, '%');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -202,10 +282,23 @@ var DashboardUnity = /** @class */ (function () {
|
|||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
});
|
});
|
||||||
}); });
|
}); });
|
||||||
|
this.enableOutOfServiceButton.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
this.executeCommand('enableOutOfService', 'Are you sure you want to set the installation to "Out of Service"?', 'unityWebSocket');
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); });
|
||||||
|
this.disableOutOfServiceButton.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
this.executeCommand('disableOutOfService', 'Are you sure you want to set the installation to "Operational"?', 'unityWebSocket');
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); });
|
||||||
};
|
};
|
||||||
DashboardUnity.prototype.executeCommand = function (command, message) {
|
DashboardUnity.prototype.executeCommand = function (command_1, message_1) {
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, arguments, void 0, function (command, message, type) {
|
||||||
var confirmed;
|
var confirmed;
|
||||||
|
if (type === void 0) { type = 'unityRunner'; }
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
switch (_a.label) {
|
switch (_a.label) {
|
||||||
case 0: return [4 /*yield*/, morphux_1.MorphFeature.Confirm({
|
case 0: return [4 /*yield*/, morphux_1.MorphFeature.Confirm({
|
||||||
@@ -218,9 +311,9 @@ var DashboardUnity = /** @class */ (function () {
|
|||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
morphux_1.MorphFeature.Loader({
|
morphux_1.MorphFeature.Loader({
|
||||||
active: true,
|
active: true,
|
||||||
message: "Requesting Unity Runner ".concat(command, "..."),
|
message: "Dispatching command...",
|
||||||
});
|
});
|
||||||
this._Main.socket.emit('unityRunner', command, function (response) {
|
this._Main.socket.emit(type, command, function (response) {
|
||||||
morphux_1.MorphFeature.Loader({ active: false });
|
morphux_1.MorphFeature.Loader({ active: false });
|
||||||
if (!response.succeed)
|
if (!response.succeed)
|
||||||
return morphux_1.MorphFeature.Alert({
|
return morphux_1.MorphFeature.Alert({
|
||||||
@@ -229,7 +322,7 @@ var DashboardUnity = /** @class */ (function () {
|
|||||||
});
|
});
|
||||||
morphux_1.MorphFeature.Notification({
|
morphux_1.MorphFeature.Notification({
|
||||||
level: 'success',
|
level: 'success',
|
||||||
message: "Unity Runner is ".concat(command, "ing..."),
|
message: "Dispatched command",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
106
frontend/views/dashboard/dist/menubar.js
vendored
106
frontend/views/dashboard/dist/menubar.js
vendored
@@ -45,6 +45,9 @@ var MenuBar = /** @class */ (function () {
|
|||||||
this.container = document.querySelector('.ntsh_menubar');
|
this.container = document.querySelector('.ntsh_menubar');
|
||||||
this._Main = main;
|
this._Main = main;
|
||||||
this.build();
|
this.build();
|
||||||
|
this._Main.socket.on('supportNumber', function (number) {
|
||||||
|
_this.supportNumber = number;
|
||||||
|
});
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
if ((localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem('serviceMode')) === 'true')
|
if ((localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem('serviceMode')) === 'true')
|
||||||
_this.toggleServiceMode(true, true);
|
_this.toggleServiceMode(true, true);
|
||||||
@@ -53,10 +56,49 @@ var MenuBar = /** @class */ (function () {
|
|||||||
MenuBar.prototype.build = function () {
|
MenuBar.prototype.build = function () {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
this.menubar = new Component_MenuBar_1.ComponentMenuBar({
|
this.menubar = new Component_MenuBar_1.ComponentMenuBar({
|
||||||
|
mobile: {
|
||||||
|
left: [
|
||||||
|
{
|
||||||
|
type: 'icon',
|
||||||
|
text: 'Restart',
|
||||||
|
materialIcon: 'restart_alt',
|
||||||
|
uniqueIdentifier: 'restart_installation',
|
||||||
|
click: function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
var mobileMenu;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
mobileMenu = document.querySelector('.mux_mobilemenu');
|
||||||
|
mobileMenu === null || mobileMenu === void 0 ? void 0 : mobileMenu.click();
|
||||||
|
this.restartInstallation();
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
right: [
|
||||||
|
{
|
||||||
|
type: 'icon',
|
||||||
|
text: 'Support',
|
||||||
|
materialIcon: 'call_quality',
|
||||||
|
uniqueIdentifier: 'call_support',
|
||||||
|
click: function () { return _this.showSupport(); },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
left: [
|
left: [
|
||||||
{
|
{
|
||||||
type: 'image',
|
type: 'normal',
|
||||||
url: '/img/morphix_logo_white.png',
|
text: 'Restart',
|
||||||
|
materialIcon: 'restart_alt',
|
||||||
|
uniqueIdentifier: 'restart_installation',
|
||||||
|
click: function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
var mobileMenu;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
mobileMenu = document.querySelector('.mux_mobilemenu');
|
||||||
|
mobileMenu === null || mobileMenu === void 0 ? void 0 : mobileMenu.click();
|
||||||
|
this.restartInstallation();
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'normal',
|
type: 'normal',
|
||||||
@@ -92,7 +134,16 @@ var MenuBar = /** @class */ (function () {
|
|||||||
],
|
],
|
||||||
right: [
|
right: [
|
||||||
{
|
{
|
||||||
type: 'normal',
|
type: 'icon',
|
||||||
|
text: 'Support',
|
||||||
|
materialIcon: 'call_quality',
|
||||||
|
uniqueIdentifier: 'call_support',
|
||||||
|
click: function () { return _this.showSupport(); },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: document.body.classList.contains('ntsh_service')
|
||||||
|
? 'normal'
|
||||||
|
: 'icon',
|
||||||
text: document.body.classList.contains('ntsh_service')
|
text: document.body.classList.contains('ntsh_service')
|
||||||
? 'Exit Service'
|
? 'Exit Service'
|
||||||
: 'Service Mode',
|
: 'Service Mode',
|
||||||
@@ -115,6 +166,55 @@ var MenuBar = /** @class */ (function () {
|
|||||||
this.container.innerHTML = '';
|
this.container.innerHTML = '';
|
||||||
this.container.appendChild(this.menubar.container);
|
this.container.appendChild(this.menubar.container);
|
||||||
};
|
};
|
||||||
|
MenuBar.prototype.showSupport = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var dialog, callAnchor;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
dialog = new morphux_1.MorphComponent.Dialog({
|
||||||
|
title: 'Contact Support',
|
||||||
|
width: 'medium',
|
||||||
|
height: 'auto',
|
||||||
|
okButtonVisible: false,
|
||||||
|
cancelButtonVisible: false,
|
||||||
|
});
|
||||||
|
this.supportNumber.slice();
|
||||||
|
callAnchor = (0, morphux_1.ce)('a', 'ntsh_callanchor', { href: "tel:".concat(this.supportNumber) }, "+".concat(this.supportNumber));
|
||||||
|
dialog.content.appendChild(callAnchor);
|
||||||
|
setTimeout(function () { return callAnchor.click(); }, 100);
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
MenuBar.prototype.restartInstallation = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var confirmed;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0: return [4 /*yield*/, morphux_1.MorphFeature.Confirm({
|
||||||
|
title: 'Restart Installation',
|
||||||
|
message: 'Are you sure you want to restart the installation?',
|
||||||
|
})];
|
||||||
|
case 1:
|
||||||
|
confirmed = _a.sent();
|
||||||
|
if (!confirmed)
|
||||||
|
return [2 /*return*/];
|
||||||
|
morphux_1.MorphFeature.Loader({
|
||||||
|
active: true,
|
||||||
|
message: 'Restarting installation...',
|
||||||
|
});
|
||||||
|
this._Main.socket.emit('restartInstallation', function (response) {
|
||||||
|
morphux_1.MorphFeature.Loader({ active: false });
|
||||||
|
if (!response.succeed)
|
||||||
|
return morphux_1.MorphFeature.Alert({
|
||||||
|
title: 'Error',
|
||||||
|
message: response.message,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return [2 /*return*/];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
MenuBar.prototype.toggleServiceMode = function (mode, skipPin) {
|
MenuBar.prototype.toggleServiceMode = function (mode, skipPin) {
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var newMode, servicePin;
|
var newMode, servicePin;
|
||||||
|
|||||||
2
frontend/views/dashboard/dist/menubar.js.map
vendored
2
frontend/views/dashboard/dist/menubar.js.map
vendored
File diff suppressed because one or more lines are too long
13
frontend/views/dashboard/dist/utils.js
vendored
13
frontend/views/dashboard/dist/utils.js
vendored
@@ -21,18 +21,19 @@ var setStatusState = function (statusElement, state) {
|
|||||||
statusElement.classList.add("ntsh_status-".concat(state));
|
statusElement.classList.add("ntsh_status-".concat(state));
|
||||||
};
|
};
|
||||||
exports.setStatusState = setStatusState;
|
exports.setStatusState = setStatusState;
|
||||||
var setProgressState = function (progressElement, percentage) {
|
var setProgressState = function (progressElement, value, min, max, unit) {
|
||||||
var value = progressElement.querySelector('.ntsh_progress-value');
|
var percentage = (value - min) / (max - min);
|
||||||
value.style.width = "".concat(percentage * 100, "%");
|
var progressValue = progressElement.querySelector('.ntsh_progress-value');
|
||||||
|
progressValue.style.width = "".concat(percentage * 100, "%");
|
||||||
var label = progressElement.querySelector('.ntsh_progress-label');
|
var label = progressElement.querySelector('.ntsh_progress-label');
|
||||||
label.innerText = "".concat(Math.round(percentage * 100), "%");
|
label.innerText = "".concat(value).concat(unit);
|
||||||
};
|
};
|
||||||
exports.setProgressState = setProgressState;
|
exports.setProgressState = setProgressState;
|
||||||
var createProgress = function (value) {
|
var createProgress = function (value, min, max, unit) {
|
||||||
var progress = (0, morphux_1.ce)('div', 'ntsh_progress');
|
var progress = (0, morphux_1.ce)('div', 'ntsh_progress');
|
||||||
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-value'));
|
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-value'));
|
||||||
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-label'));
|
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-label'));
|
||||||
(0, exports.setProgressState)(progress, value);
|
(0, exports.setProgressState)(progress, value, min, max, unit);
|
||||||
return progress;
|
return progress;
|
||||||
};
|
};
|
||||||
exports.createProgress = createProgress;
|
exports.createProgress = createProgress;
|
||||||
|
|||||||
2
frontend/views/dashboard/dist/utils.js.map
vendored
2
frontend/views/dashboard/dist/utils.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../ts/utils.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../ts/utils.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -138,6 +138,29 @@
|
|||||||
<td>
|
<td>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<div class="mux_text">Service</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="ntsh_status ntsh_dashboard-unity-outofservicestatus"></div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="ntsh_dashboard-unity-outofserviceinfo mux_text">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="ntsh_buttons">
|
||||||
|
<div class="ntsh_button mux_text ntsh_dashboard-unity-enableoutofservice">
|
||||||
|
Set Out of Service
|
||||||
|
</div>
|
||||||
|
<div class="ntsh_button mux_text ntsh_dashboard-unity-disableoutofservice">
|
||||||
|
Set Operational
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div class="ntsh_dashboard-error ntsh_dashboard-unity-error">
|
<div class="ntsh_dashboard-error ntsh_dashboard-unity-error">
|
||||||
@@ -229,6 +252,18 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="ntsh_dashboard-box ntsh_dashboard-unitysensors">
|
||||||
|
<div class="ntsh_dashboard-box-header mux_header">Sensors</div>
|
||||||
|
|
||||||
|
<table class="ntsh_vertical ntsh_dashboard-unity-sensors">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<div class="mux_text ntsh_dashboard-unity-sensors-loading">Waiting for Unity...
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -11628,6 +11628,17 @@
|
|||||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {
|
||||||
|
__assign = Object.assign || function(t) {
|
||||||
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||||
|
s = arguments[i];
|
||||||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
||||||
|
t[p] = s[p];
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
return __assign.apply(this, arguments);
|
||||||
|
};
|
||||||
Object.defineProperty(Component_MenuBar, "__esModule", { value: true });
|
Object.defineProperty(Component_MenuBar, "__esModule", { value: true });
|
||||||
Component_MenuBar.ComponentMenuBar = void 0;
|
Component_MenuBar.ComponentMenuBar = void 0;
|
||||||
var Index_1 = requireIndex();
|
var Index_1 = requireIndex();
|
||||||
@@ -11854,15 +11865,27 @@
|
|||||||
var inner = (0, CE_1.ce)('div', 'mux_mobilemenu-inner');
|
var inner = (0, CE_1.ce)('div', 'mux_mobilemenu-inner');
|
||||||
this.mobileMenu = new ComponentMenuBar({
|
this.mobileMenu = new ComponentMenuBar({
|
||||||
direction: 'vertical',
|
direction: 'vertical',
|
||||||
left: this._leftItems.filter(function (item) {
|
left: this._leftItems
|
||||||
|
.filter(function (item) {
|
||||||
if (item.uniqueIdentifier == undefined)
|
if (item.uniqueIdentifier == undefined)
|
||||||
return true;
|
return true;
|
||||||
return !_this.mobileIgnoreItems.includes(item.uniqueIdentifier);
|
return !_this.mobileIgnoreItems.includes(item.uniqueIdentifier);
|
||||||
|
})
|
||||||
|
.map(function (item) {
|
||||||
|
if (item.type !== 'icon')
|
||||||
|
return item;
|
||||||
|
return __assign(__assign({}, item), { type: 'normal' });
|
||||||
}),
|
}),
|
||||||
right: this._rightItems.filter(function (item) {
|
right: this._rightItems
|
||||||
|
.filter(function (item) {
|
||||||
if (item.uniqueIdentifier == undefined)
|
if (item.uniqueIdentifier == undefined)
|
||||||
return true;
|
return true;
|
||||||
return !_this.mobileIgnoreItems.includes(item.uniqueIdentifier);
|
return !_this.mobileIgnoreItems.includes(item.uniqueIdentifier);
|
||||||
|
})
|
||||||
|
.map(function (item) {
|
||||||
|
if (item.type !== 'icon')
|
||||||
|
return item;
|
||||||
|
return __assign(__assign({}, item), { type: 'normal' });
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
this.mobileMenu.setSelected(this.selected);
|
this.mobileMenu.setSelected(this.selected);
|
||||||
@@ -14399,6 +14422,9 @@
|
|||||||
this.container = document.querySelector('.ntsh_menubar');
|
this.container = document.querySelector('.ntsh_menubar');
|
||||||
this._Main = main;
|
this._Main = main;
|
||||||
this.build();
|
this.build();
|
||||||
|
this._Main.socket.on('supportNumber', function (number) {
|
||||||
|
_this.supportNumber = number;
|
||||||
|
});
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
if ((localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem('serviceMode')) === 'true')
|
if ((localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem('serviceMode')) === 'true')
|
||||||
_this.toggleServiceMode(true, true);
|
_this.toggleServiceMode(true, true);
|
||||||
@@ -14407,10 +14433,49 @@
|
|||||||
MenuBar.prototype.build = function () {
|
MenuBar.prototype.build = function () {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
this.menubar = new Component_MenuBar_1.ComponentMenuBar({
|
this.menubar = new Component_MenuBar_1.ComponentMenuBar({
|
||||||
|
mobile: {
|
||||||
|
left: [
|
||||||
|
{
|
||||||
|
type: 'icon',
|
||||||
|
text: 'Restart',
|
||||||
|
materialIcon: 'restart_alt',
|
||||||
|
uniqueIdentifier: 'restart_installation',
|
||||||
|
click: function () { return __awaiter$4(_this, void 0, void 0, function () {
|
||||||
|
var mobileMenu;
|
||||||
|
return __generator$4(this, function (_a) {
|
||||||
|
mobileMenu = document.querySelector('.mux_mobilemenu');
|
||||||
|
mobileMenu === null || mobileMenu === void 0 ? void 0 : mobileMenu.click();
|
||||||
|
this.restartInstallation();
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
right: [
|
||||||
|
{
|
||||||
|
type: 'icon',
|
||||||
|
text: 'Support',
|
||||||
|
materialIcon: 'call_quality',
|
||||||
|
uniqueIdentifier: 'call_support',
|
||||||
|
click: function () { return _this.showSupport(); },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
left: [
|
left: [
|
||||||
{
|
{
|
||||||
type: 'image',
|
type: 'normal',
|
||||||
url: '/img/morphix_logo_white.png',
|
text: 'Restart',
|
||||||
|
materialIcon: 'restart_alt',
|
||||||
|
uniqueIdentifier: 'restart_installation',
|
||||||
|
click: function () { return __awaiter$4(_this, void 0, void 0, function () {
|
||||||
|
var mobileMenu;
|
||||||
|
return __generator$4(this, function (_a) {
|
||||||
|
mobileMenu = document.querySelector('.mux_mobilemenu');
|
||||||
|
mobileMenu === null || mobileMenu === void 0 ? void 0 : mobileMenu.click();
|
||||||
|
this.restartInstallation();
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'normal',
|
type: 'normal',
|
||||||
@@ -14446,7 +14511,16 @@
|
|||||||
],
|
],
|
||||||
right: [
|
right: [
|
||||||
{
|
{
|
||||||
type: 'normal',
|
type: 'icon',
|
||||||
|
text: 'Support',
|
||||||
|
materialIcon: 'call_quality',
|
||||||
|
uniqueIdentifier: 'call_support',
|
||||||
|
click: function () { return _this.showSupport(); },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: document.body.classList.contains('ntsh_service')
|
||||||
|
? 'normal'
|
||||||
|
: 'icon',
|
||||||
text: document.body.classList.contains('ntsh_service')
|
text: document.body.classList.contains('ntsh_service')
|
||||||
? 'Exit Service'
|
? 'Exit Service'
|
||||||
: 'Service Mode',
|
: 'Service Mode',
|
||||||
@@ -14469,6 +14543,55 @@
|
|||||||
this.container.innerHTML = '';
|
this.container.innerHTML = '';
|
||||||
this.container.appendChild(this.menubar.container);
|
this.container.appendChild(this.menubar.container);
|
||||||
};
|
};
|
||||||
|
MenuBar.prototype.showSupport = function () {
|
||||||
|
return __awaiter$4(this, void 0, void 0, function () {
|
||||||
|
var dialog, callAnchor;
|
||||||
|
return __generator$4(this, function (_a) {
|
||||||
|
dialog = new morphux_1$5.MorphComponent.Dialog({
|
||||||
|
title: 'Contact Support',
|
||||||
|
width: 'medium',
|
||||||
|
height: 'auto',
|
||||||
|
okButtonVisible: false,
|
||||||
|
cancelButtonVisible: false,
|
||||||
|
});
|
||||||
|
this.supportNumber.slice();
|
||||||
|
callAnchor = (0, morphux_1$5.ce)('a', 'ntsh_callanchor', { href: "tel:".concat(this.supportNumber) }, "+".concat(this.supportNumber));
|
||||||
|
dialog.content.appendChild(callAnchor);
|
||||||
|
setTimeout(function () { return callAnchor.click(); }, 100);
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
MenuBar.prototype.restartInstallation = function () {
|
||||||
|
return __awaiter$4(this, void 0, void 0, function () {
|
||||||
|
var confirmed;
|
||||||
|
return __generator$4(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0: return [4 /*yield*/, morphux_1$5.MorphFeature.Confirm({
|
||||||
|
title: 'Restart Installation',
|
||||||
|
message: 'Are you sure you want to restart the installation?',
|
||||||
|
})];
|
||||||
|
case 1:
|
||||||
|
confirmed = _a.sent();
|
||||||
|
if (!confirmed)
|
||||||
|
return [2 /*return*/];
|
||||||
|
morphux_1$5.MorphFeature.Loader({
|
||||||
|
active: true,
|
||||||
|
message: 'Restarting installation...',
|
||||||
|
});
|
||||||
|
this._Main.socket.emit('restartInstallation', function (response) {
|
||||||
|
morphux_1$5.MorphFeature.Loader({ active: false });
|
||||||
|
if (!response.succeed)
|
||||||
|
return morphux_1$5.MorphFeature.Alert({
|
||||||
|
title: 'Error',
|
||||||
|
message: response.message,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return [2 /*return*/];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
MenuBar.prototype.toggleServiceMode = function (mode, skipPin) {
|
MenuBar.prototype.toggleServiceMode = function (mode, skipPin) {
|
||||||
return __awaiter$4(this, void 0, void 0, function () {
|
return __awaiter$4(this, void 0, void 0, function () {
|
||||||
var newMode, servicePin;
|
var newMode, servicePin;
|
||||||
@@ -14671,18 +14794,19 @@
|
|||||||
statusElement.classList.add("ntsh_status-".concat(state));
|
statusElement.classList.add("ntsh_status-".concat(state));
|
||||||
};
|
};
|
||||||
exports.setStatusState = setStatusState;
|
exports.setStatusState = setStatusState;
|
||||||
var setProgressState = function (progressElement, percentage) {
|
var setProgressState = function (progressElement, value, min, max, unit) {
|
||||||
var value = progressElement.querySelector('.ntsh_progress-value');
|
var percentage = (value - min) / (max - min);
|
||||||
value.style.width = "".concat(percentage * 100, "%");
|
var progressValue = progressElement.querySelector('.ntsh_progress-value');
|
||||||
|
progressValue.style.width = "".concat(percentage * 100, "%");
|
||||||
var label = progressElement.querySelector('.ntsh_progress-label');
|
var label = progressElement.querySelector('.ntsh_progress-label');
|
||||||
label.innerText = "".concat(Math.round(percentage * 100), "%");
|
label.innerText = "".concat(value).concat(unit);
|
||||||
};
|
};
|
||||||
exports.setProgressState = setProgressState;
|
exports.setProgressState = setProgressState;
|
||||||
var createProgress = function (value) {
|
var createProgress = function (value, min, max, unit) {
|
||||||
var progress = (0, morphux_1.ce)('div', 'ntsh_progress');
|
var progress = (0, morphux_1.ce)('div', 'ntsh_progress');
|
||||||
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-value'));
|
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-value'));
|
||||||
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-label'));
|
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-label'));
|
||||||
(0, exports.setProgressState)(progress, value);
|
(0, exports.setProgressState)(progress, value, min, max, unit);
|
||||||
return progress;
|
return progress;
|
||||||
};
|
};
|
||||||
exports.createProgress = createProgress;
|
exports.createProgress = createProgress;
|
||||||
@@ -15520,6 +15644,10 @@
|
|||||||
this.uptimeInfo = document.querySelector('.ntsh_dashboard-unity-uptime');
|
this.uptimeInfo = document.querySelector('.ntsh_dashboard-unity-uptime');
|
||||||
this.webSocketStatus = document.querySelector('.ntsh_dashboard-unity-websocketstatus');
|
this.webSocketStatus = document.querySelector('.ntsh_dashboard-unity-websocketstatus');
|
||||||
this.webSocketInfo = document.querySelector('.ntsh_dashboard-unity-websocketinfo');
|
this.webSocketInfo = document.querySelector('.ntsh_dashboard-unity-websocketinfo');
|
||||||
|
this.outOfServiceStatus = document.querySelector('.ntsh_dashboard-unity-outofservicestatus');
|
||||||
|
this.outOfServiceInfo = document.querySelector('.ntsh_dashboard-unity-outofserviceinfo');
|
||||||
|
this.enableOutOfServiceButton = document.querySelector('.ntsh_dashboard-unity-enableoutofservice');
|
||||||
|
this.disableOutOfServiceButton = document.querySelector('.ntsh_dashboard-unity-disableoutofservice');
|
||||||
this.zedStreamStatus = document.querySelector('.ntsh_dashboard-unity-zedstreamstatus');
|
this.zedStreamStatus = document.querySelector('.ntsh_dashboard-unity-zedstreamstatus');
|
||||||
this.zedStreamInfo = document.querySelector('.ntsh_dashboard-unity-zedstreaminfo');
|
this.zedStreamInfo = document.querySelector('.ntsh_dashboard-unity-zedstreaminfo');
|
||||||
this.zedStreamFps = document.querySelector('.ntsh_dashboard-unity-zedstreamfps');
|
this.zedStreamFps = document.querySelector('.ntsh_dashboard-unity-zedstreamfps');
|
||||||
@@ -15528,6 +15656,7 @@
|
|||||||
this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing');
|
this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing');
|
||||||
this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress');
|
this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress');
|
||||||
this.parametersTable = document.querySelector('.ntsh_dashboard-unity-parameters');
|
this.parametersTable = document.querySelector('.ntsh_dashboard-unity-parameters');
|
||||||
|
this.sensorsTable = document.querySelector('.ntsh_dashboard-unity-sensors');
|
||||||
this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error');
|
this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error');
|
||||||
this.errorText = document.querySelector('.ntsh_dashboard-unity-errortext');
|
this.errorText = document.querySelector('.ntsh_dashboard-unity-errortext');
|
||||||
this._Main = Main;
|
this._Main = Main;
|
||||||
@@ -15545,7 +15674,7 @@
|
|||||||
}
|
}
|
||||||
(0, utils_1.setStatusState)(this.processStatus, {
|
(0, utils_1.setStatusState)(this.processStatus, {
|
||||||
RUNNING: 'green',
|
RUNNING: 'green',
|
||||||
STOPPED: 'red',
|
STOPPED: 'gray',
|
||||||
STARTING: 'yellow',
|
STARTING: 'yellow',
|
||||||
PROBLEM: 'red',
|
PROBLEM: 'red',
|
||||||
}[state.state]);
|
}[state.state]);
|
||||||
@@ -15571,6 +15700,28 @@
|
|||||||
FAILED: 'red',
|
FAILED: 'red',
|
||||||
}[state.state]);
|
}[state.state]);
|
||||||
this.webSocketInfo.innerText = (_a = state.message) !== null && _a !== void 0 ? _a : '';
|
this.webSocketInfo.innerText = (_a = state.message) !== null && _a !== void 0 ? _a : '';
|
||||||
|
// ----------- Out of Service -----------
|
||||||
|
(0, utils_1.setStatusState)(this.outOfServiceStatus, state.parameters.outOfService == null
|
||||||
|
? 'gray'
|
||||||
|
: state.parameters.outOfService
|
||||||
|
? 'red'
|
||||||
|
: 'green');
|
||||||
|
this.outOfServiceInfo.innerText =
|
||||||
|
state.parameters.outOfService == null
|
||||||
|
? ''
|
||||||
|
: state.parameters.outOfService
|
||||||
|
? 'Out of Service'
|
||||||
|
: 'Operational';
|
||||||
|
this.enableOutOfServiceButton.style.display =
|
||||||
|
state.parameters.outOfService == null ||
|
||||||
|
state.parameters.outOfService
|
||||||
|
? 'none'
|
||||||
|
: 'flex';
|
||||||
|
this.disableOutOfServiceButton.style.display =
|
||||||
|
state.parameters.outOfService &&
|
||||||
|
state.parameters.outOfService != null
|
||||||
|
? 'flex'
|
||||||
|
: 'none';
|
||||||
// ----------- ZED Stream -----------
|
// ----------- ZED Stream -----------
|
||||||
(0, utils_1.setStatusState)(this.zedStreamStatus, state.parameters.zedReady ? 'green' : 'red');
|
(0, utils_1.setStatusState)(this.zedStreamStatus, state.parameters.zedReady ? 'green' : 'red');
|
||||||
this.zedStreamInfo.innerText = state.parameters.zedReady
|
this.zedStreamInfo.innerText = state.parameters.zedReady
|
||||||
@@ -15585,9 +15736,10 @@
|
|||||||
this.timelineStanding.innerText = state.parameters.timelineStanding
|
this.timelineStanding.innerText = state.parameters.timelineStanding
|
||||||
? 'Yes'
|
? 'Yes'
|
||||||
: 'No';
|
: 'No';
|
||||||
(0, utils_1.setProgressState)(this.timelineProgress, state.parameters.timelineProgress);
|
(0, utils_1.setProgressState)(this.timelineProgress, Math.round(state.parameters.timelineProgress * 100), 0, 100, '%');
|
||||||
// ----------- Parameters -----------
|
// ----------- Parameters -----------
|
||||||
this.renderParameterSliders(state.parameters.parameters);
|
this.renderParameterSliders(state.state == 'CONNECTED' ? state.parameters.sliders : []);
|
||||||
|
this.renderParameterSensors(state.state == 'CONNECTED' ? state.parameters.sensors : []);
|
||||||
// ----------- Error -----------
|
// ----------- Error -----------
|
||||||
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0)
|
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0)
|
||||||
this.webSocketError = state.error;
|
this.webSocketError = state.error;
|
||||||
@@ -15595,55 +15747,107 @@
|
|||||||
this.webSocketError = null;
|
this.webSocketError = null;
|
||||||
this.updateError();
|
this.updateError();
|
||||||
};
|
};
|
||||||
DashboardUnity.prototype.renderParameterSliders = function (parameters) {
|
DashboardUnity.prototype.renderParameterSliders = function (sliders) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
if (parameters.length === 0)
|
|
||||||
return;
|
|
||||||
var existingSliders = this.parametersTable.querySelectorAll('.ntsh_dashboard-unity-parameter-row');
|
var existingSliders = this.parametersTable.querySelectorAll('.ntsh_dashboard-unity-parameter-row');
|
||||||
if (existingSliders.length !== parameters.length) {
|
if (existingSliders.length !== sliders.length) {
|
||||||
this.parametersTable.innerHTML = '';
|
this.parametersTable.innerHTML = '';
|
||||||
parameters.forEach(function (param) {
|
if (sliders.length === 0) {
|
||||||
var row = (0, morphux_1$1.ce)('tr', 'ntsh_dashboard-unity-parameter-row');
|
var row = (0, morphux_1$1.ce)('tr');
|
||||||
var nameCell = (0, morphux_1$1.ce)('td');
|
var cell = (0, morphux_1$1.ce)('td');
|
||||||
nameCell.appendChild((0, morphux_1$1.ce)('div', 'mux_text', null, param.sliderName));
|
cell.appendChild((0, morphux_1$1.ce)('div', ['mux_text', 'ntsh_dashboard-unity-parameters-loading'], null, 'Waiting for Unity...'));
|
||||||
row.appendChild(nameCell);
|
row.appendChild(cell);
|
||||||
var progressCell = (0, morphux_1$1.ce)('td', 'no-service');
|
this.parametersTable.appendChild(row);
|
||||||
progressCell.appendChild((0, utils_1.createProgress)(param.outputValue));
|
}
|
||||||
row.appendChild(progressCell);
|
else
|
||||||
var sliderCell = (0, morphux_1$1.ce)('td', 'only-service');
|
sliders.forEach(function (slider) {
|
||||||
var sliderProgress = (0, utils_1.createProgress)(param.outputValue);
|
var _a, _b;
|
||||||
var sliderValue = sliderProgress.querySelector('.ntsh_progress-value');
|
var multiplierFactor = (_a = slider.visualMultiplier) !== null && _a !== void 0 ? _a : 1;
|
||||||
sliderValue.classList.add('mux_resizer');
|
var decimalPlacesFactor = Math.pow(10, ((_b = slider.decimalPlaces) !== null && _b !== void 0 ? _b : 0));
|
||||||
sliderCell.appendChild(sliderProgress);
|
var value = Math.round(slider.outputValue *
|
||||||
var resizer = new morphux_1$1.MorphComponent.Resizer({
|
multiplierFactor *
|
||||||
existingContainer: sliderValue,
|
decimalPlacesFactor) / decimalPlacesFactor;
|
||||||
direction: 'right',
|
var row = (0, morphux_1$1.ce)('tr', 'ntsh_dashboard-unity-parameter-row');
|
||||||
relative: true,
|
var nameCell = (0, morphux_1$1.ce)('td');
|
||||||
min: 0,
|
nameCell.appendChild((0, morphux_1$1.ce)('div', 'mux_text', null, slider.sliderName));
|
||||||
max: function () { return sliderProgress.clientWidth; },
|
row.appendChild(nameCell);
|
||||||
|
var progressCell = (0, morphux_1$1.ce)('td', 'no-service');
|
||||||
|
progressCell.appendChild((0, utils_1.createProgress)(value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit));
|
||||||
|
row.appendChild(progressCell);
|
||||||
|
var sliderCell = (0, morphux_1$1.ce)('td', 'only-service');
|
||||||
|
var sliderProgress = (0, utils_1.createProgress)(value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||||
|
var sliderValue = sliderProgress.querySelector('.ntsh_progress-value');
|
||||||
|
sliderValue.classList.add('mux_resizer');
|
||||||
|
sliderCell.appendChild(sliderProgress);
|
||||||
|
var resizer = new morphux_1$1.MorphComponent.Resizer({
|
||||||
|
existingContainer: sliderValue,
|
||||||
|
direction: 'right',
|
||||||
|
relative: true,
|
||||||
|
min: 0,
|
||||||
|
max: function () { return sliderProgress.clientWidth; },
|
||||||
|
});
|
||||||
|
var lastValue = -1;
|
||||||
|
resizer.on('resized', function (size) {
|
||||||
|
var percentage = Math.round((size / sliderProgress.clientWidth) * 100) / 100;
|
||||||
|
var actualValue = slider.min + percentage * (slider.max - slider.min);
|
||||||
|
if (actualValue === lastValue)
|
||||||
|
return;
|
||||||
|
lastValue = actualValue;
|
||||||
|
_this._Main.socket.emit('unityWebSocket', 'parameterValue', slider.sliderIndex, actualValue);
|
||||||
|
(0, utils_1.setProgressState)(sliderProgress, Math.round(actualValue *
|
||||||
|
multiplierFactor *
|
||||||
|
decimalPlacesFactor) / decimalPlacesFactor, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||||
|
});
|
||||||
|
row.appendChild(sliderCell);
|
||||||
|
_this.parametersTable.appendChild(row);
|
||||||
});
|
});
|
||||||
var lastPercentage = -1;
|
|
||||||
resizer.on('resized', function (size) {
|
|
||||||
var percentage = Math.round((size / sliderProgress.clientWidth) * 100) /
|
|
||||||
100;
|
|
||||||
if (percentage === lastPercentage)
|
|
||||||
return;
|
|
||||||
lastPercentage = percentage;
|
|
||||||
_this._Main.socket.emit('unityWebSocket', 'parameterValue', param.sliderIndex, percentage);
|
|
||||||
(0, utils_1.setProgressState)(sliderProgress, percentage);
|
|
||||||
});
|
|
||||||
row.appendChild(sliderCell);
|
|
||||||
_this.parametersTable.appendChild(row);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
existingSliders.forEach(function (row, index) {
|
existingSliders.forEach(function (row, index) {
|
||||||
var value = parameters[index].outputValue;
|
var _a, _b;
|
||||||
|
var slider = sliders[index];
|
||||||
|
var multiplierFactor = (_a = slider.visualMultiplier) !== null && _a !== void 0 ? _a : 1;
|
||||||
|
var decimalPlacesFactor = Math.pow(10, ((_b = slider.decimalPlaces) !== null && _b !== void 0 ? _b : 0));
|
||||||
|
var value = Math.round(slider.outputValue *
|
||||||
|
multiplierFactor *
|
||||||
|
decimalPlacesFactor) / decimalPlacesFactor;
|
||||||
var progressElement = row.querySelector('.no-service .ntsh_progress');
|
var progressElement = row.querySelector('.no-service .ntsh_progress');
|
||||||
(0, utils_1.setProgressState)(progressElement, value);
|
(0, utils_1.setProgressState)(progressElement, value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||||
var sliderElement = row.querySelector('.only-service .ntsh_progress');
|
var sliderElement = row.querySelector('.only-service .ntsh_progress');
|
||||||
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
||||||
(0, utils_1.setProgressState)(sliderElement, value);
|
(0, utils_1.setProgressState)(sliderElement, value, slider.min * multiplierFactor, slider.max * multiplierFactor, slider.unit);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
DashboardUnity.prototype.renderParameterSensors = function (sensors) {
|
||||||
|
var _this = this;
|
||||||
|
var existingSensors = this.sensorsTable.querySelectorAll('.ntsh_dashboard-unity-sensor-row');
|
||||||
|
if (existingSensors.length !== sensors.length) {
|
||||||
|
this.sensorsTable.innerHTML = '';
|
||||||
|
if (sensors.length === 0) {
|
||||||
|
var row = (0, morphux_1$1.ce)('tr');
|
||||||
|
var cell = (0, morphux_1$1.ce)('td');
|
||||||
|
cell.appendChild((0, morphux_1$1.ce)('div', ['mux_text', 'ntsh_dashboard-unity-sensors-loading'], null, 'Waiting for Unity...'));
|
||||||
|
row.appendChild(cell);
|
||||||
|
this.sensorsTable.appendChild(row);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sensors.forEach(function (sensor) {
|
||||||
|
var row = (0, morphux_1$1.ce)('tr', 'ntsh_dashboard-unity-sensor-row');
|
||||||
|
var nameCell = (0, morphux_1$1.ce)('td');
|
||||||
|
nameCell.appendChild((0, morphux_1$1.ce)('div', 'mux_text', null, sensor.deviceName));
|
||||||
|
row.appendChild(nameCell);
|
||||||
|
var progressCell = (0, morphux_1$1.ce)('td');
|
||||||
|
progressCell.appendChild((0, utils_1.createProgress)(Math.round(sensor.outputValue * 100), 0, 100, '%'));
|
||||||
|
row.appendChild(progressCell);
|
||||||
|
_this.sensorsTable.appendChild(row);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
existingSensors.forEach(function (row, index) {
|
||||||
|
var value = sensors[index].outputValue;
|
||||||
|
var progressElement = row.querySelector('.ntsh_progress');
|
||||||
|
(0, utils_1.setProgressState)(progressElement, Math.round(value * 100), 0, 100, '%');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -15674,10 +15878,23 @@
|
|||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
});
|
});
|
||||||
}); });
|
}); });
|
||||||
|
this.enableOutOfServiceButton.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
this.executeCommand('enableOutOfService', 'Are you sure you want to set the installation to "Out of Service"?', 'unityWebSocket');
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); });
|
||||||
|
this.disableOutOfServiceButton.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
this.executeCommand('disableOutOfService', 'Are you sure you want to set the installation to "Operational"?', 'unityWebSocket');
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); });
|
||||||
};
|
};
|
||||||
DashboardUnity.prototype.executeCommand = function (command, message) {
|
DashboardUnity.prototype.executeCommand = function (command_1, message_1) {
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, arguments, void 0, function (command, message, type) {
|
||||||
var confirmed;
|
var confirmed;
|
||||||
|
if (type === void 0) { type = 'unityRunner'; }
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
switch (_a.label) {
|
switch (_a.label) {
|
||||||
case 0: return [4 /*yield*/, morphux_1$1.MorphFeature.Confirm({
|
case 0: return [4 /*yield*/, morphux_1$1.MorphFeature.Confirm({
|
||||||
@@ -15690,9 +15907,9 @@
|
|||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
morphux_1$1.MorphFeature.Loader({
|
morphux_1$1.MorphFeature.Loader({
|
||||||
active: true,
|
active: true,
|
||||||
message: "Requesting Unity Runner ".concat(command, "..."),
|
message: "Dispatching command...",
|
||||||
});
|
});
|
||||||
this._Main.socket.emit('unityRunner', command, function (response) {
|
this._Main.socket.emit(type, command, function (response) {
|
||||||
morphux_1$1.MorphFeature.Loader({ active: false });
|
morphux_1$1.MorphFeature.Loader({ active: false });
|
||||||
if (!response.succeed)
|
if (!response.succeed)
|
||||||
return morphux_1$1.MorphFeature.Alert({
|
return morphux_1$1.MorphFeature.Alert({
|
||||||
@@ -15701,7 +15918,7 @@
|
|||||||
});
|
});
|
||||||
morphux_1$1.MorphFeature.Notification({
|
morphux_1$1.MorphFeature.Notification({
|
||||||
level: 'success',
|
level: 'success',
|
||||||
message: "Unity Runner is ".concat(command, "ing..."),
|
message: "Dispatched command",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -38,6 +38,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ntsh_dashboard-unity-sensors {
|
||||||
|
.ntsh_dashboard-unity-sensors-loading {
|
||||||
|
text-align: center;
|
||||||
|
color: #9d9d9d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
@@ -175,4 +182,18 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh_callanchor {
|
||||||
|
width: 100%;
|
||||||
|
background: #202020;
|
||||||
|
margin-bottom: calc(var(--mux-edge-offset) * -1);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 30px;
|
||||||
|
padding: var(--mux-edge-offset) 0px;
|
||||||
|
color: #fff;
|
||||||
|
font-family: monospace;
|
||||||
|
letter-spacing: 0px;
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.mux_menubar-locater.mux_left {
|
.mux_menubar-locater.mux_left {
|
||||||
.mux_menubar-item {
|
.mux_menubar-item:not([uid="restart_installation"]) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -32,6 +32,7 @@ body {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.sn {
|
.sn {
|
||||||
|
|||||||
@@ -2400,6 +2400,10 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
color: #9d9d9d;
|
color: #9d9d9d;
|
||||||
}
|
}
|
||||||
|
.ntsh_dashboard .ntsh_dashboard-unity-sensors .ntsh_dashboard-unity-sensors-loading {
|
||||||
|
text-align: center;
|
||||||
|
color: #9d9d9d;
|
||||||
|
}
|
||||||
.ntsh_dashboard table {
|
.ntsh_dashboard table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
@@ -2506,6 +2510,20 @@ body {
|
|||||||
background: #5a5a5a;
|
background: #5a5a5a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ntsh_callanchor {
|
||||||
|
width: 100%;
|
||||||
|
background: #202020;
|
||||||
|
margin-bottom: calc(var(--mux-edge-offset) * -1);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 30px;
|
||||||
|
padding: var(--mux-edge-offset) 0px;
|
||||||
|
color: #fff;
|
||||||
|
font-family: monospace;
|
||||||
|
letter-spacing: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
.ntsh_tabs {
|
.ntsh_tabs {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset: 50px 0 0 0;
|
inset: 50px 0 0 0;
|
||||||
@@ -2555,7 +2573,7 @@ body {
|
|||||||
body:not(.ntsh_service) .ntsh_buttons {
|
body:not(.ntsh_service) .ntsh_buttons {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
body:not(.ntsh_service) .mux_menubar-locater.mux_left .mux_menubar-item {
|
body:not(.ntsh_service) .mux_menubar-locater.mux_left .mux_menubar-item:not([uid=restart_installation]) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
body:not(.ntsh_service) .only-service {
|
body:not(.ntsh_service) .only-service {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -35,6 +35,19 @@ export class DashboardUnity {
|
|||||||
'.ntsh_dashboard-unity-websocketinfo'
|
'.ntsh_dashboard-unity-websocketinfo'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
outOfServiceStatus: HTMLDivElement = document.querySelector(
|
||||||
|
'.ntsh_dashboard-unity-outofservicestatus'
|
||||||
|
);
|
||||||
|
outOfServiceInfo: HTMLDivElement = document.querySelector(
|
||||||
|
'.ntsh_dashboard-unity-outofserviceinfo'
|
||||||
|
);
|
||||||
|
enableOutOfServiceButton: HTMLDivElement = document.querySelector(
|
||||||
|
'.ntsh_dashboard-unity-enableoutofservice'
|
||||||
|
);
|
||||||
|
disableOutOfServiceButton: HTMLDivElement = document.querySelector(
|
||||||
|
'.ntsh_dashboard-unity-disableoutofservice'
|
||||||
|
);
|
||||||
|
|
||||||
zedStreamStatus: HTMLDivElement = document.querySelector(
|
zedStreamStatus: HTMLDivElement = document.querySelector(
|
||||||
'.ntsh_dashboard-unity-zedstreamstatus'
|
'.ntsh_dashboard-unity-zedstreamstatus'
|
||||||
);
|
);
|
||||||
@@ -63,6 +76,10 @@ export class DashboardUnity {
|
|||||||
'.ntsh_dashboard-unity-parameters'
|
'.ntsh_dashboard-unity-parameters'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
sensorsTable: HTMLTableElement = document.querySelector(
|
||||||
|
'.ntsh_dashboard-unity-sensors'
|
||||||
|
);
|
||||||
|
|
||||||
errorContainer: HTMLDivElement = document.querySelector(
|
errorContainer: HTMLDivElement = document.querySelector(
|
||||||
'.ntsh_dashboard-unity-error'
|
'.ntsh_dashboard-unity-error'
|
||||||
);
|
);
|
||||||
@@ -91,7 +108,7 @@ export class DashboardUnity {
|
|||||||
this.processStatus,
|
this.processStatus,
|
||||||
{
|
{
|
||||||
RUNNING: 'green',
|
RUNNING: 'green',
|
||||||
STOPPED: 'red',
|
STOPPED: 'gray',
|
||||||
STARTING: 'yellow',
|
STARTING: 'yellow',
|
||||||
PROBLEM: 'red',
|
PROBLEM: 'red',
|
||||||
}[state.state] as StatusType
|
}[state.state] as StatusType
|
||||||
@@ -126,6 +143,33 @@ export class DashboardUnity {
|
|||||||
);
|
);
|
||||||
this.webSocketInfo.innerText = state.message ?? '';
|
this.webSocketInfo.innerText = state.message ?? '';
|
||||||
|
|
||||||
|
// ----------- Out of Service -----------
|
||||||
|
setStatusState(
|
||||||
|
this.outOfServiceStatus,
|
||||||
|
state.parameters.outOfService == null
|
||||||
|
? 'gray'
|
||||||
|
: state.parameters.outOfService
|
||||||
|
? 'red'
|
||||||
|
: 'green'
|
||||||
|
);
|
||||||
|
this.outOfServiceInfo.innerText =
|
||||||
|
state.parameters.outOfService == null
|
||||||
|
? ''
|
||||||
|
: state.parameters.outOfService
|
||||||
|
? 'Out of Service'
|
||||||
|
: 'Operational';
|
||||||
|
|
||||||
|
this.enableOutOfServiceButton.style.display =
|
||||||
|
state.parameters.outOfService == null ||
|
||||||
|
state.parameters.outOfService
|
||||||
|
? 'none'
|
||||||
|
: 'flex';
|
||||||
|
this.disableOutOfServiceButton.style.display =
|
||||||
|
state.parameters.outOfService &&
|
||||||
|
state.parameters.outOfService != null
|
||||||
|
? 'flex'
|
||||||
|
: 'none';
|
||||||
|
|
||||||
// ----------- ZED Stream -----------
|
// ----------- ZED Stream -----------
|
||||||
setStatusState(
|
setStatusState(
|
||||||
this.zedStreamStatus,
|
this.zedStreamStatus,
|
||||||
@@ -146,11 +190,19 @@ export class DashboardUnity {
|
|||||||
: 'No';
|
: 'No';
|
||||||
setProgressState(
|
setProgressState(
|
||||||
this.timelineProgress,
|
this.timelineProgress,
|
||||||
state.parameters.timelineProgress
|
Math.round(state.parameters.timelineProgress * 100),
|
||||||
|
0,
|
||||||
|
100,
|
||||||
|
'%'
|
||||||
);
|
);
|
||||||
|
|
||||||
// ----------- Parameters -----------
|
// ----------- Parameters -----------
|
||||||
this.renderParameterSliders(state.parameters.parameters);
|
this.renderParameterSliders(
|
||||||
|
state.state == 'CONNECTED' ? state.parameters.sliders : []
|
||||||
|
);
|
||||||
|
this.renderParameterSensors(
|
||||||
|
state.state == 'CONNECTED' ? state.parameters.sensors : []
|
||||||
|
);
|
||||||
|
|
||||||
// ----------- Error -----------
|
// ----------- Error -----------
|
||||||
if ((state?.error ?? '').trim().length > 0)
|
if ((state?.error ?? '').trim().length > 0)
|
||||||
@@ -159,78 +211,210 @@ export class DashboardUnity {
|
|||||||
this.updateError();
|
this.updateError();
|
||||||
}
|
}
|
||||||
|
|
||||||
private renderParameterSliders(parameters: UnityParameters['parameters']) {
|
private renderParameterSliders(sliders: UnityParameters['sliders']) {
|
||||||
if (parameters.length === 0) return;
|
|
||||||
|
|
||||||
const existingSliders = this.parametersTable.querySelectorAll(
|
const existingSliders = this.parametersTable.querySelectorAll(
|
||||||
'.ntsh_dashboard-unity-parameter-row'
|
'.ntsh_dashboard-unity-parameter-row'
|
||||||
);
|
);
|
||||||
|
|
||||||
if (existingSliders.length !== parameters.length) {
|
if (existingSliders.length !== sliders.length) {
|
||||||
this.parametersTable.innerHTML = '';
|
this.parametersTable.innerHTML = '';
|
||||||
|
|
||||||
parameters.forEach((param) => {
|
if (sliders.length === 0) {
|
||||||
const row = ce('tr', 'ntsh_dashboard-unity-parameter-row');
|
const row = ce('tr');
|
||||||
|
const cell = ce('td');
|
||||||
const nameCell = ce('td');
|
cell.appendChild(
|
||||||
nameCell.appendChild(
|
ce(
|
||||||
ce('div', 'mux_text', null, param.sliderName)
|
'div',
|
||||||
|
['mux_text', 'ntsh_dashboard-unity-parameters-loading'],
|
||||||
|
null,
|
||||||
|
'Waiting for Unity...'
|
||||||
|
)
|
||||||
);
|
);
|
||||||
row.appendChild(nameCell);
|
row.appendChild(cell);
|
||||||
|
|
||||||
const progressCell = ce('td', 'no-service');
|
|
||||||
progressCell.appendChild(createProgress(param.outputValue));
|
|
||||||
row.appendChild(progressCell);
|
|
||||||
|
|
||||||
const sliderCell = ce('td', 'only-service');
|
|
||||||
const sliderProgress = createProgress(param.outputValue);
|
|
||||||
const sliderValue: HTMLDivElement =
|
|
||||||
sliderProgress.querySelector('.ntsh_progress-value');
|
|
||||||
sliderValue.classList.add('mux_resizer');
|
|
||||||
sliderCell.appendChild(sliderProgress);
|
|
||||||
|
|
||||||
const resizer = new MorphComponent.Resizer({
|
|
||||||
existingContainer: sliderValue,
|
|
||||||
direction: 'right',
|
|
||||||
relative: true,
|
|
||||||
min: 0,
|
|
||||||
max: () => sliderProgress.clientWidth,
|
|
||||||
});
|
|
||||||
let lastPercentage: number = -1;
|
|
||||||
resizer.on('resized', (size) => {
|
|
||||||
const percentage =
|
|
||||||
Math.round((size / sliderProgress.clientWidth) * 100) /
|
|
||||||
100;
|
|
||||||
if (percentage === lastPercentage) return;
|
|
||||||
lastPercentage = percentage;
|
|
||||||
|
|
||||||
this._Main.socket.emit(
|
|
||||||
'unityWebSocket',
|
|
||||||
'parameterValue',
|
|
||||||
param.sliderIndex,
|
|
||||||
percentage
|
|
||||||
);
|
|
||||||
setProgressState(sliderProgress, percentage);
|
|
||||||
});
|
|
||||||
|
|
||||||
row.appendChild(sliderCell);
|
|
||||||
|
|
||||||
this.parametersTable.appendChild(row);
|
this.parametersTable.appendChild(row);
|
||||||
});
|
} else
|
||||||
|
sliders.forEach((slider) => {
|
||||||
|
const multiplierFactor = slider.visualMultiplier ?? 1;
|
||||||
|
const decimalPlacesFactor =
|
||||||
|
10 ** (slider.decimalPlaces ?? 0);
|
||||||
|
|
||||||
|
const value =
|
||||||
|
Math.round(
|
||||||
|
slider.outputValue *
|
||||||
|
multiplierFactor *
|
||||||
|
decimalPlacesFactor
|
||||||
|
) / decimalPlacesFactor;
|
||||||
|
|
||||||
|
const row = ce('tr', 'ntsh_dashboard-unity-parameter-row');
|
||||||
|
|
||||||
|
const nameCell = ce('td');
|
||||||
|
nameCell.appendChild(
|
||||||
|
ce('div', 'mux_text', null, slider.sliderName)
|
||||||
|
);
|
||||||
|
row.appendChild(nameCell);
|
||||||
|
|
||||||
|
const progressCell = ce('td', 'no-service');
|
||||||
|
progressCell.appendChild(
|
||||||
|
createProgress(
|
||||||
|
value,
|
||||||
|
slider.min * multiplierFactor,
|
||||||
|
slider.max * multiplierFactor,
|
||||||
|
slider.unit
|
||||||
|
)
|
||||||
|
);
|
||||||
|
row.appendChild(progressCell);
|
||||||
|
|
||||||
|
const sliderCell = ce('td', 'only-service');
|
||||||
|
const sliderProgress = createProgress(
|
||||||
|
value,
|
||||||
|
slider.min * multiplierFactor,
|
||||||
|
slider.max * multiplierFactor,
|
||||||
|
slider.unit
|
||||||
|
);
|
||||||
|
const sliderValue: HTMLDivElement =
|
||||||
|
sliderProgress.querySelector('.ntsh_progress-value');
|
||||||
|
sliderValue.classList.add('mux_resizer');
|
||||||
|
sliderCell.appendChild(sliderProgress);
|
||||||
|
|
||||||
|
const resizer = new MorphComponent.Resizer({
|
||||||
|
existingContainer: sliderValue,
|
||||||
|
direction: 'right',
|
||||||
|
relative: true,
|
||||||
|
min: 0,
|
||||||
|
max: () => sliderProgress.clientWidth,
|
||||||
|
});
|
||||||
|
let lastValue: number = -1;
|
||||||
|
resizer.on('resized', (size) => {
|
||||||
|
const percentage =
|
||||||
|
Math.round(
|
||||||
|
(size / sliderProgress.clientWidth) * 100
|
||||||
|
) / 100;
|
||||||
|
|
||||||
|
var actualValue =
|
||||||
|
slider.min + percentage * (slider.max - slider.min);
|
||||||
|
|
||||||
|
if (actualValue === lastValue) return;
|
||||||
|
lastValue = actualValue;
|
||||||
|
|
||||||
|
this._Main.socket.emit(
|
||||||
|
'unityWebSocket',
|
||||||
|
'parameterValue',
|
||||||
|
slider.sliderIndex,
|
||||||
|
actualValue
|
||||||
|
);
|
||||||
|
setProgressState(
|
||||||
|
sliderProgress,
|
||||||
|
Math.round(
|
||||||
|
actualValue *
|
||||||
|
multiplierFactor *
|
||||||
|
decimalPlacesFactor
|
||||||
|
) / decimalPlacesFactor,
|
||||||
|
slider.min * multiplierFactor,
|
||||||
|
slider.max * multiplierFactor,
|
||||||
|
slider.unit
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
row.appendChild(sliderCell);
|
||||||
|
|
||||||
|
this.parametersTable.appendChild(row);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
existingSliders.forEach((row, index) => {
|
existingSliders.forEach((row, index) => {
|
||||||
const value = parameters[index].outputValue;
|
const slider = sliders[index];
|
||||||
|
const multiplierFactor = slider.visualMultiplier ?? 1;
|
||||||
|
const decimalPlacesFactor = 10 ** (slider.decimalPlaces ?? 0);
|
||||||
|
|
||||||
|
const value =
|
||||||
|
Math.round(
|
||||||
|
slider.outputValue *
|
||||||
|
multiplierFactor *
|
||||||
|
decimalPlacesFactor
|
||||||
|
) / decimalPlacesFactor;
|
||||||
|
|
||||||
const progressElement: HTMLDivElement = row.querySelector(
|
const progressElement: HTMLDivElement = row.querySelector(
|
||||||
'.no-service .ntsh_progress'
|
'.no-service .ntsh_progress'
|
||||||
);
|
);
|
||||||
setProgressState(progressElement, value);
|
setProgressState(
|
||||||
|
progressElement,
|
||||||
|
value,
|
||||||
|
slider.min * multiplierFactor,
|
||||||
|
slider.max * multiplierFactor,
|
||||||
|
slider.unit
|
||||||
|
);
|
||||||
|
|
||||||
const sliderElement: HTMLDivElement = row.querySelector(
|
const sliderElement: HTMLDivElement = row.querySelector(
|
||||||
'.only-service .ntsh_progress'
|
'.only-service .ntsh_progress'
|
||||||
);
|
);
|
||||||
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
||||||
setProgressState(sliderElement, value);
|
setProgressState(
|
||||||
|
sliderElement,
|
||||||
|
value,
|
||||||
|
slider.min * multiplierFactor,
|
||||||
|
slider.max * multiplierFactor,
|
||||||
|
slider.unit
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private renderParameterSensors(sensors: UnityParameters['sensors']) {
|
||||||
|
const existingSensors = this.sensorsTable.querySelectorAll(
|
||||||
|
'.ntsh_dashboard-unity-sensor-row'
|
||||||
|
);
|
||||||
|
|
||||||
|
if (existingSensors.length !== sensors.length) {
|
||||||
|
this.sensorsTable.innerHTML = '';
|
||||||
|
|
||||||
|
if (sensors.length === 0) {
|
||||||
|
const row = ce('tr');
|
||||||
|
const cell = ce('td');
|
||||||
|
cell.appendChild(
|
||||||
|
ce(
|
||||||
|
'div',
|
||||||
|
['mux_text', 'ntsh_dashboard-unity-sensors-loading'],
|
||||||
|
null,
|
||||||
|
'Waiting for Unity...'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
row.appendChild(cell);
|
||||||
|
this.sensorsTable.appendChild(row);
|
||||||
|
} else
|
||||||
|
sensors.forEach((sensor) => {
|
||||||
|
const row = ce('tr', 'ntsh_dashboard-unity-sensor-row');
|
||||||
|
|
||||||
|
const nameCell = ce('td');
|
||||||
|
nameCell.appendChild(
|
||||||
|
ce('div', 'mux_text', null, sensor.deviceName)
|
||||||
|
);
|
||||||
|
row.appendChild(nameCell);
|
||||||
|
|
||||||
|
const progressCell = ce('td');
|
||||||
|
progressCell.appendChild(
|
||||||
|
createProgress(
|
||||||
|
Math.round(sensor.outputValue * 100),
|
||||||
|
0,
|
||||||
|
100,
|
||||||
|
'%'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
row.appendChild(progressCell);
|
||||||
|
|
||||||
|
this.sensorsTable.appendChild(row);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
existingSensors.forEach((row, index) => {
|
||||||
|
const value = sensors[index].outputValue;
|
||||||
|
|
||||||
|
const progressElement: HTMLDivElement =
|
||||||
|
row.querySelector('.ntsh_progress');
|
||||||
|
setProgressState(
|
||||||
|
progressElement,
|
||||||
|
Math.round(value * 100),
|
||||||
|
0,
|
||||||
|
100,
|
||||||
|
'%'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -264,9 +448,29 @@ export class DashboardUnity {
|
|||||||
'Are you sure you want to restart the Unity Runner process?'
|
'Are you sure you want to restart the Unity Runner process?'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.enableOutOfServiceButton.addEventListener('click', async () => {
|
||||||
|
this.executeCommand(
|
||||||
|
'enableOutOfService',
|
||||||
|
'Are you sure you want to set the installation to "Out of Service"?',
|
||||||
|
'unityWebSocket'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.disableOutOfServiceButton.addEventListener('click', async () => {
|
||||||
|
this.executeCommand(
|
||||||
|
'disableOutOfService',
|
||||||
|
'Are you sure you want to set the installation to "Operational"?',
|
||||||
|
'unityWebSocket'
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private async executeCommand(command: string, message: string) {
|
private async executeCommand(
|
||||||
|
command: string,
|
||||||
|
message: string,
|
||||||
|
type: 'unityRunner' | 'unityWebSocket' = 'unityRunner'
|
||||||
|
) {
|
||||||
const confirmed = await MorphFeature.Confirm({
|
const confirmed = await MorphFeature.Confirm({
|
||||||
title: 'Are you sure?',
|
title: 'Are you sure?',
|
||||||
message,
|
message,
|
||||||
@@ -275,10 +479,10 @@ export class DashboardUnity {
|
|||||||
|
|
||||||
MorphFeature.Loader({
|
MorphFeature.Loader({
|
||||||
active: true,
|
active: true,
|
||||||
message: `Requesting Unity Runner ${command}...`,
|
message: `Dispatching command...`,
|
||||||
});
|
});
|
||||||
this._Main.socket.emit(
|
this._Main.socket.emit(
|
||||||
'unityRunner',
|
type,
|
||||||
command,
|
command,
|
||||||
(response: { succeed: boolean; message?: string }) => {
|
(response: { succeed: boolean; message?: string }) => {
|
||||||
MorphFeature.Loader({ active: false });
|
MorphFeature.Loader({ active: false });
|
||||||
@@ -291,7 +495,7 @@ export class DashboardUnity {
|
|||||||
|
|
||||||
MorphFeature.Notification({
|
MorphFeature.Notification({
|
||||||
level: 'success',
|
level: 'success',
|
||||||
message: `Unity Runner is ${command}ing...`,
|
message: `Dispatched command`,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -322,7 +526,16 @@ interface UnityParameters {
|
|||||||
zedPath: string;
|
zedPath: string;
|
||||||
zedReady: boolean;
|
zedReady: boolean;
|
||||||
zedFPS: string;
|
zedFPS: string;
|
||||||
parameters: UnitySocketMessageHeartbeat['heartbeat']['dataSliders'];
|
outOfService: boolean;
|
||||||
|
sliders: UnityParameterSlider[];
|
||||||
|
sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors'];
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnityHeartbeatSlider =
|
||||||
|
UnitySocketMessageHeartbeat['heartbeat']['dataSliders'][number];
|
||||||
|
interface UnityParameterSlider extends UnityHeartbeatSlider {
|
||||||
|
visualMultiplier: number;
|
||||||
|
decimalPlaces: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface UnitySocketMessageBase {
|
interface UnitySocketMessageBase {
|
||||||
@@ -332,10 +545,18 @@ interface UnitySocketMessageBase {
|
|||||||
interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
||||||
type: 'heartbeat_data';
|
type: 'heartbeat_data';
|
||||||
heartbeat: {
|
heartbeat: {
|
||||||
|
dataSensors: {
|
||||||
|
sensorIndex: number;
|
||||||
|
deviceName: string;
|
||||||
|
outputValue: number;
|
||||||
|
}[];
|
||||||
dataSliders: {
|
dataSliders: {
|
||||||
sliderIndex: number;
|
sliderIndex: number;
|
||||||
sliderName: string;
|
sliderName: string;
|
||||||
outputValue: number;
|
outputValue: number;
|
||||||
|
min: number;
|
||||||
|
max: number;
|
||||||
|
unit: string;
|
||||||
}[];
|
}[];
|
||||||
dataTimeline: {
|
dataTimeline: {
|
||||||
isStanding: boolean;
|
isStanding: boolean;
|
||||||
@@ -349,5 +570,6 @@ interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
|||||||
streamInputPort: number;
|
streamInputPort: number;
|
||||||
zedGrabError: number;
|
zedGrabError: number;
|
||||||
};
|
};
|
||||||
|
showOutOfService?: boolean;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { MorphComponent, MorphFeature } from 'morphux';
|
import { ce, MorphComponent, MorphFeature } from 'morphux';
|
||||||
import { Main } from './main';
|
import { Main } from './main';
|
||||||
import { ComponentMenuBar } from 'morphux/dist/Components/MenuBar/Component.MenuBar';
|
import { ComponentMenuBar } from 'morphux/dist/Components/MenuBar/Component.MenuBar';
|
||||||
|
|
||||||
@@ -9,11 +9,17 @@ export class MenuBar {
|
|||||||
|
|
||||||
menubar: ComponentMenuBar;
|
menubar: ComponentMenuBar;
|
||||||
|
|
||||||
|
supportNumber: string;
|
||||||
|
|
||||||
constructor(main: Main) {
|
constructor(main: Main) {
|
||||||
this._Main = main;
|
this._Main = main;
|
||||||
|
|
||||||
this.build();
|
this.build();
|
||||||
|
|
||||||
|
this._Main.socket.on('supportNumber', (number: string) => {
|
||||||
|
this.supportNumber = number;
|
||||||
|
});
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (localStorage?.getItem('serviceMode') === 'true')
|
if (localStorage?.getItem('serviceMode') === 'true')
|
||||||
this.toggleServiceMode(true, true);
|
this.toggleServiceMode(true, true);
|
||||||
@@ -22,10 +28,47 @@ export class MenuBar {
|
|||||||
|
|
||||||
build() {
|
build() {
|
||||||
this.menubar = new ComponentMenuBar({
|
this.menubar = new ComponentMenuBar({
|
||||||
|
mobile: {
|
||||||
|
left: [
|
||||||
|
{
|
||||||
|
type: 'icon',
|
||||||
|
text: 'Restart',
|
||||||
|
materialIcon: 'restart_alt',
|
||||||
|
uniqueIdentifier: 'restart_installation',
|
||||||
|
|
||||||
|
click: async () => {
|
||||||
|
const mobileMenu: HTMLDivElement =
|
||||||
|
document.querySelector('.mux_mobilemenu');
|
||||||
|
mobileMenu?.click();
|
||||||
|
|
||||||
|
this.restartInstallation();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
right: [
|
||||||
|
{
|
||||||
|
type: 'icon',
|
||||||
|
text: 'Support',
|
||||||
|
materialIcon: 'call_quality',
|
||||||
|
uniqueIdentifier: 'call_support',
|
||||||
|
click: () => this.showSupport(),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
left: [
|
left: [
|
||||||
{
|
{
|
||||||
type: 'image',
|
type: 'normal',
|
||||||
url: '/img/morphix_logo_white.png',
|
text: 'Restart',
|
||||||
|
materialIcon: 'restart_alt',
|
||||||
|
uniqueIdentifier: 'restart_installation',
|
||||||
|
|
||||||
|
click: async () => {
|
||||||
|
const mobileMenu: HTMLDivElement =
|
||||||
|
document.querySelector('.mux_mobilemenu');
|
||||||
|
mobileMenu?.click();
|
||||||
|
|
||||||
|
this.restartInstallation();
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'normal',
|
type: 'normal',
|
||||||
@@ -65,7 +108,16 @@ export class MenuBar {
|
|||||||
|
|
||||||
right: [
|
right: [
|
||||||
{
|
{
|
||||||
type: 'normal',
|
type: 'icon',
|
||||||
|
text: 'Support',
|
||||||
|
materialIcon: 'call_quality',
|
||||||
|
uniqueIdentifier: 'call_support',
|
||||||
|
click: () => this.showSupport(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: document.body.classList.contains('ntsh_service')
|
||||||
|
? 'normal'
|
||||||
|
: 'icon',
|
||||||
text: document.body.classList.contains('ntsh_service')
|
text: document.body.classList.contains('ntsh_service')
|
||||||
? 'Exit Service'
|
? 'Exit Service'
|
||||||
: 'Service Mode',
|
: 'Service Mode',
|
||||||
@@ -90,6 +142,51 @@ export class MenuBar {
|
|||||||
this.container.appendChild(this.menubar.container);
|
this.container.appendChild(this.menubar.container);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async showSupport() {
|
||||||
|
const dialog = new MorphComponent.Dialog({
|
||||||
|
title: 'Contact Support',
|
||||||
|
width: 'medium',
|
||||||
|
height: 'auto',
|
||||||
|
okButtonVisible: false,
|
||||||
|
cancelButtonVisible: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.supportNumber.slice();
|
||||||
|
const callAnchor = ce(
|
||||||
|
'a',
|
||||||
|
'ntsh_callanchor',
|
||||||
|
{ href: `tel:${this.supportNumber}` },
|
||||||
|
`+${this.supportNumber}`
|
||||||
|
);
|
||||||
|
dialog.content.appendChild(callAnchor);
|
||||||
|
|
||||||
|
setTimeout(() => callAnchor.click(), 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
async restartInstallation() {
|
||||||
|
const confirmed = await MorphFeature.Confirm({
|
||||||
|
title: 'Restart Installation',
|
||||||
|
message: 'Are you sure you want to restart the installation?',
|
||||||
|
});
|
||||||
|
if (!confirmed) return;
|
||||||
|
|
||||||
|
MorphFeature.Loader({
|
||||||
|
active: true,
|
||||||
|
message: 'Restarting installation...',
|
||||||
|
});
|
||||||
|
this._Main.socket.emit(
|
||||||
|
'restartInstallation',
|
||||||
|
(response: { succeed: boolean; message?: string }) => {
|
||||||
|
MorphFeature.Loader({ active: false });
|
||||||
|
if (!response.succeed)
|
||||||
|
return MorphFeature.Alert({
|
||||||
|
title: 'Error',
|
||||||
|
message: response.message,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
async toggleServiceMode(
|
async toggleServiceMode(
|
||||||
mode?: boolean,
|
mode?: boolean,
|
||||||
skipPin?: boolean
|
skipPin?: boolean
|
||||||
|
|||||||
@@ -26,24 +26,34 @@ export type StatusType = 'green' | 'yellow' | 'red' | 'gray';
|
|||||||
|
|
||||||
export const setProgressState = (
|
export const setProgressState = (
|
||||||
progressElement: HTMLDivElement,
|
progressElement: HTMLDivElement,
|
||||||
percentage: number
|
value: number,
|
||||||
|
min: number,
|
||||||
|
max: number,
|
||||||
|
unit: string
|
||||||
) => {
|
) => {
|
||||||
const value: HTMLDivElement = progressElement.querySelector(
|
const percentage = (value - min) / (max - min);
|
||||||
|
|
||||||
|
const progressValue: HTMLDivElement = progressElement.querySelector(
|
||||||
'.ntsh_progress-value'
|
'.ntsh_progress-value'
|
||||||
);
|
);
|
||||||
value.style.width = `${percentage * 100}%`;
|
progressValue.style.width = `${percentage * 100}%`;
|
||||||
|
|
||||||
const label: HTMLDivElement = progressElement.querySelector(
|
const label: HTMLDivElement = progressElement.querySelector(
|
||||||
'.ntsh_progress-label'
|
'.ntsh_progress-label'
|
||||||
);
|
);
|
||||||
label.innerText = `${Math.round(percentage * 100)}%`;
|
label.innerText = `${value}${unit}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createProgress = (value: number) => {
|
export const createProgress = (
|
||||||
|
value: number,
|
||||||
|
min: number,
|
||||||
|
max: number,
|
||||||
|
unit: string
|
||||||
|
) => {
|
||||||
const progress = ce('div', 'ntsh_progress');
|
const progress = ce('div', 'ntsh_progress');
|
||||||
progress.appendChild(ce('div', 'ntsh_progress-value'));
|
progress.appendChild(ce('div', 'ntsh_progress-value'));
|
||||||
progress.appendChild(ce('div', 'ntsh_progress-label'));
|
progress.appendChild(ce('div', 'ntsh_progress-label'));
|
||||||
setProgressState(progress, value);
|
setProgressState(progress, value, min, max, unit);
|
||||||
return progress;
|
return progress;
|
||||||
};
|
};
|
||||||
export function capitalizeFirstLetter(string: string) {
|
export function capitalizeFirstLetter(string: string) {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export class CameraRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sendCommand(
|
sendCommand(
|
||||||
command: string,
|
command: 'reboot' | 'restart',
|
||||||
callback: (response: { succeed: boolean; message?: string }) => void
|
callback: (response: { succeed: boolean; message?: string }) => void
|
||||||
) {
|
) {
|
||||||
if (this.socket == null || !this.socket.connected)
|
if (this.socket == null || !this.socket.connected)
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ export interface Config {
|
|||||||
webServer: ConfigWebServer;
|
webServer: ConfigWebServer;
|
||||||
unity: ConfigUnity;
|
unity: ConfigUnity;
|
||||||
cameraRunner: ConfigCameraRunner;
|
cameraRunner: ConfigCameraRunner;
|
||||||
|
support: ConfigSupport;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ConfigWebServer {
|
export interface ConfigWebServer {
|
||||||
@@ -132,3 +133,7 @@ export interface ConfigCameraRunner {
|
|||||||
|
|
||||||
pollInterval: number;
|
pollInterval: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ConfigSupport {
|
||||||
|
telephone: string;
|
||||||
|
}
|
||||||
|
|||||||
@@ -27,4 +27,7 @@ export const DefaultConfiguration: Config = {
|
|||||||
|
|
||||||
pollInterval: 5000,
|
pollInterval: 5000,
|
||||||
},
|
},
|
||||||
|
support: {
|
||||||
|
telephone: '+31613392837',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
31
src/Main.ts
31
src/Main.ts
@@ -31,4 +31,35 @@ export class Main {
|
|||||||
this.UnityRunner.start();
|
this.UnityRunner.start();
|
||||||
}, this.Config.unity.executable.startUpDelay ?? 0);
|
}, this.Config.unity.executable.startUpDelay ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async restart() {
|
||||||
|
console.log('Stopping UnityRunner...');
|
||||||
|
await this.UnityRunner.stop();
|
||||||
|
|
||||||
|
const doReboot = !process.argv.includes('--no-reboot');
|
||||||
|
console.log(`${doReboot ? 'Rebooting' : 'Restarting'} CameraRunner...`);
|
||||||
|
const succeed = await new Promise((resolve) => {
|
||||||
|
this.CameraRunner.sendCommand(
|
||||||
|
doReboot ? 'reboot' : 'restart',
|
||||||
|
(response: { succeed: boolean; message?: string }) => {
|
||||||
|
if (!response.succeed) {
|
||||||
|
console.error(
|
||||||
|
'Failed to reboot CameraRunner:',
|
||||||
|
response.message
|
||||||
|
);
|
||||||
|
resolve(false);
|
||||||
|
} else {
|
||||||
|
console.log('CameraRunner rebooted successfully.');
|
||||||
|
resolve(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
if (!succeed) return;
|
||||||
|
|
||||||
|
console.log('Starting UnityRunner...');
|
||||||
|
await this.UnityRunner.start();
|
||||||
|
|
||||||
|
console.log('Restart complete.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,42 +82,77 @@ export class UnityRunner {
|
|||||||
else console.log(PREFIX, message ?? error);
|
else console.log(PREFIX, message ?? error);
|
||||||
}
|
}
|
||||||
|
|
||||||
private restartTriggered: boolean = false;
|
async stop() {
|
||||||
async restart(instant: boolean = false) {
|
if (this.process == null) return;
|
||||||
if (this.restartTriggered) return;
|
|
||||||
clearInterval(this.statusClock);
|
|
||||||
|
|
||||||
this._Main.WebServer.Calibration.hasCalibrationImage = false;
|
this.restartTriggered = true;
|
||||||
|
|
||||||
|
if (this._Main.UnityWebSocket.state === 'CONNECTED') {
|
||||||
|
this._Main.UnityWebSocket.quitApplication();
|
||||||
|
|
||||||
|
this.setInfo(
|
||||||
|
'Requested quit through WebSocket...',
|
||||||
|
null,
|
||||||
|
'STARTING'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.process.kill('SIGTERM');
|
||||||
|
this.setInfo('Requested quit through SIGTERM...', null, 'STARTING');
|
||||||
|
}
|
||||||
|
|
||||||
|
const quitSucceeded = await new Promise((resolve) => {
|
||||||
|
const timeout = setTimeout(() => {
|
||||||
|
clearInterval(c);
|
||||||
|
resolve(false);
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
|
const c = setInterval(() => {
|
||||||
|
if (
|
||||||
|
this.process != null &&
|
||||||
|
!this.process.killed &&
|
||||||
|
this.process.exitCode == null
|
||||||
|
)
|
||||||
|
return;
|
||||||
|
|
||||||
|
clearTimeout(timeout);
|
||||||
|
clearInterval(c);
|
||||||
|
resolve(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!quitSucceeded) this.process.kill('SIGKILL');
|
||||||
|
|
||||||
|
this.setInfo('Stopped', null, 'STOPPED');
|
||||||
|
|
||||||
this._Main.UnityWebSocket.disconnect();
|
this._Main.UnityWebSocket.disconnect();
|
||||||
|
|
||||||
|
this._Main.WebServer.Calibration.hasCalibrationImage = false;
|
||||||
|
this.startTime = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
restartTriggered: boolean = false;
|
||||||
|
async restart(instant: boolean = false) {
|
||||||
|
if (this.restartTriggered) return;
|
||||||
this.restartTriggered = true;
|
this.restartTriggered = true;
|
||||||
|
clearInterval(this.statusClock);
|
||||||
|
|
||||||
this.startTime = -1;
|
this.startTime = -1;
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
|
|
||||||
await delay(2000);
|
if (!instant) await delay(2000);
|
||||||
|
|
||||||
if (this.output.current.length > 0) {
|
if (this.output.current.length > 0) {
|
||||||
this.output.last = [...this.output.current];
|
this.output.last = [...this.output.current];
|
||||||
this.output.current = [];
|
this.output.current = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (instant)
|
await this.stop();
|
||||||
|
|
||||||
|
if (instant) {
|
||||||
|
await delay(1000);
|
||||||
this.setInfo('Process will restart shortly...', null, 'STOPPED');
|
this.setInfo('Process will restart shortly...', null, 'STOPPED');
|
||||||
|
await delay(2000);
|
||||||
if (this.process != null) {
|
} else {
|
||||||
this.process.kill('SIGTERM');
|
|
||||||
|
|
||||||
await delay(3000);
|
|
||||||
|
|
||||||
if (!this.process.killed && this.process.exitCode === null) {
|
|
||||||
this.process.kill('SIGKILL');
|
|
||||||
console.log(PREFIX, 'Sent SIGKILL to process.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.startTime = -1;
|
|
||||||
|
|
||||||
if (!instant) {
|
|
||||||
this.message = 'Reconnecting in 10 seconds...';
|
this.message = 'Reconnecting in 10 seconds...';
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
|
|
||||||
@@ -199,7 +234,7 @@ export class UnityRunner {
|
|||||||
this.setInfo(
|
this.setInfo(
|
||||||
'Process exited',
|
'Process exited',
|
||||||
`Process exited with code ${code} and signal ${signal}`,
|
`Process exited with code ${code} and signal ${signal}`,
|
||||||
'STOPPED'
|
'PROBLEM'
|
||||||
);
|
);
|
||||||
this.restart();
|
this.restart();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ export class UnityWebSocket {
|
|||||||
zedPath: '',
|
zedPath: '',
|
||||||
zedReady: false,
|
zedReady: false,
|
||||||
zedFPS: '-',
|
zedFPS: '-',
|
||||||
parameters: [],
|
outOfService: null,
|
||||||
|
sliders: [],
|
||||||
|
sensors: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
socket: WebSocket;
|
socket: WebSocket;
|
||||||
@@ -32,30 +34,72 @@ export class UnityWebSocket {
|
|||||||
const sliderIndex: number = args[0];
|
const sliderIndex: number = args[0];
|
||||||
const percentage: number = args[1];
|
const percentage: number = args[1];
|
||||||
|
|
||||||
if (this.parameters.parameters[sliderIndex] == undefined)
|
this.setSliderValue(sliderIndex, percentage);
|
||||||
return;
|
break;
|
||||||
this.parameters.parameters[sliderIndex].outputValue =
|
|
||||||
percentage;
|
|
||||||
|
|
||||||
if (
|
case 'enableOutOfService':
|
||||||
this.socket == null ||
|
const enableCallback: Function = args[0];
|
||||||
this.socket.readyState !== WebSocket.OPEN
|
if (typeof enableCallback !== 'function') return;
|
||||||
)
|
|
||||||
return;
|
|
||||||
|
|
||||||
this.socket.send(
|
this.setOutOfService(true);
|
||||||
JSON.stringify({
|
|
||||||
type: 'set_slider_value',
|
|
||||||
sliderIndex: sliderIndex,
|
|
||||||
sliderValue: percentage,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
this.broadcastState();
|
enableCallback({ succeed: true });
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'disableOutOfService':
|
||||||
|
const disableCallback: Function = args[0];
|
||||||
|
if (typeof disableCallback !== 'function') return;
|
||||||
|
|
||||||
|
this.setOutOfService(false);
|
||||||
|
|
||||||
|
disableCallback({ succeed: true });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
quitApplication() {
|
||||||
|
if (this.socket == null || this.socket.readyState !== WebSocket.OPEN)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.socket.send(
|
||||||
|
JSON.stringify({
|
||||||
|
type: 'quit_application',
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
setSliderValue(sliderIndex: number, sliderValue: number) {
|
||||||
|
if (this.socket == null || this.socket.readyState !== WebSocket.OPEN)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.socket.send(
|
||||||
|
JSON.stringify({
|
||||||
|
type: 'set_slider_value',
|
||||||
|
sliderIndex,
|
||||||
|
sliderValue,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
if (this.parameters.sliders[sliderIndex] == undefined) return;
|
||||||
|
this.parameters.sliders[sliderIndex].outputValue = sliderValue;
|
||||||
|
this.broadcastState();
|
||||||
|
}
|
||||||
|
|
||||||
|
setOutOfService(state: boolean) {
|
||||||
|
if (this.socket == null || this.socket.readyState !== WebSocket.OPEN)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.socket.send(
|
||||||
|
JSON.stringify({
|
||||||
|
type: 'set_out_of_service',
|
||||||
|
showOutOfService: state,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
this.parameters.outOfService = true;
|
||||||
|
this.broadcastState();
|
||||||
|
}
|
||||||
|
|
||||||
broadcastState() {
|
broadcastState() {
|
||||||
this._Main.WebServer.socket.emit(
|
this._Main.WebServer.socket.emit(
|
||||||
'unityWebSocketState',
|
'unityWebSocketState',
|
||||||
@@ -99,7 +143,28 @@ export class UnityWebSocket {
|
|||||||
this.parameters.zedReady =
|
this.parameters.zedReady =
|
||||||
message.heartbeat.zedCamera.isZedReady;
|
message.heartbeat.zedCamera.isZedReady;
|
||||||
this.parameters.zedFPS = message.heartbeat.zedCamera.cameraFPS;
|
this.parameters.zedFPS = message.heartbeat.zedCamera.cameraFPS;
|
||||||
this.parameters.parameters = message.heartbeat.dataSliders;
|
this.parameters.outOfService =
|
||||||
|
message.heartbeat.showOutOfService ?? false;
|
||||||
|
this.parameters.sensors = message.heartbeat.dataSensors;
|
||||||
|
this.parameters.sliders = message.heartbeat.dataSliders.map(
|
||||||
|
(slider) => {
|
||||||
|
return {
|
||||||
|
...slider,
|
||||||
|
min: slider.min ?? 0,
|
||||||
|
max: slider.max ?? 1,
|
||||||
|
unit: slider.unit ?? '%',
|
||||||
|
visualMultiplier:
|
||||||
|
(slider.min ?? 0) == 0 && (slider.max ?? 1) == 1
|
||||||
|
? 100
|
||||||
|
: null,
|
||||||
|
decimalPlaces:
|
||||||
|
(slider.min ?? 0) == 0 && (slider.max ?? 1) == 1
|
||||||
|
? 0
|
||||||
|
: 2,
|
||||||
|
} as UnityParameterSlider;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -182,6 +247,7 @@ export class UnityWebSocket {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.socket.on('close', () => {
|
this.socket.on('close', () => {
|
||||||
|
if (this._Main.UnityRunner.restartTriggered) return;
|
||||||
if (this.restartRequested) return;
|
if (this.restartRequested) return;
|
||||||
this.setInfo(
|
this.setInfo(
|
||||||
'Disconnected',
|
'Disconnected',
|
||||||
@@ -247,7 +313,16 @@ interface UnityParameters {
|
|||||||
zedPath: string;
|
zedPath: string;
|
||||||
zedReady: boolean;
|
zedReady: boolean;
|
||||||
zedFPS: string;
|
zedFPS: string;
|
||||||
parameters: UnitySocketMessageHeartbeat['heartbeat']['dataSliders'];
|
outOfService: boolean;
|
||||||
|
sliders: UnityParameterSlider[];
|
||||||
|
sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors'];
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnityHeartbeatSlider =
|
||||||
|
UnitySocketMessageHeartbeat['heartbeat']['dataSliders'][number];
|
||||||
|
interface UnityParameterSlider extends UnityHeartbeatSlider {
|
||||||
|
visualMultiplier?: number;
|
||||||
|
decimalPlaces?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
type UnitySocketMessage =
|
type UnitySocketMessage =
|
||||||
@@ -261,10 +336,18 @@ interface UnitySocketMessageBase {
|
|||||||
interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
||||||
type: 'heartbeat_data';
|
type: 'heartbeat_data';
|
||||||
heartbeat: {
|
heartbeat: {
|
||||||
|
dataSensors: {
|
||||||
|
sensorIndex: number;
|
||||||
|
deviceName: string;
|
||||||
|
outputValue: number;
|
||||||
|
}[];
|
||||||
dataSliders: {
|
dataSliders: {
|
||||||
sliderIndex: number;
|
sliderIndex: number;
|
||||||
sliderName: string;
|
sliderName: string;
|
||||||
outputValue: number;
|
outputValue: number;
|
||||||
|
min: number;
|
||||||
|
max: number;
|
||||||
|
unit: string;
|
||||||
}[];
|
}[];
|
||||||
dataTimeline: {
|
dataTimeline: {
|
||||||
isStanding: boolean;
|
isStanding: boolean;
|
||||||
@@ -278,6 +361,7 @@ interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
|||||||
streamInputPort: number;
|
streamInputPort: number;
|
||||||
zedGrabError: number;
|
zedGrabError: number;
|
||||||
};
|
};
|
||||||
|
showOutOfService?: boolean;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
interface UnitySocketMessageCameraFrame extends UnitySocketMessageBase {
|
interface UnitySocketMessageCameraFrame extends UnitySocketMessageBase {
|
||||||
|
|||||||
@@ -50,7 +50,30 @@ export class WebServer {
|
|||||||
'unityWebSocketState',
|
'unityWebSocketState',
|
||||||
this._Main.UnityWebSocket.getState()
|
this._Main.UnityWebSocket.getState()
|
||||||
);
|
);
|
||||||
|
socket.emit(
|
||||||
|
'supportNumber',
|
||||||
|
this._Main.Config.support.telephone.replace('+', '')
|
||||||
|
);
|
||||||
|
|
||||||
|
socket.on(
|
||||||
|
'restartInstallation',
|
||||||
|
(
|
||||||
|
callback: (response: {
|
||||||
|
succeed: boolean;
|
||||||
|
message?: string;
|
||||||
|
}) => void
|
||||||
|
) => {
|
||||||
|
if (this._Main.CameraRunner.state !== 'CONNECTED')
|
||||||
|
return callback({
|
||||||
|
succeed: false,
|
||||||
|
message:
|
||||||
|
'Cannot reboot camera runner because it is not connected.',
|
||||||
|
});
|
||||||
|
|
||||||
|
this._Main.restart();
|
||||||
|
callback({ succeed: true });
|
||||||
|
}
|
||||||
|
);
|
||||||
socket.on('cameraRunner', (command: string, ...args: any[]) =>
|
socket.on('cameraRunner', (command: string, ...args: any[]) =>
|
||||||
this._Main.CameraRunner.handle(command, ...args)
|
this._Main.CameraRunner.handle(command, ...args)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user