mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
integrated webserver ... (#697)
* initial commit of webconfig * update example config with webconfig and fix format of file update debian postinst script for install example config
This commit is contained in:
124
assets/webconfig/js/app/models/Settings.js
Normal file
124
assets/webconfig/js/app/models/Settings.js
Normal file
@@ -0,0 +1,124 @@
|
||||
/*global define */
|
||||
define(['lib/stapes', 'api/LocalStorage'], function (Stapes, LocalStorage) {
|
||||
'use strict';
|
||||
|
||||
return Stapes.subclass(/** @lends Settings.prototype */{
|
||||
storage: null, servers: [],
|
||||
|
||||
/**
|
||||
* @class Settings
|
||||
* @classdesc Local application settings
|
||||
* @constructs
|
||||
* @fires saved
|
||||
* @fires loaded
|
||||
* @fires error
|
||||
* @fires serverAdded
|
||||
* @fires serverChanged
|
||||
* @fires serverRemoved
|
||||
*/
|
||||
constructor: function () {
|
||||
this.storage = new LocalStorage();
|
||||
this.storage.on({
|
||||
error: function (message) {
|
||||
this.emit('error', message);
|
||||
}, got: function (settings) {
|
||||
if (settings) {
|
||||
this.servers = settings.servers || [];
|
||||
}
|
||||
this.emit('loaded');
|
||||
}, set: function () {
|
||||
this.emit('saved');
|
||||
}
|
||||
}, this);
|
||||
},
|
||||
|
||||
/**
|
||||
* Save current settings
|
||||
*/
|
||||
save: function () {
|
||||
this.storage.set({
|
||||
servers: this.servers
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Loads persistent settings
|
||||
*/
|
||||
load: function () {
|
||||
this.storage.get();
|
||||
},
|
||||
|
||||
/**
|
||||
* Add a server definition
|
||||
* @param {object} server - Server information
|
||||
*/
|
||||
addServer: function (server) {
|
||||
if (this.indexOfServer(server) === -1) {
|
||||
if (this.servers.length === 0) {
|
||||
server.selected = true;
|
||||
}
|
||||
|
||||
this.servers.push(server);
|
||||
this.save();
|
||||
this.emit('serverAdded', server);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets a server as a default server
|
||||
* @param {number} index - Index of the server in the server list to set as default one
|
||||
*/
|
||||
setSelectedServer: function (index) {
|
||||
var i;
|
||||
for (i = 0; i < this.servers.length; i++) {
|
||||
delete this.servers[i].selected;
|
||||
}
|
||||
this.servers[index].selected = true;
|
||||
this.save();
|
||||
this.emit('serverChanged', this.servers[index]);
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove a server from the list
|
||||
* @param {number} index - Index of the server in the list to remove
|
||||
*/
|
||||
removeServer: function (index) {
|
||||
this.servers.splice(index, 1);
|
||||
this.save();
|
||||
this.emit('serverRemoved');
|
||||
},
|
||||
|
||||
/**
|
||||
* Update server information
|
||||
* @param {number} index - Index of the server to update
|
||||
* @param {object} server - New server information
|
||||
*/
|
||||
updateServer: function (index, server) {
|
||||
if (index >= 0 && index < this.servers.length) {
|
||||
this.servers[index] = server;
|
||||
this.save();
|
||||
this.emit('serverChanged', server);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Find the server in the list.
|
||||
* @param {object} server - Server to search index for
|
||||
* @returns {number} - Index of the server in the list. -1 if server not found
|
||||
*/
|
||||
indexOfServer: function (server) {
|
||||
var i, tmp;
|
||||
|
||||
for (i = 0; i < this.servers.length; i++) {
|
||||
tmp = this.servers[i];
|
||||
|
||||
if (tmp.port === server.port && tmp.address === server.address) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user