Added basic control panel
This commit is contained in:
@@ -50,5 +50,6 @@ The system automatically starts the web server and attempts to connect to the co
|
|||||||
## Project Structure
|
## Project Structure
|
||||||
|
|
||||||
- `src/` - TypeScript source code
|
- `src/` - TypeScript source code
|
||||||
- `frontend/views/dashboard/` - Web interface
|
- `frontend/views/dashboard/` - V2 web interface
|
||||||
|
- `frontend/views/dashboard/` - Legacy web interface
|
||||||
- `dist/` - Compiled JavaScript output
|
- `dist/` - Compiled JavaScript output
|
||||||
|
|||||||
5
TODO.md
5
TODO.md
@@ -6,8 +6,3 @@
|
|||||||
- ✅ Operator phonenumber button
|
- ✅ Operator phonenumber button
|
||||||
- ✅ Gracefull shutdown
|
- ✅ Gracefull shutdown
|
||||||
- ✅ Out of service control
|
- ✅ Out of service control
|
||||||
|
|
||||||
Checken met Sjoerd
|
|
||||||
|
|
||||||
- Sliders opslaan
|
|
||||||
- Camera error code
|
|
||||||
|
|||||||
132
dist/Audio.js
vendored
Normal file
132
dist/Audio.js
vendored
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
"use strict";
|
||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.AudioChecker = void 0;
|
||||||
|
var fs_extra_1 = require("fs-extra");
|
||||||
|
var path_1 = require("path");
|
||||||
|
var portAudio = require('naudiodon');
|
||||||
|
var PREFIX = '[Audio]';
|
||||||
|
var AudioChecker = /** @class */ (function () {
|
||||||
|
function AudioChecker(Main) {
|
||||||
|
this.deviceName = null;
|
||||||
|
this._Main = Main;
|
||||||
|
this.configPath = (0, path_1.join)(this._Main.dataPath, 'audio.json');
|
||||||
|
this.load();
|
||||||
|
}
|
||||||
|
AudioChecker.prototype.waitForDevice = function () {
|
||||||
|
var _a;
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var counter;
|
||||||
|
var _this = this;
|
||||||
|
return __generator(this, function (_b) {
|
||||||
|
if (((_a = this.deviceName) !== null && _a !== void 0 ? _a : '').trim().length == 0) {
|
||||||
|
console.log(PREFIX, 'No audio device configured, skipping audio check. Available devices:');
|
||||||
|
portAudio
|
||||||
|
.getDevices()
|
||||||
|
.filter(function (device) { return device.maxOutputChannels > 0; })
|
||||||
|
.forEach(function (device) {
|
||||||
|
console.log(" - ".concat(device.name));
|
||||||
|
});
|
||||||
|
return [2 /*return*/];
|
||||||
|
}
|
||||||
|
console.log(PREFIX, "Waiting for device \"".concat(this.deviceName, "\"..."));
|
||||||
|
counter = 0;
|
||||||
|
return [2 /*return*/, new Promise(function (resolve) {
|
||||||
|
var c = setInterval(function () {
|
||||||
|
var _a;
|
||||||
|
counter++;
|
||||||
|
var availableDevices = portAudio
|
||||||
|
.getDevices()
|
||||||
|
.filter(function (device) { return device.maxOutputChannels > 0; })
|
||||||
|
.map(function (device) { return device.name; });
|
||||||
|
if (!availableDevices.includes(_this.deviceName)) {
|
||||||
|
if (counter == 3) {
|
||||||
|
console.log(PREFIX, 'Trouble finding the correct device. Available devices:');
|
||||||
|
availableDevices.forEach(function (device) {
|
||||||
|
console.log(" - ".concat(device));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var hostApis = portAudio.getHostAPIs();
|
||||||
|
var defaultOutputDeviceId = hostApis.HostAPIs[hostApis.defaultHostAPI].defaultOutput;
|
||||||
|
var defaultOutputDeviceName = (_a = portAudio
|
||||||
|
.getDevices()
|
||||||
|
.find(function (device) { return device.id === defaultOutputDeviceId; })) === null || _a === void 0 ? void 0 : _a.name;
|
||||||
|
if (defaultOutputDeviceName !== _this.deviceName) {
|
||||||
|
console.warn(PREFIX, "The configured device \"".concat(_this.deviceName, "\" is not set as the default output device. Please set it as the default output device to ensure proper functionality. Current default output device: \"").concat(defaultOutputDeviceName, "\"."));
|
||||||
|
_this._Main.Twilio.sendError('Audio', "The configured device \"".concat(_this.deviceName, "\" is not set as the default output device. Current default output device: \"").concat(defaultOutputDeviceName, "\"."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
clearInterval(c);
|
||||||
|
resolve();
|
||||||
|
console.log(PREFIX, "Device \"".concat(_this.deviceName, "\" is ready!"));
|
||||||
|
}, 1000);
|
||||||
|
})];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
AudioChecker.prototype.load = function () {
|
||||||
|
console.log(PREFIX, 'Loading audio configuration...');
|
||||||
|
var exists = (0, fs_extra_1.pathExistsSync)(this.configPath);
|
||||||
|
if (!exists)
|
||||||
|
return this.save();
|
||||||
|
var data = (0, fs_extra_1.readJSONSync)(this.configPath);
|
||||||
|
this.deviceName = data.deviceName;
|
||||||
|
};
|
||||||
|
AudioChecker.prototype.save = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var _this = this;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
if (this._save)
|
||||||
|
clearTimeout(this._save);
|
||||||
|
this._save = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
var _a;
|
||||||
|
return __generator(this, function (_b) {
|
||||||
|
(0, fs_extra_1.writeFile)(this.configPath, JSON.stringify({ deviceName: (_a = this.deviceName) !== null && _a !== void 0 ? _a : null }, null, 4));
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); }, 1000);
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return AudioChecker;
|
||||||
|
}());
|
||||||
|
exports.AudioChecker = AudioChecker;
|
||||||
|
//# sourceMappingURL=Audio.js.map
|
||||||
1
dist/Audio.js.map
vendored
Normal file
1
dist/Audio.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"Audio.js","sourceRoot":"","sources":["../src/Audio.ts"],"names":[],"mappings":"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"}
|
||||||
34
dist/CameraRunner.js
vendored
34
dist/CameraRunner.js
vendored
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
@@ -36,9 +36,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.CameraRunner = void 0;
|
exports.CameraProcessStateColors = exports.CameraPCStateColors = exports.CameraRunner = void 0;
|
||||||
var socket_io_client_1 = require("socket.io-client");
|
var socket_io_client_1 = require("socket.io-client");
|
||||||
var Utils_1 = require("./Utils");
|
var Utils_1 = require("./Utils");
|
||||||
|
var Status_1 = require("./Status");
|
||||||
var PREFIX = "[CameraRunner]";
|
var PREFIX = "[CameraRunner]";
|
||||||
var CameraRunner = /** @class */ (function () {
|
var CameraRunner = /** @class */ (function () {
|
||||||
function CameraRunner(Main) {
|
function CameraRunner(Main) {
|
||||||
@@ -93,6 +94,11 @@ var CameraRunner = /** @class */ (function () {
|
|||||||
this.message = message;
|
this.message = message;
|
||||||
this.error = error;
|
this.error = error;
|
||||||
this.state = state;
|
this.state = state;
|
||||||
|
this._Main.Status.update(Status_1.StatusType.CameraPC, exports.CameraPCStateColors[this.state], message, {
|
||||||
|
reboot: state === 'FAILED' ||
|
||||||
|
state === 'DISCONNECTED' ||
|
||||||
|
state == 'CONNECTED',
|
||||||
|
});
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
if (error != null &&
|
if (error != null &&
|
||||||
Date.now() - this.bootTime > this.errorTriggerStartupDelay)
|
Date.now() - this.bootTime > this.errorTriggerStartupDelay)
|
||||||
@@ -117,6 +123,11 @@ var CameraRunner = /** @class */ (function () {
|
|||||||
case 1:
|
case 1:
|
||||||
data = _a.sent();
|
data = _a.sent();
|
||||||
this.processStatus = data;
|
this.processStatus = data;
|
||||||
|
this._Main.Status.update(Status_1.StatusType.CameraProcess, exports.CameraProcessStateColors[this.processStatus.state], this.processStatus.message, {
|
||||||
|
reboot: this.processStatus.state === 'PROBLEM' ||
|
||||||
|
this.processStatus.state === 'STOPPED' ||
|
||||||
|
this.processStatus.state === 'RUNNING',
|
||||||
|
});
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
}
|
}
|
||||||
@@ -126,6 +137,11 @@ var CameraRunner = /** @class */ (function () {
|
|||||||
_this.processStatus.state = simpleStatus.state;
|
_this.processStatus.state = simpleStatus.state;
|
||||||
_this.processStatus.message = simpleStatus.message;
|
_this.processStatus.message = simpleStatus.message;
|
||||||
_this.processStatus.error = simpleStatus.error;
|
_this.processStatus.error = simpleStatus.error;
|
||||||
|
_this._Main.Status.update(Status_1.StatusType.CameraProcess, exports.CameraProcessStateColors[_this.processStatus.state], _this.processStatus.message, {
|
||||||
|
reboot: _this.processStatus.state === 'PROBLEM' ||
|
||||||
|
_this.processStatus.state === 'STOPPED' ||
|
||||||
|
_this.processStatus.state === 'RUNNING',
|
||||||
|
});
|
||||||
_this.broadcastState();
|
_this.broadcastState();
|
||||||
});
|
});
|
||||||
clearInterval(this.pollClock);
|
clearInterval(this.pollClock);
|
||||||
@@ -218,4 +234,16 @@ var CameraRunner = /** @class */ (function () {
|
|||||||
return CameraRunner;
|
return CameraRunner;
|
||||||
}());
|
}());
|
||||||
exports.CameraRunner = CameraRunner;
|
exports.CameraRunner = CameraRunner;
|
||||||
|
exports.CameraPCStateColors = {
|
||||||
|
CONNECTED: Status_1.State.Green,
|
||||||
|
DISCONNECTED: Status_1.State.Gray,
|
||||||
|
CONNECTING: Status_1.State.Yellow,
|
||||||
|
FAILED: Status_1.State.Red,
|
||||||
|
};
|
||||||
|
exports.CameraProcessStateColors = {
|
||||||
|
RUNNING: Status_1.State.Green,
|
||||||
|
STOPPED: Status_1.State.Gray,
|
||||||
|
STARTING: Status_1.State.Yellow,
|
||||||
|
PROBLEM: Status_1.State.Red,
|
||||||
|
};
|
||||||
//# sourceMappingURL=CameraRunner.js.map
|
//# sourceMappingURL=CameraRunner.js.map
|
||||||
2
dist/CameraRunner.js.map
vendored
2
dist/CameraRunner.js.map
vendored
File diff suppressed because one or more lines are too long
4
dist/Configuration/ConfigurationManager.js
vendored
4
dist/Configuration/ConfigurationManager.js
vendored
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
|||||||
1
dist/Configuration/DefaultConfiguration.js
vendored
1
dist/Configuration/DefaultConfiguration.js
vendored
@@ -21,6 +21,7 @@ exports.DefaultConfiguration = {
|
|||||||
},
|
},
|
||||||
heartbeatInterval: 1000,
|
heartbeatInterval: 1000,
|
||||||
calibrationImageInterval: 2000,
|
calibrationImageInterval: 2000,
|
||||||
|
launchOnStartup: true,
|
||||||
},
|
},
|
||||||
cameraRunner: {
|
cameraRunner: {
|
||||||
webSocket: {
|
webSocket: {
|
||||||
|
|||||||
@@ -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,MAAM,EAAE;QACP,EAAE,EAAE,EAAE;QACN,cAAc,EAAE,IAAI;KACpB;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,MAAM,EAAE;QACP,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,KAAK;QACvB,iBAAiB,EAAE,EAAE;KACrB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,cAAc;KACzB;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,MAAM,EAAE;QACP,EAAE,EAAE,EAAE;QACN,cAAc,EAAE,IAAI;KACpB;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;QAC9B,eAAe,EAAE,IAAI;KACrB;IACD,YAAY,EAAE;QACb,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,YAAY,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACP,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,KAAK;QACvB,iBAAiB,EAAE,EAAE;KACrB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,cAAc;KACzB;CACD,CAAC"}
|
||||||
132
dist/Configuration/Timer copy.js
vendored
Normal file
132
dist/Configuration/Timer copy.js
vendored
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
"use strict";
|
||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.Timer = void 0;
|
||||||
|
var path_1 = require("path");
|
||||||
|
var fs_extra_1 = require("fs-extra");
|
||||||
|
var UnityRunner_1 = require("../Unity/UnityRunner");
|
||||||
|
var PREFIX = '[Main]';
|
||||||
|
var Timer = /** @class */ (function () {
|
||||||
|
function Timer(Main) {
|
||||||
|
this.start = {
|
||||||
|
hour: null,
|
||||||
|
minute: null,
|
||||||
|
};
|
||||||
|
this.end = {
|
||||||
|
hour: null,
|
||||||
|
minute: null,
|
||||||
|
};
|
||||||
|
this._Main = Main;
|
||||||
|
this.configPath = (0, path_1.join)(this._Main.dataPath, 'timer.json');
|
||||||
|
}
|
||||||
|
Timer.prototype.startClock = function () {
|
||||||
|
var _this = this;
|
||||||
|
setInterval(function () {
|
||||||
|
var startTime = new Date();
|
||||||
|
startTime.setHours(_this.start.hour, _this.start.minute, 0, 0);
|
||||||
|
var endTime = new Date();
|
||||||
|
endTime.setHours(_this.end.hour, _this.end.minute, 0, 0);
|
||||||
|
var shouldBeStarted = startTime <= new Date() && endTime > new Date();
|
||||||
|
if (shouldBeStarted) {
|
||||||
|
if (_this._Main.UnityRunner.state !== 'RUNNING' &&
|
||||||
|
_this._Main.UnityRunner.state !== 'STARTING') {
|
||||||
|
console.log(PREFIX, 'Starting Unity');
|
||||||
|
_this._Main.UnityRunner.start(UnityRunner_1.StartOrigin.Timer);
|
||||||
|
}
|
||||||
|
else if (_this._Main.UnityRunner.startOrigin !== UnityRunner_1.StartOrigin.Timer) {
|
||||||
|
console.log(PREFIX, 'Already running');
|
||||||
|
_this._Main.UnityRunner.startOrigin = UnityRunner_1.StartOrigin.Timer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (_this._Main.UnityRunner.state === 'RUNNING' &&
|
||||||
|
_this._Main.UnityRunner.startOrigin === UnityRunner_1.StartOrigin.Timer) {
|
||||||
|
console.log(PREFIX, 'Stopping Unity');
|
||||||
|
_this._Main.UnityRunner.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 5000);
|
||||||
|
};
|
||||||
|
Timer.prototype.load = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var exists, data;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0:
|
||||||
|
console.log(PREFIX, 'Loading timer configuration...');
|
||||||
|
return [4 /*yield*/, (0, fs_extra_1.pathExists)(this.configPath)];
|
||||||
|
case 1:
|
||||||
|
exists = _a.sent();
|
||||||
|
if (!exists) {
|
||||||
|
this.save();
|
||||||
|
return [2 /*return*/, this.startClock()];
|
||||||
|
}
|
||||||
|
return [4 /*yield*/, (0, fs_extra_1.readJSON)(this.configPath)];
|
||||||
|
case 2:
|
||||||
|
data = _a.sent();
|
||||||
|
this.start = data.start;
|
||||||
|
this.end = data.end;
|
||||||
|
this.startClock();
|
||||||
|
return [2 /*return*/];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Timer.prototype.save = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var _this = this;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
if (this._save)
|
||||||
|
clearTimeout(this._save);
|
||||||
|
this._save = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
(0, fs_extra_1.writeJSON)(this.configPath, {
|
||||||
|
start: this.start,
|
||||||
|
end: this.end,
|
||||||
|
});
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); }, 1000);
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return Timer;
|
||||||
|
}());
|
||||||
|
exports.Timer = Timer;
|
||||||
|
//# sourceMappingURL=Timer%20copy.js.map
|
||||||
1
dist/Configuration/Timer copy.js.map
vendored
Normal file
1
dist/Configuration/Timer copy.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"Timer copy.js","sourceRoot":"","sources":["../../src/Configuration/Timer copy.ts"],"names":[],"mappings":"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"}
|
||||||
145
dist/Configuration/Timer.js
vendored
Normal file
145
dist/Configuration/Timer.js
vendored
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
"use strict";
|
||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.Timer = void 0;
|
||||||
|
var path_1 = require("path");
|
||||||
|
var fs_extra_1 = require("fs-extra");
|
||||||
|
var UnityRunner_1 = require("../Unity/UnityRunner");
|
||||||
|
var PREFIX = '[Main]';
|
||||||
|
var Timer = /** @class */ (function () {
|
||||||
|
function Timer(Main) {
|
||||||
|
this.start = {
|
||||||
|
hour: null,
|
||||||
|
minute: null,
|
||||||
|
};
|
||||||
|
this.end = {
|
||||||
|
hour: null,
|
||||||
|
minute: null,
|
||||||
|
};
|
||||||
|
this._Main = Main;
|
||||||
|
this.configPath = (0, path_1.join)(this._Main.dataPath, 'timer.json');
|
||||||
|
}
|
||||||
|
Timer.prototype.getState = function () {
|
||||||
|
return {
|
||||||
|
start: this.start,
|
||||||
|
end: this.end,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Timer.prototype.setStart = function (data) {
|
||||||
|
this.start = data;
|
||||||
|
this._Main.WebServer.socket.emit('timer', this.getState());
|
||||||
|
this.save();
|
||||||
|
};
|
||||||
|
Timer.prototype.setEnd = function (data) {
|
||||||
|
this.end = data;
|
||||||
|
this._Main.WebServer.socket.emit('timer', this.getState());
|
||||||
|
this.save();
|
||||||
|
};
|
||||||
|
Timer.prototype.startClock = function () {
|
||||||
|
var _this = this;
|
||||||
|
setInterval(function () {
|
||||||
|
var startTime = new Date();
|
||||||
|
startTime.setHours(_this.start.hour, _this.start.minute, 0, 0);
|
||||||
|
var endTime = new Date();
|
||||||
|
endTime.setHours(_this.end.hour, _this.end.minute, 0, 0);
|
||||||
|
var shouldBeStarted = startTime <= new Date() && endTime > new Date();
|
||||||
|
if (shouldBeStarted) {
|
||||||
|
if (_this._Main.UnityRunner.state !== 'RUNNING' &&
|
||||||
|
_this._Main.UnityRunner.state !== 'STARTING') {
|
||||||
|
console.log(PREFIX, 'Starting Unity');
|
||||||
|
_this._Main.UnityRunner.start(UnityRunner_1.StartOrigin.Timer);
|
||||||
|
}
|
||||||
|
else if (_this._Main.UnityRunner.startOrigin !== UnityRunner_1.StartOrigin.Timer) {
|
||||||
|
console.log(PREFIX, 'Already running');
|
||||||
|
_this._Main.UnityRunner.startOrigin = UnityRunner_1.StartOrigin.Timer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (_this._Main.UnityRunner.state === 'RUNNING' &&
|
||||||
|
_this._Main.UnityRunner.startOrigin === UnityRunner_1.StartOrigin.Timer) {
|
||||||
|
console.log(PREFIX, 'Stopping Unity');
|
||||||
|
_this._Main.UnityRunner.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 5000);
|
||||||
|
};
|
||||||
|
Timer.prototype.load = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var exists, data;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0:
|
||||||
|
console.log(PREFIX, 'Loading timer configuration...');
|
||||||
|
return [4 /*yield*/, (0, fs_extra_1.pathExists)(this.configPath)];
|
||||||
|
case 1:
|
||||||
|
exists = _a.sent();
|
||||||
|
if (!exists) {
|
||||||
|
this.save();
|
||||||
|
return [2 /*return*/, this.startClock()];
|
||||||
|
}
|
||||||
|
return [4 /*yield*/, (0, fs_extra_1.readJSON)(this.configPath)];
|
||||||
|
case 2:
|
||||||
|
data = _a.sent();
|
||||||
|
this.start = data.start;
|
||||||
|
this.end = data.end;
|
||||||
|
this.startClock();
|
||||||
|
return [2 /*return*/];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Timer.prototype.save = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var _this = this;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
if (this._save)
|
||||||
|
clearTimeout(this._save);
|
||||||
|
this._save = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
(0, fs_extra_1.writeFile)(this.configPath, JSON.stringify({ start: this.start, end: this.end }, null, 4));
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
}); }, 1000);
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return Timer;
|
||||||
|
}());
|
||||||
|
exports.Timer = Timer;
|
||||||
|
//# sourceMappingURL=Timer.js.map
|
||||||
1
dist/Configuration/Timer.js.map
vendored
Normal file
1
dist/Configuration/Timer.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../src/Configuration/Timer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA4B;AAE5B,qCAAsE;AACtE,oDAAmD;AAEnD,IAAM,MAAM,GAAG,QAAQ,CAAC;AACxB;IAoBC,eAAY,IAAU;QAfd,UAAK,GAGT;YACH,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;SACZ,CAAC;QACM,QAAG,GAGP;YACH,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;SACZ,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,wBAAQ,GAAR;QACC,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;SACb,CAAC;IACH,CAAC;IAED,wBAAQ,GAAR,UAAS,IAAsC;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,sBAAM,GAAN,UAAO,IAAsC;QAC5C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,0BAAU,GAAV;QAAA,iBAkCC;QAjCA,WAAW,CAAC;YACX,IAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,SAAS,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAE7D,IAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,KAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAEvD,IAAM,eAAe,GACpB,SAAS,IAAI,IAAI,IAAI,EAAE,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAEjD,IAAI,eAAe,EAAE,CAAC;gBACrB,IACC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS;oBAC1C,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,UAAU,EAC1C,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;oBACtC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,yBAAW,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC;qBAAM,IACN,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,yBAAW,CAAC,KAAK,EACvD,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;oBACvC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,yBAAW,CAAC,KAAK,CAAC;gBACxD,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IACC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS;oBAC1C,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,yBAAW,CAAC,KAAK,EACvD,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;oBACtC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC/B,CAAC;YACF,CAAC;QACF,CAAC,EAAE,IAAI,CAAC,CAAC;IACV,CAAC;IAEK,oBAAI,GAAV;;;;;;wBACC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;wBACvC,qBAAM,IAAA,qBAAU,EAAC,IAAI,CAAC,UAAU,CAAC,EAAA;;wBAA1C,MAAM,GAAG,SAAiC;wBAChD,IAAI,CAAC,MAAM,EAAE,CAAC;4BACb,IAAI,CAAC,IAAI,EAAE,CAAC;4BACZ,sBAAO,IAAI,CAAC,UAAU,EAAE,EAAC;wBAC1B,CAAC;wBAEY,qBAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,EAAA;;wBAAtC,IAAI,GAAG,SAA+B;wBAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;wBACxB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;wBAEpB,IAAI,CAAC,UAAU,EAAE,CAAC;;;;;KAClB;IAGK,oBAAI,GAAV;;;;gBACC,IAAI,IAAI,CAAC,KAAK;oBAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEzC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;;wBACvB,IAAA,oBAAS,EACR,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7D,CAAC;;;qBACF,EAAE,IAAI,CAAC,CAAC;;;;KACT;IACF,YAAC;AAAD,CAAC,AA1GD,IA0GC;AA1GY,sBAAK"}
|
||||||
138
dist/ConfigurationManager.js
vendored
138
dist/ConfigurationManager.js
vendored
@@ -1,138 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
||||||
function step(op) {
|
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
|
||||||
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
||||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
||||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
||||||
switch (op[0]) {
|
|
||||||
case 0: case 1: t = op; break;
|
|
||||||
case 4: _.label++; return { value: op[1], done: false };
|
|
||||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
||||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
||||||
default:
|
|
||||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
||||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
||||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
||||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
||||||
if (t[2]) _.ops.pop();
|
|
||||||
_.trys.pop(); continue;
|
|
||||||
}
|
|
||||||
op = body.call(thisArg, _);
|
|
||||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
||||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.ConfigurationManager = void 0;
|
|
||||||
var fs_extra_1 = require("fs-extra");
|
|
||||||
var path_1 = require("path");
|
|
||||||
var DefaultConfiguration_1 = require("./Defaults/DefaultConfiguration");
|
|
||||||
var PREFIX = '[ConfigurationManager]';
|
|
||||||
var ConfigurationManager = /** @class */ (function () {
|
|
||||||
function ConfigurationManager(Main) {
|
|
||||||
this._Main = Main;
|
|
||||||
}
|
|
||||||
ConfigurationManager.prototype.load = function () {
|
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
|
||||||
var configPath, configExists, config, _a;
|
|
||||||
return __generator(this, function (_b) {
|
|
||||||
switch (_b.label) {
|
|
||||||
case 0:
|
|
||||||
console.log(PREFIX, 'Loading');
|
|
||||||
return [4 /*yield*/, (0, fs_extra_1.ensureDir)((0, path_1.join)(this._Main.dataPath))];
|
|
||||||
case 1:
|
|
||||||
_b.sent();
|
|
||||||
configPath = (0, path_1.join)(this._Main.dataPath, 'config.json');
|
|
||||||
return [4 /*yield*/, (0, fs_extra_1.pathExists)(configPath)];
|
|
||||||
case 2:
|
|
||||||
configExists = _b.sent();
|
|
||||||
if (!!configExists) return [3 /*break*/, 4];
|
|
||||||
return [4 /*yield*/, (0, fs_extra_1.writeFile)(configPath, JSON.stringify(DefaultConfiguration_1.DefaultConfiguration, null, 4))];
|
|
||||||
case 3:
|
|
||||||
_b.sent();
|
|
||||||
this._Main.Config = DefaultConfiguration_1.DefaultConfiguration;
|
|
||||||
console.log(PREFIX, 'Written default configuration');
|
|
||||||
return [3 /*break*/, 7];
|
|
||||||
case 4: return [4 /*yield*/, (0, fs_extra_1.readJSON)(configPath)];
|
|
||||||
case 5:
|
|
||||||
config = _b.sent();
|
|
||||||
_a = this._Main;
|
|
||||||
return [4 /*yield*/, this.validateConfig(config)];
|
|
||||||
case 6:
|
|
||||||
_a.Config = _b.sent();
|
|
||||||
console.log(PREFIX, 'Loaded configuration');
|
|
||||||
_b.label = 7;
|
|
||||||
case 7: return [2 /*return*/];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
ConfigurationManager.prototype.validateConfig = function (config) {
|
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
|
||||||
var normalizedConfig, hasChanges, configPath;
|
|
||||||
return __generator(this, function (_a) {
|
|
||||||
switch (_a.label) {
|
|
||||||
case 0:
|
|
||||||
normalizedConfig = this.normalizeConfig(config, DefaultConfiguration_1.DefaultConfiguration);
|
|
||||||
hasChanges = JSON.stringify(config) !== JSON.stringify(normalizedConfig);
|
|
||||||
if (!hasChanges) return [3 /*break*/, 2];
|
|
||||||
this._Main.Config = normalizedConfig;
|
|
||||||
configPath = (0, path_1.join)(this._Main.dataPath, 'config.json');
|
|
||||||
return [4 /*yield*/, (0, fs_extra_1.writeFile)(configPath, JSON.stringify(normalizedConfig, null, 4))];
|
|
||||||
case 1:
|
|
||||||
_a.sent();
|
|
||||||
console.log(PREFIX, 'Configuration updated and saved');
|
|
||||||
_a.label = 2;
|
|
||||||
case 2: return [2 /*return*/, normalizedConfig];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
ConfigurationManager.prototype.normalizeConfig = function (current, template) {
|
|
||||||
var _this = this;
|
|
||||||
if (template === null || template === undefined) {
|
|
||||||
return template;
|
|
||||||
}
|
|
||||||
if (typeof template !== 'object' || Array.isArray(template)) {
|
|
||||||
if (current !== null &&
|
|
||||||
current !== undefined &&
|
|
||||||
typeof current === typeof template) {
|
|
||||||
if (Array.isArray(template) && Array.isArray(current)) {
|
|
||||||
if (template.length > 0 &&
|
|
||||||
typeof template[0] === 'object' &&
|
|
||||||
!Array.isArray(template[0])) {
|
|
||||||
return current.map(function (item) {
|
|
||||||
return _this.normalizeConfig(item, template[0]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
return template;
|
|
||||||
}
|
|
||||||
var result = {};
|
|
||||||
for (var key in template) {
|
|
||||||
if (template.hasOwnProperty(key)) {
|
|
||||||
result[key] = this.normalizeConfig(current === null || current === void 0 ? void 0 : current[key], template[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
return ConfigurationManager;
|
|
||||||
}());
|
|
||||||
exports.ConfigurationManager = ConfigurationManager;
|
|
||||||
//# sourceMappingURL=ConfigurationManager.js.map
|
|
||||||
1
dist/ConfigurationManager.js.map
vendored
1
dist/ConfigurationManager.js.map
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"ConfigurationManager.js","sourceRoot":"","sources":["../src/ConfigurationManager.ts"],"names":[],"mappings":"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"}
|
|
||||||
60
dist/Main.js
vendored
60
dist/Main.js
vendored
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
@@ -48,41 +48,57 @@ var Twilio_1 = require("./Twilio");
|
|||||||
var Utils_1 = require("./Utils");
|
var Utils_1 = require("./Utils");
|
||||||
var ping = require("ping");
|
var ping = require("ping");
|
||||||
var Shutdown_1 = require("./Shutdown");
|
var Shutdown_1 = require("./Shutdown");
|
||||||
|
var Timer_1 = require("./Configuration/Timer");
|
||||||
|
var Status_1 = require("./Status");
|
||||||
|
var Audio_1 = require("./Audio");
|
||||||
var PREFIX = '[Main]';
|
var PREFIX = '[Main]';
|
||||||
var Main = /** @class */ (function () {
|
var Main = /** @class */ (function () {
|
||||||
function Main() {
|
function Main() {
|
||||||
this.dataPath = (0, path_1.join)((0, os_1.homedir)(), 'MorphixProductions', 'NTSHControl');
|
this.dataPath = (0, path_1.join)((0, os_1.homedir)(), 'MorphixProductions', 'NTSHControl');
|
||||||
this.ConfigurationManager = new ConfigurationManager_1.ConfigurationManager(this);
|
this.ConfigurationManager = new ConfigurationManager_1.ConfigurationManager(this);
|
||||||
|
this.Timer = new Timer_1.Timer(this);
|
||||||
|
this.Status = new Status_1.Status(this);
|
||||||
this.WebServer = new WebServer_1.WebServer(this);
|
this.WebServer = new WebServer_1.WebServer(this);
|
||||||
this.Twilio = new Twilio_1.TwilioHandler(this);
|
this.Twilio = new Twilio_1.TwilioHandler(this);
|
||||||
|
this.Audio = new Audio_1.AudioChecker(this);
|
||||||
this.CameraRunner = new CameraRunner_1.CameraRunner(this);
|
this.CameraRunner = new CameraRunner_1.CameraRunner(this);
|
||||||
this.UnityRunner = new UnityRunner_1.UnityRunner(this);
|
this.UnityRunner = new UnityRunner_1.UnityRunner(this);
|
||||||
this.UnityWebSocket = new UnityWebSocket_1.UnityWebSocket(this);
|
this.UnityWebSocket = new UnityWebSocket_1.UnityWebSocket(this);
|
||||||
}
|
}
|
||||||
Main.prototype.start = function () {
|
Main.prototype.start = function () {
|
||||||
|
var _a, _b;
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
var _a;
|
return __generator(this, function (_c) {
|
||||||
return __generator(this, function (_b) {
|
switch (_c.label) {
|
||||||
switch (_b.label) {
|
|
||||||
case 0: return [4 /*yield*/, this.ConfigurationManager.load()];
|
case 0: return [4 /*yield*/, this.ConfigurationManager.load()];
|
||||||
case 1:
|
case 1:
|
||||||
_b.sent();
|
_c.sent();
|
||||||
return [4 /*yield*/, this.waitForRouter()];
|
return [4 /*yield*/, this.waitForRouter()];
|
||||||
case 2:
|
case 2:
|
||||||
_b.sent();
|
_c.sent();
|
||||||
return [4 /*yield*/, this.WebServer.listen()];
|
return [4 /*yield*/, this.WebServer.listen()];
|
||||||
case 3:
|
case 3:
|
||||||
_b.sent();
|
_c.sent();
|
||||||
return [4 /*yield*/, this.Twilio.load()];
|
return [4 /*yield*/, this.Twilio.load()];
|
||||||
case 4:
|
case 4:
|
||||||
_b.sent();
|
_c.sent();
|
||||||
return [4 /*yield*/, this.CameraRunner.connect()];
|
return [4 /*yield*/, this.Audio.waitForDevice()];
|
||||||
case 5:
|
case 5:
|
||||||
_b.sent();
|
_c.sent();
|
||||||
|
return [4 /*yield*/, this.CameraRunner.connect()];
|
||||||
|
case 6:
|
||||||
|
_c.sent();
|
||||||
|
return [4 /*yield*/, this.Timer.load()];
|
||||||
|
case 7:
|
||||||
|
_c.sent();
|
||||||
|
if (((_a = this.Config.unity.launchOnStartup) !== null && _a !== void 0 ? _a : true) === true)
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
_this.UnityRunner.start();
|
_this.UnityRunner.start(UnityRunner_1.StartOrigin.Startup);
|
||||||
}, (_a = this.Config.unity.executable.startUpDelay) !== null && _a !== void 0 ? _a : 0);
|
}, (_b = this.Config.unity.executable.startUpDelay) !== null && _b !== void 0 ? _b : 0);
|
||||||
|
else {
|
||||||
|
this.UnityRunner.setInfo('Not set to launch on startup. Waiting for timer or manual start...', null, 'STOPPED');
|
||||||
|
}
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -123,7 +139,7 @@ var Main = /** @class */ (function () {
|
|||||||
case 3:
|
case 3:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
console.log('Starting UnityRunner...');
|
console.log('Starting UnityRunner...');
|
||||||
return [4 /*yield*/, this.UnityRunner.start()];
|
return [4 /*yield*/, this.UnityRunner.start(this.UnityRunner.startOrigin)];
|
||||||
case 4:
|
case 4:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
console.log('Restart complete.');
|
console.log('Restart complete.');
|
||||||
@@ -166,25 +182,27 @@ var Main = /** @class */ (function () {
|
|||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve) {
|
||||||
var check = function () {
|
var check = function () {
|
||||||
console.log(PREFIX, 'Waiting for router...');
|
console.log(PREFIX, 'Waiting for router...');
|
||||||
ping.sys.probe(_this.Config.router.ip, function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
|
ping.sys.probe(_this.Config.router.ip, function (_a) {
|
||||||
var alive = _b.alive;
|
var alive = _a.alive;
|
||||||
return __generator(this, function (_c) {
|
return __awaiter(_this, void 0, void 0, function () {
|
||||||
switch (_c.label) {
|
return __generator(this, function (_b) {
|
||||||
|
switch (_b.label) {
|
||||||
case 0:
|
case 0:
|
||||||
if (!alive) return [3 /*break*/, 2];
|
if (!alive) return [3 /*break*/, 2];
|
||||||
console.log(PREFIX, 'Router is online');
|
console.log(PREFIX, 'Router is online');
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(3000)];
|
return [4 /*yield*/, (0, Utils_1.delay)(3000)];
|
||||||
case 1:
|
case 1:
|
||||||
_c.sent();
|
_b.sent();
|
||||||
return [2 /*return*/, resolve()];
|
return [2 /*return*/, resolve()];
|
||||||
case 2: return [4 /*yield*/, (0, Utils_1.delay)(1000)];
|
case 2: return [4 /*yield*/, (0, Utils_1.delay)(1000)];
|
||||||
case 3:
|
case 3:
|
||||||
_c.sent();
|
_b.sent();
|
||||||
check();
|
check();
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}); });
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
check();
|
check();
|
||||||
});
|
});
|
||||||
|
|||||||
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":"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"}
|
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../src/Main.ts"],"names":[],"mappings":"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"}
|
||||||
30
dist/Reboot.js
vendored
30
dist/Reboot.js
vendored
@@ -1,30 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.shutdown = shutdown;
|
|
||||||
var child_process_1 = require("child_process");
|
|
||||||
function shutdown() {
|
|
||||||
if (process.platform === 'win32') {
|
|
||||||
return shutdownWindows();
|
|
||||||
}
|
|
||||||
return Promise.resolve({
|
|
||||||
succeed: false,
|
|
||||||
message: 'Platform not supported',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function shutdownWindows() {
|
|
||||||
return new Promise(function (resolve, reject) {
|
|
||||||
(0, child_process_1.exec)('shutdown /s /t 5', function (error, stdout, stderr) {
|
|
||||||
if (error) {
|
|
||||||
console.error("Error shutting down Windows: ".concat(error.message));
|
|
||||||
return resolve({ succeed: false, message: error.message });
|
|
||||||
}
|
|
||||||
if (stderr) {
|
|
||||||
console.error("Error shutting down Windows: ".concat(stderr));
|
|
||||||
return resolve({ succeed: false, message: stderr });
|
|
||||||
}
|
|
||||||
console.log("Windows shutdown command executed: ".concat(stdout));
|
|
||||||
resolve({ succeed: true });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//# sourceMappingURL=Reboot.js.map
|
|
||||||
1
dist/Reboot.js.map
vendored
1
dist/Reboot.js.map
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"Reboot.js","sourceRoot":"","sources":["../src/Reboot.ts"],"names":[],"mappings":";;AAEA,4BASC;AAXD,+CAAqC;AAErC,SAAgB,QAAQ;IACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,eAAe,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC;QACtB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,wBAAwB;KACjC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe;IACvB,OAAO,IAAI,OAAO,CACjB,UAAC,OAAO,EAAE,MAAM;QACf,IAAA,oBAAI,EAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CACZ,uCAAgC,KAAK,CAAC,OAAO,CAAE,CAC/C,CAAC;gBACF,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,uCAAgC,MAAM,CAAE,CAAC,CAAC;gBACxD,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,6CAAsC,MAAM,CAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC,CACD,CAAC;AACH,CAAC"}
|
|
||||||
3
dist/Shutdown.js
vendored
3
dist/Shutdown.js
vendored
@@ -1,6 +1,6 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.shutdown = shutdown;
|
exports.shutdown = void 0;
|
||||||
var child_process_1 = require("child_process");
|
var child_process_1 = require("child_process");
|
||||||
function shutdown() {
|
function shutdown() {
|
||||||
if (process.platform === 'win32') {
|
if (process.platform === 'win32') {
|
||||||
@@ -11,6 +11,7 @@ function shutdown() {
|
|||||||
message: 'Platform not supported',
|
message: 'Platform not supported',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
exports.shutdown = shutdown;
|
||||||
function shutdownWindows() {
|
function shutdownWindows() {
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
(0, child_process_1.exec)('shutdown /s /t 5', function (error, stdout, stderr) {
|
(0, child_process_1.exec)('shutdown /s /t 5', function (error, stdout, stderr) {
|
||||||
|
|||||||
2
dist/Shutdown.js.map
vendored
2
dist/Shutdown.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"Shutdown.js","sourceRoot":"","sources":["../src/Shutdown.ts"],"names":[],"mappings":";;AAEA,4BASC;AAXD,+CAAqC;AAErC,SAAgB,QAAQ;IACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,eAAe,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC;QACtB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,wBAAwB;KACjC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe;IACvB,OAAO,IAAI,OAAO,CACjB,UAAC,OAAO,EAAE,MAAM;QACf,IAAA,oBAAI,EAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CACZ,uCAAgC,KAAK,CAAC,OAAO,CAAE,CAC/C,CAAC;gBACF,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,uCAAgC,MAAM,CAAE,CAAC,CAAC;gBACxD,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,6CAAsC,MAAM,CAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC,CACD,CAAC;AACH,CAAC"}
|
{"version":3,"file":"Shutdown.js","sourceRoot":"","sources":["../src/Shutdown.ts"],"names":[],"mappings":";;;AAAA,+CAAqC;AAErC,SAAgB,QAAQ;IACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,eAAe,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,CAAC;QACtB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,wBAAwB;KACjC,CAAC,CAAC;AACJ,CAAC;AATD,4BASC;AAED,SAAS,eAAe;IACvB,OAAO,IAAI,OAAO,CACjB,UAAC,OAAO,EAAE,MAAM;QACf,IAAA,oBAAI,EAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE,MAAM,EAAE,MAAM;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CACZ,uCAAgC,KAAK,CAAC,OAAO,CAAE,CAC/C,CAAC;gBACF,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,uCAAgC,MAAM,CAAE,CAAC,CAAC;gBACxD,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,6CAAsC,MAAM,CAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC,CACD,CAAC;AACH,CAAC"}
|
||||||
120
dist/Status.js
vendored
Normal file
120
dist/Status.js
vendored
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.StatusType = exports.State = exports.Status = void 0;
|
||||||
|
var UnityRunner_1 = require("./Unity/UnityRunner");
|
||||||
|
var Status = /** @class */ (function () {
|
||||||
|
function Status(Main) {
|
||||||
|
this.states = new Map();
|
||||||
|
this._Main = Main;
|
||||||
|
this.ensure();
|
||||||
|
this.startClock();
|
||||||
|
}
|
||||||
|
Status.prototype.update = function (type, state, message, buttons) {
|
||||||
|
this.states.set(type, { state: state, message: message, buttons: buttons });
|
||||||
|
this._Main.WebServer.socket.emit('status', this.getState());
|
||||||
|
};
|
||||||
|
Status.prototype.reboot = function (type) {
|
||||||
|
switch (type) {
|
||||||
|
case StatusType.CameraPC: {
|
||||||
|
this._Main.CameraRunner.sendCommand('reboot', function (response) {
|
||||||
|
console.log('CameraRunner reboot response:', response);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
case StatusType.CameraProcess: {
|
||||||
|
this._Main.CameraRunner.sendCommand('restart', function (response) {
|
||||||
|
console.log('CameraRunner restart response:', response);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
case StatusType.CameraUnityStream: {
|
||||||
|
this._Main.CameraRunner.sendCommand('restart', function (response) {
|
||||||
|
console.log('CameraRunner restart response:', response);
|
||||||
|
});
|
||||||
|
this._Main.UnityRunner.restart(UnityRunner_1.StartOrigin.Manual);
|
||||||
|
}
|
||||||
|
case StatusType.UnityBuild: {
|
||||||
|
this._Main.UnityRunner.restart(UnityRunner_1.StartOrigin.Manual);
|
||||||
|
}
|
||||||
|
case StatusType.ReplayFunction: {
|
||||||
|
console.log('ReplayFunction reboot requested. Not implemented.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Status.prototype.start = function (type) {
|
||||||
|
switch (type) {
|
||||||
|
case StatusType.UnityBuild: {
|
||||||
|
this._Main.UnityRunner.requestStart(UnityRunner_1.StartOrigin.Manual);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Status.prototype.stop = function (type) {
|
||||||
|
switch (type) {
|
||||||
|
case StatusType.UnityBuild: {
|
||||||
|
this._Main.UnityRunner.requestStop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Status.prototype.getState = function () {
|
||||||
|
var state = {};
|
||||||
|
this.states.forEach(function (value, key) {
|
||||||
|
state[key] = value;
|
||||||
|
});
|
||||||
|
return state;
|
||||||
|
};
|
||||||
|
Status.prototype.startClock = function () {
|
||||||
|
var _this = this;
|
||||||
|
var hadInvalidLastRound = false;
|
||||||
|
setInterval(function () {
|
||||||
|
var hasInvalid = false;
|
||||||
|
_this.states.forEach(function (state, key) {
|
||||||
|
if (state.state === State.Red)
|
||||||
|
hasInvalid = true;
|
||||||
|
});
|
||||||
|
if (hasInvalid && !hadInvalidLastRound) {
|
||||||
|
hadInvalidLastRound = true;
|
||||||
|
console.warn('One ore more status entries are invalid, waiting to see if they recover...');
|
||||||
|
}
|
||||||
|
else if (hasInvalid && hadInvalidLastRound) {
|
||||||
|
console.error('One ore more status entries are still invalid after 5 seconds, restarting system.');
|
||||||
|
_this._Main.Twilio.sendError('Status', 'One ore more status entries are still invalid after 5 seconds, restarting system.');
|
||||||
|
_this._Main.restart();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_this._Main.Twilio.sendError('Status', null);
|
||||||
|
hadInvalidLastRound = false;
|
||||||
|
}
|
||||||
|
}, 5000);
|
||||||
|
};
|
||||||
|
Status.prototype.ensure = function () {
|
||||||
|
for (var type in StatusType) {
|
||||||
|
if (!this.states.has(StatusType[type]))
|
||||||
|
this.states.set(StatusType[type], {
|
||||||
|
state: State.Gray,
|
||||||
|
message: 'Loading...',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Status.prototype.doLog = function () {
|
||||||
|
console.clear();
|
||||||
|
this.states.forEach(function (state, key) {
|
||||||
|
console.log("[".concat(key, "] ").concat(state.state, " - ").concat(state.message));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return Status;
|
||||||
|
}());
|
||||||
|
exports.Status = Status;
|
||||||
|
var State;
|
||||||
|
(function (State) {
|
||||||
|
State["Green"] = "GREEN";
|
||||||
|
State["Yellow"] = "YELLOW";
|
||||||
|
State["Red"] = "RED";
|
||||||
|
State["Gray"] = "GRAY";
|
||||||
|
})(State || (exports.State = State = {}));
|
||||||
|
var StatusType;
|
||||||
|
(function (StatusType) {
|
||||||
|
StatusType["CameraPC"] = "CAMERAPC";
|
||||||
|
StatusType["CameraProcess"] = "CAMERAPROCESS";
|
||||||
|
StatusType["CameraUnityStream"] = "CAMERAUNITYSTREAM";
|
||||||
|
StatusType["UnityBuild"] = "UNITYBUILD";
|
||||||
|
StatusType["ReplayFunction"] = "REPLAYFUNCTION";
|
||||||
|
})(StatusType || (exports.StatusType = StatusType = {}));
|
||||||
|
//# sourceMappingURL=Status.js.map
|
||||||
1
dist/Status.js.map
vendored
Normal file
1
dist/Status.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"Status.js","sourceRoot":"","sources":["../src/Status.ts"],"names":[],"mappings":"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"}
|
||||||
5
dist/Twilio.js
vendored
5
dist/Twilio.js
vendored
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
@@ -148,7 +148,6 @@ var TwilioHandler = /** @class */ (function () {
|
|||||||
};
|
};
|
||||||
TwilioHandler.prototype.sendMessage = function (to, message) {
|
TwilioHandler.prototype.sendMessage = function (to, message) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
return;
|
|
||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve) {
|
||||||
_this.client.messages
|
_this.client.messages
|
||||||
.create({
|
.create({
|
||||||
|
|||||||
2
dist/Twilio.js.map
vendored
2
dist/Twilio.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"Twilio.js","sourceRoot":"","sources":["../src/Twilio.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"Twilio.js","sourceRoot":"","sources":["../src/Twilio.ts"],"names":[],"mappings":"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"}
|
||||||
214
dist/Unity/CameraRunner.js
vendored
214
dist/Unity/CameraRunner.js
vendored
@@ -1,214 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
||||||
function step(op) {
|
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
|
||||||
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
||||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
||||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
||||||
switch (op[0]) {
|
|
||||||
case 0: case 1: t = op; break;
|
|
||||||
case 4: _.label++; return { value: op[1], done: false };
|
|
||||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
||||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
||||||
default:
|
|
||||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
||||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
||||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
||||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
||||||
if (t[2]) _.ops.pop();
|
|
||||||
_.trys.pop(); continue;
|
|
||||||
}
|
|
||||||
op = body.call(thisArg, _);
|
|
||||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
||||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.CameraRunner = void 0;
|
|
||||||
var socket_io_client_1 = require("socket.io-client");
|
|
||||||
var Utils_1 = require("../Utils");
|
|
||||||
var PREFIX = "[CameraRunner]";
|
|
||||||
var CameraRunner = /** @class */ (function () {
|
|
||||||
function CameraRunner(Main) {
|
|
||||||
this.state = 'DISCONNECTED';
|
|
||||||
this.processStatus = {
|
|
||||||
state: 'STOPPED',
|
|
||||||
startTime: -1,
|
|
||||||
output: { current: [], last: [] },
|
|
||||||
};
|
|
||||||
this._Main = Main;
|
|
||||||
}
|
|
||||||
CameraRunner.prototype.handle = function (command) {
|
|
||||||
var args = [];
|
|
||||||
for (var _i = 1; _i < arguments.length; _i++) {
|
|
||||||
args[_i - 1] = arguments[_i];
|
|
||||||
}
|
|
||||||
switch (command) {
|
|
||||||
case 'restart':
|
|
||||||
case 'reboot':
|
|
||||||
var callback = args[0];
|
|
||||||
if (typeof callback !== 'function')
|
|
||||||
return;
|
|
||||||
this.sendCommand(command, callback);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
CameraRunner.prototype.sendCommand = function (command, callback) {
|
|
||||||
if (this.socket == null || !this.socket.connected)
|
|
||||||
return callback({
|
|
||||||
succeed: false,
|
|
||||||
message: 'Not connected to CameraRunner',
|
|
||||||
});
|
|
||||||
this.socket.emit(command, function (response) {
|
|
||||||
callback(response);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
CameraRunner.prototype.broadcastState = function () {
|
|
||||||
this._Main.WebServer.socket.emit('cameraRunnerState', this.getState());
|
|
||||||
};
|
|
||||||
CameraRunner.prototype.getState = function () {
|
|
||||||
return {
|
|
||||||
state: this.state,
|
|
||||||
message: this.message,
|
|
||||||
error: this.error,
|
|
||||||
processStatus: this.processStatus,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
CameraRunner.prototype.setInfo = function (message, error, state) {
|
|
||||||
if (state === void 0) { state = 'FAILED'; }
|
|
||||||
this.message = message;
|
|
||||||
this.error = error;
|
|
||||||
this.state = state;
|
|
||||||
this.broadcastState();
|
|
||||||
if (state == 'FAILED' || state == 'DISCONNECTED')
|
|
||||||
console.warn(PREFIX, message !== null && message !== void 0 ? message : error);
|
|
||||||
else
|
|
||||||
console.log(PREFIX, message !== null && message !== void 0 ? message : error);
|
|
||||||
};
|
|
||||||
CameraRunner.prototype.startPollClock = function () {
|
|
||||||
var _this = this;
|
|
||||||
var poll = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
||||||
var data;
|
|
||||||
var _this = this;
|
|
||||||
return __generator(this, function (_a) {
|
|
||||||
switch (_a.label) {
|
|
||||||
case 0: return [4 /*yield*/, new Promise(function (resolve) {
|
|
||||||
_this.socket.emit('getStatus', function (response) {
|
|
||||||
return resolve(response);
|
|
||||||
});
|
|
||||||
})];
|
|
||||||
case 1:
|
|
||||||
data = _a.sent();
|
|
||||||
this.processStatus = data;
|
|
||||||
this.broadcastState();
|
|
||||||
return [2 /*return*/];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}); };
|
|
||||||
this.socket.on('simpleStatus', function (simpleStatus) {
|
|
||||||
_this.processStatus.state = simpleStatus.state;
|
|
||||||
_this.processStatus.message = simpleStatus.message;
|
|
||||||
_this.processStatus.error = simpleStatus.error;
|
|
||||||
_this.broadcastState();
|
|
||||||
});
|
|
||||||
clearInterval(this.pollClock);
|
|
||||||
this.pollClock = setInterval(function () { return poll(); }, this._Main.Config.cameraRunner.pollInterval);
|
|
||||||
poll();
|
|
||||||
};
|
|
||||||
CameraRunner.prototype.reconnect = function () {
|
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
|
||||||
return __generator(this, function (_a) {
|
|
||||||
switch (_a.label) {
|
|
||||||
case 0:
|
|
||||||
clearInterval(this.pollClock);
|
|
||||||
if (this.socket != null) {
|
|
||||||
this.socket.disconnect();
|
|
||||||
this.socket.close();
|
|
||||||
this.socket = null;
|
|
||||||
}
|
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(500)];
|
|
||||||
case 1:
|
|
||||||
_a.sent();
|
|
||||||
this.setInfo("Reconnecting to CameraRunner in 5 seconds...", null, 'CONNECTING');
|
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(5000)];
|
|
||||||
case 2:
|
|
||||||
_a.sent();
|
|
||||||
return [4 /*yield*/, this.connect()];
|
|
||||||
case 3:
|
|
||||||
_a.sent();
|
|
||||||
return [2 /*return*/];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
CameraRunner.prototype.connect = function () {
|
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
|
||||||
var ip, port;
|
|
||||||
var _this = this;
|
|
||||||
return __generator(this, function (_a) {
|
|
||||||
switch (_a.label) {
|
|
||||||
case 0:
|
|
||||||
this.setInfo('Connecting to CameraRunner', null, 'CONNECTING');
|
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(1000)];
|
|
||||||
case 1:
|
|
||||||
_a.sent();
|
|
||||||
ip = this._Main.Config.cameraRunner.webSocket.ip;
|
|
||||||
port = this._Main.Config.cameraRunner.webSocket.port;
|
|
||||||
if (ip == null || port == null) {
|
|
||||||
return [2 /*return*/, this.setInfo('Connection problem', 'Camera Runner WebSocket IP or port is not configured.')];
|
|
||||||
}
|
|
||||||
this.socket = (0, socket_io_client_1.io)("ws://".concat(ip, ":").concat(port), {
|
|
||||||
reconnectionAttempts: 0,
|
|
||||||
reconnectionDelay: 2000,
|
|
||||||
});
|
|
||||||
this.socket.on('connect', function () {
|
|
||||||
_this.setInfo('Connected', null, 'CONNECTED');
|
|
||||||
_this.startPollClock();
|
|
||||||
});
|
|
||||||
this.socket.on('disconnect', function () {
|
|
||||||
_this.setInfo('Disconnected', null, 'DISCONNECTED');
|
|
||||||
_this.reconnect();
|
|
||||||
});
|
|
||||||
this.socket.on('reconnect', function () {
|
|
||||||
_this.setInfo('Connected (reconnection)', null, 'CONNECTED');
|
|
||||||
});
|
|
||||||
this.socket.on('connect_error', function (err) {
|
|
||||||
_this.setInfo('Connection problem', "Connection error: ".concat(err));
|
|
||||||
_this.reconnect();
|
|
||||||
});
|
|
||||||
this.socket.on('error', function (err) {
|
|
||||||
_this.setInfo('Connection problem', "Socket error: ".concat(err));
|
|
||||||
_this.reconnect();
|
|
||||||
});
|
|
||||||
this.socket.on('reconnect_attempt', function () {
|
|
||||||
_this.setInfo('Reconnecting', null, 'CONNECTING');
|
|
||||||
});
|
|
||||||
this.socket.on('reconnect_failed', function () {
|
|
||||||
_this.setInfo('Connection problem', 'Reconnection failed');
|
|
||||||
_this.reconnect();
|
|
||||||
});
|
|
||||||
this.socket.on('close', function () {
|
|
||||||
_this.setInfo('Disconnected', null, 'DISCONNECTED');
|
|
||||||
_this.reconnect();
|
|
||||||
});
|
|
||||||
return [2 /*return*/];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
return CameraRunner;
|
|
||||||
}());
|
|
||||||
exports.CameraRunner = CameraRunner;
|
|
||||||
//# sourceMappingURL=CameraRunner.js.map
|
|
||||||
1
dist/Unity/CameraRunner.js.map
vendored
1
dist/Unity/CameraRunner.js.map
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"CameraRunner.js","sourceRoot":"","sources":["../../src/Unity/CameraRunner.ts"],"names":[],"mappings":"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"}
|
|
||||||
117
dist/Unity/Unity.js
vendored
117
dist/Unity/Unity.js
vendored
@@ -1,117 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
||||||
function step(op) {
|
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
|
||||||
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
||||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
||||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
||||||
switch (op[0]) {
|
|
||||||
case 0: case 1: t = op; break;
|
|
||||||
case 4: _.label++; return { value: op[1], done: false };
|
|
||||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
||||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
||||||
default:
|
|
||||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
||||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
||||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
||||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
||||||
if (t[2]) _.ops.pop();
|
|
||||||
_.trys.pop(); continue;
|
|
||||||
}
|
|
||||||
op = body.call(thisArg, _);
|
|
||||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
||||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.Unity = void 0;
|
|
||||||
var ws_1 = require("ws");
|
|
||||||
var Utils_1 = require("../Utils");
|
|
||||||
var PREFIX = '[Unity]';
|
|
||||||
var Unity = /** @class */ (function () {
|
|
||||||
function Unity(Main) {
|
|
||||||
this.state = 'DISCONNECTED';
|
|
||||||
this.restartRequested = false;
|
|
||||||
this._Main = Main;
|
|
||||||
}
|
|
||||||
Unity.prototype.broadcastState = function () {
|
|
||||||
this._Main.WebServer.socket.emit('unityState', this.getState());
|
|
||||||
};
|
|
||||||
Unity.prototype.setInfo = function (message, error, state) {
|
|
||||||
if (state === void 0) { state = 'FAILED'; }
|
|
||||||
this.message = message;
|
|
||||||
this.error = error;
|
|
||||||
this.state = state;
|
|
||||||
this.broadcastState();
|
|
||||||
if (state == 'FAILED' || state == 'DISCONNECTED')
|
|
||||||
console.warn(PREFIX, message !== null && message !== void 0 ? message : error);
|
|
||||||
else
|
|
||||||
console.log(PREFIX, message !== null && message !== void 0 ? message : error);
|
|
||||||
};
|
|
||||||
Unity.prototype.reconnect = function () {
|
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
|
||||||
return __generator(this, function (_a) {
|
|
||||||
switch (_a.label) {
|
|
||||||
case 0:
|
|
||||||
if (this.restartRequested)
|
|
||||||
return [2 /*return*/];
|
|
||||||
this.restartRequested = true;
|
|
||||||
if (this.socket != null) {
|
|
||||||
this.socket.close();
|
|
||||||
this.socket = null;
|
|
||||||
}
|
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(500)];
|
|
||||||
case 1:
|
|
||||||
_a.sent();
|
|
||||||
this.setInfo("Reconnecting to Unity in 5 seconds...", null, 'CONNECTING');
|
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(5000)];
|
|
||||||
case 2:
|
|
||||||
_a.sent();
|
|
||||||
return [4 /*yield*/, this.connect()];
|
|
||||||
case 3:
|
|
||||||
_a.sent();
|
|
||||||
return [2 /*return*/];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
Unity.prototype.connect = function () {
|
|
||||||
var _this = this;
|
|
||||||
var ws = new ws_1.WebSocket("ws://".concat(this._Main.Config.unity.webSocket.ip, ":").concat(this._Main.Config.unity.webSocket.port));
|
|
||||||
ws.on('error', function (error) {
|
|
||||||
_this.setInfo('Connection error', "Could not connect: ".concat(error.message), 'FAILED');
|
|
||||||
_this.reconnect();
|
|
||||||
});
|
|
||||||
ws.on('open', function () {
|
|
||||||
_this.setInfo('Connected', null, 'CONNECTED');
|
|
||||||
});
|
|
||||||
ws.on('close', function () {
|
|
||||||
if (_this.restartRequested)
|
|
||||||
return;
|
|
||||||
_this.setInfo('Disconnected', 'Unity was disconnected unexpectedly', 'DISCONNECTED');
|
|
||||||
_this.reconnect();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
Unity.prototype.getState = function () {
|
|
||||||
return {
|
|
||||||
state: this.state,
|
|
||||||
message: this.message,
|
|
||||||
error: this.error,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
return Unity;
|
|
||||||
}());
|
|
||||||
exports.Unity = Unity;
|
|
||||||
//# sourceMappingURL=Unity.js.map
|
|
||||||
1
dist/Unity/Unity.js.map
vendored
1
dist/Unity/Unity.js.map
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"Unity.js","sourceRoot":"","sources":["../../src/Unity/Unity.ts"],"names":[],"mappings":"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"}
|
|
||||||
60
dist/Unity/UnityRunner.js
vendored
60
dist/Unity/UnityRunner.js
vendored
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
@@ -45,10 +45,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|||||||
return to.concat(ar || Array.prototype.slice.call(from));
|
return to.concat(ar || Array.prototype.slice.call(from));
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.UnityRunner = void 0;
|
exports.StartOrigin = exports.UnityBuildStateColors = exports.UnityRunner = void 0;
|
||||||
var fs_extra_1 = require("fs-extra");
|
var fs_extra_1 = require("fs-extra");
|
||||||
var child_process_1 = require("child_process");
|
var child_process_1 = require("child_process");
|
||||||
var Utils_1 = require("../Utils");
|
var Utils_1 = require("../Utils");
|
||||||
|
var Status_1 = require("../Status");
|
||||||
var PREFIX = '[UnityRunner]';
|
var PREFIX = '[UnityRunner]';
|
||||||
var LOG_OUTPUT = !process.argv.includes('--no-output-log');
|
var LOG_OUTPUT = !process.argv.includes('--no-output-log');
|
||||||
var UnityRunner = /** @class */ (function () {
|
var UnityRunner = /** @class */ (function () {
|
||||||
@@ -70,11 +71,11 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
return;
|
return;
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case 'restart':
|
case 'restart':
|
||||||
return callback(this.requestRestart());
|
return callback(this.requestRestart(StartOrigin.Manual));
|
||||||
case 'stop':
|
case 'stop':
|
||||||
return callback(this.requestStop());
|
return callback(this.requestStop());
|
||||||
case 'start':
|
case 'start':
|
||||||
return callback(this.requestStart());
|
return callback(this.requestStart(StartOrigin.Manual));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
UnityRunner.prototype.startStatusClock = function () {
|
UnityRunner.prototype.startStatusClock = function () {
|
||||||
@@ -84,13 +85,13 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
_this.broadcastState();
|
_this.broadcastState();
|
||||||
}, 3000);
|
}, 3000);
|
||||||
};
|
};
|
||||||
UnityRunner.prototype.requestRestart = function () {
|
UnityRunner.prototype.requestRestart = function (startOrigin) {
|
||||||
if (this.state !== 'RUNNING')
|
if (this.state !== 'RUNNING')
|
||||||
return {
|
return {
|
||||||
succeed: false,
|
succeed: false,
|
||||||
message: 'Cannot restart when process is not running. It is probably restarting already.',
|
message: 'Cannot restart when process is not running. It is probably restarting already.',
|
||||||
};
|
};
|
||||||
this.restart(true);
|
this.restart(startOrigin, true);
|
||||||
return { succeed: true };
|
return { succeed: true };
|
||||||
};
|
};
|
||||||
UnityRunner.prototype.requestStop = function () {
|
UnityRunner.prototype.requestStop = function () {
|
||||||
@@ -102,23 +103,29 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
this.stop();
|
this.stop();
|
||||||
return { succeed: true };
|
return { succeed: true };
|
||||||
};
|
};
|
||||||
UnityRunner.prototype.requestStart = function () {
|
UnityRunner.prototype.requestStart = function (startOrigin) {
|
||||||
if (this.state !== 'STOPPED')
|
if (this.state !== 'STOPPED')
|
||||||
return {
|
return {
|
||||||
succeed: false,
|
succeed: false,
|
||||||
message: 'Cannot start when process is already running.',
|
message: 'Cannot start when process is already running.',
|
||||||
};
|
};
|
||||||
this.start();
|
this.start(startOrigin);
|
||||||
return { succeed: true };
|
return { succeed: true };
|
||||||
};
|
};
|
||||||
UnityRunner.prototype.broadcastState = function () {
|
UnityRunner.prototype.broadcastState = function () {
|
||||||
this._Main.WebServer.socket.emit('unityRunnerState', this.getStatus());
|
this._Main.WebServer.socket.emit('unityRunnerState', this.getStatus());
|
||||||
};
|
};
|
||||||
UnityRunner.prototype.setInfo = function (message, error, state) {
|
UnityRunner.prototype.setInfo = function (message, error, state) {
|
||||||
|
var _a;
|
||||||
if (state === void 0) { state = 'PROBLEM'; }
|
if (state === void 0) { state = 'PROBLEM'; }
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.error = error;
|
this.error = error;
|
||||||
this.state = state;
|
this.state = state;
|
||||||
|
this._Main.Status.update(Status_1.StatusType.UnityBuild, exports.UnityBuildStateColors[state], (_a = message !== null && message !== void 0 ? message : error) !== null && _a !== void 0 ? _a : '', {
|
||||||
|
reboot: state === 'PROBLEM' || state === 'RUNNING',
|
||||||
|
start: state === 'STOPPED',
|
||||||
|
stop: state === 'RUNNING',
|
||||||
|
});
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
if (error != null)
|
if (error != null)
|
||||||
this._Main.Twilio.sendError('UnityRunner', error);
|
this._Main.Twilio.sendError('UnityRunner', error);
|
||||||
@@ -174,9 +181,9 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
UnityRunner.prototype.restart = function () {
|
UnityRunner.prototype.restart = function (origin, instant) {
|
||||||
return __awaiter(this, arguments, void 0, function (instant) {
|
|
||||||
if (instant === void 0) { instant = false; }
|
if (instant === void 0) { instant = false; }
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
switch (_a.label) {
|
switch (_a.label) {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -186,6 +193,7 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
this._Main.WebServer.Calibration.hasCalibrationImage = false;
|
this._Main.WebServer.Calibration.hasCalibrationImage = false;
|
||||||
clearInterval(this.statusClock);
|
clearInterval(this.statusClock);
|
||||||
this.startTime = -1;
|
this.startTime = -1;
|
||||||
|
this.startOrigin = null;
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
if (!!instant) return [3 /*break*/, 2];
|
if (!!instant) return [3 /*break*/, 2];
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(2000)];
|
return [4 /*yield*/, (0, Utils_1.delay)(2000)];
|
||||||
@@ -216,7 +224,7 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
case 7:
|
case 7:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
_a.label = 8;
|
_a.label = 8;
|
||||||
case 8: return [4 /*yield*/, this.start()];
|
case 8: return [4 /*yield*/, this.start(this.startOrigin)];
|
||||||
case 9:
|
case 9:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
@@ -224,11 +232,11 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
UnityRunner.prototype.start = function () {
|
UnityRunner.prototype.start = function (origin) {
|
||||||
|
var _a, _b, _c;
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var path, fileName;
|
var path, fileName;
|
||||||
var _this = this;
|
var _this = this;
|
||||||
var _a, _b, _c;
|
|
||||||
return __generator(this, function (_d) {
|
return __generator(this, function (_d) {
|
||||||
switch (_d.label) {
|
switch (_d.label) {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -285,11 +293,11 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
if (_this.restartTriggered)
|
if (_this.restartTriggered)
|
||||||
return;
|
return;
|
||||||
_this.setInfo('Process exited', "Process exited with code ".concat(code, " and signal ").concat(signal), 'PROBLEM');
|
_this.setInfo('Process exited', "Process exited with code ".concat(code, " and signal ").concat(signal), 'PROBLEM');
|
||||||
_this.restart();
|
_this.restart(_this.startOrigin);
|
||||||
});
|
});
|
||||||
this.process.on('error', function (err) {
|
this.process.on('error', function (err) {
|
||||||
_this.setInfo('Process error', err.message);
|
_this.setInfo('Process error', err.message);
|
||||||
_this.restart();
|
_this.restart(_this.startOrigin);
|
||||||
});
|
});
|
||||||
(_b = this.process.stdout) === null || _b === void 0 ? void 0 : _b.on('data', function (data) {
|
(_b = this.process.stdout) === null || _b === void 0 ? void 0 : _b.on('data', function (data) {
|
||||||
var lines = data
|
var lines = data
|
||||||
@@ -317,6 +325,7 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
_this.output.current.push(formattedLine);
|
_this.output.current.push(formattedLine);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
this.startOrigin = origin;
|
||||||
this.startStatusClock();
|
this.startStatusClock();
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
var _a, _b;
|
var _a, _b;
|
||||||
@@ -346,4 +355,23 @@ var UnityRunner = /** @class */ (function () {
|
|||||||
return UnityRunner;
|
return UnityRunner;
|
||||||
}());
|
}());
|
||||||
exports.UnityRunner = UnityRunner;
|
exports.UnityRunner = UnityRunner;
|
||||||
|
var State;
|
||||||
|
(function (State) {
|
||||||
|
State["Green"] = "GREEN";
|
||||||
|
State["Yellow"] = "YELLOW";
|
||||||
|
State["Red"] = "RED";
|
||||||
|
State["Gray"] = "GRAY";
|
||||||
|
})(State || (State = {}));
|
||||||
|
exports.UnityBuildStateColors = {
|
||||||
|
RUNNING: State.Green,
|
||||||
|
STOPPED: State.Gray,
|
||||||
|
STARTING: State.Yellow,
|
||||||
|
PROBLEM: State.Red,
|
||||||
|
};
|
||||||
|
var StartOrigin;
|
||||||
|
(function (StartOrigin) {
|
||||||
|
StartOrigin["Timer"] = "TIMER";
|
||||||
|
StartOrigin["Manual"] = "MANUAL";
|
||||||
|
StartOrigin["Startup"] = "STARTUP";
|
||||||
|
})(StartOrigin || (exports.StartOrigin = StartOrigin = {}));
|
||||||
//# sourceMappingURL=UnityRunner.js.map
|
//# sourceMappingURL=UnityRunner.js.map
|
||||||
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
36
dist/Unity/UnityWebSocket.js
vendored
36
dist/Unity/UnityWebSocket.js
vendored
@@ -20,8 +20,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
@@ -47,9 +47,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.UnityWebSocket = void 0;
|
exports.CameraUnityStateColors = exports.UnityWebSocket = void 0;
|
||||||
var ws_1 = require("ws");
|
var ws_1 = require("ws");
|
||||||
var Utils_1 = require("../Utils");
|
var Utils_1 = require("../Utils");
|
||||||
|
var Status_1 = require("../Status");
|
||||||
var PREFIX = '[Unity]';
|
var PREFIX = '[Unity]';
|
||||||
var UnityWebSocket = /** @class */ (function () {
|
var UnityWebSocket = /** @class */ (function () {
|
||||||
function UnityWebSocket(Main) {
|
function UnityWebSocket(Main) {
|
||||||
@@ -71,6 +72,7 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
this.disconnected = false;
|
this.disconnected = false;
|
||||||
this.restartRequested = false;
|
this.restartRequested = false;
|
||||||
this._Main = Main;
|
this._Main = Main;
|
||||||
|
this.updateStatus();
|
||||||
}
|
}
|
||||||
UnityWebSocket.prototype.handle = function (command) {
|
UnityWebSocket.prototype.handle = function (command) {
|
||||||
var args = [];
|
var args = [];
|
||||||
@@ -150,11 +152,27 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
UnityWebSocket.prototype.broadcastState = function () {
|
UnityWebSocket.prototype.broadcastState = function () {
|
||||||
this._Main.WebServer.socket.emit('unityWebSocketState', this.getState());
|
this._Main.WebServer.socket.emit('unityWebSocketState', this.getState());
|
||||||
};
|
};
|
||||||
|
UnityWebSocket.prototype.updateStatus = function () {
|
||||||
|
if (this.state != 'CONNECTED') {
|
||||||
|
this._Main.Status.update(Status_1.StatusType.CameraUnityStream, exports.CameraUnityStateColors[this.state], this.message, {
|
||||||
|
reboot: this.state === 'FAILED',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var status_1 = !this.parameters.zedReady
|
||||||
|
? 'Waiting for ZED stream'
|
||||||
|
: this.message;
|
||||||
|
this._Main.Status.update(Status_1.StatusType.CameraUnityStream, this.parameters.zedReady ? Status_1.State.Green : Status_1.State.Yellow, status_1, {
|
||||||
|
reboot: this.parameters.zedReady,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
UnityWebSocket.prototype.setInfo = function (message, error, state) {
|
UnityWebSocket.prototype.setInfo = function (message, error, state) {
|
||||||
if (state === void 0) { state = 'FAILED'; }
|
if (state === void 0) { state = 'FAILED'; }
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.error = error;
|
this.error = error;
|
||||||
this.state = state;
|
this.state = state;
|
||||||
|
this.updateStatus();
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
if (error != null)
|
if (error != null)
|
||||||
this._Main.Twilio.sendError('UnityWebSocket', error);
|
this._Main.Twilio.sendError('UnityWebSocket', error);
|
||||||
@@ -204,6 +222,7 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
? 2
|
? 2
|
||||||
: null });
|
: null });
|
||||||
});
|
});
|
||||||
|
this.updateStatus();
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
break;
|
break;
|
||||||
case 'response_camera_frame':
|
case 'response_camera_frame':
|
||||||
@@ -302,7 +321,10 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
};
|
};
|
||||||
UnityWebSocket.prototype.startFetchClocks = function () {
|
UnityWebSocket.prototype.startFetchClocks = function () {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
this.socket.send(JSON.stringify({ type: 'set_heartbeat_auto_send', autoSend: false }));
|
this.socket.send(JSON.stringify({
|
||||||
|
type: 'set_heartbeat_auto_send',
|
||||||
|
autoSend: false,
|
||||||
|
}));
|
||||||
this.heartbeatClock = setInterval(function () {
|
this.heartbeatClock = setInterval(function () {
|
||||||
if (_this.socket == null ||
|
if (_this.socket == null ||
|
||||||
_this.socket.readyState !== ws_1.WebSocket.OPEN)
|
_this.socket.readyState !== ws_1.WebSocket.OPEN)
|
||||||
@@ -327,4 +349,10 @@ var UnityWebSocket = /** @class */ (function () {
|
|||||||
return UnityWebSocket;
|
return UnityWebSocket;
|
||||||
}());
|
}());
|
||||||
exports.UnityWebSocket = UnityWebSocket;
|
exports.UnityWebSocket = UnityWebSocket;
|
||||||
|
exports.CameraUnityStateColors = {
|
||||||
|
CONNECTED: Status_1.State.Green,
|
||||||
|
DISCONNECTED: Status_1.State.Gray,
|
||||||
|
CONNECTING: Status_1.State.Yellow,
|
||||||
|
FAILED: Status_1.State.Red,
|
||||||
|
};
|
||||||
//# sourceMappingURL=UnityWebSocket.js.map
|
//# sourceMappingURL=UnityWebSocket.js.map
|
||||||
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
207
dist/UnityRunner.js
vendored
207
dist/UnityRunner.js
vendored
@@ -1,207 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
||||||
function step(op) {
|
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
|
||||||
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
||||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
||||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
||||||
switch (op[0]) {
|
|
||||||
case 0: case 1: t = op; break;
|
|
||||||
case 4: _.label++; return { value: op[1], done: false };
|
|
||||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
||||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
||||||
default:
|
|
||||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
||||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
||||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
||||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
||||||
if (t[2]) _.ops.pop();
|
|
||||||
_.trys.pop(); continue;
|
|
||||||
}
|
|
||||||
op = body.call(thisArg, _);
|
|
||||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
||||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
||||||
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
||||||
if (ar || !(i in from)) {
|
|
||||||
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
||||||
ar[i] = from[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return to.concat(ar || Array.prototype.slice.call(from));
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.UnityRunner = void 0;
|
|
||||||
var fs_extra_1 = require("fs-extra");
|
|
||||||
var child_process_1 = require("child_process");
|
|
||||||
var Utils_1 = require("./Utils");
|
|
||||||
var PREFIX = '[UnityRunner]';
|
|
||||||
var LOG_OUTPUT = !process.argv.includes('--no-output-log');
|
|
||||||
var UnityRunner = /** @class */ (function () {
|
|
||||||
function UnityRunner(Main) {
|
|
||||||
this.state = 'STOPPED';
|
|
||||||
this.startTime = null;
|
|
||||||
this.output = { current: [], last: [] };
|
|
||||||
this.restartTriggered = false;
|
|
||||||
this._Main = Main;
|
|
||||||
}
|
|
||||||
UnityRunner.prototype.requestRestart = function () {
|
|
||||||
if (this.state !== 'RUNNING')
|
|
||||||
return {
|
|
||||||
succeed: false,
|
|
||||||
message: 'Cannot restart when process is not running. It is probably restarting already.',
|
|
||||||
};
|
|
||||||
this.restart(true);
|
|
||||||
return { succeed: true };
|
|
||||||
};
|
|
||||||
UnityRunner.prototype.broadcastState = function () {
|
|
||||||
this._Main.WebServer.socket.emit('unityRunnerState', this.getStatus());
|
|
||||||
};
|
|
||||||
UnityRunner.prototype.setInfo = function (message, error, state) {
|
|
||||||
if (state === void 0) { state = 'PROBLEM'; }
|
|
||||||
this.message = message;
|
|
||||||
this.error = error;
|
|
||||||
this.state = state;
|
|
||||||
this.broadcastState();
|
|
||||||
this.output.current.push("[".concat(new Date().toLocaleTimeString('nl-NL'), "] [System] [").concat(state, "] ").concat(message !== null && message !== void 0 ? message : error));
|
|
||||||
if (state == 'PROBLEM' || state == 'STOPPED')
|
|
||||||
console.warn(PREFIX, message !== null && message !== void 0 ? message : error);
|
|
||||||
else
|
|
||||||
console.log(PREFIX, message !== null && message !== void 0 ? message : error);
|
|
||||||
};
|
|
||||||
UnityRunner.prototype.restart = function () {
|
|
||||||
return __awaiter(this, arguments, void 0, function (instant) {
|
|
||||||
if (instant === void 0) { instant = false; }
|
|
||||||
return __generator(this, function (_a) {
|
|
||||||
switch (_a.label) {
|
|
||||||
case 0:
|
|
||||||
if (this.restartTriggered)
|
|
||||||
return [2 /*return*/];
|
|
||||||
if (this.output.current.length > 0) {
|
|
||||||
this.output.last = __spreadArray([], this.output.current, true);
|
|
||||||
this.output.current = [];
|
|
||||||
}
|
|
||||||
this.restartTriggered = true;
|
|
||||||
this.startTime = -1;
|
|
||||||
this.broadcastState();
|
|
||||||
if (instant)
|
|
||||||
this.setInfo('Process will restart shortly...', null, 'STOPPED');
|
|
||||||
if (!(this.process != null)) return [3 /*break*/, 2];
|
|
||||||
this.process.kill('SIGTERM');
|
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(3000)];
|
|
||||||
case 1:
|
|
||||||
_a.sent();
|
|
||||||
if (!this.process.killed && this.process.exitCode === null) {
|
|
||||||
this.process.kill('SIGKILL');
|
|
||||||
console.log(PREFIX, 'Sent SIGKILL to process.');
|
|
||||||
}
|
|
||||||
_a.label = 2;
|
|
||||||
case 2:
|
|
||||||
this.startTime = -1;
|
|
||||||
if (!!instant) return [3 /*break*/, 4];
|
|
||||||
this.setInfo("Restarting process in 5 seconds...", null, 'STOPPED');
|
|
||||||
return [4 /*yield*/, (0, Utils_1.delay)(5000)];
|
|
||||||
case 3:
|
|
||||||
_a.sent();
|
|
||||||
_a.label = 4;
|
|
||||||
case 4: return [4 /*yield*/, this.start()];
|
|
||||||
case 5:
|
|
||||||
_a.sent();
|
|
||||||
return [2 /*return*/];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
UnityRunner.prototype.start = function () {
|
|
||||||
var _this = this;
|
|
||||||
var _a, _b;
|
|
||||||
if (this.output.current.length > 0) {
|
|
||||||
this.output.last = __spreadArray([], this.output.current, true);
|
|
||||||
this.output.current = [];
|
|
||||||
}
|
|
||||||
this.startTime = Date.now();
|
|
||||||
this.restartTriggered = false;
|
|
||||||
this.broadcastState();
|
|
||||||
var path = this._Main.Config.unity.executable.path;
|
|
||||||
if (path == null || !(0, fs_extra_1.pathExistsSync)(path)) {
|
|
||||||
this.setInfo('Executable problem', "Executable path is not set or does not exist: ".concat(path));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var fileName = path.split(/(\/|\\)/).pop();
|
|
||||||
this.setInfo("Starting executable: ".concat(fileName), null, 'STARTING');
|
|
||||||
this.process = (0, child_process_1.spawn)(path, this._Main.Config.unity.executable.arguments, {
|
|
||||||
stdio: 'pipe',
|
|
||||||
});
|
|
||||||
this.process.on('exit', function (code, signal) {
|
|
||||||
if (_this.restartTriggered)
|
|
||||||
return;
|
|
||||||
_this.setInfo('Process exited', "Process exited with code ".concat(code, " and signal ").concat(signal), 'STOPPED');
|
|
||||||
_this.restart();
|
|
||||||
});
|
|
||||||
this.process.on('error', function (err) {
|
|
||||||
_this.setInfo('Process error', err.message);
|
|
||||||
_this.restart();
|
|
||||||
});
|
|
||||||
(_a = this.process.stdout) === null || _a === void 0 ? void 0 : _a.on('data', function (data) {
|
|
||||||
var lines = data
|
|
||||||
.toString()
|
|
||||||
.trim()
|
|
||||||
.split('\n')
|
|
||||||
.filter(function (line) { return line.length > 0; });
|
|
||||||
lines.forEach(function (line) {
|
|
||||||
var formattedLine = "[".concat(new Date().toLocaleTimeString('nl-NL'), "] [").concat(fileName, "] ").concat(line);
|
|
||||||
if (LOG_OUTPUT)
|
|
||||||
console.log(PREFIX, formattedLine);
|
|
||||||
_this.output.current.push(formattedLine);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
(_b = this.process.stderr) === null || _b === void 0 ? void 0 : _b.on('data', function (data) {
|
|
||||||
var lines = data
|
|
||||||
.toString()
|
|
||||||
.trim()
|
|
||||||
.split('\n')
|
|
||||||
.filter(function (line) { return line.length > 0; });
|
|
||||||
lines.forEach(function (line) {
|
|
||||||
var formattedLine = "[".concat(new Date().toLocaleTimeString('nl-NL'), "] [").concat(fileName, "] [ERROR] ").concat(line);
|
|
||||||
if (LOG_OUTPUT)
|
|
||||||
console.error(PREFIX, formattedLine);
|
|
||||||
_this.output.current.push(formattedLine);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
setTimeout(function () {
|
|
||||||
var _a, _b;
|
|
||||||
if (_this.process == null ||
|
|
||||||
((_a = _this.process) === null || _a === void 0 ? void 0 : _a.killed) ||
|
|
||||||
((_b = _this.process) === null || _b === void 0 ? void 0 : _b.exitCode) != null ||
|
|
||||||
_this.restartTriggered)
|
|
||||||
return;
|
|
||||||
_this.setInfo('Running', '', 'RUNNING');
|
|
||||||
}, 5000);
|
|
||||||
};
|
|
||||||
UnityRunner.prototype.getStatus = function () {
|
|
||||||
return {
|
|
||||||
state: this.state,
|
|
||||||
message: this.message,
|
|
||||||
error: this.error,
|
|
||||||
startTime: this.startTime,
|
|
||||||
output: this.output,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
return UnityRunner;
|
|
||||||
}());
|
|
||||||
exports.UnityRunner = UnityRunner;
|
|
||||||
//# sourceMappingURL=UnityRunner.js.map
|
|
||||||
1
dist/UnityRunner.js.map
vendored
1
dist/UnityRunner.js.map
vendored
File diff suppressed because one or more lines are too long
3
dist/Utils.js
vendored
3
dist/Utils.js
vendored
@@ -1,7 +1,8 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.delay = delay;
|
exports.delay = void 0;
|
||||||
function delay(duration) {
|
function delay(duration) {
|
||||||
return new Promise(function (resolve) { return setTimeout(resolve, duration); });
|
return new Promise(function (resolve) { return setTimeout(resolve, duration); });
|
||||||
}
|
}
|
||||||
|
exports.delay = delay;
|
||||||
//# sourceMappingURL=Utils.js.map
|
//# sourceMappingURL=Utils.js.map
|
||||||
2
dist/Utils.js.map
vendored
2
dist/Utils.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../src/Utils.ts"],"names":[],"mappings":";;AAMA,sBAEC;AAFD,SAAgB,KAAK,CAAC,QAAgB;IACrC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EAA7B,CAA6B,CAAC,CAAC;AAChE,CAAC"}
|
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../src/Utils.ts"],"names":[],"mappings":";;;AAMA,SAAgB,KAAK,CAAC,QAAgB;IACrC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EAA7B,CAA6B,CAAC,CAAC;AAChE,CAAC;AAFD,sBAEC"}
|
||||||
31
dist/WebServer.js
vendored
31
dist/WebServer.js
vendored
@@ -1,31 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.WebServer = void 0;
|
|
||||||
var express = require("express");
|
|
||||||
var socket_io_1 = require("socket.io");
|
|
||||||
var http_1 = require("http");
|
|
||||||
var PREFIX = '[WebServer]';
|
|
||||||
var WebServer = /** @class */ (function () {
|
|
||||||
function WebServer(Main) {
|
|
||||||
this._Main = Main;
|
|
||||||
this.prepare();
|
|
||||||
}
|
|
||||||
WebServer.prototype.prepare = function () {
|
|
||||||
this.app = express();
|
|
||||||
this.httpServer = (0, http_1.createServer)(this.app);
|
|
||||||
this.socket = new socket_io_1.Server(this.httpServer);
|
|
||||||
};
|
|
||||||
WebServer.prototype.listen = function () {
|
|
||||||
var _this = this;
|
|
||||||
return new Promise(function (resolve) {
|
|
||||||
var port = _this._Main.Config.webServer.port;
|
|
||||||
_this.httpServer.listen(port, function () {
|
|
||||||
console.log(PREFIX, "Listening on port http://127.0.0.1:".concat(port));
|
|
||||||
resolve();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
return WebServer;
|
|
||||||
}());
|
|
||||||
exports.WebServer = WebServer;
|
|
||||||
//# sourceMappingURL=WebServer.js.map
|
|
||||||
1
dist/WebServer.js.map
vendored
1
dist/WebServer.js.map
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"WebServer.js","sourceRoot":"","sources":["../src/WebServer.ts"],"names":[],"mappings":";;;AACA,iCAAmC;AACnC,uCAAqD;AACrD,6BAA0D;AAG1D,IAAM,MAAM,GAAG,aAAa,CAAC;AAC7B;IAOC,mBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAEO,2BAAO,GAAf;QACC,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAY,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,0BAAM,GAAN;QAAA,iBAWC;QAVA,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO;YAChC,IAAM,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC9C,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC5B,OAAO,CAAC,GAAG,CACV,MAAM,EACN,6CAAsC,IAAI,CAAE,CAC5C,CAAC;gBACF,OAAO,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,gBAAC;AAAD,CAAC,AA/BD,IA+BC;AA/BY,8BAAS"}
|
|
||||||
4
dist/WebServer/CalibrationRouter.js
vendored
4
dist/WebServer/CalibrationRouter.js
vendored
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
@@ -36,22 +36,22 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.DashboardRouter = void 0;
|
exports.ControlRouter = void 0;
|
||||||
var express_1 = require("express");
|
var express_1 = require("express");
|
||||||
var path_1 = require("path");
|
var path_1 = require("path");
|
||||||
var fs_extra_1 = require("fs-extra");
|
var fs_extra_1 = require("fs-extra");
|
||||||
var DashboardRouter = /** @class */ (function () {
|
var ControlRouter = /** @class */ (function () {
|
||||||
function DashboardRouter(Main) {
|
function ControlRouter(Main) {
|
||||||
this._Main = Main;
|
this._Main = Main;
|
||||||
this.Router = (0, express_1.Router)();
|
this.Router = (0, express_1.Router)();
|
||||||
this.path = (0, path_1.join)(__filename, '..', '..', '..', 'frontend', 'views', 'dashboard');
|
this.path = (0, path_1.join)(__filename, '..', '..', '..', 'frontend', 'views', 'control');
|
||||||
this.registerRoutes();
|
this.registerRoutes();
|
||||||
}
|
}
|
||||||
DashboardRouter.prototype.registerRoutes = function () {
|
ControlRouter.prototype.registerRoutes = function () {
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
this.Router.get(['/', '/dashboard'], function (req, res) { return __awaiter(_this, void 0, void 0, function () {
|
this.Router.get('/', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
|
||||||
var htmlContent;
|
var htmlContent;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
switch (_a.label) {
|
switch (_a.label) {
|
||||||
@@ -94,7 +94,7 @@ var DashboardRouter = /** @class */ (function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
return DashboardRouter;
|
return ControlRouter;
|
||||||
}());
|
}());
|
||||||
exports.DashboardRouter = DashboardRouter;
|
exports.ControlRouter = ControlRouter;
|
||||||
//# sourceMappingURL=DahboardRouter.js.map
|
//# sourceMappingURL=ControlRouter.js.map
|
||||||
1
dist/WebServer/ControlRouter.js.map
vendored
Normal file
1
dist/WebServer/ControlRouter.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"ControlRouter.js","sourceRoot":"","sources":["../../src/WebServer/ControlRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,6BAA4B;AAC5B,qCAAiE;AAEjE;IAMC,uBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAA,WAAI,EACf,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,SAAS,CACT,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEK,sCAAc,GAApB;;;;gBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACf,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAA;;gCAA3D,WAAW,GAAG,SAA6C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gCAC3C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;;qBACtB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACvB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA3D,YAAY,GAAG,SAA4C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gCAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;;;qBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACtB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA5D,aAAa,GAAG,SAA4C;gCAClE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;gCACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;;qBACxB,CAAC,CAAC;;;;KACH;IACF,oBAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCY,sCAAa"}
|
||||||
1
dist/WebServer/DahboardRouter.js.map
vendored
1
dist/WebServer/DahboardRouter.js.map
vendored
@@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"DahboardRouter.js","sourceRoot":"","sources":["../../src/WebServer/DahboardRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,6BAA4B;AAC5B,qCAAiE;AAEjE;IAMC,yBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAA,WAAI,EACf,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,WAAW,CACX,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEK,wCAAc,GAApB;;;;gBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCAC/B,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAA;;gCAA3D,WAAW,GAAG,SAA6C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gCAC3C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;;qBACtB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACvB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA3D,YAAY,GAAG,SAA4C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gCAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;;;qBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACtB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA5D,aAAa,GAAG,SAA4C;gCAClE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;gCACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;;qBACxB,CAAC,CAAC;;;;KACH;IACF,sBAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCY,0CAAe"}
|
|
||||||
10
dist/WebServer/DashboardRouter.js
vendored
10
dist/WebServer/DashboardRouter.js
vendored
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
@@ -51,7 +51,7 @@ var DashboardRouter = /** @class */ (function () {
|
|||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
this.Router.get(['/', '/dashboard', '/calibration', '/cameralogs', '/unitylogs'], function (req, res) { return __awaiter(_this, void 0, void 0, function () {
|
this.Router.get(['/dashboard', '/calibration', '/cameralogs', '/unitylogs'], function (req, res) { return __awaiter(_this, void 0, void 0, function () {
|
||||||
var htmlContent;
|
var htmlContent;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
switch (_a.label) {
|
switch (_a.label) {
|
||||||
@@ -64,7 +64,7 @@ var DashboardRouter = /** @class */ (function () {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}); });
|
}); });
|
||||||
this.Router.get('/style.css', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
|
this.Router.get('/dashboard/style.css', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
|
||||||
var styleContent;
|
var styleContent;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
switch (_a.label) {
|
switch (_a.label) {
|
||||||
@@ -77,7 +77,7 @@ var DashboardRouter = /** @class */ (function () {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}); });
|
}); });
|
||||||
this.Router.get('/script.js', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
|
this.Router.get('/dashboard/script.js', function (req, res) { return __awaiter(_this, void 0, void 0, function () {
|
||||||
var scriptContent;
|
var scriptContent;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
switch (_a.label) {
|
switch (_a.label) {
|
||||||
|
|||||||
2
dist/WebServer/DashboardRouter.js.map
vendored
2
dist/WebServer/DashboardRouter.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"DashboardRouter.js","sourceRoot":"","sources":["../../src/WebServer/DashboardRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,6BAA4B;AAC5B,qCAAiE;AAEjE;IAMC,yBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAA,WAAI,EACf,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,WAAW,CACX,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEK,wCAAc,GAApB;;;;gBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CACd,CAAC,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC,EAChE,UAAO,GAAG,EAAE,GAAG;;;;oCACM,qBAAM,IAAA,mBAAQ,EACjC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAC7B,EAAA;;gCAFK,WAAW,GAAG,SAEnB;gCACD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gCAC3C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;;qBACtB,CACD,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACvB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA3D,YAAY,GAAG,SAA4C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gCAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;;;qBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACtB,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA5D,aAAa,GAAG,SAA4C;gCAClE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;gCACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;;qBACxB,CAAC,CAAC;;;;KACH;IACF,sBAAC;AAAD,CAAC,AA7CD,IA6CC;AA7CY,0CAAe"}
|
{"version":3,"file":"DashboardRouter.js","sourceRoot":"","sources":["../../src/WebServer/DashboardRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,6BAA4B;AAC5B,qCAAiE;AAEjE;IAMC,yBAAY,IAAU;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAA,WAAI,EACf,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,WAAW,CACX,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAEK,wCAAc,GAApB;;;;gBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CACd,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC,EAC3D,UAAO,GAAG,EAAE,GAAG;;;;oCACM,qBAAM,IAAA,mBAAQ,EACjC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAC7B,EAAA;;gCAFK,WAAW,GAAG,SAEnB;gCACD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gCAC3C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;;;qBACtB,CACD,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCACjC,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA3D,YAAY,GAAG,SAA4C;gCACjE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gCAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;;;qBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,UAAO,GAAG,EAAE,GAAG;;;;oCAChC,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAA;;gCAA5D,aAAa,GAAG,SAA4C;gCAClE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;gCACxD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;;qBACxB,CAAC,CAAC;;;;KACH;IACF,sBAAC;AAAD,CAAC,AA7CD,IA6CC;AA7CY,0CAAe"}
|
||||||
27
dist/WebServer/WebServer.js
vendored
27
dist/WebServer/WebServer.js
vendored
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
function step(op) {
|
function step(op) {
|
||||||
if (f) throw new TypeError("Generator is already executing.");
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
@@ -53,12 +53,14 @@ var DashboardRouter_1 = require("./DashboardRouter");
|
|||||||
var path_1 = require("path");
|
var path_1 = require("path");
|
||||||
var CalibrationRouter_1 = require("./CalibrationRouter");
|
var CalibrationRouter_1 = require("./CalibrationRouter");
|
||||||
var Utils_1 = require("../Utils");
|
var Utils_1 = require("../Utils");
|
||||||
|
var ControlRouter_1 = require("./ControlRouter");
|
||||||
var PREFIX = '[WebServer]';
|
var PREFIX = '[WebServer]';
|
||||||
var WebServer = /** @class */ (function () {
|
var WebServer = /** @class */ (function () {
|
||||||
function WebServer(Main) {
|
function WebServer(Main) {
|
||||||
this._Main = Main;
|
this._Main = Main;
|
||||||
this.Dashboard = new DashboardRouter_1.DashboardRouter(this._Main);
|
this.Dashboard = new DashboardRouter_1.DashboardRouter(this._Main);
|
||||||
this.Calibration = new CalibrationRouter_1.CalibrationRouter(this._Main);
|
this.Calibration = new CalibrationRouter_1.CalibrationRouter(this._Main);
|
||||||
|
this.Control = new ControlRouter_1.ControlRouter(this._Main);
|
||||||
this.prepare();
|
this.prepare();
|
||||||
}
|
}
|
||||||
WebServer.prototype.prepare = function () {
|
WebServer.prototype.prepare = function () {
|
||||||
@@ -68,8 +70,11 @@ var WebServer = /** @class */ (function () {
|
|||||||
this.socket = new socket_io_1.Server(this.httpServer);
|
this.socket = new socket_io_1.Server(this.httpServer);
|
||||||
this.app.use(express.static((0, path_1.join)(__filename, '..', '..', '..', 'frontend', 'static')));
|
this.app.use(express.static((0, path_1.join)(__filename, '..', '..', '..', 'frontend', 'static')));
|
||||||
this.app.use(this.Dashboard.Router);
|
this.app.use(this.Dashboard.Router);
|
||||||
|
this.app.use(this.Control.Router);
|
||||||
this.app.use(this.Calibration.Router);
|
this.app.use(this.Calibration.Router);
|
||||||
this.socket.on('connection', function (socket) {
|
this.socket.on('connection', function (socket) {
|
||||||
|
socket.emit('status', _this._Main.Status.getState());
|
||||||
|
socket.emit('timer', _this._Main.Timer.getState());
|
||||||
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());
|
||||||
@@ -119,6 +124,24 @@ var WebServer = /** @class */ (function () {
|
|||||||
}
|
}
|
||||||
return (_a = _this._Main.UnityWebSocket).handle.apply(_a, __spreadArray([command], args, false));
|
return (_a = _this._Main.UnityWebSocket).handle.apply(_a, __spreadArray([command], args, false));
|
||||||
});
|
});
|
||||||
|
socket.on('status', function (action, type) {
|
||||||
|
switch (action) {
|
||||||
|
case 'fullreboot':
|
||||||
|
return _this._Main.restart();
|
||||||
|
case 'reboot':
|
||||||
|
return _this._Main.Status.reboot(type);
|
||||||
|
case 'start':
|
||||||
|
return _this._Main.Status.start(type);
|
||||||
|
case 'stop':
|
||||||
|
return _this._Main.Status.stop(type);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.on('setTimerStart', function (data) {
|
||||||
|
_this._Main.Timer.setStart(data);
|
||||||
|
});
|
||||||
|
socket.on('setTimerEnd', function (data) {
|
||||||
|
_this._Main.Timer.setEnd(data);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
WebServer.prototype.listen = function () {
|
WebServer.prototype.listen = function () {
|
||||||
|
|||||||
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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"}
|
||||||
BIN
frontend/static/font/RidleyGrotesk-Bold.otf
Normal file
BIN
frontend/static/font/RidleyGrotesk-Bold.otf
Normal file
Binary file not shown.
BIN
frontend/static/font/RidleyGrotesk-Regular.otf
Normal file
BIN
frontend/static/font/RidleyGrotesk-Regular.otf
Normal file
Binary file not shown.
BIN
frontend/static/font/Roboto-Italic-VariableFont_wdth,wght.ttf
Normal file
BIN
frontend/static/font/Roboto-Italic-VariableFont_wdth,wght.ttf
Normal file
Binary file not shown.
BIN
frontend/static/font/Roboto-VariableFont_wdth,wght.ttf
Normal file
BIN
frontend/static/font/Roboto-VariableFont_wdth,wght.ttf
Normal file
Binary file not shown.
BIN
frontend/static/font/ScothBrace.ttf
Normal file
BIN
frontend/static/font/ScothBrace.ttf
Normal file
Binary file not shown.
BIN
frontend/static/img/call.png
Normal file
BIN
frontend/static/img/call.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
frontend/static/img/logo.png
Normal file
BIN
frontend/static/img/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 57 KiB |
39
frontend/views/control/dist/calibration.js
vendored
Normal file
39
frontend/views/control/dist/calibration.js
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.Calibration = void 0;
|
||||||
|
var Calibration = /** @class */ (function () {
|
||||||
|
function Calibration(Main) {
|
||||||
|
this.visible = false;
|
||||||
|
this.container = document.querySelector('.ntsh-calibration');
|
||||||
|
this.image = this.container.querySelector('img');
|
||||||
|
this._Main = Main;
|
||||||
|
this.registerListeners();
|
||||||
|
this.startClock();
|
||||||
|
}
|
||||||
|
Calibration.prototype.startClock = function () {
|
||||||
|
var _this = this;
|
||||||
|
setInterval(function () {
|
||||||
|
if (_this.visible && _this.image)
|
||||||
|
_this.image.src = "/calibrationImage?t=".concat(Date.now());
|
||||||
|
}, 1000);
|
||||||
|
};
|
||||||
|
Calibration.prototype.registerListeners = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.observer = new IntersectionObserver(function (entries) {
|
||||||
|
entries.forEach(function (entry) {
|
||||||
|
if (entry.isIntersecting) {
|
||||||
|
_this.visible = true;
|
||||||
|
console.log('Calibration visible');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_this.visible = false;
|
||||||
|
console.log('Calibration not visible');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.observer.observe(this.container);
|
||||||
|
};
|
||||||
|
return Calibration;
|
||||||
|
}());
|
||||||
|
exports.Calibration = Calibration;
|
||||||
|
//# sourceMappingURL=calibration.js.map
|
||||||
1
frontend/views/control/dist/calibration.js.map
vendored
Normal file
1
frontend/views/control/dist/calibration.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"calibration.js","sourceRoot":"","sources":["../ts/calibration.ts"],"names":[],"mappings":";;;AAEA;IASC,qBAAY,IAAU;QALtB,YAAO,GAAY,KAAK,CAAC;QAEzB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACxE,UAAK,GAAqB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAG7D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEO,gCAAU,GAAlB;QAAA,iBAKC;QAJA,WAAW,CAAC;YACX,IAAI,KAAI,CAAC,OAAO,IAAI,KAAI,CAAC,KAAK;gBAC7B,KAAI,CAAC,KAAK,CAAC,GAAG,GAAG,8BAAuB,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC;QACvD,CAAC,EAAE,IAAI,CAAC,CAAC;IACV,CAAC;IAEO,uCAAiB,GAAzB;QAAA,iBAaC;QAZA,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,UAAC,OAAO;YAChD,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK;gBACrB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1B,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACP,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACxC,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IACF,kBAAC;AAAD,CAAC,AAtCD,IAsCC;AAtCY,kCAAW"}
|
||||||
96
frontend/views/control/dist/checklist.js
vendored
Normal file
96
frontend/views/control/dist/checklist.js
vendored
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.Checklist = void 0;
|
||||||
|
var morphux_1 = require("morphux");
|
||||||
|
var Checklist = /** @class */ (function () {
|
||||||
|
function Checklist(Main) {
|
||||||
|
this.Rows = {
|
||||||
|
CAMERAPC: document.querySelector(".ntsh-checklist-row[status=\"CAMERAPC\"]"),
|
||||||
|
CAMERAPROCESS: document.querySelector(".ntsh-checklist-row[status=\"CAMERAPROCESS\"]"),
|
||||||
|
CAMERAUNITYSTREAM: document.querySelector(".ntsh-checklist-row[status=\"CAMERAUNITYSTREAM\"]"),
|
||||||
|
UNITYBUILD: document.querySelector(".ntsh-checklist-row[status=\"UNITYBUILD\"]"),
|
||||||
|
REPLAYFUNCTION: document.querySelector(".ntsh-checklist-row[status=\"REPLAYFUNCTION\"]"),
|
||||||
|
};
|
||||||
|
this.FullReboot = document.querySelector('.ntsh-fullreboot-button');
|
||||||
|
this._Main = Main;
|
||||||
|
this.registerListeners();
|
||||||
|
}
|
||||||
|
Checklist.prototype.update = function (status) {
|
||||||
|
this.updateRow(this.Rows.CAMERAPC, status.CAMERAPC);
|
||||||
|
this.updateRow(this.Rows.CAMERAPROCESS, status.CAMERAPROCESS);
|
||||||
|
this.updateRow(this.Rows.CAMERAUNITYSTREAM, status.CAMERAUNITYSTREAM);
|
||||||
|
this.updateRow(this.Rows.UNITYBUILD, status.UNITYBUILD);
|
||||||
|
this.updateRow(this.Rows.REPLAYFUNCTION, status.REPLAYFUNCTION);
|
||||||
|
console.log('Updated checklist:', status);
|
||||||
|
};
|
||||||
|
Checklist.prototype.updateRow = function (row, state) {
|
||||||
|
var _a, _b, _c;
|
||||||
|
var status = row.querySelector('.ntsh-checklist-row-status');
|
||||||
|
var message = row.querySelector('p');
|
||||||
|
var startButton = row.querySelector('.ntsh-checklist-row-button.start');
|
||||||
|
var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');
|
||||||
|
var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');
|
||||||
|
status.classList.remove('RED', 'GREEN', 'YELLOW', 'GRAY');
|
||||||
|
status.classList.add(state.state);
|
||||||
|
message.innerText = state.message;
|
||||||
|
startButton.style.display = ((_a = state.buttons) === null || _a === void 0 ? void 0 : _a.start) ? 'block' : 'none';
|
||||||
|
stopButton.style.display = ((_b = state.buttons) === null || _b === void 0 ? void 0 : _b.stop) ? 'block' : 'none';
|
||||||
|
rebootButton.style.display = ((_c = state.buttons) === null || _c === void 0 ? void 0 : _c.reboot) ? 'block' : 'none';
|
||||||
|
};
|
||||||
|
Checklist.prototype.registerListeners = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.FullReboot.onclick = function () {
|
||||||
|
morphux_1.MorphFeature.Confirm({
|
||||||
|
title: 'Full Reboot',
|
||||||
|
message: 'Are you sure you want to perform a full reboot?',
|
||||||
|
}, function (state) {
|
||||||
|
if (!state)
|
||||||
|
return;
|
||||||
|
_this._Main.socket.emit('status', 'fullreboot');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var _loop_1 = function (key) {
|
||||||
|
var row = this_1.Rows[key];
|
||||||
|
var startButton = row.querySelector('.ntsh-checklist-row-button.start');
|
||||||
|
startButton.onclick = function () {
|
||||||
|
return morphux_1.MorphFeature.Confirm({
|
||||||
|
title: 'Start',
|
||||||
|
message: 'Are you sure you want to start?',
|
||||||
|
}, function (state) {
|
||||||
|
if (!state)
|
||||||
|
return;
|
||||||
|
_this._Main.socket.emit('status', 'start', key);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');
|
||||||
|
stopButton.onclick = function () {
|
||||||
|
return morphux_1.MorphFeature.Confirm({
|
||||||
|
title: 'Stop',
|
||||||
|
message: 'Are you sure you want to stop?',
|
||||||
|
}, function (state) {
|
||||||
|
if (!state)
|
||||||
|
return;
|
||||||
|
_this._Main.socket.emit('status', 'stop', key);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');
|
||||||
|
rebootButton.onclick = function () {
|
||||||
|
return morphux_1.MorphFeature.Confirm({
|
||||||
|
title: 'Reboot',
|
||||||
|
message: 'Are you sure you want to reboot?',
|
||||||
|
}, function (state) {
|
||||||
|
if (!state)
|
||||||
|
return;
|
||||||
|
_this._Main.socket.emit('status', 'reboot', key);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
var this_1 = this;
|
||||||
|
for (var key in this.Rows) {
|
||||||
|
_loop_1(key);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return Checklist;
|
||||||
|
}());
|
||||||
|
exports.Checklist = Checklist;
|
||||||
|
//# sourceMappingURL=checklist.js.map
|
||||||
1
frontend/views/control/dist/checklist.js.map
vendored
Normal file
1
frontend/views/control/dist/checklist.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../ts/checklist.ts"],"names":[],"mappings":"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"}
|
||||||
144
frontend/views/control/dist/main.js
vendored
Normal file
144
frontend/views/control/dist/main.js
vendored
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
"use strict";
|
||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.Main = void 0;
|
||||||
|
var socket_io_client_1 = require("socket.io-client");
|
||||||
|
var menu_1 = require("./menu");
|
||||||
|
var checklist_1 = require("./checklist");
|
||||||
|
var calibration_1 = require("./calibration");
|
||||||
|
var morphux_1 = require("morphux");
|
||||||
|
var outOfServiceMode_1 = require("./outOfServiceMode");
|
||||||
|
var timer_1 = require("./timer");
|
||||||
|
var socket = (0, socket_io_client_1.io)('/');
|
||||||
|
var Main = /** @class */ (function () {
|
||||||
|
function Main() {
|
||||||
|
this.Menu = new menu_1.Menu();
|
||||||
|
this.CheckList = new checklist_1.Checklist(this);
|
||||||
|
this.Calibration = new calibration_1.Calibration(this);
|
||||||
|
this.OutOfServiceMode = new outOfServiceMode_1.OutOfServiceMode(this);
|
||||||
|
this.Timer = new timer_1.Timer(this);
|
||||||
|
this.socket = socket;
|
||||||
|
this.supportButton = document.querySelector('.ntsh-support img');
|
||||||
|
this.supportNumber = '';
|
||||||
|
this.registerListeners();
|
||||||
|
}
|
||||||
|
Main.prototype.registerListeners = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.supportButton.onclick = function () { return _this.showSupport(); };
|
||||||
|
socket.on('status', function (data) {
|
||||||
|
_this.CheckList.update(data);
|
||||||
|
});
|
||||||
|
socket.on('supportNumber', function (number) {
|
||||||
|
_this.supportNumber = number;
|
||||||
|
});
|
||||||
|
socket.on('unityWebSocketState', function (state) {
|
||||||
|
var _a, _b, _c, _d;
|
||||||
|
_this.OutOfServiceMode.input.checked =
|
||||||
|
(_b = (_a = state === null || state === void 0 ? void 0 : state.parameters) === null || _a === void 0 ? void 0 : _a.outOfService) !== null && _b !== void 0 ? _b : false;
|
||||||
|
_this.OutOfServiceMode.state =
|
||||||
|
(_d = (_c = state === null || state === void 0 ? void 0 : state.parameters) === null || _c === void 0 ? void 0 : _c.outOfService) !== null && _d !== void 0 ? _d : false;
|
||||||
|
});
|
||||||
|
socket.on('timer', function (data) {
|
||||||
|
_this.Timer.update(data);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Main.prototype.executeCommand = function (command, message, type) {
|
||||||
|
if (type === void 0) { type = 'unityRunner'; }
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var _this = this;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
return [2 /*return*/, new Promise(function (resolve) { 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: 'Are you sure?',
|
||||||
|
message: message,
|
||||||
|
})];
|
||||||
|
case 1:
|
||||||
|
confirmed = _a.sent();
|
||||||
|
if (!confirmed)
|
||||||
|
return [2 /*return*/, resolve(false)];
|
||||||
|
morphux_1.MorphFeature.Loader({
|
||||||
|
active: true,
|
||||||
|
message: "Dispatching command...",
|
||||||
|
});
|
||||||
|
socket.emit(type, command, function (response) {
|
||||||
|
morphux_1.MorphFeature.Loader({ active: false });
|
||||||
|
if (!response.succeed)
|
||||||
|
return morphux_1.MorphFeature.Alert({
|
||||||
|
title: 'Error',
|
||||||
|
message: response.message,
|
||||||
|
});
|
||||||
|
morphux_1.MorphFeature.Notification({
|
||||||
|
level: 'success',
|
||||||
|
message: "Dispatched command",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
resolve(true);
|
||||||
|
return [2 /*return*/];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}); })];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Main.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*/];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return Main;
|
||||||
|
}());
|
||||||
|
exports.Main = Main;
|
||||||
|
var _Main = new Main();
|
||||||
|
//# sourceMappingURL=main.js.map
|
||||||
1
frontend/views/control/dist/main.js.map
vendored
Normal file
1
frontend/views/control/dist/main.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"main.js","sourceRoot":"","sources":["../ts/main.ts"],"names":[],"mappings":"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"}
|
||||||
46
frontend/views/control/dist/menu.js
vendored
Normal file
46
frontend/views/control/dist/menu.js
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.Menu = void 0;
|
||||||
|
var Menu = /** @class */ (function () {
|
||||||
|
function Menu() {
|
||||||
|
this.menuContainer = document.querySelector('.ntsh_menubar');
|
||||||
|
this.tabContainer = document.querySelector('.ntsh_tabs');
|
||||||
|
this.registerListeners();
|
||||||
|
if (window.location.search.includes('advanced'))
|
||||||
|
this.selectTab('advanced');
|
||||||
|
}
|
||||||
|
Menu.prototype.selectTab = function (tabId) {
|
||||||
|
this.menuContainer
|
||||||
|
.querySelectorAll('.ntsh_menubar-item')
|
||||||
|
.forEach(function (item) {
|
||||||
|
if (item.getAttribute('tabid') === tabId) {
|
||||||
|
item.classList.add('selected');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
item.classList.remove('selected');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.tabContainer.querySelectorAll('.ntsh_tab').forEach(function (tab) {
|
||||||
|
if (tab.getAttribute('tabid') === tabId) {
|
||||||
|
tab.classList.add('visible');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tab.classList.remove('visible');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Menu.prototype.registerListeners = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.menuContainer
|
||||||
|
.querySelectorAll('.ntsh_menubar-item')
|
||||||
|
.forEach(function (item) {
|
||||||
|
item.addEventListener('click', function () {
|
||||||
|
var itemId = item.getAttribute('tabid');
|
||||||
|
_this.selectTab(itemId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return Menu;
|
||||||
|
}());
|
||||||
|
exports.Menu = Menu;
|
||||||
|
//# sourceMappingURL=menu.js.map
|
||||||
1
frontend/views/control/dist/menu.js.map
vendored
Normal file
1
frontend/views/control/dist/menu.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../ts/menu.ts"],"names":[],"mappings":";;;AAAA;IAIC;QAHA,kBAAa,GAAmB,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACxE,iBAAY,GAAmB,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAGnE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,wBAAS,GAAT,UAAU,KAAa;QACtB,IAAI,CAAC,aAAa;aAChB,gBAAgB,CAAC,oBAAoB,CAAC;aACtC,OAAO,CAAC,UAAC,IAAI;YACb,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC;QACF,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;YAC3D,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;gBACzC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,gCAAiB,GAAzB;QAAA,iBASC;QARA,IAAI,CAAC,aAAa;aAChB,gBAAgB,CAAC,oBAAoB,CAAC;aACtC,OAAO,CAAC,UAAC,IAAI;YACb,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBAC9B,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC1C,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACF,WAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,oBAAI"}
|
||||||
67
frontend/views/control/dist/outOfServiceMode.js
vendored
Normal file
67
frontend/views/control/dist/outOfServiceMode.js
vendored
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
"use strict";
|
||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.OutOfServiceMode = void 0;
|
||||||
|
var OutOfServiceMode = /** @class */ (function () {
|
||||||
|
function OutOfServiceMode(Main) {
|
||||||
|
this.state = false;
|
||||||
|
this.input = document.querySelector('.ntsh-outofservicemode-input');
|
||||||
|
this._Main = Main;
|
||||||
|
this.registerListeners();
|
||||||
|
}
|
||||||
|
OutOfServiceMode.prototype.registerListeners = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.input.addEventListener('change', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||||
|
var valid;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0: return [4 /*yield*/, this._Main.executeCommand(this.state ? 'disableOutOfService' : 'enableOutOfService', "Are you sure you want to set the installation to \"".concat(this.state ? 'Out of Service' : 'Operational', "\"?"), 'unityWebSocket')];
|
||||||
|
case 1:
|
||||||
|
valid = _a.sent();
|
||||||
|
if (!valid)
|
||||||
|
this.input.checked = this.state;
|
||||||
|
this.state = this.input.checked;
|
||||||
|
return [2 /*return*/];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}); });
|
||||||
|
};
|
||||||
|
return OutOfServiceMode;
|
||||||
|
}());
|
||||||
|
exports.OutOfServiceMode = OutOfServiceMode;
|
||||||
|
//# sourceMappingURL=outOfServiceMode.js.map
|
||||||
1
frontend/views/control/dist/outOfServiceMode.js.map
vendored
Normal file
1
frontend/views/control/dist/outOfServiceMode.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"outOfServiceMode.js","sourceRoot":"","sources":["../ts/outOfServiceMode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IAQC,0BAAY,IAAU;QALtB,UAAK,GAAY,KAAK,CAAC;QACvB,UAAK,GAAqB,QAAQ,CAAC,aAAa,CAC/C,8BAA8B,CAC9B,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAEO,4CAAiB,GAAzB;QAAA,iBAUC;QATA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE;;;;4BACvB,qBAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,EACzD,6DAAqD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,QAAI,EACtG,gBAAgB,CAChB,EAAA;;wBAJK,KAAK,GAAG,SAIb;wBACD,IAAI,CAAC,KAAK;4BAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;wBAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;;;aAChC,CAAC,CAAC;IACJ,CAAC;IACF,uBAAC;AAAD,CAAC,AAzBD,IAyBC;AAzBY,4CAAgB"}
|
||||||
31
frontend/views/control/dist/timer.js
vendored
Normal file
31
frontend/views/control/dist/timer.js
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.Timer = void 0;
|
||||||
|
var Timer = /** @class */ (function () {
|
||||||
|
function Timer(Main) {
|
||||||
|
this.startup = document.querySelector('.ntsh-timer-startup');
|
||||||
|
this.shutdown = document.querySelector('.ntsh-timer-shutdown');
|
||||||
|
this._Main = Main;
|
||||||
|
this.registerListeners();
|
||||||
|
}
|
||||||
|
Timer.prototype.update = function (data) {
|
||||||
|
var start = "".concat(data.start.hour.toString().padStart(2, '0'), ":").concat(data.start.minute.toString().padStart(2, '0'));
|
||||||
|
var end = "".concat(data.end.hour.toString().padStart(2, '0'), ":").concat(data.end.minute.toString().padStart(2, '0'));
|
||||||
|
this.startup.value = start;
|
||||||
|
this.shutdown.value = end;
|
||||||
|
};
|
||||||
|
Timer.prototype.registerListeners = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.startup.onchange = function () {
|
||||||
|
var _a = _this.startup.value.split(':').map(Number), hour = _a[0], minute = _a[1];
|
||||||
|
_this._Main.socket.emit('setTimerStart', { hour: hour, minute: minute });
|
||||||
|
};
|
||||||
|
this.shutdown.onchange = function () {
|
||||||
|
var _a = _this.shutdown.value.split(':').map(Number), hour = _a[0], minute = _a[1];
|
||||||
|
_this._Main.socket.emit('setTimerEnd', { hour: hour, minute: minute });
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return Timer;
|
||||||
|
}());
|
||||||
|
exports.Timer = Timer;
|
||||||
|
//# sourceMappingURL=timer.js.map
|
||||||
1
frontend/views/control/dist/timer.js.map
vendored
Normal file
1
frontend/views/control/dist/timer.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../ts/timer.ts"],"names":[],"mappings":";;;AAEA;IAMC,eAAY,IAAU;QAHtB,YAAO,GAAqB,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC1E,aAAQ,GAAqB,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAG3E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,sBAAM,GAAN,UAAO,IAGN;QACA,IAAM,KAAK,GAAG,UAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,cAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAChH,IAAM,GAAG,GAAG,UAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,cAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAE1G,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;IAC3B,CAAC;IAED,iCAAiB,GAAjB;QAAA,iBASC;QARA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG;YACjB,IAAA,KAAiB,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAzD,IAAI,QAAA,EAAE,MAAM,QAA6C,CAAC;YACjE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;YAClB,IAAA,KAAiB,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAA1D,IAAI,QAAA,EAAE,MAAM,QAA8C,CAAC;YAClE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC;IACH,CAAC;IACF,YAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,sBAAK"}
|
||||||
284
frontend/views/control/index.html
Normal file
284
frontend/views/control/index.html
Normal file
@@ -0,0 +1,284 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>NTSH Control</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/material-symbols/index.css">
|
||||||
|
<link rel="stylesheet" href="./style.css">
|
||||||
|
<script defer src="./script.js" defer></script>
|
||||||
|
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/img/cloud_thick.png">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="ntsh">
|
||||||
|
<div class="ntsh-wrapper">
|
||||||
|
<div class="ntsh-inlay">
|
||||||
|
<div class="ntsh-topbar">
|
||||||
|
<div class="ntsh_menubar">
|
||||||
|
<div class="ntsh_menubar-item selected" tabid="home">
|
||||||
|
HOME
|
||||||
|
</div>
|
||||||
|
<div class="ntsh_menubar-item" tabid="advanced">
|
||||||
|
ADVANCED
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img src="/img/logo.png">
|
||||||
|
|
||||||
|
<div class="ntsh-separator"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh_tabs">
|
||||||
|
<div class="ntsh_tab visible" tabid="home">
|
||||||
|
<h2>1. SYSTEM CHECKLIST</h2>
|
||||||
|
<h3>
|
||||||
|
Check if all lights are green.
|
||||||
|
<br>
|
||||||
|
If not? Reboot!
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist">
|
||||||
|
<div class="ntsh-checklist-row" status="CAMERAPC">
|
||||||
|
<div class="ntsh-checklist-row-status"></div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-text">
|
||||||
|
<h4>CAMERA PC</h4>
|
||||||
|
<p>Status...</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-buttons">
|
||||||
|
<div class="ntsh-checklist-row-button start">
|
||||||
|
START
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button stop">
|
||||||
|
STOP
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button reboot">
|
||||||
|
REBOOT
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row" status="CAMERAPROCESS">
|
||||||
|
<div class="ntsh-checklist-row-status"></div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-text">
|
||||||
|
<h4>CAMERA PROCESS</h4>
|
||||||
|
<p>Status...</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-buttons">
|
||||||
|
<div class="ntsh-checklist-row-button start">
|
||||||
|
START
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button stop">
|
||||||
|
STOP
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button reboot">
|
||||||
|
REBOOT
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row" status="CAMERAUNITYSTREAM">
|
||||||
|
<div class="ntsh-checklist-row-status"></div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-text">
|
||||||
|
<h4>CAMERA/UNITY STREAM</h4>
|
||||||
|
<p>Status...</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-buttons">
|
||||||
|
<div class="ntsh-checklist-row-button start">
|
||||||
|
START
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button stop">
|
||||||
|
STOP
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button reboot">
|
||||||
|
REBOOT
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row" status="UNITYBUILD">
|
||||||
|
<div class="ntsh-checklist-row-status"></div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-text">
|
||||||
|
<h4>UNITY BUILD</h4>
|
||||||
|
<p>Status...</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-buttons">
|
||||||
|
<div class="ntsh-checklist-row-button start">
|
||||||
|
START
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button stop">
|
||||||
|
STOP
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button reboot">
|
||||||
|
REBOOT
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row" status="REPLAYFUNCTION">
|
||||||
|
<div class="ntsh-checklist-row-status"></div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-text">
|
||||||
|
<h4>REPLAY FUNCTION</h4>
|
||||||
|
<p>Status...</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-checklist-row-buttons">
|
||||||
|
<div class="ntsh-checklist-row-button start">
|
||||||
|
START
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button stop">
|
||||||
|
STOP
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-checklist-row-button reboot">
|
||||||
|
REBOOT
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-fullreboot">
|
||||||
|
<div class="ntsh-fullreboot-button">
|
||||||
|
FULL REBOOT
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-support">
|
||||||
|
<p>If reboot doesn't help:</p>
|
||||||
|
<img src="/img/call.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-separator"></div>
|
||||||
|
<h2>2. CALIBRATION CHECK</h2>
|
||||||
|
<h3>
|
||||||
|
Look if the top plate of the installation precisely aligns with the pink rectangle.
|
||||||
|
<br>
|
||||||
|
If not? Reposition the physical installation.
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<div class="ntsh-calibration">
|
||||||
|
<img src="/calibrationImage">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1 style="margin-bottom:30px;">Thank you for checking! :)</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh_tab" tabid="advanced">
|
||||||
|
<h2>OUT OF SERVICE MODE</h2>
|
||||||
|
<h3>Display the 'out of service' message and mute the sound.</h3>
|
||||||
|
<div class="ntsh-outofservicemode">
|
||||||
|
<h4>OUT OF SERVICE MODE</h4>
|
||||||
|
|
||||||
|
<label class="switch">
|
||||||
|
<input type="checkbox" class="ntsh-outofservicemode-input">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-separator"></div>
|
||||||
|
|
||||||
|
<h2>SET TIMER</h2>
|
||||||
|
<h3>Please set timer in order to schedule the daily reboot.</h3>
|
||||||
|
<br>
|
||||||
|
<h3>Advise: fill in 30 minutes before opening and 30 minutes after closing of exhibition.</h3>
|
||||||
|
|
||||||
|
<div class="ntsh-timer">
|
||||||
|
<div class="ntsh-timer-row">
|
||||||
|
<h4>Start up</h4>
|
||||||
|
|
||||||
|
<input type="time" class="ntsh-timer-startup">
|
||||||
|
</div>
|
||||||
|
<div class="ntsh-timer-row">
|
||||||
|
<h4>Shut down</h4>
|
||||||
|
|
||||||
|
<input type="time" class="ntsh-timer-shutdown">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-separator"></div>
|
||||||
|
|
||||||
|
<h2>COLOR SETTINGS</h2>
|
||||||
|
<h3>If lighting at the exhibition location changes during the day (for example in daylight)</h3>
|
||||||
|
|
||||||
|
<div class="ntsh-autolighting">
|
||||||
|
<h4>AUTO LIGHTING</h4>
|
||||||
|
|
||||||
|
<label class="switch">
|
||||||
|
<input type="checkbox">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="ntsh_lightingsettings-container disabled">
|
||||||
|
<h3>FIXED LIGHTING SETTINGS</h3>
|
||||||
|
<div class="ntsh_lightingsettings">
|
||||||
|
<div class="ntsh_lightingsettings-row">
|
||||||
|
<h4>Brightness</h4>
|
||||||
|
|
||||||
|
<input type="range" min="-100" max="100" value="0">
|
||||||
|
</div>
|
||||||
|
<div class="ntsh_lightingsettings-row">
|
||||||
|
<h4>Gain</h4>
|
||||||
|
|
||||||
|
<input type="range" min="-100" max="100" value="0">
|
||||||
|
</div>
|
||||||
|
<div class="ntsh_lightingsettings-row">
|
||||||
|
<h4>White Balance</h4>
|
||||||
|
|
||||||
|
<input type="range" min="-100" max="100" value="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh-separator"></div>
|
||||||
|
|
||||||
|
<h2>SOUND SETTINGS</h2>
|
||||||
|
<h3>Adjust sound settings according to acoustics of location. (Take in account changes during
|
||||||
|
the
|
||||||
|
day and adjust to an average.)</h3>
|
||||||
|
|
||||||
|
<div class="ntsh_soundsettings disabled">
|
||||||
|
<div class="ntsh_soundsettings-row">
|
||||||
|
<h4>Volume</h4>
|
||||||
|
|
||||||
|
<input type="range" min="0" max="100" value="0">
|
||||||
|
</div>
|
||||||
|
<div class="ntsh_soundsettings-row">
|
||||||
|
<h4>EQ low</h4>
|
||||||
|
|
||||||
|
<input type="range" min="-100" max="100" value="0">
|
||||||
|
</div>
|
||||||
|
<div class="ntsh_soundsettings-row">
|
||||||
|
<h4>EQ mid</h4>
|
||||||
|
|
||||||
|
<input type="range" min="-100" max="100" value="0">
|
||||||
|
</div>
|
||||||
|
<div class="ntsh_soundsettings-row">
|
||||||
|
<h4>EQ high</h4>
|
||||||
|
|
||||||
|
<input type="range" min="-100" max="100" value="0">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ntsh_soundsettings-resetcontainer">
|
||||||
|
<div class="ntsh_soundsettings-reset">
|
||||||
|
RESET
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
919
frontend/views/control/package-lock.json
generated
Normal file
919
frontend/views/control/package-lock.json
generated
Normal file
@@ -0,0 +1,919 @@
|
|||||||
|
{
|
||||||
|
"name": "control",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@rollup/plugin-commonjs": "^25.0.7",
|
||||||
|
"@rollup/plugin-json": "^6.1.0",
|
||||||
|
"@rollup/plugin-node-resolve": "^15.1.0",
|
||||||
|
"@types/node": "^20.12.8",
|
||||||
|
"ansi_up": "^6.0.6",
|
||||||
|
"material-symbols": "^0.17.4",
|
||||||
|
"morphux": "file:../../../../MorphUX",
|
||||||
|
"rollup": "^2.79.1",
|
||||||
|
"rollup-plugin-terser": "^7.0.2",
|
||||||
|
"socket.io-client": "^4.8.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/sortablejs": "^1.15.8",
|
||||||
|
"dts-bundle-generator": "^9.5.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"../../../../MorphUX": {
|
||||||
|
"name": "morphux",
|
||||||
|
"version": "2026.3.1",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@egjs/hammerjs": "^2.0.17",
|
||||||
|
"@rollup/plugin-commonjs": "^25.0.7",
|
||||||
|
"@rollup/plugin-json": "^6.1.0",
|
||||||
|
"@rollup/plugin-node-resolve": "^15.1.0",
|
||||||
|
"@types/node": "^20.12.8",
|
||||||
|
"material-symbols": "^0.17.4",
|
||||||
|
"rollup": "^2.79.1",
|
||||||
|
"rollup-plugin-terser": "^7.0.2",
|
||||||
|
"sortablejs": "^1.2.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/sortablejs": "^1.15.8",
|
||||||
|
"dts-bundle-generator": "^9.5.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@babel/code-frame": {
|
||||||
|
"version": "7.29.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
|
||||||
|
"integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/helper-validator-identifier": "^7.28.5",
|
||||||
|
"js-tokens": "^4.0.0",
|
||||||
|
"picocolors": "^1.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@babel/helper-validator-identifier": {
|
||||||
|
"version": "7.28.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
|
||||||
|
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/gen-mapping": {
|
||||||
|
"version": "0.3.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
|
||||||
|
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.5.0",
|
||||||
|
"@jridgewell/trace-mapping": "^0.3.24"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/resolve-uri": {
|
||||||
|
"version": "3.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
||||||
|
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/source-map": {
|
||||||
|
"version": "0.3.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
|
||||||
|
"integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/gen-mapping": "^0.3.5",
|
||||||
|
"@jridgewell/trace-mapping": "^0.3.25"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/sourcemap-codec": {
|
||||||
|
"version": "1.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
||||||
|
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/trace-mapping": {
|
||||||
|
"version": "0.3.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
|
||||||
|
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/resolve-uri": "^3.1.0",
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/plugin-commonjs": {
|
||||||
|
"version": "25.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz",
|
||||||
|
"integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==",
|
||||||
|
"dependencies": {
|
||||||
|
"@rollup/pluginutils": "^5.0.1",
|
||||||
|
"commondir": "^1.0.1",
|
||||||
|
"estree-walker": "^2.0.2",
|
||||||
|
"glob": "^8.0.3",
|
||||||
|
"is-reference": "1.2.1",
|
||||||
|
"magic-string": "^0.30.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"rollup": "^2.68.0||^3.0.0||^4.0.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"rollup": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/plugin-json": {
|
||||||
|
"version": "6.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz",
|
||||||
|
"integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@rollup/pluginutils": "^5.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"rollup": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/plugin-node-resolve": {
|
||||||
|
"version": "15.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz",
|
||||||
|
"integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@rollup/pluginutils": "^5.0.1",
|
||||||
|
"@types/resolve": "1.20.2",
|
||||||
|
"deepmerge": "^4.2.2",
|
||||||
|
"is-module": "^1.0.0",
|
||||||
|
"resolve": "^1.22.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"rollup": "^2.78.0||^3.0.0||^4.0.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"rollup": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/pluginutils": {
|
||||||
|
"version": "5.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
|
||||||
|
"integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "^1.0.0",
|
||||||
|
"estree-walker": "^2.0.2",
|
||||||
|
"picomatch": "^4.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"rollup": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@socket.io/component-emitter": {
|
||||||
|
"version": "3.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
|
||||||
|
"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="
|
||||||
|
},
|
||||||
|
"node_modules/@types/estree": {
|
||||||
|
"version": "1.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
||||||
|
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
|
||||||
|
},
|
||||||
|
"node_modules/@types/node": {
|
||||||
|
"version": "20.19.37",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz",
|
||||||
|
"integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==",
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~6.21.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/resolve": {
|
||||||
|
"version": "1.20.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
|
||||||
|
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
|
||||||
|
},
|
||||||
|
"node_modules/@types/sortablejs": {
|
||||||
|
"version": "1.15.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.9.tgz",
|
||||||
|
"integrity": "sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/acorn": {
|
||||||
|
"version": "8.16.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
|
||||||
|
"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
|
||||||
|
"bin": {
|
||||||
|
"acorn": "bin/acorn"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ansi_up": {
|
||||||
|
"version": "6.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-6.0.6.tgz",
|
||||||
|
"integrity": "sha512-yIa1x3Ecf8jWP4UWEunNjqNX6gzE4vg2gGz+xqRGY+TBSucnYp6RRdPV4brmtg6bQ1ljD48mZ5iGSEj7QEpRKA==",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ansi-regex": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ansi-styles": {
|
||||||
|
"version": "4.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||||
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"color-convert": "^2.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/balanced-match": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||||
|
},
|
||||||
|
"node_modules/brace-expansion": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"balanced-match": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/buffer-from": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
|
||||||
|
},
|
||||||
|
"node_modules/cliui": {
|
||||||
|
"version": "8.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
|
||||||
|
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"string-width": "^4.2.0",
|
||||||
|
"strip-ansi": "^6.0.1",
|
||||||
|
"wrap-ansi": "^7.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-convert": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"color-name": "~1.1.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-name": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/commander": {
|
||||||
|
"version": "2.20.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||||
|
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
|
||||||
|
},
|
||||||
|
"node_modules/commondir": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
|
||||||
|
},
|
||||||
|
"node_modules/debug": {
|
||||||
|
"version": "4.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
||||||
|
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
|
||||||
|
"dependencies": {
|
||||||
|
"ms": "^2.1.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"supports-color": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/deepmerge": {
|
||||||
|
"version": "4.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
|
||||||
|
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/dts-bundle-generator": {
|
||||||
|
"version": "9.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-9.5.1.tgz",
|
||||||
|
"integrity": "sha512-DxpJOb2FNnEyOzMkG11sxO2dmxPjthoVWxfKqWYJ/bI/rT1rvTMktF5EKjAYrRZu6Z6t3NhOUZ0sZ5ZXevOfbA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"typescript": ">=5.0.2",
|
||||||
|
"yargs": "^17.6.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"dts-bundle-generator": "dist/bin/dts-bundle-generator.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/emoji-regex": {
|
||||||
|
"version": "8.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
|
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/engine.io-client": {
|
||||||
|
"version": "6.6.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.4.tgz",
|
||||||
|
"integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==",
|
||||||
|
"dependencies": {
|
||||||
|
"@socket.io/component-emitter": "~3.1.0",
|
||||||
|
"debug": "~4.4.1",
|
||||||
|
"engine.io-parser": "~5.2.1",
|
||||||
|
"ws": "~8.18.3",
|
||||||
|
"xmlhttprequest-ssl": "~2.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/engine.io-parser": {
|
||||||
|
"version": "5.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
|
||||||
|
"integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/escalade": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/estree-walker": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
|
||||||
|
},
|
||||||
|
"node_modules/fs.realpath": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
|
||||||
|
},
|
||||||
|
"node_modules/fsevents": {
|
||||||
|
"version": "2.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
|
||||||
|
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/function-bind": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/get-caller-file": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": "6.* || 8.* || >= 10.*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/glob": {
|
||||||
|
"version": "8.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
|
||||||
|
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
|
||||||
|
"deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
|
||||||
|
"dependencies": {
|
||||||
|
"fs.realpath": "^1.0.0",
|
||||||
|
"inflight": "^1.0.4",
|
||||||
|
"inherits": "2",
|
||||||
|
"minimatch": "^5.0.1",
|
||||||
|
"once": "^1.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/has-flag": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/hasown": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"function-bind": "^1.1.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/inflight": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
|
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||||
|
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
|
||||||
|
"dependencies": {
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
|
},
|
||||||
|
"node_modules/is-core-module": {
|
||||||
|
"version": "2.16.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
|
||||||
|
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
|
||||||
|
"dependencies": {
|
||||||
|
"hasown": "^2.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-fullwidth-code-point": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-module": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g=="
|
||||||
|
},
|
||||||
|
"node_modules/is-reference": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/jest-worker": {
|
||||||
|
"version": "26.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
|
||||||
|
"integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "*",
|
||||||
|
"merge-stream": "^2.0.0",
|
||||||
|
"supports-color": "^7.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.13.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/js-tokens": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||||
|
},
|
||||||
|
"node_modules/magic-string": {
|
||||||
|
"version": "0.30.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
|
||||||
|
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.5.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/material-symbols": {
|
||||||
|
"version": "0.17.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/material-symbols/-/material-symbols-0.17.4.tgz",
|
||||||
|
"integrity": "sha512-5zI+rSzAidMJxAIrQCVwnp4rMjFnx8aQg68lfFXtaDeksZzJ7m8eDl16y9bRNxMosuYbLKeDHDbOWHPJJTSLhQ=="
|
||||||
|
},
|
||||||
|
"node_modules/merge-stream": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
|
||||||
|
},
|
||||||
|
"node_modules/minimatch": {
|
||||||
|
"version": "5.1.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
|
||||||
|
"integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
|
||||||
|
"dependencies": {
|
||||||
|
"brace-expansion": "^2.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/morphux": {
|
||||||
|
"resolved": "../../../../MorphUX",
|
||||||
|
"link": true
|
||||||
|
},
|
||||||
|
"node_modules/ms": {
|
||||||
|
"version": "2.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||||
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||||
|
},
|
||||||
|
"node_modules/once": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
|
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||||
|
"dependencies": {
|
||||||
|
"wrappy": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/path-parse": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||||
|
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
|
||||||
|
},
|
||||||
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
|
||||||
|
},
|
||||||
|
"node_modules/picomatch": {
|
||||||
|
"version": "4.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
|
||||||
|
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/jonschlinkert"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/randombytes": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"safe-buffer": "^5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/require-directory": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/resolve": {
|
||||||
|
"version": "1.22.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
|
||||||
|
"integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"is-core-module": "^2.16.1",
|
||||||
|
"path-parse": "^1.0.7",
|
||||||
|
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"resolve": "bin/resolve"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/rollup": {
|
||||||
|
"version": "2.80.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz",
|
||||||
|
"integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==",
|
||||||
|
"bin": {
|
||||||
|
"rollup": "dist/bin/rollup"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/rollup-plugin-terser": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
|
||||||
|
"deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/code-frame": "^7.10.4",
|
||||||
|
"jest-worker": "^26.2.1",
|
||||||
|
"serialize-javascript": "^4.0.0",
|
||||||
|
"terser": "^5.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"rollup": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/safe-buffer": {
|
||||||
|
"version": "5.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||||
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/feross"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "patreon",
|
||||||
|
"url": "https://www.patreon.com/feross"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "consulting",
|
||||||
|
"url": "https://feross.org/support"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/serialize-javascript": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
|
||||||
|
"dependencies": {
|
||||||
|
"randombytes": "^2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/socket.io-client": {
|
||||||
|
"version": "4.8.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.3.tgz",
|
||||||
|
"integrity": "sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==",
|
||||||
|
"dependencies": {
|
||||||
|
"@socket.io/component-emitter": "~3.1.0",
|
||||||
|
"debug": "~4.4.1",
|
||||||
|
"engine.io-client": "~6.6.1",
|
||||||
|
"socket.io-parser": "~4.2.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/socket.io-parser": {
|
||||||
|
"version": "4.2.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.5.tgz",
|
||||||
|
"integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@socket.io/component-emitter": "~3.1.0",
|
||||||
|
"debug": "~4.4.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/source-map": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/source-map-support": {
|
||||||
|
"version": "0.5.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
|
||||||
|
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
|
||||||
|
"dependencies": {
|
||||||
|
"buffer-from": "^1.0.0",
|
||||||
|
"source-map": "^0.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string-width": {
|
||||||
|
"version": "4.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||||
|
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"emoji-regex": "^8.0.0",
|
||||||
|
"is-fullwidth-code-point": "^3.0.0",
|
||||||
|
"strip-ansi": "^6.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/strip-ansi": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-regex": "^5.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/supports-color": {
|
||||||
|
"version": "7.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||||
|
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||||
|
"dependencies": {
|
||||||
|
"has-flag": "^4.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/supports-preserve-symlinks-flag": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/terser": {
|
||||||
|
"version": "5.46.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz",
|
||||||
|
"integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/source-map": "^0.3.3",
|
||||||
|
"acorn": "^8.15.0",
|
||||||
|
"commander": "^2.20.0",
|
||||||
|
"source-map-support": "~0.5.20"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"terser": "bin/terser"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/typescript": {
|
||||||
|
"version": "5.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
|
||||||
|
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc",
|
||||||
|
"tsserver": "bin/tsserver"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.17"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "6.21.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
||||||
|
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
|
||||||
|
},
|
||||||
|
"node_modules/wrap-ansi": {
|
||||||
|
"version": "7.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||||
|
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": "^4.0.0",
|
||||||
|
"string-width": "^4.1.0",
|
||||||
|
"strip-ansi": "^6.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/wrappy": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
||||||
|
},
|
||||||
|
"node_modules/ws": {
|
||||||
|
"version": "8.18.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
|
||||||
|
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"bufferutil": "^4.0.1",
|
||||||
|
"utf-8-validate": ">=5.0.2"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"bufferutil": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"utf-8-validate": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/xmlhttprequest-ssl": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/y18n": {
|
||||||
|
"version": "5.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
||||||
|
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/yargs": {
|
||||||
|
"version": "17.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
|
||||||
|
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"cliui": "^8.0.1",
|
||||||
|
"escalade": "^3.1.1",
|
||||||
|
"get-caller-file": "^2.0.5",
|
||||||
|
"require-directory": "^2.1.1",
|
||||||
|
"string-width": "^4.2.3",
|
||||||
|
"y18n": "^5.0.5",
|
||||||
|
"yargs-parser": "^21.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/yargs-parser": {
|
||||||
|
"version": "21.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
|
||||||
|
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
frontend/views/control/package.json
Normal file
27
frontend/views/control/package.json
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"scripts": {
|
||||||
|
"build": "sass scss/index.scss style.css && tsc && npm run bundle",
|
||||||
|
"watch-ts": "tsc -w",
|
||||||
|
"watch-scss": "sass scss/index.scss style.css -w",
|
||||||
|
"watch-rollup": "rollup -c --watch",
|
||||||
|
"watch-rebuildscss": "rm style.css && npm run watch-scss"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@rollup/plugin-commonjs": "^25.0.7",
|
||||||
|
"@rollup/plugin-json": "^6.1.0",
|
||||||
|
"@rollup/plugin-node-resolve": "^15.1.0",
|
||||||
|
"@types/node": "^20.12.8",
|
||||||
|
"ansi_up": "^6.0.6",
|
||||||
|
"material-symbols": "^0.17.4",
|
||||||
|
"morphux": "file:../../../../MorphUX",
|
||||||
|
"rollup": "^2.79.1",
|
||||||
|
"rollup-plugin-terser": "^7.0.2",
|
||||||
|
"socket.io-client": "^4.8.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/sortablejs": "^1.15.8",
|
||||||
|
"dts-bundle-generator": "^9.5.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
frontend/views/control/rollup.config.js
Normal file
19
frontend/views/control/rollup.config.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import cjs from '@rollup/plugin-commonjs';
|
||||||
|
import node from '@rollup/plugin-node-resolve';
|
||||||
|
import { terser } from 'rollup-plugin-terser';
|
||||||
|
import json from '@rollup/plugin-json';
|
||||||
|
|
||||||
|
const production = !process.env.ROLLUP_WATCH;
|
||||||
|
|
||||||
|
export default {
|
||||||
|
input: 'dist/main.js',
|
||||||
|
output: [
|
||||||
|
{ file: 'script.js', format: 'iife', sourcemap: true, inlineDynamicImports: true }
|
||||||
|
],
|
||||||
|
plugins: [
|
||||||
|
node({ browser: true }),
|
||||||
|
cjs(),
|
||||||
|
production && terser(),
|
||||||
|
json()
|
||||||
|
],
|
||||||
|
};
|
||||||
14895
frontend/views/control/script.js
Normal file
14895
frontend/views/control/script.js
Normal file
File diff suppressed because it is too large
Load Diff
1
frontend/views/control/script.js.map
Normal file
1
frontend/views/control/script.js.map
Normal file
File diff suppressed because one or more lines are too long
183
frontend/views/control/scss/advanced.scss
Normal file
183
frontend/views/control/scss/advanced.scss
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
.ntsh-outofservicemode {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh-timer {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 10px;
|
||||||
|
margin-top: 30px;
|
||||||
|
|
||||||
|
.ntsh-timer-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
width: 85px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="time"] {
|
||||||
|
position: relative;
|
||||||
|
padding: 10px;
|
||||||
|
border: 2px solid #000;
|
||||||
|
font-weight: 500;
|
||||||
|
transition-duration: 0.2s;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 20px;
|
||||||
|
|
||||||
|
&::-webkit-calendar-picker-indicator {
|
||||||
|
background: transparent;
|
||||||
|
bottom: 0;
|
||||||
|
color: transparent;
|
||||||
|
cursor: pointer;
|
||||||
|
height: auto;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh-autolighting {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
margin: 30px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.ntsh_lightingsettings-container {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
opacity: .3;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh_lightingsettings {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 5px;
|
||||||
|
|
||||||
|
.ntsh_lightingsettings-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
position: relative;
|
||||||
|
padding: 10px;
|
||||||
|
border: 2px solid #000;
|
||||||
|
font-weight: 500;
|
||||||
|
transition-duration: 0.2s;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 20px;
|
||||||
|
|
||||||
|
&::-webkit-calendar-picker-indicator {
|
||||||
|
background: transparent;
|
||||||
|
bottom: 0;
|
||||||
|
color: transparent;
|
||||||
|
cursor: pointer;
|
||||||
|
height: auto;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh_soundsettings {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 5px;
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
opacity: .3;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh_soundsettings-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
padding: 10px;
|
||||||
|
border: 2px solid #000;
|
||||||
|
font-weight: 500;
|
||||||
|
transition-duration: 0.2s;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 20px;
|
||||||
|
|
||||||
|
&::-webkit-calendar-picker-indicator {
|
||||||
|
background: transparent;
|
||||||
|
bottom: 0;
|
||||||
|
color: transparent;
|
||||||
|
cursor: pointer;
|
||||||
|
height: auto;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh_soundsettings-resetcontainer {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
|
||||||
|
.ntsh_soundsettings-reset {
|
||||||
|
padding: 10px 20px;
|
||||||
|
border: 2px solid #000;
|
||||||
|
font-weight: 500;
|
||||||
|
transition-duration: .2s;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #d7ccc1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
70
frontend/views/control/scss/checklist.scss
Normal file
70
frontend/views/control/scss/checklist.scss
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
.ntsh-checklist {
|
||||||
|
width: 100%;
|
||||||
|
margin: 30px 0px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 10px;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.ntsh-checklist-row {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
|
||||||
|
.ntsh-checklist-row-status {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
margin: 0px 10px;
|
||||||
|
border-radius: 100%;
|
||||||
|
background: #00000024;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
&.GREEN {
|
||||||
|
background: #1db100;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.RED {
|
||||||
|
background: #b10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.YELLOW {
|
||||||
|
background: #b1a100;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.GRAY {
|
||||||
|
background: #d5c7ba;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh-checklist-row-text {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh-checklist-row-buttons {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 3px;
|
||||||
|
|
||||||
|
.ntsh-checklist-row-button {
|
||||||
|
align-self: stretch;
|
||||||
|
display: none;
|
||||||
|
padding: 5px 10px;
|
||||||
|
border: 2px solid #000;
|
||||||
|
font-weight: 500;
|
||||||
|
transition-duration: 0.2s;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #d7ccc1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
60
frontend/views/control/scss/home.scss
Normal file
60
frontend/views/control/scss/home.scss
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
.ntsh-fullreboot {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.ntsh-fullreboot-button {
|
||||||
|
padding: 20px;
|
||||||
|
border: 2px solid #000;
|
||||||
|
font-weight: 500;
|
||||||
|
transition-duration: 0.2s;
|
||||||
|
cursor: pointer;
|
||||||
|
background: #ff644e;
|
||||||
|
font-size: 25px;
|
||||||
|
font-weight: 800;
|
||||||
|
letter-spacing: -1px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #be4939;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh-support {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
margin-top: 30px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
height: 50px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition-duration: .2s;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
filter: brightness(.8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh-calibration {
|
||||||
|
width: 100%;
|
||||||
|
margin: 30px 0px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh_callanchor {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
background: #454545;
|
||||||
|
text-align: center;
|
||||||
|
padding: 10px 00px;
|
||||||
|
font-size: 40px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
75
frontend/views/control/scss/index.scss
Normal file
75
frontend/views/control/scss/index.scss
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
@use '../node_modules/morphux/style.css';
|
||||||
|
@use './topbar.scss';
|
||||||
|
@use './checklist.scss';
|
||||||
|
@use './text.scss';
|
||||||
|
@use './switch.scss';
|
||||||
|
@use './home.scss';
|
||||||
|
@use './advanced.scss';
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: Roboto;
|
||||||
|
src: url(/font/Roboto-VariableFont_wdth,wght.ttf) format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: ScothBrace;
|
||||||
|
src: url(/font/ScothBrace.ttf) format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: RidleyGrotesk;
|
||||||
|
src: url(/font/RidleyGrotesk-Bold.otf) format('opentype');
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: RidleyGrotesk;
|
||||||
|
src: url(/font/RidleyGrotesk-Regular.otf) format('opentype');
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
color: #000;
|
||||||
|
font-family: RidleyGrotesk, sans-serif;
|
||||||
|
background: #E1EAF6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
|
||||||
|
.ntsh-wrapper {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100%;
|
||||||
|
background: linear-gradient(0deg, #E1EAF6, #F9E7D6);
|
||||||
|
|
||||||
|
.ntsh-inlay {
|
||||||
|
width: min(800px, calc(100% - 40px));
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh_tabs {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.ntsh_tab {
|
||||||
|
width: 100%;
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
&.visible {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ntsh-separator {
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 10px dotted #000;
|
||||||
|
margin: 30px 0px;
|
||||||
|
}
|
||||||
61
frontend/views/control/scss/switch.scss
Normal file
61
frontend/views/control/scss/switch.scss
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
.switch {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
width: 60px;
|
||||||
|
height: 34px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide default HTML checkbox */
|
||||||
|
.switch input {
|
||||||
|
opacity: 0;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The slider */
|
||||||
|
.slider {
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: #ccc;
|
||||||
|
-webkit-transition: .4s;
|
||||||
|
transition: .4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slider:before {
|
||||||
|
position: absolute;
|
||||||
|
content: "";
|
||||||
|
height: 26px;
|
||||||
|
width: 26px;
|
||||||
|
left: 4px;
|
||||||
|
bottom: 4px;
|
||||||
|
background-color: white;
|
||||||
|
-webkit-transition: .4s;
|
||||||
|
transition: .4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:checked+.slider {
|
||||||
|
background-color: #2bc038;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:focus+.slider {
|
||||||
|
box-shadow: 0 0 1px #2bc038;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:checked+.slider:before {
|
||||||
|
-webkit-transform: translateX(26px);
|
||||||
|
-ms-transform: translateX(26px);
|
||||||
|
transform: translateX(26px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Rounded sliders */
|
||||||
|
.slider.round {
|
||||||
|
border-radius: 34px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slider.round:before {
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
27
frontend/views/control/scss/text.scss
Normal file
27
frontend/views/control/scss/text.scss
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
h1 {
|
||||||
|
font-size: 45px;
|
||||||
|
margin: 0px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 24px;
|
||||||
|
margin: 0px 0px 5px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 22px;
|
||||||
|
margin: 0px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
30
frontend/views/control/scss/topbar.scss
Normal file
30
frontend/views/control/scss/topbar.scss
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
.ntsh-topbar {
|
||||||
|
.ntsh_menubar {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
|
||||||
|
.ntsh_menubar-item {
|
||||||
|
padding: 10px 20px;
|
||||||
|
border: 2px solid #000;
|
||||||
|
font-weight: 500;
|
||||||
|
transition-duration: .2s;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #d7ccc1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: .3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
2831
frontend/views/control/style.css
Normal file
2831
frontend/views/control/style.css
Normal file
File diff suppressed because it is too large
Load Diff
1
frontend/views/control/style.css.map
Normal file
1
frontend/views/control/style.css.map
Normal file
File diff suppressed because one or more lines are too long
41
frontend/views/control/ts/calibration.ts
Normal file
41
frontend/views/control/ts/calibration.ts
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
import { Main } from './main';
|
||||||
|
|
||||||
|
export class Calibration {
|
||||||
|
private _Main: Main;
|
||||||
|
|
||||||
|
observer: IntersectionObserver;
|
||||||
|
visible: boolean = false;
|
||||||
|
|
||||||
|
container: HTMLDivElement = document.querySelector('.ntsh-calibration');
|
||||||
|
image: HTMLImageElement = this.container.querySelector('img');
|
||||||
|
|
||||||
|
constructor(Main: Main) {
|
||||||
|
this._Main = Main;
|
||||||
|
|
||||||
|
this.registerListeners();
|
||||||
|
|
||||||
|
this.startClock();
|
||||||
|
}
|
||||||
|
|
||||||
|
private startClock() {
|
||||||
|
setInterval(() => {
|
||||||
|
if (this.visible && this.image)
|
||||||
|
this.image.src = `/calibrationImage?t=${Date.now()}`;
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
private registerListeners() {
|
||||||
|
this.observer = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach((entry) => {
|
||||||
|
if (entry.isIntersecting) {
|
||||||
|
this.visible = true;
|
||||||
|
console.log('Calibration visible');
|
||||||
|
} else {
|
||||||
|
this.visible = false;
|
||||||
|
console.log('Calibration not visible');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.observer.observe(this.container);
|
||||||
|
}
|
||||||
|
}
|
||||||
146
frontend/views/control/ts/checklist.ts
Normal file
146
frontend/views/control/ts/checklist.ts
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
import { Main } from './main';
|
||||||
|
import { MorphFeature } from 'morphux';
|
||||||
|
|
||||||
|
export class Checklist {
|
||||||
|
private _Main: Main;
|
||||||
|
|
||||||
|
Rows = {
|
||||||
|
CAMERAPC: document.querySelector(
|
||||||
|
`.ntsh-checklist-row[status="CAMERAPC"]`,
|
||||||
|
) as HTMLDivElement,
|
||||||
|
CAMERAPROCESS: document.querySelector(
|
||||||
|
`.ntsh-checklist-row[status="CAMERAPROCESS"]`,
|
||||||
|
) as HTMLDivElement,
|
||||||
|
CAMERAUNITYSTREAM: document.querySelector(
|
||||||
|
`.ntsh-checklist-row[status="CAMERAUNITYSTREAM"]`,
|
||||||
|
) as HTMLDivElement,
|
||||||
|
UNITYBUILD: document.querySelector(
|
||||||
|
`.ntsh-checklist-row[status="UNITYBUILD"]`,
|
||||||
|
) as HTMLDivElement,
|
||||||
|
REPLAYFUNCTION: document.querySelector(
|
||||||
|
`.ntsh-checklist-row[status="REPLAYFUNCTION"]`,
|
||||||
|
) as HTMLDivElement,
|
||||||
|
};
|
||||||
|
FullReboot: HTMLDivElement = document.querySelector(
|
||||||
|
'.ntsh-fullreboot-button',
|
||||||
|
);
|
||||||
|
|
||||||
|
constructor(Main: Main) {
|
||||||
|
this._Main = Main;
|
||||||
|
|
||||||
|
this.registerListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
update(status: Status) {
|
||||||
|
this.updateRow(this.Rows.CAMERAPC, status.CAMERAPC);
|
||||||
|
this.updateRow(this.Rows.CAMERAPROCESS, status.CAMERAPROCESS);
|
||||||
|
this.updateRow(this.Rows.CAMERAUNITYSTREAM, status.CAMERAUNITYSTREAM);
|
||||||
|
this.updateRow(this.Rows.UNITYBUILD, status.UNITYBUILD);
|
||||||
|
this.updateRow(this.Rows.REPLAYFUNCTION, status.REPLAYFUNCTION);
|
||||||
|
console.log('Updated checklist:', status);
|
||||||
|
}
|
||||||
|
|
||||||
|
updateRow(row: HTMLDivElement, state: StateEntry) {
|
||||||
|
const status: HTMLDivElement = row.querySelector(
|
||||||
|
'.ntsh-checklist-row-status',
|
||||||
|
);
|
||||||
|
const message: HTMLDivElement = row.querySelector('p');
|
||||||
|
|
||||||
|
const startButton: HTMLDivElement = row.querySelector(
|
||||||
|
'.ntsh-checklist-row-button.start',
|
||||||
|
);
|
||||||
|
const stopButton: HTMLDivElement = row.querySelector(
|
||||||
|
'.ntsh-checklist-row-button.stop',
|
||||||
|
);
|
||||||
|
const rebootButton: HTMLDivElement = row.querySelector(
|
||||||
|
'.ntsh-checklist-row-button.reboot',
|
||||||
|
);
|
||||||
|
|
||||||
|
status.classList.remove('RED', 'GREEN', 'YELLOW', 'GRAY');
|
||||||
|
status.classList.add(state.state);
|
||||||
|
|
||||||
|
message.innerText = state.message;
|
||||||
|
|
||||||
|
startButton.style.display = state.buttons?.start ? 'block' : 'none';
|
||||||
|
stopButton.style.display = state.buttons?.stop ? 'block' : 'none';
|
||||||
|
rebootButton.style.display = state.buttons?.reboot ? 'block' : 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
private registerListeners() {
|
||||||
|
this.FullReboot.onclick = () => {
|
||||||
|
MorphFeature.Confirm(
|
||||||
|
{
|
||||||
|
title: 'Full Reboot',
|
||||||
|
message: 'Are you sure you want to perform a full reboot?',
|
||||||
|
},
|
||||||
|
(state) => {
|
||||||
|
if (!state) return;
|
||||||
|
this._Main.socket.emit('status', 'fullreboot');
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const key in this.Rows) {
|
||||||
|
const row = this.Rows[key];
|
||||||
|
|
||||||
|
const startButton: HTMLDivElement = row.querySelector(
|
||||||
|
'.ntsh-checklist-row-button.start',
|
||||||
|
);
|
||||||
|
startButton.onclick = () =>
|
||||||
|
MorphFeature.Confirm(
|
||||||
|
{
|
||||||
|
title: 'Start',
|
||||||
|
message: 'Are you sure you want to start?',
|
||||||
|
},
|
||||||
|
(state) => {
|
||||||
|
if (!state) return;
|
||||||
|
this._Main.socket.emit('status', 'start', key);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
const stopButton: HTMLDivElement = row.querySelector(
|
||||||
|
'.ntsh-checklist-row-button.stop',
|
||||||
|
);
|
||||||
|
stopButton.onclick = () =>
|
||||||
|
MorphFeature.Confirm(
|
||||||
|
{
|
||||||
|
title: 'Stop',
|
||||||
|
message: 'Are you sure you want to stop?',
|
||||||
|
},
|
||||||
|
(state) => {
|
||||||
|
if (!state) return;
|
||||||
|
this._Main.socket.emit('status', 'stop', key);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
const rebootButton: HTMLDivElement = row.querySelector(
|
||||||
|
'.ntsh-checklist-row-button.reboot',
|
||||||
|
);
|
||||||
|
rebootButton.onclick = () =>
|
||||||
|
MorphFeature.Confirm(
|
||||||
|
{
|
||||||
|
title: 'Reboot',
|
||||||
|
message: 'Are you sure you want to reboot?',
|
||||||
|
},
|
||||||
|
(state) => {
|
||||||
|
if (!state) return;
|
||||||
|
this._Main.socket.emit('status', 'reboot', key);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Status {
|
||||||
|
CAMERAPC: StateEntry;
|
||||||
|
CAMERAPROCESS: StateEntry;
|
||||||
|
CAMERAUNITYSTREAM: StateEntry;
|
||||||
|
UNITYBUILD: StateEntry;
|
||||||
|
REPLAYFUNCTION: StateEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface StateEntry {
|
||||||
|
state: 'GREEN' | 'RED' | 'YELLOW' | 'GRAY';
|
||||||
|
message: string;
|
||||||
|
buttons?: { reboot?: boolean; start?: boolean; stop?: boolean };
|
||||||
|
}
|
||||||
180
frontend/views/control/ts/main.ts
Normal file
180
frontend/views/control/ts/main.ts
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
import { io } from 'socket.io-client';
|
||||||
|
import { Menu } from './menu';
|
||||||
|
import { Checklist } from './checklist';
|
||||||
|
import { Calibration } from './calibration';
|
||||||
|
import { ce, MorphComponent, MorphFeature } from 'morphux';
|
||||||
|
import { OutOfServiceMode } from './outOfServiceMode';
|
||||||
|
import { Timer } from './timer';
|
||||||
|
|
||||||
|
const socket = io('/');
|
||||||
|
|
||||||
|
export class Main {
|
||||||
|
Menu = new Menu();
|
||||||
|
CheckList = new Checklist(this);
|
||||||
|
Calibration = new Calibration(this);
|
||||||
|
OutOfServiceMode = new OutOfServiceMode(this);
|
||||||
|
Timer = new Timer(this);
|
||||||
|
|
||||||
|
socket = socket;
|
||||||
|
|
||||||
|
supportButton: HTMLDivElement = document.querySelector('.ntsh-support img');
|
||||||
|
supportNumber: string = '';
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.registerListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
private registerListeners() {
|
||||||
|
this.supportButton.onclick = () => this.showSupport();
|
||||||
|
|
||||||
|
socket.on('status', (data) => {
|
||||||
|
this.CheckList.update(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on('supportNumber', (number: string) => {
|
||||||
|
this.supportNumber = number;
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on('unityWebSocketState', (state: UnityWebSocketStatus) => {
|
||||||
|
this.OutOfServiceMode.input.checked =
|
||||||
|
state?.parameters?.outOfService ?? false;
|
||||||
|
this.OutOfServiceMode.state =
|
||||||
|
state?.parameters?.outOfService ?? false;
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on('timer', (data) => {
|
||||||
|
this.Timer.update(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async executeCommand(
|
||||||
|
command: string,
|
||||||
|
message: string,
|
||||||
|
type: 'unityRunner' | 'unityWebSocket' = 'unityRunner',
|
||||||
|
): Promise<boolean> {
|
||||||
|
return new Promise<boolean>(async (resolve) => {
|
||||||
|
const confirmed = await MorphFeature.Confirm({
|
||||||
|
title: 'Are you sure?',
|
||||||
|
message,
|
||||||
|
});
|
||||||
|
if (!confirmed) return resolve(false);
|
||||||
|
|
||||||
|
MorphFeature.Loader({
|
||||||
|
active: true,
|
||||||
|
message: `Dispatching command...`,
|
||||||
|
});
|
||||||
|
socket.emit(
|
||||||
|
type,
|
||||||
|
command,
|
||||||
|
(response: { succeed: boolean; message?: string }) => {
|
||||||
|
MorphFeature.Loader({ active: false });
|
||||||
|
|
||||||
|
if (!response.succeed)
|
||||||
|
return MorphFeature.Alert({
|
||||||
|
title: 'Error',
|
||||||
|
message: response.message,
|
||||||
|
});
|
||||||
|
|
||||||
|
MorphFeature.Notification({
|
||||||
|
level: 'success',
|
||||||
|
message: `Dispatched command`,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
resolve(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const _Main = new Main();
|
||||||
|
|
||||||
|
export type ServiceState =
|
||||||
|
| 'CONNECTING'
|
||||||
|
| 'CONNECTED'
|
||||||
|
| 'DISCONNECTED'
|
||||||
|
| 'FAILED';
|
||||||
|
|
||||||
|
interface UnityWebSocketStatus {
|
||||||
|
state: ServiceState;
|
||||||
|
message?: string;
|
||||||
|
error?: string;
|
||||||
|
|
||||||
|
parameters: UnityParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface UnityParameters {
|
||||||
|
timelineWatching: boolean;
|
||||||
|
timelineStanding: boolean;
|
||||||
|
timelineProgress: number;
|
||||||
|
zedPath: string;
|
||||||
|
zedReady: boolean;
|
||||||
|
zedFPS: string;
|
||||||
|
outOfService: boolean;
|
||||||
|
sliders: UnityParameterSlider[];
|
||||||
|
advancedSliders: UnityParameterSlider[];
|
||||||
|
sensors: UnitySocketMessageHeartbeat['heartbeat']['dataSensors'];
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnityHeartbeatSlider =
|
||||||
|
UnitySocketMessageHeartbeat['heartbeat']['dataSliders'][number];
|
||||||
|
interface UnityParameterSlider extends UnityHeartbeatSlider {
|
||||||
|
visualMultiplier: number;
|
||||||
|
decimalPlaces: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface UnitySocketMessageBase {
|
||||||
|
type: string;
|
||||||
|
timestamp: number;
|
||||||
|
}
|
||||||
|
interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
||||||
|
type: 'heartbeat_data';
|
||||||
|
heartbeat: {
|
||||||
|
dataSensors: {
|
||||||
|
sensorIndex: number;
|
||||||
|
deviceName: string;
|
||||||
|
outputValue: number;
|
||||||
|
}[];
|
||||||
|
dataSliders: {
|
||||||
|
sliderIndex: number;
|
||||||
|
sliderName: string;
|
||||||
|
outputValue: number;
|
||||||
|
min: number;
|
||||||
|
max: number;
|
||||||
|
unit: string;
|
||||||
|
}[];
|
||||||
|
dataTimeline: {
|
||||||
|
isStanding: boolean;
|
||||||
|
isWatching: boolean;
|
||||||
|
timelineProgress: number;
|
||||||
|
};
|
||||||
|
zedCamera: {
|
||||||
|
cameraFPS: string;
|
||||||
|
isZedReady: boolean;
|
||||||
|
streamInputIP: string;
|
||||||
|
streamInputPort: number;
|
||||||
|
zedGrabError: number;
|
||||||
|
};
|
||||||
|
showOutOfService?: boolean;
|
||||||
|
};
|
||||||
|
}
|
||||||
42
frontend/views/control/ts/menu.ts
Normal file
42
frontend/views/control/ts/menu.ts
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
export class Menu {
|
||||||
|
menuContainer: HTMLDivElement = document.querySelector('.ntsh_menubar');
|
||||||
|
tabContainer: HTMLDivElement = document.querySelector('.ntsh_tabs');
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.registerListeners();
|
||||||
|
|
||||||
|
if (window.location.search.includes('advanced'))
|
||||||
|
this.selectTab('advanced');
|
||||||
|
}
|
||||||
|
|
||||||
|
selectTab(tabId: string) {
|
||||||
|
this.menuContainer
|
||||||
|
.querySelectorAll('.ntsh_menubar-item')
|
||||||
|
.forEach((item) => {
|
||||||
|
if (item.getAttribute('tabid') === tabId) {
|
||||||
|
item.classList.add('selected');
|
||||||
|
} else {
|
||||||
|
item.classList.remove('selected');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.tabContainer.querySelectorAll('.ntsh_tab').forEach((tab) => {
|
||||||
|
if (tab.getAttribute('tabid') === tabId) {
|
||||||
|
tab.classList.add('visible');
|
||||||
|
} else {
|
||||||
|
tab.classList.remove('visible');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private registerListeners() {
|
||||||
|
this.menuContainer
|
||||||
|
.querySelectorAll('.ntsh_menubar-item')
|
||||||
|
.forEach((item) => {
|
||||||
|
item.addEventListener('click', () => {
|
||||||
|
const itemId = item.getAttribute('tabid');
|
||||||
|
this.selectTab(itemId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
29
frontend/views/control/ts/outOfServiceMode.ts
Normal file
29
frontend/views/control/ts/outOfServiceMode.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import { MorphComponent } from 'morphux';
|
||||||
|
import { Main } from './main';
|
||||||
|
|
||||||
|
export class OutOfServiceMode {
|
||||||
|
private _Main: Main;
|
||||||
|
|
||||||
|
state: boolean = false;
|
||||||
|
input: HTMLInputElement = document.querySelector(
|
||||||
|
'.ntsh-outofservicemode-input',
|
||||||
|
);
|
||||||
|
|
||||||
|
constructor(Main: Main) {
|
||||||
|
this._Main = Main;
|
||||||
|
|
||||||
|
this.registerListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
private registerListeners() {
|
||||||
|
this.input.addEventListener('change', async () => {
|
||||||
|
const valid = await this._Main.executeCommand(
|
||||||
|
this.state ? 'disableOutOfService' : 'enableOutOfService',
|
||||||
|
`Are you sure you want to set the installation to "${this.state ? 'Out of Service' : 'Operational'}"?`,
|
||||||
|
'unityWebSocket',
|
||||||
|
);
|
||||||
|
if (!valid) this.input.checked = this.state;
|
||||||
|
this.state = this.input.checked;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
36
frontend/views/control/ts/timer.ts
Normal file
36
frontend/views/control/ts/timer.ts
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import { Main } from './main';
|
||||||
|
|
||||||
|
export class Timer {
|
||||||
|
private _Main: Main;
|
||||||
|
|
||||||
|
startup: HTMLInputElement = document.querySelector('.ntsh-timer-startup');
|
||||||
|
shutdown: HTMLInputElement = document.querySelector('.ntsh-timer-shutdown');
|
||||||
|
|
||||||
|
constructor(Main: Main) {
|
||||||
|
this._Main = Main;
|
||||||
|
|
||||||
|
this.registerListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
update(data: {
|
||||||
|
start: { hour: number; minute: number };
|
||||||
|
end: { hour: number; minute: number };
|
||||||
|
}) {
|
||||||
|
const start = `${data.start.hour.toString().padStart(2, '0')}:${data.start.minute.toString().padStart(2, '0')}`;
|
||||||
|
const end = `${data.end.hour.toString().padStart(2, '0')}:${data.end.minute.toString().padStart(2, '0')}`;
|
||||||
|
|
||||||
|
this.startup.value = start;
|
||||||
|
this.shutdown.value = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
registerListeners() {
|
||||||
|
this.startup.onchange = () => {
|
||||||
|
const [hour, minute] = this.startup.value.split(':').map(Number);
|
||||||
|
this._Main.socket.emit('setTimerStart', { hour, minute });
|
||||||
|
};
|
||||||
|
this.shutdown.onchange = () => {
|
||||||
|
const [hour, minute] = this.shutdown.value.split(':').map(Number);
|
||||||
|
this._Main.socket.emit('setTimerEnd', { hour, minute });
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
9
frontend/views/control/tsconfig.json
Normal file
9
frontend/views/control/tsconfig.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "dist",
|
||||||
|
"sourceMap": true
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"ts/**/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -7,8 +7,8 @@
|
|||||||
<title>NTSH Control</title>
|
<title>NTSH Control</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="/material-symbols/index.css">
|
<link rel="stylesheet" href="/material-symbols/index.css">
|
||||||
<link rel="stylesheet" href="./style.css">
|
<link rel="stylesheet" href="/dashboard/style.css">
|
||||||
<script defer src="./script.js" defer></script>
|
<script defer src="/dashboard/script.js" defer></script>
|
||||||
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/img/cloud_thick.png">
|
<link rel="icon" type="image/png" sizes="32x32" href="/img/cloud_thick.png">
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
43
package-lock.json
generated
43
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "ntshcontrol",
|
"name": "ntshcontrol",
|
||||||
"version": "1.0.0",
|
"version": "2026.3.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "ntshcontrol",
|
"name": "ntshcontrol",
|
||||||
"version": "1.0.0",
|
"version": "2026.3.1",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/express": "^5.0.3",
|
"@types/express": "^5.0.3",
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
"@types/ws": "^8.18.1",
|
"@types/ws": "^8.18.1",
|
||||||
"express": "^5.1.0",
|
"express": "^5.1.0",
|
||||||
"fs-extra": "^11.3.2",
|
"fs-extra": "^11.3.2",
|
||||||
|
"naudiodon": "^2.3.6",
|
||||||
"ping": "^1.0.0",
|
"ping": "^1.0.0",
|
||||||
"socket.io": "^4.8.1",
|
"socket.io": "^4.8.1",
|
||||||
"socket.io-client": "^4.8.1",
|
"socket.io-client": "^4.8.1",
|
||||||
@@ -221,6 +222,14 @@
|
|||||||
"node": "^4.5.0 || >= 5.9"
|
"node": "^4.5.0 || >= 5.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/bindings": {
|
||||||
|
"version": "1.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
|
||||||
|
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"file-uri-to-path": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/body-parser": {
|
"node_modules/body-parser": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
|
||||||
@@ -691,6 +700,11 @@
|
|||||||
"url": "https://opencollective.com/express"
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/file-uri-to-path": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
|
||||||
|
},
|
||||||
"node_modules/finalhandler": {
|
"node_modules/finalhandler": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
|
||||||
@@ -1125,6 +1139,21 @@
|
|||||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/nan": {
|
||||||
|
"version": "2.25.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.25.0.tgz",
|
||||||
|
"integrity": "sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g=="
|
||||||
|
},
|
||||||
|
"node_modules/naudiodon": {
|
||||||
|
"version": "2.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/naudiodon/-/naudiodon-2.3.6.tgz",
|
||||||
|
"integrity": "sha512-6NWMV4lAdBSoHIh3jcXG/tjCzBLCafh6uuhwUdtDbPbj8xVJ8FOgKi6lU0rkHrW22Up5AFIrWPSiAhGOxmhEQQ==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"dependencies": {
|
||||||
|
"bindings": "^1.5.0",
|
||||||
|
"segfault-handler": "^1.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/negotiator": {
|
"node_modules/negotiator": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
|
||||||
@@ -1326,6 +1355,16 @@
|
|||||||
"integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==",
|
"integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==",
|
||||||
"license": "BSD-3-Clause"
|
"license": "BSD-3-Clause"
|
||||||
},
|
},
|
||||||
|
"node_modules/segfault-handler": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/segfault-handler/-/segfault-handler-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-p7kVHo+4uoYkr0jmIiTBthwV5L2qmWtben/KDunDZ834mbos+tY+iO0//HpAJpOFSQZZ+wxKWuRo4DxV02B7Lg==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"dependencies": {
|
||||||
|
"bindings": "^1.2.1",
|
||||||
|
"nan": "^2.14.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.7.3",
|
"version": "7.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ntshcontrol",
|
"name": "ntshcontrol",
|
||||||
"version": "2025.11.2",
|
"version": "2026.3.1",
|
||||||
"main": "dist/Entry.js",
|
"main": "dist/Entry.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node ."
|
"start": "node ."
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
"@types/ws": "^8.18.1",
|
"@types/ws": "^8.18.1",
|
||||||
"express": "^5.1.0",
|
"express": "^5.1.0",
|
||||||
"fs-extra": "^11.3.2",
|
"fs-extra": "^11.3.2",
|
||||||
|
"naudiodon": "^2.3.6",
|
||||||
"ping": "^1.0.0",
|
"ping": "^1.0.0",
|
||||||
"socket.io": "^4.8.1",
|
"socket.io": "^4.8.1",
|
||||||
"socket.io-client": "^4.8.1",
|
"socket.io-client": "^4.8.1",
|
||||||
|
|||||||
112
src/Audio.ts
Normal file
112
src/Audio.ts
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
import { pathExistsSync, readJSONSync, writeFile } from 'fs-extra';
|
||||||
|
import { Main } from './Main';
|
||||||
|
import { join } from 'path';
|
||||||
|
const portAudio = require('naudiodon');
|
||||||
|
|
||||||
|
const PREFIX = '[Audio]';
|
||||||
|
export class AudioChecker {
|
||||||
|
private _Main: Main;
|
||||||
|
|
||||||
|
private configPath: string;
|
||||||
|
|
||||||
|
deviceName: string = null;
|
||||||
|
|
||||||
|
constructor(Main: Main) {
|
||||||
|
this._Main = Main;
|
||||||
|
|
||||||
|
this.configPath = join(this._Main.dataPath, 'audio.json');
|
||||||
|
this.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
async waitForDevice() {
|
||||||
|
if ((this.deviceName ?? '').trim().length == 0) {
|
||||||
|
console.log(
|
||||||
|
PREFIX,
|
||||||
|
'No audio device configured, skipping audio check. Available devices:',
|
||||||
|
);
|
||||||
|
|
||||||
|
portAudio
|
||||||
|
.getDevices()
|
||||||
|
.filter((device) => device.maxOutputChannels > 0)
|
||||||
|
.forEach((device) => {
|
||||||
|
console.log(` - ${device.name}`);
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(PREFIX, `Waiting for device "${this.deviceName}"...`);
|
||||||
|
|
||||||
|
let counter = 0;
|
||||||
|
return new Promise<void>((resolve) => {
|
||||||
|
const c = setInterval(() => {
|
||||||
|
counter++;
|
||||||
|
const availableDevices = portAudio
|
||||||
|
.getDevices()
|
||||||
|
.filter((device) => device.maxOutputChannels > 0)
|
||||||
|
.map((device) => device.name);
|
||||||
|
|
||||||
|
if (!availableDevices.includes(this.deviceName)) {
|
||||||
|
if (counter == 3) {
|
||||||
|
console.log(
|
||||||
|
PREFIX,
|
||||||
|
'Trouble finding the correct device. Available devices:',
|
||||||
|
);
|
||||||
|
availableDevices.forEach((device) => {
|
||||||
|
console.log(` - ${device}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const hostApis = portAudio.getHostAPIs();
|
||||||
|
const defaultOutputDeviceId =
|
||||||
|
hostApis.HostAPIs[hostApis.defaultHostAPI].defaultOutput;
|
||||||
|
const defaultOutputDeviceName = portAudio
|
||||||
|
.getDevices()
|
||||||
|
.find(
|
||||||
|
(device) => device.id === defaultOutputDeviceId,
|
||||||
|
)?.name;
|
||||||
|
if (defaultOutputDeviceName !== this.deviceName) {
|
||||||
|
console.warn(
|
||||||
|
PREFIX,
|
||||||
|
`The configured device "${this.deviceName}" is not set as the default output device. Please set it as the default output device to ensure proper functionality. Current default output device: "${defaultOutputDeviceName}".`,
|
||||||
|
);
|
||||||
|
this._Main.Twilio.sendError(
|
||||||
|
'Audio',
|
||||||
|
`The configured device "${this.deviceName}" is not set as the default output device. Current default output device: "${defaultOutputDeviceName}".`,
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
clearInterval(c);
|
||||||
|
resolve();
|
||||||
|
console.log(PREFIX, `Device "${this.deviceName}" is ready!`);
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
load() {
|
||||||
|
console.log(PREFIX, 'Loading audio configuration...');
|
||||||
|
const exists = pathExistsSync(this.configPath);
|
||||||
|
if (!exists) return this.save();
|
||||||
|
|
||||||
|
const data = readJSONSync(this.configPath);
|
||||||
|
this.deviceName = data.deviceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _save: NodeJS.Timeout;
|
||||||
|
async save() {
|
||||||
|
if (this._save) clearTimeout(this._save);
|
||||||
|
|
||||||
|
this._save = setTimeout(async () => {
|
||||||
|
writeFile(
|
||||||
|
this.configPath,
|
||||||
|
JSON.stringify(
|
||||||
|
{ deviceName: this.deviceName ?? null },
|
||||||
|
null,
|
||||||
|
4,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import { io, Socket } from 'socket.io-client';
|
import { io, Socket } from 'socket.io-client';
|
||||||
import { Main } from './Main';
|
import { Main } from './Main';
|
||||||
import { delay, ServiceState } from './Utils';
|
import { delay, ServiceState } from './Utils';
|
||||||
|
import { State, StatusType } from './Status';
|
||||||
|
|
||||||
const PREFIX = `[CameraRunner]`;
|
const PREFIX = `[CameraRunner]`;
|
||||||
export class CameraRunner {
|
export class CameraRunner {
|
||||||
@@ -43,7 +44,7 @@ export class CameraRunner {
|
|||||||
|
|
||||||
sendCommand(
|
sendCommand(
|
||||||
command: 'reboot' | 'restart',
|
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)
|
||||||
return callback({
|
return callback({
|
||||||
@@ -55,7 +56,7 @@ export class CameraRunner {
|
|||||||
command,
|
command,
|
||||||
(response: { succeed: boolean; message?: string }) => {
|
(response: { succeed: boolean; message?: string }) => {
|
||||||
callback(response);
|
callback(response);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,6 +78,18 @@ export class CameraRunner {
|
|||||||
this.message = message;
|
this.message = message;
|
||||||
this.error = error;
|
this.error = error;
|
||||||
this.state = state;
|
this.state = state;
|
||||||
|
|
||||||
|
this._Main.Status.update(
|
||||||
|
StatusType.CameraPC,
|
||||||
|
CameraPCStateColors[this.state],
|
||||||
|
message,
|
||||||
|
{
|
||||||
|
reboot:
|
||||||
|
state === 'FAILED' ||
|
||||||
|
state === 'DISCONNECTED' ||
|
||||||
|
state == 'CONNECTED',
|
||||||
|
},
|
||||||
|
);
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -95,11 +108,23 @@ export class CameraRunner {
|
|||||||
const poll = async () => {
|
const poll = async () => {
|
||||||
const data: ProcessStatus = await new Promise((resolve) => {
|
const data: ProcessStatus = await new Promise((resolve) => {
|
||||||
this.socket.emit('getStatus', (response: ProcessStatus) =>
|
this.socket.emit('getStatus', (response: ProcessStatus) =>
|
||||||
resolve(response)
|
resolve(response),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.processStatus = data;
|
this.processStatus = data;
|
||||||
|
this._Main.Status.update(
|
||||||
|
StatusType.CameraProcess,
|
||||||
|
CameraProcessStateColors[this.processStatus.state],
|
||||||
|
this.processStatus.message,
|
||||||
|
{
|
||||||
|
reboot:
|
||||||
|
this.processStatus.state === 'PROBLEM' ||
|
||||||
|
this.processStatus.state === 'STOPPED' ||
|
||||||
|
this.processStatus.state === 'RUNNING',
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -107,13 +132,24 @@ export class CameraRunner {
|
|||||||
this.processStatus.state = simpleStatus.state;
|
this.processStatus.state = simpleStatus.state;
|
||||||
this.processStatus.message = simpleStatus.message;
|
this.processStatus.message = simpleStatus.message;
|
||||||
this.processStatus.error = simpleStatus.error;
|
this.processStatus.error = simpleStatus.error;
|
||||||
|
this._Main.Status.update(
|
||||||
|
StatusType.CameraProcess,
|
||||||
|
CameraProcessStateColors[this.processStatus.state],
|
||||||
|
this.processStatus.message,
|
||||||
|
{
|
||||||
|
reboot:
|
||||||
|
this.processStatus.state === 'PROBLEM' ||
|
||||||
|
this.processStatus.state === 'STOPPED' ||
|
||||||
|
this.processStatus.state === 'RUNNING',
|
||||||
|
},
|
||||||
|
);
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
});
|
});
|
||||||
|
|
||||||
clearInterval(this.pollClock);
|
clearInterval(this.pollClock);
|
||||||
this.pollClock = setInterval(
|
this.pollClock = setInterval(
|
||||||
() => poll(),
|
() => poll(),
|
||||||
this._Main.Config.cameraRunner.pollInterval
|
this._Main.Config.cameraRunner.pollInterval,
|
||||||
);
|
);
|
||||||
poll();
|
poll();
|
||||||
}
|
}
|
||||||
@@ -146,7 +182,7 @@ export class CameraRunner {
|
|||||||
if (ip == null || port == null) {
|
if (ip == null || port == null) {
|
||||||
return this.setInfo(
|
return this.setInfo(
|
||||||
'Connection problem',
|
'Connection problem',
|
||||||
'Camera Runner WebSocket IP or port is not configured.'
|
'Camera Runner WebSocket IP or port is not configured.',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +201,7 @@ export class CameraRunner {
|
|||||||
this.setInfo(
|
this.setInfo(
|
||||||
'Disconnected',
|
'Disconnected',
|
||||||
'Camera Runner was disconnected unexpectedly',
|
'Camera Runner was disconnected unexpectedly',
|
||||||
'DISCONNECTED'
|
'DISCONNECTED',
|
||||||
);
|
);
|
||||||
this.reconnect();
|
this.reconnect();
|
||||||
});
|
});
|
||||||
@@ -210,6 +246,19 @@ interface CameraRunnerStatus {
|
|||||||
|
|
||||||
export type ProcessStatusState = 'RUNNING' | 'STOPPED' | 'STARTING' | 'PROBLEM';
|
export type ProcessStatusState = 'RUNNING' | 'STOPPED' | 'STARTING' | 'PROBLEM';
|
||||||
|
|
||||||
|
export const CameraPCStateColors: Record<ServiceState, State> = {
|
||||||
|
CONNECTED: State.Green,
|
||||||
|
DISCONNECTED: State.Gray,
|
||||||
|
CONNECTING: State.Yellow,
|
||||||
|
FAILED: State.Red,
|
||||||
|
};
|
||||||
|
export const CameraProcessStateColors: Record<ProcessStatusState, State> = {
|
||||||
|
RUNNING: State.Green,
|
||||||
|
STOPPED: State.Gray,
|
||||||
|
STARTING: State.Yellow,
|
||||||
|
PROBLEM: State.Red,
|
||||||
|
};
|
||||||
|
|
||||||
interface ProcessStatusSimple {
|
interface ProcessStatusSimple {
|
||||||
state: ProcessStatusState;
|
state: ProcessStatusState;
|
||||||
message?: string;
|
message?: string;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export class ConfigurationManager {
|
|||||||
if (!configExists) {
|
if (!configExists) {
|
||||||
await writeFile(
|
await writeFile(
|
||||||
configPath,
|
configPath,
|
||||||
JSON.stringify(DefaultConfiguration, null, 4)
|
JSON.stringify(DefaultConfiguration, null, 4),
|
||||||
);
|
);
|
||||||
this._Main.Config = DefaultConfiguration;
|
this._Main.Config = DefaultConfiguration;
|
||||||
console.log(PREFIX, 'Written default configuration');
|
console.log(PREFIX, 'Written default configuration');
|
||||||
@@ -36,7 +36,7 @@ export class ConfigurationManager {
|
|||||||
async validateConfig(config: Config): Promise<Config> {
|
async validateConfig(config: Config): Promise<Config> {
|
||||||
const normalizedConfig: Config = this.normalizeConfig(
|
const normalizedConfig: Config = this.normalizeConfig(
|
||||||
config,
|
config,
|
||||||
DefaultConfiguration
|
DefaultConfiguration,
|
||||||
);
|
);
|
||||||
const hasChanges =
|
const hasChanges =
|
||||||
JSON.stringify(config) !== JSON.stringify(normalizedConfig);
|
JSON.stringify(config) !== JSON.stringify(normalizedConfig);
|
||||||
@@ -47,7 +47,7 @@ export class ConfigurationManager {
|
|||||||
const configPath = join(this._Main.dataPath, 'config.json');
|
const configPath = join(this._Main.dataPath, 'config.json');
|
||||||
await writeFile(
|
await writeFile(
|
||||||
configPath,
|
configPath,
|
||||||
JSON.stringify(normalizedConfig, null, 4)
|
JSON.stringify(normalizedConfig, null, 4),
|
||||||
);
|
);
|
||||||
console.log(PREFIX, 'Configuration updated and saved');
|
console.log(PREFIX, 'Configuration updated and saved');
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ export class ConfigurationManager {
|
|||||||
!Array.isArray(template[0])
|
!Array.isArray(template[0])
|
||||||
) {
|
) {
|
||||||
return current.map((item) =>
|
return current.map((item) =>
|
||||||
this.normalizeConfig(item, template[0])
|
this.normalizeConfig(item, template[0]),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return current;
|
return current;
|
||||||
@@ -89,7 +89,7 @@ export class ConfigurationManager {
|
|||||||
if (template.hasOwnProperty(key)) {
|
if (template.hasOwnProperty(key)) {
|
||||||
result[key] = this.normalizeConfig(
|
result[key] = this.normalizeConfig(
|
||||||
current?.[key],
|
current?.[key],
|
||||||
template[key]
|
template[key],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,6 +130,7 @@ export interface ConfigUnity {
|
|||||||
|
|
||||||
heartbeatInterval: number;
|
heartbeatInterval: number;
|
||||||
calibrationImageInterval: number;
|
calibrationImageInterval: number;
|
||||||
|
launchOnStartup: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ConfigCameraRunner {
|
export interface ConfigCameraRunner {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ export const DefaultConfiguration: Config = {
|
|||||||
|
|
||||||
heartbeatInterval: 1000,
|
heartbeatInterval: 1000,
|
||||||
calibrationImageInterval: 2000,
|
calibrationImageInterval: 2000,
|
||||||
|
launchOnStartup: true,
|
||||||
},
|
},
|
||||||
cameraRunner: {
|
cameraRunner: {
|
||||||
webSocket: {
|
webSocket: {
|
||||||
|
|||||||
113
src/Configuration/Timer.ts
Normal file
113
src/Configuration/Timer.ts
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
import { join } from 'path';
|
||||||
|
import { Main } from '../Main';
|
||||||
|
import { pathExists, readJSON, writeFile, writeJSON } from 'fs-extra';
|
||||||
|
import { StartOrigin } from '../Unity/UnityRunner';
|
||||||
|
|
||||||
|
const PREFIX = '[Main]';
|
||||||
|
export class Timer {
|
||||||
|
private _Main: Main;
|
||||||
|
|
||||||
|
private configPath: string;
|
||||||
|
|
||||||
|
private start: {
|
||||||
|
hour: number;
|
||||||
|
minute: number;
|
||||||
|
} = {
|
||||||
|
hour: null,
|
||||||
|
minute: null,
|
||||||
|
};
|
||||||
|
private end: {
|
||||||
|
hour: number;
|
||||||
|
minute: number;
|
||||||
|
} = {
|
||||||
|
hour: null,
|
||||||
|
minute: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
constructor(Main: Main) {
|
||||||
|
this._Main = Main;
|
||||||
|
this.configPath = join(this._Main.dataPath, 'timer.json');
|
||||||
|
}
|
||||||
|
|
||||||
|
getState() {
|
||||||
|
return {
|
||||||
|
start: this.start,
|
||||||
|
end: this.end,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
setStart(data: { hour: number; minute: number }) {
|
||||||
|
this.start = data;
|
||||||
|
this._Main.WebServer.socket.emit('timer', this.getState());
|
||||||
|
this.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
setEnd(data: { hour: number; minute: number }) {
|
||||||
|
this.end = data;
|
||||||
|
this._Main.WebServer.socket.emit('timer', this.getState());
|
||||||
|
this.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
startClock() {
|
||||||
|
setInterval(() => {
|
||||||
|
const startTime = new Date();
|
||||||
|
startTime.setHours(this.start.hour, this.start.minute, 0, 0);
|
||||||
|
|
||||||
|
const endTime = new Date();
|
||||||
|
endTime.setHours(this.end.hour, this.end.minute, 0, 0);
|
||||||
|
|
||||||
|
const shouldBeStarted =
|
||||||
|
startTime <= new Date() && endTime > new Date();
|
||||||
|
|
||||||
|
if (shouldBeStarted) {
|
||||||
|
if (
|
||||||
|
this._Main.UnityRunner.state !== 'RUNNING' &&
|
||||||
|
this._Main.UnityRunner.state !== 'STARTING'
|
||||||
|
) {
|
||||||
|
console.log(PREFIX, 'Starting Unity');
|
||||||
|
this._Main.UnityRunner.start(StartOrigin.Timer);
|
||||||
|
} else if (
|
||||||
|
this._Main.UnityRunner.startOrigin !== StartOrigin.Timer
|
||||||
|
) {
|
||||||
|
console.log(PREFIX, 'Already running');
|
||||||
|
this._Main.UnityRunner.startOrigin = StartOrigin.Timer;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (
|
||||||
|
this._Main.UnityRunner.state === 'RUNNING' &&
|
||||||
|
this._Main.UnityRunner.startOrigin === StartOrigin.Timer
|
||||||
|
) {
|
||||||
|
console.log(PREFIX, 'Stopping Unity');
|
||||||
|
this._Main.UnityRunner.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
async load() {
|
||||||
|
console.log(PREFIX, 'Loading timer configuration...');
|
||||||
|
const exists = await pathExists(this.configPath);
|
||||||
|
if (!exists) {
|
||||||
|
this.save();
|
||||||
|
return this.startClock();
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await readJSON(this.configPath);
|
||||||
|
this.start = data.start;
|
||||||
|
this.end = data.end;
|
||||||
|
|
||||||
|
this.startClock();
|
||||||
|
}
|
||||||
|
|
||||||
|
private _save: NodeJS.Timeout;
|
||||||
|
async save() {
|
||||||
|
if (this._save) clearTimeout(this._save);
|
||||||
|
|
||||||
|
this._save = setTimeout(async () => {
|
||||||
|
writeFile(
|
||||||
|
this.configPath,
|
||||||
|
JSON.stringify({ start: this.start, end: this.end }, null, 4),
|
||||||
|
);
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
30
src/Main.ts
30
src/Main.ts
@@ -6,20 +6,26 @@ import {
|
|||||||
ConfigurationManager,
|
ConfigurationManager,
|
||||||
} from './Configuration/ConfigurationManager';
|
} from './Configuration/ConfigurationManager';
|
||||||
import { CameraRunner } from './CameraRunner';
|
import { CameraRunner } from './CameraRunner';
|
||||||
import { UnityRunner } from './Unity/UnityRunner';
|
import { StartOrigin, UnityRunner } from './Unity/UnityRunner';
|
||||||
import { UnityWebSocket } from './Unity/UnityWebSocket';
|
import { UnityWebSocket } from './Unity/UnityWebSocket';
|
||||||
import { TwilioHandler } from './Twilio';
|
import { TwilioHandler } from './Twilio';
|
||||||
import { delay } from './Utils';
|
import { delay } from './Utils';
|
||||||
import * as ping from 'ping';
|
import * as ping from 'ping';
|
||||||
import { shutdown } from './Shutdown';
|
import { shutdown } from './Shutdown';
|
||||||
|
import { Timer } from './Configuration/Timer';
|
||||||
|
import { Status } from './Status';
|
||||||
|
import { AudioChecker } from './Audio';
|
||||||
|
|
||||||
const PREFIX = '[Main]';
|
const PREFIX = '[Main]';
|
||||||
export class Main {
|
export class Main {
|
||||||
dataPath = join(homedir(), 'MorphixProductions', 'NTSHControl');
|
dataPath = join(homedir(), 'MorphixProductions', 'NTSHControl');
|
||||||
|
|
||||||
ConfigurationManager = new ConfigurationManager(this);
|
ConfigurationManager = new ConfigurationManager(this);
|
||||||
|
Timer = new Timer(this);
|
||||||
|
Status = new Status(this);
|
||||||
WebServer = new WebServer(this);
|
WebServer = new WebServer(this);
|
||||||
Twilio = new TwilioHandler(this);
|
Twilio = new TwilioHandler(this);
|
||||||
|
Audio = new AudioChecker(this);
|
||||||
|
|
||||||
CameraRunner = new CameraRunner(this);
|
CameraRunner = new CameraRunner(this);
|
||||||
UnityRunner = new UnityRunner(this);
|
UnityRunner = new UnityRunner(this);
|
||||||
@@ -35,11 +41,23 @@ export class Main {
|
|||||||
await this.WebServer.listen();
|
await this.WebServer.listen();
|
||||||
await this.Twilio.load();
|
await this.Twilio.load();
|
||||||
|
|
||||||
|
await this.Audio.waitForDevice();
|
||||||
|
|
||||||
await this.CameraRunner.connect();
|
await this.CameraRunner.connect();
|
||||||
|
|
||||||
|
await this.Timer.load();
|
||||||
|
|
||||||
|
if ((this.Config.unity.launchOnStartup ?? true) === true)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.UnityRunner.start();
|
this.UnityRunner.start(StartOrigin.Startup);
|
||||||
}, this.Config.unity.executable.startUpDelay ?? 0);
|
}, this.Config.unity.executable.startUpDelay ?? 0);
|
||||||
|
else {
|
||||||
|
this.UnityRunner.setInfo(
|
||||||
|
'Not set to launch on startup. Waiting for timer or manual start...',
|
||||||
|
null,
|
||||||
|
'STOPPED',
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async restart() {
|
async restart() {
|
||||||
@@ -55,11 +73,11 @@ export class Main {
|
|||||||
if (!response.succeed) {
|
if (!response.succeed) {
|
||||||
console.error(
|
console.error(
|
||||||
'Failed to reboot CameraRunner:',
|
'Failed to reboot CameraRunner:',
|
||||||
response.message
|
response.message,
|
||||||
);
|
);
|
||||||
this.Twilio.sendError(
|
this.Twilio.sendError(
|
||||||
'CameraRunner',
|
'CameraRunner',
|
||||||
`Failed to reboot CameraRunner: ${response.message}`
|
`Failed to reboot CameraRunner: ${response.message}`,
|
||||||
);
|
);
|
||||||
resolve(false);
|
resolve(false);
|
||||||
} else {
|
} else {
|
||||||
@@ -67,7 +85,7 @@ export class Main {
|
|||||||
this.Twilio.sendError('CameraRunner', null);
|
this.Twilio.sendError('CameraRunner', null);
|
||||||
resolve(true);
|
resolve(true);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
if (!succeed) return;
|
if (!succeed) return;
|
||||||
@@ -75,7 +93,7 @@ export class Main {
|
|||||||
await delay(5000);
|
await delay(5000);
|
||||||
|
|
||||||
console.log('Starting UnityRunner...');
|
console.log('Starting UnityRunner...');
|
||||||
await this.UnityRunner.start();
|
await this.UnityRunner.start(this.UnityRunner.startOrigin);
|
||||||
|
|
||||||
console.log('Restart complete.');
|
console.log('Restart complete.');
|
||||||
}
|
}
|
||||||
|
|||||||
156
src/Status.ts
Normal file
156
src/Status.ts
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
import { Main } from './Main';
|
||||||
|
import { StartOrigin } from './Unity/UnityRunner';
|
||||||
|
import { delay } from './Utils';
|
||||||
|
|
||||||
|
export class Status {
|
||||||
|
private _Main: Main;
|
||||||
|
|
||||||
|
states: Map<StatusType, StatusEntry> = new Map();
|
||||||
|
|
||||||
|
constructor(Main: Main) {
|
||||||
|
this._Main = Main;
|
||||||
|
|
||||||
|
this.ensure();
|
||||||
|
this.startClock();
|
||||||
|
}
|
||||||
|
|
||||||
|
update(
|
||||||
|
type: StatusType,
|
||||||
|
state: State,
|
||||||
|
message: string,
|
||||||
|
buttons?: { reboot?: boolean; start?: boolean; stop?: boolean },
|
||||||
|
) {
|
||||||
|
this.states.set(type, { state, message, buttons });
|
||||||
|
|
||||||
|
this._Main.WebServer.socket.emit('status', this.getState());
|
||||||
|
}
|
||||||
|
|
||||||
|
reboot(type: StatusType) {
|
||||||
|
switch (type) {
|
||||||
|
case StatusType.CameraPC: {
|
||||||
|
this._Main.CameraRunner.sendCommand(
|
||||||
|
'reboot',
|
||||||
|
(response: { succeed: boolean; message?: string }) => {
|
||||||
|
console.log('CameraRunner reboot response:', response);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
case StatusType.CameraProcess: {
|
||||||
|
this._Main.CameraRunner.sendCommand(
|
||||||
|
'restart',
|
||||||
|
(response: { succeed: boolean; message?: string }) => {
|
||||||
|
console.log('CameraRunner restart response:', response);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
case StatusType.CameraUnityStream: {
|
||||||
|
this._Main.CameraRunner.sendCommand(
|
||||||
|
'restart',
|
||||||
|
(response: { succeed: boolean; message?: string }) => {
|
||||||
|
console.log('CameraRunner restart response:', response);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
this._Main.UnityRunner.restart(StartOrigin.Manual);
|
||||||
|
}
|
||||||
|
case StatusType.UnityBuild: {
|
||||||
|
this._Main.UnityRunner.restart(StartOrigin.Manual);
|
||||||
|
}
|
||||||
|
case StatusType.ReplayFunction: {
|
||||||
|
console.log(
|
||||||
|
'ReplayFunction reboot requested. Not implemented.',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
start(type: StatusType) {
|
||||||
|
switch (type) {
|
||||||
|
case StatusType.UnityBuild: {
|
||||||
|
this._Main.UnityRunner.requestStart(StartOrigin.Manual);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stop(type: StatusType) {
|
||||||
|
switch (type) {
|
||||||
|
case StatusType.UnityBuild: {
|
||||||
|
this._Main.UnityRunner.requestStop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getState() {
|
||||||
|
const state = {};
|
||||||
|
this.states.forEach((value, key) => {
|
||||||
|
state[key] = value;
|
||||||
|
});
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
private startClock() {
|
||||||
|
let hadInvalidLastRound: boolean = false;
|
||||||
|
setInterval(() => {
|
||||||
|
let hasInvalid = false;
|
||||||
|
this.states.forEach((state, key) => {
|
||||||
|
if (state.state === State.Red) hasInvalid = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (hasInvalid && !hadInvalidLastRound) {
|
||||||
|
hadInvalidLastRound = true;
|
||||||
|
console.warn(
|
||||||
|
'One ore more status entries are invalid, waiting to see if they recover...',
|
||||||
|
);
|
||||||
|
} else if (hasInvalid && hadInvalidLastRound) {
|
||||||
|
console.error(
|
||||||
|
'One ore more status entries are still invalid after 5 seconds, restarting system.',
|
||||||
|
);
|
||||||
|
this._Main.Twilio.sendError(
|
||||||
|
'Status',
|
||||||
|
'One ore more status entries are still invalid after 5 seconds, restarting system.',
|
||||||
|
);
|
||||||
|
this._Main.restart();
|
||||||
|
} else {
|
||||||
|
this._Main.Twilio.sendError('Status', null);
|
||||||
|
hadInvalidLastRound = false;
|
||||||
|
}
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ensure() {
|
||||||
|
for (const type in StatusType) {
|
||||||
|
if (!this.states.has(StatusType[type]))
|
||||||
|
this.states.set(StatusType[type], {
|
||||||
|
state: State.Gray,
|
||||||
|
message: 'Loading...',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private doLog() {
|
||||||
|
console.clear();
|
||||||
|
this.states.forEach((state, key) => {
|
||||||
|
console.log(`[${key}] ${state.state} - ${state.message}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface StatusEntry {
|
||||||
|
state: State;
|
||||||
|
message: string;
|
||||||
|
buttons?: { reboot?: boolean; start?: boolean; stop?: boolean };
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum State {
|
||||||
|
Green = 'GREEN',
|
||||||
|
Yellow = 'YELLOW',
|
||||||
|
Red = 'RED',
|
||||||
|
Gray = 'GRAY',
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum StatusType {
|
||||||
|
CameraPC = 'CAMERAPC',
|
||||||
|
CameraProcess = 'CAMERAPROCESS',
|
||||||
|
CameraUnityStream = 'CAMERAUNITYSTREAM',
|
||||||
|
UnityBuild = 'UNITYBUILD',
|
||||||
|
ReplayFunction = 'REPLAYFUNCTION',
|
||||||
|
}
|
||||||
@@ -44,7 +44,7 @@ export class TwilioHandler {
|
|||||||
|
|
||||||
this.client = require('twilio')(
|
this.client = require('twilio')(
|
||||||
this._Main.Config.twilio.accountSid,
|
this._Main.Config.twilio.accountSid,
|
||||||
this._Main.Config.twilio.authToken
|
this._Main.Config.twilio.authToken,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,14 +77,13 @@ export class TwilioHandler {
|
|||||||
console.log(PREFIX, `Sending to Twilio:\n`, errorMessage);
|
console.log(PREFIX, `Sending to Twilio:\n`, errorMessage);
|
||||||
|
|
||||||
const promises = this._Main.Config.twilio.toNumbers.map(
|
const promises = this._Main.Config.twilio.toNumbers.map(
|
||||||
(toNumber) => this.sendMessage(toNumber, errorMessage)
|
(toNumber) => this.sendMessage(toNumber, errorMessage),
|
||||||
);
|
);
|
||||||
await Promise.all(promises);
|
await Promise.all(promises);
|
||||||
}, this._Main.Config.twilio.aggregateTimeout);
|
}, this._Main.Config.twilio.aggregateTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
sendMessage(to: string, message: string) {
|
sendMessage(to: string, message: string) {
|
||||||
return;
|
|
||||||
return new Promise<boolean>((resolve) => {
|
return new Promise<boolean>((resolve) => {
|
||||||
this.client.messages
|
this.client.messages
|
||||||
.create({
|
.create({
|
||||||
@@ -104,4 +103,9 @@ export class TwilioHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type TwilioCategories = 'CameraRunner' | 'UnityRunner' | 'UnityWebSocket';
|
type TwilioCategories =
|
||||||
|
| 'CameraRunner'
|
||||||
|
| 'UnityRunner'
|
||||||
|
| 'UnityWebSocket'
|
||||||
|
| 'Status'
|
||||||
|
| 'Audio';
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import { pathExistsSync } from 'fs-extra';
|
import { pathExistsSync } from 'fs-extra';
|
||||||
import { ChildProcess, exec, spawn } from 'child_process';
|
import { ChildProcess, spawn } from 'child_process';
|
||||||
import { delay } from '../Utils';
|
import { delay } from '../Utils';
|
||||||
import { Main } from '../Main';
|
import { Main } from '../Main';
|
||||||
|
import { ProcessStatusState } from '../CameraRunner';
|
||||||
|
import { StatusType } from '../Status';
|
||||||
|
|
||||||
const PREFIX = '[UnityRunner]';
|
const PREFIX = '[UnityRunner]';
|
||||||
|
|
||||||
@@ -11,6 +13,8 @@ export class UnityRunner {
|
|||||||
private _Main: Main;
|
private _Main: Main;
|
||||||
|
|
||||||
state: UnityRunnerState;
|
state: UnityRunnerState;
|
||||||
|
startOrigin: StartOrigin;
|
||||||
|
|
||||||
message?: string = 'Awaiting startup delay...';
|
message?: string = 'Awaiting startup delay...';
|
||||||
error?: string;
|
error?: string;
|
||||||
|
|
||||||
@@ -34,11 +38,11 @@ export class UnityRunner {
|
|||||||
|
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case 'restart':
|
case 'restart':
|
||||||
return callback(this.requestRestart());
|
return callback(this.requestRestart(StartOrigin.Manual));
|
||||||
case 'stop':
|
case 'stop':
|
||||||
return callback(this.requestStop());
|
return callback(this.requestStop());
|
||||||
case 'start':
|
case 'start':
|
||||||
return callback(this.requestStart());
|
return callback(this.requestStart(StartOrigin.Manual));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,7 +54,10 @@ export class UnityRunner {
|
|||||||
}, 3000);
|
}, 3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
requestRestart(): { succeed: boolean; message?: string } {
|
requestRestart(startOrigin: StartOrigin): {
|
||||||
|
succeed: boolean;
|
||||||
|
message?: string;
|
||||||
|
} {
|
||||||
if (this.state !== 'RUNNING')
|
if (this.state !== 'RUNNING')
|
||||||
return {
|
return {
|
||||||
succeed: false,
|
succeed: false,
|
||||||
@@ -58,7 +65,7 @@ export class UnityRunner {
|
|||||||
'Cannot restart when process is not running. It is probably restarting already.',
|
'Cannot restart when process is not running. It is probably restarting already.',
|
||||||
};
|
};
|
||||||
|
|
||||||
this.restart(true);
|
this.restart(startOrigin, true);
|
||||||
return { succeed: true };
|
return { succeed: true };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,14 +81,17 @@ export class UnityRunner {
|
|||||||
return { succeed: true };
|
return { succeed: true };
|
||||||
}
|
}
|
||||||
|
|
||||||
requestStart(): { succeed: boolean; message?: string } {
|
requestStart(startOrigin: StartOrigin): {
|
||||||
|
succeed: boolean;
|
||||||
|
message?: string;
|
||||||
|
} {
|
||||||
if (this.state !== 'STOPPED')
|
if (this.state !== 'STOPPED')
|
||||||
return {
|
return {
|
||||||
succeed: false,
|
succeed: false,
|
||||||
message: 'Cannot start when process is already running.',
|
message: 'Cannot start when process is already running.',
|
||||||
};
|
};
|
||||||
|
|
||||||
this.start();
|
this.start(startOrigin);
|
||||||
return { succeed: true };
|
return { succeed: true };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,11 +102,21 @@ export class UnityRunner {
|
|||||||
setInfo(
|
setInfo(
|
||||||
message: string,
|
message: string,
|
||||||
error: string,
|
error: string,
|
||||||
state: UnityRunnerState = 'PROBLEM'
|
state: UnityRunnerState = 'PROBLEM',
|
||||||
) {
|
) {
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.error = error;
|
this.error = error;
|
||||||
this.state = state;
|
this.state = state;
|
||||||
|
this._Main.Status.update(
|
||||||
|
StatusType.UnityBuild,
|
||||||
|
UnityBuildStateColors[state],
|
||||||
|
message ?? error ?? '',
|
||||||
|
{
|
||||||
|
reboot: state === 'PROBLEM' || state === 'RUNNING',
|
||||||
|
start: state === 'STOPPED',
|
||||||
|
stop: state === 'RUNNING',
|
||||||
|
},
|
||||||
|
);
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
|
|
||||||
if (error != null) this._Main.Twilio.sendError('UnityRunner', error);
|
if (error != null) this._Main.Twilio.sendError('UnityRunner', error);
|
||||||
@@ -104,7 +124,7 @@ export class UnityRunner {
|
|||||||
this.output.current.push(
|
this.output.current.push(
|
||||||
`[${new Date().toLocaleTimeString('nl-NL')}] [System] [${state}] ${
|
`[${new Date().toLocaleTimeString('nl-NL')}] [System] [${state}] ${
|
||||||
message ?? error
|
message ?? error
|
||||||
}`
|
}`,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (state == 'PROBLEM' || state == 'STOPPED')
|
if (state == 'PROBLEM' || state == 'STOPPED')
|
||||||
@@ -123,7 +143,7 @@ export class UnityRunner {
|
|||||||
this.setInfo(
|
this.setInfo(
|
||||||
'Requested quit through WebSocket...',
|
'Requested quit through WebSocket...',
|
||||||
null,
|
null,
|
||||||
'STARTING'
|
'STARTING',
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
this.process.kill('SIGTERM');
|
this.process.kill('SIGTERM');
|
||||||
@@ -161,7 +181,7 @@ export class UnityRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
restartTriggered: boolean = false;
|
restartTriggered: boolean = false;
|
||||||
async restart(instant: boolean = false) {
|
async restart(origin: StartOrigin, instant: boolean = false) {
|
||||||
if (this.restartTriggered) return;
|
if (this.restartTriggered) return;
|
||||||
this.restartTriggered = true;
|
this.restartTriggered = true;
|
||||||
|
|
||||||
@@ -170,6 +190,7 @@ export class UnityRunner {
|
|||||||
clearInterval(this.statusClock);
|
clearInterval(this.statusClock);
|
||||||
|
|
||||||
this.startTime = -1;
|
this.startTime = -1;
|
||||||
|
this.startOrigin = null;
|
||||||
this.broadcastState();
|
this.broadcastState();
|
||||||
|
|
||||||
if (!instant) await delay(2000);
|
if (!instant) await delay(2000);
|
||||||
@@ -191,10 +212,10 @@ export class UnityRunner {
|
|||||||
|
|
||||||
await delay(10000);
|
await delay(10000);
|
||||||
}
|
}
|
||||||
await this.start();
|
await this.start(this.startOrigin);
|
||||||
}
|
}
|
||||||
|
|
||||||
async start() {
|
async start(origin: StartOrigin) {
|
||||||
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 = [];
|
||||||
@@ -211,7 +232,7 @@ export class UnityRunner {
|
|||||||
if (path == null || !pathExistsSync(path)) {
|
if (path == null || !pathExistsSync(path)) {
|
||||||
this.setInfo(
|
this.setInfo(
|
||||||
'Executable problem',
|
'Executable problem',
|
||||||
`Executable path is not set or does not exist: ${path}`
|
`Executable path is not set or does not exist: ${path}`,
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -221,7 +242,7 @@ export class UnityRunner {
|
|||||||
this.setInfo(
|
this.setInfo(
|
||||||
'Waiting for CameraRunner to connect...',
|
'Waiting for CameraRunner to connect...',
|
||||||
null,
|
null,
|
||||||
'STARTING'
|
'STARTING',
|
||||||
);
|
);
|
||||||
var c = setInterval(() => {
|
var c = setInterval(() => {
|
||||||
if (this._Main.CameraRunner.state !== 'CONNECTED') return;
|
if (this._Main.CameraRunner.state !== 'CONNECTED') return;
|
||||||
@@ -236,7 +257,7 @@ export class UnityRunner {
|
|||||||
this.setInfo(
|
this.setInfo(
|
||||||
'Waiting for CameraRunner process to start...',
|
'Waiting for CameraRunner process to start...',
|
||||||
null,
|
null,
|
||||||
'STARTING'
|
'STARTING',
|
||||||
);
|
);
|
||||||
var c = setInterval(() => {
|
var c = setInterval(() => {
|
||||||
if (
|
if (
|
||||||
@@ -259,7 +280,7 @@ export class UnityRunner {
|
|||||||
this._Main.Config.unity.executable.arguments,
|
this._Main.Config.unity.executable.arguments,
|
||||||
{
|
{
|
||||||
stdio: 'pipe',
|
stdio: 'pipe',
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
this.process.on('exit', (code, signal) => {
|
this.process.on('exit', (code, signal) => {
|
||||||
@@ -267,13 +288,13 @@ 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}`,
|
||||||
'PROBLEM'
|
'PROBLEM',
|
||||||
);
|
);
|
||||||
this.restart();
|
this.restart(this.startOrigin);
|
||||||
});
|
});
|
||||||
this.process.on('error', (err) => {
|
this.process.on('error', (err) => {
|
||||||
this.setInfo('Process error', err.message);
|
this.setInfo('Process error', err.message);
|
||||||
this.restart();
|
this.restart(this.startOrigin);
|
||||||
});
|
});
|
||||||
this.process.stdout?.on('data', (data) => {
|
this.process.stdout?.on('data', (data) => {
|
||||||
const lines = data
|
const lines = data
|
||||||
@@ -283,7 +304,7 @@ export class UnityRunner {
|
|||||||
.filter((line) => line.length > 0);
|
.filter((line) => line.length > 0);
|
||||||
lines.forEach((line) => {
|
lines.forEach((line) => {
|
||||||
const formattedLine = `[${new Date().toLocaleTimeString(
|
const formattedLine = `[${new Date().toLocaleTimeString(
|
||||||
'nl-NL'
|
'nl-NL',
|
||||||
)}] [${fileName}] ${line}`;
|
)}] [${fileName}] ${line}`;
|
||||||
if (LOG_OUTPUT) console.log(PREFIX, formattedLine);
|
if (LOG_OUTPUT) console.log(PREFIX, formattedLine);
|
||||||
this.output.current.push(formattedLine);
|
this.output.current.push(formattedLine);
|
||||||
@@ -297,12 +318,13 @@ export class UnityRunner {
|
|||||||
.filter((line) => line.length > 0);
|
.filter((line) => line.length > 0);
|
||||||
lines.forEach((line) => {
|
lines.forEach((line) => {
|
||||||
const formattedLine = `[${new Date().toLocaleTimeString(
|
const formattedLine = `[${new Date().toLocaleTimeString(
|
||||||
'nl-NL'
|
'nl-NL',
|
||||||
)}] [${fileName}] [ERROR] ${line}`;
|
)}] [${fileName}] [ERROR] ${line}`;
|
||||||
if (LOG_OUTPUT) console.error(PREFIX, formattedLine);
|
if (LOG_OUTPUT) console.error(PREFIX, formattedLine);
|
||||||
this.output.current.push(formattedLine);
|
this.output.current.push(formattedLine);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
this.startOrigin = origin;
|
||||||
this.startStatusClock();
|
this.startStatusClock();
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (
|
if (
|
||||||
@@ -340,4 +362,24 @@ interface UnityRunnerStatus {
|
|||||||
output: { current: string[]; last: string[] };
|
output: { current: string[]; last: string[] };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum State {
|
||||||
|
Green = 'GREEN',
|
||||||
|
Yellow = 'YELLOW',
|
||||||
|
Red = 'RED',
|
||||||
|
Gray = 'GRAY',
|
||||||
|
}
|
||||||
|
|
||||||
|
export const UnityBuildStateColors: Record<ProcessStatusState, State> = {
|
||||||
|
RUNNING: State.Green,
|
||||||
|
STOPPED: State.Gray,
|
||||||
|
STARTING: State.Yellow,
|
||||||
|
PROBLEM: State.Red,
|
||||||
|
};
|
||||||
|
|
||||||
export type UnityRunnerState = 'RUNNING' | 'STOPPED' | 'STARTING' | 'PROBLEM';
|
export type UnityRunnerState = 'RUNNING' | 'STOPPED' | 'STARTING' | 'PROBLEM';
|
||||||
|
|
||||||
|
export enum StartOrigin {
|
||||||
|
Timer = 'TIMER',
|
||||||
|
Manual = 'MANUAL',
|
||||||
|
Startup = 'STARTUP',
|
||||||
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user