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 | 37 | var playUrl; |
| 38 | 38 | var playData; |
| 39 | 39 | var playTreePathData = {"tree": []}; |
| 40 | - | |
| 40 | + var isPlayDataError = false; | |
| 41 | 41 | var playFoo = { |
| 42 | 42 | showPLayError: function(){ |
| 43 | 43 | utils.errorVisit.template = $('<div id="tips" class="tips">' + |
| 44 | 44 | '<div class="tips-inner">' + |
| 45 | - '访问参数出错,请联系管理人员。' + | |
| 45 | + '访问参数出错,请联系管理人员。<br />并告知错误链接地址:<br /><span style="color: red;">' + window.location.href + '</span>' + | |
| 46 | 46 | '</div>' + |
| 47 | 47 | '</div>'); |
| 48 | 48 | utils.errorVisit.show(); |
| ... | ... | @@ -51,57 +51,67 @@ $(function() { |
| 51 | 51 | var playTreeFolder = [], |
| 52 | 52 | playTreeFile = []; |
| 53 | 53 | var n = 0, |
| 54 | - m = 0 | |
| 54 | + m = 0, | |
| 55 | 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 | 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 | 165 | return false; |
| 156 | 166 | }, |
| 157 | 167 | beforeEditName: function (treeId, treeNode) { |
| 168 | + // console.info('beforeEditName'); | |
| 158 | 169 | treeObj.selectNode(treeNode); |
| 159 | 170 | setTimeout(function() { |
| 160 | 171 | // if (confirm("进入节点 -- " + treeNode.name + " 的编辑状态吗?")) { |
| ... | ... | @@ -167,26 +178,26 @@ $(function() { |
| 167 | 178 | }, |
| 168 | 179 | renameAlert: function (str, treeNode){ |
| 169 | 180 | setTimeout(function() { |
| 170 | - // treeObj.cancelEditName(newName); | |
| 181 | + // var zTree = $.fn.zTree.getZTreeObj("folder"); | |
| 182 | + treeObj.cancelEditName(); | |
| 171 | 183 | alert(str); |
| 172 | 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 | 193 | beforeRename: function (treeId, treeNode, newName, isCancel) { |
| 181 | 194 | var _this = this; |
| 182 | 195 | // console.info('beforeRename'); |
| 183 | - // console.info(treeNode); | |
| 184 | 196 | if (newName.length == 0) { |
| 185 | 197 | treeFoo.renameAlert("文件名名称不能为空.", treeNode); |
| 186 | 198 | return false; |
| 187 | 199 | }else if(newName != treeNode.name){ |
| 188 | 200 | for (var i = 0; i < treeLinkEditor.length; i++) { |
| 189 | - | |
| 190 | 201 | // 判断是否重名 |
| 191 | 202 | if(treeLinkEditor[i].file === newName){ |
| 192 | 203 | treeFoo.renameAlert("文件名“" + newName + "”已被占用,请选取其他名称。", treeNode); |
| ... | ... | @@ -194,14 +205,16 @@ $(function() { |
| 194 | 205 | }else if(/.java$/.test(newName) && newName.split('.').length > 2){ |
| 195 | 206 | treeFoo.renameAlert("文件名“" + newName + "”有误,请选取其他名称。", treeNode); |
| 196 | 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 | 210 | return false; |
| 200 | 211 | }else if(/[0-9]/.test(newName.substr(0,1))){ |
| 201 | 212 | treeFoo.renameAlert("文件“" + newName + "”有误,首字母不能是数字,请选取其他名称。", treeNode); |
| 202 | 213 | return false; |
| 214 | + }else if(!/.java$/.test(newName)){ | |
| 215 | + treeFoo.renameAlert("文件后缀名“" + newName + "”有误,请选取其他名称。", treeNode); | |
| 216 | + return false; | |
| 203 | 217 | }else{ |
| 204 | - console.log('else'); | |
| 205 | 218 | // 更新 treeLinkEditor 存值 |
| 206 | 219 | if(treeLinkEditor[i].file === treeNode.name){ |
| 207 | 220 | var _temName = treeLinkEditor[i].name; |
| ... | ... | @@ -217,7 +230,6 @@ $(function() { |
| 217 | 230 | treeLinkEditor[i].CodeMirrorReplayId = treeLinkEditor[i].replay + 'CodeMirror'; |
| 218 | 231 | |
| 219 | 232 | mainPath = treeLinkEditor[i].filePath; |
| 220 | - | |
| 221 | 233 | // 更新DOM相关 |
| 222 | 234 | $('#'+ _temName +'RecordWrap').attr({ |
| 223 | 235 | id: _name +'RecordWrap' |
| ... | ... | @@ -244,8 +256,6 @@ $(function() { |
| 244 | 256 | } |
| 245 | 257 | } |
| 246 | 258 | } |
| 247 | - }else{ | |
| 248 | - isCancel = true; | |
| 249 | 259 | } |
| 250 | 260 | return true; |
| 251 | 261 | }, |
| ... | ... | @@ -522,22 +532,25 @@ $(function() { |
| 522 | 532 | if(playData.programmingFileList){ |
| 523 | 533 | |
| 524 | 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 | 548 | }else{ |
| 535 | 549 | playFoo.showPLayError(); |
| 536 | 550 | } |
| 537 | 551 | }, |
| 538 | 552 | error: function() { |
| 539 | 553 | playFoo.showPLayError(); |
| 540 | - alert('错误') | |
| 541 | 554 | } |
| 542 | 555 | }); |
| 543 | 556 | // if(!_codeReplayId || !_userId || !_role || !_chapterId){ | ... | ... |