Commit d55b2ad08cd5bddcae3a31c0196b825528e526cc
1 parent
e78674ef
- 修复编辑文件名时候点及其他文件时候造成的死循环
- 优化获取的编程数据异常时生成目录树死循环问题
Showing
1 changed file
with
75 additions
and
62 deletions
src/js/gb.js
| @@ -37,12 +37,12 @@ $(function() { | @@ -37,12 +37,12 @@ $(function() { | ||
| 37 | var playUrl; | 37 | var playUrl; |
| 38 | var playData; | 38 | var playData; |
| 39 | var playTreePathData = {"tree": []}; | 39 | var playTreePathData = {"tree": []}; |
| 40 | - | 40 | + var isPlayDataError = false; |
| 41 | var playFoo = { | 41 | var playFoo = { |
| 42 | showPLayError: function(){ | 42 | showPLayError: function(){ |
| 43 | utils.errorVisit.template = $('<div id="tips" class="tips">' + | 43 | utils.errorVisit.template = $('<div id="tips" class="tips">' + |
| 44 | '<div class="tips-inner">' + | 44 | '<div class="tips-inner">' + |
| 45 | - '访问参数出错,请联系管理人员。' + | 45 | + '访问参数出错,请联系管理人员。<br />并告知错误链接地址:<br /><span style="color: red;">' + window.location.href + '</span>' + |
| 46 | '</div>' + | 46 | '</div>' + |
| 47 | '</div>'); | 47 | '</div>'); |
| 48 | utils.errorVisit.show(); | 48 | utils.errorVisit.show(); |
| @@ -51,57 +51,67 @@ $(function() { | @@ -51,57 +51,67 @@ $(function() { | ||
| 51 | var playTreeFolder = [], | 51 | var playTreeFolder = [], |
| 52 | playTreeFile = []; | 52 | playTreeFile = []; |
| 53 | var n = 0, | 53 | var n = 0, |
| 54 | - m = 0 | 54 | + m = 0, |
| 55 | l = 0; | 55 | l = 0; |
| 56 | - playData.programmingFileList.length = 10; | ||
| 57 | - for (var i = 0; i < playData.programmingFileList.length; i++) { | ||
| 58 | - var temArr = playData.programmingFileList[i].path.split('/'); | ||
| 59 | - if(playTreeFolder.length > 0){ | ||
| 60 | - for (var j = 0; j < playTreeFolder.length; j++) { | ||
| 61 | - if(playTreeFolder[j]){ | ||
| 62 | - if(playTreeFolder[j].name != temArr[0]){ | ||
| 63 | - playTreeFolder[n] = {"name": temArr[0], "open": true, "isParent": true, "collapse": false }; | ||
| 64 | - }else{ | ||
| 65 | - // console.log('playTreeFolder[j] else'); | 56 | + var datalist = arr; |
| 57 | + datalist.length = 10; | ||
| 58 | + for (var i = 0; i < datalist.length; i++) { | ||
| 59 | + var temArr = datalist[i].path.split('/'); | ||
| 60 | + if(temArr[0] != "undefined" && temArr[1] != "undefined"){ | ||
| 61 | + if(playTreeFolder.length > 0){ | ||
| 62 | + for (var j = 0; j < playTreeFolder.length; j++) { | ||
| 63 | + if(playTreeFolder[j]){ | ||
| 64 | + if(playTreeFolder[j].name != temArr[0]){ | ||
| 65 | + playTreeFolder[n] = {"name": temArr[0], "open": true, "isParent": true, "collapse": false }; | ||
| 66 | + }else{ | ||
| 67 | + // console.log('playTreeFolder[j] else'); | ||
| 68 | + } | ||
| 66 | } | 69 | } |
| 67 | } | 70 | } |
| 71 | + }else{ | ||
| 72 | + playTreeFolder[n] = {"name": temArr[0], "open": true, "isParent": true, "collapse": false }; | ||
| 73 | + n++; | ||
| 68 | } | 74 | } |
| 69 | - }else{ | ||
| 70 | - playTreeFolder[n] = {"name": temArr[0], "open": true, "isParent": true, "collapse": false }; | ||
| 71 | - n++; | ||
| 72 | - } | ||
| 73 | - | ||
| 74 | - if(playTreeFile.length > 0){ | ||
| 75 | - for (var j = 0; j < playTreeFile.length; j++) { | ||
| 76 | - if(playTreeFile[j]){ | ||
| 77 | - if(playTreeFile[j].name != temArr[1]){ | ||
| 78 | - playTreeFile[m] = {'pName': temArr[0], "name": temArr[1], "type": "java" }; | ||
| 79 | - }else{ | ||
| 80 | - playTreeFile[m] = {'pName': temArr[0], "name": temArr[1], "type": "java" }; | ||
| 81 | - m++; | 75 | + |
| 76 | + if(playTreeFile.length > 0){ | ||
| 77 | + for (var j = 0; j < playTreeFile.length; j++) { | ||
| 78 | + if(playTreeFile[j]){ | ||
| 79 | + if(playTreeFile[j].name != temArr[1]){ | ||
| 80 | + playTreeFile[m] = {'pName': temArr[0], "name": temArr[1], "type": "java" }; | ||
| 81 | + }else{ | ||
| 82 | + playTreeFile[m] = {'pName': temArr[0], "name": temArr[1], "type": "java" }; | ||
| 83 | + m++; | ||
| 84 | + } | ||
| 82 | } | 85 | } |
| 83 | } | 86 | } |
| 84 | - } | 87 | + }else{ |
| 88 | + playTreeFile[m] = {'pName': temArr[0], "name": temArr[1], "type": "java" }; | ||
| 89 | + m++; | ||
| 90 | + } | ||
| 85 | }else{ | 91 | }else{ |
| 86 | - playTreeFile[m] = {'pName': temArr[0], "name": temArr[1], "type": "java" }; | ||
| 87 | - m++; | 92 | + isPlayDataError = true; |
| 93 | + return false; | ||
| 88 | } | 94 | } |
| 89 | } | 95 | } |
| 90 | - for (var i = 0; i < playTreeFolder.length; i++) { | ||
| 91 | - playTreeFolder[i].pId = 0; | ||
| 92 | - playTreeFolder[i].id = i+1; | ||
| 93 | - playTreePathData['tree'].push(playTreeFolder[i]); | ||
| 94 | - } | ||
| 95 | - for (var i = 0; i < playTreeFile.length; i++) { | ||
| 96 | - for (var j = 0; j < playTreeFolder.length; j++) { | ||
| 97 | - if(playTreeFile[i].pName == playTreeFolder[j].name){ | ||
| 98 | - playTreeFile[i].id = (playTreeFolder[j].id.toString() + i.toString()) * 1; | ||
| 99 | - playTreeFile[i].pId = playTreeFolder[j].id; | ||
| 100 | - playTreePathData.tree.push(playTreeFile[i]); | 96 | + if(!isPlayDataError){ |
| 97 | + for (var i = 0; i < playTreeFolder.length; i++) { | ||
| 98 | + playTreeFolder[i].pId = 0; | ||
| 99 | + playTreeFolder[i].id = i+1; | ||
| 100 | + playTreePathData['tree'].push(playTreeFolder[i]); | ||
| 101 | + } | ||
| 102 | + for (var i = 0; i < playTreeFile.length; i++) { | ||
| 103 | + for (var j = 0; j < playTreeFolder.length; j++) { | ||
| 104 | + if(playTreeFile[i].pName == playTreeFolder[j].name){ | ||
| 105 | + playTreeFile[i].id = (playTreeFolder[j].id.toString() + i.toString()) * 1; | ||
| 106 | + playTreeFile[i].pId = playTreeFolder[j].id; | ||
| 107 | + playTreePathData.tree.push(playTreeFile[i]); | ||
| 108 | + } | ||
| 101 | } | 109 | } |
| 102 | } | 110 | } |
| 111 | + return playTreePathData.tree; | ||
| 112 | + }else{ | ||
| 113 | + return false; | ||
| 103 | } | 114 | } |
| 104 | - return playTreePathData.tree; | ||
| 105 | } | 115 | } |
| 106 | } | 116 | } |
| 107 | 117 | ||
| @@ -155,6 +165,7 @@ $(function() { | @@ -155,6 +165,7 @@ $(function() { | ||
| 155 | return false; | 165 | return false; |
| 156 | }, | 166 | }, |
| 157 | beforeEditName: function (treeId, treeNode) { | 167 | beforeEditName: function (treeId, treeNode) { |
| 168 | + // console.info('beforeEditName'); | ||
| 158 | treeObj.selectNode(treeNode); | 169 | treeObj.selectNode(treeNode); |
| 159 | setTimeout(function() { | 170 | setTimeout(function() { |
| 160 | // if (confirm("进入节点 -- " + treeNode.name + " 的编辑状态吗?")) { | 171 | // if (confirm("进入节点 -- " + treeNode.name + " 的编辑状态吗?")) { |
| @@ -167,26 +178,26 @@ $(function() { | @@ -167,26 +178,26 @@ $(function() { | ||
| 167 | }, | 178 | }, |
| 168 | renameAlert: function (str, treeNode){ | 179 | renameAlert: function (str, treeNode){ |
| 169 | setTimeout(function() { | 180 | setTimeout(function() { |
| 170 | - // treeObj.cancelEditName(newName); | 181 | + // var zTree = $.fn.zTree.getZTreeObj("folder"); |
| 182 | + treeObj.cancelEditName(); | ||
| 171 | alert(str); | 183 | alert(str); |
| 172 | }, 0); | 184 | }, 0); |
| 173 | 185 | ||
| 174 | - // 优化体验再次进入编辑状态 | ||
| 175 | - setTimeout(function() { | ||
| 176 | - treeObj.selectNode(treeNode); | ||
| 177 | - treeObj.editName(treeNode); | ||
| 178 | - }, 0); | 186 | + // 这样写有bug 造成 编辑框死去焦点 获取焦点 死循环 |
| 187 | + // 优化体验再次进入编辑状态 | ||
| 188 | + // setTimeout(function() { | ||
| 189 | + // treeObj.selectNode(treeNode); | ||
| 190 | + // treeObj.editName(treeNode); | ||
| 191 | + // }, 0); | ||
| 179 | }, | 192 | }, |
| 180 | beforeRename: function (treeId, treeNode, newName, isCancel) { | 193 | beforeRename: function (treeId, treeNode, newName, isCancel) { |
| 181 | var _this = this; | 194 | var _this = this; |
| 182 | // console.info('beforeRename'); | 195 | // console.info('beforeRename'); |
| 183 | - // console.info(treeNode); | ||
| 184 | if (newName.length == 0) { | 196 | if (newName.length == 0) { |
| 185 | treeFoo.renameAlert("文件名名称不能为空.", treeNode); | 197 | treeFoo.renameAlert("文件名名称不能为空.", treeNode); |
| 186 | return false; | 198 | return false; |
| 187 | }else if(newName != treeNode.name){ | 199 | }else if(newName != treeNode.name){ |
| 188 | for (var i = 0; i < treeLinkEditor.length; i++) { | 200 | for (var i = 0; i < treeLinkEditor.length; i++) { |
| 189 | - | ||
| 190 | // 判断是否重名 | 201 | // 判断是否重名 |
| 191 | if(treeLinkEditor[i].file === newName){ | 202 | if(treeLinkEditor[i].file === newName){ |
| 192 | treeFoo.renameAlert("文件名“" + newName + "”已被占用,请选取其他名称。", treeNode); | 203 | treeFoo.renameAlert("文件名“" + newName + "”已被占用,请选取其他名称。", treeNode); |
| @@ -194,14 +205,16 @@ $(function() { | @@ -194,14 +205,16 @@ $(function() { | ||
| 194 | }else if(/.java$/.test(newName) && newName.split('.').length > 2){ | 205 | }else if(/.java$/.test(newName) && newName.split('.').length > 2){ |
| 195 | treeFoo.renameAlert("文件名“" + newName + "”有误,请选取其他名称。", treeNode); | 206 | treeFoo.renameAlert("文件名“" + newName + "”有误,请选取其他名称。", treeNode); |
| 196 | return false; | 207 | return false; |
| 197 | - }else if(!/.java$/.test(newName)){ | ||
| 198 | - treeFoo.renameAlert("文件后缀名“" + newName + "”有误,请选取其他名称。", treeNode); | 208 | + }else if(!newName.split('.')[0]){ |
| 209 | + treeFoo.renameAlert("文件名“" + newName + "”有误,请选取其他名称。", treeNode); | ||
| 199 | return false; | 210 | return false; |
| 200 | }else if(/[0-9]/.test(newName.substr(0,1))){ | 211 | }else if(/[0-9]/.test(newName.substr(0,1))){ |
| 201 | treeFoo.renameAlert("文件“" + newName + "”有误,首字母不能是数字,请选取其他名称。", treeNode); | 212 | treeFoo.renameAlert("文件“" + newName + "”有误,首字母不能是数字,请选取其他名称。", treeNode); |
| 202 | return false; | 213 | return false; |
| 214 | + }else if(!/.java$/.test(newName)){ | ||
| 215 | + treeFoo.renameAlert("文件后缀名“" + newName + "”有误,请选取其他名称。", treeNode); | ||
| 216 | + return false; | ||
| 203 | }else{ | 217 | }else{ |
| 204 | - console.log('else'); | ||
| 205 | // 更新 treeLinkEditor 存值 | 218 | // 更新 treeLinkEditor 存值 |
| 206 | if(treeLinkEditor[i].file === treeNode.name){ | 219 | if(treeLinkEditor[i].file === treeNode.name){ |
| 207 | var _temName = treeLinkEditor[i].name; | 220 | var _temName = treeLinkEditor[i].name; |
| @@ -217,7 +230,6 @@ $(function() { | @@ -217,7 +230,6 @@ $(function() { | ||
| 217 | treeLinkEditor[i].CodeMirrorReplayId = treeLinkEditor[i].replay + 'CodeMirror'; | 230 | treeLinkEditor[i].CodeMirrorReplayId = treeLinkEditor[i].replay + 'CodeMirror'; |
| 218 | 231 | ||
| 219 | mainPath = treeLinkEditor[i].filePath; | 232 | mainPath = treeLinkEditor[i].filePath; |
| 220 | - | ||
| 221 | // 更新DOM相关 | 233 | // 更新DOM相关 |
| 222 | $('#'+ _temName +'RecordWrap').attr({ | 234 | $('#'+ _temName +'RecordWrap').attr({ |
| 223 | id: _name +'RecordWrap' | 235 | id: _name +'RecordWrap' |
| @@ -244,8 +256,6 @@ $(function() { | @@ -244,8 +256,6 @@ $(function() { | ||
| 244 | } | 256 | } |
| 245 | } | 257 | } |
| 246 | } | 258 | } |
| 247 | - }else{ | ||
| 248 | - isCancel = true; | ||
| 249 | } | 259 | } |
| 250 | return true; | 260 | return true; |
| 251 | }, | 261 | }, |
| @@ -522,22 +532,25 @@ $(function() { | @@ -522,22 +532,25 @@ $(function() { | ||
| 522 | if(playData.programmingFileList){ | 532 | if(playData.programmingFileList){ |
| 523 | 533 | ||
| 524 | treeData = playFoo.programFileListToTreeJson(playData.programmingFileList); | 534 | treeData = playFoo.programFileListToTreeJson(playData.programmingFileList); |
| 535 | + console.log('数据是否异常:'); | ||
| 536 | + console.log(!treeData); | ||
| 537 | + if(treeData){ | ||
| 538 | + treeData = playTreePathData.tree; | ||
| 539 | + treeObj = $.fn.zTree.init($("#folder"), ZTREE.config, treeData); | ||
| 525 | 540 | ||
| 526 | - console.log(treeData); | ||
| 527 | - | ||
| 528 | - treeData = playTreePathData.tree; | ||
| 529 | - treeObj = $.fn.zTree.init($("#folder"), ZTREE.config, treeData); | 541 | + GBCodePlayBack.recordinit(treeData); |
| 530 | 542 | ||
| 531 | - GBCodePlayBack.recordinit(treeData); | 543 | + $('#app').show(); |
| 544 | + }else{ | ||
| 545 | + playFoo.showPLayError(); | ||
| 546 | + } | ||
| 532 | } | 547 | } |
| 533 | - $('#app').show(); | ||
| 534 | }else{ | 548 | }else{ |
| 535 | playFoo.showPLayError(); | 549 | playFoo.showPLayError(); |
| 536 | } | 550 | } |
| 537 | }, | 551 | }, |
| 538 | error: function() { | 552 | error: function() { |
| 539 | playFoo.showPLayError(); | 553 | playFoo.showPLayError(); |
| 540 | - alert('错误') | ||
| 541 | } | 554 | } |
| 542 | }); | 555 | }); |
| 543 | // if(!_codeReplayId || !_userId || !_role || !_chapterId){ | 556 | // if(!_codeReplayId || !_userId || !_role || !_chapterId){ |