diff --git a/src/device.js b/src/device.js
index 8010114..9dc9a99 100644
--- a/src/device.js
+++ b/src/device.js
@@ -49,7 +49,7 @@ function registerDevice(newDevice) {
port: newDevice.port,
addresses: newDevice.addresses,
data: {},
- fields: {},
+ fields: newDevice.fields || {},
pinIndex: false,
lastDrawn: 0,
lastHeartbeat: 0,
@@ -68,13 +68,15 @@ function registerDevice(newDevice) {
devices[id].plugin = PLUGINS.all[newDevice.type];
- if(PLUGINS.all[newDevice.type].config.fields){
- PLUGINS.all[newDevice.type].config.fields.forEach(field => {
+ if (
+ Object.keys(devices[id].fields).length == 0 &&
+ PLUGINS.all[newDevice.type].config.fields
+ ) {
+ PLUGINS.all[newDevice.type].config.fields.forEach((field) => {
devices[id].fields[field.key] = field.value;
});
}
-
VIEW.addDeviceToList(devices[id]);
initDeviceConnection(id);
return true;
@@ -86,7 +88,7 @@ function initDeviceConnection(id) {
infoUpdate(device, 'status', 'new');
- if(device.port === undefined){
+ if (device.port === undefined) {
device.port = device.plugin.config.defaultPort;
}
@@ -138,7 +140,6 @@ function initDeviceConnection(id) {
device.send = (address, args) => {
device.connection.send({ address, args });
};
-
} else if (plugins[type].config.connectionType === 'TCPsocket') {
device.connection = new net.Socket();
diff --git a/src/saveSlots.js b/src/saveSlots.js
index 0eb2a87..eed9462 100644
--- a/src/saveSlots.js
+++ b/src/saveSlots.js
@@ -60,6 +60,7 @@ module.exports.loadDevices = function loadDevices() {
port: savedDevices[i].port,
addresses: savedDevices[i].addresses,
id: savedDevices[i].id,
+ fields: savedDevices[i].fields
});
}
};
@@ -74,7 +75,7 @@ module.exports.saveAll = function saveAll() {
savedSlots[activeSlot][i] = {
addresses: currentPins[i].addresses,
type: currentPins[i].type,
- id: currentPins[i].id,
+ id: currentPins[i].id
};
}
localStorage.setItem('savedSlots', JSON.stringify(savedSlots));
@@ -93,6 +94,7 @@ module.exports.saveAll = function saveAll() {
defaultName: device.defaultName,
port: device.port,
id: device.id,
+ fields: device.fields
};
i++;
});
diff --git a/src/view.js b/src/view.js
index 323755a..bd7c55e 100644
--- a/src/view.js
+++ b/src/view.js
@@ -1,6 +1,7 @@
const { ipcRenderer } = require('electron');
const DEVICE = require('./device.js');
const PLUGINS = require('./plugins.js');
+const { saveAll } = require('./saveSlots.js');
// const _ = require('lodash/function');
const pinnedDevices = [];
@@ -216,6 +217,7 @@ function switchDevice(id) {
$elem.onchange = function(e){
activeDevice.fields[field.key] = $elem.value;
field.action(activeDevice);
+ saveAll();
}
if(field.type=="textinput"){
@@ -328,7 +330,7 @@ module.exports.selectNextDevice = function selectNextDevice() {
function populatePluginLists() {
let typeSelect = '';
- let addSelect = '';
+ let addSelect = '';
Object.keys(PLUGINS.all).forEach((pluginType) => {
const plugin = PLUGINS.all[pluginType];