@visactor/vtable 1.26.6 → 1.26.7
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-all.js +5 -5
- package/cjs/ListTable-all.js.map +1 -1
- package/cjs/ListTable.d.ts +1 -1
- package/cjs/ListTable.js +5 -3
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotChart.js +5 -4
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/PivotTable-all.js +4 -3
- package/cjs/PivotTable-all.js.map +1 -1
- package/cjs/body-helper/body-helper.d.ts +1 -1
- package/cjs/body-helper/body-helper.js +1 -0
- package/cjs/body-helper/body-helper.js.map +1 -1
- package/cjs/components/tooltip/TooltipHandler.d.ts +4 -0
- package/cjs/components/tooltip/TooltipHandler.js +32 -7
- package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
- package/cjs/core/BaseTable.js +7 -4
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/TABLE_EVENT_TYPE.d.ts +1 -0
- package/cjs/core/TABLE_EVENT_TYPE.js +1 -0
- package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/cjs/core/tableHelper.js +1 -2
- package/cjs/data/DataSource.js +2 -1
- package/cjs/event/event.js +1 -1
- package/cjs/event/helper.js +1 -1
- package/cjs/event/media-click.js +145 -13
- package/cjs/event/media-click.js.map +1 -1
- package/cjs/event/scroll.js +1 -1
- package/cjs/event/sparkline-event.js +1 -1
- package/cjs/event/util.js +1 -1
- package/cjs/header-helper/header-helper.js +3 -1
- package/cjs/header-helper/header-helper.js.map +1 -1
- package/cjs/index.d.ts +3 -3
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/plugins/custom-cell-style.js +1 -1
- package/cjs/plugins/index.js +1 -2
- package/cjs/plugins/interface.js +1 -1
- package/cjs/plugins/invert-highlight.js +1 -1
- package/cjs/plugins/list-tree-stick-cell.js +1 -1
- package/cjs/plugins/plugin-manager.js +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.d.ts +4 -2
- package/cjs/scenegraph/group-creater/cell-helper.js +67 -42
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/audio-cell.d.ts +7 -0
- package/cjs/scenegraph/group-creater/cell-type/audio-cell.js +83 -0
- package/cjs/scenegraph/group-creater/cell-type/audio-cell.js.map +1 -0
- package/cjs/scenegraph/group-creater/cell-type/button-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/button-cell.js +5 -4
- package/cjs/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js +5 -4
- package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/image-cell.js +43 -15
- package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/index.d.ts +1 -0
- package/cjs/scenegraph/group-creater/cell-type/index.js +8 -2
- package/cjs/scenegraph/group-creater/cell-type/index.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/media-cell-helper.d.ts +13 -0
- package/cjs/scenegraph/group-creater/cell-type/media-cell-helper.js +64 -0
- package/cjs/scenegraph/group-creater/cell-type/media-cell-helper.js.map +1 -0
- package/cjs/scenegraph/group-creater/cell-type/radio-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/radio-cell.js +23 -7
- package/cjs/scenegraph/group-creater/cell-type/radio-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +6 -5
- package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/switch-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/switch-cell.js +5 -4
- package/cjs/scenegraph/group-creater/cell-type/switch-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/video-cell.js +44 -23
- package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/column-helper.js +14 -7
- package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/proxy.d.ts +1 -0
- package/cjs/scenegraph/group-creater/progress/proxy.js +11 -5
- package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/cjs/scenegraph/icon/icon-update.js +1 -0
- package/cjs/scenegraph/icon/icon-update.js.map +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js +8 -3
- package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
- package/cjs/scenegraph/layout/compute-row-height.js +18 -5
- package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
- package/cjs/scenegraph/layout/update-height.js +1 -1
- package/cjs/scenegraph/layout/update-height.js.map +1 -1
- package/cjs/scenegraph/layout/update-width.js +1 -1
- package/cjs/scenegraph/layout/update-width.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +1 -0
- package/cjs/scenegraph/scenegraph.js +53 -46
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/scenegraph/stick-text/index.js +46 -20
- package/cjs/scenegraph/stick-text/index.js.map +1 -1
- package/cjs/scenegraph/utils/deal-promise-data.d.ts +1 -1
- package/cjs/scenegraph/utils/deal-promise-data.js +2 -2
- package/cjs/scenegraph/utils/deal-promise-data.js.map +1 -1
- package/cjs/state/cell-move/index.js +6 -3
- package/cjs/state/cell-move/index.js.map +1 -1
- package/cjs/state/checkbox/checkbox.d.ts +3 -1
- package/cjs/state/checkbox/checkbox.js +53 -34
- package/cjs/state/checkbox/checkbox.js.map +1 -1
- package/cjs/state/radio/radio.d.ts +3 -1
- package/cjs/state/radio/radio.js +69 -12
- package/cjs/state/radio/radio.js.map +1 -1
- package/cjs/state/state.d.ts +3 -2
- package/cjs/state/state.js +6 -3
- package/cjs/state/state.js.map +1 -1
- package/cjs/tools/media.d.ts +1 -0
- package/cjs/tools/media.js +19 -0
- package/cjs/tools/media.js.map +1 -0
- package/cjs/ts-types/base-table.d.ts +1 -0
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/column/type.d.ts +2 -2
- package/cjs/ts-types/column/type.js.map +1 -1
- package/cjs/ts-types/events.d.ts +3 -1
- package/cjs/ts-types/events.js.map +1 -1
- package/cjs/ts-types/icon.d.ts +1 -0
- package/cjs/ts-types/icon.js.map +1 -1
- package/cjs/ts-types/list-table/define/image-define.d.ts +10 -0
- package/cjs/ts-types/list-table/define/image-define.js.map +1 -1
- package/cjs/ts-types/list-table/define/index.d.ts +5 -4
- package/cjs/ts-types/list-table/define/index.js.map +1 -1
- package/cjs/ts-types/list-table/layout-map/api.d.ts +4 -4
- package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
- package/cjs/ts-types/list-table/layout-map/index.d.ts +1 -1
- package/cjs/ts-types/list-table/layout-map/index.js.map +1 -1
- package/cjs/ts-types/menu.d.ts +12 -0
- package/cjs/ts-types/menu.js.map +1 -1
- package/cjs/ts-types/pivot-table/dimension/image-dimension.d.ts +5 -0
- package/cjs/ts-types/pivot-table/dimension/image-dimension.js.map +1 -1
- package/cjs/ts-types/pivot-table/dimension/index.d.ts +5 -3
- package/cjs/ts-types/pivot-table/dimension/index.js.map +1 -1
- package/cjs/ts-types/pivot-table/indicator/image-indicator.d.ts +10 -0
- package/cjs/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
- package/cjs/ts-types/pivot-table/indicator/index.d.ts +3 -3
- package/cjs/ts-types/pivot-table/indicator/index.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +6 -3
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/ts-types/tooltip.d.ts +1 -0
- package/cjs/ts-types/tooltip.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +1127 -325
- package/dist/vtable.min.js +1 -1
- package/es/ListTable-all.js +4 -4
- package/es/ListTable-all.js.map +1 -1
- package/es/ListTable.d.ts +1 -1
- package/es/ListTable.js +5 -3
- package/es/ListTable.js.map +1 -1
- package/es/PivotChart.js +4 -4
- package/es/PivotChart.js.map +1 -1
- package/es/PivotTable-all.js +4 -4
- package/es/PivotTable-all.js.map +1 -1
- package/es/body-helper/body-helper.d.ts +1 -1
- package/es/body-helper/body-helper.js +1 -0
- package/es/body-helper/body-helper.js.map +1 -1
- package/es/components/tooltip/TooltipHandler.d.ts +4 -0
- package/es/components/tooltip/TooltipHandler.js +32 -7
- package/es/components/tooltip/TooltipHandler.js.map +1 -1
- package/es/core/BaseTable.js +7 -4
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/TABLE_EVENT_TYPE.d.ts +1 -0
- package/es/core/TABLE_EVENT_TYPE.js +1 -0
- package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/es/core/tableHelper.js +1 -2
- package/es/data/DataSource.js +2 -1
- package/es/event/event.js +1 -1
- package/es/event/helper.js +1 -1
- package/es/event/media-click.js +148 -12
- package/es/event/media-click.js.map +1 -1
- package/es/event/scroll.js +1 -1
- package/es/event/sparkline-event.js +1 -1
- package/es/event/util.js +1 -1
- package/es/header-helper/header-helper.js +3 -1
- package/es/header-helper/header-helper.js.map +1 -1
- package/es/index.d.ts +3 -3
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/plugins/custom-cell-style.js +1 -1
- package/es/plugins/index.js +1 -2
- package/es/plugins/interface.js +1 -1
- package/es/plugins/invert-highlight.js +1 -1
- package/es/plugins/list-tree-stick-cell.js +1 -1
- package/es/plugins/plugin-manager.js +1 -1
- package/es/scenegraph/group-creater/cell-helper.d.ts +4 -2
- package/es/scenegraph/group-creater/cell-helper.js +67 -40
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/audio-cell.d.ts +7 -0
- package/es/scenegraph/group-creater/cell-type/audio-cell.js +89 -0
- package/es/scenegraph/group-creater/cell-type/audio-cell.js.map +1 -0
- package/es/scenegraph/group-creater/cell-type/button-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/button-cell.js +5 -4
- package/es/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
- package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/checkbox-cell.js +5 -4
- package/es/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/image-cell.js +43 -14
- package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/index.d.ts +1 -0
- package/es/scenegraph/group-creater/cell-type/index.js +6 -0
- package/es/scenegraph/group-creater/cell-type/index.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/media-cell-helper.d.ts +13 -0
- package/es/scenegraph/group-creater/cell-type/media-cell-helper.js +56 -0
- package/es/scenegraph/group-creater/cell-type/media-cell-helper.js.map +1 -0
- package/es/scenegraph/group-creater/cell-type/radio-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/radio-cell.js +23 -7
- package/es/scenegraph/group-creater/cell-type/radio-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +6 -5
- package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/switch-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/switch-cell.js +5 -4
- package/es/scenegraph/group-creater/cell-type/switch-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/video-cell.js +47 -22
- package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
- package/es/scenegraph/group-creater/column-helper.js +14 -8
- package/es/scenegraph/group-creater/column-helper.js.map +1 -1
- package/es/scenegraph/group-creater/progress/proxy.d.ts +1 -0
- package/es/scenegraph/group-creater/progress/proxy.js +11 -5
- package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/es/scenegraph/icon/icon-update.js +1 -0
- package/es/scenegraph/icon/icon-update.js.map +1 -1
- package/es/scenegraph/layout/compute-col-width.js +8 -3
- package/es/scenegraph/layout/compute-col-width.js.map +1 -1
- package/es/scenegraph/layout/compute-row-height.js +17 -5
- package/es/scenegraph/layout/compute-row-height.js.map +1 -1
- package/es/scenegraph/layout/update-height.js +1 -1
- package/es/scenegraph/layout/update-height.js.map +1 -1
- package/es/scenegraph/layout/update-width.js +1 -1
- package/es/scenegraph/layout/update-width.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +1 -0
- package/es/scenegraph/scenegraph.js +53 -46
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/scenegraph/stick-text/index.js +46 -18
- package/es/scenegraph/stick-text/index.js.map +1 -1
- package/es/scenegraph/utils/deal-promise-data.d.ts +1 -1
- package/es/scenegraph/utils/deal-promise-data.js +2 -2
- package/es/scenegraph/utils/deal-promise-data.js.map +1 -1
- package/es/state/cell-move/index.js +6 -3
- package/es/state/cell-move/index.js.map +1 -1
- package/es/state/checkbox/checkbox.d.ts +3 -1
- package/es/state/checkbox/checkbox.js +53 -34
- package/es/state/checkbox/checkbox.js.map +1 -1
- package/es/state/radio/radio.d.ts +3 -1
- package/es/state/radio/radio.js +70 -13
- package/es/state/radio/radio.js.map +1 -1
- package/es/state/state.d.ts +3 -2
- package/es/state/state.js +6 -2
- package/es/state/state.js.map +1 -1
- package/es/tools/media.d.ts +1 -0
- package/es/tools/media.js +11 -0
- package/es/tools/media.js.map +1 -0
- package/es/ts-types/base-table.d.ts +1 -0
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/column/type.d.ts +2 -2
- package/es/ts-types/column/type.js.map +1 -1
- package/es/ts-types/events.d.ts +3 -1
- package/es/ts-types/events.js.map +1 -1
- package/es/ts-types/icon.d.ts +1 -0
- package/es/ts-types/icon.js.map +1 -1
- package/es/ts-types/list-table/define/image-define.d.ts +10 -0
- package/es/ts-types/list-table/define/image-define.js.map +1 -1
- package/es/ts-types/list-table/define/index.d.ts +5 -4
- package/es/ts-types/list-table/define/index.js.map +1 -1
- package/es/ts-types/list-table/layout-map/api.d.ts +4 -4
- package/es/ts-types/list-table/layout-map/api.js.map +1 -1
- package/es/ts-types/list-table/layout-map/index.d.ts +1 -1
- package/es/ts-types/list-table/layout-map/index.js.map +1 -1
- package/es/ts-types/menu.d.ts +12 -0
- package/es/ts-types/menu.js.map +1 -1
- package/es/ts-types/pivot-table/dimension/image-dimension.d.ts +5 -0
- package/es/ts-types/pivot-table/dimension/image-dimension.js.map +1 -1
- package/es/ts-types/pivot-table/dimension/index.d.ts +5 -3
- package/es/ts-types/pivot-table/dimension/index.js.map +1 -1
- package/es/ts-types/pivot-table/indicator/image-indicator.d.ts +10 -0
- package/es/ts-types/pivot-table/indicator/image-indicator.js.map +1 -1
- package/es/ts-types/pivot-table/indicator/index.d.ts +3 -3
- package/es/ts-types/pivot-table/indicator/index.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +6 -3
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/ts-types/tooltip.d.ts +1 -0
- package/es/ts-types/tooltip.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { isArray, isFunction, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, FieldDef, 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\ntype CheckboxStateValue = boolean | 'indeterminate';\ntype CheckboxRecordValue = CheckboxStateValue | { checked?: CheckboxStateValue };\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean | 'indeterminate',\n state: StateManager\n) {\n const table = state.table;\n const cellRange = table.getCellRange(col, row);\n if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {\n for (let i = cellRange.start.col; i <= cellRange.end.col; i++) {\n for (let j = cellRange.start.row; j <= cellRange.end.row; j++) {\n setSingleCheckedState(i, j, field, checked, state);\n }\n }\n } else {\n setSingleCheckedState(col, row, field, checked, state);\n }\n}\n\nfunction setSingleCheckedState(\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.get(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 if (state.table.internalProps.enableCheckboxCascade) {\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\n });\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.get(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else if (state.table.internalProps.enableCheckboxCascade && dataIndex.includes(',')) {\n // child record, sync parent record state\n const parentDataIndex = dataIndex.split(',').slice(0, -1).join(','); // get latest parent data index\n if (state.checkedState.has(parentDataIndex) && state.checkedState.get(parentDataIndex)[field] === true) {\n state.checkedState.set(dataIndex, {\n [field]: true\n });\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\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' || isFunction(hd.define.cellType)) && !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.enableCheckboxCascade && 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 =\n (cellGroup?.getChildByName('checkbox') as any) ||\n (cellGroup?.getChildByName('checkbox-content')?._checkboxGroup?.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 setCheckboxStateByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n setRecordCheckboxState(recordIndex, field, checked, table.stateManager.checkedState);\n\n if (table.internalProps.enableCheckboxCascade && checked !== 'indeterminate') {\n updateChildrenCheckboxStateByRecordIndex(recordIndex, field, checked, table);\n updateParentCheckboxStateByRecordIndex(recordIndex, field, table);\n }\n\n updateVisibleCheckboxCellByRecordIndex(recordIndex, field, checked, table);\n updateHeaderCheckboxStateByField(field, table);\n renderCheckboxStateUpdate(table);\n}\n\nexport function clearCheckboxState(field: FieldDef, table: BaseTableAPI) {\n if (!isValid(field)) {\n return;\n }\n clearRecordCheckboxState((table as any).records, field, table);\n updateVisibleCheckboxCellsByField(field, false, table);\n updateHeaderCheckboxStateByField(field, table);\n renderCheckboxStateUpdate(table);\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 =\n (cellGroup?.getChildByName('checkbox') as any) ||\n (cellGroup?.getChildByName('checkbox-content')?._checkboxGroup?.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 sourceIndex = source;\n targetIndex = 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 CachedDataSource).getOriginRecordIndexForGroup(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());\n }\n });\n\n return result;\n}\n\nfunction normalizeRecordIndex(recordIndex: number | number[]): number | number[] {\n if (isArray(recordIndex) && recordIndex.length === 1) {\n return recordIndex[0];\n }\n return recordIndex;\n}\n\nfunction setRecordCheckboxState(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n checkedState: Map<string | number, any>\n) {\n const dataIndex = normalizeRecordIndex(recordIndex).toString();\n if (checkedState.get(dataIndex)) {\n checkedState.get(dataIndex)[field as string | number] = checked;\n } else {\n checkedState.set(dataIndex, {\n [field as string | number]: checked\n });\n }\n}\n\nfunction clearRecordCheckboxState(records: any[], field: FieldDef, table: BaseTableAPI, parentIndex: number[] = []) {\n if (!isArray(records)) {\n return;\n }\n\n records.forEach((record, index) => {\n const recordIndex = parentIndex.length ? parentIndex.concat(index) : [index];\n const currentState = getRecordCheckboxState(recordIndex, record, field, table);\n if (currentState !== false) {\n setRecordCheckboxState(recordIndex, field, false, table.stateManager.checkedState);\n }\n\n if (isArray(record?.children)) {\n clearRecordCheckboxState(record.children, field, table, recordIndex);\n }\n });\n}\n\nfunction updateVisibleCheckboxCellByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const bodyRowIndex = (table as ListTableAPI).getBodyRowIndexByRecordIndex?.(recordIndex);\n if (!isNumber(bodyRowIndex) || bodyRowIndex < 0) {\n return;\n }\n\n const row = bodyRowIndex + table.columnHeaderLevelCount;\n const cols = getCheckboxColsByField(field, row, table);\n cols.forEach(col => {\n setCellCheckboxStateByAttribute(col, row, checked, table);\n });\n}\n\nfunction updateVisibleCheckboxCellsByField(field: FieldDef, checked: boolean | 'indeterminate', table: BaseTableAPI) {\n const bodyStartRow = table.columnHeaderLevelCount;\n const cols = getCheckboxColsByField(field, bodyStartRow, table);\n for (let row = table.columnHeaderLevelCount; row < table.rowCount; row++) {\n cols.forEach(col => {\n setCellCheckboxStateByAttribute(col, row, checked, table);\n });\n }\n}\n\nfunction renderCheckboxStateUpdate(table: BaseTableAPI) {\n const renderAsync = (table as any).renderAsync;\n if (isFunction(renderAsync)) {\n renderAsync.call(table);\n } else {\n table.render();\n }\n}\n\nfunction updateHeaderCheckboxStateByField(field: FieldDef, table: BaseTableAPI) {\n const fieldKey = field as string | number;\n let hasChecked = false;\n let hasUnchecked = false;\n let hasRecord = false;\n\n traverseRecords((table as any).records, (record, recordIndex) => {\n const state = getRecordCheckboxState(recordIndex, record, field, table);\n hasRecord = true;\n if (state === true) {\n hasChecked = true;\n } else if (state === 'indeterminate') {\n hasChecked = true;\n hasUnchecked = true;\n } else {\n hasUnchecked = true;\n }\n });\n\n const checked = hasRecord && hasChecked && !hasUnchecked ? true : hasChecked ? 'indeterminate' : false;\n table.stateManager.headerCheckedState[fieldKey] = checked;\n updateVisibleHeaderCheckboxCellByField(field, checked, table);\n}\n\nfunction updateVisibleHeaderCheckboxCellByField(\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n for (let row = 0; row < table.columnHeaderLevelCount; row++) {\n for (let col = 0; col < table.colCount; col++) {\n if (table.getHeaderField(col, row) === field && table.getCellType(col, row) === 'checkbox') {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, checked);\n }\n }\n }\n}\n\nfunction getCheckboxColsByField(field: FieldDef, row: number, table: BaseTableAPI): number[] {\n const cols: number[] = [];\n for (let col = 0; col < table.colCount; col++) {\n if (table.isHeader(col, row)) {\n continue;\n }\n const define = table.getBodyColumnDefine(col, row);\n if (define?.field === field && table.getCellType(col, row) === 'checkbox') {\n cols.push(col);\n }\n }\n return cols;\n}\n\nfunction updateChildrenCheckboxStateByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean,\n table: BaseTableAPI\n) {\n const record = getRecordByRecordIndex((table as any).records, recordIndex);\n if (!record?.children?.length) {\n return;\n }\n\n record.children.forEach((child: any, childIndex: number) => {\n const childRecordIndex = normalizeRecordIndexToArray(recordIndex).concat(childIndex);\n setRecordCheckboxState(childRecordIndex, field, checked, table.stateManager.checkedState);\n updateVisibleCheckboxCellByRecordIndex(childRecordIndex, field, checked, table);\n updateChildrenCheckboxStateByRecordIndex(childRecordIndex, field, checked, table);\n });\n}\n\nfunction updateParentCheckboxStateByRecordIndex(recordIndex: number | number[], field: FieldDef, table: BaseTableAPI) {\n const recordIndexPath = normalizeRecordIndexToArray(recordIndex);\n for (let level = recordIndexPath.length - 1; level > 0; level--) {\n const parentIndex = recordIndexPath.slice(0, level);\n const parentRecord = getRecordByRecordIndex((table as any).records, parentIndex);\n if (!parentRecord?.children?.length) {\n continue;\n }\n\n const childStates: CheckboxStateValue[] = parentRecord.children.map((child: any, childIndex: number) => {\n const childRecordIndex = parentIndex.concat(childIndex);\n const childState = getRecordCheckboxState(childRecordIndex, child, field, table);\n setRecordCheckboxState(childRecordIndex, field, childState, table.stateManager.checkedState);\n return childState;\n });\n const allChecked = childStates.every(state => state === true);\n const allUnchecked = childStates.every(state => state !== true && state !== 'indeterminate');\n const parentState = allChecked ? true : allUnchecked ? false : 'indeterminate';\n setRecordCheckboxState(parentIndex, field, parentState, table.stateManager.checkedState);\n updateVisibleCheckboxCellByRecordIndex(parentIndex, field, parentState, table);\n }\n}\n\nfunction getRecordCheckboxState(\n recordIndex: number | number[],\n record: any,\n field: FieldDef,\n table: BaseTableAPI\n): CheckboxStateValue {\n const fieldKey = field as string | number;\n const dataIndex = normalizeRecordIndex(recordIndex).toString();\n const cachedState = table.stateManager.checkedState.get(dataIndex)?.[fieldKey];\n if (isValid(cachedState)) {\n return cachedState;\n }\n\n const value = record?.[fieldKey] as CheckboxRecordValue | undefined;\n if (isObject(value) && isValid((value as { checked?: CheckboxStateValue }).checked)) {\n return (value as { checked?: CheckboxStateValue }).checked;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n return false;\n}\n\nfunction getRecordByRecordIndex(records: any[], recordIndex: number | number[]): any {\n const recordIndexPath = normalizeRecordIndexToArray(recordIndex);\n let currentRecords = records;\n let record;\n for (let i = 0; i < recordIndexPath.length; i++) {\n record = currentRecords?.[recordIndexPath[i]];\n currentRecords = record?.children;\n }\n return record;\n}\n\nfunction normalizeRecordIndexToArray(recordIndex: number | number[]): number[] {\n return isArray(recordIndex) ? recordIndex : [recordIndex];\n}\n\nfunction traverseRecords(\n records: any[],\n handler: (record: any, recordIndex: number | number[]) => void,\n parentIndex: number[] = []\n) {\n if (!isArray(records)) {\n return;\n }\n\n records.forEach((record, index) => {\n const recordIndex = parentIndex.length ? parentIndex.concat(index) : index;\n handler(record, recordIndex);\n if (isArray(record?.children)) {\n traverseRecords(record.children, handler, isArray(recordIndex) ? recordIndex : [recordIndex]);\n }\n });\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, isFunction, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { CheckboxColumnDefine, FieldDef, 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\ntype CheckboxStateValue = boolean | 'indeterminate';\ntype CheckboxRecordValue = CheckboxStateValue | { checked?: CheckboxStateValue };\n\nexport function setCheckedState(\n col: number,\n row: number,\n field: string | number,\n checked: boolean | 'indeterminate',\n state: StateManager\n) {\n const table = state.table;\n const cellRange = table.getCellRange(col, row);\n if (cellRange.start.col !== cellRange.end.col || cellRange.start.row !== cellRange.end.row) {\n for (let i = cellRange.start.col; i <= cellRange.end.col; i++) {\n for (let j = cellRange.start.row; j <= cellRange.end.row; j++) {\n setSingleCheckedState(i, j, field, checked, state);\n }\n }\n } else {\n setSingleCheckedState(col, row, field, checked, state);\n }\n}\n\nfunction setSingleCheckedState(\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.get(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 if (state.table.internalProps.enableCheckboxCascade) {\n state.checkedState?.forEach(recordCheckState => {\n recordCheckState[field] = checked;\n });\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.get(dataIndex)) {\n state.checkedState.get(dataIndex)[field] = checked;\n } else if (state.table.internalProps.enableCheckboxCascade && dataIndex.includes(',')) {\n // child record, sync parent record state\n const parentDataIndex = dataIndex.split(',').slice(0, -1).join(','); // get latest parent data index\n if (state.checkedState.has(parentDataIndex) && state.checkedState.get(parentDataIndex)[field] === true) {\n state.checkedState.set(dataIndex, {\n [field]: true\n });\n } else {\n state.checkedState.set(dataIndex, {\n [field]: checked\n });\n }\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' || isFunction(hd.define.cellType)) && !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.enableCheckboxCascade && 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 =\n (cellGroup?.getChildByName('checkbox') as any) ||\n (cellGroup?.getChildByName('checkbox-content')?._checkboxGroup?.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 setCheckboxStateByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n setRecordCheckboxState(recordIndex, field, checked, table.stateManager.checkedState);\n\n if (table.internalProps.enableCheckboxCascade && checked !== 'indeterminate') {\n updateChildrenCheckboxStateByRecordIndex(recordIndex, field, checked, table);\n updateParentCheckboxStateByRecordIndex(recordIndex, field, table);\n }\n\n updateVisibleCheckboxCellByRecordIndex(recordIndex, field, checked, table);\n updateHeaderCheckboxStateByField(field, table);\n renderCheckboxStateUpdate(table);\n}\n\nexport function clearCheckboxState(field: FieldDef, table: BaseTableAPI) {\n if (!isValid(field)) {\n return;\n }\n clearRecordCheckboxState((table as any).records, field, table);\n updateVisibleCheckboxCellsByField(field, false, table);\n updateHeaderCheckboxStateByField(field, table);\n renderCheckboxStateUpdate(table);\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 =\n (cellGroup?.getChildByName('checkbox') as any) ||\n (cellGroup?.getChildByName('checkbox-content')?._checkboxGroup?.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\ntype RecordPath = number | number[];\n\nfunction normalizeRecordPath(recordPath: RecordPath): number[] {\n return isArray(recordPath) ? recordPath : [recordPath];\n}\n\nfunction parseCheckboxStateKey(key: string | number): number[] {\n return isNumber(key) ? [key] : key.split(',').map(item => Number(item));\n}\n\nfunction stringifyRecordPath(recordPath: number[]): string {\n return recordPath.toString();\n}\n\nfunction isSameRecordPath(source: number[], target: number[]): boolean {\n return source.length === target.length && source.every((item, index) => item === target[index]);\n}\n\nfunction isSameParentPath(source: number[], target: number[]): boolean {\n if (source.length !== target.length) {\n return false;\n }\n return source.slice(0, -1).every((item, index) => item === target[index]);\n}\n\nfunction isDescendantPath(path: number[], ancestor: number[]): boolean {\n return ancestor.length <= path.length && ancestor.every((item, index) => item === path[index]);\n}\n\nfunction getMovedRecordPath(path: number[], source: number[], target: number[]): number[] {\n return target.concat(path.slice(source.length));\n}\n\nfunction getShiftedSiblingPath(path: number[], parent: number[], sourceIndex: number, targetIndex: number): number[] {\n if (path.length <= parent.length || !isDescendantPath(path.slice(0, parent.length), parent)) {\n return path;\n }\n\n const siblingIndex = path[parent.length];\n if (sourceIndex < targetIndex && siblingIndex > sourceIndex && siblingIndex <= targetIndex) {\n const shifted = [...path];\n shifted[parent.length] = siblingIndex - 1;\n return shifted;\n }\n if (sourceIndex > targetIndex && siblingIndex >= targetIndex && siblingIndex < sourceIndex) {\n const shifted = [...path];\n shifted[parent.length] = siblingIndex + 1;\n return shifted;\n }\n return path;\n}\n\nexport function changeCheckboxOrder(sourceRecordPath: RecordPath, targetRecordPath: RecordPath, state: StateManager) {\n const { checkedState } = state;\n const sourcePath = normalizeRecordPath(sourceRecordPath);\n const targetPath = normalizeRecordPath(targetRecordPath);\n\n // DataSource.changeOrder only reorders records under the same parent; cross-parent drops are ignored here.\n if (isSameRecordPath(sourcePath, targetPath) || !isSameParentPath(sourcePath, targetPath)) {\n return;\n }\n\n const parentPath = sourcePath.slice(0, -1);\n const sourceIndex = sourcePath[sourcePath.length - 1];\n const targetIndex = targetPath[targetPath.length - 1];\n const nextCheckedState = new Map<string | number, Record<string | number, boolean | 'indeterminate'>>();\n\n checkedState.forEach((value, key) => {\n const keyPath = parseCheckboxStateKey(key);\n let nextPath: number[];\n\n if (isDescendantPath(keyPath, sourcePath)) {\n nextPath = getMovedRecordPath(keyPath, sourcePath, targetPath);\n } else {\n nextPath = getShiftedSiblingPath(keyPath, parentPath, sourceIndex, targetIndex);\n }\n\n nextCheckedState.set(stringifyRecordPath(nextPath), value);\n });\n\n checkedState.clear();\n nextCheckedState.forEach((value, key) => {\n checkedState.set(key, value);\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 CachedDataSource).getOriginRecordIndexForGroup(indexArr);\n result[vtableOriginIndex] = table.stateManager.checkedState.get(indexArr.toString());\n }\n });\n\n return result;\n}\n\nfunction normalizeRecordIndex(recordIndex: number | number[]): number | number[] {\n if (isArray(recordIndex) && recordIndex.length === 1) {\n return recordIndex[0];\n }\n return recordIndex;\n}\n\nfunction setRecordCheckboxState(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n checkedState: Map<string | number, any>\n) {\n const dataIndex = normalizeRecordIndex(recordIndex).toString();\n if (checkedState.get(dataIndex)) {\n checkedState.get(dataIndex)[field as string | number] = checked;\n } else {\n checkedState.set(dataIndex, {\n [field as string | number]: checked\n });\n }\n}\n\nfunction clearRecordCheckboxState(records: any[], field: FieldDef, table: BaseTableAPI, parentIndex: number[] = []) {\n if (!isArray(records)) {\n return;\n }\n\n records.forEach((record, index) => {\n const recordIndex = parentIndex.length ? parentIndex.concat(index) : [index];\n const currentState = getRecordCheckboxState(recordIndex, record, field, table);\n if (currentState !== false) {\n setRecordCheckboxState(recordIndex, field, false, table.stateManager.checkedState);\n }\n\n if (isArray(record?.children)) {\n clearRecordCheckboxState(record.children, field, table, recordIndex);\n }\n });\n}\n\nfunction updateVisibleCheckboxCellByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n const bodyRowIndex = (table as ListTableAPI).getBodyRowIndexByRecordIndex?.(recordIndex);\n if (!isNumber(bodyRowIndex) || bodyRowIndex < 0) {\n return;\n }\n\n const row = bodyRowIndex + table.columnHeaderLevelCount;\n const cols = getCheckboxColsByField(field, row, table);\n cols.forEach(col => {\n setCellCheckboxStateByAttribute(col, row, checked, table);\n });\n}\n\nfunction updateVisibleCheckboxCellsByField(field: FieldDef, checked: boolean | 'indeterminate', table: BaseTableAPI) {\n const bodyStartRow = table.columnHeaderLevelCount;\n const cols = getCheckboxColsByField(field, bodyStartRow, table);\n for (let row = table.columnHeaderLevelCount; row < table.rowCount; row++) {\n cols.forEach(col => {\n setCellCheckboxStateByAttribute(col, row, checked, table);\n });\n }\n}\n\nfunction renderCheckboxStateUpdate(table: BaseTableAPI) {\n const renderAsync = (table as any).renderAsync;\n if (isFunction(renderAsync)) {\n renderAsync.call(table);\n } else {\n table.render();\n }\n}\n\nfunction updateHeaderCheckboxStateByField(field: FieldDef, table: BaseTableAPI) {\n const fieldKey = field as string | number;\n let hasChecked = false;\n let hasUnchecked = false;\n let hasRecord = false;\n\n traverseRecords((table as any).records, (record, recordIndex) => {\n const state = getRecordCheckboxState(recordIndex, record, field, table);\n hasRecord = true;\n if (state === true) {\n hasChecked = true;\n } else if (state === 'indeterminate') {\n hasChecked = true;\n hasUnchecked = true;\n } else {\n hasUnchecked = true;\n }\n });\n\n const checked = hasRecord && hasChecked && !hasUnchecked ? true : hasChecked ? 'indeterminate' : false;\n table.stateManager.headerCheckedState[fieldKey] = checked;\n updateVisibleHeaderCheckboxCellByField(field, checked, table);\n}\n\nfunction updateVisibleHeaderCheckboxCellByField(\n field: FieldDef,\n checked: boolean | 'indeterminate',\n table: BaseTableAPI\n) {\n for (let row = 0; row < table.columnHeaderLevelCount; row++) {\n for (let col = 0; col < table.colCount; col++) {\n if (table.getHeaderField(col, row) === field && table.getCellType(col, row) === 'checkbox') {\n table.scenegraph.updateHeaderCheckboxCellState(col, row, checked);\n }\n }\n }\n}\n\nfunction getCheckboxColsByField(field: FieldDef, row: number, table: BaseTableAPI): number[] {\n const cols: number[] = [];\n for (let col = 0; col < table.colCount; col++) {\n if (table.isHeader(col, row)) {\n continue;\n }\n const define = table.getBodyColumnDefine(col, row);\n if (define?.field === field && table.getCellType(col, row) === 'checkbox') {\n cols.push(col);\n }\n }\n return cols;\n}\n\nfunction updateChildrenCheckboxStateByRecordIndex(\n recordIndex: number | number[],\n field: FieldDef,\n checked: boolean,\n table: BaseTableAPI\n) {\n const record = getRecordByRecordIndex((table as any).records, recordIndex);\n if (!record?.children?.length) {\n return;\n }\n\n record.children.forEach((child: any, childIndex: number) => {\n const childRecordIndex = normalizeRecordIndexToArray(recordIndex).concat(childIndex);\n setRecordCheckboxState(childRecordIndex, field, checked, table.stateManager.checkedState);\n updateVisibleCheckboxCellByRecordIndex(childRecordIndex, field, checked, table);\n updateChildrenCheckboxStateByRecordIndex(childRecordIndex, field, checked, table);\n });\n}\n\nfunction updateParentCheckboxStateByRecordIndex(recordIndex: number | number[], field: FieldDef, table: BaseTableAPI) {\n const recordIndexPath = normalizeRecordIndexToArray(recordIndex);\n for (let level = recordIndexPath.length - 1; level > 0; level--) {\n const parentIndex = recordIndexPath.slice(0, level);\n const parentRecord = getRecordByRecordIndex((table as any).records, parentIndex);\n if (!parentRecord?.children?.length) {\n continue;\n }\n\n const childStates: CheckboxStateValue[] = parentRecord.children.map((child: any, childIndex: number) => {\n const childRecordIndex = parentIndex.concat(childIndex);\n const childState = getRecordCheckboxState(childRecordIndex, child, field, table);\n setRecordCheckboxState(childRecordIndex, field, childState, table.stateManager.checkedState);\n return childState;\n });\n const allChecked = childStates.every(state => state === true);\n const allUnchecked = childStates.every(state => state !== true && state !== 'indeterminate');\n const parentState = allChecked ? true : allUnchecked ? false : 'indeterminate';\n setRecordCheckboxState(parentIndex, field, parentState, table.stateManager.checkedState);\n updateVisibleCheckboxCellByRecordIndex(parentIndex, field, parentState, table);\n }\n}\n\nfunction getRecordCheckboxState(\n recordIndex: number | number[],\n record: any,\n field: FieldDef,\n table: BaseTableAPI\n): CheckboxStateValue {\n const fieldKey = field as string | number;\n const dataIndex = normalizeRecordIndex(recordIndex).toString();\n const cachedState = table.stateManager.checkedState.get(dataIndex)?.[fieldKey];\n if (isValid(cachedState)) {\n return cachedState;\n }\n\n const value = record?.[fieldKey] as CheckboxRecordValue | undefined;\n if (isObject(value) && isValid((value as { checked?: CheckboxStateValue }).checked)) {\n return (value as { checked?: CheckboxStateValue }).checked;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n return false;\n}\n\nfunction getRecordByRecordIndex(records: any[], recordIndex: number | number[]): any {\n const recordIndexPath = normalizeRecordIndexToArray(recordIndex);\n let currentRecords = records;\n let record;\n for (let i = 0; i < recordIndexPath.length; i++) {\n record = currentRecords?.[recordIndexPath[i]];\n currentRecords = record?.children;\n }\n return record;\n}\n\nfunction normalizeRecordIndexToArray(recordIndex: number | number[]): number[] {\n return isArray(recordIndex) ? recordIndex : [recordIndex];\n}\n\nfunction traverseRecords(\n records: any[],\n handler: (record: any, recordIndex: number | number[]) => void,\n parentIndex: number[] = []\n) {\n if (!isArray(records)) {\n return;\n }\n\n records.forEach((record, index) => {\n const recordIndex = parentIndex.length ? parentIndex.concat(index) : index;\n handler(record, recordIndex);\n if (isArray(record?.children)) {\n traverseRecords(record.children, handler, isArray(recordIndex) ? recordIndex : [recordIndex]);\n }\n });\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,7 +1,9 @@
|
|
|
1
1
|
import type { StateManager } from '../state';
|
|
2
2
|
import type { BaseTableAPI } from '../../ts-types/base-table';
|
|
3
|
+
type RecordPath = number | number[];
|
|
3
4
|
export declare function setRadioState(col: number, row: number, field: string | number, type: 'column' | 'cell', indexInCell: number | undefined, state: StateManager): void;
|
|
4
5
|
export declare function getCellRadioState(col: number, row: number, table: BaseTableAPI): boolean | number;
|
|
5
6
|
export declare function syncRadioState(col: number, row: number, field: string | number, type: 'column' | 'cell', indexInCell: number | undefined, isChecked: boolean, state: StateManager): boolean;
|
|
6
7
|
export declare function setCellRadioState(col: number, row: number, index: number | undefined, table: BaseTableAPI): void;
|
|
7
|
-
export declare function changeRadioOrder(
|
|
8
|
+
export declare function changeRadioOrder(sourceRecordPath: RecordPath, targetRecordPath: RecordPath, state: StateManager): void;
|
|
9
|
+
export {};
|
package/es/state/radio/radio.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isBoolean, isNumber, isObject, isValid } from "@visactor/vutils";
|
|
1
|
+
import { isBoolean, isNumber, isObject, isString, isValid } from "@visactor/vutils";
|
|
2
2
|
|
|
3
3
|
export function setRadioState(col, row, field, type, indexInCell, state) {
|
|
4
4
|
const recordIndex = state.table.getRecordShowIndexByCell(col, row);
|
|
@@ -63,18 +63,75 @@ export function setCellRadioState(col, row, index, table) {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
66
|
+
function normalizeRecordPath(recordPath) {
|
|
67
|
+
return Array.isArray(recordPath) ? recordPath : [ recordPath ];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function parseRecordPathKey(key) {
|
|
71
|
+
return isNumber(key) ? [ key ] : key.split(",").map((item => Number(item)));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function isSameRecordPath(source, target) {
|
|
75
|
+
return source.length === target.length && source.every(((item, index) => item === target[index]));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function isSameParentPath(source, target) {
|
|
79
|
+
return source.length === target.length && source.slice(0, -1).every(((item, index) => item === target[index]));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function isDescendantPath(path, ancestor) {
|
|
83
|
+
return ancestor.length <= path.length && ancestor.every(((item, index) => item === path[index]));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function getMovedRecordPath(path, source, target) {
|
|
87
|
+
return target.concat(path.slice(source.length));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function getShiftedSiblingPath(path, parent, sourceIndex, targetIndex) {
|
|
91
|
+
if (path.length <= parent.length || !isDescendantPath(path.slice(0, parent.length), parent)) return path;
|
|
92
|
+
const siblingIndex = path[parent.length];
|
|
93
|
+
if (sourceIndex < targetIndex && siblingIndex > sourceIndex && siblingIndex <= targetIndex) {
|
|
94
|
+
const shifted = [ ...path ];
|
|
95
|
+
return shifted[parent.length] = siblingIndex - 1, shifted;
|
|
78
96
|
}
|
|
97
|
+
if (sourceIndex > targetIndex && siblingIndex >= targetIndex && siblingIndex < sourceIndex) {
|
|
98
|
+
const shifted = [ ...path ];
|
|
99
|
+
return shifted[parent.length] = siblingIndex + 1, shifted;
|
|
100
|
+
}
|
|
101
|
+
return path;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function getChangedRecordPath(path, sourcePath, targetPath) {
|
|
105
|
+
const parentPath = sourcePath.slice(0, -1), sourceIndex = sourcePath[sourcePath.length - 1], targetIndex = targetPath[targetPath.length - 1];
|
|
106
|
+
return isDescendantPath(path, sourcePath) ? getMovedRecordPath(path, sourcePath, targetPath) : getShiftedSiblingPath(path, parentPath, sourceIndex, targetIndex);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function getRadioStateValue(recordPath) {
|
|
110
|
+
return 1 === recordPath.length ? recordPath[0] : recordPath;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function getRadioStateKey(recordPath) {
|
|
114
|
+
return recordPath.toString();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function changeRadioStateValue(value, sourcePath, targetPath) {
|
|
118
|
+
if (isNumber(value)) return getRadioStateValue(getChangedRecordPath([ value ], sourcePath, targetPath));
|
|
119
|
+
if (Array.isArray(value)) return getRadioStateValue(getChangedRecordPath(value, sourcePath, targetPath));
|
|
120
|
+
if (isString(value)) return getRadioStateKey(getChangedRecordPath(parseRecordPathKey(value), sourcePath, targetPath));
|
|
121
|
+
if (isObject(value)) {
|
|
122
|
+
const nextValue = {};
|
|
123
|
+
return Object.keys(value).forEach((key => {
|
|
124
|
+
const nextPath = getChangedRecordPath(parseRecordPathKey(key), sourcePath, targetPath);
|
|
125
|
+
nextValue[getRadioStateKey(nextPath)] = value[key];
|
|
126
|
+
})), nextValue;
|
|
127
|
+
}
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function changeRadioOrder(sourceRecordPath, targetRecordPath, state) {
|
|
132
|
+
const {radioState: radioState} = state, sourcePath = normalizeRecordPath(sourceRecordPath), targetPath = normalizeRecordPath(targetRecordPath);
|
|
133
|
+
!isSameRecordPath(sourcePath, targetPath) && isSameParentPath(sourcePath, targetPath) && Object.keys(radioState).forEach((field => {
|
|
134
|
+
radioState[field] = changeRadioStateValue(radioState[field], sourcePath, targetPath);
|
|
135
|
+
}));
|
|
79
136
|
}
|
|
80
137
|
//# sourceMappingURL=radio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/state/radio/radio.ts"],"names":[],"mappings":"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","file":"radio.js","sourcesContent":["import { isBoolean, isNumber, isObject, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { ColumnDefine } from '../../ts-types';\nimport type { Radio } from './../../vrender';\n\nexport function setRadioState(\n col: number,\n row: number,\n field: string | number,\n type: 'column' | 'cell',\n indexInCell: number | undefined,\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex) as number;\n if (type === 'column') {\n if (isNumber(indexInCell)) {\n state.radioState[field] = {};\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field] = dataIndex;\n }\n } else {\n if (!state.radioState[field]) {\n state.radioState[field] = {};\n }\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n }\n }\n}\n\nexport function getCellRadioState(col: number, row: number, table: BaseTableAPI): boolean | number {\n const define = table.getBodyColumnDefine(col, row) as ColumnDefine;\n const field = define?.field;\n const cellType = table.getCellType(col, row);\n if (isValid(field) && cellType === 'radio') {\n const dataIndex = table.dataSource.getIndexKey(table.getRecordShowIndexByCell(col, row)) as number;\n const columnState = table.stateManager.radioState?.[field as string | number];\n if (isNumber(columnState)) {\n if (columnState === dataIndex) {\n return true;\n }\n } else if (isObject(columnState)) {\n const cellState = (columnState as Record<number, number>)[dataIndex];\n if (isNumber(cellState)) {\n return cellState;\n }\n }\n }\n return false;\n}\n\nexport function syncRadioState(\n col: number,\n row: number,\n field: string | number,\n type: 'column' | 'cell',\n indexInCell: number | undefined,\n isChecked: boolean,\n state: StateManager\n): boolean {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex) as number;\n\n if (type === 'column') {\n if (!isValid(state.radioState[field]) && isChecked) {\n if (isNumber(indexInCell)) {\n state.radioState[field] = {};\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field] = dataIndex;\n }\n return true;\n } else if (isNumber(state.radioState[field]) && !isNumber(indexInCell)) {\n // column : column\n return state.radioState[field] === dataIndex;\n } else if (isNumber(state.radioState[field]) && isNumber(indexInCell)) {\n // column : cell\n return false;\n } else if (isObject(state.radioState[field]) && !isNumber(indexInCell)) {\n // cell : column\n return false;\n } else if (isObject(state.radioState[field]) && isNumber(indexInCell)) {\n // cell : cell\n return state.radioState[field][dataIndex] === indexInCell;\n }\n } else if (type === 'cell') {\n if (!isValid(state.radioState[field]) && isChecked) {\n state.radioState[field] = {};\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n return true;\n } else if (!isValid(state.radioState[field]?.[dataIndex]) && isChecked) {\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n return true;\n } else if (isBoolean(state.radioState[field]?.[dataIndex]) && !isNumber(indexInCell)) {\n // single : single\n return state.radioState[field][dataIndex];\n } else if (isBoolean(state.radioState[field]?.[dataIndex]) && isNumber(indexInCell)) {\n // single : multiple\n return false;\n } else if (isNumber(state.radioState[field]?.[dataIndex]) && !isNumber(indexInCell)) {\n // multiple : single\n return false;\n } else if (isNumber(state.radioState[field]?.[dataIndex]) && isNumber(indexInCell)) {\n // multiple : multiple\n return state.radioState[field][dataIndex] === indexInCell;\n }\n }\n }\n return isChecked;\n}\n\nexport function setCellRadioState(col: number, row: number, index: number | undefined, table: BaseTableAPI) {\n const cellGoup = table.scenegraph.getCell(col, row);\n if (!cellGoup) {\n return;\n }\n if (isNumber(index)) {\n const radio = cellGoup.getChildAt(index) as any;\n radio?._handlePointerUp();\n } else {\n const radio = cellGoup.getChildByName('radio') as any;\n radio?._handlePointerUp();\n }\n}\n\nexport function changeRadioOrder(sourceIndex: number, targetIndex: number, state: StateManager) {\n const { radioState, table } = state;\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 // if (sourceIndex !== targetIndex) {\n // const sourceRecord = radioState[sourceIndex];\n // radioState[sourceIndex] = radioState[targetIndex];\n // radioState[targetIndex] = sourceRecord;\n // }\n if (sourceIndex > targetIndex) {\n const sourceRecord = radioState[sourceIndex];\n for (let i = sourceIndex; i > targetIndex; i--) {\n radioState[i] = radioState[i - 1];\n }\n radioState[targetIndex] = sourceRecord;\n } else if (sourceIndex < targetIndex) {\n const sourceRecord = radioState[sourceIndex];\n for (let i = sourceIndex; i < targetIndex; i++) {\n radioState[i] = radioState[i + 1];\n }\n radioState[targetIndex] = sourceRecord;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/state/radio/radio.ts"],"names":[],"mappings":"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","file":"radio.js","sourcesContent":["import { isBoolean, isNumber, isObject, isString, isValid } from '@visactor/vutils';\nimport type { StateManager } from '../state';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { ColumnDefine } from '../../ts-types';\nimport type { Radio } from './../../vrender';\n\ntype RecordPath = number | number[];\ntype RadioStateValue = boolean | number | string | number[] | Record<string | number, boolean | number>;\n\nexport function setRadioState(\n col: number,\n row: number,\n field: string | number,\n type: 'column' | 'cell',\n indexInCell: number | undefined,\n state: StateManager\n) {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex) as number;\n if (type === 'column') {\n if (isNumber(indexInCell)) {\n state.radioState[field] = {};\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field] = dataIndex;\n }\n } else {\n if (!state.radioState[field]) {\n state.radioState[field] = {};\n }\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n }\n }\n}\n\nexport function getCellRadioState(col: number, row: number, table: BaseTableAPI): boolean | number {\n const define = table.getBodyColumnDefine(col, row) as ColumnDefine;\n const field = define?.field;\n const cellType = table.getCellType(col, row);\n if (isValid(field) && cellType === 'radio') {\n const dataIndex = table.dataSource.getIndexKey(table.getRecordShowIndexByCell(col, row)) as number;\n const columnState = table.stateManager.radioState?.[field as string | number];\n if (isNumber(columnState)) {\n if (columnState === dataIndex) {\n return true;\n }\n } else if (isObject(columnState)) {\n const cellState = (columnState as Record<number, number>)[dataIndex];\n if (isNumber(cellState)) {\n return cellState;\n }\n }\n }\n return false;\n}\n\nexport function syncRadioState(\n col: number,\n row: number,\n field: string | number,\n type: 'column' | 'cell',\n indexInCell: number | undefined,\n isChecked: boolean,\n state: StateManager\n): boolean {\n const recordIndex = state.table.getRecordShowIndexByCell(col, row);\n if (recordIndex >= 0) {\n const dataIndex = state.table.dataSource.getIndexKey(recordIndex) as number;\n\n if (type === 'column') {\n if (!isValid(state.radioState[field]) && isChecked) {\n if (isNumber(indexInCell)) {\n state.radioState[field] = {};\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field] = dataIndex;\n }\n return true;\n } else if (isNumber(state.radioState[field]) && !isNumber(indexInCell)) {\n // column : column\n return state.radioState[field] === dataIndex;\n } else if (isNumber(state.radioState[field]) && isNumber(indexInCell)) {\n // column : cell\n return false;\n } else if (isObject(state.radioState[field]) && !isNumber(indexInCell)) {\n // cell : column\n return false;\n } else if (isObject(state.radioState[field]) && isNumber(indexInCell)) {\n // cell : cell\n return state.radioState[field][dataIndex] === indexInCell;\n }\n } else if (type === 'cell') {\n if (!isValid(state.radioState[field]) && isChecked) {\n state.radioState[field] = {};\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n return true;\n } else if (!isValid(state.radioState[field]?.[dataIndex]) && isChecked) {\n if (isNumber(indexInCell)) {\n state.radioState[field][dataIndex] = indexInCell;\n } else {\n state.radioState[field][dataIndex] = true;\n }\n return true;\n } else if (isBoolean(state.radioState[field]?.[dataIndex]) && !isNumber(indexInCell)) {\n // single : single\n return state.radioState[field][dataIndex];\n } else if (isBoolean(state.radioState[field]?.[dataIndex]) && isNumber(indexInCell)) {\n // single : multiple\n return false;\n } else if (isNumber(state.radioState[field]?.[dataIndex]) && !isNumber(indexInCell)) {\n // multiple : single\n return false;\n } else if (isNumber(state.radioState[field]?.[dataIndex]) && isNumber(indexInCell)) {\n // multiple : multiple\n return state.radioState[field][dataIndex] === indexInCell;\n }\n }\n }\n return isChecked;\n}\n\nexport function setCellRadioState(col: number, row: number, index: number | undefined, table: BaseTableAPI) {\n const cellGoup = table.scenegraph.getCell(col, row);\n if (!cellGoup) {\n return;\n }\n if (isNumber(index)) {\n const radio = cellGoup.getChildAt(index) as any;\n radio?._handlePointerUp();\n } else {\n const radio = cellGoup.getChildByName('radio') as any;\n radio?._handlePointerUp();\n }\n}\n\nfunction normalizeRecordPath(recordPath: RecordPath): number[] {\n return Array.isArray(recordPath) ? recordPath : [recordPath];\n}\n\nfunction parseRecordPathKey(key: string | number): number[] {\n return isNumber(key) ? [key] : key.split(',').map(item => Number(item));\n}\n\nfunction isSameRecordPath(source: number[], target: number[]): boolean {\n return source.length === target.length && source.every((item, index) => item === target[index]);\n}\n\nfunction isSameParentPath(source: number[], target: number[]): boolean {\n if (source.length !== target.length) {\n return false;\n }\n return source.slice(0, -1).every((item, index) => item === target[index]);\n}\n\nfunction isDescendantPath(path: number[], ancestor: number[]): boolean {\n return ancestor.length <= path.length && ancestor.every((item, index) => item === path[index]);\n}\n\nfunction getMovedRecordPath(path: number[], source: number[], target: number[]): number[] {\n return target.concat(path.slice(source.length));\n}\n\nfunction getShiftedSiblingPath(path: number[], parent: number[], sourceIndex: number, targetIndex: number): number[] {\n if (path.length <= parent.length || !isDescendantPath(path.slice(0, parent.length), parent)) {\n return path;\n }\n\n const siblingIndex = path[parent.length];\n if (sourceIndex < targetIndex && siblingIndex > sourceIndex && siblingIndex <= targetIndex) {\n const shifted = [...path];\n shifted[parent.length] = siblingIndex - 1;\n return shifted;\n }\n if (sourceIndex > targetIndex && siblingIndex >= targetIndex && siblingIndex < sourceIndex) {\n const shifted = [...path];\n shifted[parent.length] = siblingIndex + 1;\n return shifted;\n }\n return path;\n}\n\nfunction getChangedRecordPath(path: number[], sourcePath: number[], targetPath: number[]): number[] {\n const parentPath = sourcePath.slice(0, -1);\n const sourceIndex = sourcePath[sourcePath.length - 1];\n const targetIndex = targetPath[targetPath.length - 1];\n\n if (isDescendantPath(path, sourcePath)) {\n return getMovedRecordPath(path, sourcePath, targetPath);\n }\n return getShiftedSiblingPath(path, parentPath, sourceIndex, targetIndex);\n}\n\nfunction getRadioStateValue(recordPath: number[]): number | number[] {\n return recordPath.length === 1 ? recordPath[0] : recordPath;\n}\n\nfunction getRadioStateKey(recordPath: number[]): string {\n return recordPath.toString();\n}\n\nfunction changeRadioStateValue(value: RadioStateValue, sourcePath: number[], targetPath: number[]): RadioStateValue {\n if (isNumber(value)) {\n return getRadioStateValue(getChangedRecordPath([value], sourcePath, targetPath));\n }\n if (Array.isArray(value)) {\n return getRadioStateValue(getChangedRecordPath(value, sourcePath, targetPath));\n }\n if (isString(value)) {\n return getRadioStateKey(getChangedRecordPath(parseRecordPathKey(value), sourcePath, targetPath));\n }\n if (isObject(value)) {\n const nextValue: Record<string | number, boolean | number> = {};\n Object.keys(value).forEach(key => {\n const nextPath = getChangedRecordPath(parseRecordPathKey(key), sourcePath, targetPath);\n nextValue[getRadioStateKey(nextPath)] = value[key];\n });\n return nextValue;\n }\n return value;\n}\n\nexport function changeRadioOrder(sourceRecordPath: RecordPath, targetRecordPath: RecordPath, state: StateManager) {\n const { radioState } = state;\n const sourcePath = normalizeRecordPath(sourceRecordPath);\n const targetPath = normalizeRecordPath(targetRecordPath);\n\n if (isSameRecordPath(sourcePath, targetPath) || !isSameParentPath(sourcePath, targetPath)) {\n return;\n }\n\n Object.keys(radioState).forEach(field => {\n radioState[field] = changeRadioStateValue(radioState[field] as RadioStateValue, sourcePath, targetPath);\n });\n}\n"]}
|
package/es/state/state.d.ts
CHANGED
|
@@ -133,7 +133,7 @@ export declare class StateManager {
|
|
|
133
133
|
headerCheckedState: Record<string | number, boolean | 'indeterminate'>;
|
|
134
134
|
_checkboxCellTypeFields: (string | number)[];
|
|
135
135
|
_headerCheckFuncs: Record<string | number, Function>;
|
|
136
|
-
radioState: Record<string | number, boolean | number | Record<number, number>>;
|
|
136
|
+
radioState: Record<string | number, boolean | number | string | number[] | Record<string | number, boolean | number>>;
|
|
137
137
|
resetInteractionState: (this: any, ...args: any) => any;
|
|
138
138
|
constructor(table: BaseTableAPI);
|
|
139
139
|
initState(): void;
|
|
@@ -209,7 +209,8 @@ export declare class StateManager {
|
|
|
209
209
|
initLeftRecordsCheckState(records: any[]): void;
|
|
210
210
|
setRadioState(col: number, row: number, field: string | number, radioType: 'column' | 'cell', indexInCell: number | undefined): void;
|
|
211
211
|
syncRadioState(col: number, row: number, field: string | number, radioType: 'column' | 'cell', indexInCell: number | undefined, isChecked: boolean): boolean;
|
|
212
|
-
|
|
212
|
+
changeCheckboxOrder(sourceRecordPath: number | number[], targetRecordPath: number | number[]): void;
|
|
213
|
+
changeRadioOrder(sourceRecordPath: number | number[], targetRecordPath: number | number[]): void;
|
|
213
214
|
setCustomSelectRanges(customSelectRanges: {
|
|
214
215
|
range: CellRange;
|
|
215
216
|
style: CustomSelectionStyle;
|
package/es/state/state.js
CHANGED
|
@@ -303,6 +303,7 @@ export class StateManager {
|
|
|
303
303
|
placement: inlineIcon.attribute.tooltip.placement
|
|
304
304
|
},
|
|
305
305
|
style: Object.assign({}, null === (_e = this.table.internalProps.theme) || void 0 === _e ? void 0 : _e.tooltipStyle, null === (_f = inlineIcon.tooltip) || void 0 === _f ? void 0 : _f.style, null === (_h = null === (_g = inlineIcon.attribute) || void 0 === _g ? void 0 : _g.tooltip) || void 0 === _h ? void 0 : _h.style),
|
|
306
|
+
appearDelay: inlineIcon.attribute.tooltip.appearDelay,
|
|
306
307
|
disappearDelay: inlineIcon.attribute.tooltip.disappearDelay
|
|
307
308
|
};
|
|
308
309
|
this.table.internalProps.tooltipHandler.isBinded(tooltipOptions) || this.table.showTooltip(col, row, tooltipOptions);
|
|
@@ -902,8 +903,11 @@ export class StateManager {
|
|
|
902
903
|
syncRadioState(col, row, field, radioType, indexInCell, isChecked) {
|
|
903
904
|
return syncRadioState(col, row, field, radioType, indexInCell, isChecked, this);
|
|
904
905
|
}
|
|
905
|
-
|
|
906
|
-
this.checkedState.size && changeCheckboxOrder(
|
|
906
|
+
changeCheckboxOrder(sourceRecordPath, targetRecordPath) {
|
|
907
|
+
this.checkedState.size && changeCheckboxOrder(sourceRecordPath, targetRecordPath, this);
|
|
908
|
+
}
|
|
909
|
+
changeRadioOrder(sourceRecordPath, targetRecordPath) {
|
|
910
|
+
Object.keys(this.radioState).length && changeRadioOrder(sourceRecordPath, targetRecordPath, this);
|
|
907
911
|
}
|
|
908
912
|
setCustomSelectRanges(customSelectRanges) {
|
|
909
913
|
deletaCustomSelectRanges(this), addCustomSelectRanges(customSelectRanges, this);
|