Initial prettify

This commit is contained in:
Sam Schloegel
2022-01-03 10:51:25 -05:00
parent 551d29da60
commit c5691b56c9
26 changed files with 2602 additions and 2545 deletions
+227 -235
View File
@@ -1,274 +1,266 @@
const { v4: uuid } = require('uuid');
let osc = require("osc");
let net = require("net");
let osc = require('osc');
let net = require('net');
let udp = require('dgram');
var _ = require('lodash/function');
let PLUGINS = require("./plugins.js");
let VIEW = require("./view.js");
let SAVESLOTS = require("./saveSlots.js");
let PLUGINS = require('./plugins.js');
let VIEW = require('./view.js');
let SAVESLOTS = require('./saveSlots.js');
var devices = {};
module.exports.all = devices;
registerDevice = function (newDevice) {
console.log(PLUGINS.all);
registerDevice = function(newDevice){
if (PLUGINS.all[newDevice.type] == undefined) {
console.error('Plugin for device ' + newDevice.type + ' does not exist.');
return true;
}
console.log(PLUGINS.all)
var initElements = document.getElementsByClassName('init');
for (var i = 0; i < initElements.length; i++) {
initElements[i].style.display = 'none';
}
if(PLUGINS.all[newDevice.type]==undefined){
console.error("Plugin for device "+newDevice.type+" does not exist.");
return true;
}
// only register device if it hasn't already been added
if (newDevice.addresses.length > 0) {
for (var i in devices) {
if (
devices[i].type == newDevice.type &&
JSON.stringify(devices[i].addresses) ==
JSON.stringify(newDevice.addresses)
) {
// This device has already been added
infoUpdate(devices[i], 'status', 'ok');
return false;
}
}
}
var initElements = document.getElementsByClassName('init');
for(var i=0; i<initElements.length; i++){
initElements[i].style.display="none";
}
//console.log("Registered new "+newDevice.type)
// only register device if it hasn't already been added
if(newDevice.addresses.length>0){
for(var i in devices){
if(devices[i].type==newDevice.type && JSON.stringify(devices[i].addresses) == JSON.stringify(newDevice.addresses)){
// This device has already been added
infoUpdate(devices[i], "status", "ok");
return false;
}
}
}
var id = newDevice.id || uuid();
devices[id] = {
id: id,
status: 'new',
type: newDevice.type,
displayName: newDevice.displayName,
defaultName: newDevice.defaultName,
port: newDevice.port,
addresses: newDevice.addresses,
data: {},
pinIndex: false,
lastDrawn: 0,
lastHeartbeat: 0,
heartbeatInterval: PLUGINS.all[newDevice.type].heartbeatInterval,
draw: _.debounce(
function () {
VIEW.draw(this);
},
30,
{ leading: true, trailing: true }
),
};
//console.log("Registered new "+newDevice.type)
var id = newDevice.id || uuid();
devices[id] = {
id: id,
status: "new",
type: newDevice.type,
displayName: newDevice.displayName,
defaultName: newDevice.defaultName,
port: newDevice.port,
addresses: newDevice.addresses,
data: {},
pinIndex: false,
lastDrawn: 0,
lastHeartbeat: 0,
heartbeatInterval: PLUGINS.all[newDevice.type].heartbeatInterval,
draw: _.debounce(function(){ VIEW.draw(this); }, 30, { leading: true, trailing: true})
}
VIEW.addDeviceToList(devices[id]);
initDeviceConnection(id);
}
VIEW.addDeviceToList(devices[id]);
initDeviceConnection(id);
};
module.exports.registerDevice = registerDevice;
initDeviceConnection = function (id) {
var device = devices[id];
initDeviceConnection = function(id){
infoUpdate(device, 'status', 'new');
if (device.port == undefined || device.addresses.length == 0) {
return true;
}
try {
// mostly only useful for UDP
device.connection.close();
} catch (err) {}
var device = devices[id];
const type = devices[id].type;
var plugins = PLUGINS.all;
infoUpdate(device, "status", "new");
if (plugins[type].connectionType == 'osc') {
device.connection = new osc.TCPSocketPort({
address: device.addresses[0],
port: device.port,
});
device.connection.open();
device.connection.on('error', function (error) {
//console.error(error)
device.connection.close();
});
device.connection.on('ready', function () {
plugins[type].ready(device);
if (Object.keys(devices).length == 1) {
VIEW.switchDevice(device.id);
}
});
device.connection.on('message', function (message) {
//log("OSC IN", message.address);
plugins[type].data(device, message);
device.lastMessage = Date.now();
});
device.send = function (address, args) {
device.connection.send({ address: address, args: args });
};
device.plugin = plugins[type];
} else if (plugins[type].connectionType == 'TCPsocket') {
device.connection = new net.Socket();
if(device.port==undefined || device.addresses.length==0){
return true;
}
try{
// mostly only useful for UDP
device.connection.close();
}catch(err){}
const type = devices[id].type;
var plugins = PLUGINS.all;
device.connection.connect(
{ port: device.port, host: device.addresses[0] },
function () {}
);
if(plugins[type].connectionType == "osc"){
device.connection = new osc.TCPSocketPort({
address: device.addresses[0],
port: device.port
});
device.connection.open();
device.connection.on("error", function (error) {
//console.error(error)
device.connection.close();
});
device.connection.on("ready", function () {
plugins[type].ready(device);
if(Object.keys(devices).length==1){
VIEW.switchDevice(device.id);
}
});
device.connection.on("message", function(message){
//log("OSC IN", message.address);
plugins[type].data(device, message);
device.lastMessage = Date.now();
});
device.send = function(address, args){
device.connection.send({address: address, args: args});
}
device.plugin = plugins[type];
device.connection.on('error', function (error) {
//console.error(error)
});
device.connection.on('ready', function () {
plugins[type].ready(device);
if (Object.keys(devices).length == 1) {
VIEW.switchDevice(device.id);
}
});
device.connection.on('data', function (message) {
//log("SOCK IN", message);
plugins[type].data(device, message);
device.lastMessage = Date.now();
infoUpdate(device, 'status', 'ok');
});
device.send = function (data) {
//log("SOCK OUT", data);
device.connection.write(data);
};
} else if (plugins[type].connectionType == 'UDPsocket') {
device.connection = udp.createSocket('udp4');
}else if(plugins[type].connectionType == "TCPsocket"){
device.connection = new net.Socket();
device.connection.bind(function () {
plugins[type].ready(device);
device.connection.connect({port: device.port, host: device.addresses[0]}, function() {
});
device.connection.on("error", function (error) {
//console.error(error)
});
device.connection.on("ready", function () {
plugins[type].ready(device);
if(Object.keys(devices).length==1){
VIEW.switchDevice(device.id);
}
});
device.connection.on("data", function(message){
//log("SOCK IN", message);
plugins[type].data(device, message);
device.lastMessage = Date.now();
infoUpdate(device, "status", "ok");
});
device.send = function(data){
//log("SOCK OUT", data);
device.connection.write(data);
}
device.connection.on('message', function (msg, info) {
plugins[type].data(device, msg);
infoUpdate(device, 'status', 'ok');
});
});
}else if(plugins[type].connectionType == "UDPsocket"){
device.connection = udp.createSocket('udp4');
device.connection.bind(function(){
plugins[type].ready(device);
device.connection.on('message',function(msg,info){
plugins[type].data(device, msg);
infoUpdate(device, "status", "ok");
});
});
device.send = function(data){
device.connection.send(data, device.port, device.addresses[0], function(err){
//console.log(err);
});
}
}
}
device.send = function (data) {
device.connection.send(
data,
device.port,
device.addresses[0],
function (err) {
//console.log(err);
}
);
};
}
};
module.exports.initDeviceConnection = initDeviceConnection;
module.exports.deleteActive = function () {
var device = VIEW.getActiveDevice();
var choice = confirm(
'Are you sure you want to delete ' +
device.type +
' device "' +
(device.displayName || device.defaultName) +
'"?'
);
module.exports.deleteActive = function(){
var device = VIEW.getActiveDevice();
var choice = confirm("Are you sure you want to delete "+device.type+" device \""+(device.displayName || device.defaultName)+"\"?");
if (choice) {
VIEW.removeDeviceFromList(device);
delete devices[device.id];
SAVESLOTS.deleteFromSlots(device);
SAVESLOTS.saveAll();
SAVESLOTS.reloadActiveSlot();
}
};
if(choice){
VIEW.removeDeviceFromList(device);
delete devices[device.id];
SAVESLOTS.deleteFromSlots(device);
SAVESLOTS.saveAll();
SAVESLOTS.reloadActiveSlot();
}
module.exports.changeActiveType = function (newType) {
var device = VIEW.getActiveDevice();
device.type = newType;
}
initDeviceConnection(device.id);
VIEW.draw(device);
//SAVESLOTS.saveAll();
};
module.exports.changeActiveType = function(newType){
var device = VIEW.getActiveDevice();
device.type = newType;
module.exports.changeActiveIP = function (newIP) {
var device = VIEW.getActiveDevice();
device.addresses[0] = newIP;
initDeviceConnection(device.id);
VIEW.draw(device);
SAVESLOTS.saveAll();
};
initDeviceConnection(device.id);
VIEW.draw(device);
//SAVESLOTS.saveAll();
}
module.exports.changeActivePort = function (newPort) {
var device = VIEW.getActiveDevice();
device.port = newPort;
module.exports.changeActiveIP = function(newIP){
var device = VIEW.getActiveDevice();
device.addresses[0] = newIP;
initDeviceConnection(device.id);
VIEW.draw(device);
SAVESLOTS.saveAll();
}
initDeviceConnection(device.id);
VIEW.draw(device);
SAVESLOTS.saveAll();
};
module.exports.changeActivePort = function(newPort){
var device = VIEW.getActiveDevice();
device.port = newPort;
module.exports.changeActiveName = function (newName) {
var device = VIEW.getActiveDevice();
device.displayName = newName;
infoUpdate(device, 'displayName', newName);
VIEW.draw(device);
SAVESLOTS.saveAll();
};
module.exports.changeActivePinIndex = function (newPin) {
var device = VIEW.getActiveDevice();
device.pinIndex = newPin;
VIEW.draw(device);
SAVESLOTS.saveAll();
};
module.exports.changePinIndex = function (device, newPin) {
device.pinIndex = newPin;
//SAVESLOTS.saveAll();
};
module.exports.refreshActive = function () {
var device = VIEW.getActiveDevice();
if (device == undefined) {
return true;
}
initDeviceConnection(device.id);
VIEW.draw(device);
};
initDeviceConnection(device.id);
VIEW.draw(device);
SAVESLOTS.saveAll();
}
module.exports.changeActiveName = function(newName){
var device = VIEW.getActiveDevice();
device.displayName = newName;
infoUpdate(device, "displayName", newName);
VIEW.draw(device);
SAVESLOTS.saveAll();
}
module.exports.changeActivePinIndex = function(newPin){
var device = VIEW.getActiveDevice();
device.pinIndex = newPin;
VIEW.draw(device);
SAVESLOTS.saveAll();
}
module.exports.changePinIndex = function(device, newPin){
device.pinIndex = newPin;
//SAVESLOTS.saveAll();
}
module.exports.refreshActive = function(){
var device = VIEW.getActiveDevice();
if(device==undefined){
return true;
}
initDeviceConnection(device.id);
VIEW.draw(device);
}
infoUpdate = function(device, param, value){
if(param=="addresses"){
device.addresses = value.replace(/\s+/g, '').split(",");
}else{
device[param] = value;
}
VIEW.addDeviceToList(device);
}
infoUpdate = function (device, param, value) {
if (param == 'addresses') {
device.addresses = value.replace(/\s+/g, '').split(',');
} else {
device[param] = value;
}
VIEW.addDeviceToList(device);
};
module.exports.infoUpdate = infoUpdate;
setInterval(heartbeat, 100);
function heartbeat(){
for(var i in devices){
var device = devices[i];
if(Date.now()>=device.lastHeartbeat+device.heartbeatInterval){
if(device.status=="broken"){
initDeviceConnection(i);
}else if(Date.now()-device.lastMessage>10000){
infoUpdate(device, "status", "broken");
}else{
if(device.port!=undefined && device.addresses.length>0){
PLUGINS.all[device.type].heartbeat(device);
}else{
//console.error("Invalid IP/Port on device "+device.name)
}
}
device.lastHeartbeat = Date.now();
}
}
function heartbeat() {
for (var i in devices) {
var device = devices[i];
if (Date.now() >= device.lastHeartbeat + device.heartbeatInterval) {
if (device.status == 'broken') {
initDeviceConnection(i);
} else if (Date.now() - device.lastMessage > 10000) {
infoUpdate(device, 'status', 'broken');
} else {
if (device.port != undefined && device.addresses.length > 0) {
PLUGINS.all[device.type].heartbeat(device);
} else {
//console.error("Invalid IP/Port on device "+device.name)
}
}
device.lastHeartbeat = Date.now();
}
}
}