Initial commit
This commit is contained in:
113
frontend/views/dashboard/dist/artNet.js
vendored
Normal file
113
frontend/views/dashboard/dist/artNet.js
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
"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.ArtNet = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var ArtNet = /** @class */ (function () {
|
||||
function ArtNet(Main) {
|
||||
this.universesContainer = document.querySelector('.ntsh_artnet-universes');
|
||||
this.stateContainer = document.querySelector('.ntsh_artnet-state');
|
||||
this._Main = Main;
|
||||
this.prepareUniverses();
|
||||
this.setupHandler();
|
||||
}
|
||||
ArtNet.prototype.prepareUniverses = function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, universes;
|
||||
var _this = this;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, fetch('/universes')];
|
||||
case 1:
|
||||
request = _a.sent();
|
||||
return [4 /*yield*/, request.json()];
|
||||
case 2:
|
||||
universes = _a.sent();
|
||||
universes.forEach(function (universe) {
|
||||
var button = new morphux_1.MorphComponent.Button({
|
||||
mode: 'normal',
|
||||
content: String(universe),
|
||||
target: function () {
|
||||
_this.universesContainer
|
||||
.querySelectorAll('.mux_button')
|
||||
.forEach(function (btn) { return btn.classList.remove('ntsh_active'); });
|
||||
button.container.classList.add('ntsh_active');
|
||||
_this.showFrame(universe);
|
||||
},
|
||||
});
|
||||
_this.universesContainer.appendChild(button.container);
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
ArtNet.prototype.showFrame = function (universe) {
|
||||
this.frame = (0, morphux_1.ce)('iframe', null, { src: "/universe/".concat(universe) });
|
||||
this.stateContainer.innerHTML = '';
|
||||
this.stateContainer.appendChild(this.frame);
|
||||
this.currentUniverse = universe;
|
||||
this.setupRefreshClock();
|
||||
};
|
||||
ArtNet.prototype.setupRefreshClock = function () {
|
||||
var _this = this;
|
||||
clearInterval(this.refreshClock);
|
||||
this.refreshClock = setInterval(function () {
|
||||
_this.frame.src = "/universe/".concat(_this.currentUniverse);
|
||||
}, 1000);
|
||||
};
|
||||
ArtNet.prototype.setupHandler = function () {
|
||||
var _this = this;
|
||||
this._Main.TabController.registerListener('artnet', function (visible) {
|
||||
var _a;
|
||||
if (visible) {
|
||||
_this.universesContainer
|
||||
.querySelectorAll('.mux_button')
|
||||
.forEach(function (btn) { return btn.classList.remove('ntsh_active'); });
|
||||
}
|
||||
else {
|
||||
if (((_a = _this.frame) === null || _a === void 0 ? void 0 : _a.parentElement) != null)
|
||||
_this.frame.remove();
|
||||
clearInterval(_this.refreshClock);
|
||||
}
|
||||
});
|
||||
};
|
||||
return ArtNet;
|
||||
}());
|
||||
exports.ArtNet = ArtNet;
|
||||
//# sourceMappingURL=artNet.js.map
|
||||
1
frontend/views/dashboard/dist/artNet.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/artNet.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"artNet.js","sourceRoot":"","sources":["../ts/artNet.ts"],"names":[],"mappings":"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"}
|
||||
37
frontend/views/dashboard/dist/calibration.js
vendored
Normal file
37
frontend/views/dashboard/dist/calibration.js
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Calibration = void 0;
|
||||
var Calibration = /** @class */ (function () {
|
||||
function Calibration(Main) {
|
||||
this.container = document.querySelector('.ntsh_calibration');
|
||||
this.image = this.container.querySelector('img');
|
||||
this.fullscreenButton = this.container.querySelector('.ntsh_calibration-fullscreen');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
Calibration.prototype.startFetchClock = function () {
|
||||
var _this = this;
|
||||
this.image.src = "/calibrationImage?t=".concat(Date.now());
|
||||
this.fetchClock = setInterval(function () {
|
||||
_this.image.src = "/calibrationImage?t=".concat(Date.now());
|
||||
}, 1000);
|
||||
};
|
||||
Calibration.prototype.stopFetchClock = function () {
|
||||
clearInterval(this.fetchClock);
|
||||
};
|
||||
Calibration.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.TabController.registerListener('calibration', function (visible) {
|
||||
if (visible)
|
||||
_this.startFetchClock();
|
||||
else
|
||||
_this.stopFetchClock();
|
||||
});
|
||||
this.fullscreenButton.addEventListener('click', function () {
|
||||
_this.image.requestFullscreen();
|
||||
});
|
||||
};
|
||||
return Calibration;
|
||||
}());
|
||||
exports.Calibration = Calibration;
|
||||
//# sourceMappingURL=calibration.js.map
|
||||
1
frontend/views/dashboard/dist/calibration.js.map
vendored
Normal file
1
frontend/views/dashboard/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;QANtB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACxE,UAAK,GAAqB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9D,qBAAgB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC9D,8BAA8B,CAC9B,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAGD,qCAAe,GAAf;QAAA,iBAKC;QAJA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,8BAAuB,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;YAC7B,KAAI,CAAC,KAAK,CAAC,GAAG,GAAG,8BAAuB,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC;QACtD,CAAC,EAAE,IAAI,CAAC,CAAC;IACV,CAAC;IAED,oCAAc,GAAd;QACC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAEO,uCAAiB,GAAzB;QAAA,iBASC;QARA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAC,OAAO;YAChE,IAAI,OAAO;gBAAE,KAAI,CAAC,eAAe,EAAE,CAAC;;gBAC/B,KAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC/C,KAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,kBAAC;AAAD,CAAC,AArCD,IAqCC;AArCY,kCAAW"}
|
||||
161
frontend/views/dashboard/dist/dashboard.camerarunner copy.js
vendored
Normal file
161
frontend/views/dashboard/dist/dashboard.camerarunner copy.js
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
"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.DashboardCameraRunner = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var utils_1 = require("./utils");
|
||||
var CELCIUS = 'ºC';
|
||||
var DashboardCameraRunner = /** @class */ (function () {
|
||||
function DashboardCameraRunner(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-camerarunner');
|
||||
this.connectionStatus = this.container.querySelector('.ntsh_dashboard-camerarunner-connectionstatus');
|
||||
this.connectionInfo = this.container.querySelector('.ntsh_dashboard-camerarunner-connectioninfo');
|
||||
this.rebootButton = this.container.querySelector('.ntsh_dashboard-camerarunner-reboot');
|
||||
this.processStatus = this.container.querySelector('.ntsh_dashboard-camerarunner-processstatus');
|
||||
this.processInfo = this.container.querySelector('.ntsh_dashboard-camerarunner-processinfo');
|
||||
this.restartButton = this.container.querySelector('.ntsh_dashboard-camerarunner-restart');
|
||||
this.uptimeInfo = this.container.querySelector('.ntsh_dashboard-camerarunner-uptime');
|
||||
this.errorContainer = this.container.querySelector('.ntsh_dashboard-camerarunner-error');
|
||||
this.errorText = this.container.querySelector('.ntsh_dashboard-camerarunner-errortext');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardCameraRunner.prototype.updateState = function (state) {
|
||||
var _a, _b, _c;
|
||||
// ----------- Connection -----------
|
||||
(0, utils_1.setStatusState)(this.connectionStatus, {
|
||||
CONNECTING: 'yellow',
|
||||
CONNECTED: 'green',
|
||||
DISCONNECTED: 'gray',
|
||||
FAILED: 'red',
|
||||
}[state.state]);
|
||||
this.connectionInfo.innerText = (_a = state.message) !== null && _a !== void 0 ? _a : '';
|
||||
// ----------- Process -----------
|
||||
if (state.state != 'CONNECTED') {
|
||||
state.processStatus.state = 'PROBLEM';
|
||||
state.processStatus.message = 'Not connected to CameraRunner';
|
||||
state.processStatus.startTime = -1;
|
||||
this.restartButton.style.display = 'none';
|
||||
this.rebootButton.style.display = 'none';
|
||||
}
|
||||
else {
|
||||
this.rebootButton.style.display = 'flex';
|
||||
if (state.processStatus.state == 'RUNNING')
|
||||
this.restartButton.style.display = 'flex';
|
||||
else
|
||||
this.restartButton.style.display = 'none';
|
||||
}
|
||||
(0, utils_1.setStatusState)(this.processStatus, {
|
||||
RUNNING: 'green',
|
||||
STOPPED: 'gray',
|
||||
STARTING: 'yellow',
|
||||
PROBLEM: 'red',
|
||||
}[state.processStatus.state]);
|
||||
this.processInfo.innerText = (_b = state.processStatus.message) !== null && _b !== void 0 ? _b : '';
|
||||
// ----------- Uptime -----------
|
||||
var uptimeSeconds = state.processStatus.startTime == -1
|
||||
? -1
|
||||
: (Date.now() - state.processStatus.startTime) / 1000;
|
||||
this.uptimeInfo.innerText = (0, utils_1.formatUptime)(uptimeSeconds);
|
||||
// ----------- Error -----------
|
||||
if (((_c = state === null || state === void 0 ? void 0 : state.error) !== null && _c !== void 0 ? _c : '').trim().length > 0) {
|
||||
this.errorText.innerText = state.error;
|
||||
this.errorContainer.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
this._Main.Logs.setCameraLogs(state.processStatus.output.current);
|
||||
};
|
||||
DashboardCameraRunner.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('cameraRunnerState', function (state) {
|
||||
_this.updateState(state);
|
||||
});
|
||||
this.restartButton.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
this.executeCommand('restart', 'Are you sure you want to restart the Camera Runner process?');
|
||||
return [2 /*return*/];
|
||||
});
|
||||
}); });
|
||||
this.rebootButton.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
this.executeCommand('reboot', 'Are you sure you want to reboot the Camera Runner machine?');
|
||||
return [2 /*return*/];
|
||||
});
|
||||
}); });
|
||||
};
|
||||
DashboardCameraRunner.prototype.executeCommand = function (command, message) {
|
||||
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*/];
|
||||
morphux_1.MorphFeature.Loader({
|
||||
active: true,
|
||||
message: "Requesting Camera Runner ".concat(command, "..."),
|
||||
});
|
||||
this._Main.socket.emit('cameraRunner', 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: "Camera Runner is ".concat(command, "ing..."),
|
||||
});
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
return DashboardCameraRunner;
|
||||
}());
|
||||
exports.DashboardCameraRunner = DashboardCameraRunner;
|
||||
//# sourceMappingURL=dashboard.camerarunner%20copy.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.camerarunner copy.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.camerarunner copy.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.camerarunner copy.js","sourceRoot":"","sources":["../ts/dashboard.camerarunner copy.ts"],"names":[],"mappings":"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"}
|
||||
166
frontend/views/dashboard/dist/dashboard.camerarunner.js
vendored
Normal file
166
frontend/views/dashboard/dist/dashboard.camerarunner.js
vendored
Normal file
@@ -0,0 +1,166 @@
|
||||
"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.DashboardCameraRunner = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var utils_1 = require("./utils");
|
||||
var CELCIUS = 'ºC';
|
||||
var DashboardCameraRunner = /** @class */ (function () {
|
||||
function DashboardCameraRunner(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-camerarunner');
|
||||
this.connectionStatus = this.container.querySelector('.ntsh_dashboard-camerarunner-connectionstatus');
|
||||
this.connectionInfo = this.container.querySelector('.ntsh_dashboard-camerarunner-connectioninfo');
|
||||
this.rebootButton = this.container.querySelector('.ntsh_dashboard-camerarunner-reboot');
|
||||
this.processStatus = this.container.querySelector('.ntsh_dashboard-camerarunner-processstatus');
|
||||
this.processInfo = this.container.querySelector('.ntsh_dashboard-camerarunner-processinfo');
|
||||
this.restartButton = this.container.querySelector('.ntsh_dashboard-camerarunner-restart');
|
||||
this.uptimeInfo = this.container.querySelector('.ntsh_dashboard-camerarunner-uptime');
|
||||
this.errorContainer = this.container.querySelector('.ntsh_dashboard-camerarunner-error');
|
||||
this.errorText = this.container.querySelector('.ntsh_dashboard-camerarunner-errortext');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardCameraRunner.prototype.updateState = function (state) {
|
||||
var _a, _b, _c, _d, _e;
|
||||
// ----------- Connection -----------
|
||||
(0, utils_1.setStatusState)(this.connectionStatus, {
|
||||
CONNECTING: 'yellow',
|
||||
CONNECTED: 'green',
|
||||
DISCONNECTED: 'red',
|
||||
FAILED: 'red',
|
||||
}[state.state]);
|
||||
this.connectionInfo.innerText = (_a = state.message) !== null && _a !== void 0 ? _a : '';
|
||||
// ----------- Process -----------
|
||||
if (state.state != 'CONNECTED') {
|
||||
state.processStatus.state = 'STOPPED';
|
||||
state.processStatus.message = 'Not connected';
|
||||
state.processStatus.startTime = -1;
|
||||
this.restartButton.style.display = 'none';
|
||||
this.rebootButton.style.display = 'none';
|
||||
}
|
||||
else {
|
||||
this.rebootButton.style.display = 'flex';
|
||||
if (state.processStatus.state == 'RUNNING')
|
||||
this.restartButton.style.display = 'flex';
|
||||
else
|
||||
this.restartButton.style.display = 'none';
|
||||
}
|
||||
(0, utils_1.setStatusState)(this.processStatus, {
|
||||
RUNNING: 'green',
|
||||
STOPPED: 'gray',
|
||||
STARTING: 'yellow',
|
||||
PROBLEM: 'red',
|
||||
}[state.processStatus.state]);
|
||||
this.processInfo.innerText = (_b = state.processStatus.message) !== null && _b !== void 0 ? _b : '';
|
||||
// ----------- Uptime -----------
|
||||
var uptimeSeconds = state.processStatus.startTime == -1
|
||||
? -1
|
||||
: (Date.now() - state.processStatus.startTime) / 1000;
|
||||
this.uptimeInfo.innerText = (0, utils_1.formatUptime)(uptimeSeconds);
|
||||
// ----------- Error -----------
|
||||
var errors = [];
|
||||
if (((_c = state === null || state === void 0 ? void 0 : state.error) !== null && _c !== void 0 ? _c : '').trim().length > 0)
|
||||
errors.push(state.error);
|
||||
if (((_e = (_d = state === null || state === void 0 ? void 0 : state.processStatus) === null || _d === void 0 ? void 0 : _d.error) !== null && _e !== void 0 ? _e : '').trim().length > 0)
|
||||
errors.push(state.processStatus.error);
|
||||
if (errors.length > 0) {
|
||||
this.errorText.innerText = errors.join('\n');
|
||||
this.errorContainer.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
this._Main.Logs.setCameraLogs(state.processStatus.output.current);
|
||||
};
|
||||
DashboardCameraRunner.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('cameraRunnerState', function (state) {
|
||||
_this.updateState(state);
|
||||
});
|
||||
this.restartButton.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
this.executeCommand('restart', 'Are you sure you want to restart the Camera Runner process?');
|
||||
return [2 /*return*/];
|
||||
});
|
||||
}); });
|
||||
this.rebootButton.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
this.executeCommand('reboot', 'Are you sure you want to reboot the Camera Runner machine?');
|
||||
return [2 /*return*/];
|
||||
});
|
||||
}); });
|
||||
};
|
||||
DashboardCameraRunner.prototype.executeCommand = function (command, message) {
|
||||
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*/];
|
||||
morphux_1.MorphFeature.Loader({
|
||||
active: true,
|
||||
message: "Requesting Camera Runner ".concat(command, "..."),
|
||||
});
|
||||
this._Main.socket.emit('cameraRunner', 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: "Camera Runner is ".concat(command, "ing..."),
|
||||
});
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
return DashboardCameraRunner;
|
||||
}());
|
||||
exports.DashboardCameraRunner = DashboardCameraRunner;
|
||||
//# sourceMappingURL=dashboard.camerarunner.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.camerarunner.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.camerarunner.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.camerarunner.js","sourceRoot":"","sources":["../ts/dashboard.camerarunner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAuC;AAEvC,iCAKiB;AAEjB,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB;IAsCC,+BAAY,IAAU;QAnCtB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CACjD,8BAA8B,CAC9B,CAAC;QAEF,qBAAgB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC9D,+CAA+C,CAC/C,CAAC;QACF,mBAAc,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC5D,6CAA6C,CAC7C,CAAC;QACF,iBAAY,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC1D,qCAAqC,CACrC,CAAC;QAEF,kBAAa,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC3D,4CAA4C,CAC5C,CAAC;QACF,gBAAW,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACzD,0CAA0C,CAC1C,CAAC;QACF,kBAAa,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC3D,sCAAsC,CACtC,CAAC;QAEF,eAAU,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACxD,qCAAqC,CACrC,CAAC;QAEF,mBAAc,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC5D,oCAAoC,CACpC,CAAC;QACF,cAAS,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACvD,wCAAwC,CACxC,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,2CAAW,GAAX,UAAY,KAAyB;;QACpC,qCAAqC;QACrC,IAAA,sBAAc,EACb,IAAI,CAAC,gBAAgB,EACrB;YACC,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,OAAO;YAClB,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,KAAK;SACb,CAAC,KAAK,CAAC,KAAK,CAAe,CAC5B,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAA,KAAK,CAAC,OAAO,mCAAI,EAAE,CAAC;QAEpD,kCAAkC;QAClC,IAAI,KAAK,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC;YACtC,KAAK,CAAC,aAAa,CAAC,OAAO,GAAG,eAAe,CAAC;YAC9C,KAAK,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAEnC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC1C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAEzC,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,SAAS;gBACzC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;;gBACtC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAChD,CAAC;QAED,IAAA,sBAAc,EACb,IAAI,CAAC,aAAa,EAClB;YACC,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,KAAK;SACd,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAe,CAC1C,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,MAAA,KAAK,CAAC,aAAa,CAAC,OAAO,mCAAI,EAAE,CAAC;QAE/D,iCAAiC;QACjC,IAAM,aAAa,GAClB,KAAK,CAAC,aAAa,CAAC,SAAS,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAA,oBAAY,EAAC,aAAa,CAAC,CAAC;QAExD,gCAAgC;QAChC,IAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrE,IAAI,CAAC,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,0CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,iDAAiB,GAAjB;QAAA,iBAqBC;QApBA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACnB,mBAAmB,EACnB,UAAC,KAAyB;YACzB,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CACD,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE;;gBAC5C,IAAI,CAAC,cAAc,CAClB,SAAS,EACT,6DAA6D,CAC7D,CAAC;;;aACF,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE;;gBAC3C,IAAI,CAAC,cAAc,CAClB,QAAQ,EACR,4DAA4D,CAC5D,CAAC;;;aACF,CAAC,CAAC;IACJ,CAAC;IAEa,8CAAc,GAA5B,UAA6B,OAAe,EAAE,OAAe;;;;;4BAC1C,qBAAM,sBAAY,CAAC,OAAO,CAAC;4BAC5C,KAAK,EAAE,eAAe;4BACtB,OAAO,SAAA;yBACP,CAAC,EAAA;;wBAHI,SAAS,GAAG,SAGhB;wBACF,IAAI,CAAC,SAAS;4BAAE,sBAAO;wBAEvB,sBAAY,CAAC,MAAM,CAAC;4BACnB,MAAM,EAAE,IAAI;4BACZ,OAAO,EAAE,mCAA4B,OAAO,QAAK;yBACjD,CAAC,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACrB,cAAc,EACd,OAAO,EACP,UAAC,QAAgD;4BAChD,sBAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;4BAEvC,IAAI,CAAC,QAAQ,CAAC,OAAO;gCACpB,OAAO,sBAAY,CAAC,KAAK,CAAC;oCACzB,KAAK,EAAE,OAAO;oCACd,OAAO,EAAE,QAAQ,CAAC,OAAO;iCACzB,CAAC,CAAC;4BAEJ,sBAAY,CAAC,YAAY,CAAC;gCACzB,KAAK,EAAE,SAAS;gCAChB,OAAO,EAAE,2BAAoB,OAAO,WAAQ;6BAC5C,CAAC,CAAC;wBACJ,CAAC,CACD,CAAC;;;;;KACF;IACF,4BAAC;AAAD,CAAC,AAhKD,IAgKC;AAhKY,sDAAqB"}
|
||||
41
frontend/views/dashboard/dist/dashboard.ledcontroller.js
vendored
Normal file
41
frontend/views/dashboard/dist/dashboard.ledcontroller.js
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.DashboardCameraRunner = void 0;
|
||||
var CELCIUS = 'ºC';
|
||||
var DashboardCameraRunner = /** @class */ (function () {
|
||||
function DashboardCameraRunner(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-camerarunner');
|
||||
this.connectionStatus = this.container.querySelector('.ntsh_dashboard-camerarunner-connectedstatus');
|
||||
this.connectionInfo = this.container.querySelector('.ntsh_dashboard-camerarunner-connectedinfo');
|
||||
this.processStatus = this.container.querySelector('.ntsh_dashboard-camerarunner-processstatus');
|
||||
this.processInfo = this.container.querySelector('.ntsh_dashboard-camerarunner-processinfo');
|
||||
this.restartButton = this.container.querySelector('.ntsh_dashboard-camerarunner-restart');
|
||||
this.uptimeInfo = this.container.querySelector('.ntsh_dashboard-camerarunner-uptimeinfo');
|
||||
this.errorContainer = this.container.querySelector('.ntsh_dashboard-camerarunner-error');
|
||||
this.errorText = this.container.querySelector('.ntsh_dashboard-camerarunner-errortext');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardCameraRunner.prototype.updateState = function (state) {
|
||||
var _a;
|
||||
console.log(state);
|
||||
// ----------- Error -----------
|
||||
if (((_a = state === null || state === void 0 ? void 0 : state.error) !== null && _a !== void 0 ? _a : '').trim().length > 0) {
|
||||
this.errorText.innerText = state.error;
|
||||
this.errorContainer.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
};
|
||||
DashboardCameraRunner.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('ledControllerState', function (state) {
|
||||
_this.updateState(state);
|
||||
});
|
||||
};
|
||||
return DashboardCameraRunner;
|
||||
}());
|
||||
exports.DashboardCameraRunner = DashboardCameraRunner;
|
||||
//# sourceMappingURL=dashboard.ledcontroller.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.ledcontroller.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.ledcontroller.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.ledcontroller.js","sourceRoot":"","sources":["../ts/dashboard.ledcontroller.ts"],"names":[],"mappings":";;;AAIA,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB;IAmCC,+BAAY,IAAU;QAhCtB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CACjD,8BAA8B,CAC9B,CAAC;QAEF,qBAAgB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC9D,8CAA8C,CAC9C,CAAC;QACF,mBAAc,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC5D,4CAA4C,CAC5C,CAAC;QAEF,kBAAa,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC3D,4CAA4C,CAC5C,CAAC;QACF,gBAAW,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACzD,0CAA0C,CAC1C,CAAC;QACF,kBAAa,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC3D,sCAAsC,CACtC,CAAC;QAEF,eAAU,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACxD,yCAAyC,CACzC,CAAC;QAEF,mBAAc,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC5D,oCAAoC,CACpC,CAAC;QACF,cAAS,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACvD,wCAAwC,CACxC,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,2CAAW,GAAX,UAAY,KAAyB;;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,gCAAgC;QAChC,IAAI,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;QAC/B,CAAC;IACF,CAAC;IAED,iDAAiB,GAAjB;QAAA,iBAOC;QANA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACnB,oBAAoB,EACpB,UAAC,KAAyB;YACzB,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CACD,CAAC;IACH,CAAC;IACF,4BAAC;AAAD,CAAC,AA7DD,IA6DC;AA7DY,sDAAqB"}
|
||||
50
frontend/views/dashboard/dist/dashboard.mmwave copy.js
vendored
Normal file
50
frontend/views/dashboard/dist/dashboard.mmwave copy.js
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.DashboardMMWave = void 0;
|
||||
var utils_1 = require("./utils");
|
||||
var CELCIUS = 'ºC';
|
||||
var DashboardMMWave = /** @class */ (function () {
|
||||
function DashboardMMWave(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-mmwave');
|
||||
this.standardPortStatus = this.container.querySelector('.ntsh_dashboard-mmwave-standardstatus');
|
||||
this.standardPortInfo = this.container.querySelector('.ntsh_dashboard-mmwave-standardinfo');
|
||||
this.enhancedPortStatus = this.container.querySelector('.ntsh_dashboard-mmwave-enhancedstatus');
|
||||
this.enhancedPortInfo = this.container.querySelector('.ntsh_dashboard-mmwave-enhancedinfo');
|
||||
this.framesPerSecond = this.container.querySelector('.ntsh_dashboard-mmwave-framespersecond');
|
||||
this.trackedPersons = this.container.querySelector('.ntsh_dashboard-mmwave-trackedpersons');
|
||||
this.personsInBounds = this.container.querySelector('.ntsh_dashboard-mmwave-personsinbounds');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardMMWave.prototype.updateState = function (state) {
|
||||
if (state == null)
|
||||
return;
|
||||
// ----------- Standard Port -----------
|
||||
(0, utils_1.setStatusState)(this.standardPortStatus, state.ports.standard.connected == 'connecting'
|
||||
? 'warning'
|
||||
: state.ports.standard.connected
|
||||
? 'ok'
|
||||
: 'error');
|
||||
this.standardPortInfo.innerText = state.ports.standard.path;
|
||||
// ----------- Enhanced Port -----------
|
||||
(0, utils_1.setStatusState)(this.enhancedPortStatus, state.ports.enhanced.connected == 'connecting'
|
||||
? 'warning'
|
||||
: state.ports.enhanced.connected
|
||||
? 'ok'
|
||||
: 'error');
|
||||
this.enhancedPortInfo.innerText = state.ports.enhanced.path;
|
||||
// ----------- Statistics -----------
|
||||
this.framesPerSecond.innerText = state.framesPerSecond.toString();
|
||||
this.trackedPersons.innerText = state.trackedPersons.toString();
|
||||
this.personsInBounds.innerText = state.personsInBounds.toString();
|
||||
};
|
||||
DashboardMMWave.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('mmWaveState', function (state) {
|
||||
_this.updateState(state);
|
||||
});
|
||||
};
|
||||
return DashboardMMWave;
|
||||
}());
|
||||
exports.DashboardMMWave = DashboardMMWave;
|
||||
//# sourceMappingURL=dashboard.mmwave%20copy.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.mmwave copy.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.mmwave copy.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.mmwave copy.js","sourceRoot":"","sources":["../ts/dashboard.mmwave copy.ts"],"names":[],"mappings":";;;AAEA,iCAAyC;AAEzC,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB;IA+BC,yBAAY,IAAU;QA5BtB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CACjD,wBAAwB,CACxB,CAAC;QAEF,uBAAkB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAChE,uCAAuC,CACvC,CAAC;QACF,qBAAgB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC9D,qCAAqC,CACrC,CAAC;QAEF,uBAAkB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAChE,uCAAuC,CACvC,CAAC;QACF,qBAAgB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC9D,qCAAqC,CACrC,CAAC;QAEF,oBAAe,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC7D,wCAAwC,CACxC,CAAC;QACF,mBAAc,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC5D,uCAAuC,CACvC,CAAC;QACF,oBAAe,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC7D,wCAAwC,CACxC,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,qCAAW,GAAX,UAAY,KAAkB;QAC7B,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO;QAE1B,wCAAwC;QACxC,IAAA,sBAAc,EACb,IAAI,CAAC,kBAAkB,EACvB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,YAAY;YAC7C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS;gBAChC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,OAAO,CACV,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE5D,wCAAwC;QACxC,IAAA,sBAAc,EACb,IAAI,CAAC,kBAAkB,EACvB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,YAAY;YAC7C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS;gBAChC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,OAAO,CACV,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE5D,qCAAqC;QACrC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAClE,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAChE,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;IACnE,CAAC;IAED,2CAAiB,GAAjB;QAAA,iBAIC;QAHA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,UAAC,KAAkB;YACtD,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,sBAAC;AAAD,CAAC,AAzED,IAyEC;AAzEY,0CAAe"}
|
||||
60
frontend/views/dashboard/dist/dashboard.mmwave.js
vendored
Normal file
60
frontend/views/dashboard/dist/dashboard.mmwave.js
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.DashboardMMWave = void 0;
|
||||
var utils_1 = require("./utils");
|
||||
var CELCIUS = 'ºC';
|
||||
var DashboardMMWave = /** @class */ (function () {
|
||||
function DashboardMMWave(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-mmwave');
|
||||
this.standardPortStatus = this.container.querySelector('.ntsh_dashboard-mmwave-standardstatus');
|
||||
this.standardPortInfo = this.container.querySelector('.ntsh_dashboard-mmwave-standardinfo');
|
||||
this.enhancedPortStatus = this.container.querySelector('.ntsh_dashboard-mmwave-enhancedstatus');
|
||||
this.enhancedPortInfo = this.container.querySelector('.ntsh_dashboard-mmwave-enhancedinfo');
|
||||
this.framesPerSecond = this.container.querySelector('.ntsh_dashboard-mmwave-framespersecond');
|
||||
this.trackedPersons = this.container.querySelector('.ntsh_dashboard-mmwave-trackedpersons');
|
||||
this.personsInBounds = this.container.querySelector('.ntsh_dashboard-mmwave-personsinbounds');
|
||||
this.errorContainer = this.container.querySelector('.ntsh_dashboard-mmwave-error');
|
||||
this.errorText = this.container.querySelector('.ntsh_dashboard-mmwave-errortext');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardMMWave.prototype.updateState = function (state) {
|
||||
var _a;
|
||||
if (state == null)
|
||||
return;
|
||||
var statusColors = {
|
||||
CONNECTED: 'green',
|
||||
DISCONNECTED: 'gray',
|
||||
CONNECTING: 'yellow',
|
||||
PROBLEM: 'red',
|
||||
};
|
||||
// ----------- Standard Port -----------
|
||||
(0, utils_1.setStatusState)(this.standardPortStatus, statusColors[state.ports.standard.connected]);
|
||||
this.standardPortInfo.innerText = state.ports.standard.info;
|
||||
// ----------- Enhanced Port -----------
|
||||
(0, utils_1.setStatusState)(this.enhancedPortStatus, statusColors[state.ports.enhanced.connected]);
|
||||
this.enhancedPortInfo.innerText = state.ports.enhanced.info;
|
||||
// ----------- Statistics -----------
|
||||
this.framesPerSecond.innerText = state.framesPerSecond.toString();
|
||||
this.trackedPersons.innerText = state.trackedPersons.toString();
|
||||
this.personsInBounds.innerText = state.personsInBounds.toString();
|
||||
// ----------- Error -----------
|
||||
if (((_a = state === null || state === void 0 ? void 0 : state.error) !== null && _a !== void 0 ? _a : '').trim().length > 0) {
|
||||
this.errorText.innerText = state.error;
|
||||
this.errorContainer.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
};
|
||||
DashboardMMWave.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('mmWaveState', function (state) {
|
||||
_this.updateState(state);
|
||||
});
|
||||
};
|
||||
return DashboardMMWave;
|
||||
}());
|
||||
exports.DashboardMMWave = DashboardMMWave;
|
||||
//# sourceMappingURL=dashboard.mmwave.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.mmwave.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.mmwave.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.mmwave.js","sourceRoot":"","sources":["../ts/dashboard.mmwave.ts"],"names":[],"mappings":"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"}
|
||||
149
frontend/views/dashboard/dist/dashboard.projector copy.js
vendored
Normal file
149
frontend/views/dashboard/dist/dashboard.projector copy.js
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
"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.DashboardProjector = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var utils_1 = require("./utils");
|
||||
var CELCIUS = 'ºC';
|
||||
var DashboardProjector = /** @class */ (function () {
|
||||
function DashboardProjector(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-projector');
|
||||
this.powerStatus = this.container.querySelector('.ntsh_dashboard-projector-powerstatus');
|
||||
this.powerInfo = this.container.querySelector('.ntsh_dashboard-projector-powerinfo');
|
||||
this.powerOnButton = this.container.querySelector('.ntsh_dashboard-projector-poweron');
|
||||
this.powerOffButton = this.container.querySelector('.ntsh_dashboard-projector-poweroff');
|
||||
this.laserStatus = this.container.querySelector('.ntsh_dashboard-projector-laserstatus');
|
||||
this.laserInfo = this.container.querySelector('.ntsh_dashboard-projector-laserinfo');
|
||||
this.shutterOpenButton = this.container.querySelector('.ntsh_dashboard-projector-shutteropen');
|
||||
this.shutterCloseButton = this.container.querySelector('.ntsh_dashboard-projector-shutterclose');
|
||||
this.sourceStatus = this.container.querySelector('.ntsh_dashboard-projector-sourcestatus');
|
||||
this.sourceInfo = this.container.querySelector('.ntsh_dashboard-projector-sourceinfo');
|
||||
this.sourceHDMIButton = this.container.querySelector('.ntsh_dashboard-projector-sourcehdmi');
|
||||
this.sourceDVIDButton = this.container.querySelector('.ntsh_dashboard-projector-sourcedvid');
|
||||
this.sourceDisplayPortButton = this.container.querySelector('.ntsh_dashboard-projector-sourcedisplayport');
|
||||
this.sourceSDIButton = this.container.querySelector('.ntsh_dashboard-projector-sourcesdi');
|
||||
this.temperatureIntake = this.container.querySelector('.ntsh_dashboard-projector-temperature-temperatureintake');
|
||||
this.temmperatureLaser = this.container.querySelector('.ntsh_dashboard-projector-temperature-temperaturelaser');
|
||||
this.temperatureDMD = this.container.querySelector('.ntsh_dashboard-projector-temperature-temperaturedmd');
|
||||
this.errorContainer = this.container.querySelector('.ntsh_dashboard-projector-error');
|
||||
this.errorText = this.container.querySelector('.ntsh_dashboard-projector-errortext');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardProjector.prototype.updateState = function (state) {
|
||||
if (state == null)
|
||||
return;
|
||||
// ----------- Power -----------
|
||||
(0, utils_1.setStatusState)(this.powerStatus, state.Powermd == 'Power On' ? 'ok' : 'error');
|
||||
this.powerInfo.innerText = state.Powermd;
|
||||
this.powerOnButton.style.display =
|
||||
state.Powermd == 'Power On' ? 'none' : 'flex';
|
||||
this.powerOffButton.style.display =
|
||||
state.Powermd == 'Power On' ? 'flex' : 'none';
|
||||
// ----------- Laser -----------
|
||||
(0, utils_1.setStatusState)(this.laserStatus, state.LaserStatus == 'On' ? 'ok' : 'error');
|
||||
this.laserInfo.innerText = "".concat(state.LaserStatus, " (").concat(state.Laserhr, " hrs)");
|
||||
this.shutterOpenButton.style.display =
|
||||
state.LaserStatus == 'On' ? 'none' : 'flex';
|
||||
this.shutterCloseButton.style.display =
|
||||
state.LaserStatus == 'On' ? 'flex' : 'none';
|
||||
// ----------- Source -----------
|
||||
(0, utils_1.setStatusState)(this.sourceStatus, state.Sourcemd == 'No Source' ? 'error' : 'ok');
|
||||
this.sourceInfo.innerText = state.Sourcemd;
|
||||
this.sourceHDMIButton.style.display =
|
||||
state.Sourcemd == 'HDMI' ? 'none' : 'flex';
|
||||
this.sourceDVIDButton.style.display =
|
||||
state.Sourcemd == 'DVI-D' ? 'none' : 'flex';
|
||||
this.sourceDisplayPortButton.style.display =
|
||||
state.Sourcemd == 'DisplayPort' ? 'none' : 'flex';
|
||||
this.sourceSDIButton.style.display =
|
||||
state.Sourcemd == '3G-SDI' ? 'none' : 'flex';
|
||||
// ----------- Temperature -----------
|
||||
this.temperatureIntake.innerText = "".concat(state.IntakeTempDeg, " ").concat(CELCIUS);
|
||||
this.temmperatureLaser.innerText = "".concat(state.LaserTempDeg, " ").concat(CELCIUS);
|
||||
this.temperatureDMD.innerText = "".concat(state.DMDTempDeg, " ").concat(CELCIUS);
|
||||
};
|
||||
DashboardProjector.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('projectorState', function (state) {
|
||||
_this.updateState(state);
|
||||
});
|
||||
this.powerOnButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'powerOn');
|
||||
};
|
||||
this.powerOffButton.onclick = function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var confirmed;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, morphux_1.MorphFeature.Confirm({
|
||||
message: 'Are you sure you want to power on the projector?',
|
||||
})];
|
||||
case 1:
|
||||
confirmed = _a.sent();
|
||||
if (!confirmed)
|
||||
return [2 /*return*/];
|
||||
this._Main.socket.emit('projectorCommand', 'powerOff');
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
this.shutterOpenButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'shutterOpen');
|
||||
};
|
||||
this.shutterCloseButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'shutterClose');
|
||||
};
|
||||
this.sourceHDMIButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'source', 'HDMI');
|
||||
};
|
||||
this.sourceDVIDButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'source', 'DVI-D');
|
||||
};
|
||||
this.sourceDisplayPortButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'source', 'DisplayPort');
|
||||
};
|
||||
this.sourceSDIButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'source', '3G-SDI');
|
||||
};
|
||||
};
|
||||
return DashboardProjector;
|
||||
}());
|
||||
exports.DashboardProjector = DashboardProjector;
|
||||
//# sourceMappingURL=dashboard.projector%20copy.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.projector copy.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.projector copy.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.projector copy.js","sourceRoot":"","sources":["../ts/dashboard.projector copy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAuC;AAEvC,iCAAyC;AAEzC,IAAM,OAAO,GAAG,IAAI,CAAC;AAErB;IAqEC,4BAAY,IAAU;QAlEtB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CACjD,2BAA2B,CAC3B,CAAC;QAEF,gBAAW,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACzD,uCAAuC,CACvC,CAAC;QACF,cAAS,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACvD,qCAAqC,CACrC,CAAC;QACF,kBAAa,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC3D,mCAAmC,CACnC,CAAC;QACF,mBAAc,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC5D,oCAAoC,CACpC,CAAC;QAEF,gBAAW,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACzD,uCAAuC,CACvC,CAAC;QACF,cAAS,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACvD,qCAAqC,CACrC,CAAC;QACF,sBAAiB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC/D,uCAAuC,CACvC,CAAC;QACF,uBAAkB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAChE,wCAAwC,CACxC,CAAC;QAEF,iBAAY,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC1D,wCAAwC,CACxC,CAAC;QACF,eAAU,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACxD,sCAAsC,CACtC,CAAC;QACF,qBAAgB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC9D,sCAAsC,CACtC,CAAC;QACF,qBAAgB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC9D,sCAAsC,CACtC,CAAC;QACF,4BAAuB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACrE,6CAA6C,CAC7C,CAAC;QACF,oBAAe,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC7D,qCAAqC,CACrC,CAAC;QAEF,sBAAiB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC/D,yDAAyD,CACzD,CAAC;QACF,sBAAiB,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC/D,wDAAwD,CACxD,CAAC;QACF,mBAAc,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC5D,sDAAsD,CACtD,CAAC;QAEF,mBAAc,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CAC5D,iCAAiC,CACjC,CAAC;QACF,cAAS,GAAmB,IAAI,CAAC,SAAS,CAAC,aAAa,CACvD,qCAAqC,CACrC,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,wCAAW,GAAX,UAAY,KAAqB;QAChC,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO;QAE1B,gCAAgC;QAChC,IAAA,sBAAc,EACb,IAAI,CAAC,WAAW,EAChB,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAC5C,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO;YAC/B,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO;YAChC,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAE/C,gCAAgC;QAChC,IAAA,sBAAc,EACb,IAAI,CAAC,WAAW,EAChB,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAC1C,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,UAAG,KAAK,CAAC,WAAW,eAAK,KAAK,CAAC,OAAO,UAAO,CAAC;QACzE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO;YACnC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO;YACpC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAE7C,iCAAiC;QACjC,IAAA,sBAAc,EACb,IAAI,CAAC,YAAY,EACjB,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC9C,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO;YAClC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO;YAClC,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO;YACzC,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO;YACjC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAE9C,sCAAsC;QACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAG,KAAK,CAAC,aAAa,cAAI,OAAO,CAAE,CAAC;QACvE,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,UAAG,KAAK,CAAC,YAAY,cAAI,OAAO,CAAE,CAAC;QACtE,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,UAAG,KAAK,CAAC,UAAU,cAAI,OAAO,CAAE,CAAC;IAClE,CAAC;IAED,8CAAiB,GAAjB;QAAA,iBAwCC;QAvCA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,UAAC,KAAqB;YAC5D,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG;YAC5B,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG;;;;4BACb,qBAAM,sBAAY,CAAC,OAAO,CAAC;4BAC1C,OAAO,EAAE,kDAAkD;yBAC3D,CAAC,EAAA;;wBAFE,SAAS,GAAG,SAEd;wBACF,IAAI,CAAC,SAAS;4BAAE,sBAAO;wBACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;;;;aACvD,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG;YAChC,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAC3D,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG;YACjC,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG;YAC/B,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG;YAC/B,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC,CAAC;QAEF,IAAI,CAAC,uBAAuB,CAAC,OAAO,GAAG;YACtC,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QACrE,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG;YAC9B,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChE,CAAC,CAAC;IACH,CAAC;IACF,yBAAC;AAAD,CAAC,AAlKD,IAkKC;AAlKY,gDAAkB"}
|
||||
182
frontend/views/dashboard/dist/dashboard.projector.js
vendored
Normal file
182
frontend/views/dashboard/dist/dashboard.projector.js
vendored
Normal file
@@ -0,0 +1,182 @@
|
||||
"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.DashboardProjector = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var utils_1 = require("./utils");
|
||||
var CELCIUS = 'ºC';
|
||||
var DashboardProjector = /** @class */ (function () {
|
||||
function DashboardProjector(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-projector');
|
||||
this.powerStatus = this.container.querySelector('.ntsh_dashboard-projector-powerstatus');
|
||||
this.powerInfo = this.container.querySelector('.ntsh_dashboard-projector-powerinfo');
|
||||
this.powerOnButton = this.container.querySelector('.ntsh_dashboard-projector-poweron');
|
||||
this.powerOffButton = this.container.querySelector('.ntsh_dashboard-projector-poweroff');
|
||||
this.laserStatus = this.container.querySelector('.ntsh_dashboard-projector-laserstatus');
|
||||
this.laserInfo = this.container.querySelector('.ntsh_dashboard-projector-laserinfo');
|
||||
this.shutterOpenButton = this.container.querySelector('.ntsh_dashboard-projector-shutteropen');
|
||||
this.shutterCloseButton = this.container.querySelector('.ntsh_dashboard-projector-shutterclose');
|
||||
this.sourceStatus = this.container.querySelector('.ntsh_dashboard-projector-sourcestatus');
|
||||
this.sourceInfo = this.container.querySelector('.ntsh_dashboard-projector-sourceinfo');
|
||||
this.sourceHDMIButton = this.container.querySelector('.ntsh_dashboard-projector-sourcehdmi');
|
||||
this.sourceDVIDButton = this.container.querySelector('.ntsh_dashboard-projector-sourcedvid');
|
||||
this.sourceDisplayPortButton = this.container.querySelector('.ntsh_dashboard-projector-sourcedisplayport');
|
||||
this.sourceSDIButton = this.container.querySelector('.ntsh_dashboard-projector-sourcesdi');
|
||||
this.temperatureIntake = this.container.querySelector('.ntsh_dashboard-projector-temperature-temperatureintake');
|
||||
this.temmperatureLaser = this.container.querySelector('.ntsh_dashboard-projector-temperature-temperaturelaser');
|
||||
this.temperatureDMD = this.container.querySelector('.ntsh_dashboard-projector-temperature-temperaturedmd');
|
||||
this.errorContainer = this.container.querySelector('.ntsh_dashboard-projector-error');
|
||||
this.errorText = this.container.querySelector('.ntsh_dashboard-projector-errortext');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardProjector.prototype.updateState = function (state) {
|
||||
if (state == null)
|
||||
return;
|
||||
// ----------- Power -----------
|
||||
(0, utils_1.setStatusState)(this.powerStatus, {
|
||||
Disabled: 'red',
|
||||
'Not Connected': 'red',
|
||||
'Power On': 'green',
|
||||
'Power Off': 'gray',
|
||||
'Powering Up': 'yellow',
|
||||
'Powering Down': 'yellow',
|
||||
}[state.Powermd]);
|
||||
this.powerInfo.innerText = state.Powermd;
|
||||
this.powerOnButton.style.display =
|
||||
state.Powermd == 'Power Off' ? 'flex' : 'none';
|
||||
this.powerOffButton.style.display =
|
||||
state.Powermd == 'Power On' ? 'flex' : 'none';
|
||||
// ----------- Laser -----------
|
||||
(0, utils_1.setStatusState)(this.laserStatus, state.LaserStatus == 'On' ? 'green' : 'gray');
|
||||
this.laserInfo.innerText = "".concat(state.LaserStatus, " (").concat(state.Laserhr, " hrs)");
|
||||
this.shutterOpenButton.style.display =
|
||||
state.LaserStatus == 'On' || state.Powermd != 'Power On'
|
||||
? 'none'
|
||||
: 'flex';
|
||||
this.shutterCloseButton.style.display =
|
||||
state.LaserStatus == 'Off' || state.Powermd != 'Power On'
|
||||
? 'none'
|
||||
: 'flex';
|
||||
// ----------- Source -----------
|
||||
(0, utils_1.setStatusState)(this.sourceStatus, state.Sourcemd == 'No Source' ||
|
||||
state.Sourcemd == '?' ||
|
||||
state.Powermd != 'Power On'
|
||||
? 'gray'
|
||||
: 'green');
|
||||
this.sourceInfo.innerText =
|
||||
state.Powermd == 'Power On' ? state.Sourcemd : '';
|
||||
this.sourceHDMIButton.style.display =
|
||||
state.Sourcemd == 'HDMI' || state.Powermd != 'Power On'
|
||||
? 'none'
|
||||
: 'flex';
|
||||
this.sourceDVIDButton.style.display =
|
||||
state.Sourcemd == 'DVI-D' || state.Powermd != 'Power On'
|
||||
? 'none'
|
||||
: 'flex';
|
||||
this.sourceDisplayPortButton.style.display =
|
||||
state.Sourcemd == 'DisplayPort' || state.Powermd != 'Power On'
|
||||
? 'none'
|
||||
: 'flex';
|
||||
this.sourceSDIButton.style.display =
|
||||
state.Sourcemd == '3G-SDI' || state.Powermd != 'Power On'
|
||||
? 'none'
|
||||
: 'flex';
|
||||
// ----------- Temperature -----------
|
||||
this.temperatureIntake.innerText = "".concat(state.IntakeTempDeg, " ").concat(CELCIUS);
|
||||
this.temmperatureLaser.innerText = "".concat(state.LaserTempDeg, " ").concat(CELCIUS);
|
||||
this.temperatureDMD.innerText = "".concat(state.DMDTempDeg, " ").concat(CELCIUS);
|
||||
// ----------- Error -----------
|
||||
if (state.Err != '(No Error)') {
|
||||
this.errorText.innerText = state.Err;
|
||||
this.errorContainer.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
};
|
||||
DashboardProjector.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('projectorState', function (state) {
|
||||
_this.updateState(state);
|
||||
});
|
||||
this.powerOnButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'powerOn');
|
||||
};
|
||||
this.powerOffButton.onclick = function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var confirmed;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, morphux_1.MorphFeature.Confirm({
|
||||
message: 'Are you sure you want to power on the projector?',
|
||||
})];
|
||||
case 1:
|
||||
confirmed = _a.sent();
|
||||
if (!confirmed)
|
||||
return [2 /*return*/];
|
||||
this._Main.socket.emit('projectorCommand', 'powerOff');
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
this.shutterOpenButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'shutterOpen');
|
||||
};
|
||||
this.shutterCloseButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'shutterClose');
|
||||
};
|
||||
this.sourceHDMIButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'source', 'HDMI');
|
||||
};
|
||||
this.sourceDVIDButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'source', 'DVI-D');
|
||||
};
|
||||
this.sourceDisplayPortButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'source', 'DisplayPort');
|
||||
};
|
||||
this.sourceSDIButton.onclick = function () {
|
||||
_this._Main.socket.emit('projectorCommand', 'source', '3G-SDI');
|
||||
};
|
||||
};
|
||||
return DashboardProjector;
|
||||
}());
|
||||
exports.DashboardProjector = DashboardProjector;
|
||||
//# sourceMappingURL=dashboard.projector.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.projector.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.projector.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
74
frontend/views/dashboard/dist/dashboard.showcontrol.js
vendored
Normal file
74
frontend/views/dashboard/dist/dashboard.showcontrol.js
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.DashboardShowControl = void 0;
|
||||
var utils_1 = require("./utils");
|
||||
var CELCIUS = 'ºC';
|
||||
var DashboardShowControl = /** @class */ (function () {
|
||||
function DashboardShowControl(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-showcontrol');
|
||||
this.runningStatus = this.container.querySelector('.ntsh_dashboard-showcontrol-runningstatus');
|
||||
this.runningInfo = this.container.querySelector('.ntsh_dashboard-showcontrol-runninginfo');
|
||||
this.errorContainer = this.container.querySelector('.ntsh_dashboard-showcontrol-error');
|
||||
this.errorText = this.container.querySelector('.ntsh_dashboard-showcontrol-errortext');
|
||||
this.startButton = this.container.querySelector('.ntsh_dashboard-showcontrol-start');
|
||||
this.stopButton = this.container.querySelector('.ntsh_dashboard-showcontrol-stop');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardShowControl.prototype.updateState = function (state) {
|
||||
var _a;
|
||||
// ----------- Running -----------
|
||||
var runningStatus = {
|
||||
STOPPED: 'gray',
|
||||
STARTING: 'yellow',
|
||||
RUNNING: 'green',
|
||||
STOPPING: 'yellow',
|
||||
RETRYING: 'red',
|
||||
HALTED: 'red',
|
||||
}[state.status];
|
||||
(0, utils_1.setStatusState)(this.runningStatus, runningStatus);
|
||||
this.runningInfo.innerText = {
|
||||
STOPPED: 'Idle',
|
||||
STARTING: state.info,
|
||||
RUNNING: 'Running',
|
||||
STOPPING: 'Stopping...',
|
||||
RETRYING: 'Problem detected! Retrying...',
|
||||
HALTED: 'Halted due to problems!',
|
||||
}[state.status];
|
||||
// ----------- Buttons -----------
|
||||
this.startButton.style.display =
|
||||
state.status == 'STOPPED' ||
|
||||
state.status == 'HALTED' ||
|
||||
state.status == 'RETRYING'
|
||||
? 'flex'
|
||||
: 'none';
|
||||
this.stopButton.style.display =
|
||||
state.status == 'RUNNING' || state.status == 'RETRYING'
|
||||
? 'flex'
|
||||
: 'none';
|
||||
// ----------- Error -----------
|
||||
if (((_a = state === null || state === void 0 ? void 0 : state.error) !== null && _a !== void 0 ? _a : '').trim().length > 0) {
|
||||
this.errorText.innerText = state.error;
|
||||
this.errorContainer.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
};
|
||||
DashboardShowControl.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('showControlState', function (state) {
|
||||
_this.updateState(state);
|
||||
});
|
||||
this.startButton.onclick = function () {
|
||||
fetch('/api/v1/start');
|
||||
};
|
||||
this.stopButton.onclick = function () {
|
||||
fetch('/api/v1/stop');
|
||||
};
|
||||
};
|
||||
return DashboardShowControl;
|
||||
}());
|
||||
exports.DashboardShowControl = DashboardShowControl;
|
||||
//# sourceMappingURL=dashboard.showcontrol.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.showcontrol.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.showcontrol.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.showcontrol.js","sourceRoot":"","sources":["../ts/dashboard.showcontrol.ts"],"names":[],"mappings":"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"}
|
||||
176
frontend/views/dashboard/dist/dashboard.testing.js
vendored
Normal file
176
frontend/views/dashboard/dist/dashboard.testing.js
vendored
Normal file
@@ -0,0 +1,176 @@
|
||||
"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.Testing = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var Testing = /** @class */ (function () {
|
||||
function Testing(Main) {
|
||||
this.container = document.querySelector('.ntsh_testing');
|
||||
this.weatherResetButton = this.container.querySelector('.ntsh_testing-weather-reset');
|
||||
this.weather0Button = this.container.querySelector('.ntsh_testing-weather-0');
|
||||
this.weather5Button = this.container.querySelector('.ntsh_testing-weather-5');
|
||||
this.weather10Button = this.container.querySelector('.ntsh_testing-weather-10');
|
||||
this.weather20Button = this.container.querySelector('.ntsh_testing-weather-20');
|
||||
this.weather50Button = this.container.querySelector('.ntsh_testing-weather-50');
|
||||
this.resetAllTracksButton = this.container.querySelector('.ntsh_testing-tracks-reset');
|
||||
this.cloudAnimationsSimoultaneousContainer = this.container.querySelector('.ntsh_testing-cloud-animations-simoultaneous');
|
||||
this.cloudAnimationsStandaloneContainer = this.container.querySelector('.ntsh_testing-cloud-animations-standalone');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
Testing.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this.weatherResetButton.onclick = function () { return _this.setWeather('reset'); };
|
||||
this.weather0Button.onclick = function () { return _this.setWeather(0); };
|
||||
this.weather5Button.onclick = function () { return _this.setWeather(5); };
|
||||
this.weather10Button.onclick = function () { return _this.setWeather(10); };
|
||||
this.weather20Button.onclick = function () { return _this.setWeather(20); };
|
||||
this.weather50Button.onclick = function () { return _this.setWeather(50); };
|
||||
[
|
||||
'Rain',
|
||||
'Blink',
|
||||
'Breath',
|
||||
'Fill',
|
||||
'Rainbow',
|
||||
'Wave',
|
||||
'Pulse',
|
||||
'Ambient',
|
||||
'Flow',
|
||||
'Thunder',
|
||||
'Swipe Left',
|
||||
'Swipe Right',
|
||||
'Swipe Down',
|
||||
'Swipe Up',
|
||||
'Sphere Pulse',
|
||||
].forEach(function (effect) {
|
||||
var simoultaneous = (0, morphux_1.ce)('div', ['mux_button', 'mux_normal', 'mux_text'], null, effect);
|
||||
var standalone = simoultaneous.cloneNode(true);
|
||||
_this.cloudAnimationsSimoultaneousContainer.appendChild(simoultaneous);
|
||||
_this.cloudAnimationsStandaloneContainer.appendChild(standalone);
|
||||
simoultaneous.onclick = function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, this.fetch("/dev/animation/cloud/simoultaneous/".concat(effect
|
||||
.replace(/ /g, '')
|
||||
.toLowerCase()))];
|
||||
case 1:
|
||||
_a.sent();
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: "Cloud animation set to ".concat(effect, " (simoultaneous)!"),
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
standalone.onclick = function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, this.fetch("/dev/animation/cloud/standalone/".concat(effect
|
||||
.replace(/ /g, '')
|
||||
.toLowerCase()))];
|
||||
case 1:
|
||||
_a.sent();
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: "Cloud animation set to ".concat(effect, " (standalone)!"),
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
this.resetAllTracksButton.onclick = function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, this.fetch('/dev/resetTracks')];
|
||||
case 1:
|
||||
_a.sent();
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: "All tracks have been reset!",
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
};
|
||||
Testing.prototype.setWeather = function (rainAmount) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, this.fetch("/dev/weather/".concat(rainAmount))];
|
||||
case 1:
|
||||
_a.sent();
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: rainAmount == 'reset'
|
||||
? 'Returned to actual weather!'
|
||||
: "Weather set to ".concat(rainAmount, "!"),
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
Testing.prototype.fetch = function (address) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
morphux_1.MorphFeature.Loader({ active: true });
|
||||
return [4 /*yield*/, fetch(address)];
|
||||
case 1:
|
||||
request = _a.sent();
|
||||
morphux_1.MorphFeature.Loader({ active: false });
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
return Testing;
|
||||
}());
|
||||
exports.Testing = Testing;
|
||||
//# sourceMappingURL=dashboard.testing.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.testing.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.testing.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.testing.js","sourceRoot":"","sources":["../ts/dashboard.testing.ts"],"names":[],"mappings":"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"}
|
||||
243
frontend/views/dashboard/dist/dashboard.unity.js
vendored
Normal file
243
frontend/views/dashboard/dist/dashboard.unity.js
vendored
Normal file
@@ -0,0 +1,243 @@
|
||||
"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.DashboardUnity = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var utils_1 = require("./utils");
|
||||
var DashboardUnity = /** @class */ (function () {
|
||||
function DashboardUnity(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-unity');
|
||||
this.processStatus = document.querySelector('.ntsh_dashboard-unity-processstatus');
|
||||
this.processInfo = document.querySelector('.ntsh_dashboard-unity-processinfo');
|
||||
this.restartButton = document.querySelector('.ntsh_dashboard-unity-restart');
|
||||
this.uptimeInfo = document.querySelector('.ntsh_dashboard-unity-uptime');
|
||||
this.webSocketStatus = document.querySelector('.ntsh_dashboard-unity-websocketstatus');
|
||||
this.webSocketInfo = document.querySelector('.ntsh_dashboard-unity-websocketinfo');
|
||||
this.zedStreamStatus = document.querySelector('.ntsh_dashboard-unity-zedstreamstatus');
|
||||
this.zedStreamInfo = document.querySelector('.ntsh_dashboard-unity-zedstreaminfo');
|
||||
this.zedStreamFps = document.querySelector('.ntsh_dashboard-unity-zedstreamfps');
|
||||
this.zedStreamPath = document.querySelector('.ntsh_dashboard-unity-zedstreampath');
|
||||
this.timelineWatching = document.querySelector('.ntsh_dashboard-unity-timeline-watching');
|
||||
this.timelineStanding = document.querySelector('.ntsh_dashboard-unity-timeline-standing');
|
||||
this.timelineProgress = document.querySelector('.ntsh_dashboard-unity-timeline-progress');
|
||||
this.parametersTable = document.querySelector('.ntsh_dashboard-unity-parameters');
|
||||
this.errorContainer = document.querySelector('.ntsh_dashboard-unity-error');
|
||||
this.errorText = document.querySelector('.ntsh_dashboard-unity-errortext');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardUnity.prototype.updateRunnerState = function (state) {
|
||||
var _a, _b;
|
||||
// ----------- Process -----------
|
||||
if (state.state != 'RUNNING') {
|
||||
state.startTime = -1;
|
||||
this.restartButton.style.display = 'none';
|
||||
}
|
||||
else {
|
||||
this.restartButton.style.display = 'flex';
|
||||
}
|
||||
(0, utils_1.setStatusState)(this.processStatus, {
|
||||
RUNNING: 'green',
|
||||
STOPPED: 'red',
|
||||
STARTING: 'yellow',
|
||||
PROBLEM: 'red',
|
||||
}[state.state]);
|
||||
this.processInfo.innerText = (_a = state.message) !== null && _a !== void 0 ? _a : '';
|
||||
// ----------- Uptime -----------
|
||||
var uptimeSeconds = state.startTime == -1 ? -1 : (Date.now() - state.startTime) / 1000;
|
||||
this.uptimeInfo.innerText = (0, utils_1.formatUptime)(uptimeSeconds);
|
||||
// ----------- Error -----------
|
||||
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0)
|
||||
this.runnerError = state.error;
|
||||
else
|
||||
this.runnerError = null;
|
||||
this.updateError();
|
||||
this._Main.Logs.setUnityLogs(state.output.current);
|
||||
};
|
||||
DashboardUnity.prototype.updateWebSocketState = function (state) {
|
||||
var _a, _b;
|
||||
// ----------- WebSocket -----------
|
||||
(0, utils_1.setStatusState)(this.webSocketStatus, {
|
||||
CONNECTING: 'yellow',
|
||||
CONNECTED: 'green',
|
||||
DISCONNECTED: 'gray',
|
||||
FAILED: 'red',
|
||||
}[state.state]);
|
||||
this.webSocketInfo.innerText = (_a = state.message) !== null && _a !== void 0 ? _a : '';
|
||||
// ----------- ZED Stream -----------
|
||||
(0, utils_1.setStatusState)(this.zedStreamStatus, state.parameters.zedReady ? 'green' : 'red');
|
||||
this.zedStreamInfo.innerText = state.parameters.zedReady
|
||||
? "Connected to ".concat(state.parameters.zedPath)
|
||||
: 'Not ready';
|
||||
this.zedStreamFps.innerText =
|
||||
state.parameters.zedFPS == '-' ? '' : state.parameters.zedFPS;
|
||||
// ----------- Timeline -----------
|
||||
this.timelineWatching.innerText = state.parameters.timelineWatching
|
||||
? 'Yes'
|
||||
: 'No';
|
||||
this.timelineStanding.innerText = state.parameters.timelineStanding
|
||||
? 'Yes'
|
||||
: 'No';
|
||||
(0, utils_1.setProgressState)(this.timelineProgress, state.parameters.timelineProgress);
|
||||
// ----------- Parameters -----------
|
||||
this.renderParameterSliders(state.parameters.parameters);
|
||||
// ----------- Error -----------
|
||||
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0)
|
||||
this.webSocketError = state.error;
|
||||
else
|
||||
this.webSocketError = null;
|
||||
this.updateError();
|
||||
};
|
||||
DashboardUnity.prototype.renderParameterSliders = function (parameters) {
|
||||
var _this = this;
|
||||
if (parameters.length === 0)
|
||||
return;
|
||||
var existingSliders = this.parametersTable.querySelectorAll('.ntsh_dashboard-unity-parameter-row');
|
||||
if (existingSliders.length !== parameters.length) {
|
||||
this.parametersTable.innerHTML = '';
|
||||
parameters.forEach(function (param) {
|
||||
var row = (0, morphux_1.ce)('tr', 'ntsh_dashboard-unity-parameter-row');
|
||||
var nameCell = (0, morphux_1.ce)('td');
|
||||
nameCell.appendChild((0, morphux_1.ce)('div', 'mux_text', null, param.sliderName));
|
||||
row.appendChild(nameCell);
|
||||
var progressCell = (0, morphux_1.ce)('td', 'no-service');
|
||||
progressCell.appendChild((0, utils_1.createProgress)(param.outputValue));
|
||||
row.appendChild(progressCell);
|
||||
var sliderCell = (0, morphux_1.ce)('td', 'only-service');
|
||||
var sliderProgress = (0, utils_1.createProgress)(param.outputValue);
|
||||
var sliderValue = sliderProgress.querySelector('.ntsh_progress-value');
|
||||
sliderValue.classList.add('mux_resizer');
|
||||
sliderCell.appendChild(sliderProgress);
|
||||
var resizer = new morphux_1.MorphComponent.Resizer({
|
||||
existingContainer: sliderValue,
|
||||
direction: 'right',
|
||||
relative: true,
|
||||
min: 0,
|
||||
max: function () { return sliderProgress.clientWidth; },
|
||||
});
|
||||
var lastPercentage = -1;
|
||||
resizer.on('resized', function (size) {
|
||||
var percentage = Math.round((size / sliderProgress.clientWidth) * 100) /
|
||||
100;
|
||||
if (percentage === lastPercentage)
|
||||
return;
|
||||
lastPercentage = percentage;
|
||||
_this._Main.socket.emit('unityWebSocket', 'parameterValue', param.sliderIndex, percentage);
|
||||
(0, utils_1.setProgressState)(sliderProgress, percentage);
|
||||
});
|
||||
row.appendChild(sliderCell);
|
||||
_this.parametersTable.appendChild(row);
|
||||
});
|
||||
}
|
||||
else {
|
||||
existingSliders.forEach(function (row, index) {
|
||||
var value = parameters[index].outputValue;
|
||||
var progressElement = row.querySelector('.no-service .ntsh_progress');
|
||||
(0, utils_1.setProgressState)(progressElement, value);
|
||||
var sliderElement = row.querySelector('.only-service .ntsh_progress');
|
||||
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
||||
(0, utils_1.setProgressState)(sliderElement, value);
|
||||
});
|
||||
}
|
||||
};
|
||||
DashboardUnity.prototype.updateError = function () {
|
||||
var errors = [];
|
||||
if (this.runnerError != null)
|
||||
errors.push(this.runnerError);
|
||||
if (this.webSocketError != null)
|
||||
errors.push(this.webSocketError);
|
||||
if (errors.length > 0) {
|
||||
this.errorText.innerText = errors.join('\n');
|
||||
this.errorContainer.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
};
|
||||
DashboardUnity.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('unityRunnerState', function (state) {
|
||||
return _this.updateRunnerState(state);
|
||||
});
|
||||
this._Main.socket.on('unityWebSocketState', function (state) { return _this.updateWebSocketState(state); });
|
||||
this.restartButton.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
this.executeCommand('restart', 'Are you sure you want to restart the Unity Runner process?');
|
||||
return [2 /*return*/];
|
||||
});
|
||||
}); });
|
||||
};
|
||||
DashboardUnity.prototype.executeCommand = function (command, message) {
|
||||
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*/];
|
||||
morphux_1.MorphFeature.Loader({
|
||||
active: true,
|
||||
message: "Requesting Unity Runner ".concat(command, "..."),
|
||||
});
|
||||
this._Main.socket.emit('unityRunner', 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: "Unity Runner is ".concat(command, "ing..."),
|
||||
});
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
return DashboardUnity;
|
||||
}());
|
||||
exports.DashboardUnity = DashboardUnity;
|
||||
//# sourceMappingURL=dashboard.unity.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.unity.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.unity.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
143
frontend/views/dashboard/dist/dashboard.unityrunner.js
vendored
Normal file
143
frontend/views/dashboard/dist/dashboard.unityrunner.js
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
"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.DashboardUnityRunner = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var utils_1 = require("./utils");
|
||||
var CELCIUS = 'ºC';
|
||||
var DashboardUnityRunner = /** @class */ (function () {
|
||||
function DashboardUnityRunner(Main) {
|
||||
this.container = document.querySelector('.ntsh_dashboard-unity');
|
||||
this.processStatus = this.container.querySelector('.ntsh_dashboard-unity-processstatus');
|
||||
this.processInfo = this.container.querySelector('.ntsh_dashboard-unity-processinfo');
|
||||
this.restartButton = this.container.querySelector('.ntsh_dashboard-unity-restart');
|
||||
this.uptimeInfo = this.container.querySelector('.ntsh_dashboard-unity-uptime');
|
||||
this.errorContainer = this.container.querySelector('.ntsh_dashboard-unity-error');
|
||||
this.errorText = this.container.querySelector('.ntsh_dashboard-unity-errortext');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
DashboardUnityRunner.prototype.updateState = function (state) {
|
||||
var _a, _b;
|
||||
// ----------- Process -----------
|
||||
if (state.state != 'RUNNING') {
|
||||
state.startTime = -1;
|
||||
this.restartButton.style.display = 'none';
|
||||
}
|
||||
else {
|
||||
this.restartButton.style.display = 'flex';
|
||||
}
|
||||
(0, utils_1.setStatusState)(this.processStatus, {
|
||||
RUNNING: 'green',
|
||||
STOPPED: 'red',
|
||||
STARTING: 'yellow',
|
||||
PROBLEM: 'red',
|
||||
}[state.state]);
|
||||
this.processInfo.innerText = (_a = state.message) !== null && _a !== void 0 ? _a : '';
|
||||
// ----------- Uptime -----------
|
||||
var uptimeSeconds = state.startTime == -1 ? -1 : (Date.now() - state.startTime) / 1000;
|
||||
this.uptimeInfo.innerText = (0, utils_1.formatUptime)(uptimeSeconds);
|
||||
// ----------- Error -----------
|
||||
var errors = [];
|
||||
if (((_b = state === null || state === void 0 ? void 0 : state.error) !== null && _b !== void 0 ? _b : '').trim().length > 0)
|
||||
errors.push(state.error);
|
||||
if (errors.length > 0) {
|
||||
this.errorText.innerText = errors.join('\n');
|
||||
this.errorContainer.style.display = 'block';
|
||||
}
|
||||
else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
this._Main.Logs.setUnityLogs(state.output.current);
|
||||
};
|
||||
DashboardUnityRunner.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.socket.on('unityRunnerState', function (state) {
|
||||
_this.updateState(state);
|
||||
});
|
||||
this._Main.socket.on('unityWebSocketState', function (state) {
|
||||
console.log('Unity WebSocket State:', state);
|
||||
});
|
||||
this.restartButton.addEventListener('click', function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
this.executeCommand('restart', 'Are you sure you want to restart the Unity Runner process?');
|
||||
return [2 /*return*/];
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
DashboardUnityRunner.prototype.executeCommand = function (command, message) {
|
||||
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*/];
|
||||
morphux_1.MorphFeature.Loader({
|
||||
active: true,
|
||||
message: "Requesting Unity Runner ".concat(command, "..."),
|
||||
});
|
||||
this._Main.socket.emit('unityRunner', 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: "Unity Runner is ".concat(command, "ing..."),
|
||||
});
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
return DashboardUnityRunner;
|
||||
}());
|
||||
exports.DashboardUnityRunner = DashboardUnityRunner;
|
||||
//# sourceMappingURL=dashboard.unityrunner.js.map
|
||||
1
frontend/views/dashboard/dist/dashboard.unityrunner.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/dashboard.unityrunner.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.unityrunner.js","sourceRoot":"","sources":["../ts/dashboard.unityrunner.ts"],"names":[],"mappings":"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"}
|
||||
38
frontend/views/dashboard/dist/leds copy.js
vendored
Normal file
38
frontend/views/dashboard/dist/leds copy.js
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Leds = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var Leds = /** @class */ (function () {
|
||||
function Leds(Main) {
|
||||
this.container = document.querySelector(".ntsh_tab[tabid=\"leds\"]");
|
||||
this._Main = Main;
|
||||
this.registerTabListener();
|
||||
}
|
||||
Leds.prototype.createPreviewFrame = function () {
|
||||
var container = (0, morphux_1.ce)('div', 'ntsh_leds');
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
var transform = urlParams.has('transform')
|
||||
? "?transform=".concat(urlParams.get('transform'))
|
||||
: '';
|
||||
var frame = (0, morphux_1.ce)('iframe', 'ntsh_leds-frame', {
|
||||
src: "http://".concat(window.location.hostname, ":84").concat(transform),
|
||||
});
|
||||
container.appendChild(frame);
|
||||
this.container.appendChild(container);
|
||||
};
|
||||
Leds.prototype.removePreviewFrame = function () {
|
||||
this.container.innerHTML = '';
|
||||
};
|
||||
Leds.prototype.registerTabListener = function () {
|
||||
var _this = this;
|
||||
this._Main.TabController.registerListener('leds', function (visible) {
|
||||
if (visible)
|
||||
_this.createPreviewFrame();
|
||||
else
|
||||
_this.removePreviewFrame();
|
||||
});
|
||||
};
|
||||
return Leds;
|
||||
}());
|
||||
exports.Leds = Leds;
|
||||
//# sourceMappingURL=leds%20copy.js.map
|
||||
1
frontend/views/dashboard/dist/leds copy.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/leds copy.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"leds copy.js","sourceRoot":"","sources":["../ts/leds copy.ts"],"names":[],"mappings":";;;AAAA,mCAA6B;AAG7B;IAOC,cAAY,IAAU;QAJtB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CACjD,2BAAyB,CACzB,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC5B,CAAC;IAED,iCAAkB,GAAlB;QACC,IAAI,SAAS,GAAG,IAAA,YAAE,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEvC,IAAI,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE5D,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;YACzC,CAAC,CAAC,qBAAc,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAE;YAC5C,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,KAAK,GAAG,IAAA,YAAE,EAAC,QAAQ,EAAE,iBAAiB,EAAE;YAC3C,GAAG,EAAE,iBAAU,MAAM,CAAC,QAAQ,CAAC,QAAQ,gBAAM,SAAS,CAAE;SACxD,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,iCAAkB,GAAlB;QACC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,kCAAmB,GAA3B;QAAA,iBAKC;QAJA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAC,OAAO;YACzD,IAAI,OAAO;gBAAE,KAAI,CAAC,kBAAkB,EAAE,CAAC;;gBAClC,KAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,WAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCY,oBAAI"}
|
||||
38
frontend/views/dashboard/dist/leds.js
vendored
Normal file
38
frontend/views/dashboard/dist/leds.js
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Leds = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var Leds = /** @class */ (function () {
|
||||
function Leds(Main) {
|
||||
this.container = document.querySelector(".ntsh_tab[tabid=\"leds\"]");
|
||||
this._Main = Main;
|
||||
this.registerTabListener();
|
||||
}
|
||||
Leds.prototype.createPreviewFrame = function () {
|
||||
var container = (0, morphux_1.ce)('div', 'ntsh_leds');
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
var transform = urlParams.has('transform')
|
||||
? "?transform=".concat(urlParams.get('transform'))
|
||||
: '';
|
||||
var frame = (0, morphux_1.ce)('iframe', 'ntsh_leds-frame', {
|
||||
src: "http://".concat(window.location.hostname, ":84").concat(transform),
|
||||
});
|
||||
container.appendChild(frame);
|
||||
this.container.appendChild(container);
|
||||
};
|
||||
Leds.prototype.removePreviewFrame = function () {
|
||||
this.container.innerHTML = '';
|
||||
};
|
||||
Leds.prototype.registerTabListener = function () {
|
||||
var _this = this;
|
||||
this._Main.TabController.registerListener('leds', function (visible) {
|
||||
if (visible)
|
||||
_this.createPreviewFrame();
|
||||
else
|
||||
_this.removePreviewFrame();
|
||||
});
|
||||
};
|
||||
return Leds;
|
||||
}());
|
||||
exports.Leds = Leds;
|
||||
//# sourceMappingURL=leds.js.map
|
||||
1
frontend/views/dashboard/dist/leds.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/leds.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"leds.js","sourceRoot":"","sources":["../ts/leds.ts"],"names":[],"mappings":";;;AAAA,mCAA6B;AAG7B;IAOC,cAAY,IAAU;QAJtB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CACjD,2BAAyB,CACzB,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC5B,CAAC;IAED,iCAAkB,GAAlB;QACC,IAAI,SAAS,GAAG,IAAA,YAAE,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEvC,IAAI,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE5D,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;YACzC,CAAC,CAAC,qBAAc,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAE;YAC5C,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,KAAK,GAAG,IAAA,YAAE,EAAC,QAAQ,EAAE,iBAAiB,EAAE;YAC3C,GAAG,EAAE,iBAAU,MAAM,CAAC,QAAQ,CAAC,QAAQ,gBAAM,SAAS,CAAE;SACxD,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,iCAAkB,GAAlB;QACC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,kCAAmB,GAA3B;QAAA,iBAKC;QAJA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAC,OAAO;YACzD,IAAI,OAAO;gBAAE,KAAI,CAAC,kBAAkB,EAAE,CAAC;;gBAClC,KAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,WAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCY,oBAAI"}
|
||||
19
frontend/views/dashboard/dist/logs.js
vendored
Normal file
19
frontend/views/dashboard/dist/logs.js
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Logs = void 0;
|
||||
var Logs = /** @class */ (function () {
|
||||
function Logs() {
|
||||
this.cameraLogsContainer = document.querySelector('.ntsh_tab[tabid="cameralogs"] .ntsh_logs');
|
||||
this.unityLogsContainer = document.querySelector('.ntsh_tab[tabid="unitylogs"] .ntsh_logs');
|
||||
}
|
||||
Logs.prototype.setCameraLogs = function (logs) {
|
||||
this.applyLogs(this.cameraLogsContainer, logs);
|
||||
};
|
||||
Logs.prototype.setUnityLogs = function (logs) {
|
||||
this.applyLogs(this.unityLogsContainer, logs);
|
||||
};
|
||||
Logs.prototype.applyLogs = function (container, logs) { };
|
||||
return Logs;
|
||||
}());
|
||||
exports.Logs = Logs;
|
||||
//# sourceMappingURL=logs.js.map
|
||||
1
frontend/views/dashboard/dist/logs.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/logs.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../ts/logs.ts"],"names":[],"mappings":";;;AAAA;IAAA;QACC,wBAAmB,GAAmB,QAAQ,CAAC,aAAa,CAC3D,sCAAsC,CACtC,CAAC;QACF,uBAAkB,GAAmB,QAAQ,CAAC,aAAa,CAC1D,qCAAqC,CACrC,CAAC;IAWH,CAAC;IATA,4BAAa,GAAb,UAAc,IAAc;QAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,2BAAY,GAAZ,UAAa,IAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAEO,wBAAS,GAAjB,UAAkB,SAAyB,EAAE,IAAc,IAAG,CAAC;IAChE,WAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,oBAAI"}
|
||||
116
frontend/views/dashboard/dist/logsHandler.js
vendored
Normal file
116
frontend/views/dashboard/dist/logsHandler.js
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
"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.LogsHandler = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var ansi_up_1 = require("ansi_up");
|
||||
var LogsHandler = /** @class */ (function () {
|
||||
function LogsHandler(Main) {
|
||||
this.ansiUp = new ansi_up_1.AnsiUp();
|
||||
this.cameraLogsContainer = document.querySelector('.ntsh_tab[tabid="cameralogs"] .ntsh_logs');
|
||||
this.unityLogsContainer = document.querySelector('.ntsh_tab[tabid="unitylogs"] .ntsh_logs');
|
||||
this.firstTime = new Set();
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
LogsHandler.prototype.setCameraLogs = function (logs) {
|
||||
this.applyLogs(this.cameraLogsContainer, logs);
|
||||
};
|
||||
LogsHandler.prototype.setUnityLogs = function (logs) {
|
||||
this.applyLogs(this.unityLogsContainer, logs);
|
||||
};
|
||||
LogsHandler.prototype.applyLogs = function (container, logs) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var logCount, isAtBottom;
|
||||
var _this = this;
|
||||
return __generator(this, function (_a) {
|
||||
logCount = container.querySelectorAll('.ntsh_log.ntsh_log-normal').length;
|
||||
if (logCount === logs.length)
|
||||
return [2 /*return*/];
|
||||
if (logCount > logs.length)
|
||||
logCount = 0;
|
||||
isAtBottom = !this.firstTime.has(container) ||
|
||||
container.scrollTop + container.clientHeight >=
|
||||
container.scrollHeight;
|
||||
container.innerHTML = '';
|
||||
logs.forEach(function (log, i) {
|
||||
var element = (0, morphux_1.ce)('div', ['ntsh_log', 'ntsh_log-normal'], null, null, _this.ansiUp.ansi_to_html(log));
|
||||
if (_this.firstTime.has(container) && i > logCount - 1) {
|
||||
element.style.display = 'none';
|
||||
var spawnDelay = (i - logCount) * 10;
|
||||
setTimeout(function () {
|
||||
element.style.display = 'block';
|
||||
if (isAtBottom)
|
||||
container.scrollTop = container.scrollHeight;
|
||||
}, spawnDelay);
|
||||
}
|
||||
container.appendChild(element);
|
||||
if (isAtBottom)
|
||||
container.scrollTop = container.scrollHeight;
|
||||
});
|
||||
if (!this.firstTime.has(container)) {
|
||||
container.scrollTop = container.scrollHeight;
|
||||
this.firstTime.add(container);
|
||||
}
|
||||
return [2 /*return*/];
|
||||
});
|
||||
});
|
||||
};
|
||||
LogsHandler.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
this._Main.TabController.registerListener('cameralogs', function (visible) {
|
||||
if (!visible)
|
||||
return;
|
||||
setTimeout(function () {
|
||||
_this.cameraLogsContainer.scrollTop =
|
||||
_this.cameraLogsContainer.scrollHeight;
|
||||
}, 10);
|
||||
});
|
||||
this._Main.TabController.registerListener('unitylogs', function (visible) {
|
||||
if (!visible)
|
||||
return;
|
||||
setTimeout(function () {
|
||||
_this.unityLogsContainer.scrollTop =
|
||||
_this.unityLogsContainer.scrollHeight;
|
||||
}, 10);
|
||||
});
|
||||
};
|
||||
return LogsHandler;
|
||||
}());
|
||||
exports.LogsHandler = LogsHandler;
|
||||
//# sourceMappingURL=logsHandler.js.map
|
||||
1
frontend/views/dashboard/dist/logsHandler.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/logsHandler.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"logsHandler.js","sourceRoot":"","sources":["../ts/logsHandler.ts"],"names":[],"mappings":"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"}
|
||||
36
frontend/views/dashboard/dist/main.js
vendored
Normal file
36
frontend/views/dashboard/dist/main.js
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Main = void 0;
|
||||
var socket_io_client_1 = require("socket.io-client");
|
||||
var menuBar_1 = require("./menuBar");
|
||||
var tabController_1 = require("./tabController");
|
||||
var morphux_1 = require("morphux");
|
||||
var dashboard_camerarunner_1 = require("./dashboard.camerarunner");
|
||||
var logsHandler_1 = require("./logsHandler");
|
||||
var calibration_1 = require("./calibration");
|
||||
var dashboard_unity_1 = require("./dashboard.unity");
|
||||
var socket = (0, socket_io_client_1.io)('/');
|
||||
var Main = /** @class */ (function () {
|
||||
function Main() {
|
||||
this.socket = socket;
|
||||
this.MenuBar = new menuBar_1.MenuBar(this);
|
||||
this.TabController = new tabController_1.TabController(this);
|
||||
this.Logs = new logsHandler_1.LogsHandler(this);
|
||||
this.Calibration = new calibration_1.Calibration(this);
|
||||
this.DashboardCameraRunner = new dashboard_camerarunner_1.DashboardCameraRunner(this);
|
||||
this.DashboardUnityRunner = new dashboard_unity_1.DashboardUnity(this);
|
||||
if (window.location.search.includes('debug')) {
|
||||
window.SN = this;
|
||||
console.log('Debug mode enabled');
|
||||
}
|
||||
}
|
||||
return Main;
|
||||
}());
|
||||
exports.Main = Main;
|
||||
morphux_1.MorphFeature.Loader({ active: true, message: 'Connecting to server...' });
|
||||
socket.on('connect', function () {
|
||||
console.log('Connected to server');
|
||||
morphux_1.MorphFeature.Loader({ active: false });
|
||||
});
|
||||
var _Main = new Main();
|
||||
//# sourceMappingURL=main.js.map
|
||||
1
frontend/views/dashboard/dist/main.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/main.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"main.js","sourceRoot":"","sources":["../ts/main.ts"],"names":[],"mappings":";;;AAAA,qDAAsC;AACtC,qCAAoC;AACpC,iDAAgD;AAChD,mCAAuC;AACvC,mEAAiE;AACjE,6CAA4C;AAC5C,6CAA4C;AAC5C,qDAAmD;AAEnD,IAAM,MAAM,GAAG,IAAA,qBAAE,EAAC,GAAG,CAAC,CAAC;AACvB;IAYC;QAXA,WAAM,GAAG,MAAM,CAAC;QAEhB,YAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,kBAAa,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;QAExC,SAAI,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,gBAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QAEpC,0BAAqB,GAAG,IAAI,8CAAqB,CAAC,IAAI,CAAC,CAAC;QACxD,yBAAoB,GAAG,IAAI,gCAAc,CAAC,IAAI,CAAC,CAAC;QAG/C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,MAAc,CAAC,EAAE,GAAG,IAAI,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IACF,WAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBY,oBAAI;AAoBjB,sBAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAC1E,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,sBAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC"}
|
||||
171
frontend/views/dashboard/dist/menubar.js
vendored
Normal file
171
frontend/views/dashboard/dist/menubar.js
vendored
Normal file
@@ -0,0 +1,171 @@
|
||||
"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.MenuBar = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var Component_MenuBar_1 = require("morphux/dist/Components/MenuBar/Component.MenuBar");
|
||||
var MenuBar = /** @class */ (function () {
|
||||
function MenuBar(main) {
|
||||
var _this = this;
|
||||
this.container = document.querySelector('.ntsh_menubar');
|
||||
this._Main = main;
|
||||
this.build();
|
||||
setTimeout(function () {
|
||||
if ((localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem('serviceMode')) === 'true')
|
||||
_this.toggleServiceMode(true, true);
|
||||
}, 10);
|
||||
}
|
||||
MenuBar.prototype.build = function () {
|
||||
var _this = this;
|
||||
this.menubar = new Component_MenuBar_1.ComponentMenuBar({
|
||||
left: [
|
||||
{
|
||||
type: 'image',
|
||||
url: '/img/morphix_logo_white.png',
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
text: 'Dashboard',
|
||||
materialIcon: 'dashboard',
|
||||
uniqueIdentifier: 'dashboard',
|
||||
selected: true,
|
||||
click: function () { return _this._Main.TabController.showTab('dashboard'); },
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
text: 'Calibration',
|
||||
uniqueIdentifier: 'calibration',
|
||||
materialIcon: 'crop_free',
|
||||
click: function () {
|
||||
return _this._Main.TabController.showTab('calibration');
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
text: 'Unity Logs',
|
||||
uniqueIdentifier: 'unitylogs',
|
||||
materialIcon: 'deployed_code',
|
||||
click: function () { return _this._Main.TabController.showTab('unitylogs'); },
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
text: 'Camera Logs',
|
||||
uniqueIdentifier: 'cameralogs',
|
||||
materialIcon: 'photo_camera',
|
||||
click: function () { return _this._Main.TabController.showTab('cameralogs'); },
|
||||
},
|
||||
],
|
||||
right: [
|
||||
{
|
||||
type: 'normal',
|
||||
text: document.body.classList.contains('ntsh_service')
|
||||
? 'Exit Service'
|
||||
: 'Service Mode',
|
||||
uniqueIdentifier: 'serviceMode',
|
||||
materialIcon: document.body.classList.contains('ntsh_service')
|
||||
? 'logout'
|
||||
: 'engineering',
|
||||
click: function () { return __awaiter(_this, void 0, void 0, function () {
|
||||
var mobileMenu;
|
||||
return __generator(this, function (_a) {
|
||||
mobileMenu = document.querySelector('.mux_mobilemenu');
|
||||
mobileMenu === null || mobileMenu === void 0 ? void 0 : mobileMenu.click();
|
||||
this.toggleServiceMode();
|
||||
return [2 /*return*/];
|
||||
});
|
||||
}); },
|
||||
},
|
||||
],
|
||||
});
|
||||
this.container.innerHTML = '';
|
||||
this.container.appendChild(this.menubar.container);
|
||||
};
|
||||
MenuBar.prototype.toggleServiceMode = function (mode, skipPin) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var newMode, servicePin;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
newMode = mode !== null && mode !== void 0 ? mode : !document.body.classList.contains('ntsh_service');
|
||||
if (!newMode) return [3 /*break*/, 3];
|
||||
if (!(skipPin !== true)) return [3 /*break*/, 2];
|
||||
return [4 /*yield*/, morphux_1.MorphFeature.Prompt({
|
||||
title: 'Service Mode',
|
||||
message: 'Enter the service PIN:',
|
||||
type: 'number',
|
||||
canBeEmpty: false,
|
||||
placeholder: '****',
|
||||
})];
|
||||
case 1:
|
||||
servicePin = _a.sent();
|
||||
if (servicePin !== '4252') {
|
||||
morphux_1.MorphFeature.Alert({
|
||||
title: 'Error',
|
||||
message: 'Incorrect PIN provided.',
|
||||
});
|
||||
return [2 /*return*/, false];
|
||||
}
|
||||
_a.label = 2;
|
||||
case 2:
|
||||
document.body.classList.add('ntsh_service');
|
||||
localStorage.setItem('serviceMode', 'true');
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: 'Service mode activated.',
|
||||
});
|
||||
return [3 /*break*/, 4];
|
||||
case 3:
|
||||
document.body.classList.remove('ntsh_service');
|
||||
this._Main.TabController.showTab('dashboard');
|
||||
localStorage.setItem('serviceMode', 'false');
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: 'Service mode deactivated.',
|
||||
});
|
||||
_a.label = 4;
|
||||
case 4:
|
||||
this.build();
|
||||
return [2 /*return*/, true];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
return MenuBar;
|
||||
}());
|
||||
exports.MenuBar = MenuBar;
|
||||
//# sourceMappingURL=menuBar.js.map
|
||||
1
frontend/views/dashboard/dist/menubar.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/menubar.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"menuBar.js","sourceRoot":"","sources":["../ts/menuBar.ts"],"names":[],"mappings":"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"}
|
||||
166
frontend/views/dashboard/dist/mmWave.js
vendored
Normal file
166
frontend/views/dashboard/dist/mmWave.js
vendored
Normal file
@@ -0,0 +1,166 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.mmWave = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var MAPPING_CORNER_COLOR = '#f00';
|
||||
var MAPPING_LINE_COLOR = '#9c0000ff';
|
||||
var mmWave = /** @class */ (function () {
|
||||
function mmWave(Main) {
|
||||
this.container = document.querySelector('.ntsh_mmwave-container');
|
||||
this.nodes = this.container.querySelector('.ntsh_mmwave-nodes');
|
||||
this.lines = this.container.querySelector('.ntsh_mmwave-lines');
|
||||
this.linesContext = this.lines.getContext('2d');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
mmWave.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
console.log('Registering mmWave listeners');
|
||||
this._Main.socket.on('mmwaveROI', function (roi) {
|
||||
_this.roi = roi;
|
||||
_this.updateROI();
|
||||
});
|
||||
this._Main.socket.on('mmwaveMapping', function (mapping) {
|
||||
_this.mapping = mapping;
|
||||
_this.setMappingCorners();
|
||||
});
|
||||
// this._Main.socket.on('mmwaveTracks', (tracks: Track[]) => {
|
||||
// this.updateTracks(tracks);
|
||||
// });
|
||||
this._Main.socket.on('mmwavePoints', function (mappedPoints) {
|
||||
_this.updateTracks(mappedPoints);
|
||||
});
|
||||
this.container.onclick = function (e) {
|
||||
var rect = _this.container.getBoundingClientRect();
|
||||
var scaleX = _this.container.clientWidth / rect.width;
|
||||
var scaleY = _this.container.clientHeight / rect.height;
|
||||
var x = (e.clientX - rect.left) * scaleX;
|
||||
var y = (e.clientY - rect.top) * scaleY;
|
||||
var xPercentage = (x / _this.container.clientWidth) * 100;
|
||||
var yPercentage = (y / _this.container.clientHeight) * 100;
|
||||
var roiPos = _this.toROI(xPercentage, yPercentage);
|
||||
console.log(roiPos);
|
||||
};
|
||||
window.addEventListener('resize', function () { return _this.scale(); });
|
||||
};
|
||||
mmWave.prototype.updateTracks = function (mappedPoints) {
|
||||
var _this = this;
|
||||
if (this.roi == null)
|
||||
return;
|
||||
mappedPoints.forEach(function (_a) {
|
||||
var track = _a.track, mapped = _a.mapped;
|
||||
var trackPoint = _this.nodes.querySelector(".ntsh_mmwave-track[trackid=\"".concat(track.trackId, "\"]"));
|
||||
var trackLabel = trackPoint === null || trackPoint === void 0 ? void 0 : trackPoint.querySelector('.ntsh_mmwave-label');
|
||||
if (trackPoint == null) {
|
||||
trackPoint = (0, morphux_1.ce)('div', 'ntsh_mmwave-track', {
|
||||
trackid: track.trackId,
|
||||
});
|
||||
trackPoint.appendChild((0, morphux_1.ce)('div', 'ntsh_mmwave-track-cross'));
|
||||
trackPoint.appendChild((0, morphux_1.ce)('div', 'ntsh_mmwave-track-cross'));
|
||||
trackLabel = (0, morphux_1.ce)('div', 'ntsh_mmwave-label');
|
||||
trackPoint.appendChild(trackLabel);
|
||||
_this.nodes.appendChild(trackPoint);
|
||||
trackPoint.animate({
|
||||
opacity: [0, 1],
|
||||
}, { duration: 200 });
|
||||
}
|
||||
var _b = _this.toPercentage(track.x, track.y), xPercentage = _b.xPercentage, yPercentage = _b.yPercentage;
|
||||
trackPoint.style.left = "".concat(xPercentage, "%");
|
||||
trackPoint.style.top = "".concat(yPercentage, "%");
|
||||
if (mapped == null)
|
||||
return trackPoint.classList.add('ntsh_mmwave-track-outside');
|
||||
trackPoint.classList.remove('ntsh_mmwave-track-outside');
|
||||
trackLabel.innerHTML = '';
|
||||
trackLabel.appendChild((0, morphux_1.ce)('span', 'ntsh_mmwave-label-id', null, track.trackId.toString()));
|
||||
trackLabel.appendChild((0, morphux_1.ce)('span', null, null, "".concat(Math.round(mapped.x), "%, ").concat(Math.round(mapped.y), "%")));
|
||||
});
|
||||
var trackIds = mappedPoints.map(function (t) { return t.track.trackId; });
|
||||
this.nodes
|
||||
.querySelectorAll('.ntsh_mmwave-track')
|
||||
.forEach(function (trackPoint) {
|
||||
var trackId = parseInt(trackPoint.getAttribute('trackid'));
|
||||
if (trackIds.includes(trackId))
|
||||
return;
|
||||
trackPoint.animate({
|
||||
opacity: 0,
|
||||
}, { duration: 200 }).onfinish = function () {
|
||||
trackPoint.remove();
|
||||
};
|
||||
});
|
||||
};
|
||||
mmWave.prototype.updateROI = function () {
|
||||
if (this.roi == null)
|
||||
return;
|
||||
var xDif = Math.abs(this.roi.x[1] - this.roi.x[0]);
|
||||
var yDif = Math.abs(this.roi.y[1] - this.roi.y[0]);
|
||||
var height = (1920 / xDif) * yDif;
|
||||
this.container.style.minWidth = "1920px";
|
||||
this.container.style.minHeight = "".concat(height, "px");
|
||||
this.lines.height = height;
|
||||
this.lines.width = 1920;
|
||||
this.scale();
|
||||
};
|
||||
mmWave.prototype.setMappingCorners = function () {
|
||||
if (this.mapping == null)
|
||||
return;
|
||||
this.nodes
|
||||
.querySelectorAll('.ntsh_mmwave-corner')
|
||||
.forEach(function (el) { return el.remove(); });
|
||||
var tl = this.addCorner(this.mapping.topLeft.x, this.mapping.topLeft.y, 'tl');
|
||||
var tr = this.addCorner(this.mapping.topRight.x, this.mapping.topRight.y, 'tr');
|
||||
var bl = this.addCorner(this.mapping.bottomLeft.x, this.mapping.bottomLeft.y, 'bl');
|
||||
var br = this.addCorner(this.mapping.bottomRight.x, this.mapping.bottomRight.y, 'br');
|
||||
this.linesContext.clearRect(0, 0, this.lines.width, this.lines.height);
|
||||
this.linesContext.strokeStyle = MAPPING_LINE_COLOR;
|
||||
this.linesContext.lineWidth = 2;
|
||||
this.linesContext.beginPath();
|
||||
this.linesContext.moveTo((tl.xPercentage / 100) * this.lines.width, (tl.yPercentage / 100) * this.lines.height);
|
||||
this.linesContext.lineTo((tr.xPercentage / 100) * this.lines.width, (tr.yPercentage / 100) * this.lines.height);
|
||||
this.linesContext.lineTo((br.xPercentage / 100) * this.lines.width, (br.yPercentage / 100) * this.lines.height);
|
||||
this.linesContext.lineTo((bl.xPercentage / 100) * this.lines.width, (bl.yPercentage / 100) * this.lines.height);
|
||||
this.linesContext.closePath();
|
||||
this.linesContext.stroke();
|
||||
};
|
||||
mmWave.prototype.addCorner = function (x, y, corner) {
|
||||
var cornerPoint = (0, morphux_1.ce)('div', [
|
||||
'ntsh_mmwave-corner',
|
||||
"ntsh_mmwave-corner-".concat(corner),
|
||||
]);
|
||||
cornerPoint.style.setProperty('--sn-mmwave-corner-color', MAPPING_CORNER_COLOR);
|
||||
cornerPoint.appendChild((0, morphux_1.ce)('div', 'ntsh_mmwave-corner-cross'));
|
||||
cornerPoint.appendChild((0, morphux_1.ce)('div', 'ntsh_mmwave-corner-cross'));
|
||||
var position = this.toPercentage(x, y);
|
||||
cornerPoint.style.left = "".concat(position.xPercentage, "%");
|
||||
cornerPoint.style.top = "".concat(position.yPercentage, "%");
|
||||
cornerPoint.appendChild((0, morphux_1.ce)('div', 'ntsh_mmwave-label', null, "".concat(x, ", ").concat(y)));
|
||||
this.nodes.appendChild(cornerPoint);
|
||||
return position;
|
||||
};
|
||||
mmWave.prototype.toPercentage = function (x, y) {
|
||||
var xPercentage = ((x - this.roi.x[0]) / (this.roi.x[1] - this.roi.x[0])) * 100;
|
||||
var yPercentage = ((y - this.roi.y[0]) / (this.roi.y[1] - this.roi.y[0])) * 100;
|
||||
return { xPercentage: xPercentage, yPercentage: yPercentage };
|
||||
};
|
||||
mmWave.prototype.toROI = function (xPercentage, yPercentage) {
|
||||
var x = this.roi.x[0] +
|
||||
(xPercentage / 100) * (this.roi.x[1] - this.roi.x[0]);
|
||||
var y = this.roi.y[0] +
|
||||
(yPercentage / 100) * (this.roi.y[1] - this.roi.y[0]);
|
||||
return { x: x, y: y };
|
||||
};
|
||||
mmWave.prototype.scale = function () {
|
||||
var elementWidth = this.container.clientWidth;
|
||||
var elementHeight = this.container.clientHeight;
|
||||
var parentWidth = this.container.parentElement.clientWidth;
|
||||
var parentHeight = this.container.parentElement.clientHeight;
|
||||
var ratioWidth = parentWidth / elementWidth;
|
||||
var ratioHeight = parentHeight / elementHeight;
|
||||
var ratio = elementHeight * ratioWidth > parentHeight
|
||||
? ratioHeight
|
||||
: ratioWidth;
|
||||
this.container.style.transform = "scale(".concat(ratio, ")");
|
||||
};
|
||||
return mmWave;
|
||||
}());
|
||||
exports.mmWave = mmWave;
|
||||
//# sourceMappingURL=mmWave.js.map
|
||||
1
frontend/views/dashboard/dist/mmWave.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/mmWave.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
38
frontend/views/dashboard/dist/preview.js
vendored
Normal file
38
frontend/views/dashboard/dist/preview.js
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Preview = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var Preview = /** @class */ (function () {
|
||||
function Preview(Main) {
|
||||
this.container = document.querySelector(".ntsh_tab[tabid=\"preview\"]");
|
||||
this._Main = Main;
|
||||
this.registerTabListener();
|
||||
}
|
||||
Preview.prototype.createPreviewFrame = function () {
|
||||
var container = (0, morphux_1.ce)('div', 'ntsh_preview');
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
var transform = urlParams.has('transform')
|
||||
? "?transform=".concat(urlParams.get('transform'))
|
||||
: '';
|
||||
var frame = (0, morphux_1.ce)('iframe', 'ntsh_preview-frame', {
|
||||
src: "http://".concat(window.location.hostname, ":84").concat(transform),
|
||||
});
|
||||
container.appendChild(frame);
|
||||
this.container.appendChild(container);
|
||||
};
|
||||
Preview.prototype.removePreviewFrame = function () {
|
||||
this.container.innerHTML = '';
|
||||
};
|
||||
Preview.prototype.registerTabListener = function () {
|
||||
var _this = this;
|
||||
this._Main.TabController.registerListener('preview', function (visible) {
|
||||
if (visible)
|
||||
_this.createPreviewFrame();
|
||||
else
|
||||
_this.removePreviewFrame();
|
||||
});
|
||||
};
|
||||
return Preview;
|
||||
}());
|
||||
exports.Preview = Preview;
|
||||
//# sourceMappingURL=preview.js.map
|
||||
1
frontend/views/dashboard/dist/preview.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/preview.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../ts/preview.ts"],"names":[],"mappings":";;;AAAA,mCAA6B;AAG7B;IAOC,iBAAY,IAAU;QAJtB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CACjD,8BAA4B,CAC5B,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC5B,CAAC;IAED,oCAAkB,GAAlB;QACC,IAAI,SAAS,GAAG,IAAA,YAAE,EAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAE1C,IAAI,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE5D,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;YACzC,CAAC,CAAC,qBAAc,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAE;YAC5C,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,KAAK,GAAG,IAAA,YAAE,EAAC,QAAQ,EAAE,oBAAoB,EAAE;YAC9C,GAAG,EAAE,iBAAU,MAAM,CAAC,QAAQ,CAAC,QAAQ,gBAAM,SAAS,CAAE;SACxD,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,oCAAkB,GAAlB;QACC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,qCAAmB,GAA3B;QAAA,iBAKC;QAJA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,OAAO;YAC5D,IAAI,OAAO;gBAAE,KAAI,CAAC,kBAAkB,EAAE,CAAC;;gBAClC,KAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,cAAC;AAAD,CAAC,AAxCD,IAwCC;AAxCY,0BAAO"}
|
||||
34
frontend/views/dashboard/dist/projection.js
vendored
Normal file
34
frontend/views/dashboard/dist/projection.js
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Projection = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var Projection = /** @class */ (function () {
|
||||
function Projection(Main) {
|
||||
this.container = document.querySelector(".ntsh_tab[tabid=\"projection\"]");
|
||||
this._Main = Main;
|
||||
this.registerTabListener();
|
||||
}
|
||||
Projection.prototype.createPreviewFrame = function () {
|
||||
var container = (0, morphux_1.ce)('div', 'ntsh_projection');
|
||||
var frame = (0, morphux_1.ce)('iframe', 'ntsh_projection-frame', {
|
||||
src: "".concat(window.location.origin, "/visualization").concat(window.location.search),
|
||||
});
|
||||
container.appendChild(frame);
|
||||
this.container.appendChild(container);
|
||||
};
|
||||
Projection.prototype.removePreviewFrame = function () {
|
||||
this.container.innerHTML = '';
|
||||
};
|
||||
Projection.prototype.registerTabListener = function () {
|
||||
var _this = this;
|
||||
this._Main.TabController.registerListener('projection', function (visible) {
|
||||
if (visible)
|
||||
_this.createPreviewFrame();
|
||||
else
|
||||
_this.removePreviewFrame();
|
||||
});
|
||||
};
|
||||
return Projection;
|
||||
}());
|
||||
exports.Projection = Projection;
|
||||
//# sourceMappingURL=projection.js.map
|
||||
1
frontend/views/dashboard/dist/projection.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/projection.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../ts/projection.ts"],"names":[],"mappings":";;;AAAA,mCAA6B;AAG7B;IAOC,oBAAY,IAAU;QAJtB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CACjD,iCAA+B,CAC/B,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC5B,CAAC;IAED,uCAAkB,GAAlB;QACC,IAAI,SAAS,GAAG,IAAA,YAAE,EAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAE7C,IAAI,KAAK,GAAG,IAAA,YAAE,EAAC,QAAQ,EAAE,uBAAuB,EAAE;YACjD,GAAG,EAAE,UAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,2BAAiB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAE;SACvE,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,uCAAkB,GAAlB;QACC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,wCAAmB,GAA3B;QAAA,iBAKC;QAJA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAC,OAAO;YAC/D,IAAI,OAAO;gBAAE,KAAI,CAAC,kBAAkB,EAAE,CAAC;;gBAClC,KAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,iBAAC;AAAD,CAAC,AAlCD,IAkCC;AAlCY,gCAAU"}
|
||||
120
frontend/views/dashboard/dist/tabController.js
vendored
Normal file
120
frontend/views/dashboard/dist/tabController.js
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
"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.TabController = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var TabController = /** @class */ (function () {
|
||||
function TabController(main) {
|
||||
this.container = document.querySelector('.ntsh_tabs');
|
||||
this.tabListeners = new Map();
|
||||
this._Main = main;
|
||||
this.registerNavigationListener();
|
||||
}
|
||||
TabController.prototype.registerListener = function (tabId, callback) {
|
||||
if (this.tabListeners.has(tabId))
|
||||
throw new Error("Listener for tab id ".concat(tabId, " has already been registered!"));
|
||||
this.tabListeners.set(tabId, callback);
|
||||
callback(this.currentTabId == tabId);
|
||||
};
|
||||
TabController.prototype.showTab = function (tabId) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var confirmed, succeed, tabName;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
if (this.currentTabId == tabId)
|
||||
return [2 /*return*/];
|
||||
if (!(tabId !== 'dashboard' &&
|
||||
!document.body.classList.contains('ntsh_service'))) return [3 /*break*/, 3];
|
||||
return [4 /*yield*/, morphux_1.MorphFeature.Confirm({
|
||||
title: 'Service Mode Required',
|
||||
message: "You need to be in service mode to access tab ".concat(tabId, ", switch to Service Mode now?"),
|
||||
})];
|
||||
case 1:
|
||||
confirmed = _a.sent();
|
||||
if (!confirmed)
|
||||
return [2 /*return*/, this.showTab('dashboard')];
|
||||
return [4 /*yield*/, this._Main.MenuBar.toggleServiceMode(true)];
|
||||
case 2:
|
||||
succeed = _a.sent();
|
||||
if (!succeed)
|
||||
return [2 /*return*/, this.showTab('dashboard')];
|
||||
_a.label = 3;
|
||||
case 3:
|
||||
this._Main.MenuBar.menubar.setSelected(tabId);
|
||||
if (this.tabListeners.has(this.currentTabId))
|
||||
this.tabListeners.get(this.currentTabId)(false);
|
||||
if (this.tabListeners.has(tabId))
|
||||
this.tabListeners.get(tabId)(true);
|
||||
this.currentTabId = tabId;
|
||||
this.container
|
||||
.querySelectorAll('.ntsh_tab')
|
||||
.forEach(function (tab) { return tab.classList.remove('ntsh_tab-visible'); });
|
||||
this.container
|
||||
.querySelector(".ntsh_tab[tabid=\"".concat(tabId, "\"]"))
|
||||
.classList.add('ntsh_tab-visible');
|
||||
window.history.pushState({ tab: tabId }, '', "/".concat(tabId).concat(window.location.search));
|
||||
tabName = {
|
||||
dashboard: 'Dashboard',
|
||||
calibration: 'Calibration',
|
||||
cameralogs: 'Camera Logs',
|
||||
unitylogs: 'Unity Logs',
|
||||
}[tabId];
|
||||
document.title = "NTSH Control - ".concat(tabName);
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
TabController.prototype.registerNavigationListener = function () {
|
||||
var _this = this;
|
||||
window.addEventListener('popstate', function (event) {
|
||||
var state = event.state;
|
||||
if (state && state.tab)
|
||||
_this.showTab(state.tab);
|
||||
});
|
||||
var startTab = window.location.pathname
|
||||
.replace('/', '')
|
||||
.split('/')
|
||||
.shift();
|
||||
this.showTab(startTab.length > 0 ? startTab : 'dashboard');
|
||||
};
|
||||
return TabController;
|
||||
}());
|
||||
exports.TabController = TabController;
|
||||
//# sourceMappingURL=tabController.js.map
|
||||
1
frontend/views/dashboard/dist/tabController.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/tabController.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"tabController.js","sourceRoot":"","sources":["../ts/tabController.ts"],"names":[],"mappings":"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"}
|
||||
198
frontend/views/dashboard/dist/testing.js
vendored
Normal file
198
frontend/views/dashboard/dist/testing.js
vendored
Normal file
@@ -0,0 +1,198 @@
|
||||
"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.Testing = void 0;
|
||||
var morphux_1 = require("morphux");
|
||||
var Testing = /** @class */ (function () {
|
||||
function Testing(Main) {
|
||||
this.container = document.querySelector('.ntsh_testing');
|
||||
this.alphaContainer = this.container.querySelector('.ntsh_testing-ledalpha');
|
||||
this.weatherResetButton = this.container.querySelector('.ntsh_testing-weather-reset');
|
||||
this.weather0Button = this.container.querySelector('.ntsh_testing-weather-0');
|
||||
this.weather5Button = this.container.querySelector('.ntsh_testing-weather-5');
|
||||
this.weather10Button = this.container.querySelector('.ntsh_testing-weather-10');
|
||||
this.weather20Button = this.container.querySelector('.ntsh_testing-weather-20');
|
||||
this.weather50Button = this.container.querySelector('.ntsh_testing-weather-50');
|
||||
this.resetAllTracksButton = this.container.querySelector('.ntsh_testing-tracks-reset');
|
||||
this.cloudAnimationsSimoultaneousContainer = this.container.querySelector('.ntsh_testing-cloud-animations-simoultaneous');
|
||||
this.cloudAnimationsStandaloneContainer = this.container.querySelector('.ntsh_testing-cloud-animations-standalone');
|
||||
this._Main = Main;
|
||||
this.registerListeners();
|
||||
}
|
||||
Testing.prototype.registerListeners = function () {
|
||||
var _this = this;
|
||||
Array.from({ length: 21 }, function (_, i) { return i; }).forEach(function (i) {
|
||||
var button = (0, morphux_1.ce)('div', ['mux_button', 'mux_normal', 'mux_text'], null, "".concat(i * 5, "%"));
|
||||
// if (i == 20) button.innerText = '100%';
|
||||
_this.alphaContainer.appendChild(button);
|
||||
button.onclick = function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, this.fetch("/dev/alpha/".concat(i * 0.05))];
|
||||
case 1:
|
||||
_a.sent();
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: "LED alpha set to ".concat(i * 5, "%!"),
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
this.weatherResetButton.onclick = function () { return _this.setWeather('reset'); };
|
||||
this.weather0Button.onclick = function () { return _this.setWeather(0); };
|
||||
this.weather5Button.onclick = function () { return _this.setWeather(5); };
|
||||
this.weather10Button.onclick = function () { return _this.setWeather(10); };
|
||||
this.weather20Button.onclick = function () { return _this.setWeather(20); };
|
||||
this.weather50Button.onclick = function () { return _this.setWeather(50); };
|
||||
[
|
||||
'Rain',
|
||||
'Blink',
|
||||
'Breath',
|
||||
'Fill',
|
||||
'Rainbow',
|
||||
'Wave',
|
||||
'Pulse',
|
||||
'Ambient',
|
||||
'Flow',
|
||||
'Thunder',
|
||||
'Swipe Left',
|
||||
'Swipe Right',
|
||||
'Swipe Down',
|
||||
'Swipe Up',
|
||||
'Sphere Pulse',
|
||||
].forEach(function (effect) {
|
||||
var simoultaneous = (0, morphux_1.ce)('div', ['mux_button', 'mux_normal', 'mux_text'], null, effect);
|
||||
var standalone = simoultaneous.cloneNode(true);
|
||||
_this.cloudAnimationsSimoultaneousContainer.appendChild(simoultaneous);
|
||||
_this.cloudAnimationsStandaloneContainer.appendChild(standalone);
|
||||
simoultaneous.onclick = function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, this.fetch("/dev/animation/cloud/simoultaneous/".concat(effect
|
||||
.replace(/ /g, '')
|
||||
.toLowerCase()))];
|
||||
case 1:
|
||||
_a.sent();
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: "Cloud animation set to ".concat(effect, " (simoultaneous)!"),
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
standalone.onclick = function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, this.fetch("/dev/animation/cloud/standalone/".concat(effect
|
||||
.replace(/ /g, '')
|
||||
.toLowerCase()))];
|
||||
case 1:
|
||||
_a.sent();
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: "Cloud animation set to ".concat(effect, " (standalone)!"),
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
this.resetAllTracksButton.onclick = function () {
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, this.fetch('/dev/resetTracks')];
|
||||
case 1:
|
||||
_a.sent();
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: "All tracks have been reset!",
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
};
|
||||
Testing.prototype.setWeather = function (rainAmount) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, this.fetch("/dev/weather/".concat(rainAmount))];
|
||||
case 1:
|
||||
_a.sent();
|
||||
morphux_1.MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: rainAmount == 'reset'
|
||||
? 'Returned to actual weather!'
|
||||
: "Weather set to ".concat(rainAmount, "!"),
|
||||
});
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
Testing.prototype.fetch = function (address) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
morphux_1.MorphFeature.Loader({ active: true });
|
||||
return [4 /*yield*/, fetch(address)];
|
||||
case 1:
|
||||
request = _a.sent();
|
||||
morphux_1.MorphFeature.Loader({ active: false });
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
return Testing;
|
||||
}());
|
||||
exports.Testing = Testing;
|
||||
//# sourceMappingURL=testing.js.map
|
||||
1
frontend/views/dashboard/dist/testing.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/testing.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../ts/testing.ts"],"names":[],"mappings":"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"}
|
||||
62
frontend/views/dashboard/dist/utils.js
vendored
Normal file
62
frontend/views/dashboard/dist/utils.js
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createProgress = exports.setProgressState = exports.setStatusState = exports.lerp = void 0;
|
||||
exports.capitalizeFirstLetter = capitalizeFirstLetter;
|
||||
exports.formatUptime = formatUptime;
|
||||
exports.delay = delay;
|
||||
var morphux_1 = require("morphux");
|
||||
/**
|
||||
* A linear interpolation helper function.
|
||||
* @param a The start value.
|
||||
* @param b The end value.
|
||||
* @param t The interpolation factor (0 to 1).
|
||||
* @returns The interpolated value.
|
||||
*/
|
||||
var lerp = function (a, b, t) {
|
||||
return a + (b - a) * t;
|
||||
};
|
||||
exports.lerp = lerp;
|
||||
var setStatusState = function (statusElement, state) {
|
||||
statusElement.classList.remove('ntsh_status-green', 'ntsh_status-yellow', 'ntsh_status-red', 'ntsh_status-gray');
|
||||
statusElement.classList.add("ntsh_status-".concat(state));
|
||||
};
|
||||
exports.setStatusState = setStatusState;
|
||||
var setProgressState = function (progressElement, percentage) {
|
||||
var value = progressElement.querySelector('.ntsh_progress-value');
|
||||
value.style.width = "".concat(percentage * 100, "%");
|
||||
var label = progressElement.querySelector('.ntsh_progress-label');
|
||||
label.innerText = "".concat(Math.round(percentage * 100), "%");
|
||||
};
|
||||
exports.setProgressState = setProgressState;
|
||||
var createProgress = function (value) {
|
||||
var progress = (0, morphux_1.ce)('div', 'ntsh_progress');
|
||||
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-value'));
|
||||
progress.appendChild((0, morphux_1.ce)('div', 'ntsh_progress-label'));
|
||||
(0, exports.setProgressState)(progress, value);
|
||||
return progress;
|
||||
};
|
||||
exports.createProgress = createProgress;
|
||||
function capitalizeFirstLetter(string) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
}
|
||||
function formatUptime(seconds) {
|
||||
if (seconds < 0)
|
||||
return '';
|
||||
var days = Math.floor(seconds / 86400);
|
||||
seconds %= 86400;
|
||||
var hours = Math.floor(seconds / 3600);
|
||||
seconds %= 3600;
|
||||
var minutes = Math.floor(seconds / 60);
|
||||
seconds = Math.floor(seconds % 60);
|
||||
var parts = [];
|
||||
if (days > 0)
|
||||
parts.push("".concat(days, "d"));
|
||||
parts.push("".concat(hours.toString().padStart(2, '0'), ":").concat(minutes
|
||||
.toString()
|
||||
.padStart(2, '0'), ":").concat(seconds.toString().padStart(2, '0')));
|
||||
return parts.join(' ');
|
||||
}
|
||||
function delay(duration) {
|
||||
return new Promise(function (resolve) { return setTimeout(resolve, duration); });
|
||||
}
|
||||
//# sourceMappingURL=utils.js.map
|
||||
1
frontend/views/dashboard/dist/utils.js.map
vendored
Normal file
1
frontend/views/dashboard/dist/utils.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../ts/utils.ts"],"names":[],"mappings":"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"}
|
||||
267
frontend/views/dashboard/index.html
Normal file
267
frontend/views/dashboard/index.html
Normal file
@@ -0,0 +1,267 @@
|
||||
<!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="sn">
|
||||
<div class="ntsh_menubar">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="ntsh_tabs">
|
||||
<div class="ntsh_tab" tabid="dashboard">
|
||||
<div class="ntsh_dashboard">
|
||||
|
||||
<div class="ntsh_dashboard-box ntsh_dashboard-camerarunner">
|
||||
<div class="ntsh_dashboard-box-header mux_header">Camera Runner</div>
|
||||
|
||||
<table class="ntsh_vertical">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text">Connection</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_status ntsh_dashboard-camerarunner-connectionstatus"></div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_dashboard-camerarunner-connectioninfo mux_text">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_buttons">
|
||||
<div class="ntsh_button mux_text ntsh_dashboard-camerarunner-reboot">
|
||||
Reboot
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text">Process</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_status ntsh_dashboard-camerarunner-processstatus"></div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_dashboard-camerarunner-processinfo mux_text">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_buttons">
|
||||
<div class="ntsh_button mux_text ntsh_dashboard-camerarunner-restart">
|
||||
Restart Process
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text">Uptime</div>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_dashboard-camerarunner-uptime mux_text">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="ntsh_dashboard-error ntsh_dashboard-camerarunner-error">
|
||||
<div class="mux_header">Error</div>
|
||||
<div class="mux_text ntsh_dashboard-camerarunner-errortext">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ntsh_dashboard-box ntsh_dashboard-unity">
|
||||
<div class="ntsh_dashboard-box-header mux_header">Unity</div>
|
||||
|
||||
<table class="ntsh_vertical">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text">Process</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_status ntsh_dashboard-unity-processstatus"></div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_dashboard-unity-processinfo mux_text">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_buttons">
|
||||
<div class="ntsh_button mux_text ntsh_dashboard-unity-restart">
|
||||
Restart Process
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text">Uptime</div>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_dashboard-unity-uptime mux_text">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text">WebSocket</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_status ntsh_dashboard-unity-websocketstatus"></div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_dashboard-unity-websocketinfo mux_text">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="ntsh_dashboard-error ntsh_dashboard-unity-error">
|
||||
<div class="mux_header">Error</div>
|
||||
<div class="mux_text ntsh_dashboard-unity-errortext">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ntsh_dashboard-box ntsh_dashboard-unityzedstream">
|
||||
<div class="ntsh_dashboard-box-header mux_header">ZED Stream</div>
|
||||
<table class="ntsh_vertical">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text">Connection</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_status ntsh_dashboard-unity-zedstreamstatus"></div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_dashboard-unity-zedstreaminfo mux_text">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text">FPS</div>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<div class="ntsh_dashboard-unity-zedstreamfps mux_text">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="ntsh_dashboard-box ntsh_dashboard-unitytimeline">
|
||||
<div class="ntsh_dashboard-box-header mux_header">Timeline</div>
|
||||
|
||||
<table class="ntsh_horizontal">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text">Watching</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="mux_text">Standing</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="mux_text">Progress</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text mux_big ntsh_dashboard-unity-timeline-watching">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="mux_text mux_big ntsh_dashboard-unity-timeline-standing">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="mux_text mux_big ntsh_progress ntsh_dashboard-unity-timeline-progress">
|
||||
<div class="ntsh_progress-value ntsh_progress-smooth"></div>
|
||||
<div class="ntsh_progress-label"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="ntsh_dashboard-box ntsh_dashboard-unityparameters">
|
||||
<div class="ntsh_dashboard-box-header mux_header">Parameters</div>
|
||||
|
||||
<table class="ntsh_vertical ntsh_dashboard-unity-parameters">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="mux_text ntsh_dashboard-unity-parameters-loading">Waiting for Unity...
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ntsh_tab" tabid="calibration">
|
||||
<div class="ntsh_calibration">
|
||||
<div class="ntsh_calibration-fullscreen">
|
||||
<span class="material-symbols-outlined">
|
||||
fullscreen
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<img src="/calibrationImage">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="ntsh_tab" tabid="cameralogs">
|
||||
<div class="ntsh_logs mux_text">
|
||||
<div class="ntsh_log ntsh_log-fill">
|
||||
No logs yet...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ntsh_tab" tabid="unitylogs">
|
||||
<div class="ntsh_logs mux_text">
|
||||
<div class="ntsh_log ntsh_log-fill">
|
||||
No logs yet...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
942
frontend/views/dashboard/package-lock.json
generated
Normal file
942
frontend/views/dashboard/package-lock.json
generated
Normal file
@@ -0,0 +1,942 @@
|
||||
{
|
||||
"name": "dashboard",
|
||||
"version": "2025.5.1",
|
||||
"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": "2025.9.1",
|
||||
"extraneous": true,
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"../../../../MorphUX": {
|
||||
"name": "morphux",
|
||||
"version": "2025.9.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.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
|
||||
"integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": "^7.27.1",
|
||||
"js-tokens": "^4.0.0",
|
||||
"picocolors": "^1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
||||
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
|
||||
"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.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.13.tgz",
|
||||
"integrity": "sha512-yCAeZl7a0DxgNVteXFHt9+uyFbqXGy/ShC4BlcHkoE0AfGXYv/BUiplV72DjMYXHDBXFjhvr6DD1NiRVfB4j8g==",
|
||||
"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.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.8.tgz",
|
||||
"integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
"version": "8.15.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
|
||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
||||
"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==",
|
||||
"license": "MIT",
|
||||
"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.3.7",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
|
||||
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
|
||||
"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.3",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz",
|
||||
"integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==",
|
||||
"dependencies": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.3.1",
|
||||
"engine.io-parser": "~5.2.1",
|
||||
"ws": "~8.17.1",
|
||||
"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": "Glob versions prior to v9 are no longer supported",
|
||||
"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.19",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz",
|
||||
"integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==",
|
||||
"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.6",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
|
||||
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
|
||||
"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.10",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
|
||||
"integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
|
||||
"dependencies": {
|
||||
"is-core-module": "^2.16.0",
|
||||
"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.79.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
|
||||
"integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
|
||||
"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.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz",
|
||||
"integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==",
|
||||
"dependencies": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.3.2",
|
||||
"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.4",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
|
||||
"integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
|
||||
"dependencies": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.3.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.44.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz",
|
||||
"integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==",
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
|
||||
"integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
|
||||
"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.17.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
|
||||
"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
|
||||
"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/dashboard/package.json
Normal file
27
frontend/views/dashboard/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/dashboard/rollup.config.js
Normal file
19
frontend/views/dashboard/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()
|
||||
],
|
||||
};
|
||||
15758
frontend/views/dashboard/script.js
Normal file
15758
frontend/views/dashboard/script.js
Normal file
File diff suppressed because it is too large
Load Diff
1
frontend/views/dashboard/script.js.map
Normal file
1
frontend/views/dashboard/script.js.map
Normal file
File diff suppressed because one or more lines are too long
31
frontend/views/dashboard/scss/calibration.scss
Normal file
31
frontend/views/dashboard/scss/calibration.scss
Normal file
@@ -0,0 +1,31 @@
|
||||
.ntsh_calibration {
|
||||
position: absolute;
|
||||
inset: 0px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding: var(--mux-edge-offset);
|
||||
|
||||
.ntsh_calibration-fullscreen {
|
||||
position: absolute;
|
||||
top: var(--mux-edge-offset);
|
||||
right: var(--mux-edge-offset);
|
||||
transition-duration: .2s;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
}
|
||||
178
frontend/views/dashboard/scss/dashboard.scss
Normal file
178
frontend/views/dashboard/scss/dashboard.scss
Normal file
@@ -0,0 +1,178 @@
|
||||
.ntsh_dashboard {
|
||||
position: absolute;
|
||||
inset: 0px;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(600px, 100%), 1fr));
|
||||
grid-auto-rows: min-content;
|
||||
align-items: stretch;
|
||||
justify-items: stretch;
|
||||
align-content: start;
|
||||
overflow-y: auto;
|
||||
|
||||
gap: var(--mux-edge-offset);
|
||||
box-sizing: border-box;
|
||||
padding: var(--mux-edge-offset);
|
||||
|
||||
.ntsh_dashboard-box {
|
||||
background: var(--mux-selected-color);
|
||||
box-sizing: border-box;
|
||||
padding: var(--mux-edge-offset);
|
||||
border-radius: var(--mux-rounding);
|
||||
|
||||
.ntsh_dashboard-box-header {
|
||||
padding-bottom: var(--mux-edge-offset-tiny);
|
||||
border-bottom: 1px solid #979797;
|
||||
margin-bottom: var(--mux-edge-offset-tiny);
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.mux_header:not(.ntsh_dashboard-box-header) {
|
||||
margin-bottom: var(--mux-edge-offset-tiny);
|
||||
}
|
||||
}
|
||||
|
||||
.ntsh_dashboard-unity-parameters {
|
||||
.ntsh_dashboard-unity-parameters-loading {
|
||||
text-align: center;
|
||||
color: #9d9d9d;
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
|
||||
&.ntsh_vertical {
|
||||
tr td {
|
||||
height: 24px;
|
||||
|
||||
&:first-child {
|
||||
width: min(150px, 20vw);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.ntsh_horizontal {}
|
||||
|
||||
&.ntsh_center {
|
||||
tr td {
|
||||
text-align: center;
|
||||
|
||||
.ntsh_status {
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
td {
|
||||
&:has(.ntsh_status) {
|
||||
width: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ntsh_dashboard-error {
|
||||
display: none;
|
||||
box-sizing: border-box;
|
||||
padding: var(--mux-edge-offset-tiny);
|
||||
border-radius: var(--mux-rounding);
|
||||
margin-top: var(--mux-edge-offset-tiny);
|
||||
background: #721e1e;
|
||||
}
|
||||
|
||||
.ntsh_progress {
|
||||
position: relative;
|
||||
background: #2f2f2f;
|
||||
width: 100%;
|
||||
height: 20px;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
|
||||
.ntsh_progress-value {
|
||||
height: 100%;
|
||||
background: #777777;
|
||||
|
||||
&.ntsh_progress-smooth {
|
||||
transition-duration: .3s;
|
||||
transition-timing-function: ease-in-out;
|
||||
}
|
||||
|
||||
&.mux_resizer {
|
||||
transition-duration: 0s;
|
||||
|
||||
.mux_resizer-grab {
|
||||
background: var(--mux-primary-color);
|
||||
border-radius: 4px;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ntsh_progress-label {
|
||||
position: absolute;
|
||||
z-index: 101;
|
||||
inset: 0px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 12px;
|
||||
color: #fff;
|
||||
font-weight: 500;
|
||||
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
.ntsh_status {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background: #868686;
|
||||
border: 4px solid #00000071;
|
||||
border-radius: 100%;
|
||||
box-sizing: border-box;
|
||||
|
||||
&.ntsh_status-green {
|
||||
background: #149214;
|
||||
}
|
||||
|
||||
&.ntsh_status-yellow {
|
||||
background: #ffbf00;
|
||||
}
|
||||
|
||||
&.ntsh_status-red {
|
||||
background: #ff0000;
|
||||
}
|
||||
|
||||
&.ntsh_status-gray {
|
||||
background: #868686;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.ntsh_buttons {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--mux-edge-offset-tiny);
|
||||
|
||||
.ntsh_button {
|
||||
min-width: 30px;
|
||||
height: 30px;
|
||||
box-sizing: border-box;
|
||||
padding: 0px 4px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: #787878;
|
||||
cursor: pointer;
|
||||
transition: background .2s;
|
||||
|
||||
&:hover {
|
||||
background: #5a5a5a;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
79
frontend/views/dashboard/scss/index.scss
Normal file
79
frontend/views/dashboard/scss/index.scss
Normal file
@@ -0,0 +1,79 @@
|
||||
@use '../node_modules/morphux/style.css';
|
||||
|
||||
@use './dashboard.scss';
|
||||
@use './tabs.scss';
|
||||
@use './calibration.scss';
|
||||
|
||||
:root {
|
||||
--mux-primary-color: #247476;
|
||||
--mux-primary-off-color: #1d5253;
|
||||
|
||||
}
|
||||
|
||||
body {
|
||||
&:not(.ntsh_service) {
|
||||
.ntsh_buttons {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mux_menubar-locater.mux_left {
|
||||
.mux_menubar-item {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.only-service {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&.ntsh_service {
|
||||
.no-service {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sn {
|
||||
position: absolute;
|
||||
inset: 0px;
|
||||
overflow: hidden;
|
||||
|
||||
.ntsh_menubar {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
height: 100%;
|
||||
|
||||
.mux_menubar {
|
||||
.mux_menubar-item.mux_menubar-item-selected {
|
||||
background: var(--mux-primary-off-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ntsh_logs {
|
||||
position: absolute;
|
||||
inset: 0px;
|
||||
box-sizing: border-box;
|
||||
padding: var(--mux-edge-offset);
|
||||
font-family: monospace;
|
||||
background: black;
|
||||
overflow-y: auto;
|
||||
|
||||
.ntsh_log {
|
||||
&.ntsh_log-fill {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #939393;
|
||||
}
|
||||
|
||||
&.ntsh_log-normal {
|
||||
color: #c7c7c7;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
14
frontend/views/dashboard/scss/tabs.scss
Normal file
14
frontend/views/dashboard/scss/tabs.scss
Normal file
@@ -0,0 +1,14 @@
|
||||
.ntsh_tabs {
|
||||
position: absolute;
|
||||
inset: 50px 0 0 0;
|
||||
|
||||
.ntsh_tab {
|
||||
position: absolute;
|
||||
inset: 0px;
|
||||
display: none;
|
||||
|
||||
&.ntsh_tab-visible {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
2603
frontend/views/dashboard/style.css
Normal file
2603
frontend/views/dashboard/style.css
Normal file
File diff suppressed because it is too large
Load Diff
1
frontend/views/dashboard/style.css.map
Normal file
1
frontend/views/dashboard/style.css.map
Normal file
File diff suppressed because one or more lines are too long
40
frontend/views/dashboard/ts/calibration.ts
Normal file
40
frontend/views/dashboard/ts/calibration.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { Main } from './main';
|
||||
|
||||
export class Calibration {
|
||||
private _Main: Main;
|
||||
|
||||
container: HTMLDivElement = document.querySelector('.ntsh_calibration');
|
||||
image: HTMLImageElement = this.container.querySelector('img');
|
||||
fullscreenButton: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_calibration-fullscreen'
|
||||
);
|
||||
|
||||
constructor(Main: Main) {
|
||||
this._Main = Main;
|
||||
|
||||
this.registerListeners();
|
||||
}
|
||||
|
||||
private fetchClock: NodeJS.Timeout;
|
||||
startFetchClock() {
|
||||
this.image.src = `/calibrationImage?t=${Date.now()}`;
|
||||
this.fetchClock = setInterval(() => {
|
||||
this.image.src = `/calibrationImage?t=${Date.now()}`;
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
stopFetchClock() {
|
||||
clearInterval(this.fetchClock);
|
||||
}
|
||||
|
||||
private registerListeners() {
|
||||
this._Main.TabController.registerListener('calibration', (visible) => {
|
||||
if (visible) this.startFetchClock();
|
||||
else this.stopFetchClock();
|
||||
});
|
||||
|
||||
this.fullscreenButton.addEventListener('click', () => {
|
||||
this.image.requestFullscreen();
|
||||
});
|
||||
}
|
||||
}
|
||||
192
frontend/views/dashboard/ts/dashboard.camerarunner.ts
Normal file
192
frontend/views/dashboard/ts/dashboard.camerarunner.ts
Normal file
@@ -0,0 +1,192 @@
|
||||
import { MorphFeature } from 'morphux';
|
||||
import { Main } from './main';
|
||||
import {
|
||||
formatUptime,
|
||||
ServiceState,
|
||||
setStatusState,
|
||||
StatusType,
|
||||
} from './utils';
|
||||
|
||||
const CELCIUS = 'ºC';
|
||||
|
||||
export class DashboardCameraRunner {
|
||||
private _Main: Main;
|
||||
|
||||
container: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-camerarunner'
|
||||
);
|
||||
|
||||
connectionStatus: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_dashboard-camerarunner-connectionstatus'
|
||||
);
|
||||
connectionInfo: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_dashboard-camerarunner-connectioninfo'
|
||||
);
|
||||
rebootButton: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_dashboard-camerarunner-reboot'
|
||||
);
|
||||
|
||||
processStatus: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_dashboard-camerarunner-processstatus'
|
||||
);
|
||||
processInfo: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_dashboard-camerarunner-processinfo'
|
||||
);
|
||||
restartButton: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_dashboard-camerarunner-restart'
|
||||
);
|
||||
|
||||
uptimeInfo: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_dashboard-camerarunner-uptime'
|
||||
);
|
||||
|
||||
errorContainer: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_dashboard-camerarunner-error'
|
||||
);
|
||||
errorText: HTMLDivElement = this.container.querySelector(
|
||||
'.ntsh_dashboard-camerarunner-errortext'
|
||||
);
|
||||
|
||||
constructor(Main: Main) {
|
||||
this._Main = Main;
|
||||
|
||||
this.registerListeners();
|
||||
}
|
||||
|
||||
updateState(state: CameraRunnerStatus) {
|
||||
// ----------- Connection -----------
|
||||
setStatusState(
|
||||
this.connectionStatus,
|
||||
{
|
||||
CONNECTING: 'yellow',
|
||||
CONNECTED: 'green',
|
||||
DISCONNECTED: 'red',
|
||||
FAILED: 'red',
|
||||
}[state.state] as StatusType
|
||||
);
|
||||
this.connectionInfo.innerText = state.message ?? '';
|
||||
|
||||
// ----------- Process -----------
|
||||
if (state.state != 'CONNECTED') {
|
||||
state.processStatus.state = 'STOPPED';
|
||||
state.processStatus.message = 'Not connected';
|
||||
state.processStatus.startTime = -1;
|
||||
|
||||
this.restartButton.style.display = 'none';
|
||||
this.rebootButton.style.display = 'none';
|
||||
} else {
|
||||
this.rebootButton.style.display = 'flex';
|
||||
|
||||
if (state.processStatus.state == 'RUNNING')
|
||||
this.restartButton.style.display = 'flex';
|
||||
else this.restartButton.style.display = 'none';
|
||||
}
|
||||
|
||||
setStatusState(
|
||||
this.processStatus,
|
||||
{
|
||||
RUNNING: 'green',
|
||||
STOPPED: 'gray',
|
||||
STARTING: 'yellow',
|
||||
PROBLEM: 'red',
|
||||
}[state.processStatus.state] as StatusType
|
||||
);
|
||||
this.processInfo.innerText = state.processStatus.message ?? '';
|
||||
|
||||
// ----------- Uptime -----------
|
||||
const uptimeSeconds =
|
||||
state.processStatus.startTime == -1
|
||||
? -1
|
||||
: (Date.now() - state.processStatus.startTime) / 1000;
|
||||
this.uptimeInfo.innerText = formatUptime(uptimeSeconds);
|
||||
|
||||
// ----------- Error -----------
|
||||
const errors: string[] = [];
|
||||
if ((state?.error ?? '').trim().length > 0) errors.push(state.error);
|
||||
if ((state?.processStatus?.error ?? '').trim().length > 0)
|
||||
errors.push(state.processStatus.error);
|
||||
if (errors.length > 0) {
|
||||
this.errorText.innerText = errors.join('\n');
|
||||
this.errorContainer.style.display = 'block';
|
||||
} else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
|
||||
this._Main.Logs.setCameraLogs(state.processStatus.output.current);
|
||||
}
|
||||
|
||||
registerListeners() {
|
||||
this._Main.socket.on(
|
||||
'cameraRunnerState',
|
||||
(state: CameraRunnerStatus) => {
|
||||
this.updateState(state);
|
||||
}
|
||||
);
|
||||
|
||||
this.restartButton.addEventListener('click', async () => {
|
||||
this.executeCommand(
|
||||
'restart',
|
||||
'Are you sure you want to restart the Camera Runner process?'
|
||||
);
|
||||
});
|
||||
|
||||
this.rebootButton.addEventListener('click', async () => {
|
||||
this.executeCommand(
|
||||
'reboot',
|
||||
'Are you sure you want to reboot the Camera Runner machine?'
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
private async executeCommand(command: string, message: string) {
|
||||
const confirmed = await MorphFeature.Confirm({
|
||||
title: 'Are you sure?',
|
||||
message,
|
||||
});
|
||||
if (!confirmed) return;
|
||||
|
||||
MorphFeature.Loader({
|
||||
active: true,
|
||||
message: `Requesting Camera Runner ${command}...`,
|
||||
});
|
||||
this._Main.socket.emit(
|
||||
'cameraRunner',
|
||||
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: `Camera Runner is ${command}ing...`,
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
interface CameraRunnerStatus {
|
||||
state: ServiceState;
|
||||
message?: string;
|
||||
error?: string;
|
||||
|
||||
processStatus: ProcessStatus;
|
||||
}
|
||||
|
||||
export type ProcessStatusState = 'RUNNING' | 'STOPPED' | 'STARTING' | 'PROBLEM';
|
||||
|
||||
interface ProcessStatusSimple {
|
||||
state: ProcessStatusState;
|
||||
message?: string;
|
||||
error?: string;
|
||||
}
|
||||
interface ProcessStatus extends ProcessStatusSimple {
|
||||
startTime: number;
|
||||
output: { current: string[]; last: string[] };
|
||||
}
|
||||
353
frontend/views/dashboard/ts/dashboard.unity.ts
Normal file
353
frontend/views/dashboard/ts/dashboard.unity.ts
Normal file
@@ -0,0 +1,353 @@
|
||||
import { ce, MorphComponent, MorphFeature } from 'morphux';
|
||||
import { Main } from './main';
|
||||
import {
|
||||
createProgress,
|
||||
formatUptime,
|
||||
ServiceState,
|
||||
setProgressState,
|
||||
setStatusState,
|
||||
StatusType,
|
||||
} from './utils';
|
||||
|
||||
export class DashboardUnity {
|
||||
private _Main: Main;
|
||||
|
||||
container: HTMLDivElement = document.querySelector('.ntsh_dashboard-unity');
|
||||
|
||||
processStatus: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-processstatus'
|
||||
);
|
||||
processInfo: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-processinfo'
|
||||
);
|
||||
restartButton: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-restart'
|
||||
);
|
||||
|
||||
uptimeInfo: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-uptime'
|
||||
);
|
||||
|
||||
webSocketStatus: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-websocketstatus'
|
||||
);
|
||||
webSocketInfo: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-websocketinfo'
|
||||
);
|
||||
|
||||
zedStreamStatus: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-zedstreamstatus'
|
||||
);
|
||||
zedStreamInfo: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-zedstreaminfo'
|
||||
);
|
||||
|
||||
zedStreamFps: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-zedstreamfps'
|
||||
);
|
||||
zedStreamPath: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-zedstreampath'
|
||||
);
|
||||
|
||||
timelineWatching: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-timeline-watching'
|
||||
);
|
||||
timelineStanding: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-timeline-standing'
|
||||
);
|
||||
timelineProgress: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-timeline-progress'
|
||||
);
|
||||
|
||||
parametersTable: HTMLTableElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-parameters'
|
||||
);
|
||||
|
||||
errorContainer: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-error'
|
||||
);
|
||||
errorText: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_dashboard-unity-errortext'
|
||||
);
|
||||
|
||||
constructor(Main: Main) {
|
||||
this._Main = Main;
|
||||
|
||||
this.registerListeners();
|
||||
}
|
||||
|
||||
private runnerError: string;
|
||||
updateRunnerState(state: UnityRunnerStatus) {
|
||||
// ----------- Process -----------
|
||||
if (state.state != 'RUNNING') {
|
||||
state.startTime = -1;
|
||||
|
||||
this.restartButton.style.display = 'none';
|
||||
} else {
|
||||
this.restartButton.style.display = 'flex';
|
||||
}
|
||||
|
||||
setStatusState(
|
||||
this.processStatus,
|
||||
{
|
||||
RUNNING: 'green',
|
||||
STOPPED: 'red',
|
||||
STARTING: 'yellow',
|
||||
PROBLEM: 'red',
|
||||
}[state.state] as StatusType
|
||||
);
|
||||
this.processInfo.innerText = state.message ?? '';
|
||||
|
||||
// ----------- Uptime -----------
|
||||
const uptimeSeconds =
|
||||
state.startTime == -1 ? -1 : (Date.now() - state.startTime) / 1000;
|
||||
this.uptimeInfo.innerText = formatUptime(uptimeSeconds);
|
||||
|
||||
// ----------- Error -----------
|
||||
if ((state?.error ?? '').trim().length > 0)
|
||||
this.runnerError = state.error;
|
||||
else this.runnerError = null;
|
||||
this.updateError();
|
||||
|
||||
this._Main.Logs.setUnityLogs(state.output.current);
|
||||
}
|
||||
|
||||
private webSocketError: string;
|
||||
updateWebSocketState(state: UnityWebSocketStatus) {
|
||||
// ----------- WebSocket -----------
|
||||
setStatusState(
|
||||
this.webSocketStatus,
|
||||
{
|
||||
CONNECTING: 'yellow',
|
||||
CONNECTED: 'green',
|
||||
DISCONNECTED: 'gray',
|
||||
FAILED: 'red',
|
||||
}[state.state] as StatusType
|
||||
);
|
||||
this.webSocketInfo.innerText = state.message ?? '';
|
||||
|
||||
// ----------- ZED Stream -----------
|
||||
setStatusState(
|
||||
this.zedStreamStatus,
|
||||
state.parameters.zedReady ? 'green' : 'red'
|
||||
);
|
||||
this.zedStreamInfo.innerText = state.parameters.zedReady
|
||||
? `Connected to ${state.parameters.zedPath}`
|
||||
: 'Not ready';
|
||||
this.zedStreamFps.innerText =
|
||||
state.parameters.zedFPS == '-' ? '' : state.parameters.zedFPS;
|
||||
|
||||
// ----------- Timeline -----------
|
||||
this.timelineWatching.innerText = state.parameters.timelineWatching
|
||||
? 'Yes'
|
||||
: 'No';
|
||||
this.timelineStanding.innerText = state.parameters.timelineStanding
|
||||
? 'Yes'
|
||||
: 'No';
|
||||
setProgressState(
|
||||
this.timelineProgress,
|
||||
state.parameters.timelineProgress
|
||||
);
|
||||
|
||||
// ----------- Parameters -----------
|
||||
this.renderParameterSliders(state.parameters.parameters);
|
||||
|
||||
// ----------- Error -----------
|
||||
if ((state?.error ?? '').trim().length > 0)
|
||||
this.webSocketError = state.error;
|
||||
else this.webSocketError = null;
|
||||
this.updateError();
|
||||
}
|
||||
|
||||
private renderParameterSliders(parameters: UnityParameters['parameters']) {
|
||||
if (parameters.length === 0) return;
|
||||
|
||||
const existingSliders = this.parametersTable.querySelectorAll(
|
||||
'.ntsh_dashboard-unity-parameter-row'
|
||||
);
|
||||
|
||||
if (existingSliders.length !== parameters.length) {
|
||||
this.parametersTable.innerHTML = '';
|
||||
|
||||
parameters.forEach((param) => {
|
||||
const row = ce('tr', 'ntsh_dashboard-unity-parameter-row');
|
||||
|
||||
const nameCell = ce('td');
|
||||
nameCell.appendChild(
|
||||
ce('div', 'mux_text', null, param.sliderName)
|
||||
);
|
||||
row.appendChild(nameCell);
|
||||
|
||||
const progressCell = ce('td', 'no-service');
|
||||
progressCell.appendChild(createProgress(param.outputValue));
|
||||
row.appendChild(progressCell);
|
||||
|
||||
const sliderCell = ce('td', 'only-service');
|
||||
const sliderProgress = createProgress(param.outputValue);
|
||||
const sliderValue: HTMLDivElement =
|
||||
sliderProgress.querySelector('.ntsh_progress-value');
|
||||
sliderValue.classList.add('mux_resizer');
|
||||
sliderCell.appendChild(sliderProgress);
|
||||
|
||||
const resizer = new MorphComponent.Resizer({
|
||||
existingContainer: sliderValue,
|
||||
direction: 'right',
|
||||
relative: true,
|
||||
min: 0,
|
||||
max: () => sliderProgress.clientWidth,
|
||||
});
|
||||
let lastPercentage: number = -1;
|
||||
resizer.on('resized', (size) => {
|
||||
const percentage =
|
||||
Math.round((size / sliderProgress.clientWidth) * 100) /
|
||||
100;
|
||||
if (percentage === lastPercentage) return;
|
||||
lastPercentage = percentage;
|
||||
|
||||
this._Main.socket.emit(
|
||||
'unityWebSocket',
|
||||
'parameterValue',
|
||||
param.sliderIndex,
|
||||
percentage
|
||||
);
|
||||
setProgressState(sliderProgress, percentage);
|
||||
});
|
||||
|
||||
row.appendChild(sliderCell);
|
||||
|
||||
this.parametersTable.appendChild(row);
|
||||
});
|
||||
} else {
|
||||
existingSliders.forEach((row, index) => {
|
||||
const value = parameters[index].outputValue;
|
||||
|
||||
const progressElement: HTMLDivElement = row.querySelector(
|
||||
'.no-service .ntsh_progress'
|
||||
);
|
||||
setProgressState(progressElement, value);
|
||||
|
||||
const sliderElement: HTMLDivElement = row.querySelector(
|
||||
'.only-service .ntsh_progress'
|
||||
);
|
||||
if (sliderElement.querySelector('.mux_resizer-moving') == null)
|
||||
setProgressState(sliderElement, value);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private updateError() {
|
||||
const errors: string[] = [];
|
||||
if (this.runnerError != null) errors.push(this.runnerError);
|
||||
if (this.webSocketError != null) errors.push(this.webSocketError);
|
||||
|
||||
if (errors.length > 0) {
|
||||
this.errorText.innerText = errors.join('\n');
|
||||
this.errorContainer.style.display = 'block';
|
||||
} else {
|
||||
this.errorContainer.style.display = 'none';
|
||||
this.errorText.innerText = '';
|
||||
}
|
||||
}
|
||||
|
||||
registerListeners() {
|
||||
this._Main.socket.on('unityRunnerState', (state: UnityRunnerStatus) =>
|
||||
this.updateRunnerState(state)
|
||||
);
|
||||
this._Main.socket.on(
|
||||
'unityWebSocketState',
|
||||
(state: UnityWebSocketStatus) => this.updateWebSocketState(state)
|
||||
);
|
||||
|
||||
this.restartButton.addEventListener('click', async () => {
|
||||
this.executeCommand(
|
||||
'restart',
|
||||
'Are you sure you want to restart the Unity Runner process?'
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
private async executeCommand(command: string, message: string) {
|
||||
const confirmed = await MorphFeature.Confirm({
|
||||
title: 'Are you sure?',
|
||||
message,
|
||||
});
|
||||
if (!confirmed) return;
|
||||
|
||||
MorphFeature.Loader({
|
||||
active: true,
|
||||
message: `Requesting Unity Runner ${command}...`,
|
||||
});
|
||||
this._Main.socket.emit(
|
||||
'unityRunner',
|
||||
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: `Unity Runner is ${command}ing...`,
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
interface UnityRunnerStatus {
|
||||
state: 'RUNNING' | 'STOPPED' | 'STARTING' | 'PROBLEM';
|
||||
message?: string;
|
||||
error?: string;
|
||||
|
||||
startTime: number;
|
||||
output: { current: string[]; last: string[] };
|
||||
}
|
||||
|
||||
interface UnityWebSocketStatus {
|
||||
state: ServiceState;
|
||||
message?: string;
|
||||
error?: string;
|
||||
|
||||
parameters: UnityParameters;
|
||||
}
|
||||
|
||||
interface UnityParameters {
|
||||
timelineWatching: boolean;
|
||||
timelineStanding: boolean;
|
||||
timelineProgress: number;
|
||||
zedPath: string;
|
||||
zedReady: boolean;
|
||||
zedFPS: string;
|
||||
parameters: UnitySocketMessageHeartbeat['heartbeat']['dataSliders'];
|
||||
}
|
||||
|
||||
interface UnitySocketMessageBase {
|
||||
type: string;
|
||||
timestamp: number;
|
||||
}
|
||||
interface UnitySocketMessageHeartbeat extends UnitySocketMessageBase {
|
||||
type: 'heartbeat_data';
|
||||
heartbeat: {
|
||||
dataSliders: {
|
||||
sliderIndex: number;
|
||||
sliderName: string;
|
||||
outputValue: number;
|
||||
}[];
|
||||
dataTimeline: {
|
||||
isStanding: boolean;
|
||||
isWatching: boolean;
|
||||
timelineProgress: number;
|
||||
};
|
||||
zedCamera: {
|
||||
cameraFPS: string;
|
||||
isZedReady: boolean;
|
||||
streamInputIP: string;
|
||||
streamInputPort: number;
|
||||
zedGrabError: number;
|
||||
};
|
||||
};
|
||||
}
|
||||
96
frontend/views/dashboard/ts/logsHandler.ts
Normal file
96
frontend/views/dashboard/ts/logsHandler.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
import { ce } from 'morphux';
|
||||
import { delay } from './utils';
|
||||
import { Main } from './main';
|
||||
import { AnsiUp } from 'ansi_up';
|
||||
|
||||
export class LogsHandler {
|
||||
private _Main: Main;
|
||||
|
||||
ansiUp = new AnsiUp();
|
||||
|
||||
cameraLogsContainer: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_tab[tabid="cameralogs"] .ntsh_logs'
|
||||
);
|
||||
unityLogsContainer: HTMLDivElement = document.querySelector(
|
||||
'.ntsh_tab[tabid="unitylogs"] .ntsh_logs'
|
||||
);
|
||||
|
||||
constructor(Main: Main) {
|
||||
this._Main = Main;
|
||||
|
||||
this.registerListeners();
|
||||
}
|
||||
|
||||
setCameraLogs(logs: string[]) {
|
||||
this.applyLogs(this.cameraLogsContainer, logs);
|
||||
}
|
||||
|
||||
setUnityLogs(logs: string[]) {
|
||||
this.applyLogs(this.unityLogsContainer, logs);
|
||||
}
|
||||
|
||||
private firstTime: Set<HTMLDivElement> = new Set();
|
||||
|
||||
private async applyLogs(container: HTMLDivElement, logs: string[]) {
|
||||
let logCount = container.querySelectorAll(
|
||||
'.ntsh_log.ntsh_log-normal'
|
||||
).length;
|
||||
if (logCount === logs.length) return;
|
||||
if (logCount > logs.length) logCount = 0;
|
||||
|
||||
const isAtBottom =
|
||||
!this.firstTime.has(container) ||
|
||||
container.scrollTop + container.clientHeight >=
|
||||
container.scrollHeight;
|
||||
|
||||
container.innerHTML = '';
|
||||
|
||||
logs.forEach((log, i) => {
|
||||
const element = ce(
|
||||
'div',
|
||||
['ntsh_log', 'ntsh_log-normal'],
|
||||
null,
|
||||
null,
|
||||
this.ansiUp.ansi_to_html(log)
|
||||
);
|
||||
|
||||
if (this.firstTime.has(container) && i > logCount - 1) {
|
||||
element.style.display = 'none';
|
||||
const spawnDelay = (i - logCount) * 10;
|
||||
setTimeout(() => {
|
||||
element.style.display = 'block';
|
||||
if (isAtBottom)
|
||||
container.scrollTop = container.scrollHeight;
|
||||
}, spawnDelay);
|
||||
}
|
||||
|
||||
container.appendChild(element);
|
||||
if (isAtBottom) container.scrollTop = container.scrollHeight;
|
||||
});
|
||||
|
||||
if (!this.firstTime.has(container)) {
|
||||
container.scrollTop = container.scrollHeight;
|
||||
this.firstTime.add(container);
|
||||
}
|
||||
}
|
||||
|
||||
private registerListeners() {
|
||||
this._Main.TabController.registerListener('cameralogs', (visible) => {
|
||||
if (!visible) return;
|
||||
|
||||
setTimeout(() => {
|
||||
this.cameraLogsContainer.scrollTop =
|
||||
this.cameraLogsContainer.scrollHeight;
|
||||
}, 10);
|
||||
});
|
||||
|
||||
this._Main.TabController.registerListener('unitylogs', (visible) => {
|
||||
if (!visible) return;
|
||||
|
||||
setTimeout(() => {
|
||||
this.unityLogsContainer.scrollTop =
|
||||
this.unityLogsContainer.scrollHeight;
|
||||
}, 10);
|
||||
});
|
||||
}
|
||||
}
|
||||
37
frontend/views/dashboard/ts/main.ts
Normal file
37
frontend/views/dashboard/ts/main.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { io } from 'socket.io-client';
|
||||
import { MenuBar } from './menuBar';
|
||||
import { TabController } from './tabController';
|
||||
import { MorphFeature } from 'morphux';
|
||||
import { DashboardCameraRunner } from './dashboard.camerarunner';
|
||||
import { LogsHandler } from './logsHandler';
|
||||
import { Calibration } from './calibration';
|
||||
import { DashboardUnity } from './dashboard.unity';
|
||||
|
||||
const socket = io('/');
|
||||
export class Main {
|
||||
socket = socket;
|
||||
|
||||
MenuBar = new MenuBar(this);
|
||||
TabController = new TabController(this);
|
||||
|
||||
Logs = new LogsHandler(this);
|
||||
Calibration = new Calibration(this);
|
||||
|
||||
DashboardCameraRunner = new DashboardCameraRunner(this);
|
||||
DashboardUnityRunner = new DashboardUnity(this);
|
||||
|
||||
constructor() {
|
||||
if (window.location.search.includes('debug')) {
|
||||
(window as any).SN = this;
|
||||
console.log('Debug mode enabled');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MorphFeature.Loader({ active: true, message: 'Connecting to server...' });
|
||||
socket.on('connect', () => {
|
||||
console.log('Connected to server');
|
||||
MorphFeature.Loader({ active: false });
|
||||
});
|
||||
|
||||
const _Main = new Main();
|
||||
142
frontend/views/dashboard/ts/menuBar.ts
Normal file
142
frontend/views/dashboard/ts/menuBar.ts
Normal file
@@ -0,0 +1,142 @@
|
||||
import { MorphComponent, MorphFeature } from 'morphux';
|
||||
import { Main } from './main';
|
||||
import { ComponentMenuBar } from 'morphux/dist/Components/MenuBar/Component.MenuBar';
|
||||
|
||||
export class MenuBar {
|
||||
private _Main: Main;
|
||||
|
||||
container: HTMLDivElement = document.querySelector('.ntsh_menubar');
|
||||
|
||||
menubar: ComponentMenuBar;
|
||||
|
||||
constructor(main: Main) {
|
||||
this._Main = main;
|
||||
|
||||
this.build();
|
||||
|
||||
setTimeout(() => {
|
||||
if (localStorage?.getItem('serviceMode') === 'true')
|
||||
this.toggleServiceMode(true, true);
|
||||
}, 10);
|
||||
}
|
||||
|
||||
build() {
|
||||
this.menubar = new ComponentMenuBar({
|
||||
left: [
|
||||
{
|
||||
type: 'image',
|
||||
url: '/img/morphix_logo_white.png',
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
text: 'Dashboard',
|
||||
materialIcon: 'dashboard',
|
||||
uniqueIdentifier: 'dashboard',
|
||||
selected: true,
|
||||
|
||||
click: () => this._Main.TabController.showTab('dashboard'),
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
text: 'Calibration',
|
||||
uniqueIdentifier: 'calibration',
|
||||
materialIcon: 'crop_free',
|
||||
|
||||
click: () =>
|
||||
this._Main.TabController.showTab('calibration'),
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
text: 'Unity Logs',
|
||||
uniqueIdentifier: 'unitylogs',
|
||||
materialIcon: 'deployed_code',
|
||||
|
||||
click: () => this._Main.TabController.showTab('unitylogs'),
|
||||
},
|
||||
{
|
||||
type: 'normal',
|
||||
text: 'Camera Logs',
|
||||
uniqueIdentifier: 'cameralogs',
|
||||
materialIcon: 'photo_camera',
|
||||
|
||||
click: () => this._Main.TabController.showTab('cameralogs'),
|
||||
},
|
||||
],
|
||||
|
||||
right: [
|
||||
{
|
||||
type: 'normal',
|
||||
text: document.body.classList.contains('ntsh_service')
|
||||
? 'Exit Service'
|
||||
: 'Service Mode',
|
||||
uniqueIdentifier: 'serviceMode',
|
||||
materialIcon: document.body.classList.contains(
|
||||
'ntsh_service'
|
||||
)
|
||||
? 'logout'
|
||||
: 'engineering',
|
||||
|
||||
click: async () => {
|
||||
const mobileMenu: HTMLDivElement =
|
||||
document.querySelector('.mux_mobilemenu');
|
||||
mobileMenu?.click();
|
||||
|
||||
this.toggleServiceMode();
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
this.container.innerHTML = '';
|
||||
this.container.appendChild(this.menubar.container);
|
||||
}
|
||||
|
||||
async toggleServiceMode(
|
||||
mode?: boolean,
|
||||
skipPin?: boolean
|
||||
): Promise<boolean> {
|
||||
const newMode =
|
||||
mode ?? !document.body.classList.contains('ntsh_service');
|
||||
|
||||
if (newMode) {
|
||||
if (skipPin !== true) {
|
||||
const servicePin: string = await MorphFeature.Prompt({
|
||||
title: 'Service Mode',
|
||||
message: 'Enter the service PIN:',
|
||||
type: 'number',
|
||||
canBeEmpty: false,
|
||||
placeholder: '****',
|
||||
});
|
||||
if (servicePin !== '4252') {
|
||||
MorphFeature.Alert({
|
||||
title: 'Error',
|
||||
message: 'Incorrect PIN provided.',
|
||||
});
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
document.body.classList.add('ntsh_service');
|
||||
|
||||
localStorage.setItem('serviceMode', 'true');
|
||||
|
||||
MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: 'Service mode activated.',
|
||||
});
|
||||
} else {
|
||||
document.body.classList.remove('ntsh_service');
|
||||
|
||||
this._Main.TabController.showTab('dashboard');
|
||||
|
||||
localStorage.setItem('serviceMode', 'false');
|
||||
|
||||
MorphFeature.Notification({
|
||||
level: 'success',
|
||||
message: 'Service mode deactivated.',
|
||||
});
|
||||
}
|
||||
|
||||
this.build();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
88
frontend/views/dashboard/ts/tabController.ts
Normal file
88
frontend/views/dashboard/ts/tabController.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
import { MorphFeature } from 'morphux';
|
||||
import { Main } from './main';
|
||||
|
||||
export type Tabs = 'dashboard' | 'calibration' | 'cameralogs' | 'unitylogs';
|
||||
export class TabController {
|
||||
private _Main: Main;
|
||||
|
||||
container: HTMLDivElement = document.querySelector('.ntsh_tabs');
|
||||
|
||||
currentTabId: Tabs;
|
||||
|
||||
constructor(main: Main) {
|
||||
this._Main = main;
|
||||
|
||||
this.registerNavigationListener();
|
||||
}
|
||||
|
||||
private tabListeners: Map<Tabs, (visible: boolean) => void> = new Map();
|
||||
registerListener(tabId: Tabs, callback: (visible: boolean) => void) {
|
||||
if (this.tabListeners.has(tabId))
|
||||
throw new Error(
|
||||
`Listener for tab id ${tabId} has already been registered!`
|
||||
);
|
||||
|
||||
this.tabListeners.set(tabId, callback);
|
||||
callback(this.currentTabId == tabId);
|
||||
}
|
||||
|
||||
async showTab(tabId: Tabs) {
|
||||
if (this.currentTabId == tabId) return;
|
||||
|
||||
if (
|
||||
tabId !== 'dashboard' &&
|
||||
!document.body.classList.contains('ntsh_service')
|
||||
) {
|
||||
const confirmed = await MorphFeature.Confirm({
|
||||
title: 'Service Mode Required',
|
||||
message: `You need to be in service mode to access tab ${tabId}, switch to Service Mode now?`,
|
||||
});
|
||||
if (!confirmed) return this.showTab('dashboard');
|
||||
|
||||
const succeed = await this._Main.MenuBar.toggleServiceMode(true);
|
||||
if (!succeed) return this.showTab('dashboard');
|
||||
}
|
||||
|
||||
this._Main.MenuBar.menubar.setSelected(tabId);
|
||||
|
||||
if (this.tabListeners.has(this.currentTabId))
|
||||
this.tabListeners.get(this.currentTabId)(false);
|
||||
if (this.tabListeners.has(tabId)) this.tabListeners.get(tabId)(true);
|
||||
this.currentTabId = tabId;
|
||||
|
||||
this.container
|
||||
.querySelectorAll('.ntsh_tab')
|
||||
.forEach((tab) => tab.classList.remove('ntsh_tab-visible'));
|
||||
|
||||
this.container
|
||||
.querySelector(`.ntsh_tab[tabid="${tabId}"]`)
|
||||
.classList.add('ntsh_tab-visible');
|
||||
|
||||
window.history.pushState(
|
||||
{ tab: tabId },
|
||||
'',
|
||||
`/${tabId}${window.location.search}`
|
||||
);
|
||||
|
||||
var tabName = {
|
||||
dashboard: 'Dashboard',
|
||||
calibration: 'Calibration',
|
||||
cameralogs: 'Camera Logs',
|
||||
unitylogs: 'Unity Logs',
|
||||
}[tabId];
|
||||
document.title = `NTSH Control - ${tabName}`;
|
||||
}
|
||||
|
||||
private registerNavigationListener() {
|
||||
window.addEventListener('popstate', (event) => {
|
||||
const state = event.state;
|
||||
if (state && state.tab) this.showTab(state.tab);
|
||||
});
|
||||
|
||||
var startTab = window.location.pathname
|
||||
.replace('/', '')
|
||||
.split('/')
|
||||
.shift() as Tabs;
|
||||
this.showTab(startTab.length > 0 ? startTab : 'dashboard');
|
||||
}
|
||||
}
|
||||
81
frontend/views/dashboard/ts/utils.ts
Normal file
81
frontend/views/dashboard/ts/utils.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
import { ce } from 'morphux';
|
||||
|
||||
/**
|
||||
* A linear interpolation helper function.
|
||||
* @param a The start value.
|
||||
* @param b The end value.
|
||||
* @param t The interpolation factor (0 to 1).
|
||||
* @returns The interpolated value.
|
||||
*/
|
||||
export const lerp = (a: number, b: number, t: number): number =>
|
||||
a + (b - a) * t;
|
||||
|
||||
export const setStatusState = (
|
||||
statusElement: HTMLDivElement,
|
||||
state: StatusType
|
||||
) => {
|
||||
statusElement.classList.remove(
|
||||
'ntsh_status-green',
|
||||
'ntsh_status-yellow',
|
||||
'ntsh_status-red',
|
||||
'ntsh_status-gray'
|
||||
);
|
||||
statusElement.classList.add(`ntsh_status-${state}`);
|
||||
};
|
||||
export type StatusType = 'green' | 'yellow' | 'red' | 'gray';
|
||||
|
||||
export const setProgressState = (
|
||||
progressElement: HTMLDivElement,
|
||||
percentage: number
|
||||
) => {
|
||||
const value: HTMLDivElement = progressElement.querySelector(
|
||||
'.ntsh_progress-value'
|
||||
);
|
||||
value.style.width = `${percentage * 100}%`;
|
||||
|
||||
const label: HTMLDivElement = progressElement.querySelector(
|
||||
'.ntsh_progress-label'
|
||||
);
|
||||
label.innerText = `${Math.round(percentage * 100)}%`;
|
||||
};
|
||||
|
||||
export const createProgress = (value: number) => {
|
||||
const progress = ce('div', 'ntsh_progress');
|
||||
progress.appendChild(ce('div', 'ntsh_progress-value'));
|
||||
progress.appendChild(ce('div', 'ntsh_progress-label'));
|
||||
setProgressState(progress, value);
|
||||
return progress;
|
||||
};
|
||||
export function capitalizeFirstLetter(string: string) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
}
|
||||
|
||||
export type ServiceState =
|
||||
| 'CONNECTING'
|
||||
| 'CONNECTED'
|
||||
| 'DISCONNECTED'
|
||||
| 'FAILED';
|
||||
|
||||
export function formatUptime(seconds: number): string {
|
||||
if (seconds < 0) return '';
|
||||
const days = Math.floor(seconds / 86400);
|
||||
seconds %= 86400;
|
||||
const hours = Math.floor(seconds / 3600);
|
||||
seconds %= 3600;
|
||||
const minutes = Math.floor(seconds / 60);
|
||||
seconds = Math.floor(seconds % 60);
|
||||
|
||||
const parts = [];
|
||||
if (days > 0) parts.push(`${days}d`);
|
||||
|
||||
parts.push(
|
||||
`${hours.toString().padStart(2, '0')}:${minutes
|
||||
.toString()
|
||||
.padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`
|
||||
);
|
||||
return parts.join(' ');
|
||||
}
|
||||
|
||||
export function delay(duration: number) {
|
||||
return new Promise((resolve) => setTimeout(resolve, duration));
|
||||
}
|
||||
9
frontend/views/dashboard/tsconfig.json
Normal file
9
frontend/views/dashboard/tsconfig.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"outDir": "dist",
|
||||
"sourceMap": true
|
||||
},
|
||||
"include": [
|
||||
"ts/**/*"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user