Browse Source

fix: 加个标志位,控制冻结首行首列到底是指可是区域还是实际的

master
cdswyda 4 years ago
parent
commit
f265b63170
  1. 45
      src/controllers/freezen.js
  2. 63
      src/global/api.js

45
src/controllers/freezen.js

@ -25,6 +25,10 @@ const luckysheetFreezen = {
windowWidth: null,
freezenhorizontaldata: null,
freezenverticaldata: null,
// 定义冻结首行、首列是实际的第一行第一列还是当前视图的第一行第一列
// excel 为视图的第一行第一列,但此处实现有问题,如滚动到15行冻结首行,当前冻结了15行,保存再进去实际冻结了第一行
// 冻结真实的第一行、第一列更符合直觉
freezenRealFirstRowColumn: true,
cutVolumn: function (arr, cutindex) {
if(cutindex <= 0){
return arr;
@ -102,6 +106,17 @@ const luckysheetFreezen = {
}
if (freezenverticaldata == null) {
if (_this.freezenRealFirstRowColumn) {
let dataset_col_st = 0;
left = Store.visibledatacolumn[dataset_col_st] - 2 + Store.rowHeaderWidth;
freezenverticaldata = [
Store.visibledatacolumn[dataset_col_st],
dataset_col_st + 1,
0,
_this.cutVolumn(Store.visibledatacolumn, dataset_col_st + 1),
left
];
} else {
let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
let dataset_col_st = luckysheet_searcharray(Store.visibledatacolumn, scrollLeft);
if (dataset_col_st == -1) {
@ -116,6 +131,8 @@ const luckysheetFreezen = {
_this.cutVolumn(Store.visibledatacolumn, dataset_col_st + 1),
left
];
}
_this.saveFreezen(null, null, freezenverticaldata, left);
}
@ -372,14 +389,9 @@ const luckysheetFreezen = {
}
if (freezenhorizontaldata == null) {
// let scrollTop = $("#luckysheet-cell-main").scrollTop();
// let dataset_row_st = luckysheet_searcharray(Store.visibledatarow, scrollTop);
// if (dataset_row_st == -1) {
// dataset_row_st = 0;
// }
let dataset_row_st;
if (_this.freezenRealFirstRowColumn) {
dataset_row_st = 0;
// top = Store.visibledatarow[dataset_row_st] - 2 - scrollTop + Store.columnHeaderHeight;
top = Store.visibledatarow[dataset_row_st] - 2 + Store.columnHeaderHeight;
freezenhorizontaldata = [
Store.visibledatarow[dataset_row_st],
@ -395,11 +407,26 @@ const luckysheetFreezen = {
luckysheetFreezen.createAssistCanvas();
luckysheetrefreshgrid();
});
} else {
let scrollTop = $("#luckysheet-cell-main").scrollTop();
dataset_row_st = luckysheet_searcharray(Store.visibledatarow, scrollTop);
if (dataset_row_st == -1) {
dataset_row_st = 0;
}
_this.freezenhorizontaldata = freezenhorizontaldata;
top = Store.visibledatarow[dataset_row_st] - 2 - scrollTop + Store.columnHeaderHeight;
freezenhorizontaldata = [
Store.visibledatarow[dataset_row_st],
dataset_row_st + 1,
scrollTop,
_this.cutVolumn(Store.visibledatarow, dataset_row_st + 1),
top
];
_this.saveFreezen(freezenhorizontaldata, top, null, null);
}
}
_this.freezenhorizontaldata = freezenhorizontaldata;
// $("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-list-alt"></i> '+locale().freezen.freezenCancel);

63
src/global/api.js

@ -609,23 +609,34 @@ export function frozenFirstRow(order) {
// 冻结为当前sheet页
if (!order || order == getSheetIndex(Store.currentSheetIndex)) {
// let scrollTop = $("#luckysheet-cell-main").scrollTop();
// let row_st = luckysheet_searcharray(Store.visibledatarow, scrollTop);
// if(row_st == -1){
// row_st = 0;
// }
let freezenhorizontaldata, row_st, top;
if (luckysheetFreezen.freezenRealFirstRowColumn) {
let row_st = 0;
// let top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
let top = Store.visibledatarow[row_st] - 2 + Store.columnHeaderHeight;
let freezenhorizontaldata = [
top = Store.visibledatarow[row_st] - 2 + Store.columnHeaderHeight;
freezenhorizontaldata = [
Store.visibledatarow[row_st],
row_st + 1,
0,
luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1),
top
];
} else {
let scrollTop = $("#luckysheet-cell-main").scrollTop();
row_st = luckysheet_searcharray(Store.visibledatarow, scrollTop);
if(row_st == -1){
row_st = 0;
}
top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
freezenhorizontaldata = [
Store.visibledatarow[row_st],
row_st + 1,
scrollTop,
luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1),
top
];
}
luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
if (luckysheetFreezen.freezenverticaldata != null) {
@ -651,23 +662,35 @@ export function frozenFirstColumn(order) {
// 冻结为当前sheet页
if (!order || order == getSheetIndex(Store.currentSheetIndex)) {
// let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
let freezenverticaldata, col_st, left;
if (luckysheetFreezen.freezenRealFirstRowColumn) {
col_st = 0;
left = Store.visibledatacolumn[col_st] - 2 + Store.rowHeaderWidth;
freezenverticaldata = [
Store.visibledatacolumn[col_st],
col_st + 1,
0,
luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1),
left
];
} else {
let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
// let col_st = luckysheet_searcharray(Store.visibledatacolumn, scrollLeft);
// if(col_st == -1){
// col_st = 0;
// }
let col_st = 0;
col_st = luckysheet_searcharray(Store.visibledatacolumn, scrollLeft);
if(col_st == -1){
col_st = 0;
}
// let left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
let left = Store.visibledatacolumn[col_st] - 2 + Store.rowHeaderWidth;
let freezenverticaldata = [
left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
freezenverticaldata = [
Store.visibledatacolumn[col_st],
col_st + 1,
0,
scrollLeft,
luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1),
left
];
}
luckysheetFreezen.saveFreezen(null, null, freezenverticaldata, left);
if (luckysheetFreezen.freezenhorizontaldata != null) {

Loading…
Cancel
Save