Browse Source

fix(fix #209): highlight

highlight follow
master
renxxing 5 years ago
parent
commit
ab2d8b7b54
  1. 5
      src/controllers/handler.js
  2. 64
      src/controllers/select.js
  3. 28
      src/controllers/server.js
  4. 2
      src/controllers/sheetBar.js
  5. 9
      src/global/refresh.js
  6. 7
      src/index.html
  7. 4
      src/store/index.js

5
src/controllers/handler.js

@ -76,8 +76,6 @@ export default function luckysheetHandler() {
if(isMobile){
mobileinit();
}
if (!Date.now)
Date.now = function() { return new Date().getTime(); };
//requestAnimationFrame method
@ -3263,7 +3261,6 @@ export default function luckysheetHandler() {
});
//表格mouseup
$(document).on("mouseup.luckysheetEvent",function (event) {
if(luckysheetConfigsetting && luckysheetConfigsetting.hook && luckysheetConfigsetting.hook.sheetMouseup){
let mouse = mouseposition(event.pageX, event.pageY);
let x = mouse[0] + $("#luckysheet-cell-main").scrollLeft();
@ -3681,9 +3678,9 @@ export default function luckysheetHandler() {
col = col_location[1],
col_pre = col_location[0],
col_index = col_location[2];
let size = (x + 3) - Store.luckysheet_cols_change_size_start[0];
let firstcolumnlen = Store.defaultcollen;
if (Store.config["columnlen"] != null && Store.config["columnlen"][Store.luckysheet_cols_change_size_start[1]] != null) {
firstcolumnlen = Store.config["columnlen"][Store.luckysheet_cols_change_size_start[1]];

64
src/controllers/select.js

@ -228,6 +228,7 @@ function selectTitlesShow(rangeArr,isRestore=false) {
let col = colLocationByIndex(c2)[1], col_pre = colLocationByIndex(c1)[0];
$("#luckysheet-cols-h-selected").append('<div class="luckysheet-cols-h-selected" style="left: ' + col_pre + 'px; width: ' + (col - col_pre - 1) + 'px; display: block; background-color: rgba(76, 76, 76, 0.1);"></div>');
}
}
function selectTitlesMap(rangeMap, range1, range2) {
@ -326,7 +327,67 @@ function selectIsOverlap(range) {
return overlap;
}
// 协同提示框
function collaborativeEditBox(val1,val2) {
let all_data = luckysheet.getLuckysheetfile(); //获取整个表格数据
let all_width = [];//当前操作页的所有列距离左边的距离
let all_height = [];//当前操作页的所有列距离顶部的距离
all_data.forEach((value1) => {
if(value1.index == Store.currentSheetIndex) {
all_width = value1.visibledatacolumn
all_height = value1.visibledatarow
}
})
Store.cooperativeEdit.changeCollaborationSize.forEach(value => {
if (value.i == Store.currentSheetIndex) {
if(val1 !== null) {
for(let k in val1) {
if(value.v.column[0] <= k && k <= value.v.column[1]) {
Store.luckysheet_cols_change_size_start[1] = k - 0
break
}
}
}
if(val2 !== null) {
for(let k in val2) {
if(value.v.row[0] <= k && k <= value.v.row[1]) {
Store.luckysheet_rows_change_size_start[1] = k - 0
break
}
}
}
let flag1 = value.v.column[0] <= Store.luckysheet_cols_change_size_start[1] && Store.luckysheet_cols_change_size_start[1] <= value.v.column[1]
if(flag1) {
if(Store.luckysheet_cols_change_size_start[1] == 0) {
let change_width = all_width[0] - 1
$("#luckysheet-multipleRange-show-" + value.id).css({"width":change_width})
} else {
let count1 = value.v.column[0];
let count2 = value.v.column[1];
let change_width1 = all_width[count2] - all_width[count1 - 1] - (count2 - count1 + 1)
$("#luckysheet-multipleRange-show-" + value.id).css({"width":change_width1})
}
}
let change_width2 = all_width[value.v.column[0] - 1] - 1
$("#luckysheet-multipleRange-show-" + value.id).css({"left":change_width2 + 'px'})
let flag2 = value.v.row[0] <= Store.luckysheet_rows_change_size_start[1] && Store.luckysheet_rows_change_size_start[1] <= value.v.row[1]
if(flag2) {
if(Store.luckysheet_rows_change_size_start[1] == 0) {
let change_height = all_height[0] - 1
$("#luckysheet-multipleRange-show-" + value.id).css({"height":change_height})
} else {
let count1 = value.v.row[0];
let count2 = value.v.row[1];
let change_height1 = all_height[count2] - all_height[count1 - 1] - (count2 - count1 + 1)
$("#luckysheet-multipleRange-show-" + value.id).css({"height":change_height1})
}
}
let change_height2 = all_height[value.v.row[0] - 1] - 1
$("#luckysheet-multipleRange-show-" + value.id).css({"top":change_height2 + 'px'})
}
})
}
//复制选区虚线框
function selectionCopyShow(range) {
$("#luckysheet-selection-copy").empty();
@ -347,7 +408,7 @@ function selectionCopyShow(range) {
let copyDomHtml = '<div class="luckysheet-selection-copy" style="display: block; left: ' + col_pre + 'px; width: ' + (col - col_pre - 1) + 'px; top: ' + row_pre + 'px; height: ' + (row - row_pre - 1) + 'px;">' +
'<div class="luckysheet-selection-copy-top luckysheet-copy"></div>' +
'<div class="luckysheet-selection-copy-right luckysheet-copy"></div>'+
'<div class="luckysheet-selection-copy-right luckysheet-copy"d></iv>' +
'<div class="luckysheet-selection-copy-bottom luckysheet-copy"></div>' +
'<div class="luckysheet-selection-copy-left luckysheet-copy"></div>' +
'<div class="luckysheet-selection-copy-hc"></div>' +
@ -432,6 +493,7 @@ export {
selectHightlightShow,
selectIsOverlap,
selectionCopyShow,
collaborativeEditBox,
luckysheet_count_show,
selectHelpboxFill
}

28
src/controllers/server.js

@ -10,9 +10,11 @@ import luckysheetPostil from './postil';
import { getObjType, replaceHtml, getByteLen } from '../utils/util';
import { getSheetIndex } from '../methods/get';
import Store from '../store';
import { collaborativeEditBox } from './select'
import locale from '../locale/locale';
import dayjs from "dayjs";
import imageCtrl from './imageCtrl';
import json from '../global/json';
const server = {
gridKey: null,
@ -172,6 +174,9 @@ const server = {
// 用户退出时,关闭协同编辑时其提示框
if(message === '用户退出') {
$("#luckysheet-multipleRange-show-" + id).hide();
Store.cooperativeEdit.changeCollaborationSize = Store.cooperativeEdit.changeCollaborationSize.filter(value => {
return value.id != id
})
}
if(type == 1){ //send 成功或失败
@ -179,6 +184,12 @@ const server = {
else if(type == 2){ //更新数据
let item = JSON.parse(data.data);
_this.wsUpdateMsg(item);
let chang_data = JSON.parse(data.data)
if(chang_data.k == 'columnlen') {
collaborativeEditBox(chang_data.v,null)
} else if(chang_data.k == 'rowlen') {
collaborativeEditBox(null,chang_data.v)
}
}
else if(type == 3){ //多人操作不同选区("t": "mv")(用不同颜色显示其他人所操作的选区)
let id = data.id;
@ -188,7 +199,22 @@ const server = {
let type = item.t,
index = item.i,
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
})
if(flag) {
Store.cooperativeEdit.changeCollaborationSize.forEach(val => {
if(val.id == id) {
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);
}

2
src/controllers/sheetBar.js

@ -206,8 +206,6 @@ export function initialSheetBar(){
let $t = $(this), $cur = $(e.target);
luckysheetsheetrightclick($t, $cur, e);
let result = Store.result
server.websocket.onmessage(result)
});
let luckysheetsheetnameeditor = function ($t) {

9
src/global/refresh.js

@ -15,7 +15,7 @@ import sheetmanage from '../controllers/sheetmanage';
import luckysheetPostil from '../controllers/postil';
import dataVerificationCtrl from '../controllers/dataVerificationCtrl';
import hyperlinkCtrl from '../controllers/hyperlinkCtrl';
import { selectHightlightShow, selectionCopyShow } from '../controllers/select';
import { selectHightlightShow, selectionCopyShow, collaborativeEditBox } from '../controllers/select';
import { createFilterOptions } from '../controllers/filter';
import { getSheetIndex } from '../methods/get';
import Store from '../store';
@ -378,7 +378,7 @@ function jfrefreshrange(data, range, cdformat) {
//删除、增加行列 刷新表格
function jfrefreshgrid_adRC(data, cfg, ctrlType, ctrlValue, calc, filterObj, cf, af, freezen, dataVerification, hyperlink){
let file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
collaborativeEditBox();
//merge改变对应的单元格值改变
let mcData = [];
for(let m in cfg["merge"]){
@ -583,6 +583,7 @@ function jfrefreshgrid_adRC(data, cfg, ctrlType, ctrlValue, calc, filterObj, cf,
function jfrefreshgrid_deleteCell(data, cfg, ctrl, calc, filterObj, cf, dataVerification, hyperlink){
let file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
clearTimeout(refreshCanvasTimeOut);
collaborativeEditBox();
//merge改变对应的单元格值改变
let mcData = [];
if(JSON.stringify(cfg["merge"]) == "{}"){
@ -948,10 +949,10 @@ function jfrefreshgrid_rhcw(rowheight, colwidth, isRefreshCanvas=true){
//批注框同步
luckysheetPostil.positionSync();
//选区同步
selectHightlightShow();
// 协同提示框同步
collaborativeEditBox();
//改变单元格行高,复制虚线框同步
if($(".luckysheet-selection-copy").is(":visible")){
selectionCopyShow();

7
src/index.html

@ -57,6 +57,13 @@
container: 'luckysheet',
lang: lang,
forceCalculation:false,
allowUpdate:true,
updateImageUrl:"http://luckysheet.lashuju.com/luckysheet/api/updateImg",
//updateUrl: "ws://127.0.0.1:85/dataqk/websocket/qksheet",
updateUrl: "ws://luckysheet.lashuju.com/luckysheet/websocket/qksheet",
"gridKey": "1079500#-8803#7c45f52b7d01486d88bc53cb17dcd2c3",
loadUrl: "http://luckysheet.lashuju.com/luckysheet/api/load",
loadSheetUrl:"http://luckysheet.lashuju.com/luckysheet/api/loadsheet",
plugins: ['chart'],
fontList:[
{

4
src/store/index.js

@ -141,7 +141,9 @@ const Store = {
cooperativeEdit:{
usernameTimeout:{
}
},
changeCollaborationSize:[], //改变行高或者列宽时,协同提示框需要跟随改变所需数据
allDataColumnlen:[],//列宽发生过改变的列
}
}

Loading…
Cancel
Save