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); const body = await res.text(); if(!res.ok){ handleError(res) return } editor.session.setValue(body); } else { if (follower) f = '&f=true' const res = await fetch('/api/file?name=' + Active + f); const body = await res.json(); if(!res.ok){ handleError(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' }) }) if (res.ok) window.location.reload(); else handleError(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' }) }) if(!res.ok) handleError(res) } } async function FileApply(){ if (Active == 'ConfigUI') { return; } else { const res = await fetch('/api/apply?name='+ Active, { method: 'POST', }) if(!res.ok){ handleError(res) return } const result = await res.text() result_editor.session.setValue(result) } } async function handleError(res){ const msg = await res.text() ShowError(msg) } // starting point (function(){ // 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) }())