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 = `