|
@@ -57,13 +57,12 @@ function handleFileClick(item) {
|
|
|
}
|
|
|
|
|
|
function loadFilelist() {
|
|
|
- setLocalStatus("<span class=\"icon icon-loading\"></span> Loading file list");
|
|
|
-
|
|
|
- if (!xhr) xhr = new XMLHttpRequest();
|
|
|
+ xhr = new XMLHttpRequest();
|
|
|
xhr.open("POST", "file-api.lc", true);
|
|
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
|
xhr.onreadystatechange = function () {
|
|
|
if (isXhrSuccess(xhr)) {
|
|
|
+ //setRemoteStatus("");
|
|
|
var filelistHtml = "";
|
|
|
var json = JSON.parse(xhr.responseText);
|
|
|
var files = new Array(json.length);
|
|
@@ -85,8 +84,11 @@ function loadFilelist() {
|
|
|
}
|
|
|
|
|
|
setLocalStatus("");
|
|
|
+ } else {
|
|
|
+ //setRemoteStatus(xhr.responseText);
|
|
|
}
|
|
|
};
|
|
|
+ setLocalStatus("<span class=\"icon icon-loading\"></span> Loading file list");
|
|
|
xhr.send("action=list");
|
|
|
}
|
|
|
|
|
@@ -96,51 +98,55 @@ function handleSaveCallback() {
|
|
|
|
|
|
savingFileOffset += blockSize;
|
|
|
if (savingFileOffset < savingText.length) {
|
|
|
- setLocalStatus("<span class=\"icon icon-loading\"></span> Saving file: " + savingFilename + " " + savingFileOffset + "/" + savingText.length + " bytes");
|
|
|
-
|
|
|
var params = "action=append&filename=" + savingFilename + "&data=" + encodeURIComponent(savingText.substring(savingFileOffset, savingFileOffset + blockSize));
|
|
|
- if (!xhr) xhr = new XMLHttpRequest();
|
|
|
+ xhr = new XMLHttpRequest();
|
|
|
xhr.open("POST", "file-api.lc", true);
|
|
|
xhr.onreadystatechange = handleSaveCallback;
|
|
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
|
+ setLocalStatus("<span class=\"icon icon-loading\"></span> Saving file: " + savingFilename + " " + savingFileOffset + "/" + savingText.length + " bytes");
|
|
|
xhr.send(params);
|
|
|
} else {
|
|
|
- if ((savingFilename.split(".").pop() == "lua") && (savingFilename != "config.lua") && (savingFilename != "config.lua")) {
|
|
|
- setLocalStatus("<span class=\"icon icon-loading\"></span> Compiling file: " + savingFilename);
|
|
|
-
|
|
|
+ if ((savingFilename.split(".").pop() == "lua") && (savingFilename != "config.lua") && (savingFilename != "init.lua")) {
|
|
|
params = "action=compile&filename=" + savingFilename;
|
|
|
- if (!xhr) xhr = new XMLHttpRequest();
|
|
|
+ xhr = new XMLHttpRequest();
|
|
|
xhr.open("POST", "file-api.lc", true);
|
|
|
xhr.onreadystatechange = handleCompileCallback;
|
|
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
|
+ setLocalStatus("<span class=\"icon icon-loading\"></span> Compiling file: " + savingFilename);
|
|
|
xhr.send(params);
|
|
|
} else {
|
|
|
setLocalStatus("Saved file: " + savingFilename + " " + savingText.length + " bytes");
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- setRemoteStatus("");
|
|
|
setRemoteStatus(xhr.responseText);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function handleCompileCallback() {
|
|
|
if (isXhrSuccess(xhr)) {
|
|
|
- setLocalStatus("Compiled file: " + savingFilename);
|
|
|
- setRemoteStatus("");
|
|
|
+ setLocalStatus("");
|
|
|
}
|
|
|
+ setRemoteStatus(xhr.responseText);
|
|
|
}
|
|
|
|
|
|
+function handleFileCallback() {
|
|
|
+ setRemoteStatus(xhr.responseText);
|
|
|
+ if (isXhrSuccess(xhr)) {
|
|
|
+ loadFilelist();
|
|
|
+ setLocalStatus("");
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
function loadFile() {
|
|
|
var filename = curFileItem.id;
|
|
|
- setLocalStatus("Loading: " + filename);
|
|
|
- setLocalStatus("<span class=\"icon icon-loading\"></span> Loading file: " + filename);
|
|
|
-
|
|
|
var params = "action=load&filename=" + filename;
|
|
|
- if (!xhr) xhr = new XMLHttpRequest();
|
|
|
+ xhr = new XMLHttpRequest();
|
|
|
xhr.open("POST", "file-api.lc", true);
|
|
|
xhr.onreadystatechange = function () {
|
|
|
if (isXhrSuccess(xhr)) {
|
|
|
+ setRemoteStatus("");
|
|
|
editor.setValue(xhr.responseText);
|
|
|
var extension = filename.split(".").pop();
|
|
|
switch (extension) {
|
|
@@ -164,13 +170,17 @@ function loadFile() {
|
|
|
}
|
|
|
|
|
|
setLocalStatus("");
|
|
|
+ } else {
|
|
|
+ //setRemoteStatus(xhr.responseText);
|
|
|
}
|
|
|
}
|
|
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
|
+ setLocalStatus("<span class=\"icon icon-loading\"></span> Loading file: " + filename);
|
|
|
xhr.send(params);
|
|
|
}
|
|
|
|
|
|
function undo() {
|
|
|
+ setLocalStatus("undo");
|
|
|
editor.undo();
|
|
|
}
|
|
|
|
|
@@ -178,24 +188,60 @@ function save() {
|
|
|
savingText = editor.getValue();
|
|
|
savingFilename = curFileItem.id;
|
|
|
savingFileOffset = 0;
|
|
|
- setLocalStatus("<span class=\"icon icon-loading\"></span> Saving file: " + savingFilename + " " + savingFileOffset + "/" + savingText.length + " bytes");
|
|
|
- setRemoteStatus("");
|
|
|
var params = "action=save&filename=" + savingFilename + "&data=" + encodeURIComponent(savingText.substring(savingFileOffset, savingFileOffset + blockSize));
|
|
|
- if (!xhr) xhr = new XMLHttpRequest();
|
|
|
+ xhr = new XMLHttpRequest();
|
|
|
xhr.open("POST", "file-api.lc", true);
|
|
|
xhr.onreadystatechange = handleSaveCallback;
|
|
|
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
|
+ setLocalStatus("<span class=\"icon icon-loading\"></span> Saving file: " + savingFilename + " " + savingFileOffset + "/" + savingText.length + " bytes");
|
|
|
xhr.send(params);
|
|
|
}
|
|
|
|
|
|
function preview() {
|
|
|
if (curFileItem) {
|
|
|
var url = curFileItem.id;
|
|
|
+ setLocalStatus("Preview: "+url);
|
|
|
var win = window.open(url, '_blank');
|
|
|
win.focus();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function new_file() {
|
|
|
+ xhr = new XMLHttpRequest();
|
|
|
+ xhr.open("POST", "file-api.lc", true);
|
|
|
+ xhr.onreadystatechange = handleFileCallback;
|
|
|
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
|
+ setLocalStatus("<span class=\"icon icon-loading\"></span> Creating new file");
|
|
|
+ xhr.send("action=new");
|
|
|
+}
|
|
|
+
|
|
|
+function rename_file() {
|
|
|
+ if (curFileItem) {
|
|
|
+ var filename = curFileItem.id;
|
|
|
+ var newfilename = prompt("Rename " + filename + " to:", filename);
|
|
|
+ if (newfilename != null) {
|
|
|
+ xhr = new XMLHttpRequest();
|
|
|
+ xhr.open("POST", "file-api.lc", true);
|
|
|
+ xhr.onreadystatechange = handleFileCallback;
|
|
|
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
|
+ setLocalStatus("<span class=\"icon icon-loading\"></span> Renaming file from \""+filename+"\" to \""+newfilename+"\"");
|
|
|
+ xhr.send("action=rename&filename="+escape(filename)+"&newfilename="+escape(newfilename));
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function delete_file() {
|
|
|
+ if (curFileItem) {
|
|
|
+ var filename = curFileItem.id;
|
|
|
+ xhr = new XMLHttpRequest();
|
|
|
+ xhr.open("POST", "file-api.lc", true);
|
|
|
+ xhr.onreadystatechange = handleFileCallback;
|
|
|
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
|
+ setLocalStatus("<span class=\"icon icon-loading\"></span> Deleting file: \""+filename+"\"");
|
|
|
+ xhr.send("action=delete&filename="+escape(filename));
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
function init() {
|
|
|
editor = CodeMirror(document.getElementById("editor"), {
|
|
|
styleActiveLine: true, // activeline
|
|
@@ -212,6 +258,9 @@ function init() {
|
|
|
document.getElementById("undo").addEventListener("click", undo);
|
|
|
document.getElementById("save").addEventListener("click", save);
|
|
|
document.getElementById("preview").addEventListener("click", preview);
|
|
|
+ document.getElementById("new").addEventListener("click", new_file);
|
|
|
+ document.getElementById("rename").addEventListener("click", rename_file);
|
|
|
+ document.getElementById("delete").addEventListener("click", delete_file);
|
|
|
}
|
|
|
|
|
|
// load large size script in sequence to avoid NodeMCU overflow
|