var loadingNewData = false; var indexFromWebSocket = false; var acceptingRemoteSettings = true; var currentForm = document.getElementById('currentForm'); var backgroundForm = document.getElementById('backgroundForm'); var currentDisplayIndex = 0; var nbsp = ' '; var preview_frame = document.getElementById('preview_frame'); var preview_url = window.location.origin + window.location.pathname.replace(/control\/?$/, 'display/?test=1') + window.location.hash; preview_frame.setAttribute('src', preview_url); 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: putForm(backgroundForm, getSettings()) })); else if ((message.type == 'NewSettings') || (message.type == 'Settings' && acceptingRemoteSettings)) { acceptingRemoteSettings = true; applyLoadedSettings(message.settings); updateSendFields(); 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 putForm(form, settings) { for (let keyPair of Array.from((new FormData(form)).entries())) settings[keyPair[0]] = keyPair[1]; return settings; } function getSettings() { var settings = {}; for (let form of Array.from(document.querySelectorAll('form.form'))) putForm(form, settings); settings.templateParams = getTemplateParameters(); return settings; } function saveSettings() { var token = window.location.hash.substr(1); downloadTextFile( `manual-notifier_settings_${token}.json`, JSON.stringify(putForm(backgroundForm, 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(); broadcastBackgroundChanges(); } 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(); broadcastBackgroundChanges(); }; } } 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 = `