/* file KLEIDER/web/src/pinw/store.js */ // 2020-05-25 Herbert Schiemann function initialize () { var d; // ein Eintrag in data var e; // Element var t; // Text var n; // ganze Zahl, Listeneintrag var i; // Schleifenzähler var k; // ein Schlüssel var s; // ein Haupt-Schlüssel var v; // ein Wert var m; // Match-Ergebnis var au = document.getElementsByTagName("audio")[0]; var data = {}; var st; e = document.getElementById ("store_type"); if (window.localStorage) { // https://dom.spec.whatwg.org/#dom-node-textcontent // https://developer.mozilla.org/de/docs/Web/API/Node/textContent e.textContent = "localStorage"; // https://developer.mozilla.org/de/docs/Web/API/Window/localStorage st = window.localStorage; } else if (window.sessionStorage) { e.textContent = "sessionStorage"; st = window.sessionStorage; } else { e.textContent = "-"; } if (st) { n = st.length; if (n > 0) { t = "("; for (i = 0; i < n; ++i) { if (i > 0) t += ", "; t += st.key(i); } t += ")"; } e = document.getElementById ("store_length"); e.textContent = `${n} ${t}`; } // Änderungen in Eingabefeldern übernehmen var h = function (x) { k = x.target.getAttribute ("id"); if (k.match(/^b_/)) { k = k.replace(/^b_/, ""); n = data [k]; t = n[0].value; if (t != n[1]) { n[1] = t; if (t == "") st.removeItem (k); else st.setItem (k, t); } } else if (m = k.match(/^sb_([a-z]+)_(.+)/)) { s = m[1]; d = data[s]; k = m[2]; n = d[2][k]; t = n[0].value; if (t != n[1]) { n[1] = t; s = d[2]; t = ""; i = 0; for (k in s) { if (s[k][1] != "") { if (i++) t += ":"; t += `${k}=${s[k][1]}`; } } d[0].value = t; } } else if (m = k.match(/^a_([a-z]+)_(.+)/)) { s = m[1]; d = data[s]; k = m[2]; n = d[2][k]; t = n[0].value; if (t) { au.setAttribute("src", `/snd/${t}.ogg`); au.play(); } } }; e = document.getElementById("tab_keys"); n = e.getElementsByTagName ("input"); for (i = 0; i < n.length; ++i) { e = n[i]; v = e.getAttribute("type"); if (v == "text") { k = e.getAttribute("id"); k = k.replace(/^v_/, ""); t = st.getItem (k) || ""; data[k] = [e, t, {}]; e.value = t; } else if (v == "button") e.addEventListener ("click", h); } n = document.getElementsByTagName ("input"); for (i = 0; i < n.length; ++i) { e = n[i]; v = e.getAttribute("type"); k = e.getAttribute("id"); if (!k) continue; if (v == "button") { if (k.match(/^sb_/) || k.match(/^a_/)) e.addEventListener ("click", h); } else { if (m = k.match(/^sv_([a-z]+)_(.*)$/)) data[m[1]][2][m[2]] = [e, ""]; } } // vorgeschlagene Werte in Eingabefeld übernehmen var y = function (x) { t = x.target; k = t.getAttribute ("x-ref"); if (k == "") return; d = document.getElementById (`sv_${k}`); if (!d) d = document.getElementById (`v_${k}`); if (!d) return; d.value = t.textContent; }; n = document.getElementsByTagName ("code"); for (i = 0; i < n.length; ++i) { e = n[i]; if (!e.getAttribute("x-ref")) continue; e.addEventListener ("click", y); } // Eingabefelder mit Werten belegen for (k in data) { d = data[k]; for ( t = d[1]; m = t.match(/^([a-z_]+)=([^:]*):?/); t = t.replace (/^([a-z_]+)=([^:]*):?/, "") ) { v = m[2]; n = d[2][m[1]]; if (n) { n[0].value = v; n[1] = v; } } } // Zeit als Namen einsetzen var z = function () { document.getElementById("v_name").value = new Date().toISOString(); }; document.getElementById ("setnametm").addEventListener ("click", z); } // initialize onload = initialize; /* end of file KLEIDER/web/src/pinw/store.js */