[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;
view.setState(lsp.EditorState.create({ doc: doc, extensions: lsp.baseExts }));
formFromStore('fSettings');
connect();
});
@ -51,35 +52,35 @@ $("symbols2").onclick = e => {
.then(r => {
console.log("symbols", r)
$("symPanel").open = true;
const icons=[
'symbol-file' ,
'symbol-class' ,
'symbol-namespace' ,
'symbol-structure' ,
'symbol-class' ,
'symbol-method' ,
'symbol-property' ,
'symbol-field' ,
'symbol-method-arrow' ,
'symbol-enum' ,
'symbol-interface' ,
'symbol-method' ,
'symbol-variable' ,
'symbol-constant' ,
'symbol-string' ,
'symbol-numeric' ,
'symbol-boolean' ,
'symbol-array' ,
'symbol-structure' ,
'symbol-key' ,
'dash' ,
'symbol-enum-member' ,
'symbol-misc' ,
'symbol-event' ,
'symbol-operator' ,
'symbol-parameter'
const icons = [
'symbol-file',
'symbol-class',
'symbol-namespace',
'symbol-structure',
'symbol-class',
'symbol-method',
'symbol-property',
'symbol-field',
'symbol-method-arrow',
'symbol-enum',
'symbol-interface',
'symbol-method',
'symbol-variable',
'symbol-constant',
'symbol-string',
'symbol-numeric',
'symbol-boolean',
'symbol-array',
'symbol-structure',
'symbol-key',
'dash',
'symbol-enum-member',
'symbol-misc',
'symbol-event',
'symbol-operator',
'symbol-parameter'
];
$("symList").setData(r,icons);
$("symList").setData(r, icons);
});
};
@ -128,13 +129,17 @@ $("load").onchange = e => {
function updateSettings(event) {
event.preventDefault();
console.log("COPTS",lsp.curOpts);
const opts={lineWrap: $("lineWrap").checked,
minimap:$("minimap").checked
const form = $('fSettings');
console.log("ser..", formSerialize(form))
console.log("COPTS", lsp.curOpts);
const opts = {
lineWrap: $("lineWrap").checked,
minimap: $("minimap").checked
}
console.log(opts)
lsp.updateCompartment(opts);
$('popSettings').hidePopover();
formToStore("fSettings");
};
$("fSettings").addEventListener("submit", updateSettings);
@ -195,3 +200,29 @@ function log(rpc) {
$("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;
}
}
}