From a732640bc1259d5b5eaf4f65c193c03cc26358e0 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Tue, 24 Nov 2015 16:30:37 +0800 Subject: [PATCH] #257 --- file/files.go | 70 +++++++++++++++++++++++++---------------------- file/importer.go | 6 ++-- file/outline.go | 11 +++++--- output/build.go | 18 ++++++------ static/js/menu.js | 8 +++--- static/js/tree.js | 16 ++++++----- static/js/wide.js | 22 +++++++++------ 7 files changed, 82 insertions(+), 69 deletions(-) diff --git a/file/files.go b/file/files.go index ce86c74..bec9deb 100644 --- a/file/files.go +++ b/file/files.go @@ -164,14 +164,14 @@ func GetFileHandler(w http.ResponseWriter, r *http.Request) { } username := httpSession.Values["username"].(string) - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) var args map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&args); err != nil { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -186,12 +186,14 @@ func GetFileHandler(w http.ResponseWriter, r *http.Request) { size := util.File.GetFileSize(path) if size > 5242880 { // 5M - data["succ"] = false - data["msg"] = "This file is too large to open :(" + result.Succ = false + result.Msg = "This file is too large to open :(" return } + data := map[string]interface{}{} + buf, _ := ioutil.ReadFile(path) extension := filepath.Ext(path) @@ -219,12 +221,14 @@ func GetFileHandler(w http.ResponseWriter, r *http.Request) { content := string(buf) if util.File.IsBinary(content) { - data["succ"] = false - data["msg"] = "Can't open a binary file :(" + result.Succ = false + result.Msg = "Can't open a binary file :(" } else { data["content"] = content data["path"] = path } + + result.Data = data } // SaveFileHandler handles request of saving file. @@ -237,14 +241,14 @@ func SaveFileHandler(w http.ResponseWriter, r *http.Request) { } username := httpSession.Values["username"].(string) - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) var args map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&args); err != nil { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -262,7 +266,7 @@ func SaveFileHandler(w http.ResponseWriter, r *http.Request) { if nil != err { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -273,7 +277,7 @@ func SaveFileHandler(w http.ResponseWriter, r *http.Request) { if err := fout.Close(); nil != err { logger.Error(err) - data["succ"] = false + result.Succ = false wSession := session.WideSessions.Get(sid) wSession.EventQueue.Queue <- &event.Event{Code: event.EvtCodeServerInternalError, Sid: sid, @@ -293,14 +297,14 @@ func NewFileHandler(w http.ResponseWriter, r *http.Request) { } username := httpSession.Values["username"].(string) - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) var args map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&args); err != nil { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -319,7 +323,7 @@ func NewFileHandler(w http.ResponseWriter, r *http.Request) { wSession := session.WideSessions.Get(sid) if !createFile(path, fileType) { - data["succ"] = false + result.Succ = false wSession.EventQueue.Queue <- &event.Event{Code: event.EvtCodeServerInternalError, Sid: sid, Data: "can't create file " + path} @@ -345,14 +349,14 @@ func RemoveFileHandler(w http.ResponseWriter, r *http.Request) { } username := httpSession.Values["username"].(string) - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) var args map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&args); err != nil { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -370,7 +374,7 @@ func RemoveFileHandler(w http.ResponseWriter, r *http.Request) { wSession := session.WideSessions.Get(sid) if !removeFile(path) { - data["succ"] = false + result.Succ = false wSession.EventQueue.Queue <- &event.Event{Code: event.EvtCodeServerInternalError, Sid: sid, Data: "can't remove file " + path} @@ -391,14 +395,14 @@ func RenameFileHandler(w http.ResponseWriter, r *http.Request) { } username := httpSession.Values["username"].(string) - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) var args map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&args); err != nil { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -423,7 +427,7 @@ func RenameFileHandler(w http.ResponseWriter, r *http.Request) { wSession := session.WideSessions.Get(sid) if !renameFile(oldPath, newPath) { - data["succ"] = false + result.Succ = false wSession.EventQueue.Queue <- &event.Event{Code: event.EvtCodeServerInternalError, Sid: sid, Data: "can't rename file " + oldPath} @@ -456,13 +460,13 @@ func FindHandler(w http.ResponseWriter, r *http.Request) { } username := httpSession.Values["username"].(string) - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) var args map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&args); err != nil { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -497,7 +501,7 @@ func FindHandler(w http.ResponseWriter, r *http.Request) { sort.Sort(founds) - data["founds"] = founds + result.Data = founds } // SearchTextHandler handles request of searching files under the specified directory with the specified keyword. @@ -509,14 +513,14 @@ func SearchTextHandler(w http.ResponseWriter, r *http.Request) { return } - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) var args map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&args); err != nil { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -524,7 +528,7 @@ func SearchTextHandler(w http.ResponseWriter, r *http.Request) { sid := args["sid"].(string) wSession := session.WideSessions.Get(sid) if nil == wSession { - data["succ"] = false + result.Succ = false return } @@ -548,7 +552,7 @@ func SearchTextHandler(w http.ResponseWriter, r *http.Request) { founds = searchInFile(dir, text) } - data["founds"] = founds + result.Data = founds } // walk traverses the specified path to build a file tree. diff --git a/file/importer.go b/file/importer.go index 486b7ef..3b6f2ea 100644 --- a/file/importer.go +++ b/file/importer.go @@ -67,11 +67,11 @@ func handleUploads(r *http.Request, dir string) (fileInfos []*fileInfo) { // UploadHandler handles request of file upload. func UploadHandler(w http.ResponseWriter, r *http.Request) { - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) q := r.URL.Query() dir := q["path"][0] - data["files"] = handleUploads(r, dir) + result.Data = handleUploads(r, dir) } diff --git a/file/outline.go b/file/outline.go index f42d1d4..82e2558 100755 --- a/file/outline.go +++ b/file/outline.go @@ -34,14 +34,14 @@ type element struct { // GetOutlineHandler gets outfile of a go file. func GetOutlineHandler(w http.ResponseWriter, r *http.Request) { - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) var args map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&args); err != nil { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -51,11 +51,12 @@ func GetOutlineHandler(w http.ResponseWriter, r *http.Request) { fset := token.NewFileSet() f, err := parser.ParseFile(fset, "", code, 0) if err != nil { - data["succ"] = false + result.Succ = false return } + data := map[string]interface{}{} // ast.Print(fset, f) line, ch := getCursor(code, int(f.Name.Pos())) @@ -128,6 +129,8 @@ func GetOutlineHandler(w http.ResponseWriter, r *http.Request) { data["structDecls"] = structDecls data["interfaceDecls"] = interfaceDecls data["typeDecls"] = typeDecls + + result.Data = data } // getCursor calculates the cursor position (line, ch) by the specified offset. diff --git a/output/build.go b/output/build.go index e2a2f0f..5aca4c7 100644 --- a/output/build.go +++ b/output/build.go @@ -35,8 +35,8 @@ import ( // BuildHandler handles request of building. func BuildHandler(w http.ResponseWriter, r *http.Request) { - data := map[string]interface{}{"succ": true} - defer util.RetJSON(w, r, data) + result := util.NewResult() + defer util.RetResult(w, r, result) httpSession, _ := session.HTTPSession.Get(r, "wide-session") if httpSession.IsNew { @@ -51,7 +51,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) { if err := json.NewDecoder(r.Body).Decode(&args); err != nil { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -72,7 +72,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) { if nil != err { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -83,7 +83,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) { if err := fout.Close(); nil != err { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -104,7 +104,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) { stdout, err := cmd.StdoutPipe() if nil != err { logger.Error(err) - data["succ"] = false + result.Succ = false return } @@ -112,12 +112,12 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) { stderr, err := cmd.StderrPipe() if nil != err { logger.Error(err) - data["succ"] = false + result.Succ = false return } - if !data["succ"].(bool) { + if !result.Succ { return } @@ -144,7 +144,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) { if err := cmd.Start(); nil != err { logger.Error(err) - data["succ"] = false + result.Succ = false return } diff --git a/static/js/menu.js b/static/js/menu.js index 1ace6a0..92b3ad9 100644 --- a/static/js/menu.js +++ b/static/js/menu.js @@ -304,10 +304,10 @@ var menu = { url: config.context + '/build', data: JSON.stringify(request), dataType: "json", - beforeSend: function (data) { + beforeSend: function (result) { bottomGroup.resetOutput(); }, - success: function (data) { + success: function (result) { $("#buildRun").addClass("ico-stop") .removeClass("ico-buildrun").attr("title", config.label.stop); } @@ -336,10 +336,10 @@ var menu = { url: config.context + '/build', data: JSON.stringify(request), dataType: "json", - beforeSend: function (data) { + beforeSend: function (result) { bottomGroup.resetOutput(); }, - success: function (data) { + success: function (result) { } }); }, diff --git a/static/js/tree.js b/static/js/tree.js index f04161c..5db3381 100644 --- a/static/js/tree.js +++ b/static/js/tree.js @@ -239,7 +239,7 @@ var tree = { url: "/file/upload?path=" + request.path, dataType: 'json', formData: request, - done: function (e, data) { + done: function (e, result) { tree.fileTree.reAsyncChildNodes(wide.curNode, "refresh"); }, fail: function () { @@ -413,12 +413,14 @@ var tree = { url: config.context + '/file', data: JSON.stringify(request), dataType: "json", - success: function (data) { - if (!data.succ) { - $("#dialogAlert").dialog("open", data.msg); + success: function (result) { + if (!result.succ) { + $("#dialogAlert").dialog("open", result.msg); return false; } + + var data = result.data; if (!data.mode) { var mode = CodeMirror.findModeByFileName(treeNode.path); @@ -496,13 +498,13 @@ var tree = { url: config.context + '/file/search/text', data: JSON.stringify(request), dataType: "json", - success: function (data) { - if (!data.succ) { + success: function (result) { + if (!result.succ) { return; } $("#dialogSearchForm").dialog("close"); - editors.appendSearch(data.founds, 'founds', request.text); + editors.appendSearch(result.data, 'founds', request.text); } }); } diff --git a/static/js/wide.js b/static/js/wide.js index 9322304..5b94be6 100644 --- a/static/js/wide.js +++ b/static/js/wide.js @@ -34,11 +34,13 @@ var wide = { url: config.context + '/outline', data: JSON.stringify(request), dataType: "json", - success: function (data) { - if (!data.succ) { + success: function (result) { + if (!result.succ) { return; } + var data = result.data; + var outlineHTML = '