var loadingNewData = false;
var indexFromWebSocket = false;
var acceptingRemoteSettings = true;
var currentForm = document.getElementById('currentForm');
var currentDisplayIndex = 0;
var nbsp = ' ';
setTimeout(
() => sendThroughWebSocket(JSON.stringify({
type: 'SettingsRequest'
})),
50
);
function handleMessage(message) {
if (message.type == 'MessageBroadcast')
try {
handleBroadcastedMessage(JSON.parse(message.message));
} catch (e) {
console.error(message);
console.error(e);
}
}
function handleBroadcastedMessage(message) {
if (message.type == 'SettingsRequest')
sendThroughWebSocket(JSON.stringify({
type: 'Settings',
settings: getSettings()
}));
else if ((message.type == 'NewSettings') || (message.type == 'Settings' && acceptingRemoteSettings)) {
acceptingRemoteSettings = true;
applyLoadedSettings(message.settings);
acceptingRemoteSettings = false;
}
console.log(message);
}
function downloadTextFile(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
function getSettings() {
var settings = {};
for (var form of Array.from(document.querySelectorAll('form.form')))
for (var keyPair of Array.from((new FormData(form)).entries()))
settings[keyPair[0]] = keyPair[1];
settings.templateParams = getTemplateParameters();
return settings;
}
function saveSettings() {
var token = window.location.hash.substr(1);
downloadTextFile(
`manual-notifier_settings_${token}.json`,
JSON.stringify(getSettings())
);
}
function loadSettings(input) {
var file = input.files[0];
input.value = null;
if (file) {
var fr = new FileReader();
fr.onload = () => {
var text = fr.result;
applyLoadedSettings(JSON.parse(text));
};
fr.readAsText(file);
}
}
function loadBackgroundMedia(input) {
if (!input) {
var backgroundMediaHidden = document.getElementById('backgroundMediaHidden');
backgroundMediaHidden.value = '';
updateMediaPreviewAfterChange();
broadcastChanges();
} else {
var file = input.files[0];
input.value = null;
var fr = new FileReader();
fr.readAsDataURL(file);
fr.onloadend = () => {
var backgroundMediaHidden = document.getElementById('backgroundMediaHidden');
backgroundMediaHidden.value = fr.result;
updateMediaPreviewAfterChange();
broadcastChanges();
};
}
}
function updateMediaPreviewAfterChange() {
var mediaPreview = document.getElementById('mediaPreview');
var backgroundMediaHidden = document.getElementById('backgroundMediaHidden');
var backgroundMediaString = backgroundMediaHidden.value;
mediaPreview.style.backgroundColor = document.getElementById('backgroundColor').value;
if (backgroundMediaString == '') {
mediaPreview.innerHTML = 'No media.';
} else if (backgroundMediaString.startsWith('data:image/')) {
mediaPreview.innerHTML = ``;
} else if (backgroundMediaString.startsWith('data:video/')) {
mediaPreview.innerHTML = `