93 lines
No EOL
2.3 KiB
JavaScript
93 lines
No EOL
2.3 KiB
JavaScript
function EntertainmentGroupsClient() {
|
|
var fs = require('fs');
|
|
const groupConfigFile = './config/groupConfig.json';
|
|
var groupConfig = getDefaultGroupConfig();
|
|
var that = this;
|
|
|
|
function getDefaultGroupConfig() {
|
|
return {
|
|
"1": {
|
|
name: "Livingroom",
|
|
type: "Entertainment",
|
|
class: "TV",
|
|
lights: [],
|
|
locationtype: "Grid16x16",
|
|
locations: {}
|
|
}
|
|
}
|
|
}
|
|
|
|
function loadGroupConfig() {
|
|
var success = false;
|
|
|
|
try {
|
|
var serialized = fs.readFileSync(groupConfigFile, 'utf8');
|
|
if (serialized) {
|
|
groupConfig = JSON.parse(serialized);
|
|
success = true;
|
|
}
|
|
}
|
|
catch (err) {
|
|
console.log(err);
|
|
}
|
|
|
|
return success;
|
|
}
|
|
|
|
function saveGroupConfig() {
|
|
fs.writeFileSync(groupConfigFile, JSON.stringify(groupConfig, null, 4), 'utf8');
|
|
}
|
|
|
|
function init() {
|
|
if (loadGroupConfig() == false) {
|
|
console.log("loading group config failed, initializing with empty one");
|
|
saveGroupConfig();
|
|
}
|
|
else {
|
|
console.log("group config loaded successfully");
|
|
}
|
|
|
|
}
|
|
|
|
function getFreeId() {
|
|
var sorted = groupConfig["1"].lights.sort(function(a, b){return a-b});
|
|
for (var i = 1; i < 63; i++) {
|
|
if (sorted[i] != i) {
|
|
return i;
|
|
}
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
that.addLight = function (x, y) {
|
|
var id = getFreeId();
|
|
|
|
if (id !== undefined) {
|
|
groupConfig["1"].lights.push(id);
|
|
groupConfig["1"].locations[String(id)] = [x, y];
|
|
saveGroupConfig();
|
|
}
|
|
|
|
return id;
|
|
};
|
|
|
|
that.deleteLight = function (id) {
|
|
var lightArray = groupConfig["1"].lights;
|
|
for (var i = lightArray.length - 1; i >= 0; i--) {
|
|
if (lightArray[i] === id) {
|
|
lightArray.splice(i, 1);
|
|
}
|
|
}
|
|
delete groupConfig["1"].locations[String(id)];
|
|
saveGroupConfig();
|
|
};
|
|
|
|
that.getConfig = function () {
|
|
return groupConfig;
|
|
};
|
|
|
|
init();
|
|
}
|
|
|
|
// export the class
|
|
module.exports = EntertainmentGroupsClient; |