@visactor/vtable 1.23.3 → 1.24.0-alpha.0
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/ListTable.d.ts +1 -0
- package/cjs/ListTable.js +182 -24
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotTable.d.ts +1 -0
- package/cjs/PivotTable.js +10 -2
- package/cjs/PivotTable.js.map +1 -1
- package/cjs/core/BaseTable.d.ts +9 -0
- package/cjs/core/BaseTable.js +64 -15
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/TABLE_EVENT_TYPE.d.ts +2 -0
- package/cjs/core/TABLE_EVENT_TYPE.js +2 -0
- package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/cjs/core/animation.js +5 -3
- package/cjs/core/animation.js.map +1 -1
- package/cjs/core/record-helper.js +83 -13
- package/cjs/core/record-helper.js.map +1 -1
- package/cjs/data/DataSource.js +3 -2
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/dataset/DataStatistics.js +1 -2
- package/cjs/edit/edit-manager.js +21 -15
- package/cjs/edit/edit-manager.js.map +1 -1
- package/cjs/index.d.ts +3 -3
- package/cjs/index.js +51 -12
- package/cjs/index.js.map +1 -1
- package/cjs/layout/cell-range/simple-cell-range.js +14 -4
- package/cjs/layout/cell-range/simple-cell-range.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/init-scenegraph.js +1 -1
- package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
- package/cjs/state/state.js +14 -11
- package/cjs/state/state.js.map +1 -1
- package/cjs/ts-types/base-table.d.ts +5 -0
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/events.d.ts +16 -0
- package/cjs/ts-types/events.js.map +1 -1
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +906 -218
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.d.ts +1 -0
- package/es/ListTable.js +177 -24
- package/es/ListTable.js.map +1 -1
- package/es/PivotTable.d.ts +1 -0
- package/es/PivotTable.js +8 -2
- package/es/PivotTable.js.map +1 -1
- package/es/core/BaseTable.d.ts +9 -0
- package/es/core/BaseTable.js +64 -15
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/TABLE_EVENT_TYPE.d.ts +2 -0
- package/es/core/TABLE_EVENT_TYPE.js +2 -0
- package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/es/core/animation.js +5 -3
- package/es/core/animation.js.map +1 -1
- package/es/core/record-helper.js +83 -12
- package/es/core/record-helper.js.map +1 -1
- package/es/data/DataSource.js +3 -2
- package/es/data/DataSource.js.map +1 -1
- package/es/dataset/DataStatistics.js +1 -2
- package/es/edit/edit-manager.js +20 -16
- package/es/edit/edit-manager.js.map +1 -1
- package/es/index.d.ts +3 -3
- package/es/index.js +5 -3
- package/es/index.js.map +1 -1
- package/es/layout/cell-range/simple-cell-range.js +14 -4
- package/es/layout/cell-range/simple-cell-range.js.map +1 -1
- package/es/scenegraph/group-creater/cell-helper.js +1 -1
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/group-creater/init-scenegraph.js +1 -1
- package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
- package/es/state/state.js +14 -11
- package/es/state/state.js.map +1 -1
- package/es/ts-types/base-table.d.ts +5 -0
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/events.d.ts +16 -0
- package/es/ts-types/events.js.map +1 -1
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +5 -5
package/es/core/BaseTable.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ import { PluginManager } from '../plugins/plugin-manager';
|
|
|
27
27
|
export declare abstract class BaseTable extends EventTarget implements BaseTableAPI {
|
|
28
28
|
internalProps: IBaseTableProtected;
|
|
29
29
|
showFrozenIcon: boolean;
|
|
30
|
+
_scrollToRowCorrectTimer: ReturnType<typeof setTimeout> | null;
|
|
30
31
|
padding: {
|
|
31
32
|
top: number;
|
|
32
33
|
left: number;
|
|
@@ -264,6 +265,7 @@ export declare abstract class BaseTable extends EventTarget implements BaseTable
|
|
|
264
265
|
release: () => void;
|
|
265
266
|
}): void;
|
|
266
267
|
private dispose;
|
|
268
|
+
clearCorrectTimer(): void;
|
|
267
269
|
release(): void;
|
|
268
270
|
fireListeners<TYPE extends keyof TableEventHandlersEventArgumentMap>(type: TYPE, event: TableEventHandlersEventArgumentMap[TYPE]): TableEventHandlersReturnMap[TYPE][];
|
|
269
271
|
updateOption(options: BaseTableConstructorOptions, updateConfig?: {
|
|
@@ -296,6 +298,11 @@ export declare abstract class BaseTable extends EventTarget implements BaseTable
|
|
|
296
298
|
endDragSelect(): void;
|
|
297
299
|
startDragSelectRow(rowIndex: number, enableCtrlSelectMode?: boolean, isShift?: boolean, makeSelectCellVisible?: boolean): void;
|
|
298
300
|
dragSelectRow(rowIndex: number, isCtrl?: boolean, makeSelectCellVisible?: boolean): void;
|
|
301
|
+
changeHeaderPosition(args: {
|
|
302
|
+
source: CellAddress;
|
|
303
|
+
target: CellAddress;
|
|
304
|
+
movingColumnOrRow?: 'column' | 'row';
|
|
305
|
+
}): boolean;
|
|
299
306
|
abstract isListTable(): boolean;
|
|
300
307
|
abstract isPivotTable(): boolean;
|
|
301
308
|
abstract isPivotChart(): boolean;
|
|
@@ -457,6 +464,8 @@ export declare abstract class BaseTable extends EventTarget implements BaseTable
|
|
|
457
464
|
disableScroll(): void;
|
|
458
465
|
enableScroll(): void;
|
|
459
466
|
getGroupTitleLevel(col: number, row: number): number | undefined;
|
|
467
|
+
getTargetScrollTop(row: number): number;
|
|
468
|
+
private _scheduleScrollToRowCorrect;
|
|
460
469
|
scrollToRow(row: number, animationOption?: ITableAnimationOption | boolean): void;
|
|
461
470
|
scrollToCol(col: number, animationOption?: ITableAnimationOption | boolean): void;
|
|
462
471
|
scrollToCell(cellAddr: {
|
package/es/core/BaseTable.js
CHANGED
|
@@ -90,12 +90,12 @@ export class BaseTable extends EventTarget {
|
|
|
90
90
|
}
|
|
91
91
|
constructor(container, options = {}) {
|
|
92
92
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
|
|
93
|
-
if (super(), this.showFrozenIcon = !0, this.
|
|
94
|
-
this.
|
|
95
|
-
this.id = `VTable${Date.now()}`, this.isReleased = !1,
|
|
96
|
-
this.throttleInvalidate = throttle2(this.render.bind(this), 200),
|
|
97
|
-
container = null) : container instanceof HTMLElement || (options = container,
|
|
98
|
-
!container && "node" !== options.mode && !options.canvas) throw new Error("vtable's container is undefined");
|
|
93
|
+
if (super(), this.showFrozenIcon = !0, this._scrollToRowCorrectTimer = null, this._tableBorderWidth_left = 0,
|
|
94
|
+
this._tableBorderWidth_right = 0, this._tableBorderWidth_top = 0, this._tableBorderWidth_bottom = 0,
|
|
95
|
+
this.version = "1.24.0-alpha.0", this.id = `VTable${Date.now()}`, this.isReleased = !1,
|
|
96
|
+
this._chartEventMap = {}, this.throttleInvalidate = throttle2(this.render.bind(this), 200),
|
|
97
|
+
"node" === Env.mode ? (options = container, container = null) : container instanceof HTMLElement || (options = container,
|
|
98
|
+
container = container.container ? container.container : null), !container && "node" !== options.mode && !options.canvas) throw new Error("vtable's container is undefined");
|
|
99
99
|
this.pluginManager = new PluginManager(this, options), this.fireListeners(TABLE_EVENT_TYPE.BEFORE_INIT, {
|
|
100
100
|
options: options,
|
|
101
101
|
container: container
|
|
@@ -988,6 +988,9 @@ export class BaseTable extends EventTarget {
|
|
|
988
988
|
dispose() {
|
|
989
989
|
this.release();
|
|
990
990
|
}
|
|
991
|
+
clearCorrectTimer() {
|
|
992
|
+
this._scrollToRowCorrectTimer && (clearTimeout(this._scrollToRowCorrectTimer), this._scrollToRowCorrectTimer = null);
|
|
993
|
+
}
|
|
991
994
|
release() {
|
|
992
995
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
|
|
993
996
|
null === (_c = null === (_b = null === (_a = this.scenegraph) || void 0 === _a ? void 0 : _a.component) || void 0 === _b ? void 0 : _b.vScrollBar) || void 0 === _c || _c.release(),
|
|
@@ -995,7 +998,7 @@ export class BaseTable extends EventTarget {
|
|
|
995
998
|
this.animationManager.clear(), this.animationManager.ticker.release(), null === (_j = null === (_h = null === (_g = this.scenegraph) || void 0 === _g ? void 0 : _g.stage) || void 0 === _h ? void 0 : _h.ticker) || void 0 === _j || _j.release();
|
|
996
999
|
const internalProps = this.internalProps;
|
|
997
1000
|
if (this.isReleased) return;
|
|
998
|
-
null === (_l = null === (_k = internalProps.tooltipHandler) || void 0 === _k ? void 0 : _k.release) || void 0 === _l || _l.call(_k),
|
|
1001
|
+
this.clearCorrectTimer(), null === (_l = null === (_k = internalProps.tooltipHandler) || void 0 === _k ? void 0 : _k.release) || void 0 === _l || _l.call(_k),
|
|
999
1002
|
null === (_o = null === (_m = internalProps.menuHandler) || void 0 === _m ? void 0 : _m.release) || void 0 === _o || _o.call(_m),
|
|
1000
1003
|
null === (_p = super.release) || void 0 === _p || _p.call(this), this.pluginManager.release(),
|
|
1001
1004
|
null === (_r = null === (_q = internalProps.handler) || void 0 === _q ? void 0 : _q.release) || void 0 === _r || _r.call(_q),
|
|
@@ -1308,6 +1311,31 @@ export class BaseTable extends EventTarget {
|
|
|
1308
1311
|
lastSelectRange && (lastSelectRange.end.row = rowIndex), this.stateManager.updateSelectPos(this.colCount - 1, rowIndex, !1, isCtrl, !1, makeSelectCellVisible, !0),
|
|
1309
1312
|
this.stateManager.select.selecting = !1;
|
|
1310
1313
|
}
|
|
1314
|
+
changeHeaderPosition(args) {
|
|
1315
|
+
var _a, _b, _c, _d, _e;
|
|
1316
|
+
if (!("canMoveHeaderPosition" in this.internalProps.layoutMap) || !0 === (null === (_a = this.options.customConfig) || void 0 === _a ? void 0 : _a.notUpdateInColumnRowMove)) return !1;
|
|
1317
|
+
const prevMoving = this.stateManager.columnMove.movingColumnOrRow;
|
|
1318
|
+
this.stateManager.columnMove.movingColumnOrRow = args.movingColumnOrRow;
|
|
1319
|
+
try {
|
|
1320
|
+
if (!1 === (null === (_c = (_b = this.internalProps.layoutMap).canMoveHeaderPosition) || void 0 === _c ? void 0 : _c.call(_b, args.source, args.target))) return !1;
|
|
1321
|
+
const oldSourceMergeInfo = this.getCellRange(args.source.col, args.source.row), oldTargetMergeInfo = this.getCellRange(args.target.col, args.target.row), moveContext = this._moveHeaderPosition(args.source, args.target);
|
|
1322
|
+
if (!moveContext || moveContext.targetIndex === moveContext.sourceIndex) return !1;
|
|
1323
|
+
this.internalProps.useOneRowHeightFillAll = !1, this.internalProps.layoutMap.clearCellRangeMap();
|
|
1324
|
+
const sourceMergeInfo = this.getCellRange(args.source.col, args.source.row), targetMergeInfo = this.getCellRange(args.target.col, args.target.row), colMin = Math.min(sourceMergeInfo.start.col, targetMergeInfo.start.col, oldSourceMergeInfo.start.col, oldTargetMergeInfo.start.col), colMax = Math.max(sourceMergeInfo.end.col, targetMergeInfo.end.col, oldSourceMergeInfo.end.col, oldTargetMergeInfo.end.col), rowMin = Math.min(sourceMergeInfo.start.row, targetMergeInfo.start.row, oldSourceMergeInfo.start.row, oldTargetMergeInfo.start.row);
|
|
1325
|
+
let rowMax = Math.max(sourceMergeInfo.end.row, targetMergeInfo.end.row, oldSourceMergeInfo.end.row, oldTargetMergeInfo.end.row);
|
|
1326
|
+
if ("row" === moveContext.moveType && "tree" === this.internalProps.layoutMap.rowHierarchyType && (rowMax = moveContext.targetIndex > moveContext.sourceIndex ? rowMax + moveContext.targetSize - 1 : rowMax + moveContext.sourceSize - 1),
|
|
1327
|
+
this.transpose || !this.isSeriesNumberInBody(args.source.col, args.source.row) && "row" !== args.movingColumnOrRow || (this.changeRecordOrder(moveContext.sourceIndex, moveContext.targetIndex),
|
|
1328
|
+
this.stateManager.changeCheckboxAndRadioOrder(moveContext.sourceIndex, moveContext.targetIndex)),
|
|
1329
|
+
"column" === moveContext.moveType) for (let col = colMin; col <= colMax; col++) this._clearColRangeWidthsMap(col); else for (let row = rowMin; row <= rowMax; row++) this._clearRowRangeHeightsMap(row);
|
|
1330
|
+
return this.clearCellStyleCache(), this.isSeriesNumberInBody(args.source.col, args.source.row) || "row" === args.movingColumnOrRow ? this.scenegraph.updateHeaderPosition(this.scenegraph.proxy.colStart, this.scenegraph.proxy.colEnd, this.scenegraph.proxy.rowStart, this.scenegraph.proxy.rowEnd, moveContext.moveType) : "column" === moveContext.moveType ? this.scenegraph.updateHeaderPosition(colMin, colMax, 0, -1, moveContext.moveType) : this.scenegraph.updateHeaderPosition(0, -1, rowMin, rowMax, moveContext.moveType),
|
|
1331
|
+
"adjustFrozenCount" === this.internalProps.frozenColDragHeaderMode && this.isListTable() && (this.isLeftFrozenColumn(args.target.col) && !this.isLeftFrozenColumn(args.source.col) ? this.frozenColCount += sourceMergeInfo.end.col - sourceMergeInfo.start.col + 1 : this.isLeftFrozenColumn(args.source.col) && !this.isLeftFrozenColumn(args.target.col) && (this.frozenColCount -= sourceMergeInfo.end.col - sourceMergeInfo.start.col + 1),
|
|
1332
|
+
this.isRightFrozenColumn(args.target.col) && !this.isRightFrozenColumn(args.source.col) ? this.rightFrozenColCount += sourceMergeInfo.end.col - sourceMergeInfo.start.col + 1 : this.isRightFrozenColumn(args.source.col) && !this.isRightFrozenColumn(args.target.col) && (this.rightFrozenColCount -= sourceMergeInfo.end.col - sourceMergeInfo.start.col + 1)),
|
|
1333
|
+
null === (_e = (_d = this.scenegraph).updateNextFrame) || void 0 === _e || _e.call(_d),
|
|
1334
|
+
!0;
|
|
1335
|
+
} finally {
|
|
1336
|
+
this.stateManager.columnMove.movingColumnOrRow = prevMoving;
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1311
1339
|
get recordsCount() {
|
|
1312
1340
|
var _a;
|
|
1313
1341
|
return null === (_a = this.records) || void 0 === _a ? void 0 : _a.length;
|
|
@@ -1459,7 +1487,7 @@ export class BaseTable extends EventTarget {
|
|
|
1459
1487
|
getCustomMerge(col, row) {
|
|
1460
1488
|
if (this.internalProps.customMergeCell) {
|
|
1461
1489
|
const customMerge = this.internalProps.customMergeCell(col, row, this);
|
|
1462
|
-
if (customMerge && customMerge.range
|
|
1490
|
+
if (customMerge && customMerge.range) {
|
|
1463
1491
|
if (customMerge.style) {
|
|
1464
1492
|
const styleClass = this.internalProps.bodyHelper.getStyleClass("text"), style = customMerge.style, fullStyle = columnStyleContents.of(style, this.theme.bodyStyle, {
|
|
1465
1493
|
col: col,
|
|
@@ -2110,12 +2138,33 @@ export class BaseTable extends EventTarget {
|
|
|
2110
2138
|
this.eventManager.enableScroll();
|
|
2111
2139
|
}
|
|
2112
2140
|
getGroupTitleLevel(col, row) {}
|
|
2141
|
+
getTargetScrollTop(row) {
|
|
2142
|
+
const drawRange = this.getDrawRange(), frozenHeight = this.getFrozenRowsHeight(), rowsHeight = Math.ceil(this.rowHeightsMap.getSumInRange(0, row - 1)), allRowsHeight = this.getAllRowsHeight();
|
|
2143
|
+
return Math.max(0, Math.min(rowsHeight - frozenHeight, allRowsHeight - drawRange.height));
|
|
2144
|
+
}
|
|
2145
|
+
_scheduleScrollToRowCorrect(row, delay = 0) {
|
|
2146
|
+
this._scrollToRowCorrectTimer = setTimeout((() => {
|
|
2147
|
+
this.clearCorrectTimer();
|
|
2148
|
+
const targetScrollTop = this.getTargetScrollTop(row);
|
|
2149
|
+
if (targetScrollTop !== this.scrollTop) {
|
|
2150
|
+
this.scrollTop = targetScrollTop;
|
|
2151
|
+
const correctedTargetScrollTop = this.getTargetScrollTop(row);
|
|
2152
|
+
correctedTargetScrollTop !== this.scrollTop && (this.scrollTop = correctedTargetScrollTop);
|
|
2153
|
+
}
|
|
2154
|
+
}), delay);
|
|
2155
|
+
}
|
|
2113
2156
|
scrollToRow(row, animationOption) {
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
row:
|
|
2118
|
-
});
|
|
2157
|
+
var _a;
|
|
2158
|
+
const targetRow = Math.min(Math.max(Math.floor(row), 0), this.rowCount - 1);
|
|
2159
|
+
if (this.clearCorrectTimer(), !animationOption) return this.scrollToCell({
|
|
2160
|
+
row: targetRow
|
|
2161
|
+
}), void this._scheduleScrollToRowCorrect(targetRow);
|
|
2162
|
+
const duration = isBoolean(animationOption) ? 3e3 : null !== (_a = null == animationOption ? void 0 : animationOption.duration) && void 0 !== _a ? _a : 3e3;
|
|
2163
|
+
this.animationManager.scrollTo({
|
|
2164
|
+
row: targetRow
|
|
2165
|
+
}, animationOption), this._scrollToRowCorrectTimer = setTimeout((() => {
|
|
2166
|
+
this.scrollToRow(targetRow, !1);
|
|
2167
|
+
}), duration);
|
|
2119
2168
|
}
|
|
2120
2169
|
scrollToCol(col, animationOption) {
|
|
2121
2170
|
animationOption ? this.animationManager.scrollTo({
|
|
@@ -2132,8 +2181,8 @@ export class BaseTable extends EventTarget {
|
|
|
2132
2181
|
this.scrollLeft = Math.min(left - frozenWidth, this.getAllColsWidth() - drawRange.width);
|
|
2133
2182
|
}
|
|
2134
2183
|
if (isValid(cellAddr.row) && cellAddr.row >= this.frozenRowCount) {
|
|
2135
|
-
const frozenHeight = this.getFrozenRowsHeight(), top = this.
|
|
2136
|
-
this.scrollTop = Math.min(top - frozenHeight, this.
|
|
2184
|
+
const frozenHeight = this.getFrozenRowsHeight(), top = this.rowHeightsMap.getSumInRange(0, cellAddr.row - 1);
|
|
2185
|
+
this.scrollTop = Math.min(top - frozenHeight, this.rowHeightsMap.getSumInRange(0, this.rowCount - 1) - drawRange.height);
|
|
2137
2186
|
}
|
|
2138
2187
|
this.render();
|
|
2139
2188
|
}
|