window.ToolIsFollow = false; async function FileGet(follower=false){ let f = '' if (Active == 'ConfigUI') { if (follower) f = '?f=true' const res = await fetch('/api/conf'+f) .catch(err=>{console.log(err);return;}); const body = await res.text(); if(!res.ok){ Catch(res) return } editor.session.setValue(body); } else { if (follower) f = '&f=true' const res = await fetch('/api/file?name=' + Active + f) .catch(err=>{console.log(err);return;}); const body = await res.json(); if(!res.ok){ Catch(res) return } editor.session.setValue(body.data); } } async function FileSave(){ if (Active == 'ConfigUI') { const res = await fetch('/api/conf', { method: 'POST', body: editor.getValue(), headers: new Headers({ 'Content-Type': 'application/json' }) }).catch(err=>{console.log(err);return;}); if (res.ok) window.location.reload(); else Catch(res) } else { const res = await fetch('/api/file', { method: 'POST', body: JSON.stringify({"name":Active,"data":editor.getValue()}), headers: new Headers({ 'Content-Type': 'application/json' }) }).catch(err=>{console.log(err);return;}); if(!res.ok) Catch(res) } } async function FileApply(){ if (Active == 'ConfigUI') { return; } else { const res = await fetch('/api/apply?name='+ Active, { method: 'POST', }).catch(err=>{console.log(err);return;}); if(!res.ok){ const result = await Catch(res) result_editor.session.setValue(result) return } const result = await res.text() result_editor.session.setValue(result) } } async function Catch(res){ console.trace() console.log(res) const msg = await res.text() ShowError(msg) return msg } // starting point (function(){ // block ctl-s window.addEventListener("keypress", function(event) { if (!(event.code == 115 && event.ctrlKey) && !(event.code == 19)) return true alert("Ctrl-S pressed") event.preventDefault() return false }) // setup ace editor setEditor() // setup result code block setResult() // for follow mode setInterval((async ()=>{ if (ToolIsFollow){ await FileGet(true) editor.gotoLine(editor.session.getLength()); } }), 1000) }())