add settings

This commit is contained in:
2025-06-09 19:08:41 -05:00
parent 5739c2d394
commit ecb59b3647

View File

@ -1,176 +1,130 @@
/** /**
WebConsole Persistence Manager for WebConsole WebConsole Persistence Manager for WebConsole
Used to save your servers and config into your browser Used to save your servers and config into your browser
https://github.com/mesacarlos https://github.com/mesacarlos
2019-2020 Carlos Mesa under MIT License. 2019-2020 Carlos Mesa under MIT License.
*/ */
class WebConsolePersistenceManager{ class WebConsolePersistenceManager{
/**
/** * Saves or updates server into WebStorage
* Saves or updates server into WebStorage */
*/ saveServer(serverObject){
saveServer(serverObject){ //Check if server exists
//Check if server exists var i; var found = false; var servers = this.getAllServers();
var i; for (i = 0; i < servers.length; i++) {
var found = false; if(servers[i].serverName == serverObject.serverName){
var servers = this.getAllServers(); //Exists, replacing it
for (i = 0; i < servers.length; i++) { servers[i] = serverObject; found = true;
if(servers[i].serverName == serverObject.serverName){ }
//Exists, replacing it }
servers[i] = serverObject; //Not found, adding it
found = true; if(found == false){ servers.push(serverObject); }
} this.replaceAllServers(servers);
} }
/**
//Not found, adding it * Delete server from saved servers
if(found == false){ */
servers.push(serverObject); deleteServer(serverName){
} //Find server
var i; var index = -1; var servers = this.getAllServers();
this.replaceAllServers(servers); for (i = 0; i < servers.length; i++) {
} if(servers[i].serverName == serverName){ index = i; }
}
/** if(index > -1){ servers.splice(index, 1); } //Delete it
* Delete server from saved servers this.replaceAllServers(servers); //Save to WebStorage
*/ }
deleteServer(serverName){ /**
//Find server * Get server details as object
var i; */
var index = -1; getServer(serverName){
var servers = this.getAllServers(); var i; var servers = this.getAllServers();
for (i = 0; i < servers.length; i++) { for (i = 0; i < servers.length; i++) {
if(servers[i].serverName == serverName){ if(servers[i].serverName == serverName){ return servers[i]; }
index = i; }
} }
} /**
* Get all servers
//Delete it */
if(index > -1){ getAllServers(){
servers.splice(index, 1); var storageObj = JSON.parse(window.localStorage.WebConsole);
} return storageObj.servers;
}
//Save to WebStorage /**
this.replaceAllServers(servers); * Save language for this client
} */
setLanguage(lang){
/** var storageObj = JSON.parse(window.localStorage.WebConsole); //Retrieve saved data
* Get server details as object storageObj.language = lang;
*/ window.localStorage.WebConsole = JSON.stringify(storageObj); //Save to WebStorage
getServer(serverName){ }
var i; /**
var servers = this.getAllServers(); * Get saved language for this client
for (i = 0; i < servers.length; i++) { */
if(servers[i].serverName == serverName){ getLanguage(){
return servers[i]; var storageObj = JSON.parse(window.localStorage.WebConsole);
} if(!storageObj.language) return "en_US";
} return storageObj.language;
} }
/**
/** * Create server list if not defined
* Get all servers */
*/ initializeLocalStorage(){
getAllServers(){ if (typeof window.localStorage.WebConsole === 'undefined') {
var storageObj = JSON.parse(window.localStorage.WebConsole); //Create empty object
return storageObj.servers; var storageObj = new Object();
} storageObj.servers = new Array();
storageObj.language = "en_US";
/** //Save to WebStorage
* Save language for this client window.localStorage.WebConsole = JSON.stringify(storageObj);
*/ }
setLanguage(lang){ }
//Retrieve saved data /**
var storageObj = JSON.parse(window.localStorage.WebConsole); * Replaces all server list with provided list
storageObj.language = lang; */
replaceAllServers(newServerList){
//Save to WebStorage //Retrieve saved data
window.localStorage.WebConsole = JSON.stringify(storageObj); var storageObj = JSON.parse(window.localStorage.WebConsole);
} storageObj.servers = newServerList;
//Save to WebStorage
/** window.localStorage.WebConsole = JSON.stringify(storageObj);
* Get saved language for this client }
*/ /**
getLanguage(){ * Create settings object if not defined or populate with new options if updating
var storageObj = JSON.parse(window.localStorage.WebConsole); */
if(!storageObj.language) initializeSettings(){
return "en_US"; this.initializeLocalStorage();
return storageObj.language; //Create settings object
} var currentSettings = JSON.parse(window.localStorage.WebConsole).settings;
if (typeof currentSettings === 'undefined') { currentSettings = new Object(); }
/** //Setting array initialization. If you need to add more settings, add them here. Any object is valid as a value (not only bool)
* Create server list if not defined var settings = {
*/ dateTimePrefix : new Setting("dateTimePrefix", true),
initializeLocalStorage(){ retrieveLogFile : new Setting("retrieveLogFile", true),
if (typeof window.localStorage.WebConsole === 'undefined') { infoRefreshInterval : new Setting("infoRefreshInterval", 2500),
//Create empty object consoleFontSize : new Setting("consoleFontSize", 14)
var storageObj = new Object(); }
storageObj.servers = new Array(); //Set settings
storageObj.language = "en_US"; jQuery.each(settings, (key, settingObj) =>{
if(!currentSettings.hasOwnProperty(settingObj.name)) currentSettings[settingObj.name] = settingObj.defaultValue;
//Save to WebStorage });
window.localStorage.WebConsole = JSON.stringify(storageObj); //Save all
} var storageObj = JSON.parse(window.localStorage.WebConsole);
} storageObj.settings = currentSettings;
window.localStorage.WebConsole = JSON.stringify(storageObj);
/** }
* Replaces all server list with provided list /**
*/ * Update setting value
replaceAllServers(newServerList){ */
//Retrieve saved data setSetting(name, value){
var storageObj = JSON.parse(window.localStorage.WebConsole); var currentSettings = JSON.parse(window.localStorage.WebConsole).settings;
storageObj.servers = newServerList; currentSettings[name] = value;
//Save all
//Save to WebStorage var storageObj = JSON.parse(window.localStorage.WebConsole);
window.localStorage.WebConsole = JSON.stringify(storageObj); storageObj.settings = currentSettings;
} window.localStorage.WebConsole = JSON.stringify(storageObj);
}
/** /**
* Create settings object if not defined or populate with new options if updating * Get setting value
*/ */
initializeSettings(){ getSetting(name){ return JSON.parse(window.localStorage.WebConsole).settings[name]; }
this.initializeLocalStorage();
//Create settings object
var currentSettings = JSON.parse(window.localStorage.WebConsole).settings;
if (typeof currentSettings === 'undefined') {
currentSettings = new Object();
}
//Setting array initialization. If you need to add more settings, add them here. Any object is valid as a value (not only bool)
var settings = {
dateTimePrefix : new Setting("dateTimePrefix", true),
retrieveLogFile : new Setting("retrieveLogFile", true)
}
//Set settings
jQuery.each(settings, (key, settingObj) =>{
if(!currentSettings.hasOwnProperty(settingObj.name))
currentSettings[settingObj.name] = settingObj.defaultValue;
});
//Save all
var storageObj = JSON.parse(window.localStorage.WebConsole);
storageObj.settings = currentSettings;
window.localStorage.WebConsole = JSON.stringify(storageObj);
}
/**
* Update setting value
*/
setSetting(name, value){
var currentSettings = JSON.parse(window.localStorage.WebConsole).settings;
currentSettings[name] = value;
//Save all
var storageObj = JSON.parse(window.localStorage.WebConsole);
storageObj.settings = currentSettings;
window.localStorage.WebConsole = JSON.stringify(storageObj);
}
/**
* Get setting value
*/
getSetting(name){
return JSON.parse(window.localStorage.WebConsole).settings[name];
}
} }