-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathoptions.js
65 lines (56 loc) · 2.11 KB
/
options.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
57
58
59
60
61
62
63
64
65
const backgroundPage = chrome.extension.getBackgroundPage();
let HandlerTimeout;
document.addEventListener('DOMContentLoaded', function () {
getSelectedTheme();
document.querySelector('#nzqm-shortcuts') && document.querySelector('#nzqm-shortcuts').addEventListener('click', openShortcutsView);
document.querySelector('#theme-select').addEventListener('change', saveOptions)
document.getElementById('nzqm-back-button').addEventListener('click', backToMainPage);
});
function openShortcutsView() {
backgroundPage.openShortcutsView();
}
function optionChanged(value) {
setPreview(value);
}
function saveOptions() {
const value = document.querySelector('#theme-select').value;
chrome.storage.sync.set({ 'theme': value }, function () {
setPreview(value);
const successParagraph = document.querySelector('#nzqm-operation-result p');
const msg = 'Theme correctly setted';
handleResponse(successParagraph, 'success', msg);
});
}
function getSelectedTheme() {
chrome.storage.sync.get(['theme'], function (result) {
if (result && result['theme']) {
const selectEl = document.querySelector('#theme-select');
const attribute = "[value=" + result['theme'] + "]";
selectEl.querySelector(attribute).setAttribute('selected', true);
setPreview(result['theme']);
} else {
setPreview('light');
}
});
}
function setPreview(theme) {
if (theme instanceof Object) theme = theme.target.value;
const previewImage = document.querySelector('#nzqm-theme-preview');
const imageUrl = 'img/themes/' + theme + '.png';
previewImage.setAttribute('src', imageUrl);
}
function handleResponse(element, type, msg) {
element.classList.add(type);
element.innerHTML = msg;
if (HandlerTimeout) clearTimeout(HandlerTimeout);
clearHandle(element, type)
}
function clearHandle(element, classToRemove) {
HandlerTimeout = setTimeout(() => {
element.classList.remove(classToRemove);
element.innerHTML = '';
}, 3000)
}
function backToMainPage() {
window.location.href = 'popup.html'
}