From 553d2bbb0d04fcff0a270b3d3b9e2625eb46f184 Mon Sep 17 00:00:00 2001 From: mmcwilliams Date: Fri, 22 Mar 2019 04:33:53 -0400 Subject: [PATCH] Made progress on sequencer module, renamed from sequence. --- app/index.html | 2 +- app/js/app.js | 1 - app/lib/cmd/index.js | 4 +- app/lib/sequence/Readme.md | 567 ------------------ app/lib/sequence/index.js.map | 1 - app/lib/sequencer/Readme.md | 0 .../sequence => app/lib/sequencer}/index.js | 17 +- app/lib/sequencer/index.js.map | 1 + .../lib/sequencer}/package.json | 2 +- app/lib/ui/cam.js | 6 +- app/lib/ui/cmd.js | 30 +- app/lib/ui/devices.js | 10 +- app/lib/ui/grid.js | 20 +- app/lib/ui/mscript.js | 4 +- app/lib/ui/proj.js | 6 +- app/lib/ui/seq.js | 178 +++--- app/main.js | 15 +- app/package-lock.json | 3 + app/package.json | 1 + app/src/index.js | 1 - cli/lib/cmd/index.js | 4 +- cli/lib/sequence/index.js.map | 1 - .../sequence => cli/lib/sequencer}/index.js | 17 +- cli/lib/sequencer/index.js.map | 1 + .../lib/sequencer}/package.json | 2 +- lib/cmd/index.js | 4 +- lib/sequence/index.js.map | 1 - lib/{sequence => sequencer}/index.js | 17 +- lib/sequencer/index.js.map | 1 + .../sequence => lib/sequencer}/package.json | 2 +- src/cmd/index.ts | 4 +- src/{sequence => sequencer}/index.ts | 20 +- 32 files changed, 188 insertions(+), 755 deletions(-) delete mode 100644 app/lib/sequence/Readme.md delete mode 100644 app/lib/sequence/index.js.map create mode 100644 app/lib/sequencer/Readme.md rename {cli/lib/sequence => app/lib/sequencer}/index.js (82%) create mode 100644 app/lib/sequencer/index.js.map rename {cli/lib/sequence => app/lib/sequencer}/package.json (88%) delete mode 100644 cli/lib/sequence/index.js.map rename {app/lib/sequence => cli/lib/sequencer}/index.js (82%) create mode 100644 cli/lib/sequencer/index.js.map rename {lib/sequence => cli/lib/sequencer}/package.json (88%) delete mode 100644 lib/sequence/index.js.map rename lib/{sequence => sequencer}/index.js (82%) create mode 100644 lib/sequencer/index.js.map rename {app/lib/sequence => lib/sequencer}/package.json (88%) rename src/{sequence => sequencer}/index.ts (83%) diff --git a/app/index.html b/app/index.html index 081e111..a4fca49 100644 --- a/app/index.html +++ b/app/index.html @@ -60,7 +60,7 @@

LOOPS

- +
diff --git a/app/js/app.js b/app/js/app.js index f12e8b5..d6e3ab3 100644 --- a/app/js/app.js +++ b/app/js/app.js @@ -2473,7 +2473,6 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. //fgnass.github.com/spin.js#v2.0.1 !function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return l[e]||(m.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",m.cssRules.length),l[e]=1),e}function d(a,b){var c,d,e=a.style;for(b=b.charAt(0).toUpperCase()+b.slice(1),d=0;d',c)}m.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.width,left:d.radius,top:-d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.length+d.width,k=2*j,l=2*-(d.width+d.length)+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k - -## Sequence -Run the sequence - -seq.run = function () { - 'use strict'; - var c = mcopy.state.sequence.arr[seq.i], - timeEnd = 0, - rgb, - action = function () { - setTimeout(function () { - seq.i++; - seq.run(); - }, mcopy.cfg.arduino.sequenceDelay); - } - if (seq.i == 0) { - $('#loop_current').text(gui.fmtZero(mcopy.loopCount + 1, 6)); - ipcRenderer.send('seq', { action : 'loop' }); - } - if (seq.stop()) { - $('.row input').removeClass('h'); - $('#numbers div').removeClass('h'); - log.info('Sequence stopped', 'SERIAL', true); - return false; - } - if (seq.i <= mcopy.state.sequence.arr.length && c !== undefined) { - log.info('Step ' + seq.i + ' command ' + c, 'SEQUENCE', true); - //gui action - $('.row input').removeClass('h'); - $('#numbers div').removeClass('h'); - $('.row input[x=' + seq.i + ']').addClass('h'); - $('#numbers div[x=' + seq.i + ']').addClass('h'); - if (c === 'CF'){ - rgb = mcopy.state.sequence.light[seq.i].split(','); - cmd.camera_forward(rgb, action); - } else if (c === 'CB') { - rgb = mcopy.state.sequence.light[seq.i].split(','); - cmd.camera_backward(rgb, action); - } else if (c === 'PF') { - cmd.projector_forward(action); - } else if (c === 'PB') { - cmd.projector_backward(action); - } else if (c === 'BF') { - cmd.black_forward(action); - } else if (c === 'BB') { - cmd.black_backward(action); - } - } else { - mcopy.loopCount++; - $('#loop_current').text(gui.fmtZero(mcopy.loopCount + 1, 6)); - if (mcopy.loopCount < mcopy.loop) { - log.info('Loop ' + mcopy.loopCount + ' completed', 'SEQUENCE', true); - $('.row input').removeClass('h'); - $('#numbers div').removeClass('h'); - seq.i = 0; - seq.run(); - } else { - timeEnd = +new Date(); - timeEnd = timeEnd - seq.time; - if (timeEnd < 2000) { - log.info('Sequence completed in ' + timeEnd + 'ms', 'SEQUENCE', true); - } else { - log.info('Sequence completed in ' + humanizeDuration(timeEnd), 'SEQUENCE', true); - } - ipcRenderer.send('seq', { action : 'stop' }); - gui.notify('Sequence done!', (mcopy.state.sequence.arr.length * mcopy.loop) + ' actions completed in ' + humanizeDuration(timeEnd)); - //clear gui - $('.row input').removeClass('h'); - $('#numbers div').removeClass('h'); - $('#loop_current').text(''); - seq.stats(); - } - } -}; -seq.stop = function (state) { - 'use strict'; - if (typeof state === 'undefined') { - if (seq.stopState === true) { - ipcRenderer.send('seq', { action : 'stop' }); - } - return seq.stopState; - } else { - seq.stopState = state; - } - if (state === false) { - mcopy.loopCount = 0 - $('#loop_current').text(''); - } else { - ipcRenderer.send('seq', { action : 'stop' }); - } - return state -}; -seq.init = function (start) { - 'use strict'; - if (typeof start === 'undefined') { - start = 0; - mcopy.loopCount = 0; - seq.time = +new Date(); - } - seq.stop(false); - seq.i = start; - - ipcRenderer.send('seq', { action : 'start' }); - seq.run(); -}; -//!!! redo -seq.stats = function () { - 'use strict'; - var ms = 0, - c = '', - cam_total = 0, - proj_total = 0, - real_total = mcopy.state.sequence.arr.filter(function (elem) { - if (elem === undefined) { - return false; - } - return true; - }); - - //timing - for (var i = 0; i < mcopy.state.sequence.arr.length; i++) { - c = mcopy.state.sequence.arr[i]; - if (c === 'CF' || c === 'CB'){ - ms += mcopy.cfg.arduino.cam.time; - ms += mcopy.cfg.arduino.cam.delay; - ms += mcopy.cfg.arduino.serialDelay; - } - if (c === 'PF' || c === 'PB'){ - ms += mcopy.cfg.arduino.proj.time; - ms += mcopy.cfg.arduino.proj.delay; - ms += mcopy.cfg.arduino.serialDelay; - } - if (c === 'BF' || c === 'BB'){ - ms += mcopy.cfg.arduino.black.before; - ms += mcopy.cfg.arduino.black.after; - ms += mcopy.cfg.arduino.cam.time; - ms += mcopy.cfg.arduino.cam.delay; - ms += mcopy.cfg.arduino.serialDelay; - } - ms += mcopy.cfg.arduino.sequenceDelay; - - if (c === 'CF' || c === 'BF') { - cam_total++; - } - if (c === 'CB' || c === 'BB') { - cam_total--; - } - if (c === 'PF') { - proj_total++; - } - if (c === 'PB') { - proj_total--; - } - } - - //timing - ms = ms * mcopy.loop; - if (ms < 2000) { - $('#seq_stats .timing span').text(ms + 'ms'); - } else { - $('#seq_stats .timing span').text(humanizeDuration(ms)); - } - - //ending frames - cam_total = cam_total * mcopy.loop; - proj_total = proj_total * mcopy.loop; - - $('#seq_stats .cam_end span').text(gui.fmtZero(mcopy.state.camera.pos + cam_total, 6)); - $('#seq_stats .proj_end span').text(gui.fmtZero(mcopy.state.projector.pos + proj_total, 6)); - - //count - $('#seq_stats .seq_count span').text(real_total.length * mcopy.loop); - return ms; -}; -seq.clear = function () { - 'use strict'; - mcopy.state.sequence.size = 24; - mcopy.state.sequence.arr = []; -}; -seq.exec = function (arr) { - 'use strict'; - seq.running = true; - seq.state.len = arr.length; - //setup queue - seq.queue = arr; - //console.dir(arr); - gui.overlay(true); - gui.spinner(true, `Running sequence of ${arr.length} frame${(arr.length === 1 ? '' : 's')}`, 0); - log.info(`Sequence started`, 'SEQUENCE', true); - seq.step(); -}; - -seq.execStop = function (msg) { - 'use strict'; - gui.overlay(false); - gui.spinner(false); - log.info(`Sequence ${msg}`, 'SEQUENCE', true); - return false; -}; - -seq.step = function () { - 'use strict'; - let elem; - let c; - let rgb; - let current; - let max; - - if (!seq.running) { - return seq.execStop('stopped'); - } - - return setTimeout(() => { - elem = seq.queue.shift(); - if (typeof elem !== 'undefined') { - c = elem.cmd; - if (typeof elem.light !== 'undefined') { - rgb = elem.light.split(','); - } else { - rgb = light.color; - } - } else { - return seq.execStop('completed'); - } - if (typeof elem !== 'undefined') { - current = seq.state.len - seq.queue.length; - max = seq.state.len; - gui.spinner(true, `Sequence: step ${c} ${current}/${max}`, (current / max) * 100); - log.info(`Sequence: step ${c} ${current}/${max}`, 'SEQUENCE', true); - if (c === 'CF'){ - cmd.camera_forward(rgb, seq.step); - } else if (c === 'CB') { - cmd.camera_backward(rgb, seq.step); - } else if (c === 'PF') { - cmd.projector_forward(seq.step); - } else if (c === 'PB') { - cmd.projector_backward(seq.step); - } else if (c === 'BF') { - cmd.black_forward(seq.step); - } else if (c === 'BB') { - cmd.black_backward(seq.step); - } - } - }, mcopy.cfg.arduino.sequenceDelay); -}; - -// FROM SERVER SIDE -proj.state = { - dir : true, //default dir - digital : false -} -proj.init = function () { - proj.listen() -} -proj.set = async function (dir, id) { - let cmd - let ms - if (dir) { - cmd = mcopy.cfg.arduino.cmd.projector_forward - } else { - cmd = mcopy.cfg.arduino.cmd.projector_backward - } - proj.state.dir = dir - if (proj.state.digital) { - dig.set(dir) - } else { - try { - ms = await arduino.send('projector', cmd) - } catch (err) { - console.error(err) - } - } - return await proj.end(cmd, id, ms) -} -proj.move = async function (frame, id) { - const cmd = mcopy.cfg.arduino.cmd.projector - let ms - if (proj.digital) { - try { - ms = await dig.move() - } catch (err) { - console.error(err) - } - } else { - try { - ms = await arduino.send('projector', cmd) - } catch (err) { - console.error(err) - } - } - return await proj.end(mcopy.cfg.arduino.cmd.projector, id, ms) -} -proj.listen = function () { - ipcMain.on('proj', async (event, arg) => { - if (typeof arg.dir !== 'undefined') { - try { - await proj.set(arg.dir, arg.id) - } catch (err) { - console.error(err) - } - } else if (typeof arg.frame !== 'undefined') { - try { - await proj.move(arg.frame, arg.id) - } catch (err) { - console.error(err) - } - } else if (typeof arg.val !== 'undefined') { - dig.state.frame = arg.val - } - event.returnValue = true - }) - ipcMain.on('digital', proj.connectDigital) -} -proj.end = async function (cmd, id, ms) { - let message = '' - if (cmd === mcopy.cfg.arduino.cmd.projector_forward) { - message = 'Projector set to FORWARD' - } else if (cmd === mcopy.cfg.arduino.cmd.projector_backward) { - message = 'Projector set to BACKWARD' - } else if (cmd === mcopy.cfg.arduino.cmd.projector) { - message = 'Projector ' - if (proj.state.dir) { - message += 'ADVANCED' - } else { - message += 'REWOUND' - } - message += ' 1 frame' - } - log.info(message, 'PROJECTOR', true, true) - return await mainWindow.webContents.send('proj', {cmd: cmd, id : id, ms: ms}) -} -proj.connectDigital = async function (evt, arg) { - let info; - let frames = 0; - - try { - info = await ffprobe.info(arg.path); - } catch (err) { - log.error(err, 'DIGITAL', true, true); - proj.digital = false; - await mainWindow.webContents.send('digital', { valid : false }); - return false; - } - try { - frames = await ffprobe.frames(arg.path); - } catch (err) { - log.error(err, 'DIGITAL', true, true); - proj.digital = false; - await mainWindow.webContents.send('digital', { valid : false }); - return false; - } - - dig.state.frame = 0; - dig.state.path = arg.path; - dig.state.fileName = arg.fileName; - dig.state.frames = frames; - dig.state.info = info; - - //console.dir(dig.state); - - log.info(`Opened ${dig.state.fileName}`, 'DIGITAL', true, true); - log.info(`Frames : ${frames}`, 'DIGITAL', true, true); - proj.digital = true; - return await mainWindow.webContents.send('digital', { valid : true, state : JSON.stringify(dig.state) }); -} - -const dig = {}; -dig.state = { - frame : 0, - frames : 0, - path : null, - fileName : null, - info : {}, - dir : true -}; - -dig.set = function (dir) { - dig.state.dir = dir; -} - -dig.move = async function () { - let start = +new Date() - let last = dig.state.dir + 0; - if (dig.state.dir) { - dig.state.frame++ - } else { - dig.state.frame-- - } - if (dig.state.frame < 1) { - dig.state.frame = 1 - } - return (+new Date()) - start -} - -dig.start = async function () { - try { - await ffmpeg.clearAll() - } catch (err) { - console.error(err) - } - - try { - await ffmpeg.frame(dig.state, light.state) - } catch (err) { - console.error(err) - } - - display.start(dig.state.frame) - await delay(20) -} - -dig.end = async function () { - await delay(20) - display.end() -} - -cam.intval = null -cam.state = { - dir : true //default dir -} -cam.init = function () { - cam.listen() -} -cam.set = async function (dir, id) { - let cmd - let ms - if (dir) { - cmd = mcopy.cfg.arduino.cmd.camera_forward - } else { - cmd = mcopy.cfg.arduino.cmd.camera_backward - } - cam.state.dir = dir - - if (cam.intval) { - try { - ms = await cam.intval.setDir(dir) - } catch (err) { - console.error(err) - } - } else { - try { - ms = await arduino.send('camera', cmd) - } catch (err) { - console.error(err) - } - } - return await cam.end(cmd, id, ms) -} - -cam.move = async function (frame, id) { - const cmd = mcopy.cfg.arduino.cmd.camera - let ms - if (proj.digital) { - await dig.start() - } - if (cam.intval) { - try { - ms = await cam.intval.move() - } catch (err) { - console.error(err) - } - } else { - try { - ms = await arduino.send('camera', cmd) - } catch (err) { - console.error(err) - } - } - if (proj.digital) { - await dig.end() - } - log.info('Camera move time', { ms }) - return cam.end(cmd, id, ms) -} - -cam.exposure = function (exposure, id) { - let cmd = 'E' - cam.intval.setExposure('camera', exposure, ms => { - cam.end(cmd, id, ms) - }) -} - -cam.connectIntval = async function (event, arg) { - return new Promise((resolve, reject) => { - if (arg.connect) { - cam.intval = new Intval(arg.url) - cam.intval.connect((err, ms, state) => { - if (err) { - mainWindow.webContents.send('intval', { connected : false }) - log.info(`Cannot connect to ${arg.url}`, 'INTVAL', true, true) - cam.intval = null - delete cam.intval - } else { - mainWindow.webContents.send('intval', { connected : true, url : arg.url, state : state }) - log.info(`Connected to INTVAL3 @ ${arg.url}`, 'INTVAL', true, true) - settings.update('camera', { intval : arg.url }) - settings.save() - dev.remember('intval', arg.url, 'camera') - } - return resolve(true) - }) - } else if (arg.disconnect) { - cam.intval = null - return resolve(false) - } - }) -} - -cam.listen = function () { - ipcMain.on('cam', async (event, arg) => { - if (typeof arg.dir !== 'undefined') { - try { - await cam.set(arg.dir, arg.id) - } catch (err) { - console.error(err) - } - } else if (typeof arg.frame !== 'undefined') { - try { - await cam.move(arg.frame, arg.id) - } catch (err) { - console.error(err) - } - } - event.returnValue = true - }) - ipcMain.on('intval', cam.connectIntval) -} -cam.end = async function (cmd, id, ms) { - var message = '' - if (cmd === mcopy.cfg.arduino.cmd.camera_forward) { - message = 'Camera set to FORWARD' - } else if (cmd === mcopy.cfg.arduino.cmd.camera_backward) { - message = 'Camera set to BACKWARD' - } else if (cmd === mcopy.cfg.arduino.cmd.camera) { - message = 'Camera ' - if (cam.state.dir) { - message += 'ADVANCED' - } else { - message += 'REWOUND' - } - message += ' 1 frame' - } - log.info(message, 'CAMERA', true, true) - mainWindow.webContents.send('cam', {cmd: cmd, id : id, ms: ms}) -}; - -const seq = {}; -seq.init = function () { - seq.listen(); -} - -seq.listen = function () { - ipcMain.on('seq', async (evt, arg) => { - if (arg.action === 'stop' && proj.digital) { - display.end() - } - }) -} - -**Kind**: global class - - -### sequence.stop() -Stop the sequence - -**Kind**: instance method of [Sequence](#Sequence) diff --git a/app/lib/sequence/index.js.map b/app/lib/sequence/index.js.map deleted file mode 100644 index b9d169d..0000000 --- a/app/lib/sequence/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequence/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/app/lib/sequencer/Readme.md b/app/lib/sequencer/Readme.md new file mode 100644 index 0000000..e69de29 diff --git a/cli/lib/sequence/index.js b/app/lib/sequencer/index.js similarity index 82% rename from cli/lib/sequence/index.js rename to app/lib/sequencer/index.js index b487c16..cd8c483 100644 --- a/cli/lib/sequence/index.js +++ b/app/lib/sequencer/index.js @@ -2,11 +2,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); const Log = require("log"); let seq; -class Sequence { +class Sequencer { constructor(cfg, cmd) { this.arr = []; this.loops = 1; this.CMDS = {}; + this.id = 'sequence'; this.cfg = cfg; this.cmd = cmd; this.cmds(cfg.cmd); @@ -21,23 +22,25 @@ class Sequence { } //currently called by ui async init() { - this.log = Log({ label: 'sequence' }); + this.log = Log({ label: this.id }); this.ipc = require('electron').ipcMain; this.listen(); } listen() { - this.ipc.on('sequence', this.listener.bind(this)); + this.ipc.on(this.id, this.listener.bind(this)); } async listener(event, arg) { - if (arg && arg.diff) { - this.diff(arg.diff); + console.dir(arg); + if (arg && arg.set) { + this.setSteps(arg.set); } else if (arg && arg.loops) { this.loops = arg.loops; } event.returnValue = true; } - diff(steps) { + setSteps(steps) { + console.dir(steps); } //new async start(arg) { @@ -80,6 +83,6 @@ class Sequence { } } module.exports = function (cfg, cmd) { - seq = new Sequence(cfg, cmd); + return new Sequencer(cfg, cmd); }; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/app/lib/sequencer/index.js.map b/app/lib/sequencer/index.js.map new file mode 100644 index 0000000..e8fcdce --- /dev/null +++ b/app/lib/sequencer/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequencer/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/cli/lib/sequence/package.json b/app/lib/sequencer/package.json similarity index 88% rename from cli/lib/sequence/package.json rename to app/lib/sequencer/package.json index 6687419..6fb32b0 100644 --- a/cli/lib/sequence/package.json +++ b/app/lib/sequencer/package.json @@ -1,5 +1,5 @@ { - "name": "sequence", + "name": "sequencer", "version": "1.0.0", "description": "", "main": "index.js", diff --git a/app/lib/ui/cam.js b/app/lib/ui/cam.js index 5184229..e9c4ced 100644 --- a/app/lib/ui/cam.js +++ b/app/lib/ui/cam.js @@ -55,11 +55,11 @@ cam.move = function (callback) { }; cam.end = function (c, id, ms) { 'use strict'; - if (c === mcopy.cfg.arduino.cmd.camera_forward) { + if (c === cfg.arduino.cmd.camera_forward) { mcopy.state.camera.direction = true; - } else if (c === mcopy.cfg.arduino.cmd.camera_backward) { + } else if (c === cfg.arduino.cmd.camera_backward) { mcopy.state.camera.direction = false; - } else if (c === mcopy.cfg.arduino.cmd.camera) { + } else if (c === cfg.arduino.cmd.camera) { if (mcopy.state.camera.direction) { mcopy.state.camera.pos += 1; } else { diff --git a/app/lib/ui/cmd.js b/app/lib/ui/cmd.js index 3d1469d..c215bb7 100644 --- a/app/lib/ui/cmd.js +++ b/app/lib/ui/cmd.js @@ -17,12 +17,12 @@ cmd.projector_forward = function (callback) { proj.set(true, function (ms) { setTimeout(function () { proj.move(res); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); } else { setTimeout(function () { proj.move(res); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); } }; /** @@ -42,12 +42,12 @@ cmd.projector_backward = function (callback) { proj.set(false, function (ms) { setTimeout(function () { proj.move(res); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); } else { setTimeout(function () { proj.move(res); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); } }; /** @@ -67,7 +67,7 @@ cmd.camera_forward = function (rgb, callback) { $('#cmd_cam_forward').removeClass('active'); if (callback) { callback(ms); } }); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }; $('#cmd_cam_forward').addClass('active'); if (!mcopy.state.camera.direction) { @@ -77,16 +77,16 @@ cmd.camera_forward = function (rgb, callback) { light.set(rgb, function () { setTimeout( function () { cam.move(res); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); } else { light.display(rgb); light.set(rgb, function () { setTimeout(function () { cam.move(res); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); } }; @@ -111,16 +111,16 @@ cmd.black_forward = function (callback) { light.set(off, function () { setTimeout( function () { cam.move(res); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); } else { light.display(off); light.set(off, function () { setTimeout(function () { cam.move(res); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); } }; @@ -149,7 +149,7 @@ cmd.camera_backward = function (rgb, callback) { light.set(rgb, function () { cam.move(res); }); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); } else { setTimeout(function () { @@ -157,7 +157,7 @@ cmd.camera_backward = function (rgb, callback) { light.set(rgb, function () { cam.move(res); }); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); } }; /** @@ -181,7 +181,7 @@ cmd.black_backward = function (callback) { light.set(off, function () { cam.move(res); }); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); }); } else { setTimeout(function () { @@ -189,7 +189,7 @@ cmd.black_backward = function (callback) { light.set(off, function () { cam.move(res); }); - }, mcopy.cfg.arduino.serialDelay); + }, cfg.arduino.serialDelay); } }; diff --git a/app/lib/ui/devices.js b/app/lib/ui/devices.js index b5da7cc..414694c 100644 --- a/app/lib/ui/devices.js +++ b/app/lib/ui/devices.js @@ -9,14 +9,14 @@ devices.init = function () { }; devices.profiles = function () { 'use strict'; - const keys = Object.keys(mcopy.cfg.profiles); + const keys = Object.keys(cfg.profiles); const elem = $('#profile') let opt; elem.empty(); for (let key of keys) { opt = $('