@visactor/vtable 1.14.1 → 1.14.3
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 +2 -2
- package/cjs/ListTable.js +4 -3
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotTable.js +22 -6
- package/cjs/PivotTable.js.map +1 -1
- package/cjs/core/BaseTable.js +3 -3
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/event/event.js +3 -2
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/list-table/checkbox.d.ts +2 -0
- package/cjs/event/list-table/checkbox.js +70 -0
- package/cjs/event/list-table/checkbox.js.map +1 -0
- package/cjs/header-helper/header-helper.js +18 -3
- package/cjs/header-helper/header-helper.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/layout/cell-range/simple-cell-range.js +3 -1
- package/cjs/layout/cell-range/simple-cell-range.js.map +1 -1
- package/cjs/layout/layout-helper.d.ts +2 -0
- package/cjs/layout/layout-helper.js +12 -2
- package/cjs/layout/layout-helper.js.map +1 -1
- package/cjs/layout/pivot-header-layout.js +6 -6
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/layout/tree-helper.d.ts +6 -2
- package/cjs/layout/tree-helper.js +36 -17
- package/cjs/layout/tree-helper.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +4 -4
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js +4 -4
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +2 -2
- package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +9 -1
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/util.js +2 -2
- package/cjs/scenegraph/group-creater/progress/update-position/util.js.map +1 -1
- package/cjs/scenegraph/layout/update-width.js +1 -2
- package/cjs/scenegraph/layout/update-width.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +1 -1
- package/cjs/scenegraph/scenegraph.js +12 -5
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/state/checkbox/checkbox.d.ts +4 -3
- package/cjs/state/checkbox/checkbox.js +12 -5
- package/cjs/state/checkbox/checkbox.js.map +1 -1
- package/cjs/state/state.d.ts +3 -3
- package/cjs/state/state.js.map +1 -1
- package/cjs/tools/update-row.js +2 -2
- package/cjs/tools/update-row.js.map +1 -1
- package/cjs/ts-types/list-table/layout-map/api.d.ts +6 -2
- package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
- package/cjs/ts-types/pivot-table/dimension/basic-dimension.d.ts +5 -1
- package/cjs/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
- package/cjs/ts-types/pivot-table/indicator/basic-indicator.d.ts +10 -2
- package/cjs/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +2 -0
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +560 -207
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.d.ts +2 -2
- package/es/ListTable.js +4 -3
- package/es/ListTable.js.map +1 -1
- package/es/PivotTable.js +17 -7
- package/es/PivotTable.js.map +1 -1
- package/es/core/BaseTable.js +3 -3
- package/es/core/BaseTable.js.map +1 -1
- package/es/event/event.js +4 -1
- package/es/event/event.js.map +1 -1
- package/es/event/list-table/checkbox.d.ts +2 -0
- package/es/event/list-table/checkbox.js +62 -0
- package/es/event/list-table/checkbox.js.map +1 -0
- package/es/header-helper/header-helper.js +18 -3
- package/es/header-helper/header-helper.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/layout/cell-range/simple-cell-range.js +3 -1
- package/es/layout/cell-range/simple-cell-range.js.map +1 -1
- package/es/layout/layout-helper.d.ts +2 -0
- package/es/layout/layout-helper.js +10 -1
- package/es/layout/layout-helper.js.map +1 -1
- package/es/layout/pivot-header-layout.js +6 -6
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/layout/tree-helper.d.ts +6 -2
- package/es/layout/tree-helper.js +30 -13
- package/es/layout/tree-helper.js.map +1 -1
- package/es/scenegraph/graphic/contributions/group-contribution-render.js +4 -4
- package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/contributions/rect-contribution-render.js +4 -4
- package/es/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
- package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +2 -2
- package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +9 -1
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
- package/es/scenegraph/group-creater/progress/update-position/util.js +2 -2
- package/es/scenegraph/group-creater/progress/update-position/util.js.map +1 -1
- package/es/scenegraph/layout/update-width.js +1 -2
- package/es/scenegraph/layout/update-width.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +1 -1
- package/es/scenegraph/scenegraph.js +12 -5
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/state/checkbox/checkbox.d.ts +4 -3
- package/es/state/checkbox/checkbox.js +9 -2
- package/es/state/checkbox/checkbox.js.map +1 -1
- package/es/state/state.d.ts +3 -3
- package/es/state/state.js.map +1 -1
- package/es/tools/update-row.js +2 -2
- package/es/tools/update-row.js.map +1 -1
- package/es/ts-types/list-table/layout-map/api.d.ts +6 -2
- package/es/ts-types/list-table/layout-map/api.js.map +1 -1
- package/es/ts-types/pivot-table/dimension/basic-dimension.d.ts +5 -1
- package/es/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
- package/es/ts-types/pivot-table/indicator/basic-indicator.d.ts +10 -2
- package/es/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +2 -0
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { StateManager } from '../state';
|
|
2
2
|
import type { BaseTableAPI } from '../../ts-types/base-table';
|
|
3
|
-
export declare function setCheckedState(col: number, row: number, field: string | number, checked: boolean, state: StateManager): void;
|
|
4
|
-
export declare function setHeaderCheckedState(field: string | number, checked: boolean, state: StateManager): void;
|
|
3
|
+
export declare function setCheckedState(col: number, row: number, field: string | number, checked: boolean | 'indeterminate', state: StateManager): void;
|
|
4
|
+
export declare function setHeaderCheckedState(field: string | number, checked: boolean | 'indeterminate', state: StateManager): void;
|
|
5
5
|
export declare function syncCheckedState(col: number, row: number, field: string | number, checked: boolean, state: StateManager): boolean | 'indeterminate';
|
|
6
6
|
export declare function initCheckedState(records: any[], state: StateManager): void;
|
|
7
7
|
export declare function updateHeaderCheckedState(field: string | number, state: StateManager, col: number, row: number): boolean | 'indeterminate';
|
|
8
8
|
export declare function initLeftRecordsCheckState(records: any[], state: StateManager): void;
|
|
9
|
-
export declare function setCellCheckboxState(col: number, row: number, checked: boolean, table: BaseTableAPI): void;
|
|
9
|
+
export declare function setCellCheckboxState(col: number, row: number, checked: boolean | 'indeterminate', table: BaseTableAPI): void;
|
|
10
|
+
export declare function setCellCheckboxStateByAttribute(col: number, row: number, checked: boolean | 'indeterminate', table: BaseTableAPI): void;
|
|
10
11
|
export declare function changeCheckboxOrder(sourceIndex: number, targetIndex: number, state: StateManager): void;
|
|
11
12
|
export declare function getGroupCheckboxState(table: BaseTableAPI): any[];
|
|
@@ -62,10 +62,10 @@ export function initCheckedState(records, state) {
|
|
|
62
62
|
export function updateHeaderCheckedState(field, state, col, row) {
|
|
63
63
|
let allChecked = !0, allUnChecked = !0, hasChecked = !1;
|
|
64
64
|
return state.checkedState.forEach(((check_state, index) => {
|
|
65
|
-
var _a;
|
|
65
|
+
var _a, _b;
|
|
66
66
|
index = index.includes(",") ? index.split(",").map((item => Number(item))) : Number(index);
|
|
67
67
|
const tableIndex = state.table.getTableIndexByRecordIndex(index), mergeCell = state.table.transpose ? state.table.getCustomMerge(tableIndex, row) : state.table.getCustomMerge(col, tableIndex), data = null === (_a = state.table.dataSource) || void 0 === _a ? void 0 : _a.get(index);
|
|
68
|
-
mergeCell || data.vtableMerge || (!0 !== (null == check_state ? void 0 : check_state[field]) ? allChecked = !1 : (allUnChecked = !1,
|
|
68
|
+
mergeCell || !(null === (_b = state.table.internalProps.rowSeriesNumber) || void 0 === _b ? void 0 : _b.enableTreeCheckbox) && data.vtableMerge || (!0 !== (null == check_state ? void 0 : check_state[field]) ? allChecked = !1 : (allUnChecked = !1,
|
|
69
69
|
hasChecked = !0));
|
|
70
70
|
})), allChecked ? (state.headerCheckedState[field] = !0, allChecked) : allUnChecked ? (state.headerCheckedState[field] = !1,
|
|
71
71
|
!1) : !!hasChecked && (state.headerCheckedState[field] = "indeterminate", "indeterminate");
|
|
@@ -104,6 +104,13 @@ export function setCellCheckboxState(col, row, checked, table) {
|
|
|
104
104
|
indeterminate ? (checked || checkbox._handlePointerUp(), checkbox._handlePointerUp()) : oldChecked ? checked || checkbox._handlePointerUp() : checked && checkbox._handlePointerUp();
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
export function setCellCheckboxStateByAttribute(col, row, checked, table) {
|
|
108
|
+
const cellGroup = table.scenegraph.getCell(col, row), checkbox = null == cellGroup ? void 0 : cellGroup.getChildByName("checkbox");
|
|
109
|
+
checkbox && ("indeterminate" === checked ? (checkbox.setAttribute("indeterminate", !0),
|
|
110
|
+
checkbox.setAttribute("checked", void 0)) : (checkbox.setAttribute("indeterminate", void 0),
|
|
111
|
+
checkbox.setAttribute("checked", checked)));
|
|
112
|
+
}
|
|
113
|
+
|
|
107
114
|
export function changeCheckboxOrder(sourceIndex, targetIndex, state) {
|
|
108
115
|
const {checkedState: checkedState, table: table} = state;
|
|
109
116
|
let source, target;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { isArray, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, ListTableAPI } from '../../ts-types';\nimport { getOrApply } from '../../tools/helper';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { CheckBox } from '@visactor/vrender-components';\nimport type { CachedDataSource } from '../../data';\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean,\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (state.checkedState.has(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n}\n\nexport function setHeaderCheckedState(field: string | number, checked: boolean, state: StateManager) {\n state.headerCheckedState[field] = checked;\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\n });\n}\n\n//#region CheckedState 状态维护\n\n/**\n * 创建cell节点时同步状态 如果状态缓存有则用 如果没有则设置缓存\n * @param col\n * @param row\n * @param field\n * @param checked\n * @returns\n */\nexport function syncCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean,\n state: StateManager\n): boolean | 'indeterminate' {\n if (state.table.isHeader(col, row)) {\n if (isValid(state.headerCheckedState[field])) {\n return state.headerCheckedState[field];\n } else if (typeof checked === 'function') {\n return undefined;\n } else if (isValid(checked)) {\n state.headerCheckedState[field] = checked;\n } else if (state.checkedState?.size > 0) {\n const isAllChecked = state.updateHeaderCheckedState(field, col, row);\n return isAllChecked;\n }\n return state.headerCheckedState[field];\n }\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (isValid(state.checkedState.get(dataIndex)?.[field])) {\n return state.checkedState.get(dataIndex)[field];\n }\n if (state.checkedState.has(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n return checked;\n}\n\n/**\n * 初始化check状态\n * @param records\n */\nexport function initCheckedState(records: any[], state: StateManager) {\n // clear checkbox state\n state.checkedState.clear();\n state.headerCheckedState = {};\n state.radioState = {};\n\n let isNeedInitHeaderCheckedStateFromRecord = false;\n state._checkboxCellTypeFields = [];\n state._headerCheckFuncs = {};\n state.table.internalProps.layoutMap.headerObjects.forEach((hd, index) => {\n if (hd.headerType === 'checkbox') {\n const headerChecked = (hd.define as CheckboxColumnDefine).checked as boolean;\n\n if (headerChecked === undefined || headerChecked === null || typeof headerChecked === 'function') {\n // 如果没有明确指定check的状态 则需要在下面遍历所有数据获取到节点状态 确定这个header的check状态\n isNeedInitHeaderCheckedStateFromRecord = true;\n if (typeof headerChecked === 'function') {\n state._headerCheckFuncs[hd.field as string | number] = headerChecked;\n }\n } else {\n state.headerCheckedState[hd.field as string | number] = headerChecked;\n }\n if (hd.define.cellType === 'checkbox' && !hd.fieldFormat) {\n state._checkboxCellTypeFields.push(hd.field as string | number);\n }\n }\n });\n\n // for row series number\n if (state.table.leftRowSeriesNumberCount === 1) {\n state.headerCheckedState._vtable_rowSeries_number = false;\n state._checkboxCellTypeFields.push('_vtable_rowSeries_number');\n isNeedInitHeaderCheckedStateFromRecord = true;\n } else if (state.table.leftRowSeriesNumberCount > 1) {\n for (let i = 0; i < state.table.leftRowSeriesNumberCount; i++) {\n state.headerCheckedState[`_vtable_rowSeries_number_${i}`] = false;\n state._checkboxCellTypeFields.push(`_vtable_rowSeries_number_${i}`);\n }\n isNeedInitHeaderCheckedStateFromRecord = true;\n }\n\n //如果没有明确指定check的状态 遍历所有数据获取到节点状态 确定这个header的check状态\n if (isNeedInitHeaderCheckedStateFromRecord) {\n initRecordCheckState(records, state);\n }\n}\n\n/**\n * 更新header单元checked的状态,依据当前列每一个数据checked的状态。\n * @param field\n * @returns\n */\nexport function updateHeaderCheckedState(\n field: string | number,\n state: StateManager,\n col: number,\n row: number\n): boolean | 'indeterminate' {\n let allChecked = true;\n let allUnChecked = true;\n let hasChecked = false;\n state.checkedState.forEach((check_state: Record<string | number, boolean>, index: string | number | number[]) => {\n if ((index as string).includes(',')) {\n index = (index as string).split(',').map(item => {\n return Number(item);\n }) as number[];\n } else {\n index = Number(index);\n }\n const tableIndex = state.table.getTableIndexByRecordIndex(index as number);\n const mergeCell = (state.table as ListTableAPI).transpose\n ? state.table.getCustomMerge(tableIndex, row)\n : state.table.getCustomMerge(col, tableIndex);\n\n const data = state.table.dataSource?.get(index as number);\n if (mergeCell || data.vtableMerge) {\n // 不参与check状态的计算\n return;\n }\n if (check_state?.[field] !== true) {\n allChecked = false;\n } else {\n allUnChecked = false;\n hasChecked = true;\n }\n });\n\n if (allChecked) {\n state.headerCheckedState[field] = true;\n return allChecked;\n }\n\n if (allUnChecked) {\n state.headerCheckedState[field] = false;\n return false;\n }\n\n if (hasChecked) {\n state.headerCheckedState[field] = 'indeterminate';\n return 'indeterminate'; //半选状态\n }\n return false;\n}\n\n/**\n * setRecords的时候虽然调用了initCheckedState 进行了初始化 但当每个表头的checked状态都用配置了的话 初始化不会遍历全部数据\n * @param records\n */\nexport function initLeftRecordsCheckState(records: any[], state: StateManager) {\n for (let index = state.checkedState.size; index < records.length; index++) {\n const record = records[index];\n state._checkboxCellTypeFields.forEach(field => {\n const value = record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean;\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n const dataIndex = index.toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n\nexport function setCellCheckboxState(col: number, row: number, checked: boolean, table: BaseTableAPI) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox = cellGroup?.getChildByName('checkbox') as any;\n if (!checkbox) {\n // update state\n const field = table.getHeaderField(col, row);\n if (table.isHeader(col, row)) {\n //点击的表头部分的checkbox 需要同时处理表头和body单元格的状态\n table.stateManager.setHeaderCheckedState(field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n table.scenegraph.updateCheckboxCellState(col, row, checked);\n }\n } else {\n //点击的是body单元格的checkbox 处理本单元格的状态维护 同时需要检查表头是否改变状态\n table.stateManager.setCheckedState(col, row, field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n const oldHeaderCheckedState = table.stateManager.headerCheckedState[field];\n const newHeaderCheckedState = table.stateManager.updateHeaderCheckedState(field, col, row);\n if (oldHeaderCheckedState !== newHeaderCheckedState) {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, newHeaderCheckedState);\n }\n }\n }\n return;\n }\n const { checked: oldChecked, indeterminate } = checkbox.attribute;\n\n if (indeterminate) {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n checkbox._handlePointerUp();\n checkbox._handlePointerUp();\n }\n } else if (oldChecked) {\n if (checked) {\n // do nothing\n } else {\n checkbox._handlePointerUp();\n }\n } else {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n // do nothing\n }\n }\n}\n\nexport function changeCheckboxOrder(sourceIndex: number, targetIndex: number, state: StateManager) {\n const { checkedState, table } = state;\n let source;\n let target;\n if (table.internalProps.transpose) {\n sourceIndex = table.getRecordShowIndexByCell(sourceIndex, 0);\n targetIndex = table.getRecordShowIndexByCell(targetIndex, 0);\n } else {\n // sourceIndex = table.getRecordShowIndexByCell(0, sourceIndex);\n // targetIndex = table.getRecordShowIndexByCell(0, targetIndex);\n\n source = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, sourceIndex);\n target = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, targetIndex);\n }\n\n if (isNumber(source) && isNumber(target)) {\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n // checkedState[i] = checkedState[i - 1];\n checkedState.set(i.toString(), checkedState.get((i - 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n // checkedState[i] = checkedState[i + 1];\n checkedState.set(i.toString(), checkedState.get((i + 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n }\n } else if (isArray(source) && isArray(target)) {\n sourceIndex = source[source.length - 1];\n targetIndex = target[target.length - 1];\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n const now = [...source];\n now[now.length - 1] = i;\n const last = [...source];\n last[last.length - 1] = i - 1;\n checkedState.set(now.toString(), checkedState.get(last.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n const now = [...source];\n now[now.length - 1] = i;\n const next = [...source];\n next[next.length - 1] = i + 1;\n checkedState.set(now.toString(), checkedState.get(next.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n }\n }\n}\n\nexport function getGroupCheckboxState(table: BaseTableAPI) {\n const result: any[] = [];\n const dataSource = table.dataSource as CachedDataSource;\n const groupKeyLength = dataSource.dataConfig.groupByRules.length + 1;\n dataSource.currentIndexedData.forEach((indexArr: number, index) => {\n if (isArray(indexArr) && indexArr.length === groupKeyLength) {\n // get record by index\n const { vtableOriginIndex } = (dataSource as any).getRawRecord(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());\n }\n });\n\n return result;\n}\n\nfunction initRecordCheckState(records: any[], state: StateManager) {\n const table = state.table;\n const start = table.isPivotTable()\n ? 0\n : table.internalProps.transpose\n ? table.rowHeaderLevelCount\n : table.columnHeaderLevelCount;\n const end = table.isPivotTable()\n ? isArray(records)\n ? records.length\n : 0\n : table.internalProps.transpose\n ? table.colCount\n : table.rowCount;\n for (let index = 0; index + start < end; index++) {\n const record = table.isPivotTable() ? records[index] : table.dataSource.get(index);\n // eslint-disable-next-line no-loop-func\n state._checkboxCellTypeFields.forEach(field => {\n const value =\n record && (record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean);\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n if (isChecked === undefined || isChecked === null) {\n const headerCheckFunc = state._headerCheckFuncs[field];\n if (headerCheckFunc) {\n //如果定义的checked是个函数 则需要每个都去计算这个值\n const cellAddr = state.table.getCellAddrByFieldRecord(field, index);\n const globalChecked = getOrApply(headerCheckFunc as any, {\n col: cellAddr.col,\n row: cellAddr.row,\n table: state.table,\n context: null,\n value\n });\n isChecked = globalChecked;\n }\n }\n const dataIndex = table.isPivotTable() ? index.toString() : state.table.dataSource.getIndexKey(index).toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/state/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { isArray, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, ListTableAPI } from '../../ts-types';\nimport { getOrApply } from '../../tools/helper';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { CachedDataSource } from '../../data';\nimport type { CheckBox } from './../../vrender';\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean | 'indeterminate',\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (state.checkedState.has(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n}\n\nexport function setHeaderCheckedState(field: string | number, checked: boolean | 'indeterminate', state: StateManager) {\n state.headerCheckedState[field] = checked;\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\n });\n}\n\n//#region CheckedState 状态维护\n\n/**\n * 创建cell节点时同步状态 如果状态缓存有则用 如果没有则设置缓存\n * @param col\n * @param row\n * @param field\n * @param checked\n * @returns\n */\nexport function syncCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean,\n state: StateManager\n): boolean | 'indeterminate' {\n if (state.table.isHeader(col, row)) {\n if (isValid(state.headerCheckedState[field])) {\n return state.headerCheckedState[field];\n } else if (typeof checked === 'function') {\n return undefined;\n } else if (isValid(checked)) {\n state.headerCheckedState[field] = checked;\n } else if (state.checkedState?.size > 0) {\n const isAllChecked = state.updateHeaderCheckedState(field, col, row);\n return isAllChecked;\n }\n return state.headerCheckedState[field];\n }\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex).toString();\n if (isValid(state.checkedState.get(dataIndex)?.[field])) {\n return state.checkedState.get(dataIndex)[field];\n }\n if (state.checkedState.has(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\n }\n return checked;\n}\n\n/**\n * 初始化check状态\n * @param records\n */\nexport function initCheckedState(records: any[], state: StateManager) {\n // clear checkbox state\n state.checkedState.clear();\n state.headerCheckedState = {};\n state.radioState = {};\n\n let isNeedInitHeaderCheckedStateFromRecord = false;\n state._checkboxCellTypeFields = [];\n state._headerCheckFuncs = {};\n state.table.internalProps.layoutMap.headerObjects.forEach((hd, index) => {\n if (hd.headerType === 'checkbox') {\n const headerChecked = (hd.define as CheckboxColumnDefine).checked as boolean;\n\n if (headerChecked === undefined || headerChecked === null || typeof headerChecked === 'function') {\n // 如果没有明确指定check的状态 则需要在下面遍历所有数据获取到节点状态 确定这个header的check状态\n isNeedInitHeaderCheckedStateFromRecord = true;\n if (typeof headerChecked === 'function') {\n state._headerCheckFuncs[hd.field as string | number] = headerChecked;\n }\n } else {\n state.headerCheckedState[hd.field as string | number] = headerChecked;\n }\n if (hd.define.cellType === 'checkbox' && !hd.fieldFormat) {\n state._checkboxCellTypeFields.push(hd.field as string | number);\n }\n }\n });\n\n // for row series number\n if (state.table.leftRowSeriesNumberCount === 1) {\n state.headerCheckedState._vtable_rowSeries_number = false;\n state._checkboxCellTypeFields.push('_vtable_rowSeries_number');\n isNeedInitHeaderCheckedStateFromRecord = true;\n } else if (state.table.leftRowSeriesNumberCount > 1) {\n for (let i = 0; i < state.table.leftRowSeriesNumberCount; i++) {\n state.headerCheckedState[`_vtable_rowSeries_number_${i}`] = false;\n state._checkboxCellTypeFields.push(`_vtable_rowSeries_number_${i}`);\n }\n isNeedInitHeaderCheckedStateFromRecord = true;\n }\n\n //如果没有明确指定check的状态 遍历所有数据获取到节点状态 确定这个header的check状态\n if (isNeedInitHeaderCheckedStateFromRecord) {\n initRecordCheckState(records, state);\n }\n}\n\n/**\n * 更新header单元checked的状态,依据当前列每一个数据checked的状态。\n * @param field\n * @returns\n */\nexport function updateHeaderCheckedState(\n field: string | number,\n state: StateManager,\n col: number,\n row: number\n): boolean | 'indeterminate' {\n let allChecked = true;\n let allUnChecked = true;\n let hasChecked = false;\n state.checkedState.forEach((check_state: Record<string | number, boolean>, index: string | number | number[]) => {\n if ((index as string).includes(',')) {\n index = (index as string).split(',').map(item => {\n return Number(item);\n }) as number[];\n } else {\n index = Number(index);\n }\n const tableIndex = state.table.getTableIndexByRecordIndex(index as number);\n const mergeCell = (state.table as ListTableAPI).transpose\n ? state.table.getCustomMerge(tableIndex, row)\n : state.table.getCustomMerge(col, tableIndex);\n\n const data = state.table.dataSource?.get(index as number);\n if (mergeCell || (!state.table.internalProps.rowSeriesNumber?.enableTreeCheckbox && data.vtableMerge)) {\n // 不参与check状态的计算\n return;\n }\n if (check_state?.[field] !== true) {\n allChecked = false;\n } else {\n allUnChecked = false;\n hasChecked = true;\n }\n });\n\n if (allChecked) {\n state.headerCheckedState[field] = true;\n return allChecked;\n }\n\n if (allUnChecked) {\n state.headerCheckedState[field] = false;\n return false;\n }\n\n if (hasChecked) {\n state.headerCheckedState[field] = 'indeterminate';\n return 'indeterminate'; //半选状态\n }\n return false;\n}\n\n/**\n * setRecords的时候虽然调用了initCheckedState 进行了初始化 但当每个表头的checked状态都用配置了的话 初始化不会遍历全部数据\n * @param records\n */\nexport function initLeftRecordsCheckState(records: any[], state: StateManager) {\n for (let index = state.checkedState.size; index < records.length; index++) {\n const record = records[index];\n state._checkboxCellTypeFields.forEach(field => {\n const value = record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean;\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n const dataIndex = index.toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n\nexport function setCellCheckboxState(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox = cellGroup?.getChildByName('checkbox') as any;\n if (!checkbox) {\n // update state\n const field = table.getHeaderField(col, row);\n if (table.isHeader(col, row)) {\n //点击的表头部分的checkbox 需要同时处理表头和body单元格的状态\n table.stateManager.setHeaderCheckedState(field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n table.scenegraph.updateCheckboxCellState(col, row, checked);\n }\n } else {\n //点击的是body单元格的checkbox 处理本单元格的状态维护 同时需要检查表头是否改变状态\n table.stateManager.setCheckedState(col, row, field, checked);\n const cellType = table.getCellType(col, row);\n if (cellType === 'checkbox') {\n const oldHeaderCheckedState = table.stateManager.headerCheckedState[field];\n const newHeaderCheckedState = table.stateManager.updateHeaderCheckedState(field, col, row);\n if (oldHeaderCheckedState !== newHeaderCheckedState) {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, newHeaderCheckedState);\n }\n }\n }\n return;\n }\n const { checked: oldChecked, indeterminate } = checkbox.attribute;\n\n if (indeterminate) {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n checkbox._handlePointerUp();\n checkbox._handlePointerUp();\n }\n } else if (oldChecked) {\n if (checked) {\n // do nothing\n } else {\n checkbox._handlePointerUp();\n }\n } else {\n if (checked) {\n checkbox._handlePointerUp();\n } else {\n // do nothing\n }\n }\n}\n\nexport function setCellCheckboxStateByAttribute(\n col: number,\n row: number,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const cellGroup = table.scenegraph.getCell(col, row);\n const checkbox = cellGroup?.getChildByName('checkbox') as any;\n if (checkbox) {\n if (checked === 'indeterminate') {\n (checkbox as CheckBox).setAttribute('indeterminate', true);\n (checkbox as CheckBox).setAttribute('checked', undefined);\n } else {\n (checkbox as CheckBox).setAttribute('indeterminate', undefined);\n (checkbox as CheckBox).setAttribute('checked', checked);\n }\n }\n}\n\nexport function changeCheckboxOrder(sourceIndex: number, targetIndex: number, state: StateManager) {\n const { checkedState, table } = state;\n let source;\n let target;\n if (table.internalProps.transpose) {\n sourceIndex = table.getRecordShowIndexByCell(sourceIndex, 0);\n targetIndex = table.getRecordShowIndexByCell(targetIndex, 0);\n } else {\n // sourceIndex = table.getRecordShowIndexByCell(0, sourceIndex);\n // targetIndex = table.getRecordShowIndexByCell(0, targetIndex);\n\n source = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, sourceIndex);\n target = table.isPivotTable() ? undefined : (table as any).getRecordIndexByCell(0, targetIndex);\n }\n\n if (isNumber(source) && isNumber(target)) {\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n // checkedState[i] = checkedState[i - 1];\n checkedState.set(i.toString(), checkedState.get((i - 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(sourceIndex.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n // checkedState[i] = checkedState[i + 1];\n checkedState.set(i.toString(), checkedState.get((i + 1).toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(targetIndex.toString(), sourceRecord);\n }\n } else if (isArray(source) && isArray(target)) {\n sourceIndex = source[source.length - 1];\n targetIndex = target[target.length - 1];\n if (sourceIndex > targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i > targetIndex; i--) {\n const now = [...source];\n now[now.length - 1] = i;\n const last = [...source];\n last[last.length - 1] = i - 1;\n checkedState.set(now.toString(), checkedState.get(last.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = checkedState.get(source.toString());\n for (let i = sourceIndex; i < targetIndex; i++) {\n const now = [...source];\n now[now.length - 1] = i;\n const next = [...source];\n next[next.length - 1] = i + 1;\n checkedState.set(now.toString(), checkedState.get(next.toString()));\n }\n // checkedState[targetIndex] = sourceRecord;\n checkedState.set(target.toString(), sourceRecord);\n }\n }\n}\n\nexport function getGroupCheckboxState(table: BaseTableAPI) {\n const result: any[] = [];\n const dataSource = table.dataSource as CachedDataSource;\n const groupKeyLength = dataSource.dataConfig.groupByRules.length + 1;\n dataSource.currentIndexedData.forEach((indexArr: number, index) => {\n if (isArray(indexArr) && indexArr.length === groupKeyLength) {\n // get record by index\n const { vtableOriginIndex } = (dataSource as any).getRawRecord(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());\n }\n });\n\n return result;\n}\n\nfunction initRecordCheckState(records: any[], state: StateManager) {\n const table = state.table;\n const start = table.isPivotTable()\n ? 0\n : table.internalProps.transpose\n ? table.rowHeaderLevelCount\n : table.columnHeaderLevelCount;\n const end = table.isPivotTable()\n ? isArray(records)\n ? records.length\n : 0\n : table.internalProps.transpose\n ? table.colCount\n : table.rowCount;\n for (let index = 0; index + start < end; index++) {\n const record = table.isPivotTable() ? records[index] : table.dataSource.get(index);\n // eslint-disable-next-line no-loop-func\n state._checkboxCellTypeFields.forEach(field => {\n const value =\n record && (record[field] as string | { text: string; checked: boolean; disable: boolean } | boolean);\n let isChecked;\n if (isObject(value)) {\n isChecked = value.checked;\n } else if (typeof value === 'boolean') {\n isChecked = value;\n }\n if (isChecked === undefined || isChecked === null) {\n const headerCheckFunc = state._headerCheckFuncs[field];\n if (headerCheckFunc) {\n //如果定义的checked是个函数 则需要每个都去计算这个值\n const cellAddr = state.table.getCellAddrByFieldRecord(field, index);\n const globalChecked = getOrApply(headerCheckFunc as any, {\n col: cellAddr.col,\n row: cellAddr.row,\n table: state.table,\n context: null,\n value\n });\n isChecked = globalChecked;\n }\n }\n const dataIndex = table.isPivotTable() ? index.toString() : state.table.dataSource.getIndexKey(index).toString();\n if (!state.checkedState.get(dataIndex)) {\n state.checkedState.set(dataIndex, {});\n }\n state.checkedState.get(dataIndex)[field] = isChecked;\n });\n }\n}\n"]}
|
package/es/state/state.d.ts
CHANGED
|
@@ -124,7 +124,7 @@ export declare class StateManager {
|
|
|
124
124
|
_clearVerticalScrollBar: any;
|
|
125
125
|
_clearHorizontalScrollBar: any;
|
|
126
126
|
fastScrolling: boolean;
|
|
127
|
-
checkedState: Map<string | number, Record<string | number, boolean>>;
|
|
127
|
+
checkedState: Map<string | number, Record<string | number, boolean | 'indeterminate'>>;
|
|
128
128
|
headerCheckedState: Record<string | number, boolean | 'indeterminate'>;
|
|
129
129
|
_checkboxCellTypeFields: (string | number)[];
|
|
130
130
|
_headerCheckFuncs: Record<string | number, Function>;
|
|
@@ -188,8 +188,8 @@ export declare class StateManager {
|
|
|
188
188
|
updateCursor(mode?: string): void;
|
|
189
189
|
updateDrillState(dimensionKey: string, title: string, drillDown: boolean, drillUp: boolean, col: number, row: number): void;
|
|
190
190
|
updateSparklineHoverPose(col: number, row: number, x: number, y: number): void;
|
|
191
|
-
setCheckedState(col: number, row: number, field: string | number, checked: boolean): void;
|
|
192
|
-
setHeaderCheckedState(field: string | number, checked: boolean): void;
|
|
191
|
+
setCheckedState(col: number, row: number, field: string | number, checked: boolean | 'indeterminate'): void;
|
|
192
|
+
setHeaderCheckedState(field: string | number, checked: boolean | 'indeterminate'): void;
|
|
193
193
|
syncCheckedState(col: number, row: number, field: string | number, checked: boolean): boolean | 'indeterminate';
|
|
194
194
|
initCheckedState(records: any[]): void;
|
|
195
195
|
updateHeaderCheckedState(field: string | number, col: number, row: number): boolean | 'indeterminate';
|