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,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){