scroll.js
4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import luckysheetFreezen from '../controllers/freezen';
import { luckysheet_searcharray } from '../controllers/sheetSearch';
import { luckysheetrefreshgrid } from '../global/refresh';
import Store from '../store';
import method from '../global/method'
let scrollRequestAnimationFrameIni = true,scrollRequestAnimationFrame = false, scrollTimeOutCancel=null;
function execScroll(){
let scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft(),
scrollTop = $("#luckysheet-scrollbar-y").scrollTop();
luckysheetrefreshgrid(scrollLeft, scrollTop);
scrollRequestAnimationFrame = window.requestAnimationFrame(execScroll);
}
//全局滚动事件
export default function luckysheetscrollevent(isadjust) {
let $t = $("#luckysheet-cell-main");
let scrollLeft = $("#luckysheet-scrollbar-x").scrollLeft(),
scrollTop = $("#luckysheet-scrollbar-y").scrollTop(),
canvasHeight = $("#luckysheetTableContent").height(); // canvas高度
// clearTimeout(scrollTimeOutCancel);
// scrollTimeOutCancel = setTimeout(() => {
// scrollRequestAnimationFrameIni = true;
// window.cancelAnimationFrame(scrollRequestAnimationFrame);
// }, 500);
// if (!!isadjust) {
// let scrollHeight = $t.get(0).scrollHeight;
// let windowHeight = $t.height();
// let scrollWidth = $t.get(0).scrollWidth;
// let windowWidth = $t.width();
// let maxScrollLeft = scrollWidth - windowWidth;
// let maxScrollTop = scrollHeight - windowHeight;
// let visibledatacolumn_c = Store.visibledatacolumn, visibledatarow_c = Store.visibledatarow;
// if (luckysheetFreezen.freezenhorizontaldata != null) {
// visibledatarow_c = luckysheetFreezen.freezenhorizontaldata[3];
// }
// if (luckysheetFreezen.freezenverticaldata != null) {
// visibledatacolumn_c = luckysheetFreezen.freezenverticaldata[3];
// }
// let col_ed = luckysheet_searcharray(visibledatacolumn_c, scrollLeft);
// let row_ed = luckysheet_searcharray(visibledatarow_c, scrollTop);
// let refreshLeft = scrollLeft , refreshTop = scrollTop;
// if (col_ed <= 0) {
// scrollLeft = 0;
// }
// else {
// scrollLeft = visibledatacolumn_c[col_ed - 1];
// }
// if (row_ed <= 0) {
// scrollTop = 0;
// }
// else {
// scrollTop = visibledatarow_c[row_ed - 1];
// }
// }
if (luckysheetFreezen.freezenhorizontaldata != null) {
if (scrollTop < luckysheetFreezen.freezenhorizontaldata[2]) {
scrollTop = luckysheetFreezen.freezenhorizontaldata[2];
$("#luckysheet-scrollbar-y").scrollTop(scrollTop);
return;
}
}
if (luckysheetFreezen.freezenverticaldata != null) {
if (scrollLeft < luckysheetFreezen.freezenverticaldata[2]) {
scrollLeft = luckysheetFreezen.freezenverticaldata[2];
$("#luckysheet-scrollbar-x").scrollLeft(scrollLeft);
return;
}
}
$("#luckysheet-cols-h-c").scrollLeft(scrollLeft);//列标题
$("#luckysheet-rows-h").scrollTop(scrollTop);//行标题
$t.scrollLeft(scrollLeft).scrollTop(scrollTop);
$("#luckysheet-input-box-index").css({
"left": $("#luckysheet-input-box").css("left"),
"top": (parseInt($("#luckysheet-input-box").css("top")) - 20) + "px",
"z-index": $("#luckysheet-input-box").css("z-index")
}).show();
// if(scrollRequestAnimationFrameIni && Store.scrollRefreshSwitch){
// execScroll();
// scrollRequestAnimationFrameIni = false;
// }
luckysheetrefreshgrid(scrollLeft, scrollTop);
$("#luckysheet-bottom-controll-row").css("left", scrollLeft);
//有选区且有冻结时,滚动适应
if(luckysheetFreezen.freezenhorizontaldata != null || luckysheetFreezen.freezenverticaldata != null){
luckysheetFreezen.scrollAdapt();
}
if(!method.createHookFunction("scroll", {scrollLeft, scrollTop, canvasHeight})){ return; }
}