From 4c6570e2b45349e32c7393a72cf44732924651f4 Mon Sep 17 00:00:00 2001 From: Andy Bunce Date: Mon, 3 Nov 2025 16:36:30 +0000 Subject: [PATCH] [fix] catch errs --- webapp/static/clients/codemirror/grail.html | 41 ++++------------- webapp/static/clients/codemirror/script.js | 51 +++++++++++---------- 2 files changed, 37 insertions(+), 55 deletions(-) diff --git a/webapp/static/clients/codemirror/grail.html b/webapp/static/clients/codemirror/grail.html index 560b14f..10ae499 100644 --- a/webapp/static/clients/codemirror/grail.html +++ b/webapp/static/clients/codemirror/grail.html @@ -47,31 +47,7 @@ Web - - - - - - - - - - - - - - - - + @@ -94,7 +70,6 @@ - + @@ -122,13 +98,12 @@ - - + @@ -201,9 +176,11 @@ + + - -
+ + @@ -214,8 +191,8 @@ value="https://raw.githubusercontent.com/Quodatum/xqdoca/refs/heads/master/src/main/lib/model.xqm"> model.xqm (Quodatum/xqdoca) + value="https://git.quodatum.duckdns.org/api/v1/repos/quodatum/basex-lsp/raw/webapp/lsp/lsp-text.xqm"> + lsp-text.xqm (quodatum/basex-lsp FORGEIO) diff --git a/webapp/static/clients/codemirror/script.js b/webapp/static/clients/codemirror/script.js index feaf037..b8c93d5 100644 --- a/webapp/static/clients/codemirror/script.js +++ b/webapp/static/clients/codemirror/script.js @@ -42,16 +42,15 @@ $("connect").onclick = e => { e.preventDefault(); connect() }; $("symTrigger").onclick = e => { e.preventDefault(); }; $("symOptions").onclick = e => { e.preventDefault(); }; $("bnNew").onclick = e => { - let name = prompt("New file name?"); + let name = prompt("New file name?", "untitled.xq"); if (name === null) return; - alert("TODO") + docSwitch("", name); }; $("search").onclick = e => lsp.openSearchPanel(view); $("fullscreen").onclick = e => $("editor").requestFullscreen(); - $("bnWordAt").onclick = e => { let pos = view.state.selection.main.head; let w = view.state.wordAt(pos); @@ -64,7 +63,6 @@ $("symbols2").onclick = e => { .then(r => { console.log("symbols", r) $("symPanel").open = true; - $("symList").setData(r); }); }; @@ -102,34 +100,30 @@ $("bnLoad").onclick = e => { const v = workspace[iFile]; if (v) view.setState(v) // select local file $("bnRead").onclick = e => { $("fileElem").click(); }; $("fileElem").onchange = e => { + let file = e.target.files[0] let fr = new FileReader(); - fr.onload = function () { - alert(fr.result); - } - fr.readAsText(e.target.files[0]); + fr.onload = () => docSwitch(fr.result, file.name); + fr.readAsText(file); }; $("format").onclick = e => { console.log("FMT", lsp.formatDocument(view)); }; -$("load").onchange = e => { - const url = e.target.value; - if (url.length == 0) return - fetch(url) +$("popUrl").onsubmit = e => { + e.preventDefault(); + const f = objectFromForm("popUrl"); + fetch(f.url) .then(response => response.text()) .then(t => { - view.dispatch({ - - changes: { - from: 0, - to: view.state.doc.length, - insert: t - } - }) - //client.sync(); - //console.log("SYNC"); + docSwitch(t, f.url) + $("popWeb").open = false; + }) + .catch(error => { + alert("CORS?: " + error) }); - $("load").value = ""; }; + + + $("tConnect").addEventListener('quiet-change', e => { e.preventDefault(); $("popConnect").showPopover() @@ -185,6 +179,17 @@ function connect() { }; +// change active doc +function docSwitch(text, url) { + view.dispatch({ + changes: { + from: 0, + to: view.state.doc.length, + insert: text + } + }) + $("iFile").value = url; +}; function incoming(msg) {