Completely rewrote options script.

This commit is contained in:
Mario Basic
2015-06-17 17:48:48 +02:00
parent 2a1801c560
commit a4fe94ac75
15 changed files with 22640 additions and 213 deletions

View File

@@ -2,62 +2,12 @@
global.jQuery = require('jquery');
require('bootstrap');
var $ = require("jquery");
var React = require('react');
var config = require('./config');
// React components
var Options = require('./components/Options.react');
function detectCheckedRadio(name) {
for (var i = 0; i < document.getElementsByName(name).length; i ++) {
var button = document.getElementsByName(name)[i];
if (button.checked === true) {
return button.value;
}
}
}
// Saves options to chrome.storage.sync.
function save_options(e) {
e.preventDefault();
var theme = document.getElementById('theme').value;
var blacklist = document.getElementById('blacklist').value;
var loggingType = detectCheckedRadio('loggingType');
chrome.storage.sync.set({
theme: theme,
blacklist: blacklist,
loggingType: loggingType
}, function () {
// Update status to let user know options were saved.
var status = $('#status');
status.html('<strong>Well done!</strong> Options have been saved.');
status.fadeIn(1500, function () {
setTimeout(function () {
status.fadeOut(1500, function () {
status.html('');
});
}, 750);
});
});
}
// Restores select box and checkbox state using the preferences
// stored in chrome.storage.
function restore_options() {
// Use default value color = 'red' and likesColor = true.
chrome.storage.sync.get({
theme: config.theme,
blacklist: '',
loggingType: config.loggingType
}, function (items) {
document.getElementById('theme').value = items.theme;
document.getElementById('blacklist').value = items.blacklist;
document.getElementById(items.loggingType + 'Type').checked = true;
});
}
document.addEventListener('DOMContentLoaded', restore_options);
document.getElementById('save').addEventListener('click', save_options);
React.render(
<Options />,
document.getElementById('wakatime-options')
);