Browse Source

fix(array unique very slow): fix it

master
liuyang 5 years ago
parent
commit
20f3cb3e20
  1. 29
      src/controllers/handler.js
  2. 3
      src/store/index.js
  3. 13
      src/utils/util.js

29
src/controllers/handler.js

@ -108,7 +108,7 @@ export default function luckysheetHandler() {
const _locale = locale(); const _locale = locale();
const locale_drag = _locale.drag; const locale_drag = _locale.drag;
const locale_info = _locale.info; const locale_info = _locale.info;
let prev let prev, mousewheelArrayUniqueTimeout;
$("#luckysheet-grid-window-1").mousewheel(function (event, delta) { $("#luckysheet-grid-window-1").mousewheel(function (event, delta) {
let scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft(), let scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft(),
scrollTop = $("#luckysheet-scrollbar-y").scrollTop(); scrollTop = $("#luckysheet-scrollbar-y").scrollTop();
@ -123,8 +123,26 @@ export default function luckysheetHandler() {
visibledatacolumn_c = luckysheetFreezen.freezenverticaldata[3]; visibledatacolumn_c = luckysheetFreezen.freezenverticaldata[3];
} }
visibledatacolumn_c = ArrayUnique(visibledatacolumn_c); clearTimeout(mousewheelArrayUniqueTimeout);
visibledatarow_c = ArrayUnique(visibledatarow_c);
if(Store.visibledatacolumn_unique!=null){
visibledatacolumn_c = Store.visibledatacolumn_unique;
}
else{
visibledatacolumn_c = ArrayUnique(visibledatacolumn_c);
Store.visibledatacolumn_unique = visibledatacolumn_c;
}
if(Store.visibledatarow_unique!=null){
visibledatarow_c = Store.visibledatarow_unique;
}
else{
visibledatarow_c = ArrayUnique(visibledatarow_c);
Store.visibledatarow_unique = visibledatarow_c;
}
// visibledatacolumn_c = ArrayUnique(visibledatacolumn_c);
// visibledatarow_c = ArrayUnique(visibledatarow_c);
let col_st = luckysheet_searcharray(visibledatacolumn_c, scrollLeft); let col_st = luckysheet_searcharray(visibledatacolumn_c, scrollLeft);
let row_st = luckysheet_searcharray(visibledatarow_c, scrollTop); let row_st = luckysheet_searcharray(visibledatarow_c, scrollTop);
@ -179,6 +197,11 @@ export default function luckysheetHandler() {
$("#luckysheet-scrollbar-x").scrollLeft(scrollLeft); $("#luckysheet-scrollbar-x").scrollLeft(scrollLeft);
} }
mousewheelArrayUniqueTimeout = setTimeout(() => {
Store.visibledatacolumn_unique = null;
Store.visibledatarow_unique = null;
}, 200);
}); });
$("#luckysheet-scrollbar-x").scroll(function(){ $("#luckysheet-scrollbar-x").scroll(function(){

3
src/store/index.js

@ -118,6 +118,9 @@ const Store = {
measureTextCacheTimeOut:null, measureTextCacheTimeOut:null,
zoomRatio:1, zoomRatio:1,
visibledatacolumn_unique:null,
visibledatarow_unique:null,
} }
export default Store; export default Store;

13
src/utils/util.js

@ -278,17 +278,18 @@ function getByteLen(val) {
//数组去重 //数组去重
function ArrayUnique(dataArr) { function ArrayUnique(dataArr) {
let arr = []; let result = [];
let obj = {};
if (dataArr.length > 0) { if (dataArr.length > 0) {
for (let i = 0; i < dataArr.length; i++) { for (let i = 0; i < dataArr.length; i++) {
if (arr.indexOf(dataArr[i]) == -1) { let item = dataArr[i];
arr.push(dataArr[i]); if (!obj[item]) {
result.push(item);
obj[item] = 1;
} }
} }
} }
return result
return arr;
} }
//获取字体配置 //获取字体配置

Loading…
Cancel
Save