diff --git a/app/lib/server/index.js b/app/lib/server/index.js
index dc7a9f0..422963f 100644
--- a/app/lib/server/index.js
+++ b/app/lib/server/index.js
@@ -1,4 +1,4 @@
-"use strict";
+'use strict';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
@@ -10,7 +10,7 @@ const path_1 = require("path");
const uuid_1 = require("uuid");
const Log = require("log");
class Server {
- constructor() {
+ constructor(uiInput) {
this.id = 'server';
this.isActive = false;
this.templates = [
@@ -29,6 +29,7 @@ class Server {
this.queue = {};
this.intervalPeriod = 10000; //10 sec
this.init();
+ this.ui = uiInput;
}
async init() {
this.log = await Log({ label: this.id });
@@ -59,8 +60,9 @@ class Server {
this.log.error(err);
return;
}
- this.wss.on('connection', async function (ws) {
- ws.on("message", function (data) {
+ this.wss.on('connection', async function (ws, req) {
+ const address = req.socket.remoteAddress;
+ ws.on('message', function (data) {
let obj = JSON.parse(data);
//this.log.info(data)
if (obj.id && this.queue[obj.id]) {
@@ -73,9 +75,11 @@ class Server {
}.bind(this));
ws.on('close', function () {
this.log.info('Client disconnected');
+ this.notify('Client disconnected', `No longer forwarding digital display to client ${address}`);
}.bind(this));
await this.cmd(ws, 'mcopy');
this.log.info('Client connected');
+ this.notify('Client connected', `Forwarding digital display to client: ${address}`);
}.bind(this));
this.log.info(`Websocket server started!`);
this.log.info(`WSS [ ws://localhost:${this.wsPort} ]`);
@@ -190,8 +194,11 @@ class Server {
//setTimeout() ?
}.bind(this));
}
+ notify(title, message) {
+ this.ui.send('gui', { notify: { title, message } });
+ }
}
-module.exports = function () {
- return new Server();
+module.exports = function (ui) {
+ return new Server(ui);
};
//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/app/lib/server/index.js.map b/app/lib/server/index.js.map
index 38fd1bf..cebcfed 100644
--- a/app/lib/server/index.js.map
+++ b/app/lib/server/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/app/lib/ui/devices.js.map b/app/lib/ui/devices.js.map
index f7f75a5..7aefbc7 100644
--- a/app/lib/ui/devices.js.map
+++ b/app/lib/ui/devices.js.map
@@ -1 +1 @@
-{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/lib/ui/devices.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/lib/ui/devices.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/app/lib/ui/index.js.map b/app/lib/ui/index.js.map
new file mode 100644
index 0000000..6924d52
--- /dev/null
+++ b/app/lib/ui/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/ui/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,YAAY,CAAC;;;;;;;;;;AAWb,IAAI,GAAS,CAAC;AAEd,MAAM,GAAG;IAsBR;QArBQ,OAAE,GAAY,KAAK,CAAC;QACpB,oBAAe,GAAa,IAAI,CAAC;QACjC,eAAU,GAAS;YAC1B,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,GAAG;YACX,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK,CAAC,mCAAmC;SAC/C,CAAC;IAIF,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAEO,MAAM;QACb,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,QAAQ,CAAE,KAAW,EAAE,GAAS;QACvC,IAAI,GAAG,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAClD;IACF,CAAC;IAEM,OAAO,CAAE,GAAS,EAAE,GAAY;QACtC,MAAM,GAAG,GAAY,GAAG,CAAC;QACzB,IAAI,GAAG,GAAY,GAAG,GAAG,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAY,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,CAAC,EAAE;YACZ,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SAC9E;aAAM;YACN,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;gBACrB,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;aACjD;iBAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;gBAC7B,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACzB,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;aACjD;SACD;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,aAAa,CAAE,CAAoB,EAAE,SAAkB,IAAI;QAC1D,MAAM,GAAG,GAAY,CAAC,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;YAC9D,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SACzB;aAAM;YACN,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SAC5B;IACF,CAAC;IAED,aAAa,CAAE,KAAc,EAAE,GAAY;QAC1C,MAAM,YAAY,GAAY,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAEM,MAAM,CAAE,KAAc,EAAE,OAAgB;QAC9C,MAAM,MAAM,GAAS;YACpB,KAAK;YACL,OAAO;YACP,yFAAyF;YACzF,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI,CAAC,uEAAuE;SAClF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;SAClE;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI;gBACH,QAAQ,CAAC,MAAM,CAAC,MAAM,EACrB,UAAU,GAAW,EAAE,QAAc;oBACpC,0CAA0C;oBAC1C,IAAI,GAAG,EAAE;wBACR,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;wBAC7B,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;wBAC1C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;qBACnB;oBACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACd;YAAC,OAAO,GAAG,EAAE;gBACb,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,0BAA0B;gBAC1B,oCAAoC;gBACpC,wBAAwB;aACxB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAEY,SAAS,CAAE,CAAoB;;YAC3C,MAAM,GAAG,GAAY,CAAC,CAAC,KAAK,CAAC;YAC7B,IAAI,MAAgB,CAAC;YAErB,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE;gBAC9B,OAAO,KAAK,CAAC;aACb;YAED,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kDAAkD,GAAG,GAAG,CAAC,CAAC;YAEtF,IAAI,MAAM,EAAE;gBACX,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;iBAAM;gBACN,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtB;QACF,CAAC;KAAA;IAEK,UAAU,CAAE,CAAoB;;YACrC,MAAM,GAAG,GAAY,CAAC,CAAC,KAAK,CAAC;YAC7B,IAAI,MAAgB,CAAC;YAErB,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE;gBAC9B,OAAO,KAAK,CAAC;aACb;YAED,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yDAAyD,GAAG,GAAG,CAAC,CAAC;YAE7F,IAAI,MAAM,EAAE;gBACX,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;iBAAM;gBACN,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtB;QACF,CAAC;KAAA;IAEK,UAAU,CAAE,CAAoB;;YACrC,MAAM,GAAG,GAAY,CAAC,CAAC,KAAK,CAAC;YAC7B,IAAI,MAAgB,CAAC;YACrB,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;gBAC/B,OAAO,KAAK,CAAC;aACb;YACD,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,qDAAqD,GAAG,GAAG,CAAC,CAAC;YACzF,IAAI,MAAM,EAAE;gBACX,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;iBAAM;gBACN,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;gBACnB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtB;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;KAAA;IAEK,WAAW,CAAE,CAAoB;;YACtC,MAAM,GAAG,GAAY,CAAC,CAAC,KAAK,CAAC;YAC7B,IAAI,MAAgB,CAAC;YAErB,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACtC,OAAO,KAAK,CAAC;aACb;YAED,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,4DAA4D,GAAG,GAAG,CAAC,CAAC;YAEhG,IAAI,MAAM,EAAE;gBACX,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;iBAAM;gBACN,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtB;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;KAAA;IAEM,WAAW;QACjB,MAAM,IAAI,GAAY,GAAG,CAAC,GAAG,CAAC;QAC9B,MAAM,IAAI,GAAY,IAAI,CAAC,GAAG,CAAC;QAE/B,MAAM,KAAK,GAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACvC,MAAM,KAAK,GAAY,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;QAEtC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACvC,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAExC,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzC,CAAC,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAE1C,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1C,CAAC,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAE3C,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5C,CAAC,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9C,CAAC;IAEM,OAAO,CAAE,KAAe,EAAE,MAAe,IAAI,EAAE,WAAqB,KAAK,EAAE,SAAmB,KAAK;QACzG,IAAI,MAAM,CAAC;QACX,IAAI,OAAO,CAAC;QACZ,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,EAAE;YACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACrB;QACD,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAChD,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC5C,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAClC;aAAM,IAAI,KAAK,EAAE;YACjB,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB;aAAM,IAAI,CAAC,KAAK,EAAE;YAClB,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SACpB;QACD,IAAI,QAAQ,EAAE;YACb,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;SAC7B;aAAM;YACN,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;SAC7B;QACD,IAAI,MAAM,EAAE;YACX,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC;SAC3B;aAAM;YACN,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC;SAC3B;IACF,CAAC;IAEO,UAAU,CAAE,GAAY;QAC/B,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAEM,OAAO,CAAE,KAAe;QAC9B,IAAI,KAAK,EAAE;YACV,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB;aAAM;YACN,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB;IACF,CAAC;IAEY,IAAI,CAAE,KAAc,EAAE,OAAgB;;YAClD,MAAM,MAAM,GAAS;gBACpB,IAAI,EAAG,MAAM;gBACb,OAAO,EAAG,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAG,OAAO;aACjB,CAAC;YACF,OAAO,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;KAAA;IAEK,OAAO,CAAE,OAAgB,EAAE,SAAkB,QAAQ;;YAC1D,MAAM,MAAM,GAAS;gBACpB,OAAO,EAAG,CAAC,KAAK,EAAE,MAAM,CAAC;gBACzB,OAAO;aACP,CAAA;YACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC;QAC3B,CAAC;KAAA;IAEY,MAAM,CAAE,OAAgB,EAAE,OAAkB;;YACxD,MAAM,MAAM,GAAS;gBACpB,OAAO,EAAG,OAAO;gBACjB,SAAS,EAAG,CAAC;gBACb,OAAO;aACP,CAAA;YACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC,QAAQ,CAAC;QACrB,CAAC;KAAA;IAEY,IAAI,CAAE,KAAc,EAAE,OAAgB;;YAClD,MAAM,MAAM,GAAS;gBACpB,IAAI,EAAG,SAAS;gBAChB,OAAO,EAAG,CAAC,IAAI,CAAC;gBAChB,KAAK;gBACL,OAAO;aACP,CAAC;YACF,OAAO,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;KAAA;IAEO,OAAO;QACd,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEO,KAAK;IAEb,CAAC;CACD;AAGD,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAChB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC"}
\ No newline at end of file
diff --git a/app/lib/ui/mscript.js.map b/app/lib/ui/mscript.js.map
index d9825c5..35724d6 100644
--- a/app/lib/ui/mscript.js.map
+++ b/app/lib/ui/mscript.js.map
@@ -1 +1 @@
-{"version":3,"file":"mscript.js","sourceRoot":"","sources":["../../src/lib/ui/mscript.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"mscript.js","sourceRoot":"","sources":["../../src/lib/ui/mscript.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/app/lib/ui/seq.js.map b/app/lib/ui/seq.js.map
index e315b8b..6ee8c6a 100644
--- a/app/lib/ui/seq.js.map
+++ b/app/lib/ui/seq.js.map
@@ -1 +1 @@
-{"version":3,"file":"seq.js","sourceRoot":"","sources":["../../src/lib/ui/seq.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"seq.js","sourceRoot":"","sources":["../../src/lib/ui/seq.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/app/main.js b/app/main.js
index 2c488b4..1ca5473 100644
--- a/app/main.js
+++ b/app/main.js
@@ -117,7 +117,7 @@ var init = async function () {
log.error('Error enumerating connected devices', err)
}
- server = require('server')()
+ server = require('server')(mainWindow.webContents)
light = require('light')(arduino, cfg, mainWindow.webContents)
filmout = require('filmout')(display, server, ffmpeg, ffprobe, mainWindow.webContents, light)
cam = require('cam')(arduino, cfg, mainWindow.webContents, filmout)
diff --git a/app/src/lib/ui/devices.ts b/app/src/lib/ui/devices.ts
index 5e14574..37e9e1f 100644
--- a/app/src/lib/ui/devices.ts
+++ b/app/src/lib/ui/devices.ts
@@ -2,7 +2,6 @@
///
-
let devices : Devices;
class Devices {
diff --git a/app/src/lib/ui/index.ts b/app/src/lib/ui/index.ts
new file mode 100644
index 0000000..de97301
--- /dev/null
+++ b/app/src/lib/ui/index.ts
@@ -0,0 +1,306 @@
+/* jslint esversion: 6*/
+'use strict';
+
+///
+
+declare var cam : any;
+declare var proj : any;
+declare var notifier : any;
+declare var PACKAGE : any;
+declare var Spinner : any;
+declare var dialog : any;
+
+let gui : GUI;
+
+class GUI {
+ private id : string = 'gui';
+ private notifierWorking : boolean = true;
+ private spinnerCfg : any= {
+ lines: 11, // The number of lines to draw
+ length: 15, // The length of each line
+ width: 7, // The line thickness
+ radius: 20, // The radius of the inner circle
+ corners: 1, // Corner roundness (0..1)
+ rotate: 0, // The rotation offset
+ direction: 1, // 1: clockwise, -1: counterclockwise
+ color: '#F2F2F1', // #rgb or #rrggbb or array of colors
+ speed: 1, // Rounds per second
+ trail: 60, // Afterglow percentage
+ shadow: true, // Whether to render a shadow
+ hwaccel: true, // Whether to use hardware acceleration
+ className: 'spinner', // The CSS class to assign to the spinner
+ zIndex: 2e9, // The z-index (defaults to 2000000000)
+ top: '50%', // Top position relative to parent
+ left: '50%' // Left position relative to parent
+ };
+
+ constructor () {
+
+ }
+
+ public init () {
+ this.version();
+ this.listen();
+ }
+
+ private listen() {
+ ipcRenderer.on(this.id, this.listener.bind(this));
+ }
+
+ private listener (event : any, arg : any) {
+ if (arg.notify) {
+ this.notify(arg.notify.title, arg.notify.message);
+ }
+ }
+
+ public fmtZero (val : any, len : number) : string {
+ const raw : number = val;
+ let str : string = val + '';
+ let output : string = '';
+ if (raw < 0) {
+ output = '-' + Array(len - (str.length - 1)).join('0') + str.replace('-', '');
+ } else {
+ if (str.length < len) {
+ output = Array(len - str.length).join('0') + str;
+ } else if (str.length >= len) {
+ str = parseInt(str) + '';
+ output = Array(len - str.length).join('0') + str;
+ }
+ }
+ return output;
+ }
+
+ counterFormat (t : HTMLInputElement, normal : number = null) {
+ const raw : string = t.value;
+ t.value = gui.fmtZero(raw, 6);
+ if (typeof normal !== 'undefined' && parseInt(raw) !== normal) {
+ $(t).addClass('changed');
+ } else {
+ $(t).removeClass('changed');
+ }
+ }
+
+ counterUpdate (which : string, raw : number) {
+ const formattedVal : string = this.fmtZero(raw, 6);
+ $(`.${which} .count`).val(formattedVal);
+ }
+
+ public notify (title : string, message : string) : Promise {
+ const config : any = {
+ title,
+ message,
+ //icon: path.join(__dirname, 'coulson.jpg'), // Absolute path (doesn't work on balloons)
+ sound: true, // Only Notification Center or Windows Toasters
+ wait: true // Wait with callback, until user action is taken against notification
+ };
+ if (!this.notifierWorking) {
+ return new Promise((resolve, reject) => { return resolve(true); })
+ }
+ return new Promise((resolve, reject) => {
+ try {
+ notifier.notify(config,
+ function (err : Error, response : any) {
+ // Response is response from notification
+ if (err) {
+ this.notifierWorking = false;
+ log.error(`Error with notification`, err);
+ return reject(err);
+ }
+ return resolve(true);
+ }.bind(this));
+ } catch (err) {
+ this.notifierWorking = false;
+ //notify-send is not found
+ //determine an alternate for raspian
+ //this feels like a hack
+ }
+ });
+ }
+
+ public async updateCam (t : HTMLInputElement) {
+ const val : string = t.value;
+ let change : boolean;
+
+ if (parseInt(val) === cam.pos) {
+ return false;
+ }
+
+ change = await this.confirm(`Are you sure you want to set camera counter to ${val}?`);
+
+ if (change) {
+ cam.pos = parseInt(val);
+ this.updateState();
+ } else {
+ t.value = cam.pos;
+ this.counterFormat(t);
+ }
+ }
+
+ async updateCam2 (t : HTMLInputElement) {
+ const val : string = t.value;
+ let change : boolean;
+
+ if (parseInt(val) === cam.pos) {
+ return false;
+ }
+
+ change = await this.confirm(`Are you sure you want to set second camera counter to ${val}?`);
+
+ if (change) {
+ cam.second.pos = parseInt(val);
+ this.updateState();
+ } else {
+ t.value = cam.second.pos;
+ this.counterFormat(t);
+ }
+ }
+
+ async updateProj (t : HTMLInputElement) {
+ const val : string = t.value;
+ let change : boolean;
+ if (parseInt(val) === proj.pos) {
+ return false;
+ }
+ change = await this.confirm(`Are you sure you want to set projector counter to ${val}?`);
+ if (change) {
+ proj.pos = parseInt(val);
+ this.updateState();
+ } else {
+ t.value = proj.pos;
+ this.counterFormat(t);
+ }
+ proj.setValue(t.value);
+ }
+
+ async updateProj2 (t : HTMLInputElement) {
+ const val : string = t.value;
+ let change : boolean;
+
+ if (parseInt(val) === proj.second.pos) {
+ return false;
+ }
+
+ change = await this.confirm(`Are you sure you want to set second projector counter to ${val}?`);
+
+ if (change) {
+ proj.second.pos = parseInt(val);
+ this.updateState();
+ } else {
+ t.value = proj.second.pos;
+ this.counterFormat(t);
+ }
+ proj.setValue(t.value);
+ }
+
+ public updateState () {
+ const cpos : number = cam.pos;
+ const ppos : number = proj.pos;
+
+ const p2pos : number = proj.second.pos;
+ const c2pos : number = cam.second.pos;
+
+ $('#seq_cam_count').val(cpos).change();
+ $('#seq_proj_count').val(ppos).change();
+
+ $('#seq_cam_count_2').val(cpos).change();
+ $('#seq_proj_count_2').val(ppos).change();
+
+ $('#seq_cam_2_count').val(c2pos).change();
+ $('#seq_proj_2_count').val(p2pos).change();
+
+ $('#seq_cam_2_count_2').val(c2pos).change();
+ $('#seq_proj_2_count_2').val(p2pos).change();
+ }
+
+ public spinner (state : boolean, msg : string = null, progress : boolean = false, cancel : boolean = false) {
+ let target;
+ let spinner;
+ if (msg && msg !== '') {
+ this.spinnerMsg(msg);
+ }
+ if (state && !$('#spinner').hasClass('created')) {
+ target = document.getElementById('spinner');
+ spinner = new Spinner(this.spinnerCfg).spin(target);
+ $('#spinnerProgress').hide();
+ $('#spinner').addClass('created');
+ } else if (state) {
+ $('#spinner').show();
+ } else if (!state) {
+ $('#spinner').hide();
+ this.spinnerMsg('');
+ }
+ if (progress) {
+ $('#spinnerProgress').show();
+ } else {
+ $('#spinnerProgress').hide();
+ }
+ if (cancel) {
+ $('#spinnerCancel').show();
+ } else {
+ $('#spinnerCancel').hide();
+ }
+ }
+
+ private spinnerMsg (msg : string) {
+ $('#spinnerMsg').text(msg);
+ }
+
+ public overlay (state : boolean) {
+ if (state) {
+ $('#overlay').show();
+ } else {
+ $('#overlay').hide();
+ }
+ }
+
+ public async info (title : string, message : string) {
+ const config : any = {
+ type : 'info',
+ buttons : ['Ok'],
+ title: title,
+ message : message
+ };
+ return dialog.showMessageBox(config);
+ }
+
+ async confirm (message : string, cancel : string = 'Cancel') {
+ const config : any = {
+ buttons : ['Yes', cancel],
+ message
+ }
+ const res = await dialog.showMessageBox(config);
+ return res.response === 0;
+ }
+
+ public async choice (message : string, choices : string[]) {
+ const config : any = {
+ buttons : choices,
+ defaultId : 0,
+ message
+ }
+ const res = await dialog.showMessageBox(config);
+ return res.response;
+ }
+
+ public async warn (title : string, message : string) {
+ const config : any = {
+ type : 'warning',
+ buttons : ['Ok'],
+ title,
+ message
+ };
+ return dialog.showMessageBox(config);
+ }
+
+ private version () {
+ $('#version').text(PACKAGE.version);
+ }
+
+ private error () {
+
+ }
+}
+
+
+gui = new GUI();
+module.exports = gui;
\ No newline at end of file
diff --git a/app/src/lib/ui/mscript.ts b/app/src/lib/ui/mscript.ts
index 14d3a0b..970edcb 100644
--- a/app/src/lib/ui/mscript.ts
+++ b/app/src/lib/ui/mscript.ts
@@ -5,7 +5,6 @@
import Mscript from 'mscript';
declare var nav : any;
-declare var gui : any;
declare var CodeMirror : any;
declare var mscript : any;
declare var cmd : any;
diff --git a/app/src/lib/ui/seq.ts b/app/src/lib/ui/seq.ts
index b510900..97f31e0 100644
--- a/app/src/lib/ui/seq.ts
+++ b/app/src/lib/ui/seq.ts
@@ -2,7 +2,6 @@
///
-declare var gui : any;
declare var cfg : any;
declare var log : any;
declare var w2popup : any;
diff --git a/package.json b/package.json
index 4e4f820..22d095c 100644
--- a/package.json
+++ b/package.json
@@ -38,20 +38,28 @@
"typescript": "^4.1.5"
},
"dependencies": {
+ "alert": "file:app/lib/alert",
"arduino": "file:app/lib/arduino",
"cam": "file:app/lib/cam",
+ "capper" : "file:app/lib/capper",
"cmd": "file:app/lib/cmd",
"delay": "file:app/lib/delay",
"devices": "file:app/lib/devices",
"display": "file:app/lib/display",
+ "exec" : "file:app/lib/exec",
+ "exit" : "file:app/lib/exit",
+ "ffmpeg" : "file:app/lib/ffmpeg",
+ "ffprobe" : "file:app/lib/ffprobe",
"filmout": "file:app/lib/filmout",
"frame": "file:app/lib/frame",
+ "intval" : "file:app/lib/intval",
"light": "file:app/lib/light",
"log": "file:app/lib/log",
"mscript": "file:app/lib/mscript",
"processing": "file:app/lib/processing",
"proj": "file:app/lib/proj",
"sequencer": "file:app/lib/sequencer",
+ "server" : "file:app/lib/server",
"settings": "file:app/lib/settings",
"system": "file:app/lib/system"
}
diff --git a/src/server/index.ts b/src/server/index.ts
index e4f379e..75f5ffc 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -1,3 +1,5 @@
+'use strict'
+
import WebSocket, { WebSocketServer } from 'ws'
import express, { Express, Request, Response, Application } from 'express'
import { readFile } from 'fs/promises'
@@ -53,9 +55,11 @@ class Server {
private queue : ServerQueue = {}
private interval : ReturnType
private intervalPeriod : number = 10000 //10 sec
+ private ui : any;
- constructor () {
+ constructor (uiInput : any) {
this.init()
+ this.ui = uiInput;
}
async init () {
@@ -91,8 +95,9 @@ class Server {
this.log.error(err)
return
}
- this.wss.on('connection', async function (ws : WebSocket) {
- ws.on("message", function (data : string ) {
+ this.wss.on('connection', async function (ws : WebSocket, req: any) {
+ const address : string = req.socket.remoteAddress;
+ ws.on('message', function (data : string ) {
let obj : any = JSON.parse(data)
//this.log.info(data)
if (obj.id && this.queue[obj.id]) {
@@ -106,10 +111,12 @@ class Server {
ws.on('close', function () {
this.log.info('Client disconnected')
+ this.notify('Client disconnected', `No longer forwarding digital display to client ${address}`)
}.bind(this))
await this.cmd(ws, 'mcopy')
this.log.info('Client connected')
+ this.notify('Client connected', `Forwarding digital display to client: ${address}`)
}.bind(this))
this.log.info(`Websocket server started!`)
@@ -200,8 +207,8 @@ class Server {
return false
}
- public async displayImage (src : string) {
- let key
+ public async displayImage (src : string) : Promise {
+ let key : string
if (this.useServer()) {
key = basename(src)
this.addProxy(key, src)
@@ -237,8 +244,12 @@ class Server {
//setTimeout() ?
}.bind(this))
}
+
+ private notify (title : string, message : string) {
+ this.ui.send('gui', { notify : { title, message }});
+ }
}
-module.exports = function () {
- return new Server()
+module.exports = function (ui : any) {
+ return new Server(ui)
}
\ No newline at end of file