Commit d55b2ad08cd5bddcae3a31c0196b825528e526cc

Authored by 商艳涛
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){
... ...