1
0
mirror of https://github.com/kkapsner/CanvasBlocker synced 2024-12-22 12:50:36 +01:00

Fixed: options page did not update and checkboxes were not displayed.

This commit is contained in:
kkapsner 2017-07-02 12:18:20 +02:00
parent 584f178ff7
commit b6dd2ff011
3 changed files with 51 additions and 31 deletions

View File

@ -109,12 +109,12 @@ document.body.appendChild(table);
"type": "bool",
"value": true
},
{
"name": "notificationDisplayTime",
"title": "notification display time",
"type": "integer",
"value": 30
},
// {
// "name": "notificationDisplayTime",
// "title": "notification display time",
// "type": "integer",
// "value": 30
// },
{
"name": "ignoreList",
"title": "Ignore list",
@ -161,7 +161,7 @@ document.body.appendChild(table);
html += '<input type="text"' + inputAttributes + ' value="' + pref.value + '">';
break;
case "bool":
html += '<input type="checkbox"' + inputAttributes + (pref.value? ' checked="checked"': "") + '>';
html += '<input type="checkbox" style="display: inline"' + inputAttributes + (pref.value? ' checked="checked"': "") + '>';
break;
case "menulist":
html += '<select' + inputAttributes + '>' +

View File

@ -3,6 +3,7 @@
<head>
<title>CanvasBlocker Settings</title>
<link href="options.css" rel="stylesheet" type="text/css">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<script src="buildPrefInputs.js"></script>

View File

@ -20,30 +20,39 @@
Array.from(document.querySelectorAll("input.setting, select.setting")).forEach(function(input){
var storageName = input.dataset.storageName;
browser.storage.local.get(storageName).then(function(value){
// console.log(storageName, "got storage value", value);
if (value.hasOwnProperty(storageName)){
input.value = value[storageName];
}
});
input.addEventListener("change", function(){
var value;
if (this.type === "checkbox"){
value = this.checked;
}
else {
value = this.value;
}
var obj = {};
obj[storageName] = value;
browser.storage.local.set(obj);
});
if (input.type === "checkbox"){
browser.storage.local.get(storageName).then(function(value){
// console.log(storageName, "got storage value", value);
if (value.hasOwnProperty(storageName)){
input.checked = value[storageName];
}
});
input.addEventListener("click", function(){
var value = this.checked;
var obj = {};
obj[storageName] = value;
browser.storage.local.set(obj);
});}
else {
browser.storage.local.get(storageName).then(function(value){
// console.log(storageName, "got storage value", value);
if (value.hasOwnProperty(storageName)){
input.value = value[storageName];
}
});
input.addEventListener("change", function(){
var value = this.value;
var obj = {};
obj[storageName] = value;
browser.storage.local.set(obj);
});
}
});
var callbacks = {
showReleaseNotes: function(){
console.log("sdsdsdsd");
window.open("../releaseNotes.txt", "_blank");
},
clearPersistentRnd: function(){
@ -60,9 +69,19 @@
});
});
browser.storage.onChanged.addListener(function(data){
Object.keys(data).forEach(function(storageName){
});
browser.storage.onChanged.addListener(function(change, area){
if (area === "local"){
Object.keys(change).forEach(function(key){
var input = document.querySelector(".setting[data-storage-name=" + key + "]");
if (input){
if (input.type === "checkbox"){
input.checked = change[key].newValue;
}
else {
input.value = change[key].newValue;
}
}
});
}
});
}());