@visactor/vtable 1.19.6 → 1.19.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.js +11 -8
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotChart.js +2 -2
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/PivotTable.js +2 -2
- package/cjs/PivotTable.js.map +1 -1
- package/cjs/components/legend/discrete-legend/discrete-legend.js +6 -4
- package/cjs/components/legend/discrete-legend/discrete-legend.js.map +1 -1
- package/cjs/components/menu/dom/MenuHandler.js +42 -4
- package/cjs/components/menu/dom/MenuHandler.js.map +1 -1
- package/cjs/components/menu/dom/logic/MenuElement.js +1 -0
- package/cjs/components/menu/dom/logic/MenuElement.js.map +1 -1
- package/cjs/core/BaseTable.d.ts +3 -1
- package/cjs/core/BaseTable.js +37 -7
- 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/data/CachedDataSource.js +1 -1
- package/cjs/data/CachedDataSource.js.map +1 -1
- package/cjs/event/listener/table-group.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/simple-header-layout.js +1 -1
- package/cjs/layout/simple-header-layout.js.map +1 -1
- package/cjs/scenegraph/component/table-component.js +10 -8
- package/cjs/scenegraph/component/table-component.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +1 -0
- package/cjs/scenegraph/scenegraph.js +17 -1
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/state/resize/update-resize-column.js +1 -1
- package/cjs/state/resize/update-resize-column.js.map +1 -1
- package/cjs/state/resize/update-resize-row.js +1 -1
- package/cjs/state/resize/update-resize-row.js.map +1 -1
- package/cjs/themes/theme-define.js +4 -0
- package/cjs/themes/theme-define.js.map +1 -1
- package/cjs/ts-types/base-table.d.ts +2 -0
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/events.d.ts +2 -0
- package/cjs/ts-types/events.js.map +1 -1
- package/cjs/ts-types/theme.d.ts +1 -0
- package/cjs/ts-types/theme.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +160 -24
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.js +11 -8
- package/es/ListTable.js.map +1 -1
- package/es/PivotChart.js +2 -2
- package/es/PivotChart.js.map +1 -1
- package/es/PivotTable.js +2 -2
- package/es/PivotTable.js.map +1 -1
- package/es/components/legend/discrete-legend/discrete-legend.js +6 -4
- package/es/components/legend/discrete-legend/discrete-legend.js.map +1 -1
- package/es/components/menu/dom/MenuHandler.js +42 -4
- package/es/components/menu/dom/MenuHandler.js.map +1 -1
- package/es/components/menu/dom/logic/MenuElement.js +1 -0
- package/es/components/menu/dom/logic/MenuElement.js.map +1 -1
- package/es/core/BaseTable.d.ts +3 -1
- package/es/core/BaseTable.js +37 -7
- 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/data/CachedDataSource.js +1 -1
- package/es/data/CachedDataSource.js.map +1 -1
- package/es/event/listener/table-group.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/simple-header-layout.js +1 -1
- package/es/layout/simple-header-layout.js.map +1 -1
- package/es/scenegraph/component/table-component.js +10 -8
- package/es/scenegraph/component/table-component.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +1 -0
- package/es/scenegraph/scenegraph.js +21 -1
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/state/resize/update-resize-column.js +1 -1
- package/es/state/resize/update-resize-column.js.map +1 -1
- package/es/state/resize/update-resize-row.js +1 -1
- package/es/state/resize/update-resize-row.js.map +1 -1
- package/es/themes/theme-define.js +4 -0
- package/es/themes/theme-define.js.map +1 -1
- package/es/ts-types/base-table.d.ts +2 -0
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/events.d.ts +2 -0
- package/es/ts-types/events.js.map +1 -1
- package/es/ts-types/theme.d.ts +1 -0
- package/es/ts-types/theme.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +3 -3
|
@@ -15,6 +15,7 @@ export interface TableEvents {
|
|
|
15
15
|
MOUSEENTER_CELL: 'mouseenter_cell';
|
|
16
16
|
MOUSELEAVE_CELL: 'mouseleave_cell';
|
|
17
17
|
CONTEXTMENU_CELL: 'contextmenu_cell';
|
|
18
|
+
CONTEXTMENU_CANVAS: 'contextmenu_canvas';
|
|
18
19
|
RESIZE_COLUMN: 'resize_column';
|
|
19
20
|
RESIZE_COLUMN_END: 'resize_column_end';
|
|
20
21
|
RESIZE_ROW: 'resize_row';
|
|
@@ -19,6 +19,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
19
19
|
MOUSEENTER_CELL: "mouseenter_cell",
|
|
20
20
|
MOUSELEAVE_CELL: "mouseleave_cell",
|
|
21
21
|
CONTEXTMENU_CELL: "contextmenu_cell",
|
|
22
|
+
CONTEXTMENU_CANVAS: "contextmenu_canvas",
|
|
22
23
|
RESIZE_COLUMN: "resize_column",
|
|
23
24
|
RESIZE_COLUMN_END: "resize_column_end",
|
|
24
25
|
RESIZE_ROW: "resize_row",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/TABLE_EVENT_TYPE.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/core/TABLE_EVENT_TYPE.ts"],"names":[],"mappings":";;;AA0Na,QAAA,gBAAgB,GAAgB;IAC3C,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,gBAAgB;IAChC,4BAA4B,EAAE,8BAA8B;IAC5D,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;IACpD,2BAA2B,EAAE,6BAA6B;IAC1D,UAAU,EAAE,YAAY;IAIxB,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAE1C,2BAA2B,EAAE,6BAA6B;IAE1D,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IAEtB,UAAU,EAAE,YAAY;IAExB,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,aAAa,EAAE,eAAe;IAE9B,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAElC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAE5C,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IAExC,YAAY,EAAE,cAAc;IAC5B,wBAAwB,EAAE,0BAA0B;IACpD,WAAW,EAAE,aAAa;CACZ,CAAC","file":"TABLE_EVENT_TYPE.js","sourcesContent":["export interface TableEvents {\n /**\n * 鼠标点击单元格事件\n */\n CLICK_CELL: 'click_cell';\n /**\n * 鼠标双击单元格事件\n */\n DBLCLICK_CELL: 'dblclick_cell';\n /**\n * 单元格上鼠标按下事件\n */\n MOUSEDOWN_CELL: 'mousedown_cell';\n /**\n * 单元格鼠标松开事件\n */\n MOUSEUP_CELL: 'mouseup_cell';\n\n /**\n * 单元格选中状态改变事件\n */\n SELECTED_CELL: 'selected_cell';\n\n /**\n * 单元格选中状态改变事件\n */\n SELECTED_CLEAR: 'selected_clear';\n\n /** 键盘按下事件 内部逻辑处理前 */\n BEFORE_KEYDOWN: 'before_keydown';\n /**\n * 键盘按下事件 触发时机是在内部处理keydown逻辑之后\n */\n KEYDOWN: 'keydown';\n /**\n * 鼠标进入表格事件\n */\n MOUSEENTER_TABLE: 'mouseenter_table';\n /**\n * 鼠标离开表格事件\n */\n MOUSELEAVE_TABLE: 'mouseleave_table';\n /**\n * 鼠标点击表格事件\n */\n MOUSEDOWN_TABLE: 'mousedown_table';\n /**\n * 鼠标在表格上移动事件\n */\n MOUSEMOVE_TABLE: 'mousemove_table';\n /**\n * 鼠标在某个单元格上移动事件\n */\n MOUSEMOVE_CELL: 'mousemove_cell';\n /**\n * 鼠标进入单元格事件\n */\n MOUSEENTER_CELL: 'mouseenter_cell';\n /**\n * 鼠标离开单元格事件\n */\n MOUSELEAVE_CELL: 'mouseleave_cell';\n /**\n * 单元格右键事件\n */\n CONTEXTMENU_CELL: 'contextmenu_cell';\n /**\n * 画布右键事件\n */\n CONTEXTMENU_CANVAS: 'contextmenu_canvas';\n /**\n * 列宽调整事件\n */\n RESIZE_COLUMN: 'resize_column';\n /**\n * 列宽调整结束事件\n */\n RESIZE_COLUMN_END: 'resize_column_end';\n /**\n * 行高调整事件\n */\n RESIZE_ROW: 'resize_row';\n /**\n * 行高调整结束事件\n */\n RESIZE_ROW_END: 'resize_row_end';\n /**\n * 拖拽表头移动位置的事件\n */\n CHANGE_HEADER_POSITION: 'change_header_position';\n CHANGE_HEADER_POSITION_START: 'change_header_position_start';\n CHANGING_HEADER_POSITION: 'changing_header_position';\n CHANGE_HEADER_POSITION_FAIL: 'change_header_position_fail';\n /**\n * 点击排序图标事件\n */\n SORT_CLICK: 'sort_click';\n /**\n * 执行完排序\n */\n AFTER_SORT: 'after_sort';\n /**\n * 点击固定列图标 冻结或者解冻事件\n */\n FREEZE_CLICK: 'freeze_click';\n /**\n * 滚动表格事件\n */\n SCROLL: 'scroll';\n CAN_SCROLL: 'can_scroll';\n /**\n * 横向滚动条滚动到结束位\n */\n SCROLL_HORIZONTAL_END: 'scroll_horizontal_end';\n /**\n * 竖向滚动条滚动到结束位\n */\n SCROLL_VERTICAL_END: 'scroll_vertical_end';\n /**\n * 点击下拉菜单图标事件\n */\n DROPDOWN_MENU_CLICK: 'dropdown_menu_click';\n /**\n * 鼠标经过迷你图标记事件\n */\n MOUSEOVER_CHART_SYMBOL: 'mouseover_chart_symbol';\n\n /**\n * 拖拽框选单元格鼠标松开事件\n */\n DRAG_SELECT_END: 'drag_select_end';\n /** 复制完成 */\n COPY_DATA: 'copy_data';\n /**\n * 点击下拉菜单按钮\n */\n DROPDOWN_ICON_CLICK: 'dropdown_icon_click';\n /**\n * 清空下拉菜单事件(菜单显示时点击其他区域)\n */\n DROPDOWN_MENU_CLEAR: 'dropdown_menu_clear';\n\n /**\n * 树形结构展开收起的点击事件\n */\n TREE_HIERARCHY_STATE_CHANGE: 'tree_hierarchy_state_change';\n\n SHOW_MENU: 'show_menu';\n HIDE_MENU: 'hide_menu';\n /**\n * icon图标点击事件\n */\n ICON_CLICK: 'icon_click';\n\n // legend component\n LEGEND_ITEM_CLICK: 'legend_item_click';\n LEGEND_ITEM_HOVER: 'legend_item_hover';\n LEGEND_ITEM_UNHOVER: 'legend_item_unHover';\n LEGEND_CHANGE: 'legend_change';\n\n MOUSEENTER_AXIS: 'mouseenter_axis';\n MOUSELEAVE_AXIS: 'mouseleave_axis';\n\n CHECKBOX_STATE_CHANGE: 'checkbox_state_change';\n RADIO_STATE_CHANGE: 'radio_state_change';\n SWITCH_STATE_CHANGE: 'switch_state_change';\n //#region lifecircle\n /** 表格实例初始化前触发 */\n BEFORE_INIT: 'before_init';\n /** 设置表格大小前触发 */\n BEFORE_SET_SIZE: 'before_set_size';\n /** 每次渲染完成触发 */\n AFTER_RENDER: 'after_render';\n /** 表格实例初始化完成 */\n INITIALIZED: 'initialized';\n //#endregion\n\n /** 编辑单元格 */\n CHANGE_CELL_VALUE: 'change_cell_value';\n\n /**\n * 鼠标按下填充柄事件\n */\n MOUSEDOWN_FILL_HANDLE: 'mousedown_fill_handle';\n /**\n * 拖拽填充柄结束事件\n */\n DRAG_FILL_HANDLE_END: 'drag_fill_handle_end';\n /**\n * 双击填充柄事件\n */\n DBLCLICK_FILL_HANDLE: 'dblclick_fill_handle';\n\n /**\n * 空数据提示点击事件\n */\n EMPTY_TIP_CLICK: 'empty_tip_click';\n /**\n * 空数据提示双击事件\n */\n EMPTY_TIP_DBLCLICK: 'empty_tip_dblclick';\n\n /**\n * 按钮点击事件\n */\n BUTTON_CLICK: 'button_click';\n /**\n * 缓存图表事件\n */\n BEFORE_CACHE_CHART_IMAGE: 'before_cache_chart_image';\n /**\n * 粘贴数据事件\n */\n PASTED_DATA: 'pasted_data';\n}\n/**\n * Table event types\n */\nexport const TABLE_EVENT_TYPE: TableEvents = {\n CLICK_CELL: 'click_cell',\n DBLCLICK_CELL: 'dblclick_cell',\n MOUSEDOWN_CELL: 'mousedown_cell',\n MOUSEUP_CELL: 'mouseup_cell',\n SELECTED_CELL: 'selected_cell',\n SELECTED_CLEAR: 'selected_clear',\n BEFORE_KEYDOWN: 'before_keydown',\n KEYDOWN: 'keydown',\n MOUSEENTER_TABLE: 'mouseenter_table',\n MOUSELEAVE_TABLE: 'mouseleave_table',\n MOUSEDOWN_TABLE: 'mousedown_table',\n MOUSEMOVE_TABLE: 'mousemove_table',\n MOUSEMOVE_CELL: 'mousemove_cell',\n MOUSEENTER_CELL: 'mouseenter_cell',\n MOUSELEAVE_CELL: 'mouseleave_cell',\n CONTEXTMENU_CELL: 'contextmenu_cell',\n CONTEXTMENU_CANVAS: 'contextmenu_canvas',\n RESIZE_COLUMN: 'resize_column',\n RESIZE_COLUMN_END: 'resize_column_end',\n RESIZE_ROW: 'resize_row',\n RESIZE_ROW_END: 'resize_row_end',\n CHANGE_HEADER_POSITION_START: 'change_header_position_start',\n CHANGE_HEADER_POSITION: 'change_header_position',\n CHANGING_HEADER_POSITION: 'changing_header_position',\n CHANGE_HEADER_POSITION_FAIL: 'change_header_position_fail',\n SORT_CLICK: 'sort_click',\n /**\n * 执行完排序\n */\n AFTER_SORT: 'after_sort',\n FREEZE_CLICK: 'freeze_click',\n SCROLL: 'scroll',\n CAN_SCROLL: 'can_scroll',\n SCROLL_HORIZONTAL_END: 'scroll_horizontal_end',\n SCROLL_VERTICAL_END: 'scroll_vertical_end',\n DROPDOWN_MENU_CLICK: 'dropdown_menu_click',\n MOUSEOVER_CHART_SYMBOL: 'mouseover_chart_symbol',\n DRAG_SELECT_END: 'drag_select_end',\n COPY_DATA: 'copy_data',\n DROPDOWN_ICON_CLICK: 'dropdown_icon_click', // 点击下拉菜单按钮\n DROPDOWN_MENU_CLEAR: 'dropdown_menu_clear', // 清空下拉菜单事件(菜单显示时点击其他区域)\n\n TREE_HIERARCHY_STATE_CHANGE: 'tree_hierarchy_state_change', //树形结构展开收起的点击事件\n\n SHOW_MENU: 'show_menu',\n HIDE_MENU: 'hide_menu',\n\n ICON_CLICK: 'icon_click',\n\n LEGEND_ITEM_CLICK: 'legend_item_click',\n LEGEND_ITEM_HOVER: 'legend_item_hover',\n LEGEND_ITEM_UNHOVER: 'legend_item_unHover',\n LEGEND_CHANGE: 'legend_change',\n\n MOUSEENTER_AXIS: 'mouseenter_axis',\n MOUSELEAVE_AXIS: 'mouseleave_axis',\n\n CHECKBOX_STATE_CHANGE: 'checkbox_state_change',\n RADIO_STATE_CHANGE: 'radio_state_change',\n SWITCH_STATE_CHANGE: 'switch_state_change',\n BEFORE_SET_SIZE: 'before_set_size',\n BEFORE_INIT: 'before_init',\n AFTER_RENDER: 'after_render',\n INITIALIZED: 'initialized',\n CHANGE_CELL_VALUE: 'change_cell_value',\n DRAG_FILL_HANDLE_END: 'drag_fill_handle_end',\n MOUSEDOWN_FILL_HANDLE: 'mousedown_fill_handle',\n DBLCLICK_FILL_HANDLE: 'dblclick_fill_handle',\n\n EMPTY_TIP_CLICK: 'empty_tip_click',\n EMPTY_TIP_DBLCLICK: 'empty_tip_dblclick',\n\n BUTTON_CLICK: 'button_click',\n BEFORE_CACHE_CHART_IMAGE: 'before_cache_chart_image',\n PASTED_DATA: 'pasted_data'\n} as TableEvents;\n"]}
|
|
@@ -251,7 +251,7 @@ function syncGroupCollapseState(oldSource, newSource, oldGroupMap, newGroupMap)
|
|
|
251
251
|
for (let i = 0; i < oldSource.length; i++) {
|
|
252
252
|
const oldRecord = oldSource[i], newRecord = newSource[newGroupMap.get(oldRecord.vtableMergeName)];
|
|
253
253
|
(0, vutils_1.isValid)(newRecord) && (newRecord.hierarchyState = oldSource[i].hierarchyState),
|
|
254
|
-
(0, vutils_1.isArray)(oldRecord.children) && (0, vutils_1.isArray)(newRecord.children) && 0 !== oldRecord.map.size && 0 !== newRecord.map.size && syncGroupCollapseState(oldRecord.children, newRecord.children, oldRecord.map, newRecord.map);
|
|
254
|
+
(0, vutils_1.isArray)(null == oldRecord ? void 0 : oldRecord.children) && (0, vutils_1.isArray)(null == newRecord ? void 0 : newRecord.children) && 0 !== oldRecord.map.size && 0 !== newRecord.map.size && syncGroupCollapseState(oldRecord.children, newRecord.children, oldRecord.map, newRecord.map);
|
|
255
255
|
}
|
|
256
256
|
}
|
|
257
257
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/CachedDataSource.ts"],"names":[],"mappings":"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","file":"CachedDataSource.js","sourcesContent":["import { cloneDeep, isArray, isNumber, isValid } from '@visactor/vutils';\nimport type { ListTableConstructorOptions } from '../ts-types';\nimport {\n AggregationType,\n HierarchyState,\n type FieldData,\n type FieldDef,\n type IListTableDataConfig,\n type IPagination,\n type MaybePromise,\n type MaybePromiseOrUndefined\n} from '../ts-types';\nimport type { BaseTableAPI, ListTableProtected } from '../ts-types/base-table';\nimport type { ColumnData, ColumnsDefine } from '../ts-types/list-table/layout-map/api';\nimport type { DataSourceParam } from './DataSource';\nimport { DataSource, getValue, getValueFromDeepArray, sortRecordIndexs } from './DataSource';\nimport get from 'lodash/get';\n\n/** @private */\nfunction _setFieldCache(\n fCache: { [index: number]: Map<FieldDef, any> },\n index: number,\n field: FieldDef,\n\n value: any\n): void {\n const recCache = fCache[index] || (fCache[index] = new Map());\n recCache.set(field, value);\n}\n/**\n * table data source for caching Promise data\n *\n * @classdesc VTable.data.CachedDataSource\n * @memberof VTable.data\n */\nexport class CachedDataSource extends DataSource {\n /**\n * record cache 当用户定义的CachedDataSource.get为promise的时候 可以用rCache缓存已获取数据条目\n */\n private _recordCache: any[];\n /**\n * field cache 当用户定义field为promise的时候 可以用fCache缓存已获取值\n */\n private _fieldCache: { [index: number]: Map<FieldDef, any> };\n\n groupAggregator: any;\n private _isGrouped: boolean;\n\n static get EVENT_TYPE(): typeof DataSource.EVENT_TYPE {\n return DataSource.EVENT_TYPE;\n }\n static ofArray(\n array: any[],\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columns?: ColumnsDefine,\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ): CachedDataSource {\n return new CachedDataSource(\n {\n get: (index: number): any => {\n // if (Array.isArray(index)) {\n // return getValueFromDeepArray(array, index);\n // }\n return array[index];\n },\n length: array.length,\n records: array\n },\n dataConfig,\n pagination,\n columns,\n rowHierarchyType,\n hierarchyExpandLevel\n );\n }\n\n // _originalRecords: any[];\n constructor(\n opt?: DataSourceParam,\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columns?: ColumnsDefine,\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ) {\n let _isGrouped;\n if (isArray(dataConfig?.groupByRules)) {\n rowHierarchyType = 'tree';\n _isGrouped = true;\n }\n super(opt, dataConfig, pagination, columns, rowHierarchyType, hierarchyExpandLevel);\n this._isGrouped = _isGrouped;\n this._recordCache = [];\n this._fieldCache = {};\n }\n protected getOriginalRecord(index: number | number[]): MaybePromiseOrUndefined {\n if (isNumber(index) && this._recordCache && this._recordCache[index]) {\n return this._recordCache[index];\n }\n return super.getOriginalRecord(index);\n }\n protected getRawRecord(index: number | number[]): MaybePromiseOrUndefined {\n let originRecordIndex;\n if (this._isGrouped) {\n // in group mode, record with children is title, do not return record\n originRecordIndex = this.getOriginRecordIndexForGroup(index);\n if (isValid(originRecordIndex) && this.beforeChangedRecordsMap?.has(originRecordIndex.toString())) {\n return this.beforeChangedRecordsMap?.get(originRecordIndex.toString());\n }\n } else {\n if (this.beforeChangedRecordsMap?.has(index.toString())) {\n return this.beforeChangedRecordsMap?.get(index.toString());\n }\n }\n if (isNumber(index) && this._recordCache && this._recordCache[index]) {\n return this._recordCache[index];\n }\n // return super.getRawRecord(index);\n\n let data;\n if (!this.dataSourceObj.records) {\n data = (this as any)._get(index);\n } else {\n if (Array.isArray(index)) {\n data = getValueFromDeepArray(this.records, index);\n } else {\n data = this.records[index];\n }\n }\n return getValue(data, (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(index as number, val);\n });\n }\n protected getOriginalField<F extends FieldDef>(\n index: number,\n field: F,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n const rowCache = this._fieldCache && this._fieldCache[index];\n if (rowCache) {\n const cache = rowCache.get(field);\n if (cache) {\n return cache;\n }\n }\n return super.getOriginalField(index, field, col, row, table);\n }\n\n clearCache(): void {\n if (this._recordCache) {\n this._recordCache = [];\n }\n if (this._fieldCache) {\n this._fieldCache = {};\n }\n }\n\n protected fieldPromiseCallBack<F extends FieldDef>(index: number, field: F, value: MaybePromiseOrUndefined): void {\n _setFieldCache(this._fieldCache, index, field, value);\n }\n protected recordPromiseCallBack(index: number, record: MaybePromiseOrUndefined): void {\n this._recordCache && (this._recordCache[index] = record);\n }\n get records(): any[] {\n return Array.isArray(this._recordCache) && this._recordCache.length > 0 ? this._recordCache : super.records;\n }\n\n release(): void {\n super.release?.();\n this._recordCache = null;\n this._fieldCache = null;\n }\n\n _generateFieldAggragations() {\n super._generateFieldAggragations();\n // groupby aggragations\n if (isArray(this.dataConfig?.groupByRules)) {\n // const groupByKey = this.dataConfig.groupByRules[0];\n const groupByKeys = this.dataConfig.groupByRules;\n this.groupAggregator = new this.registedAggregators[AggregationType.CUSTOM]({\n field: '',\n aggregationFun: (values: any, records: any, field: any) => {\n const groupMap = new Map();\n const groupResult = [] as any[];\n for (let i = 0; i < records.length; i++) {\n dealWithGroup(records[i], groupResult, groupMap, groupByKeys, 0);\n }\n return groupResult;\n }\n });\n this.fieldAggregators.push(this.groupAggregator);\n }\n }\n\n processRecords(records: any[]) {\n const result = super.processRecords(records);\n const groupResult = this.groupAggregator?.value();\n if (groupResult) {\n // this._originalRecords = result;\n return groupResult;\n }\n return result;\n }\n\n getGroupLength() {\n return this.dataConfig?.groupByRules?.length ?? 0;\n }\n\n updateGroup() {\n this.clearCache();\n\n const oldSource = this.source;\n (this as any)._source = this.processRecords(this.dataSourceObj?.records ?? this.dataSourceObj);\n if (oldSource) {\n syncGroupCollapseState(oldSource, this.source);\n }\n\n // syncGroupCollapseState(this.source, newSource.source);\n this.sourceLength = this.source?.length || 0;\n this.sortedIndexMap.clear();\n this.currentIndexedData = Array.from({ length: this.sourceLength }, (_, i) => i);\n if (!this.userPagination) {\n this.pagination.perPageCount = this.sourceLength;\n this.pagination.totalCount = this.sourceLength;\n }\n\n this.initTreeHierarchyState();\n this.updatePagerData();\n }\n\n getOriginRecordIndexForGroup(recordIndex: number | number[]) {\n const targetRecord = this.getOriginalRecord(recordIndex);\n if (!isValid(targetRecord)) {\n return undefined;\n }\n if (targetRecord.children && targetRecord.children.length > 0) {\n return undefined;\n }\n for (let i = 0; i < this.dataSourceObj.records.length; i++) {\n if (this.dataSourceObj.records[i] === targetRecord) {\n return i;\n }\n }\n return undefined;\n }\n\n addRecordsForGroup(recordArr: any[], recordIndex?: number | number[]) {\n if (!isArray(recordArr) || recordArr.length === 0) {\n return;\n }\n let originRecordIndex = this.getOriginRecordIndexForGroup(recordIndex);\n\n if (originRecordIndex === undefined || originRecordIndex > this.dataSourceObj.records) {\n originRecordIndex = this.dataSourceObj.records.length;\n }\n this.dataSourceObj.records.splice(originRecordIndex, 0, ...recordArr);\n\n this.adjustBeforeChangedRecordsMap(originRecordIndex, recordArr.length);\n\n this.updateGroup();\n }\n\n deleteRecordsForGroup(recordIndexs: (number | number[])[]) {\n if (!isArray(recordIndexs) || recordIndexs.length === 0) {\n return;\n }\n const recordIndexsMaxToMin = sortRecordIndexs(recordIndexs, -1);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (isNumber(recordIndex) && (recordIndex >= this.sourceLength || recordIndex < 0)) {\n continue;\n }\n const originRecordIndex = this.getOriginRecordIndexForGroup(recordIndex);\n\n this.beforeChangedRecordsMap.delete(originRecordIndex.toString());\n this.dataSourceObj.records.splice(originRecordIndex, 1);\n this.sourceLength -= 1;\n\n this.adjustBeforeChangedRecordsMap(originRecordIndex, 1, 'delete');\n }\n\n this.updateGroup();\n }\n\n updateRecordsForGroup(records: any[], recordIndexs: (number | number[])[]) {\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (isNumber(recordIndex) && (recordIndex >= this.sourceLength || recordIndex < 0)) {\n continue;\n }\n const originRecordIndex = this.getOriginRecordIndexForGroup(recordIndex);\n this.beforeChangedRecordsMap.delete(originRecordIndex.toString());\n this.dataSourceObj.records[originRecordIndex] = records[index];\n }\n\n this.updateGroup();\n }\n\n addRecordsForTree(recordArr: any[], recordIndex?: number | number[]) {\n if (!isArray(recordArr) || recordArr.length === 0) {\n return;\n }\n\n this.adjustBeforeChangedRecordsMap(recordIndex, recordArr.length);\n\n if (isNumber(recordIndex)) {\n this.dataSourceObj.records.splice(recordIndex, 0, ...recordArr);\n } else {\n const recordIndex_copy = [...recordIndex];\n const index = recordIndex_copy.pop();\n const parentRecord = this.getOriginalRecord(recordIndex_copy);\n if (parentRecord.children) {\n parentRecord.children.splice(index, 0, ...recordArr);\n } else {\n parentRecord.children = recordArr;\n }\n }\n\n this.initTreeHierarchyState();\n this.updatePagination();\n }\n\n deleteRecordsForTree(recordIndexs: (number | number[])[]) {\n if (!isArray(recordIndexs) || recordIndexs.length === 0) {\n return [];\n }\n const recordIndexsMaxToMin = sortRecordIndexs(recordIndexs, -1);\n const deletedRecordIndexs = [];\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (isNumber(recordIndex) && (recordIndex >= this.sourceLength || recordIndex < 0)) {\n continue;\n }\n this.beforeChangedRecordsMap.delete(recordIndex.toString());\n\n if (isNumber(recordIndex)) {\n this.dataSourceObj.records.splice(recordIndex, 1);\n } else {\n const recordIndex_copy = [...recordIndex];\n const index = recordIndex_copy.pop();\n const parentRecord = this.getOriginalRecord(recordIndex_copy);\n // delete parentRecord.children[index];\n parentRecord.children.splice(index, 1);\n }\n\n this.adjustBeforeChangedRecordsMap(recordIndex, 1, 'delete');\n deletedRecordIndexs.push(recordIndex);\n }\n\n this.initTreeHierarchyState();\n this.updatePagination();\n return deletedRecordIndexs;\n }\n\n updateRecordsForTree(records: any[], recordIndexs: (number | number[])[]) {\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n const record = records[index];\n if (isNumber(recordIndex) && (recordIndex >= this.sourceLength || recordIndex < 0)) {\n continue;\n }\n this.beforeChangedRecordsMap.delete(recordIndex.toString());\n\n if (isNumber(recordIndex)) {\n this.dataSourceObj.records.splice(recordIndex, 1, record);\n } else {\n const recordIndex_copy = [...recordIndex];\n const index = recordIndex_copy.pop();\n const parentRecord = this.getOriginalRecord(recordIndex_copy);\n parentRecord.children.splice(index, 1, record);\n }\n }\n\n this.initTreeHierarchyState();\n this.updatePagerData();\n }\n\n adjustBeforeChangedRecordsMap(insertIndex: number | number[], insertCount: number, type: 'add' | 'delete' = 'add') {\n if (this.rowHierarchyType === 'tree') {\n let insertIndexArr: number[];\n if (isNumber(insertIndex)) {\n insertIndexArr = [insertIndex];\n } else {\n insertIndexArr = insertIndex;\n }\n\n const targetResult: { originKey: string; targetKey: string; value: any }[] = [];\n this.beforeChangedRecordsMap.forEach((value, key) => {\n const keyArray = key.split(',');\n const length = Math.max(keyArray.length, insertIndexArr.length);\n for (let i = 0; i < length; i++) {\n const current = insertIndexArr[i] ?? -1;\n const keyIndex = Number(keyArray[i]) ?? -1;\n if (\n current < keyIndex ||\n (current === keyIndex && i === keyArray.length - 1 && i === insertIndexArr.length - 1)\n ) {\n keyArray[i] = (keyIndex + (type === 'add' ? insertCount : -insertCount)).toString();\n targetResult.push({\n originKey: key,\n targetKey: keyArray.toString(),\n value\n });\n return;\n }\n }\n });\n targetResult.forEach(({ originKey, targetKey, value }) => {\n this.beforeChangedRecordsMap.delete(originKey);\n this.beforeChangedRecordsMap.set(targetKey, value);\n });\n } else {\n super.adjustBeforeChangedRecordsMap(insertIndex as number, insertCount, type);\n }\n }\n\n cacheBeforeChangedRecord(dataIndex: number | number[], table?: BaseTableAPI) {\n const originRecord = this.getOriginalRecord(dataIndex);\n if ((table.internalProps as ListTableProtected).groupBy) {\n dataIndex = this.getOriginRecordIndexForGroup(dataIndex);\n }\n if (!this.beforeChangedRecordsMap.has(dataIndex.toString())) {\n this.beforeChangedRecordsMap.set(\n dataIndex.toString(),\n cloneDeep(originRecord, undefined, ['vtable_gantt_linkedFrom', 'vtable_gantt_linkedTo']) ?? {}\n );\n }\n }\n\n getGroupSeriesNumber(showIndex: number) {\n const recordIndex = this.dataSource.currentIndexedData[showIndex] as number[];\n const parentRecordIndexLength = recordIndex.length - 1;\n\n let recordIndexLength = recordIndex.length;\n let i = 1;\n for (; recordIndexLength > parentRecordIndexLength; i++) {\n const index = this.dataSource.currentIndexedData[showIndex - i];\n recordIndexLength = isNumber(index) ? 1 : (index as number[]).length;\n }\n return i - 1;\n }\n}\n\nfunction dealWithGroup(record: any, children: any[], map: Map<number, any>, groupByKeys: string[], level: number): any {\n const groupByKey = groupByKeys[level];\n if (!isValid(groupByKey)) {\n children.push(record);\n return;\n }\n const value = get(record, groupByKey);\n if (value !== undefined) {\n if (map.has(value)) {\n const index = map.get(value);\n // children[index].children.push(record);\n return dealWithGroup(record, children[index].children, children[index].map, groupByKeys, level + 1);\n }\n map.set(value, children.length);\n children.push({\n vtableMerge: true,\n vtableMergeName: value,\n children: [] as any,\n map: new Map()\n });\n return dealWithGroup(\n record,\n children[children.length - 1].children,\n children[children.length - 1].map,\n groupByKeys,\n level + 1\n );\n }\n}\n\nfunction syncGroupCollapseState(\n oldSource: any,\n newSource: any,\n oldGroupMap?: Map<string, number>,\n newGroupMap?: Map<string, number>\n) {\n if (!oldGroupMap) {\n oldGroupMap = new Map();\n for (let i = 0; i < oldSource.length; i++) {\n const record = oldSource[i];\n if (record.vtableMerge) {\n oldGroupMap.set(record.vtableMergeName, i);\n }\n }\n }\n\n if (!newGroupMap) {\n newGroupMap = new Map();\n for (let i = 0; i < newSource.length; i++) {\n const record = newSource[i];\n if (record.vtableMerge) {\n newGroupMap.set(record.vtableMergeName, i);\n }\n }\n }\n\n for (let i = 0; i < oldSource.length; i++) {\n const oldRecord = oldSource[i];\n const newRecord = newSource[newGroupMap.get(oldRecord.vtableMergeName)];\n if (isValid(newRecord)) {\n newRecord.hierarchyState = oldSource[i].hierarchyState;\n }\n if (\n isArray(oldRecord.children) &&\n isArray(newRecord.children) &&\n oldRecord.map.size !== 0 &&\n newRecord.map.size !== 0\n ) {\n syncGroupCollapseState(oldRecord.children, newRecord.children, oldRecord.map, newRecord.map);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data/CachedDataSource.ts"],"names":[],"mappings":"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","file":"CachedDataSource.js","sourcesContent":["import { cloneDeep, isArray, isNumber, isValid } from '@visactor/vutils';\nimport type { ListTableConstructorOptions } from '../ts-types';\nimport {\n AggregationType,\n HierarchyState,\n type FieldData,\n type FieldDef,\n type IListTableDataConfig,\n type IPagination,\n type MaybePromise,\n type MaybePromiseOrUndefined\n} from '../ts-types';\nimport type { BaseTableAPI, ListTableProtected } from '../ts-types/base-table';\nimport type { ColumnData, ColumnsDefine } from '../ts-types/list-table/layout-map/api';\nimport type { DataSourceParam } from './DataSource';\nimport { DataSource, getValue, getValueFromDeepArray, sortRecordIndexs } from './DataSource';\nimport get from 'lodash/get';\n\n/** @private */\nfunction _setFieldCache(\n fCache: { [index: number]: Map<FieldDef, any> },\n index: number,\n field: FieldDef,\n\n value: any\n): void {\n const recCache = fCache[index] || (fCache[index] = new Map());\n recCache.set(field, value);\n}\n/**\n * table data source for caching Promise data\n *\n * @classdesc VTable.data.CachedDataSource\n * @memberof VTable.data\n */\nexport class CachedDataSource extends DataSource {\n /**\n * record cache 当用户定义的CachedDataSource.get为promise的时候 可以用rCache缓存已获取数据条目\n */\n private _recordCache: any[];\n /**\n * field cache 当用户定义field为promise的时候 可以用fCache缓存已获取值\n */\n private _fieldCache: { [index: number]: Map<FieldDef, any> };\n\n groupAggregator: any;\n private _isGrouped: boolean;\n\n static get EVENT_TYPE(): typeof DataSource.EVENT_TYPE {\n return DataSource.EVENT_TYPE;\n }\n static ofArray(\n array: any[],\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columns?: ColumnsDefine,\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ): CachedDataSource {\n return new CachedDataSource(\n {\n get: (index: number): any => {\n // if (Array.isArray(index)) {\n // return getValueFromDeepArray(array, index);\n // }\n return array[index];\n },\n length: array.length,\n records: array\n },\n dataConfig,\n pagination,\n columns,\n rowHierarchyType,\n hierarchyExpandLevel\n );\n }\n\n // _originalRecords: any[];\n constructor(\n opt?: DataSourceParam,\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columns?: ColumnsDefine,\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ) {\n let _isGrouped;\n if (isArray(dataConfig?.groupByRules)) {\n rowHierarchyType = 'tree';\n _isGrouped = true;\n }\n super(opt, dataConfig, pagination, columns, rowHierarchyType, hierarchyExpandLevel);\n this._isGrouped = _isGrouped;\n this._recordCache = [];\n this._fieldCache = {};\n }\n protected getOriginalRecord(index: number | number[]): MaybePromiseOrUndefined {\n if (isNumber(index) && this._recordCache && this._recordCache[index]) {\n return this._recordCache[index];\n }\n return super.getOriginalRecord(index);\n }\n protected getRawRecord(index: number | number[]): MaybePromiseOrUndefined {\n let originRecordIndex;\n if (this._isGrouped) {\n // in group mode, record with children is title, do not return record\n originRecordIndex = this.getOriginRecordIndexForGroup(index);\n if (isValid(originRecordIndex) && this.beforeChangedRecordsMap?.has(originRecordIndex.toString())) {\n return this.beforeChangedRecordsMap?.get(originRecordIndex.toString());\n }\n } else {\n if (this.beforeChangedRecordsMap?.has(index.toString())) {\n return this.beforeChangedRecordsMap?.get(index.toString());\n }\n }\n if (isNumber(index) && this._recordCache && this._recordCache[index]) {\n return this._recordCache[index];\n }\n // return super.getRawRecord(index);\n\n let data;\n if (!this.dataSourceObj.records) {\n data = (this as any)._get(index);\n } else {\n if (Array.isArray(index)) {\n data = getValueFromDeepArray(this.records, index);\n } else {\n data = this.records[index];\n }\n }\n return getValue(data, (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(index as number, val);\n });\n }\n protected getOriginalField<F extends FieldDef>(\n index: number,\n field: F,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n const rowCache = this._fieldCache && this._fieldCache[index];\n if (rowCache) {\n const cache = rowCache.get(field);\n if (cache) {\n return cache;\n }\n }\n return super.getOriginalField(index, field, col, row, table);\n }\n\n clearCache(): void {\n if (this._recordCache) {\n this._recordCache = [];\n }\n if (this._fieldCache) {\n this._fieldCache = {};\n }\n }\n\n protected fieldPromiseCallBack<F extends FieldDef>(index: number, field: F, value: MaybePromiseOrUndefined): void {\n _setFieldCache(this._fieldCache, index, field, value);\n }\n protected recordPromiseCallBack(index: number, record: MaybePromiseOrUndefined): void {\n this._recordCache && (this._recordCache[index] = record);\n }\n get records(): any[] {\n return Array.isArray(this._recordCache) && this._recordCache.length > 0 ? this._recordCache : super.records;\n }\n\n release(): void {\n super.release?.();\n this._recordCache = null;\n this._fieldCache = null;\n }\n\n _generateFieldAggragations() {\n super._generateFieldAggragations();\n // groupby aggragations\n if (isArray(this.dataConfig?.groupByRules)) {\n // const groupByKey = this.dataConfig.groupByRules[0];\n const groupByKeys = this.dataConfig.groupByRules;\n this.groupAggregator = new this.registedAggregators[AggregationType.CUSTOM]({\n field: '',\n aggregationFun: (values: any, records: any, field: any) => {\n const groupMap = new Map();\n const groupResult = [] as any[];\n for (let i = 0; i < records.length; i++) {\n dealWithGroup(records[i], groupResult, groupMap, groupByKeys, 0);\n }\n return groupResult;\n }\n });\n this.fieldAggregators.push(this.groupAggregator);\n }\n }\n\n processRecords(records: any[]) {\n const result = super.processRecords(records);\n const groupResult = this.groupAggregator?.value();\n if (groupResult) {\n // this._originalRecords = result;\n return groupResult;\n }\n return result;\n }\n\n getGroupLength() {\n return this.dataConfig?.groupByRules?.length ?? 0;\n }\n\n updateGroup() {\n this.clearCache();\n\n const oldSource = this.source;\n (this as any)._source = this.processRecords(this.dataSourceObj?.records ?? this.dataSourceObj);\n if (oldSource) {\n syncGroupCollapseState(oldSource, this.source);\n }\n\n // syncGroupCollapseState(this.source, newSource.source);\n this.sourceLength = this.source?.length || 0;\n this.sortedIndexMap.clear();\n this.currentIndexedData = Array.from({ length: this.sourceLength }, (_, i) => i);\n if (!this.userPagination) {\n this.pagination.perPageCount = this.sourceLength;\n this.pagination.totalCount = this.sourceLength;\n }\n\n this.initTreeHierarchyState();\n this.updatePagerData();\n }\n\n getOriginRecordIndexForGroup(recordIndex: number | number[]) {\n const targetRecord = this.getOriginalRecord(recordIndex);\n if (!isValid(targetRecord)) {\n return undefined;\n }\n if (targetRecord.children && targetRecord.children.length > 0) {\n return undefined;\n }\n for (let i = 0; i < this.dataSourceObj.records.length; i++) {\n if (this.dataSourceObj.records[i] === targetRecord) {\n return i;\n }\n }\n return undefined;\n }\n\n addRecordsForGroup(recordArr: any[], recordIndex?: number | number[]) {\n if (!isArray(recordArr) || recordArr.length === 0) {\n return;\n }\n let originRecordIndex = this.getOriginRecordIndexForGroup(recordIndex);\n\n if (originRecordIndex === undefined || originRecordIndex > this.dataSourceObj.records) {\n originRecordIndex = this.dataSourceObj.records.length;\n }\n this.dataSourceObj.records.splice(originRecordIndex, 0, ...recordArr);\n\n this.adjustBeforeChangedRecordsMap(originRecordIndex, recordArr.length);\n\n this.updateGroup();\n }\n\n deleteRecordsForGroup(recordIndexs: (number | number[])[]) {\n if (!isArray(recordIndexs) || recordIndexs.length === 0) {\n return;\n }\n const recordIndexsMaxToMin = sortRecordIndexs(recordIndexs, -1);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (isNumber(recordIndex) && (recordIndex >= this.sourceLength || recordIndex < 0)) {\n continue;\n }\n const originRecordIndex = this.getOriginRecordIndexForGroup(recordIndex);\n\n this.beforeChangedRecordsMap.delete(originRecordIndex.toString());\n this.dataSourceObj.records.splice(originRecordIndex, 1);\n this.sourceLength -= 1;\n\n this.adjustBeforeChangedRecordsMap(originRecordIndex, 1, 'delete');\n }\n\n this.updateGroup();\n }\n\n updateRecordsForGroup(records: any[], recordIndexs: (number | number[])[]) {\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (isNumber(recordIndex) && (recordIndex >= this.sourceLength || recordIndex < 0)) {\n continue;\n }\n const originRecordIndex = this.getOriginRecordIndexForGroup(recordIndex);\n this.beforeChangedRecordsMap.delete(originRecordIndex.toString());\n this.dataSourceObj.records[originRecordIndex] = records[index];\n }\n\n this.updateGroup();\n }\n\n addRecordsForTree(recordArr: any[], recordIndex?: number | number[]) {\n if (!isArray(recordArr) || recordArr.length === 0) {\n return;\n }\n\n this.adjustBeforeChangedRecordsMap(recordIndex, recordArr.length);\n\n if (isNumber(recordIndex)) {\n this.dataSourceObj.records.splice(recordIndex, 0, ...recordArr);\n } else {\n const recordIndex_copy = [...recordIndex];\n const index = recordIndex_copy.pop();\n const parentRecord = this.getOriginalRecord(recordIndex_copy);\n if (parentRecord.children) {\n parentRecord.children.splice(index, 0, ...recordArr);\n } else {\n parentRecord.children = recordArr;\n }\n }\n\n this.initTreeHierarchyState();\n this.updatePagination();\n }\n\n deleteRecordsForTree(recordIndexs: (number | number[])[]) {\n if (!isArray(recordIndexs) || recordIndexs.length === 0) {\n return [];\n }\n const recordIndexsMaxToMin = sortRecordIndexs(recordIndexs, -1);\n const deletedRecordIndexs = [];\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (isNumber(recordIndex) && (recordIndex >= this.sourceLength || recordIndex < 0)) {\n continue;\n }\n this.beforeChangedRecordsMap.delete(recordIndex.toString());\n\n if (isNumber(recordIndex)) {\n this.dataSourceObj.records.splice(recordIndex, 1);\n } else {\n const recordIndex_copy = [...recordIndex];\n const index = recordIndex_copy.pop();\n const parentRecord = this.getOriginalRecord(recordIndex_copy);\n // delete parentRecord.children[index];\n parentRecord.children.splice(index, 1);\n }\n\n this.adjustBeforeChangedRecordsMap(recordIndex, 1, 'delete');\n deletedRecordIndexs.push(recordIndex);\n }\n\n this.initTreeHierarchyState();\n this.updatePagination();\n return deletedRecordIndexs;\n }\n\n updateRecordsForTree(records: any[], recordIndexs: (number | number[])[]) {\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n const record = records[index];\n if (isNumber(recordIndex) && (recordIndex >= this.sourceLength || recordIndex < 0)) {\n continue;\n }\n this.beforeChangedRecordsMap.delete(recordIndex.toString());\n\n if (isNumber(recordIndex)) {\n this.dataSourceObj.records.splice(recordIndex, 1, record);\n } else {\n const recordIndex_copy = [...recordIndex];\n const index = recordIndex_copy.pop();\n const parentRecord = this.getOriginalRecord(recordIndex_copy);\n parentRecord.children.splice(index, 1, record);\n }\n }\n\n this.initTreeHierarchyState();\n this.updatePagerData();\n }\n\n adjustBeforeChangedRecordsMap(insertIndex: number | number[], insertCount: number, type: 'add' | 'delete' = 'add') {\n if (this.rowHierarchyType === 'tree') {\n let insertIndexArr: number[];\n if (isNumber(insertIndex)) {\n insertIndexArr = [insertIndex];\n } else {\n insertIndexArr = insertIndex;\n }\n\n const targetResult: { originKey: string; targetKey: string; value: any }[] = [];\n this.beforeChangedRecordsMap.forEach((value, key) => {\n const keyArray = key.split(',');\n const length = Math.max(keyArray.length, insertIndexArr.length);\n for (let i = 0; i < length; i++) {\n const current = insertIndexArr[i] ?? -1;\n const keyIndex = Number(keyArray[i]) ?? -1;\n if (\n current < keyIndex ||\n (current === keyIndex && i === keyArray.length - 1 && i === insertIndexArr.length - 1)\n ) {\n keyArray[i] = (keyIndex + (type === 'add' ? insertCount : -insertCount)).toString();\n targetResult.push({\n originKey: key,\n targetKey: keyArray.toString(),\n value\n });\n return;\n }\n }\n });\n targetResult.forEach(({ originKey, targetKey, value }) => {\n this.beforeChangedRecordsMap.delete(originKey);\n this.beforeChangedRecordsMap.set(targetKey, value);\n });\n } else {\n super.adjustBeforeChangedRecordsMap(insertIndex as number, insertCount, type);\n }\n }\n\n cacheBeforeChangedRecord(dataIndex: number | number[], table?: BaseTableAPI) {\n const originRecord = this.getOriginalRecord(dataIndex);\n if ((table.internalProps as ListTableProtected).groupBy) {\n dataIndex = this.getOriginRecordIndexForGroup(dataIndex);\n }\n if (!this.beforeChangedRecordsMap.has(dataIndex.toString())) {\n this.beforeChangedRecordsMap.set(\n dataIndex.toString(),\n cloneDeep(originRecord, undefined, ['vtable_gantt_linkedFrom', 'vtable_gantt_linkedTo']) ?? {}\n );\n }\n }\n\n getGroupSeriesNumber(showIndex: number) {\n const recordIndex = this.dataSource.currentIndexedData[showIndex] as number[];\n const parentRecordIndexLength = recordIndex.length - 1;\n\n let recordIndexLength = recordIndex.length;\n let i = 1;\n for (; recordIndexLength > parentRecordIndexLength; i++) {\n const index = this.dataSource.currentIndexedData[showIndex - i];\n recordIndexLength = isNumber(index) ? 1 : (index as number[]).length;\n }\n return i - 1;\n }\n}\n\nfunction dealWithGroup(record: any, children: any[], map: Map<number, any>, groupByKeys: string[], level: number): any {\n const groupByKey = groupByKeys[level];\n if (!isValid(groupByKey)) {\n children.push(record);\n return;\n }\n const value = get(record, groupByKey);\n if (value !== undefined) {\n if (map.has(value)) {\n const index = map.get(value);\n // children[index].children.push(record);\n return dealWithGroup(record, children[index].children, children[index].map, groupByKeys, level + 1);\n }\n map.set(value, children.length);\n children.push({\n vtableMerge: true,\n vtableMergeName: value,\n children: [] as any,\n map: new Map()\n });\n return dealWithGroup(\n record,\n children[children.length - 1].children,\n children[children.length - 1].map,\n groupByKeys,\n level + 1\n );\n }\n}\n\nfunction syncGroupCollapseState(\n oldSource: any,\n newSource: any,\n oldGroupMap?: Map<string, number>,\n newGroupMap?: Map<string, number>\n) {\n if (!oldGroupMap) {\n oldGroupMap = new Map();\n for (let i = 0; i < oldSource.length; i++) {\n const record = oldSource[i];\n if (record.vtableMerge) {\n oldGroupMap.set(record.vtableMergeName, i);\n }\n }\n }\n\n if (!newGroupMap) {\n newGroupMap = new Map();\n for (let i = 0; i < newSource.length; i++) {\n const record = newSource[i];\n if (record.vtableMerge) {\n newGroupMap.set(record.vtableMergeName, i);\n }\n }\n }\n\n for (let i = 0; i < oldSource.length; i++) {\n const oldRecord = oldSource[i];\n const newRecord = newSource[newGroupMap.get(oldRecord.vtableMergeName)];\n if (isValid(newRecord)) {\n newRecord.hierarchyState = oldSource[i].hierarchyState;\n }\n if (\n isArray(oldRecord?.children) &&\n isArray(newRecord?.children) &&\n oldRecord.map.size !== 0 &&\n newRecord.map.size !== 0\n ) {\n syncGroupCollapseState(oldRecord.children, newRecord.children, oldRecord.map, newRecord.map);\n }\n }\n}\n"]}
|