-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathsettings.js
56 lines (53 loc) · 1.54 KB
/
settings.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
var Settings = {
buildSettings: function(data) {
if (!data || !data.config)
return;
var config = data.config;
var body = document.getElementById('settings-body');
for (p in config) {
var isScalar = isScalar(config[p]);
var elem = document.getElementById(p);
isScalar = false;
var value = config[p];
if (!isScalar)
value = JSON.stringify(value);
if (!elem) {
var tr = document.createElement('tr');
var name = document.createElement('td');
name.innerText = p;
tr.appendChild(name);
var val = document.createElement('td');
//if (isScalar)
var input = document.createElement('input');
input.setAttribute('data-type', isScalar ? 'scalar' : 'object');
input.setAttribute('name', p);
input.setAttribute('id', p);
input.setAttribute('type', text);
input.style = 'max-width: 100%; width: 640px';
val.appendChild(input);
tr.appendChild(val);
body.appendChild(tr);
elem = document.getElementById(p);
document.addEventListener('change', Settings.update);
}
elem.value = value;
}
},
update: function(e) {
var elem = e.target || e.currentTarget;
browser.runtime.sendMessage({
action: 'updateConfig',
url: {},
data: { [elem.name] : ( elem.getAttribute('data-type') == 'scalar' ) ? elem.value : JSON.parse(elem.value) }
}, Settings.buildSettings);
},
init: function() {
browser.runtime.sendMessage({
action: 'init',
url: {},
data: {}
}, Settings.buildSettings);
browser.runtime.onMessage.addListener(Settings.buildSettings);
}
}
Settings.init();