Added basic control panel

This commit is contained in:
2026-03-11 16:46:06 +01:00
parent 7df210aaf2
commit c4eedfff1e
105 changed files with 21923 additions and 958 deletions

View File

@@ -0,0 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Calibration = void 0;
var Calibration = /** @class */ (function () {
function Calibration(Main) {
this.visible = false;
this.container = document.querySelector('.ntsh-calibration');
this.image = this.container.querySelector('img');
this._Main = Main;
this.registerListeners();
this.startClock();
}
Calibration.prototype.startClock = function () {
var _this = this;
setInterval(function () {
if (_this.visible && _this.image)
_this.image.src = "/calibrationImage?t=".concat(Date.now());
}, 1000);
};
Calibration.prototype.registerListeners = function () {
var _this = this;
this.observer = new IntersectionObserver(function (entries) {
entries.forEach(function (entry) {
if (entry.isIntersecting) {
_this.visible = true;
console.log('Calibration visible');
}
else {
_this.visible = false;
console.log('Calibration not visible');
}
});
});
this.observer.observe(this.container);
};
return Calibration;
}());
exports.Calibration = Calibration;
//# sourceMappingURL=calibration.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"calibration.js","sourceRoot":"","sources":["../ts/calibration.ts"],"names":[],"mappings":";;;AAEA;IASC,qBAAY,IAAU;QALtB,YAAO,GAAY,KAAK,CAAC;QAEzB,cAAS,GAAmB,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACxE,UAAK,GAAqB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAG7D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEO,gCAAU,GAAlB;QAAA,iBAKC;QAJA,WAAW,CAAC;YACX,IAAI,KAAI,CAAC,OAAO,IAAI,KAAI,CAAC,KAAK;gBAC7B,KAAI,CAAC,KAAK,CAAC,GAAG,GAAG,8BAAuB,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC;QACvD,CAAC,EAAE,IAAI,CAAC,CAAC;IACV,CAAC;IAEO,uCAAiB,GAAzB;QAAA,iBAaC;QAZA,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,UAAC,OAAO;YAChD,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK;gBACrB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC1B,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACP,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACxC,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IACF,kBAAC;AAAD,CAAC,AAtCD,IAsCC;AAtCY,kCAAW"}

View File

@@ -0,0 +1,96 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Checklist = void 0;
var morphux_1 = require("morphux");
var Checklist = /** @class */ (function () {
function Checklist(Main) {
this.Rows = {
CAMERAPC: document.querySelector(".ntsh-checklist-row[status=\"CAMERAPC\"]"),
CAMERAPROCESS: document.querySelector(".ntsh-checklist-row[status=\"CAMERAPROCESS\"]"),
CAMERAUNITYSTREAM: document.querySelector(".ntsh-checklist-row[status=\"CAMERAUNITYSTREAM\"]"),
UNITYBUILD: document.querySelector(".ntsh-checklist-row[status=\"UNITYBUILD\"]"),
REPLAYFUNCTION: document.querySelector(".ntsh-checklist-row[status=\"REPLAYFUNCTION\"]"),
};
this.FullReboot = document.querySelector('.ntsh-fullreboot-button');
this._Main = Main;
this.registerListeners();
}
Checklist.prototype.update = function (status) {
this.updateRow(this.Rows.CAMERAPC, status.CAMERAPC);
this.updateRow(this.Rows.CAMERAPROCESS, status.CAMERAPROCESS);
this.updateRow(this.Rows.CAMERAUNITYSTREAM, status.CAMERAUNITYSTREAM);
this.updateRow(this.Rows.UNITYBUILD, status.UNITYBUILD);
this.updateRow(this.Rows.REPLAYFUNCTION, status.REPLAYFUNCTION);
console.log('Updated checklist:', status);
};
Checklist.prototype.updateRow = function (row, state) {
var _a, _b, _c;
var status = row.querySelector('.ntsh-checklist-row-status');
var message = row.querySelector('p');
var startButton = row.querySelector('.ntsh-checklist-row-button.start');
var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');
var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');
status.classList.remove('RED', 'GREEN', 'YELLOW', 'GRAY');
status.classList.add(state.state);
message.innerText = state.message;
startButton.style.display = ((_a = state.buttons) === null || _a === void 0 ? void 0 : _a.start) ? 'block' : 'none';
stopButton.style.display = ((_b = state.buttons) === null || _b === void 0 ? void 0 : _b.stop) ? 'block' : 'none';
rebootButton.style.display = ((_c = state.buttons) === null || _c === void 0 ? void 0 : _c.reboot) ? 'block' : 'none';
};
Checklist.prototype.registerListeners = function () {
var _this = this;
this.FullReboot.onclick = function () {
morphux_1.MorphFeature.Confirm({
title: 'Full Reboot',
message: 'Are you sure you want to perform a full reboot?',
}, function (state) {
if (!state)
return;
_this._Main.socket.emit('status', 'fullreboot');
});
};
var _loop_1 = function (key) {
var row = this_1.Rows[key];
var startButton = row.querySelector('.ntsh-checklist-row-button.start');
startButton.onclick = function () {
return morphux_1.MorphFeature.Confirm({
title: 'Start',
message: 'Are you sure you want to start?',
}, function (state) {
if (!state)
return;
_this._Main.socket.emit('status', 'start', key);
});
};
var stopButton = row.querySelector('.ntsh-checklist-row-button.stop');
stopButton.onclick = function () {
return morphux_1.MorphFeature.Confirm({
title: 'Stop',
message: 'Are you sure you want to stop?',
}, function (state) {
if (!state)
return;
_this._Main.socket.emit('status', 'stop', key);
});
};
var rebootButton = row.querySelector('.ntsh-checklist-row-button.reboot');
rebootButton.onclick = function () {
return morphux_1.MorphFeature.Confirm({
title: 'Reboot',
message: 'Are you sure you want to reboot?',
}, function (state) {
if (!state)
return;
_this._Main.socket.emit('status', 'reboot', key);
});
};
};
var this_1 = this;
for (var key in this.Rows) {
_loop_1(key);
}
};
return Checklist;
}());
exports.Checklist = Checklist;
//# sourceMappingURL=checklist.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../ts/checklist.ts"],"names":[],"mappings":"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"}

144
frontend/views/control/dist/main.js vendored Normal file
View File

@@ -0,0 +1,144 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Main = void 0;
var socket_io_client_1 = require("socket.io-client");
var menu_1 = require("./menu");
var checklist_1 = require("./checklist");
var calibration_1 = require("./calibration");
var morphux_1 = require("morphux");
var outOfServiceMode_1 = require("./outOfServiceMode");
var timer_1 = require("./timer");
var socket = (0, socket_io_client_1.io)('/');
var Main = /** @class */ (function () {
function Main() {
this.Menu = new menu_1.Menu();
this.CheckList = new checklist_1.Checklist(this);
this.Calibration = new calibration_1.Calibration(this);
this.OutOfServiceMode = new outOfServiceMode_1.OutOfServiceMode(this);
this.Timer = new timer_1.Timer(this);
this.socket = socket;
this.supportButton = document.querySelector('.ntsh-support img');
this.supportNumber = '';
this.registerListeners();
}
Main.prototype.registerListeners = function () {
var _this = this;
this.supportButton.onclick = function () { return _this.showSupport(); };
socket.on('status', function (data) {
_this.CheckList.update(data);
});
socket.on('supportNumber', function (number) {
_this.supportNumber = number;
});
socket.on('unityWebSocketState', function (state) {
var _a, _b, _c, _d;
_this.OutOfServiceMode.input.checked =
(_b = (_a = state === null || state === void 0 ? void 0 : state.parameters) === null || _a === void 0 ? void 0 : _a.outOfService) !== null && _b !== void 0 ? _b : false;
_this.OutOfServiceMode.state =
(_d = (_c = state === null || state === void 0 ? void 0 : state.parameters) === null || _c === void 0 ? void 0 : _c.outOfService) !== null && _d !== void 0 ? _d : false;
});
socket.on('timer', function (data) {
_this.Timer.update(data);
});
};
Main.prototype.executeCommand = function (command, message, type) {
if (type === void 0) { type = 'unityRunner'; }
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
var confirmed;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, morphux_1.MorphFeature.Confirm({
title: 'Are you sure?',
message: message,
})];
case 1:
confirmed = _a.sent();
if (!confirmed)
return [2 /*return*/, resolve(false)];
morphux_1.MorphFeature.Loader({
active: true,
message: "Dispatching command...",
});
socket.emit(type, command, function (response) {
morphux_1.MorphFeature.Loader({ active: false });
if (!response.succeed)
return morphux_1.MorphFeature.Alert({
title: 'Error',
message: response.message,
});
morphux_1.MorphFeature.Notification({
level: 'success',
message: "Dispatched command",
});
});
resolve(true);
return [2 /*return*/];
}
});
}); })];
});
});
};
Main.prototype.showSupport = function () {
return __awaiter(this, void 0, void 0, function () {
var dialog, callAnchor;
return __generator(this, function (_a) {
dialog = new morphux_1.MorphComponent.Dialog({
title: 'Contact Support',
width: 'medium',
height: 'auto',
okButtonVisible: false,
cancelButtonVisible: false,
});
this.supportNumber.slice();
callAnchor = (0, morphux_1.ce)('a', 'ntsh_callanchor', { href: "tel:".concat(this.supportNumber) }, "+".concat(this.supportNumber));
dialog.content.appendChild(callAnchor);
setTimeout(function () { return callAnchor.click(); }, 100);
return [2 /*return*/];
});
});
};
return Main;
}());
exports.Main = Main;
var _Main = new Main();
//# sourceMappingURL=main.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"main.js","sourceRoot":"","sources":["../ts/main.ts"],"names":[],"mappings":"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"}

46
frontend/views/control/dist/menu.js vendored Normal file
View File

@@ -0,0 +1,46 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Menu = void 0;
var Menu = /** @class */ (function () {
function Menu() {
this.menuContainer = document.querySelector('.ntsh_menubar');
this.tabContainer = document.querySelector('.ntsh_tabs');
this.registerListeners();
if (window.location.search.includes('advanced'))
this.selectTab('advanced');
}
Menu.prototype.selectTab = function (tabId) {
this.menuContainer
.querySelectorAll('.ntsh_menubar-item')
.forEach(function (item) {
if (item.getAttribute('tabid') === tabId) {
item.classList.add('selected');
}
else {
item.classList.remove('selected');
}
});
this.tabContainer.querySelectorAll('.ntsh_tab').forEach(function (tab) {
if (tab.getAttribute('tabid') === tabId) {
tab.classList.add('visible');
}
else {
tab.classList.remove('visible');
}
});
};
Menu.prototype.registerListeners = function () {
var _this = this;
this.menuContainer
.querySelectorAll('.ntsh_menubar-item')
.forEach(function (item) {
item.addEventListener('click', function () {
var itemId = item.getAttribute('tabid');
_this.selectTab(itemId);
});
});
};
return Menu;
}());
exports.Menu = Menu;
//# sourceMappingURL=menu.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../ts/menu.ts"],"names":[],"mappings":";;;AAAA;IAIC;QAHA,kBAAa,GAAmB,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACxE,iBAAY,GAAmB,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAGnE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,wBAAS,GAAT,UAAU,KAAa;QACtB,IAAI,CAAC,aAAa;aAChB,gBAAgB,CAAC,oBAAoB,CAAC;aACtC,OAAO,CAAC,UAAC,IAAI;YACb,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC;QACF,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;YAC3D,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;gBACzC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,gCAAiB,GAAzB;QAAA,iBASC;QARA,IAAI,CAAC,aAAa;aAChB,gBAAgB,CAAC,oBAAoB,CAAC;aACtC,OAAO,CAAC,UAAC,IAAI;YACb,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBAC9B,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC1C,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACF,WAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,oBAAI"}

View File

@@ -0,0 +1,67 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OutOfServiceMode = void 0;
var OutOfServiceMode = /** @class */ (function () {
function OutOfServiceMode(Main) {
this.state = false;
this.input = document.querySelector('.ntsh-outofservicemode-input');
this._Main = Main;
this.registerListeners();
}
OutOfServiceMode.prototype.registerListeners = function () {
var _this = this;
this.input.addEventListener('change', function () { return __awaiter(_this, void 0, void 0, function () {
var valid;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this._Main.executeCommand(this.state ? 'disableOutOfService' : 'enableOutOfService', "Are you sure you want to set the installation to \"".concat(this.state ? 'Out of Service' : 'Operational', "\"?"), 'unityWebSocket')];
case 1:
valid = _a.sent();
if (!valid)
this.input.checked = this.state;
this.state = this.input.checked;
return [2 /*return*/];
}
});
}); });
};
return OutOfServiceMode;
}());
exports.OutOfServiceMode = OutOfServiceMode;
//# sourceMappingURL=outOfServiceMode.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"outOfServiceMode.js","sourceRoot":"","sources":["../ts/outOfServiceMode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;IAQC,0BAAY,IAAU;QALtB,UAAK,GAAY,KAAK,CAAC;QACvB,UAAK,GAAqB,QAAQ,CAAC,aAAa,CAC/C,8BAA8B,CAC9B,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAEO,4CAAiB,GAAzB;QAAA,iBAUC;QATA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE;;;;4BACvB,qBAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,EACzD,6DAAqD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,QAAI,EACtG,gBAAgB,CAChB,EAAA;;wBAJK,KAAK,GAAG,SAIb;wBACD,IAAI,CAAC,KAAK;4BAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;wBAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;;;aAChC,CAAC,CAAC;IACJ,CAAC;IACF,uBAAC;AAAD,CAAC,AAzBD,IAyBC;AAzBY,4CAAgB"}

31
frontend/views/control/dist/timer.js vendored Normal file
View File

@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Timer = void 0;
var Timer = /** @class */ (function () {
function Timer(Main) {
this.startup = document.querySelector('.ntsh-timer-startup');
this.shutdown = document.querySelector('.ntsh-timer-shutdown');
this._Main = Main;
this.registerListeners();
}
Timer.prototype.update = function (data) {
var start = "".concat(data.start.hour.toString().padStart(2, '0'), ":").concat(data.start.minute.toString().padStart(2, '0'));
var end = "".concat(data.end.hour.toString().padStart(2, '0'), ":").concat(data.end.minute.toString().padStart(2, '0'));
this.startup.value = start;
this.shutdown.value = end;
};
Timer.prototype.registerListeners = function () {
var _this = this;
this.startup.onchange = function () {
var _a = _this.startup.value.split(':').map(Number), hour = _a[0], minute = _a[1];
_this._Main.socket.emit('setTimerStart', { hour: hour, minute: minute });
};
this.shutdown.onchange = function () {
var _a = _this.shutdown.value.split(':').map(Number), hour = _a[0], minute = _a[1];
_this._Main.socket.emit('setTimerEnd', { hour: hour, minute: minute });
};
};
return Timer;
}());
exports.Timer = Timer;
//# sourceMappingURL=timer.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../ts/timer.ts"],"names":[],"mappings":";;;AAEA;IAMC,eAAY,IAAU;QAHtB,YAAO,GAAqB,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC1E,aAAQ,GAAqB,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAG3E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED,sBAAM,GAAN,UAAO,IAGN;QACA,IAAM,KAAK,GAAG,UAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,cAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAChH,IAAM,GAAG,GAAG,UAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,cAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QAE1G,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;IAC3B,CAAC;IAED,iCAAiB,GAAjB;QAAA,iBASC;QARA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG;YACjB,IAAA,KAAiB,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAzD,IAAI,QAAA,EAAE,MAAM,QAA6C,CAAC;YACjE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;YAClB,IAAA,KAAiB,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAA1D,IAAI,QAAA,EAAE,MAAM,QAA8C,CAAC;YAClE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC;IACH,CAAC;IACF,YAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,sBAAK"}