@visactor/vtable 1.4.1-beta.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/PivotChart.d.ts +0 -1
- package/cjs/PivotChart.js +0 -4
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/components/axis/axis.js +2 -3
- package/cjs/components/axis/axis.js.map +1 -1
- package/cjs/components/legend/discrete-legend/discrete-legend.js +1 -2
- package/cjs/components/legend/discrete-legend/discrete-legend.js.map +1 -1
- package/cjs/core/BaseTable.d.ts +2 -4
- package/cjs/core/BaseTable.js +171 -55
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/FouseInput.d.ts +0 -1
- package/cjs/core/FouseInput.js +2 -5
- package/cjs/core/FouseInput.js.map +1 -1
- package/cjs/core/tableHelper.d.ts +2 -2
- package/cjs/core/tableHelper.js.map +1 -1
- package/cjs/event/event.js +1 -2
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/listener/container-dom.js +10 -9
- package/cjs/event/listener/container-dom.js.map +1 -1
- package/cjs/event/listener/table-group.js +11 -11
- package/cjs/event/listener/table-group.js.map +1 -1
- package/cjs/event/util.js +2 -2
- package/cjs/event/util.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/scenegraph/debug-tool/debug-tool.js +1 -4
- package/cjs/scenegraph/debug-tool/debug-tool.js.map +1 -1
- package/cjs/scenegraph/graphic/chart.d.ts +0 -1
- package/cjs/scenegraph/graphic/chart.js +20 -34
- package/cjs/scenegraph/graphic/chart.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +8 -20
- package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render.d.ts +1 -2
- package/cjs/scenegraph/graphic/contributions/chart-render.js +24 -40
- package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +1 -2
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/cjs/scenegraph/refresh-node/update-chart.d.ts +0 -1
- package/cjs/scenegraph/refresh-node/update-chart.js +2 -9
- package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
- package/cjs/scenegraph/scenegraph.js +4 -10
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/state/state.js +1 -1
- package/cjs/themes/component.js +1 -1
- package/cjs/ts-types/base-table.d.ts +1 -14
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +325 -499
- package/dist/vtable.min.js +2 -2
- package/es/PivotChart.d.ts +0 -1
- package/es/PivotChart.js +2 -5
- package/es/PivotChart.js.map +1 -1
- package/es/components/axis/axis.js +1 -3
- package/es/components/axis/axis.js.map +1 -1
- package/es/components/legend/discrete-legend/discrete-legend.js +1 -2
- package/es/components/legend/discrete-legend/discrete-legend.js.map +1 -1
- package/es/core/BaseTable.d.ts +2 -4
- package/es/core/BaseTable.js +170 -56
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/FouseInput.d.ts +0 -1
- package/es/core/FouseInput.js +2 -5
- package/es/core/FouseInput.js.map +1 -1
- package/es/core/tableHelper.d.ts +2 -2
- package/es/core/tableHelper.js.map +1 -1
- package/es/event/event.js +1 -2
- package/es/event/event.js.map +1 -1
- package/es/event/listener/container-dom.js +10 -9
- package/es/event/listener/container-dom.js.map +1 -1
- package/es/event/listener/table-group.js +11 -11
- package/es/event/listener/table-group.js.map +1 -1
- package/es/event/util.js +2 -2
- package/es/event/util.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/scenegraph/debug-tool/debug-tool.js +1 -4
- package/es/scenegraph/debug-tool/debug-tool.js.map +1 -1
- package/es/scenegraph/graphic/chart.d.ts +0 -1
- package/es/scenegraph/graphic/chart.js +21 -33
- package/es/scenegraph/graphic/chart.js.map +1 -1
- package/es/scenegraph/graphic/contributions/chart-render-helper.js +8 -20
- package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
- package/es/scenegraph/graphic/contributions/chart-render.d.ts +1 -2
- package/es/scenegraph/graphic/contributions/chart-render.js +25 -41
- package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/chart-cell.js +1 -2
- package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/es/scenegraph/refresh-node/update-chart.d.ts +0 -1
- package/es/scenegraph/refresh-node/update-chart.js +0 -6
- package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
- package/es/scenegraph/scenegraph.js +4 -10
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/state/state.js +1 -1
- package/es/themes/component.js +1 -1
- package/es/ts-types/base-table.d.ts +1 -14
- package/es/ts-types/base-table.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +8 -8
- package/cjs/core/utils/get-cell-position.d.ts +0 -22
- package/cjs/core/utils/get-cell-position.js +0 -206
- package/cjs/core/utils/get-cell-position.js.map +0 -1
- package/es/core/utils/get-cell-position.d.ts +0 -22
- package/es/core/utils/get-cell-position.js +0 -194
- package/es/core/utils/get-cell-position.js.map +0 -1
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { _getTargetFrozenColAt, _getTargetFrozenRowAt } from "../tableHelper";
|
|
2
|
-
|
|
3
|
-
export function getRowAt(absoluteY, _this) {
|
|
4
|
-
const frozen = _getTargetFrozenRowAt(_this, absoluteY);
|
|
5
|
-
if (frozen) return frozen;
|
|
6
|
-
let row = getTargetRowAt(absoluteY, _this);
|
|
7
|
-
return row || (row = {
|
|
8
|
-
top: -1,
|
|
9
|
-
row: -1,
|
|
10
|
-
bottom: -1,
|
|
11
|
-
height: -1
|
|
12
|
-
}), row;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export function getColAt(absoluteX, _this) {
|
|
16
|
-
const frozen = _getTargetFrozenColAt(_this, absoluteX);
|
|
17
|
-
if (frozen) return frozen;
|
|
18
|
-
let col = getTargetColAt(absoluteX, _this);
|
|
19
|
-
return col || (col = {
|
|
20
|
-
left: -1,
|
|
21
|
-
col: -1,
|
|
22
|
-
right: -1,
|
|
23
|
-
width: 1
|
|
24
|
-
}), col;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function getCellAt(absoluteX, absoluteY, _this) {
|
|
28
|
-
const rowInfo = getRowAt(absoluteY, _this), {row: row, top: top, bottom: bottom, height: height} = rowInfo, colInfo = getColAt(absoluteX, _this), {col: col, left: left, right: right, width: width} = colInfo;
|
|
29
|
-
return {
|
|
30
|
-
row: row,
|
|
31
|
-
col: col,
|
|
32
|
-
rect: {
|
|
33
|
-
left: left,
|
|
34
|
-
right: right,
|
|
35
|
-
top: top,
|
|
36
|
-
bottom: bottom,
|
|
37
|
-
width: width,
|
|
38
|
-
height: height
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function getTargetColAt(absoluteX, _this) {
|
|
44
|
-
if (0 === absoluteX) return {
|
|
45
|
-
left: 0,
|
|
46
|
-
col: 0,
|
|
47
|
-
right: 0,
|
|
48
|
-
width: 0
|
|
49
|
-
};
|
|
50
|
-
const candCol = computeTargetColByX(absoluteX, _this), right = _this.getColsWidth(0, candCol);
|
|
51
|
-
return absoluteX >= right ? ((startCol, startRight) => {
|
|
52
|
-
let left = startRight - _this.getColWidth(startCol);
|
|
53
|
-
const {colCount: colCount} = _this.internalProps;
|
|
54
|
-
for (let col = startCol; col < colCount; col++) {
|
|
55
|
-
const width = _this.getColWidth(col), right = left + width;
|
|
56
|
-
if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) return {
|
|
57
|
-
left: left,
|
|
58
|
-
col: col,
|
|
59
|
-
right: right,
|
|
60
|
-
width: width
|
|
61
|
-
};
|
|
62
|
-
left = right;
|
|
63
|
-
}
|
|
64
|
-
return null;
|
|
65
|
-
})(candCol, right) : ((startCol, startRight) => {
|
|
66
|
-
let right = startRight;
|
|
67
|
-
for (let col = startCol; col >= 0; col--) {
|
|
68
|
-
const width = _this.getColWidth(col), left = right - width;
|
|
69
|
-
if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) return {
|
|
70
|
-
left: left,
|
|
71
|
-
col: col,
|
|
72
|
-
right: right,
|
|
73
|
-
width: width
|
|
74
|
-
};
|
|
75
|
-
right = left;
|
|
76
|
-
}
|
|
77
|
-
return null;
|
|
78
|
-
})(candCol, right);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export function getTargetRowAt(absoluteY, _this) {
|
|
82
|
-
if (0 === absoluteY) return {
|
|
83
|
-
top: 0,
|
|
84
|
-
row: 0,
|
|
85
|
-
bottom: 0,
|
|
86
|
-
height: 0
|
|
87
|
-
};
|
|
88
|
-
const candRow = computeTargetRowByY(absoluteY, _this), bottom = _this.getRowsHeight(0, candRow);
|
|
89
|
-
return absoluteY >= bottom ? ((startRow, startBottom) => {
|
|
90
|
-
let top = startBottom - _this.getRowHeight(startRow);
|
|
91
|
-
const {rowCount: rowCount} = _this.internalProps;
|
|
92
|
-
for (let row = startRow; row < rowCount; row++) {
|
|
93
|
-
const height = _this.getRowHeight(row), bottom = top + height;
|
|
94
|
-
if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) return {
|
|
95
|
-
top: top,
|
|
96
|
-
row: row,
|
|
97
|
-
bottom: bottom,
|
|
98
|
-
height: height
|
|
99
|
-
};
|
|
100
|
-
top = bottom;
|
|
101
|
-
}
|
|
102
|
-
return null;
|
|
103
|
-
})(candRow, bottom) : ((startRow, startBottom) => {
|
|
104
|
-
let bottom = startBottom;
|
|
105
|
-
for (let row = startRow; row >= 0; row--) {
|
|
106
|
-
const height = _this.getRowHeight(row), top = bottom - height;
|
|
107
|
-
if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) return {
|
|
108
|
-
top: top,
|
|
109
|
-
row: row,
|
|
110
|
-
bottom: bottom,
|
|
111
|
-
height: height
|
|
112
|
-
};
|
|
113
|
-
bottom = top;
|
|
114
|
-
}
|
|
115
|
-
return null;
|
|
116
|
-
})(candRow, bottom);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
export function getTargetColAtConsiderRightFrozen(absoluteX, isConsider, _this) {
|
|
120
|
-
if (0 === absoluteX) return {
|
|
121
|
-
left: 0,
|
|
122
|
-
col: 0,
|
|
123
|
-
right: 0,
|
|
124
|
-
width: 0
|
|
125
|
-
};
|
|
126
|
-
if (isConsider && absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() && absoluteX < _this.tableNoFrameWidth) for (let i = 0; i < _this.rightFrozenColCount; i++) if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) return {
|
|
127
|
-
col: _this.colCount - i - 1,
|
|
128
|
-
left: void 0,
|
|
129
|
-
right: void 0,
|
|
130
|
-
width: void 0
|
|
131
|
-
};
|
|
132
|
-
return getTargetColAt(absoluteX, _this);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export function getTargetRowAtConsiderBottomFrozen(absoluteY, isConsider, _this) {
|
|
136
|
-
if (0 === absoluteY) return {
|
|
137
|
-
top: 0,
|
|
138
|
-
row: 0,
|
|
139
|
-
bottom: 0,
|
|
140
|
-
height: 0
|
|
141
|
-
};
|
|
142
|
-
if (isConsider && absoluteY > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() && absoluteY < _this.tableNoFrameHeight) for (let i = 0; i < _this.rightFrozenColCount; i++) if (absoluteY > _this.tableNoFrameHeight - _this.getRowsHeight(_this.rowCount - i - 1, _this.rowCount - 1)) return {
|
|
143
|
-
row: _this.rowCount - i - 1,
|
|
144
|
-
top: void 0,
|
|
145
|
-
bottom: void 0,
|
|
146
|
-
height: void 0
|
|
147
|
-
};
|
|
148
|
-
return getTargetRowAt(absoluteY, _this);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export function computeTargetRowByY(absoluteY, _this) {
|
|
152
|
-
let defaultRowHeight = _this.internalProps.defaultRowHeight;
|
|
153
|
-
return _this._rowRangeHeightsMap.get("$0$" + (_this.rowCount - 1)) && (defaultRowHeight = _this._rowRangeHeightsMap.get("$0$" + (_this.rowCount - 1)) / _this.rowCount),
|
|
154
|
-
Math.min(Math.ceil(absoluteY / defaultRowHeight), _this.rowCount - 1);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
export function computeTargetColByX(absoluteX, _this) {
|
|
158
|
-
if (_this._colRangeWidthsMap.get("$0$" + (_this.colCount - 1))) {
|
|
159
|
-
let startCol = 0, endCol = _this.colCount - 1;
|
|
160
|
-
for (;endCol - startCol > 1; ) {
|
|
161
|
-
const midCol = Math.floor((startCol + endCol) / 2);
|
|
162
|
-
if (absoluteX < _this._colRangeWidthsMap.get(`$0$${midCol}`)) endCol = midCol; else {
|
|
163
|
-
if (!(absoluteX > _this._colRangeWidthsMap.get(`$0$${midCol}`))) return midCol;
|
|
164
|
-
startCol = midCol;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
return endCol;
|
|
168
|
-
}
|
|
169
|
-
return Math.min(Math.ceil(absoluteX / _this.internalProps.defaultColWidth), _this.colCount - 1);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
export function getCellAtRelativePosition(x, y, _this) {
|
|
173
|
-
x -= _this.tableX;
|
|
174
|
-
let bottomFrozen = !1;
|
|
175
|
-
(y -= _this.tableY) > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() && y < _this.tableNoFrameHeight && (bottomFrozen = !0);
|
|
176
|
-
let rightFrozen = !1;
|
|
177
|
-
x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() && x < _this.tableNoFrameWidth && (rightFrozen = !0);
|
|
178
|
-
const colInfo = getTargetColAtConsiderRightFrozen(rightFrozen ? x : x + _this.scrollLeft, rightFrozen, _this), rowInfo = getTargetRowAtConsiderBottomFrozen(bottomFrozen ? y : y + _this.scrollTop, bottomFrozen, _this);
|
|
179
|
-
if (!colInfo || !rowInfo) return;
|
|
180
|
-
const {row: row, top: top, bottom: bottom, height: height} = rowInfo, {col: col, left: left, right: right, width: width} = colInfo;
|
|
181
|
-
return {
|
|
182
|
-
row: row,
|
|
183
|
-
col: col,
|
|
184
|
-
rect: {
|
|
185
|
-
left: left,
|
|
186
|
-
right: right,
|
|
187
|
-
top: top,
|
|
188
|
-
bottom: bottom,
|
|
189
|
-
width: width,
|
|
190
|
-
height: height
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
//# sourceMappingURL=get-cell-position.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/utils/get-cell-position.ts"],"names":[],"mappings":"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","file":"get-cell-position.js","sourcesContent":["import type { CellAddressWithBound, ColumnInfo, RowInfo } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { _getTargetFrozenColAt, _getTargetFrozenRowAt } from '../tableHelper';\n\n/**\n * 根据y值计算所在行\n * @param absoluteY\n * @returns\n */\nexport function getRowAt(\n absoluteY: number,\n _this: BaseTableAPI\n): { top: number; row: number; bottom: number; height: number } {\n const frozen = _getTargetFrozenRowAt(_this, absoluteY);\n if (frozen) {\n return frozen;\n }\n let row = getTargetRowAt(absoluteY, _this);\n if (!row) {\n row = {\n top: -1,\n row: -1,\n bottom: -1,\n height: -1\n };\n }\n return row;\n}\n/**\n * 根据x值计算所在列\n * @param absoluteX\n * @returns\n */\nexport function getColAt(\n absoluteX: number,\n _this: BaseTableAPI\n): { left: number; col: number; right: number; width: number } {\n const frozen = _getTargetFrozenColAt(_this, absoluteX);\n if (frozen) {\n return frozen;\n }\n let col = getTargetColAt(absoluteX, _this);\n if (!col) {\n col = {\n left: -1,\n col: -1,\n right: -1,\n width: 1\n };\n }\n return col;\n}\n/**\n * 根据坐标值获取行列位置,index和rect范围\n * @param absoluteX\n * @param absoluteY\n * @returns\n */\nexport function getCellAt(absoluteX: number, absoluteY: number, _this: BaseTableAPI): CellAddressWithBound {\n const rowInfo = getRowAt(absoluteY, _this);\n const { row, top, bottom, height } = rowInfo;\n const colInfo = getColAt(absoluteX, _this);\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n}\n\n/**\n * 根据x获取该位置所处列值\n * @param table\n * @param absoluteX\n * @returns\n */\nexport function getTargetColAt(absoluteX: number, _this: BaseTableAPI): ColumnInfo | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n const findBefore = (\n startCol: number,\n startRight: number\n ): {\n left: number;\n col: number;\n right: number;\n width: number;\n } | null => {\n let right = startRight;\n for (let col = startCol; col >= 0; col--) {\n const width = _this.getColWidth(col);\n const left = right - width;\n if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n right = left;\n }\n return null;\n };\n const findAfter = (\n startCol: number,\n startRight: number\n ): {\n left: number;\n col: number;\n right: number;\n width: number;\n } | null => {\n let left = startRight - _this.getColWidth(startCol);\n const { colCount } = _this.internalProps;\n for (let col = startCol; col < colCount; col++) {\n const width = _this.getColWidth(col);\n const right = left + width;\n if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n left = right;\n }\n return null;\n };\n //计算这个位置处是第几行\n const candCol = computeTargetColByX(absoluteX, _this);\n const right = _this.getColsWidth(0, candCol);\n if (absoluteX >= right) {\n return findAfter(candCol, right);\n }\n return findBefore(candCol, right);\n}\n/**\n * 根据y获取该位置所处行值\n * @param table\n * @param absoluteX\n * @returns\n */\nexport function getTargetRowAt(absoluteY: number, _this: BaseTableAPI): RowInfo | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n\n const findBefore = (\n startRow: number,\n startBottom: number\n ): {\n top: number;\n row: number;\n bottom: number;\n height: number;\n } | null => {\n let bottom = startBottom;\n for (let row = startRow; row >= 0; row--) {\n const height = _this.getRowHeight(row);\n const top = bottom - height;\n if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n bottom = top;\n }\n return null;\n };\n const findAfter = (\n startRow: number,\n startBottom: number\n ): {\n top: number;\n row: number;\n bottom: number;\n height: number;\n } | null => {\n let top = startBottom - _this.getRowHeight(startRow);\n const { rowCount } = _this.internalProps;\n for (let row = startRow; row < rowCount; row++) {\n const height = _this.getRowHeight(row);\n const bottom = top + height;\n if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n top = bottom;\n }\n return null;\n };\n // const candRow = Math.min(\n // Math.ceil(absoluteY / this.internalProps.defaultRowHeight),\n // this.rowCount - 1\n // );\n //计算这个位置处是第几行\n const candRow = computeTargetRowByY(absoluteY, _this);\n const bottom = _this.getRowsHeight(0, candRow);\n if (absoluteY >= bottom) {\n return findAfter(candRow, bottom);\n }\n return findBefore(candRow, bottom);\n}\n\n/**\n * 根据x获取该位置所处列值\n * @param table\n * @param absoluteX\n * @returns\n */\nexport function getTargetColAtConsiderRightFrozen(\n absoluteX: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): ColumnInfo | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n if (\n isConsider &&\n absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n absoluteX < _this.tableNoFrameWidth\n ) {\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) {\n return {\n col: _this.colCount - i - 1,\n left: undefined,\n right: undefined,\n width: undefined\n };\n }\n }\n }\n return getTargetColAt(absoluteX, _this);\n}\n\n/**\n * 根据y获取该位置所处行值\n * @param table\n * @param absoluteX\n * @returns\n */\nexport function getTargetRowAtConsiderBottomFrozen(\n absoluteY: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): RowInfo | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n if (\n isConsider &&\n absoluteY > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n absoluteY < _this.tableNoFrameHeight\n ) {\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteY > _this.tableNoFrameHeight - _this.getRowsHeight(_this.rowCount - i - 1, _this.rowCount - 1)) {\n return {\n row: _this.rowCount - i - 1,\n top: undefined,\n bottom: undefined,\n height: undefined\n };\n }\n }\n }\n return getTargetRowAt(absoluteY, _this);\n}\n\n/**\n * 根据y值(包括了scroll的)计算所在行\n * @param this\n * @param absoluteY 左边y值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetRowByY(absoluteY: number, _this: BaseTableAPI): number {\n let defaultRowHeight = _this.internalProps.defaultRowHeight;\n\n //使用二分法计算出row\n if (_this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`)) {\n defaultRowHeight = _this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`) / _this.rowCount;\n // let startRow = 0;\n // let endRow = this.rowCount - 1;\n // while (endRow - startRow > 1) {\n // const midRow = Math.floor((startRow + endRow) / 2);\n // if (absoluteY < this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // endRow = midRow;\n // } else if (absoluteY > this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // startRow = midRow;\n // } else {\n // return midRow;\n // }\n // }\n // return endRow;\n }\n //否则使用defaultRowHeight大约计算一个row\n return Math.min(Math.ceil(absoluteY / defaultRowHeight), _this.rowCount - 1);\n}\n/**\n * 根据x值(包括了scroll的)计算所在列 主要借助colRangeWidthsMap缓存来提高计算效率\n * @param this\n * @param absoluteX 左边x值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetColByX(absoluteX: number, _this: BaseTableAPI): number {\n //使用二分法计算出col\n if (_this._colRangeWidthsMap.get(`$0$${_this.colCount - 1}`)) {\n let startCol = 0;\n let endCol = _this.colCount - 1;\n while (endCol - startCol > 1) {\n const midCol = Math.floor((startCol + endCol) / 2);\n if (absoluteX < _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n endCol = midCol;\n } else if (absoluteX > _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n startCol = midCol;\n } else {\n return midCol;\n }\n }\n return endCol;\n }\n //否则使用defaultColWidth大约计算一个col\n return Math.min(Math.ceil(absoluteX / _this.internalProps.defaultColWidth), _this.colCount - 1);\n}\n\n// 获取屏幕坐标对应的单元格信息,考虑滚动\nexport function getCellAtRelativePosition(x: number, y: number, _this: BaseTableAPI): CellAddressWithBound {\n // table border and outer component\n x -= _this.tableX;\n y -= _this.tableY;\n\n // bottom frozen\n let bottomFrozen = false;\n if (y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() && y < _this.tableNoFrameHeight) {\n bottomFrozen = true;\n }\n // right frozen\n let rightFrozen = false;\n if (x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() && x < _this.tableNoFrameWidth) {\n rightFrozen = true;\n }\n\n const colInfo = getTargetColAtConsiderRightFrozen(rightFrozen ? x : x + _this.scrollLeft, rightFrozen, _this);\n const rowInfo = getTargetRowAtConsiderBottomFrozen(bottomFrozen ? y : y + _this.scrollTop, bottomFrozen, _this);\n if (!colInfo || !rowInfo) {\n return undefined;\n }\n const { row, top, bottom, height } = rowInfo;\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n}\n"]}
|