[fix] persist forms

This commit is contained in:
Andy Bunce 2025-10-05 17:53:59 +01:00
parent 4ccc684f89
commit c4bf51233a

View file

@ -22,6 +22,7 @@ window.addEventListener('load', () => {
} }
$("iServer").value = svr; $("iServer").value = svr;
view.setState(lsp.EditorState.create({ doc: doc, extensions: lsp.baseExts })); view.setState(lsp.EditorState.create({ doc: doc, extensions: lsp.baseExts }));
formFromStore('fSettings');
connect(); connect();
}); });
@ -128,13 +129,17 @@ $("load").onchange = e => {
function updateSettings(event) { function updateSettings(event) {
event.preventDefault(); event.preventDefault();
const form = $('fSettings');
console.log("ser..", formSerialize(form))
console.log("COPTS", lsp.curOpts); console.log("COPTS", lsp.curOpts);
const opts={lineWrap: $("lineWrap").checked, const opts = {
lineWrap: $("lineWrap").checked,
minimap: $("minimap").checked minimap: $("minimap").checked
} }
console.log(opts) console.log(opts)
lsp.updateCompartment(opts); lsp.updateCompartment(opts);
$('popSettings').hidePopover(); $('popSettings').hidePopover();
formToStore("fSettings");
}; };
$("fSettings").addEventListener("submit", updateSettings); $("fSettings").addEventListener("submit", updateSettings);
@ -195,3 +200,29 @@ function log(rpc) {
$("traffic").insertBefore(li, $("traffic").firstChild) $("traffic").insertBefore(li, $("traffic").firstChild)
}; };
function formFromStore(name) {
let v = localStorage.getItem(name)
if (!!v) formDeserialize($(name), v);
};
function formToStore(name) {
localStorage.setItem(name, formSerialize($(name)));
};
function formSerialize(form) {
const data = new FormData(form);
//https://stackoverflow.com/a/44033425/1869660
return new URLSearchParams(data).toString();
}
function formDeserialize(form, data) {
const entries = (new URLSearchParams(data)).entries();
for (const [key, val] of entries) {
//http://javascript-coder.com/javascript-form/javascript-form-value.phtml
const input = form.elements[key];
switch (input.type) {
case 'checkbox': input.checked = !!val; break;
default: input.value = val; break;
}
}
}