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