mcopy/app/lib/ui/proj.js

225 lines
4.4 KiB
JavaScript

const proj = {};
proj.queue = {};
proj.lock = false;
proj.id = 'projector';
proj.dir = true;
proj.pos = 0;
proj.init = function () {
'use strict';
proj.listen();
};
proj.set = function (dir, callback) {
'use strict';
var obj;
if (proj.lock) {
return false;
}
obj = {
dir : dir,
id : uuid()
};
ipcRenderer.sendSync(proj.id, obj);
if (typeof callback !== 'undefined') {
obj.callback = callback;
}
proj.queue[obj.id] = obj;
proj.lock = true;
};
proj.setAsync = async function (dir) {
return new Promise((resolve, reject) => {
return proj.set(dir, function (ms) {
setTimeout(reject, 10000);
return resolve(ms);
});
});
}
proj.move = function (callback) {
'use strict';
var obj;
if (proj.lock) {
return false;
}
obj = {
move : true,
id : uuid()
};
ipcRenderer.sendSync(proj.id, obj);
if (typeof callback !== 'undefined') {
obj.callback = callback;
}
proj.queue[obj.id] = obj;
proj.lock = true;
};
proj.moveAsync = async function () {
return new Promise((resolve, reject) => {
return proj.move(function (ms) {
setTimeout(reject, 10000);
return resolve(ms);
});
});
}
proj.end = function (c, id, ms) {
'use strict';
if (c === cfg.arduino.cmd.projector_forward) {
proj.dir = true;
} else if (c === cfg.arduino.cmd.projector_backward) {
proj.dir = false;
} else if (c === cfg.arduino.cmd.projector) {
if (proj.dir) {
proj.pos += 1;
} else {
proj.pos -= 1;
}
} else if (c === cfg.arduino.cmd.projectors) {
if (proj.dir) {
proj.pos += 1;
} else {
proj.pos -= 1;
}
if (proj.second.dir) {
proj.second.pos += 1;
} else {
proj.second.pos -= 1;
}
gui.counterUpdate('proj2', proj.second.pos);
}
gui.counterUpdate('proj', proj.pos)
if (typeof proj.queue[id] !== 'undefined') {
if (typeof proj.queue[id].callback !== 'undefined') {
proj.queue[id].callback(ms);
} else {
log.info('NO PROJ CALLBACK')
}
delete proj.queue[id];
proj.lock = false;
}
};
proj.listen = function () {
'use strict';
ipcRenderer.on(proj.id, function (event, arg) {
proj.end(arg.cmd, arg.id, arg.ms);
return event.returnValue = true;
});
};
proj.setValue = function (val) {
'use strict';
var obj = {
val: val,
id : uuid()
};
ipcRenderer.sendSync(proj.id, obj);
};
proj.second = {};
proj.second.enabled = false;
proj.second.queue = {};
proj.second.lock = false;
proj.second.id = 'projector_second';
proj.second.dir = true;
proj.second.pos = 0;
proj.second.enable = function () {
proj.second.enabled = true;
//ui actions
$('.proj2').addClass('on');
$('#counters').addClass('projectors');
proj.second.init();
}
proj.second.disable = function () {
proj.second.disabled = true;
//ui actions
$('.proj2').removeClass('on');
$('#counters').removeClass('projectors');
}
proj.second.init = function () {
'use strict';
proj.second.listen();
};
proj.second.set = function (dir, callback) {
'use strict';
var obj;
if (proj.second.lock) {
return false;
}
obj = {
dir : dir,
id : uuid()
};
ipcRenderer.sendSync(proj.second.id, obj);
if (typeof callback !== 'undefined') {
obj.callback = callback;
}
proj.second.queue[obj.id] = obj;
proj.second.lock = true;
};
proj.second.move = function (callback) {
'use strict';
var obj;
if (proj.second.lock) {
return false;
}
obj = {
move : true,
id : uuid()
};
ipcRenderer.sendSync(proj.second.id, obj);
if (typeof callback !== 'undefined') {
obj.callback = callback;
}
proj.second.queue[obj.id] = obj;
proj.second.lock = true;
};
proj.second.end = function (c, id, ms) {
'use strict';
if (c === cfg.arduino.cmd.projector_second_forward) {
proj.second.dir = true;
} else if (c === cfg.arduino.cmd.projector_second_backward) {
proj.second.dir = false;
} else if (c === cfg.arduino.cmd.projector_second) {
if (proj.second.dir) {
proj.second.pos += 1;
} else {
proj.second.pos -= 1;
}
}
timing.update(c, ms);
gui.counterUpdate('proj2', proj.second.pos);
if (typeof proj.second.queue[id] !== 'undefined') {
if (typeof proj.second.queue[id].callback !== 'undefined') {
proj.second.queue[id].callback(ms);
}
delete proj.second.queue[id];
proj.second.lock = false;
}
};
proj.second.listen = function () {
'use strict';
ipcRenderer.on(proj.second.id, function (event, arg) {
proj.second.end(arg.cmd, arg.id, arg.ms);
return event.returnValue = true;
});
};
proj.second.setValue = function (val) {
'use strict';
var obj = {
val: val,
id : uuid()
};
ipcRenderer.sendSync(proj.second.id, obj);
};
module.exports = proj;