diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..85de9cf --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +src diff --git a/src/controllers/server.js b/src/controllers/server.js index 8bdfbc3..be2074b 100644 --- a/src/controllers/server.js +++ b/src/controllers/server.js @@ -99,7 +99,7 @@ const server = { d.i = index; d.v = value; - //切换sheet页不发后台,TODO:改为发后台+后台不广播 + //切换sheet页不发后台,TODO:改为发后台+后台不广播 if(type === 'shs'){ return; } @@ -188,7 +188,7 @@ const server = { console.info(locale().websocket.success); hideloading(); _this.wxErrorCount = 0; - + //防止websocket长时间不发送消息导致断连 _this.retryTimer = setInterval(function(){ _this.websocket.send("rub"); @@ -213,7 +213,19 @@ const server = { }) } if(type == 1){ //send 成功或失败 - + const oldIndex = data.data.v.index; + const sheetToUpdate = Store.luckysheetfile.filter((sheet)=> sheet.index === oldIndex)[0]; + if (sheetToUpdate !== null) { + setTimeout(() => { + const index = data.data.i; + sheetToUpdate.index = index; + Store.currentSheetIndex = index; + + $(`#luckysheet-sheets-item${oldIndex}`).attr('data-index', index); + $(`#luckysheet-sheets-item${oldIndex}`).prop('id', `luckysheet-sheets-item${index}`); + $(`#luckysheet-datavisual-selection-set-${oldIndex}`).prop('id', `luckysheet-datavisual-selection-set-${index}`); + }, 1); + } } else if(type == 2){ //更新数据 let item = JSON.parse(data.data); @@ -234,7 +246,7 @@ const server = { value = item.v; if(Store.cooperativeEdit.changeCollaborationSize.length === 0) { Store.cooperativeEdit.changeCollaborationSize.push({id:id,v:item.v[0],i:index}) - } + } let flag = Store.cooperativeEdit.changeCollaborationSize.some(value1 => { return value1.id == id }) @@ -244,10 +256,10 @@ const server = { val.v = item.v[0] val.i = index } - }) + }) } else { Store.cooperativeEdit.changeCollaborationSize.push({id:id,v:item.v[0],i:index}) - } + } if(getObjType(value) != "array" && getObjType(value) !== "object"){ value = JSON.parse(value); } @@ -259,16 +271,16 @@ const server = { r = value.range[value.range.length - 1].row[0]; c = value.range[value.range.length - 1].column[0]; _this.multipleRangeShow(id, username, r, c, value.op); - + }else { r = value[value.length - 1].row[0]; c = value[value.length - 1].column[0]; - + _this.multipleRangeShow(id, username, r, c); - + } - + } else { if(getObjType(value) === "object" && value.op === 'enterEdit'){ r = value.range[value.range.length - 1].row[0]; @@ -420,7 +432,7 @@ const server = { if(index == Store.currentSheetIndex){//更新数据为当前表格数据 Store.flowdata = file.data; editor.webWorkerFlowDataCache(Store.flowdata);//worker存数据 - + //如果更新的单元格有批注 for(let r = r1; r <= r2; r++){ for(let c = c1; c <= c2; c++){ @@ -452,7 +464,7 @@ const server = { // for(let key in value){ // file["config"][k][key] = value[key]; // } - + // ⚠️ 上面的处理方式会导致部分配置项被遗漏,以致协同编辑的时候多视图出现不一致的情况,调整处理的策略为直接替换配置项: // 可能的配置项为: // columnlen: {0: 65, 1: 186, 2: 52} @@ -695,7 +707,7 @@ const server = { if(rc == "r"){ file["row"] += len; - + //空行模板 let row = []; for(let c = 0; c < data[0].length; c++){ @@ -720,8 +732,8 @@ const server = { new Function("data","return " + 'data.splice(' + st_i + ', 0, ' + arr.join(",") + ')')(data); } } - else{ - new Function("data","return " + 'data.splice(' + (st_i + 1) + ', 0, ' + arr.join(",") + ')')(data); + else{ + new Function("data","return " + 'data.splice(' + (st_i + 1) + ', 0, ' + arr.join(",") + ')')(data); } } else{ @@ -827,18 +839,18 @@ const server = { else if(type == "shd"){ //删除sheet for(let i = 0; i < Store.luckysheetfile.length; i++){ if(Store.luckysheetfile[i].index == value.deleIndex){ - + // 如果删除的是当前sheet,则切换到前一个sheet页 if(Store.currentSheetIndex === value.deleIndex){ const index = value.deleIndex; Store.luckysheetfile[sheetmanage.getSheetIndex(index)].hide = 1; - + let luckysheetcurrentSheetitem = $("#luckysheet-sheets-item" + index); luckysheetcurrentSheetitem.hide(); $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active"); - + let indicator = luckysheetcurrentSheetitem.nextAll(":visible"); if (luckysheetcurrentSheetitem.nextAll(":visible").length > 0) { indicator = indicator.eq(0).data("index"); @@ -847,7 +859,7 @@ const server = { indicator = luckysheetcurrentSheetitem.prevAll(":visible").eq(0).data("index"); } $("#luckysheet-sheets-item" + indicator).addClass("luckysheet-sheets-item-active"); - + sheetmanage.changeSheetExec(indicator); } @@ -966,12 +978,12 @@ const server = { col = margeset.column[1]; col_pre = margeset.column[0]; } - + // 超出16个字符就显示... if(getByteLen(name) > 16){ name = getByteLen(name,16) + "..."; } - + // 如果正在编辑,就显示“正在输入” if(value === 'enterEdit'){ name += " " + locale().edit.typing; @@ -979,7 +991,7 @@ const server = { if($("#luckysheet-multipleRange-show-" + id).length > 0){ $("#luckysheet-multipleRange-show-" + id).css({ "position": "absolute", "left": col_pre - 1, "width": col - col_pre - 1, "top": row_pre - 1, "height": row - row_pre - 1 }); - + $("#luckysheet-multipleRange-show-" + id + " .username").text(name); $("#luckysheet-multipleRange-show-" + id + " .username").show(); @@ -999,11 +1011,11 @@ const server = { // '
'+ // ''; - let itemHtml = `
@@ -1019,7 +1031,7 @@ const server = { $(itemHtml).appendTo($("#luckysheet-cell-main #luckysheet-multipleRange-show")); _this.multipleIndex++; - + // 设定允许用户名消失的定时器,10秒后用户名可隐藏 // 10秒之类,用户操作界面不会隐藏用户名;10秒之后如果用户操作了界面,则隐藏用户名,没操作就不隐藏 if(Store.cooperativeEdit.usernameTimeout['user' + id] != null){