mirror of
https://bitbucket.org/skobkin/chrome_point_plus.git
synced 2024-11-23 18:56:04 +00:00
This commit is contained in:
commit
068c461070
|
@ -4,7 +4,7 @@
|
||||||
* При создании сохраняет версию, восстанавливает настройки, слушает изменения на инпутах.
|
* При создании сохраняет версию, восстанавливает настройки, слушает изменения на инпутах.
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function Options() {
|
function OptionsPage() {
|
||||||
this.form = document.querySelector('form');
|
this.form = document.querySelector('form');
|
||||||
|
|
||||||
this.listenTabs();
|
this.listenTabs();
|
||||||
|
@ -25,7 +25,7 @@ function Options() {
|
||||||
* Получает версию настроек. Если она не равна версии приложения, записывает в сторедж плагина настройки из инпутов
|
* Получает версию настроек. Если она не равна версии приложения, записывает в сторедж плагина настройки из инпутов
|
||||||
* и версию приложения.
|
* и версию приложения.
|
||||||
*/
|
*/
|
||||||
Options.prototype.updateOptionsFromFrom = function() {
|
OptionsPage.prototype.updateOptionsFromFrom = function() {
|
||||||
chrome.storage.sync.get('options_version', function(data) {
|
chrome.storage.sync.get('options_version', function(data) {
|
||||||
this.logVersion(data.options_version);
|
this.logVersion(data.options_version);
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ Options.prototype.updateOptionsFromFrom = function() {
|
||||||
/**
|
/**
|
||||||
* Сохраняет настройки
|
* Сохраняет настройки
|
||||||
*/
|
*/
|
||||||
Options.prototype.save = function() {
|
OptionsPage.prototype.save = function() {
|
||||||
var ppOptions = this.getValues();
|
var ppOptions = this.getValues();
|
||||||
|
|
||||||
console.log('Saving options: %O', ppOptions);
|
console.log('Saving options: %O', ppOptions);
|
||||||
|
@ -62,7 +62,7 @@ Options.prototype.save = function() {
|
||||||
/**
|
/**
|
||||||
* Получает настройки из стореджа плагина, устанавливает соответствующим инпутам соответствующие значения.
|
* Получает настройки из стореджа плагина, устанавливает соответствующим инпутам соответствующие значения.
|
||||||
*/
|
*/
|
||||||
Options.prototype.restore = function() {
|
OptionsPage.prototype.restore = function() {
|
||||||
this.checkOldStyle();
|
this.checkOldStyle();
|
||||||
|
|
||||||
chrome.storage.sync.get('options', function(data) {
|
chrome.storage.sync.get('options', function(data) {
|
||||||
|
@ -80,6 +80,7 @@ Options.prototype.restore = function() {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'enum':
|
case 'enum':
|
||||||
|
case 'plain':
|
||||||
input.value = data.value;
|
input.value = data.value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -97,19 +98,19 @@ Options.prototype.restore = function() {
|
||||||
/**
|
/**
|
||||||
* @returns {Object} Хеш настроек вида { имя_настроки: значение_настройки }
|
* @returns {Object} Хеш настроек вида { имя_настроки: значение_настройки }
|
||||||
*/
|
*/
|
||||||
Options.prototype.getValues = function() {
|
OptionsPage.prototype.getValues = function() {
|
||||||
return this._options;
|
return this._options;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Event} event Событие изменения
|
* @param {Event} event Событие изменения
|
||||||
*/
|
*/
|
||||||
Options.prototype._onChange = function(event) {
|
OptionsPage.prototype._onChange = function(event) {
|
||||||
this.updateOptionFromInput(event.target);
|
this.updateOptionFromInput(event.target);
|
||||||
this.save();
|
this.save();
|
||||||
};
|
};
|
||||||
|
|
||||||
Options.prototype.updateOptionFromInput = function(input) {
|
OptionsPage.prototype.updateOptionFromInput = function(input) {
|
||||||
var key = this.getOptionKey(input.name);
|
var key = this.getOptionKey(input.name);
|
||||||
|
|
||||||
if (this.isBoolean(input)) {
|
if (this.isBoolean(input)) {
|
||||||
|
@ -122,6 +123,11 @@ Options.prototype.updateOptionFromInput = function(input) {
|
||||||
type: 'enum',
|
type: 'enum',
|
||||||
value: input.value
|
value: input.value
|
||||||
};
|
};
|
||||||
|
} else {
|
||||||
|
this._options[key] = {
|
||||||
|
type: 'plain',
|
||||||
|
value: input.value
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -129,7 +135,7 @@ Options.prototype.updateOptionFromInput = function(input) {
|
||||||
* @param {HTMLElement} option Элемент опции
|
* @param {HTMLElement} option Элемент опции
|
||||||
* @returns {Boolean} Является ли настройка булевой
|
* @returns {Boolean} Является ли настройка булевой
|
||||||
*/
|
*/
|
||||||
Options.prototype.isBoolean = function(option) {
|
OptionsPage.prototype.isBoolean = function(option) {
|
||||||
return option.getAttribute('type') === 'checkbox';
|
return option.getAttribute('type') === 'checkbox';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -138,7 +144,7 @@ Options.prototype.isBoolean = function(option) {
|
||||||
* @param {HTMLElement} option Элемент опции
|
* @param {HTMLElement} option Элемент опции
|
||||||
* @returns {Boolean} Является ли настройка енумом
|
* @returns {Boolean} Является ли настройка енумом
|
||||||
*/
|
*/
|
||||||
Options.prototype.isEnum = function(option) {
|
OptionsPage.prototype.isEnum = function(option) {
|
||||||
return option.getAttribute('type') === 'radio';
|
return option.getAttribute('type') === 'radio';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -146,7 +152,7 @@ Options.prototype.isEnum = function(option) {
|
||||||
* @param {String} name Имя инпута
|
* @param {String} name Имя инпута
|
||||||
* @returns {String} Ключ для хеша настроек
|
* @returns {String} Ключ для хеша настроек
|
||||||
*/
|
*/
|
||||||
Options.prototype.getOptionKey = function(name) {
|
OptionsPage.prototype.getOptionKey = function(name) {
|
||||||
return name.replace(/-/g, '_');
|
return name.replace(/-/g, '_');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -154,7 +160,7 @@ Options.prototype.getOptionKey = function(name) {
|
||||||
* @param {String} Ключ хеша настроек
|
* @param {String} Ключ хеша настроек
|
||||||
* @returns {String} Имя инпута
|
* @returns {String} Имя инпута
|
||||||
*/
|
*/
|
||||||
Options.prototype.getOptionName = function(key) {
|
OptionsPage.prototype.getOptionName = function(key) {
|
||||||
return key.replace(/_/g, '-');
|
return key.replace(/_/g, '-');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -162,21 +168,21 @@ Options.prototype.getOptionName = function(key) {
|
||||||
* Выводит в консоль версию настроек и версию плагина
|
* Выводит в консоль версию настроек и версию плагина
|
||||||
* @param {String} optionsVersion
|
* @param {String} optionsVersion
|
||||||
*/
|
*/
|
||||||
Options.prototype.logVersion = function(optionsVersion) {
|
OptionsPage.prototype.logVersion = function(optionsVersion) {
|
||||||
console.info('Point+ %s, local options are for %s', this.version, optionsVersion);
|
console.info('Point+ %s, local options are for %s', this.version, optionsVersion);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Добавляет номер версии в подвал
|
* Добавляет номер версии в подвал
|
||||||
*/
|
*/
|
||||||
Options.prototype.showVersion = function() {
|
OptionsPage.prototype.showVersion = function() {
|
||||||
document.querySelector('#version').innerHTML = this.version;
|
document.querySelector('#version').innerHTML = this.version;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Проверяет, не старого ли формата настройки. И если старого, то удаляет их.
|
* Проверяет, не старого ли формата настройки. И если старого, то удаляет их.
|
||||||
*/
|
*/
|
||||||
Options.prototype.checkOldStyle = function() {
|
OptionsPage.prototype.checkOldStyle = function() {
|
||||||
chrome.storage.sync.get('option_fancybox', function(data) {
|
chrome.storage.sync.get('option_fancybox', function(data) {
|
||||||
if ((data.option_fancybox === true) || (data.option_fancybox === false)) {
|
if ((data.option_fancybox === true) || (data.option_fancybox === false)) {
|
||||||
console.log('Found old-style options. Cleaning...');
|
console.log('Found old-style options. Cleaning...');
|
||||||
|
@ -198,7 +204,7 @@ Options.prototype.checkOldStyle = function() {
|
||||||
/**
|
/**
|
||||||
* Показывает плашку про то, что настройки сохранились и надо обновить страницу
|
* Показывает плашку про то, что настройки сохранились и надо обновить страницу
|
||||||
*/
|
*/
|
||||||
Options.prototype.updateStatus = function() {
|
OptionsPage.prototype.updateStatus = function() {
|
||||||
this.status = this.status || document.querySelector('.saved');
|
this.status = this.status || document.querySelector('.saved');
|
||||||
|
|
||||||
this.status.classList.remove('hidden');
|
this.status.classList.remove('hidden');
|
||||||
|
@ -207,7 +213,7 @@ Options.prototype.updateStatus = function() {
|
||||||
/**
|
/**
|
||||||
* Слушает события на табах
|
* Слушает события на табах
|
||||||
*/
|
*/
|
||||||
Options.prototype.listenTabs = function() {
|
OptionsPage.prototype.listenTabs = function() {
|
||||||
var options = this;
|
var options = this;
|
||||||
|
|
||||||
options._selectedItem = document.querySelector('.tabs-item.selected');
|
options._selectedItem = document.querySelector('.tabs-item.selected');
|
||||||
|
@ -229,4 +235,4 @@ Options.prototype.listenTabs = function() {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
new Options();
|
new OptionsPage();
|
||||||
|
|
Loading…
Reference in a new issue