162 lines
6.4 KiB
JavaScript
162 lines
6.4 KiB
JavaScript
|
'use strict'
|
|||
|
|
|||
|
/**
|
|||
|
* Генерация HTML-элемента настройки с текстовым полем
|
|||
|
*
|
|||
|
* @param {string} id Настройка
|
|||
|
* @param {string|null} name Ярлык настройки (понятный пользователю)
|
|||
|
*
|
|||
|
* @return {bool} Статус выполнения
|
|||
|
*/
|
|||
|
function text(id, name) {
|
|||
|
if (typeof id === 'string') {
|
|||
|
settings.read(id).then(result => {
|
|||
|
// Инициализация оболочки поля ввода
|
|||
|
let wrap = document.createElement('div');
|
|||
|
wrap.classList.add('setting');
|
|||
|
|
|||
|
// Инициализация ярлыка поля ввода
|
|||
|
let label = document.createElement('label');
|
|||
|
label.innerText = name !== undefined && typeof name === 'string' ? name : id;
|
|||
|
|
|||
|
// Инициализация поля ввода
|
|||
|
let text = document.createElement('input');
|
|||
|
text.setAttribute('id', id);
|
|||
|
text.setAttribute('type', 'text');
|
|||
|
text.value = result[id] ?? '';
|
|||
|
|
|||
|
// Инициализация архитектуры
|
|||
|
wrap.appendChild(label);
|
|||
|
wrap.appendChild(text);
|
|||
|
|
|||
|
// Запись в документ
|
|||
|
document.body.appendChild(wrap);
|
|||
|
|
|||
|
// Инициализация созданного элемента поля ввода
|
|||
|
text = document.getElementById(id);
|
|||
|
|
|||
|
// Инициализация события
|
|||
|
text.addEventListener("change", fn => { settings.write(id, text.value); });
|
|||
|
|
|||
|
return true;
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Генерация HTML-элемента настройки с циферным полем
|
|||
|
*
|
|||
|
* @param {string} id Настройка
|
|||
|
* @param {string|null} name Ярлык настройки (понятный пользователю)
|
|||
|
*
|
|||
|
* @return {bool} Статус выполнения
|
|||
|
*/
|
|||
|
function number(id, name, min = 0, max = 100) {
|
|||
|
if (typeof id === 'string') {
|
|||
|
settings.read(id).then(result => {
|
|||
|
// Инициализация оболочки циферного поля ввода
|
|||
|
let wrap = document.createElement('div');
|
|||
|
wrap.classList.add('setting');
|
|||
|
|
|||
|
// Инициализация ярлыка циферного поля ввода
|
|||
|
let label = document.createElement('label');
|
|||
|
label.innerText = name !== undefined && typeof name === 'string' ? name : id;
|
|||
|
|
|||
|
// Инициализация поля циферного ввода
|
|||
|
let number = document.createElement('input');
|
|||
|
number.setAttribute('id', id);
|
|||
|
number.setAttribute('type', 'number');
|
|||
|
number.min = min;
|
|||
|
number.max = max;
|
|||
|
number.value = result[id] ?? '';
|
|||
|
|
|||
|
// Инициализация архитектуры
|
|||
|
wrap.appendChild(label);
|
|||
|
wrap.appendChild(number);
|
|||
|
|
|||
|
// Запись в документ
|
|||
|
document.body.appendChild(wrap);
|
|||
|
|
|||
|
// Инициализация созданного элемента циферного поля ввода
|
|||
|
number = document.getElementById(id);
|
|||
|
|
|||
|
// Инициализация события
|
|||
|
number.addEventListener("change", fn => { settings.write(id, number.value); });
|
|||
|
|
|||
|
return true;
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Генерация HTML-элемента настройки с кнопкой активации
|
|||
|
*
|
|||
|
* @param {string} id Настройка
|
|||
|
* @param {string|null} name Ярлык настройки (понятный пользователю)
|
|||
|
*
|
|||
|
* @return {bool} Статус выполнения
|
|||
|
*/
|
|||
|
function checkbox(id, name) {
|
|||
|
if (typeof id === 'string') {
|
|||
|
settings.read(id).then(result => {
|
|||
|
// Инициализация оболочки кнопки активации
|
|||
|
let wrap = document.createElement('div');
|
|||
|
wrap.classList.add('setting');
|
|||
|
|
|||
|
// Инициализация ярлыка кнопки активации
|
|||
|
let label = document.createElement('label');
|
|||
|
label.innerText = name !== undefined && typeof name === 'string' ? name : id;
|
|||
|
|
|||
|
// Инициализация кнопки активации (настоящая)
|
|||
|
let checkbox = document.createElement('input');
|
|||
|
checkbox.setAttribute('id', id);
|
|||
|
checkbox.setAttribute('type', 'checkbox');
|
|||
|
checkbox.checked = result[id] === true || result[id] === 1 || result[id] === '1' ? true : false;
|
|||
|
|
|||
|
// Инициализация кнопки активации (видимая)
|
|||
|
let div = document.createElement('div');
|
|||
|
div.setAttribute('id', id + '_button');
|
|||
|
div.classList.add('checkbox');
|
|||
|
div.setAttribute('type', 'button');
|
|||
|
|
|||
|
// Инициализация архитектуры
|
|||
|
wrap.appendChild(label);
|
|||
|
wrap.appendChild(checkbox);
|
|||
|
wrap.appendChild(div);
|
|||
|
|
|||
|
// Запись в документ
|
|||
|
document.body.appendChild(wrap);
|
|||
|
|
|||
|
// Инициализация созданного элемента кнопки активации
|
|||
|
checkbox = document.getElementById(id);
|
|||
|
|
|||
|
// Инициализация событий
|
|||
|
checkbox.addEventListener("change", fn => { settings.write(id, checkbox.checked); });
|
|||
|
document.getElementById(id + '_button').addEventListener("click", fn => { checkbox.checked = checkbox.checked ? false : true; });
|
|||
|
|
|||
|
return true;
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Инициализация
|
|||
|
*/
|
|||
|
function init() {
|
|||
|
checkbox('debug', 'Режим отладки');
|
|||
|
checkbox('autonom', 'Режим автономный');
|
|||
|
number('server_connect_repeats', 'Количество попыток соединения');
|
|||
|
checkbox('instructions', 'Инструкции');
|
|||
|
checkbox('instruction_settings', 'Инструкция по доступу к настройкам');
|
|||
|
checkbox('instruction_killer', 'Инструкция по доступу к удалению сообщений');
|
|||
|
checkbox('instruction_visor', 'Инструкция по доступу к просмотру удалённых сообщений');
|
|||
|
}
|
|||
|
|
|||
|
document.addEventListener("DOMContentLoaded", init);
|