improved options getter/setter
This commit is contained in:
parent
3497037981
commit
3ae9beb803
2 changed files with 54 additions and 4 deletions
|
@ -7,9 +7,10 @@
|
||||||
<body>
|
<body>
|
||||||
<h1>Welcome to chromesoul</h1>
|
<h1>Welcome to chromesoul</h1>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Connection informations</legend>
|
<legend>Configuration</legend>
|
||||||
Login: <input type="text" id="login" class="opt"><br>
|
Login: <input type="text" id="login" class="opt"><br>
|
||||||
Password (socks): <input type="password" id="pwd_socks", class="opt"><br>
|
Password (socks): <input type="password" id="pwd_socks" class="opt"><br>
|
||||||
|
Enable messages: <input type="checkbox" id="enable_msg" class="opt" checked="checked"><br>
|
||||||
<button id="save">Save</button> <span id="status"></span>
|
<button id="save">Save</button> <span id="status"></span>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<p>Status: <span id="status_txt"></span></p>
|
<p>Status: <span id="status_txt"></span></p>
|
||||||
|
|
|
@ -21,6 +21,36 @@ var OptionsManager = function() {
|
||||||
this.opts = null;
|
this.opts = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
OptionsManager.prototype.types = {
|
||||||
|
"get": {
|
||||||
|
"text": function(elem) {
|
||||||
|
return elem.value;
|
||||||
|
},
|
||||||
|
"password": function(elem) {
|
||||||
|
return elem.value;
|
||||||
|
},
|
||||||
|
"checkbox": function(elem) {
|
||||||
|
return elem.checked;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"set": {
|
||||||
|
"text": function(elem, val) {
|
||||||
|
elem.value = val;
|
||||||
|
},
|
||||||
|
"password": function(elem, val) {
|
||||||
|
elem.value = val;
|
||||||
|
},
|
||||||
|
"checkbox": function(elem, val) {
|
||||||
|
console.log(val);
|
||||||
|
if (!val) {
|
||||||
|
elem.removeAttribute('checked');
|
||||||
|
} else {
|
||||||
|
elem.setAttribute('checked');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
OptionsManager.prototype.init = function() {
|
OptionsManager.prototype.init = function() {
|
||||||
var saveOpts = function(elem) {
|
var saveOpts = function(elem) {
|
||||||
return function() {
|
return function() {
|
||||||
|
@ -55,7 +85,7 @@ OptionsManager.prototype.save = function() {
|
||||||
|
|
||||||
if (this.opts !== null) {
|
if (this.opts !== null) {
|
||||||
for (i = this.opts.length - 1; i >= 0; --i) {
|
for (i = this.opts.length - 1; i >= 0; --i) {
|
||||||
data[this.opts[i].id] = this.encrypt(this.opts[i].value);
|
data[this.opts[i].id] = this.getElemValue(this.opts[i]);
|
||||||
}
|
}
|
||||||
this.storage.set(data, notif(this.status));
|
this.storage.set(data, notif(this.status));
|
||||||
}
|
}
|
||||||
|
@ -69,7 +99,7 @@ OptionsManager.prototype.restore = function() {
|
||||||
for (i in items) {
|
for (i in items) {
|
||||||
el = document.getElementById(i);
|
el = document.getElementById(i);
|
||||||
if (el !== null) {
|
if (el !== null) {
|
||||||
el.value = elem.decrypt(items[i]);
|
elem.setElemValue(el, items[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -78,6 +108,25 @@ OptionsManager.prototype.restore = function() {
|
||||||
this.storage.get(null, rst(this));
|
this.storage.get(null, rst(this));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
OptionsManager.prototype.getElemValue = function(elem) {
|
||||||
|
var val = null,
|
||||||
|
type = elem.getAttribute('type');
|
||||||
|
|
||||||
|
if (typeof this.types.get[type] !== "undefined") {
|
||||||
|
val = this.types.get[type](elem);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.encrypt(val);
|
||||||
|
};
|
||||||
|
|
||||||
|
OptionsManager.prototype.setElemValue = function(elem, val) {
|
||||||
|
var type = elem.getAttribute('type');
|
||||||
|
|
||||||
|
if (typeof this.types.set[type] !== "undefined") {
|
||||||
|
this.types.set[type](elem, this.decrypt(val));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
OptionsManager.prototype.encrypt = function(value) {
|
OptionsManager.prototype.encrypt = function(value) {
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
|
|
Reference in a new issue