@visactor/vtable 0.15.0-alpha.3 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/ListTable.d.ts +12 -0
- package/cjs/ListTable.js +127 -13
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotChart.d.ts +1 -0
- package/cjs/PivotChart.js +36 -26
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/PivotTable.d.ts +5 -1
- package/cjs/PivotTable.js +109 -63
- package/cjs/PivotTable.js.map +1 -1
- package/cjs/core/BaseTable.d.ts +1 -2
- package/cjs/core/BaseTable.js +72 -92
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/TABLE_EVENT_TYPE.d.ts +2 -0
- package/cjs/core/TABLE_EVENT_TYPE.js +3 -1
- package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/cjs/data/DataSource.d.ts +7 -1
- package/cjs/data/DataSource.js +43 -8
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/dataset/dataset.d.ts +3 -1
- package/cjs/dataset/dataset.js +20 -15
- package/cjs/dataset/dataset.js.map +1 -1
- package/cjs/edit/edit-manager.d.ts +14 -0
- package/cjs/edit/edit-manager.js +72 -0
- package/cjs/edit/edit-manager.js.map +1 -0
- package/cjs/edit/editors.d.ts +5 -0
- package/cjs/edit/editors.js +10 -0
- package/cjs/edit/editors.js.map +1 -0
- package/cjs/event/event.d.ts +3 -1
- package/cjs/event/event.js +5 -1
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/listener/container-dom.js +5 -1
- package/cjs/event/listener/container-dom.js.map +1 -1
- package/cjs/event/listener/table-group.d.ts +1 -0
- package/cjs/event/listener/table-group.js +41 -27
- package/cjs/event/listener/table-group.js.map +1 -1
- package/cjs/event/media-click.js +1 -2
- package/cjs/event/sparkline-event.js +2 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/layout/pivot-header-layout.d.ts +8 -1
- package/cjs/layout/pivot-header-layout.js +47 -22
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/layout/pivot-layout-helper.d.ts +11 -0
- package/cjs/layout/pivot-layout-helper.js +24 -2
- package/cjs/layout/pivot-layout-helper.js.map +1 -1
- package/cjs/layout/simple-header-layout.d.ts +3 -1
- package/cjs/layout/simple-header-layout.js +11 -9
- package/cjs/layout/simple-header-layout.js.map +1 -1
- package/cjs/register.d.ts +2 -0
- package/cjs/register.js +8 -3
- package/cjs/register.js.map +1 -1
- package/cjs/scenegraph/component/menu.d.ts +41 -0
- package/cjs/scenegraph/graphic/icon.js +5 -5
- package/cjs/scenegraph/graphic/icon.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.d.ts +1 -1
- package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js +30 -58
- package/cjs/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/proxy.d.ts +1 -1
- package/cjs/scenegraph/group-creater/progress/proxy.js +1 -3
- package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/cjs/scenegraph/icon/icon-update.js +4 -4
- package/cjs/scenegraph/icon/icon-update.js.map +1 -1
- package/cjs/scenegraph/layout/compute-col-width.d.ts +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js +10 -8
- package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +1 -0
- package/cjs/scenegraph/scenegraph.js +19 -12
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/scenegraph/select/update-select-border.js +5 -5
- package/cjs/scenegraph/select/update-select-border.js.map +1 -1
- package/cjs/state/resize/update-resize-column.js +15 -6
- package/cjs/state/resize/update-resize-column.js.map +1 -1
- package/cjs/state/state.js +5 -4
- package/cjs/state/state.js.map +1 -1
- package/cjs/themes/ARCO.js +1 -1
- package/cjs/themes/BRIGHT.js +1 -2
- package/cjs/themes/DARK.js +1 -1
- package/cjs/themes/DEFAULT.js +1 -1
- package/cjs/themes/SIMPLIFY.js +1 -1
- package/cjs/themes/theme.js +1 -1
- package/cjs/tools/LimitPromiseQueue.js +1 -1
- package/cjs/tools/NumberMap.js +1 -1
- package/cjs/tools/Rect.js +2 -1
- package/cjs/tools/calc.js +1 -1
- package/cjs/tools/debounce.js +1 -1
- package/cjs/tools/diff-cell.js +2 -2
- package/cjs/tools/dom.js +1 -1
- package/cjs/tools/env.js +1 -1
- package/cjs/tools/global.js +1 -1
- package/cjs/tools/helper.js +1 -1
- package/cjs/ts-types/base-table.d.ts +2 -2
- package/cjs/ts-types/base-table.js +1 -1
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/common.d.ts +6 -0
- package/cjs/ts-types/common.js +1 -1
- package/cjs/ts-types/common.js.map +1 -1
- package/cjs/ts-types/component/title.d.ts +3 -3
- package/cjs/ts-types/component/title.js.map +1 -1
- package/cjs/ts-types/events.d.ts +12 -2
- package/cjs/ts-types/events.js.map +1 -1
- package/cjs/ts-types/list-table/define/basic-define.d.ts +5 -1
- package/cjs/ts-types/list-table/define/basic-define.js.map +1 -1
- package/cjs/ts-types/list-table/layout-map/api.d.ts +1 -1
- package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +13 -1
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/dist/vtable.js +9136 -25006
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.d.ts +12 -0
- package/es/ListTable.js +111 -12
- package/es/ListTable.js.map +1 -1
- package/es/PivotChart.d.ts +1 -0
- package/es/PivotChart.js +36 -27
- package/es/PivotChart.js.map +1 -1
- package/es/PivotTable.d.ts +5 -1
- package/es/PivotTable.js +104 -61
- package/es/PivotTable.js.map +1 -1
- package/es/core/BaseTable.d.ts +1 -2
- package/es/core/BaseTable.js +74 -94
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/TABLE_EVENT_TYPE.d.ts +2 -0
- package/es/core/TABLE_EVENT_TYPE.js +3 -1
- package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/es/data/DataSource.d.ts +7 -1
- package/es/data/DataSource.js +44 -9
- package/es/data/DataSource.js.map +1 -1
- package/es/dataset/dataset.d.ts +3 -1
- package/es/dataset/dataset.js +20 -15
- package/es/dataset/dataset.js.map +1 -1
- package/es/edit/edit-manager.d.ts +14 -0
- package/es/edit/edit-manager.js +66 -0
- package/es/edit/edit-manager.js.map +1 -0
- package/es/edit/editors.d.ts +5 -0
- package/es/edit/editors.js +6 -0
- package/es/edit/editors.js.map +1 -0
- package/es/event/event.d.ts +3 -1
- package/es/event/event.js +5 -2
- package/es/event/event.js.map +1 -1
- package/es/event/listener/container-dom.js +5 -1
- package/es/event/listener/container-dom.js.map +1 -1
- package/es/event/listener/table-group.d.ts +1 -0
- package/es/event/listener/table-group.js +40 -24
- package/es/event/listener/table-group.js.map +1 -1
- package/es/event/media-click.js +1 -2
- package/es/event/sparkline-event.js +2 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/layout/pivot-header-layout.d.ts +8 -1
- package/es/layout/pivot-header-layout.js +48 -23
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/layout/pivot-layout-helper.d.ts +11 -0
- package/es/layout/pivot-layout-helper.js +21 -0
- package/es/layout/pivot-layout-helper.js.map +1 -1
- package/es/layout/simple-header-layout.d.ts +3 -1
- package/es/layout/simple-header-layout.js +11 -9
- package/es/layout/simple-header-layout.js.map +1 -1
- package/es/register.d.ts +2 -0
- package/es/register.js +6 -0
- package/es/register.js.map +1 -1
- package/es/scenegraph/component/menu.d.ts +41 -0
- package/es/scenegraph/graphic/icon.js +5 -5
- package/es/scenegraph/graphic/icon.js.map +1 -1
- package/es/scenegraph/group-creater/progress/create-group-for-first-screen.d.ts +1 -1
- package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js +29 -57
- package/es/scenegraph/group-creater/progress/create-group-for-first-screen.js.map +1 -1
- package/es/scenegraph/group-creater/progress/proxy.d.ts +1 -1
- package/es/scenegraph/group-creater/progress/proxy.js +1 -3
- package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/es/scenegraph/icon/icon-update.js +4 -4
- package/es/scenegraph/icon/icon-update.js.map +1 -1
- package/es/scenegraph/layout/compute-col-width.d.ts +1 -1
- package/es/scenegraph/layout/compute-col-width.js +10 -8
- package/es/scenegraph/layout/compute-col-width.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +1 -0
- package/es/scenegraph/scenegraph.js +19 -12
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/scenegraph/select/update-select-border.js +5 -5
- package/es/scenegraph/select/update-select-border.js.map +1 -1
- package/es/state/resize/update-resize-column.js +15 -6
- package/es/state/resize/update-resize-column.js.map +1 -1
- package/es/state/state.js +5 -4
- package/es/state/state.js.map +1 -1
- package/es/themes/ARCO.js +1 -1
- package/es/themes/BRIGHT.js +1 -2
- package/es/themes/DARK.js +1 -1
- package/es/themes/DEFAULT.js +1 -1
- package/es/themes/SIMPLIFY.js +1 -1
- package/es/themes/theme.js +1 -1
- package/es/tools/LimitPromiseQueue.js +1 -1
- package/es/tools/NumberMap.js +1 -1
- package/es/tools/Rect.js +2 -1
- package/es/tools/calc.js +1 -1
- package/es/tools/debounce.js +1 -1
- package/es/tools/diff-cell.js +1 -1
- package/es/tools/dom.js +1 -1
- package/es/tools/env.js +1 -1
- package/es/tools/global.js +1 -1
- package/es/tools/helper.js +1 -1
- package/es/ts-types/base-table.d.ts +2 -2
- package/es/ts-types/base-table.js +1 -1
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/common.d.ts +6 -0
- package/es/ts-types/common.js +1 -1
- package/es/ts-types/common.js.map +1 -1
- package/es/ts-types/component/title.d.ts +3 -3
- package/es/ts-types/component/title.js.map +1 -1
- package/es/ts-types/events.d.ts +12 -2
- package/es/ts-types/events.js.map +1 -1
- package/es/ts-types/list-table/define/basic-define.d.ts +5 -1
- package/es/ts-types/list-table/define/basic-define.js.map +1 -1
- package/es/ts-types/list-table/layout-map/api.d.ts +1 -1
- package/es/ts-types/list-table/layout-map/api.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +13 -1
- package/es/ts-types/table-engine.js.map +1 -1
- package/package.json +11 -7
|
@@ -20,6 +20,7 @@ export interface TableEvents {
|
|
|
20
20
|
DROPDOWN_MENU_CLICK: 'dropdown_menu_click';
|
|
21
21
|
MOUSEOVER_CHART_SYMBOL: 'mouseover_chart_symbol';
|
|
22
22
|
DRAG_SELECT_END: 'drag_select_end';
|
|
23
|
+
COPY_DATA: 'copy_data';
|
|
23
24
|
DROPDOWN_ICON_CLICK: 'dropdown_icon_click';
|
|
24
25
|
DROPDOWN_MENU_CLEAR: 'dropdown_menu_clear';
|
|
25
26
|
TREE_HIERARCHY_STATE_CHANGE: 'tree_hierarchy_state_change';
|
|
@@ -35,5 +36,6 @@ export interface TableEvents {
|
|
|
35
36
|
CHECKBOX_STATE_CHANGE: 'checkbox_state_change';
|
|
36
37
|
AFTER_RENDER: 'after_render';
|
|
37
38
|
INITIALIZED: 'initialized';
|
|
39
|
+
CHANGE_CELL_VALUE: 'change_cell_value';
|
|
38
40
|
}
|
|
39
41
|
export declare const TABLE_EVENT_TYPE: TableEvents;
|
|
@@ -24,6 +24,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
24
24
|
DROPDOWN_MENU_CLICK: "dropdown_menu_click",
|
|
25
25
|
MOUSEOVER_CHART_SYMBOL: "mouseover_chart_symbol",
|
|
26
26
|
DRAG_SELECT_END: "drag_select_end",
|
|
27
|
+
COPY_DATA: "copy_data",
|
|
27
28
|
DROPDOWN_ICON_CLICK: "dropdown_icon_click",
|
|
28
29
|
DROPDOWN_MENU_CLEAR: "dropdown_menu_clear",
|
|
29
30
|
TREE_HIERARCHY_STATE_CHANGE: "tree_hierarchy_state_change",
|
|
@@ -38,6 +39,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
38
39
|
MOUSELEAVE_AXIS: "mouseleave_axis",
|
|
39
40
|
CHECKBOX_STATE_CHANGE: "checkbox_state_change",
|
|
40
41
|
AFTER_RENDER: "after_render",
|
|
41
|
-
INITIALIZED: "initialized"
|
|
42
|
+
INITIALIZED: "initialized",
|
|
43
|
+
CHANGE_CELL_VALUE: "change_cell_value"
|
|
42
44
|
};
|
|
43
45
|
//# sourceMappingURL=TABLE_EVENT_TYPE.js.map
|
|
@@ -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":";;;AAqIa,QAAA,gBAAgB,GAAgB;IAC3C,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,sBAAsB,EAAE,wBAAwB;IAChD,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,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,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,mBAAmB;CACxB,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 KEYDOWN: 'keydown';\n /**\n * 鼠标进入表格事件\n */\n MOUSEENTER_TABLE: 'mouseenter_table';\n /**\n * 鼠标离开表格事件\n */\n MOUSELEAVE_TABLE: 'mouseleave_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 RESIZE_COLUMN: 'resize_column';\n /**\n * 列宽调整结束事件\n */\n RESIZE_COLUMN_END: 'resize_column_end';\n /**\n * 拖拽表头移动位置的事件\n */\n CHANGE_HEADER_POSITION: 'change_header_position';\n /**\n * 点击排序图标事件\n */\n SORT_CLICK: 'sort_click';\n /**\n * 点击固定列图标 冻结或者解冻事件\n */\n FREEZE_CLICK: 'freeze_click';\n /**\n * 滚动表格事件\n */\n SCROLL: 'scroll';\n\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 //#region lifecircle\n /** 每次渲染完成触发 */\n AFTER_RENDER: 'after_render';\n /** 表格实例初始化完成 */\n INITIALIZED: 'initialized';\n //#endregion\n\n CHANGE_CELL_VALUE: 'change_cell_value';\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 KEYDOWN: 'keydown',\n MOUSEENTER_TABLE: 'mouseenter_table',\n MOUSELEAVE_TABLE: 'mouseleave_table',\n MOUSEMOVE_CELL: 'mousemove_cell',\n MOUSEENTER_CELL: 'mouseenter_cell',\n MOUSELEAVE_CELL: 'mouseleave_cell',\n CONTEXTMENU_CELL: 'contextmenu_cell',\n RESIZE_COLUMN: 'resize_column',\n RESIZE_COLUMN_END: 'resize_column_end',\n CHANGE_HEADER_POSITION: 'change_header_position',\n SORT_CLICK: 'sort_click',\n FREEZE_CLICK: 'freeze_click',\n SCROLL: 'scroll',\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 AFTER_RENDER: 'after_render',\n INITIALIZED: 'initialized',\n CHANGE_CELL_VALUE: 'change_cell_value'\n} as TableEvents;\n"]}
|
package/cjs/data/DataSource.d.ts
CHANGED
|
@@ -32,15 +32,18 @@ export declare class DataSource extends EventTarget implements DataSourceAPI {
|
|
|
32
32
|
enableHierarchyState: boolean;
|
|
33
33
|
static get EVENT_TYPE(): typeof EVENT_TYPE;
|
|
34
34
|
protected treeDataHierarchyState: Map<number | string, HierarchyState>;
|
|
35
|
+
changeValuesMap: Record<number, boolean>[];
|
|
35
36
|
constructor(obj?: DataSourceParam | DataSource, pagination?: IPagination, hierarchyExpandLevel?: number);
|
|
36
37
|
initChildrenNodeHierarchy(indexKey: number | number[], hierarchyExpandLevel: number, currentLevel: number, nodeData: any): number;
|
|
37
38
|
updatePagination(pagination?: IPagination): void;
|
|
38
39
|
protected updatePagerData(): void;
|
|
39
40
|
get source(): any;
|
|
40
41
|
get(index: number): MaybePromiseOrUndefined;
|
|
42
|
+
getRaw(index: number): MaybePromiseOrUndefined;
|
|
41
43
|
getIndexKey(index: number): number | number[];
|
|
42
44
|
getTableIndex(colOrRow: number): number;
|
|
43
45
|
getField(index: number, field: FieldDef | FieldFormat | number, col: number, row: number, table: BaseTableAPI): FieldData;
|
|
46
|
+
getRawField(index: number, field: FieldDef | FieldFormat | number, col: number, row: number, table: BaseTableAPI): FieldData;
|
|
44
47
|
hasField(index: number, field: FieldDef): boolean;
|
|
45
48
|
getHierarchyState(index: number): HierarchyState;
|
|
46
49
|
toggleHierarchyState(index: number): {
|
|
@@ -48,6 +51,7 @@ export declare class DataSource extends EventTarget implements DataSourceAPI {
|
|
|
48
51
|
remove: number[];
|
|
49
52
|
};
|
|
50
53
|
pushChildrenNode(indexKey: number | number[], hierarchyState: HierarchyState, nodeData: any): number;
|
|
54
|
+
changeFieldValue(value: FieldData, index: number, field: FieldDef, col?: number, row?: number, table?: BaseTableAPI): FieldData;
|
|
51
55
|
setRecord(record: any, index: number): void;
|
|
52
56
|
sort(field: FieldDef, order: SortOrder, orderFn?: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1): void;
|
|
53
57
|
clearSortedIndexMap(): void;
|
|
@@ -59,8 +63,10 @@ export declare class DataSource extends EventTarget implements DataSourceAPI {
|
|
|
59
63
|
release(): void;
|
|
60
64
|
clearSortedMap(): void;
|
|
61
65
|
clearCurrentIndexedData(): void;
|
|
62
|
-
protected getOriginalRecord(
|
|
66
|
+
protected getOriginalRecord(dataIndex: number | number[]): MaybePromiseOrUndefined;
|
|
67
|
+
protected getRawRecord(dataIndex: number): MaybePromiseOrUndefined;
|
|
63
68
|
protected getOriginalField(index: number | number[], field: FieldDef | FieldFormat | number, col?: number, row?: number, table?: BaseTableAPI): FieldData;
|
|
69
|
+
protected getRawFieldData(index: number, field: FieldDef | FieldFormat | number, col?: number, row?: number, table?: BaseTableAPI): FieldData;
|
|
64
70
|
protected hasOriginalField(index: number | number[], field: FieldDef): boolean;
|
|
65
71
|
protected fieldPromiseCallBack(_index: number | number[], _field: FieldDef | FieldFormat | number, _value: MaybePromiseOrUndefined): void;
|
|
66
72
|
protected recordPromiseCallBack(_index: number | number[], _record: MaybePromiseOrUndefined): void;
|
package/cjs/data/DataSource.js
CHANGED
|
@@ -54,7 +54,7 @@ function getValue(value, promiseCallBack) {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
function getField(record, field, col, row, table, promiseCallBack) {
|
|
57
|
-
if (null
|
|
57
|
+
if (null == record) return;
|
|
58
58
|
if ((0, helper_1.isPromise)(record)) return record.then((r => getField(r, field, col, row, table, promiseCallBack)));
|
|
59
59
|
const fieldGet = isFieldAssessor(field) ? field.get : field;
|
|
60
60
|
if (fieldGet in record) {
|
|
@@ -88,8 +88,8 @@ class DataSource extends EventTarget_1.EventTarget {
|
|
|
88
88
|
constructor(obj, pagination, hierarchyExpandLevel) {
|
|
89
89
|
var _a, _b;
|
|
90
90
|
if (super(), this.currentIndexedData = [], this.enableHierarchyState = !1, this.treeDataHierarchyState = new Map,
|
|
91
|
-
this._get = (null == obj ? void 0 : obj.get.bind(obj)) || void 0,
|
|
92
|
-
this._source = null !== (_a = null == obj ? void 0 : obj.source) && void 0 !== _a ? _a : obj,
|
|
91
|
+
this.changeValuesMap = [], this._get = (null == obj ? void 0 : obj.get.bind(obj)) || void 0,
|
|
92
|
+
this._sourceLength = (null == obj ? void 0 : obj.length) || 0, this._source = null !== (_a = null == obj ? void 0 : obj.source) && void 0 !== _a ? _a : obj,
|
|
93
93
|
this.sortedIndexMap = new Map, this._currentPagerIndexedData = [], this.pagination = pagination || {
|
|
94
94
|
totalCount: this._sourceLength,
|
|
95
95
|
perPageCount: this._sourceLength,
|
|
@@ -147,6 +147,9 @@ class DataSource extends EventTarget_1.EventTarget {
|
|
|
147
147
|
get(index) {
|
|
148
148
|
return this.getOriginalRecord(_getIndex(this.currentPagerIndexedData, index));
|
|
149
149
|
}
|
|
150
|
+
getRaw(index) {
|
|
151
|
+
return this.getRawRecord(_getIndex(this.currentPagerIndexedData, index));
|
|
152
|
+
}
|
|
150
153
|
getIndexKey(index) {
|
|
151
154
|
return _getIndex(this.currentPagerIndexedData, index);
|
|
152
155
|
}
|
|
@@ -156,6 +159,9 @@ class DataSource extends EventTarget_1.EventTarget {
|
|
|
156
159
|
getField(index, field, col, row, table) {
|
|
157
160
|
return this.getOriginalField(_getIndex(this.currentPagerIndexedData, index), field, col, row, table);
|
|
158
161
|
}
|
|
162
|
+
getRawField(index, field, col, row, table) {
|
|
163
|
+
return this.getRawFieldData(_getIndex(this.currentPagerIndexedData, index), field, col, row, table);
|
|
164
|
+
}
|
|
159
165
|
hasField(index, field) {
|
|
160
166
|
return this.hasOriginalField(_getIndex(this.currentPagerIndexedData, index), field);
|
|
161
167
|
}
|
|
@@ -203,6 +209,19 @@ class DataSource extends EventTarget_1.EventTarget {
|
|
|
203
209
|
}
|
|
204
210
|
return childrenLength;
|
|
205
211
|
}
|
|
212
|
+
changeFieldValue(value, index, field, col, row, table) {
|
|
213
|
+
if (null !== field && index >= 0) {
|
|
214
|
+
const dataIndex = this.getIndexKey(index);
|
|
215
|
+
if (!this.changeValuesMap[dataIndex]) {
|
|
216
|
+
const originRecord = this.getOriginalRecord(dataIndex);
|
|
217
|
+
this.changeValuesMap[dataIndex] = (0, vutils_1.cloneDeep)(originRecord);
|
|
218
|
+
}
|
|
219
|
+
if ("string" == typeof field || "number" == typeof field) {
|
|
220
|
+
const beforeChangedValue = this.changeValuesMap[dataIndex][field], record = this.getOriginalRecord(dataIndex);
|
|
221
|
+
"number" == typeof beforeChangedValue && isAllDigits(value) ? record[field] = parseFloat(value) : record[field] = value;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
206
225
|
setRecord(record, index) {
|
|
207
226
|
const indexed = this.getIndexKey(index);
|
|
208
227
|
if (Array.isArray(indexed)) {
|
|
@@ -270,9 +289,15 @@ class DataSource extends EventTarget_1.EventTarget {
|
|
|
270
289
|
clearCurrentIndexedData() {
|
|
271
290
|
this.currentIndexedData = null, this.currentPagerIndexedData.length = 0;
|
|
272
291
|
}
|
|
273
|
-
getOriginalRecord(
|
|
274
|
-
return getValue(this._get(
|
|
275
|
-
this.recordPromiseCallBack(
|
|
292
|
+
getOriginalRecord(dataIndex) {
|
|
293
|
+
return getValue(this._get(dataIndex), (val => {
|
|
294
|
+
this.recordPromiseCallBack(dataIndex, val);
|
|
295
|
+
}));
|
|
296
|
+
}
|
|
297
|
+
getRawRecord(dataIndex) {
|
|
298
|
+
var _a;
|
|
299
|
+
return (null === (_a = this.changeValuesMap) || void 0 === _a ? void 0 : _a[dataIndex]) ? this.changeValuesMap[dataIndex] : getValue(this._get(dataIndex), (val => {
|
|
300
|
+
this.recordPromiseCallBack(dataIndex, val);
|
|
276
301
|
}));
|
|
277
302
|
}
|
|
278
303
|
getOriginalField(index, field, col, row, table) {
|
|
@@ -281,6 +306,12 @@ class DataSource extends EventTarget_1.EventTarget {
|
|
|
281
306
|
this.fieldPromiseCallBack(index, field, val);
|
|
282
307
|
}));
|
|
283
308
|
}
|
|
309
|
+
getRawFieldData(index, field, col, row, table) {
|
|
310
|
+
if (null === field) return;
|
|
311
|
+
return getField(this.getRawRecord(index), field, col, row, table, (val => {
|
|
312
|
+
this.fieldPromiseCallBack(index, field, val);
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
284
315
|
hasOriginalField(index, field) {
|
|
285
316
|
if (null === field) return !1;
|
|
286
317
|
if ("function" == typeof field) return !0;
|
|
@@ -291,8 +322,12 @@ class DataSource extends EventTarget_1.EventTarget {
|
|
|
291
322
|
recordPromiseCallBack(_index, _record) {}
|
|
292
323
|
}
|
|
293
324
|
|
|
325
|
+
function isAllDigits(str) {
|
|
326
|
+
return /^-?\d+(\.\d+)?$/.test(str);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
//# sourceMappingURL=DataSource.js.map
|
|
294
330
|
exports.DataSource = DataSource, DataSource.EMPTY = new DataSource({
|
|
295
331
|
get() {},
|
|
296
332
|
length: 0
|
|
297
|
-
});
|
|
298
|
-
//# sourceMappingURL=DataSource.js.map
|
|
333
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/DataSource.ts"],"names":[],"mappings":"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","file":"DataSource.js","sourcesContent":["import * as sort from '../tools/sort';\nimport type {\n DataSourceAPI,\n FieldAssessor,\n FieldData,\n FieldDef,\n FieldFormat,\n IPagination,\n MaybePromiseOrCallOrUndefined,\n MaybePromiseOrUndefined,\n SortOrder\n} from '../ts-types';\nimport { HierarchyState } from '../ts-types';\nimport { applyChainSafe, getOrApply, obj, isPromise, emptyFn } from '../tools/helper';\nimport { EventTarget } from '../event/EventTarget';\nimport { getValueByPath } from '../tools/util';\nimport { diffCellIndices } from '../tools/diff-cell';\nimport { isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\n\n/**\n * 判断字段数据是否为访问器的格式\n * @param field\n * @returns boolean\n */\nfunction isFieldAssessor(field: FieldDef | FieldFormat | number): field is FieldAssessor {\n if (obj.isObject(field)) {\n const a = field as FieldAssessor;\n if (isValid(a.get) && isValid(a.set)) {\n return true;\n }\n }\n return false;\n}\nconst EVENT_TYPE = {\n SOURCE_LENGTH_UPDATE: 'source_length_update',\n CHANGE_ORDER: 'change_order'\n} as const;\ntype PromiseBack = (value: MaybePromiseOrUndefined) => void;\n\n/**\n * 获取到的某个filed的值 处理可能为promise的情况\n * @param value\n * @param promiseCallBack\n * @returns\n */\nfunction getValue(value: MaybePromiseOrCallOrUndefined, promiseCallBack: PromiseBack): MaybePromiseOrUndefined {\n const maybePromiseOrValue = getOrApply(value);\n if (isPromise(maybePromiseOrValue)) {\n const promiseValue = maybePromiseOrValue.then((r: any) => {\n promiseCallBack(r);\n return r;\n });\n\n promiseCallBack(promiseValue);\n return promiseValue;\n }\n return maybePromiseOrValue;\n}\n/**\n * 根据field获取数据源record对应的值 获取到的可能是个异步Promise 需要设置回调处理逻辑\n * @param record\n * @param field\n * @param promiseCallBack\n * @returns\n */\nexport function getField(\n record: MaybePromiseOrUndefined,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI,\n promiseCallBack: PromiseBack\n): FieldData {\n if (record === null) {\n return undefined;\n }\n if (isPromise(record)) {\n return record.then((r: any) => getField(r, field, col, row, table, promiseCallBack));\n }\n const fieldGet: any = isFieldAssessor(field) ? field.get : field;\n if (fieldGet in (record as any)) {\n const fieldResult = (record as any)[fieldGet];\n\n return getValue(fieldResult, promiseCallBack);\n }\n if (typeof fieldGet === 'function') {\n const fieldResult = fieldGet(record, col, row, table);\n return getValue(fieldResult, promiseCallBack);\n }\n if (Array.isArray(fieldGet)) {\n const fieldResult = getValueByPath(record, [...fieldGet]);\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldArray = `${fieldGet}`.split('.');\n if (fieldArray.length <= 1) {\n const fieldResult = (record as any)[fieldGet];\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldResult = applyChainSafe(\n record,\n (val, name) => getField(val, name, col, row, table, emptyFn as any),\n ...fieldArray\n );\n return getValue(fieldResult, promiseCallBack);\n}\n\nfunction _getIndex(sortedIndexMap: null | (number | number[])[], index: number): number | number[] {\n if (!sortedIndexMap) {\n return index;\n }\n const mapIndex = sortedIndexMap[index];\n return isValid(mapIndex) ? mapIndex : index;\n}\n\nexport interface DataSourceParam {\n get: (index: number) => any;\n length: number;\n source?: any;\n}\nexport interface ISortedMapItem {\n asc?: (number | number[])[];\n desc?: (number | number[])[];\n normal?: (number | number[])[];\n}\n\nexport class DataSource extends EventTarget implements DataSourceAPI {\n private _get: (index: number | number[]) => any;\n /** 数据条目数 如果是树形结构的数据 则是第一层父节点的数量 */\n private _sourceLength: number;\n\n private readonly _source: any;\n /**\n * 缓存按字段进行排序的结果\n */\n protected sortedIndexMap: Map<FieldDef, ISortedMapItem>;\n /**\n * 记录最近一次排序规则 当展开树形结构的节点时需要用到\n */\n private lastOrder: SortOrder;\n private lastOrderFn: (a: any, b: any, order: string) => number;\n private lastOrderField: FieldDef;\n protected currentIndexedData: (number | number[])[] | null = [];\n protected pagination: IPagination;\n protected _currentPagerIndexedData: (number | number[])[];\n // 当前是否为层级的树形结构 排序时判断该值确实是否继续进行子节点排序\n enableHierarchyState = false;\n static get EVENT_TYPE(): typeof EVENT_TYPE {\n return EVENT_TYPE;\n }\n protected treeDataHierarchyState: Map<number | string, HierarchyState> = new Map();\n\n constructor(obj?: DataSourceParam | DataSource, pagination?: IPagination, hierarchyExpandLevel?: number) {\n super();\n\n this._get = obj?.get.bind(obj) || (undefined as any);\n this._sourceLength = obj?.length || 0;\n this._source = obj?.source ?? obj;\n this.sortedIndexMap = new Map<string, ISortedMapItem>();\n\n this._currentPagerIndexedData = [];\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n if (hierarchyExpandLevel >= 1) {\n this.enableHierarchyState = true;\n }\n // 初始化currentIndexedData 正常未排序。设置其状态\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (this.enableHierarchyState) {\n for (let i = 0; i < this._sourceLength; i++) {\n //expandLevel为有效值即需要按tree分析展示数据\n const nodeData = this.getOriginalRecord(i);\n (nodeData as any).children && this.treeDataHierarchyState.set(i, HierarchyState.collapse);\n }\n }\n if (hierarchyExpandLevel > 1) {\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n if ((nodeData as any).children?.length > 0) {\n this.treeDataHierarchyState.set(\n Array.isArray(indexKey) ? indexKey.join(',') : indexKey,\n HierarchyState.expand\n );\n const childrenLength = this.initChildrenNodeHierarchy(indexKey, hierarchyExpandLevel, 2, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n }\n }\n }\n this.updatePagerData();\n }\n /**\n * 初始化子节点的层次信息\n * @param indexKey 父节点的indexKey 即currentLevel-1的节点\n * @param hierarchyExpandLevel 需要展开层级数\n * @param currentLevel 当前要展开的是第几层\n * @param nodeData 父节点数据 即currentLevel-1的节点\n * @returns\n */\n initChildrenNodeHierarchy(\n indexKey: number | number[],\n // subNodeIndex:number,\n hierarchyExpandLevel: number,\n currentLevel: number,\n nodeData: any\n ): number {\n if (currentLevel > hierarchyExpandLevel) {\n return 0;\n }\n let childTotalLength = 0;\n const nodeLength = nodeData.children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n childTotalLength += 1;\n const childNodeData = nodeData.children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n if (childNodeData.children?.length > 0) {\n if (currentLevel < hierarchyExpandLevel) {\n this.treeDataHierarchyState.set(\n Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n HierarchyState.expand\n );\n } else {\n this.treeDataHierarchyState.set(\n Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n HierarchyState.collapse\n );\n }\n }\n\n childTotalLength += this.initChildrenNodeHierarchy(\n childIndexKey,\n hierarchyExpandLevel,\n currentLevel + 1,\n childNodeData\n );\n }\n return childTotalLength;\n }\n updatePagination(pagination?: IPagination): void {\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n this.updatePagerData();\n }\n protected updatePagerData(): void {\n const { currentIndexedData } = this;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n this._currentPagerIndexedData.length = 0;\n if (currentIndexedData && currentIndexedData.length > 0) {\n // this._currentPagerIndexedData = currentIndexedData.slice(startIndex, endIndex);\n let firstLevelIndex = -1;\n for (let i = 0; i < currentIndexedData.length; i++) {\n //计算第一层父级节点数量\n if (\n (Array.isArray(currentIndexedData[i]) && (currentIndexedData[i] as Array<number>).length === 1) ||\n !Array.isArray(currentIndexedData[i])\n ) {\n firstLevelIndex++;\n }\n if (firstLevelIndex >= startIndex && firstLevelIndex < endIndex) {\n this._currentPagerIndexedData.push(currentIndexedData[i]);\n } else if (firstLevelIndex >= endIndex) {\n break;\n }\n }\n } else if (this._sourceLength > 0) {\n throw new Error(`currentIndexedData should has values!`);\n }\n }\n\n get source(): any {\n return this._source;\n }\n get(index: number): MaybePromiseOrUndefined {\n return this.getOriginalRecord(_getIndex(this.currentPagerIndexedData, index));\n }\n getIndexKey(index: number): number | number[] {\n return _getIndex(this.currentPagerIndexedData, index);\n }\n getTableIndex(colOrRow: number): number {\n return this.currentPagerIndexedData.findIndex(value => value === colOrRow);\n }\n getField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getOriginalField(_getIndex(this.currentPagerIndexedData, index), field, col, row, table);\n }\n\n hasField(index: number, field: FieldDef): boolean {\n return this.hasOriginalField(_getIndex(this.currentPagerIndexedData, index), field);\n }\n /**\n * 获取第index条数据的展示收起状态\n * @param index\n * @returns\n */\n getHierarchyState(index: number): HierarchyState {\n const indexed = this.getIndexKey(index);\n return this.treeDataHierarchyState.get(Array.isArray(indexed) ? indexed.join(',') : indexed) ?? null;\n }\n /**\n * 展开或者收起数据index\n * @param index\n */\n toggleHierarchyState(index: number) {\n const oldIndexedData = this.currentIndexedData.slice(0);\n const indexed = this.getIndexKey(index);\n const state = this.getHierarchyState(index);\n\n const data = this.getOriginalRecord(indexed);\n\n this.clearSortedIndexMap();\n if (state === HierarchyState.collapse) {\n // 将节点状态置为expand\n this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.expand);\n this.pushChildrenNode(indexed, HierarchyState.expand, data);\n } else if (state === HierarchyState.expand) {\n // 记录状态变化影响的子节点行数\n let childrenLength = 0;\n /**\n * 当某个节点由展开变为折叠,需要计算出影响的节点数量 使用childrenLength来标记。同样需递归\n * @param indexKey\n * @param hierarchyState\n * @param nodeData\n * @returns\n */\n const computeChildrenNodeLength = (\n indexKey: number | number[],\n hierarchyState: HierarchyState,\n nodeData: any\n ) => {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return;\n }\n if (nodeData.children) {\n for (let i = 0; i < nodeData.children.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey) ? indexKey.concat([i]) : [indexKey, i];\n\n computeChildrenNodeLength(\n childIndex,\n this.treeDataHierarchyState.get(childIndex.join(',')),\n nodeData.children[i]\n );\n }\n }\n };\n computeChildrenNodeLength(indexed, state, data);\n\n this.currentIndexedData.splice(this.currentIndexedData.indexOf(indexed) + 1, childrenLength);\n this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.collapse);\n }\n // 变更了pagerConfig所以需要更新分页数据 TODO待定 因为只关注根节点的数量的话 可能不会影响到\n this.updatePagerData();\n\n return diffCellIndices(oldIndexedData, this.currentIndexedData);\n }\n /**\n * 某个节点状态由折叠变为展开,往this.currentIndexedData中插入展开后的新增节点,注意需要递归,因为展开节点下面的子节点也能是展开状态\n * @param recordRowIndex 要计算节点的行号(从body部分开始计算)\n * @param indexKey 需要判断节点的index\n * @param hierarchyState 当前节点状态\n * @param nodeData 当前节点数据 取children时用\n * @returns\n */\n pushChildrenNode(indexKey: number | number[], hierarchyState: HierarchyState, nodeData: any): number {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return 0;\n }\n let childrenLength = 0;\n if (nodeData.children) {\n const subNodeSortedIndexArray: Array<number> = Array.from({ length: nodeData.children.length }, (_, i) => i);\n this.lastOrder &&\n this.lastOrder !== 'normal' &&\n this.lastOrderField &&\n sort.sort(\n index =>\n isValid(subNodeSortedIndexArray[index])\n ? subNodeSortedIndexArray[index]\n : (subNodeSortedIndexArray[index] = index),\n (index, rel) => {\n subNodeSortedIndexArray[index] = rel;\n },\n nodeData.children.length,\n this.lastOrderFn,\n this.lastOrder,\n index =>\n this.getOriginalField(\n Array.isArray(indexKey) ? indexKey.concat([index]) : [indexKey, index],\n this.lastOrderField\n )\n );\n for (let i = 0; i < subNodeSortedIndexArray.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey)\n ? indexKey.concat([subNodeSortedIndexArray[i]])\n : [indexKey, subNodeSortedIndexArray[i]];\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childrenLength,\n // this.pagination.currentPage * this.pagination.perPageCount +\n // recordRowIndex +\n // childrenLength,\n 0,\n childIndex\n );\n const preChildState = this.treeDataHierarchyState.get(childIndex.join(','));\n const childData = this.getOriginalRecord(childIndex);\n if (!preChildState && (childData as any).children) {\n this.treeDataHierarchyState.set(childIndex.join(','), HierarchyState.collapse);\n }\n childrenLength += this.pushChildrenNode(\n childIndex,\n this.treeDataHierarchyState.get(childIndex.join(',')),\n nodeData.children[subNodeSortedIndexArray[i]]\n );\n }\n }\n return childrenLength;\n }\n\n /**\n * 将数据record 替换到index位置处\n * @param record\n * @param index\n */\n setRecord(record: any, index: number) {\n const indexed = this.getIndexKey(index);\n if (!Array.isArray(indexed)) {\n this.source.splice(indexed, 1, record);\n } else {\n const c_node_index = (indexed as Array<any>)[indexed.length - 1];\n const p_node = this.getOriginalRecord(indexed.slice(0, indexed.length - 1));\n (p_node as any).children.splice(c_node_index, 1, record);\n }\n }\n sort(\n field: FieldDef,\n order: SortOrder,\n orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1 = order !== 'desc'\n ? (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 > v2 ? 1 : -1)\n : (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 < v2 ? 1 : -1)\n ): void {\n this.lastOrderField = field;\n this.lastOrder = order;\n this.lastOrderFn = orderFn;\n let filedMap = this.sortedIndexMap.get(field);\n let orderedData;\n\n if (filedMap) {\n orderedData = filedMap[order];\n if (orderedData && orderedData.length > 0) {\n this.currentIndexedData = orderedData;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n return;\n }\n }\n const sortedIndexArray = [] as number[];\n if (order === 'normal') {\n for (let i = 0; i < this._sourceLength; i++) {\n sortedIndexArray[i] = i;\n }\n } else {\n sort.sort(\n index => (isValid(sortedIndexArray[index]) ? sortedIndexArray[index] : (sortedIndexArray[index] = index)),\n (index, rel) => {\n sortedIndexArray[index] = rel;\n },\n this._sourceLength,\n orderFn,\n order,\n index => this.getOriginalField(index, field)\n );\n }\n this.currentIndexedData = sortedIndexArray;\n if (this.enableHierarchyState) {\n let nodeLength = sortedIndexArray.length;\n const t0 = window.performance.now();\n for (let i = 0; i < nodeLength; i++) {\n const subNodeLength = this.pushChildrenNode(\n sortedIndexArray[i],\n this.treeDataHierarchyState.get(sortedIndexArray[i]),\n this.getOriginalRecord(sortedIndexArray[i]) // ?sortedIndexArray 在这个过程中不是变化了吗 通过i取id还是对的吗? 对哦!因为i和nodeLength都+subNodeLength 来动态调整过了!\n );\n nodeLength += subNodeLength;\n i += subNodeLength;\n }\n }\n if (!filedMap) {\n filedMap = { asc: [], desc: [], normal: [] };\n this.sortedIndexMap.set(field, filedMap);\n }\n filedMap[order] = sortedIndexArray;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n }\n /**\n * 当节点折叠或者展开时 将排序缓存清空(非当前排序规则的缓存)\n */\n clearSortedIndexMap() {\n if (this.lastOrderField && this.lastOrder) {\n this.sortedIndexMap.forEach((sortMap, key) => {\n if (key !== this.lastOrderField) {\n this.sortedIndexMap.delete(key);\n } else if (this.lastOrder === 'asc') {\n sortMap.desc = [];\n sortMap.normal = [];\n } else if (this.lastOrder === 'desc') {\n sortMap.asc = [];\n sortMap.normal = [];\n } else {\n sortMap.desc = [];\n sortMap.asc = [];\n }\n });\n }\n }\n get sourceLenght(): number {\n return this._sourceLength;\n }\n set sourceLength(sourceLen: number) {\n if (this._sourceLength === sourceLen) {\n return;\n }\n this._sourceLength = sourceLen;\n this.fireListeners(EVENT_TYPE.SOURCE_LENGTH_UPDATE, this._sourceLength);\n }\n get length(): number {\n return this.currentPagerIndexedData.length;\n }\n get dataSource(): DataSource {\n return this;\n }\n get currentPagerIndexedData(): (number | number[])[] {\n if (this._currentPagerIndexedData.length > 0) {\n return this._currentPagerIndexedData;\n }\n return []; //this.currentIndexedData || [];\n }\n release(): void {\n super.release?.();\n }\n clearSortedMap() {\n this.currentIndexedData && (this.currentIndexedData.length = 0);\n this.currentIndexedData = null;\n this.sortedIndexMap.forEach(item => {\n item.asc && (item.asc.length = 0);\n item.desc && (item.desc.length = 0);\n });\n this.sortedIndexMap.clear();\n }\n clearCurrentIndexedData(): void {\n this.currentIndexedData = null;\n this.currentPagerIndexedData.length = 0;\n }\n protected getOriginalRecord(index: number | number[]): MaybePromiseOrUndefined {\n return getValue(this._get(index), (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(index, val);\n });\n }\n protected getOriginalField(\n index: number | number[],\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getOriginalRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected hasOriginalField(index: number | number[], field: FieldDef): boolean {\n if (field === null) {\n return false;\n }\n if (typeof field === 'function') {\n return true;\n }\n const record = this.getOriginalRecord(index);\n return Boolean(record && (field as any) in (record as any));\n }\n\n protected fieldPromiseCallBack(\n _index: number | number[],\n _field: FieldDef | FieldFormat | number,\n _value: MaybePromiseOrUndefined\n ): void {\n //\n }\n protected recordPromiseCallBack(_index: number | number[], _record: MaybePromiseOrUndefined): void {\n //\n }\n /** 静态变量 代表数据为空 */\n static EMPTY = new DataSource({\n get() {\n /* noop */\n },\n length: 0\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data/DataSource.ts"],"names":[],"mappings":"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","file":"DataSource.js","sourcesContent":["import * as sort from '../tools/sort';\nimport type {\n DataSourceAPI,\n FieldAssessor,\n FieldData,\n FieldDef,\n FieldFormat,\n IPagination,\n MaybePromiseOrCallOrUndefined,\n MaybePromiseOrUndefined,\n SortOrder\n} from '../ts-types';\nimport { HierarchyState } from '../ts-types';\nimport { applyChainSafe, getOrApply, obj, isPromise, emptyFn } from '../tools/helper';\nimport { EventTarget } from '../event/EventTarget';\nimport { getValueByPath } from '../tools/util';\nimport { diffCellIndices } from '../tools/diff-cell';\nimport { cloneDeep, isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\n\n/**\n * 判断字段数据是否为访问器的格式\n * @param field\n * @returns boolean\n */\nfunction isFieldAssessor(field: FieldDef | FieldFormat | number): field is FieldAssessor {\n if (obj.isObject(field)) {\n const a = field as FieldAssessor;\n if (isValid(a.get) && isValid(a.set)) {\n return true;\n }\n }\n return false;\n}\nconst EVENT_TYPE = {\n SOURCE_LENGTH_UPDATE: 'source_length_update',\n CHANGE_ORDER: 'change_order'\n} as const;\ntype PromiseBack = (value: MaybePromiseOrUndefined) => void;\n\n/**\n * 获取到的某个filed的值 处理可能为promise的情况\n * @param value\n * @param promiseCallBack\n * @returns\n */\nfunction getValue(value: MaybePromiseOrCallOrUndefined, promiseCallBack: PromiseBack): MaybePromiseOrUndefined {\n const maybePromiseOrValue = getOrApply(value);\n if (isPromise(maybePromiseOrValue)) {\n const promiseValue = maybePromiseOrValue.then((r: any) => {\n promiseCallBack(r);\n return r;\n });\n\n promiseCallBack(promiseValue);\n return promiseValue;\n }\n return maybePromiseOrValue;\n}\n/**\n * 根据field获取数据源record对应的值 获取到的可能是个异步Promise 需要设置回调处理逻辑\n * @param record\n * @param field\n * @param promiseCallBack\n * @returns\n */\nexport function getField(\n record: MaybePromiseOrUndefined,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI,\n promiseCallBack: PromiseBack\n): FieldData {\n if (record === null || record === undefined) {\n return undefined;\n }\n if (isPromise(record)) {\n return record.then((r: any) => getField(r, field, col, row, table, promiseCallBack));\n }\n const fieldGet: any = isFieldAssessor(field) ? field.get : field;\n if (fieldGet in (record as any)) {\n const fieldResult = (record as any)[fieldGet];\n\n return getValue(fieldResult, promiseCallBack);\n }\n if (typeof fieldGet === 'function') {\n const fieldResult = fieldGet(record, col, row, table);\n return getValue(fieldResult, promiseCallBack);\n }\n if (Array.isArray(fieldGet)) {\n const fieldResult = getValueByPath(record, [...fieldGet]);\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldArray = `${fieldGet}`.split('.');\n if (fieldArray.length <= 1) {\n const fieldResult = (record as any)[fieldGet];\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldResult = applyChainSafe(\n record,\n (val, name) => getField(val, name, col, row, table, emptyFn as any),\n ...fieldArray\n );\n return getValue(fieldResult, promiseCallBack);\n}\n\nfunction _getIndex(sortedIndexMap: null | (number | number[])[], index: number): number | number[] {\n if (!sortedIndexMap) {\n return index;\n }\n const mapIndex = sortedIndexMap[index];\n return isValid(mapIndex) ? mapIndex : index;\n}\n\nexport interface DataSourceParam {\n get: (index: number) => any;\n length: number;\n source?: any;\n}\nexport interface ISortedMapItem {\n asc?: (number | number[])[];\n desc?: (number | number[])[];\n normal?: (number | number[])[];\n}\n\nexport class DataSource extends EventTarget implements DataSourceAPI {\n private _get: (index: number | number[]) => any;\n /** 数据条目数 如果是树形结构的数据 则是第一层父节点的数量 */\n private _sourceLength: number;\n\n private readonly _source: any;\n /**\n * 缓存按字段进行排序的结果\n */\n protected sortedIndexMap: Map<FieldDef, ISortedMapItem>;\n /**\n * 记录最近一次排序规则 当展开树形结构的节点时需要用到\n */\n private lastOrder: SortOrder;\n private lastOrderFn: (a: any, b: any, order: string) => number;\n private lastOrderField: FieldDef;\n protected currentIndexedData: (number | number[])[] | null = [];\n protected pagination: IPagination;\n protected _currentPagerIndexedData: (number | number[])[];\n // 当前是否为层级的树形结构 排序时判断该值确实是否继续进行子节点排序\n enableHierarchyState = false;\n static get EVENT_TYPE(): typeof EVENT_TYPE {\n return EVENT_TYPE;\n }\n protected treeDataHierarchyState: Map<number | string, HierarchyState> = new Map();\n changeValuesMap: Record<number, boolean>[] = [];\n constructor(obj?: DataSourceParam | DataSource, pagination?: IPagination, hierarchyExpandLevel?: number) {\n super();\n\n this._get = obj?.get.bind(obj) || (undefined as any);\n this._sourceLength = obj?.length || 0;\n this._source = obj?.source ?? obj;\n this.sortedIndexMap = new Map<string, ISortedMapItem>();\n\n this._currentPagerIndexedData = [];\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n if (hierarchyExpandLevel >= 1) {\n this.enableHierarchyState = true;\n }\n // 初始化currentIndexedData 正常未排序。设置其状态\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (this.enableHierarchyState) {\n for (let i = 0; i < this._sourceLength; i++) {\n //expandLevel为有效值即需要按tree分析展示数据\n const nodeData = this.getOriginalRecord(i);\n (nodeData as any).children && this.treeDataHierarchyState.set(i, HierarchyState.collapse);\n }\n }\n if (hierarchyExpandLevel > 1) {\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n if ((nodeData as any).children?.length > 0) {\n this.treeDataHierarchyState.set(\n Array.isArray(indexKey) ? indexKey.join(',') : indexKey,\n HierarchyState.expand\n );\n const childrenLength = this.initChildrenNodeHierarchy(indexKey, hierarchyExpandLevel, 2, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n }\n }\n }\n this.updatePagerData();\n }\n /**\n * 初始化子节点的层次信息\n * @param indexKey 父节点的indexKey 即currentLevel-1的节点\n * @param hierarchyExpandLevel 需要展开层级数\n * @param currentLevel 当前要展开的是第几层\n * @param nodeData 父节点数据 即currentLevel-1的节点\n * @returns\n */\n initChildrenNodeHierarchy(\n indexKey: number | number[],\n // subNodeIndex:number,\n hierarchyExpandLevel: number,\n currentLevel: number,\n nodeData: any\n ): number {\n if (currentLevel > hierarchyExpandLevel) {\n return 0;\n }\n let childTotalLength = 0;\n const nodeLength = nodeData.children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n childTotalLength += 1;\n const childNodeData = nodeData.children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n if (childNodeData.children?.length > 0) {\n if (currentLevel < hierarchyExpandLevel) {\n this.treeDataHierarchyState.set(\n Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n HierarchyState.expand\n );\n } else {\n this.treeDataHierarchyState.set(\n Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n HierarchyState.collapse\n );\n }\n }\n\n childTotalLength += this.initChildrenNodeHierarchy(\n childIndexKey,\n hierarchyExpandLevel,\n currentLevel + 1,\n childNodeData\n );\n }\n return childTotalLength;\n }\n updatePagination(pagination?: IPagination): void {\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n this.updatePagerData();\n }\n protected updatePagerData(): void {\n const { currentIndexedData } = this;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n this._currentPagerIndexedData.length = 0;\n if (currentIndexedData && currentIndexedData.length > 0) {\n // this._currentPagerIndexedData = currentIndexedData.slice(startIndex, endIndex);\n let firstLevelIndex = -1;\n for (let i = 0; i < currentIndexedData.length; i++) {\n //计算第一层父级节点数量\n if (\n (Array.isArray(currentIndexedData[i]) && (currentIndexedData[i] as Array<number>).length === 1) ||\n !Array.isArray(currentIndexedData[i])\n ) {\n firstLevelIndex++;\n }\n if (firstLevelIndex >= startIndex && firstLevelIndex < endIndex) {\n this._currentPagerIndexedData.push(currentIndexedData[i]);\n } else if (firstLevelIndex >= endIndex) {\n break;\n }\n }\n } else if (this._sourceLength > 0) {\n throw new Error(`currentIndexedData should has values!`);\n }\n }\n\n get source(): any {\n return this._source;\n }\n get(index: number): MaybePromiseOrUndefined {\n return this.getOriginalRecord(_getIndex(this.currentPagerIndexedData, index));\n }\n getRaw(index: number): MaybePromiseOrUndefined {\n return this.getRawRecord(_getIndex(this.currentPagerIndexedData, index) as number);\n }\n getIndexKey(index: number): number | number[] {\n return _getIndex(this.currentPagerIndexedData, index);\n }\n getTableIndex(colOrRow: number): number {\n return this.currentPagerIndexedData.findIndex(value => value === colOrRow);\n }\n /** 获取数据源中第index位置的field字段数据。传入col row是因为后面的format函数参数使用*/\n getField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getOriginalField(_getIndex(this.currentPagerIndexedData, index), field, col, row, table);\n }\n\n getRawField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getRawFieldData(_getIndex(this.currentPagerIndexedData, index) as number, field, col, row, table);\n }\n\n hasField(index: number, field: FieldDef): boolean {\n return this.hasOriginalField(_getIndex(this.currentPagerIndexedData, index), field);\n }\n /**\n * 获取第index条数据的展示收起状态\n * @param index\n * @returns\n */\n getHierarchyState(index: number): HierarchyState {\n const indexed = this.getIndexKey(index);\n return this.treeDataHierarchyState.get(Array.isArray(indexed) ? indexed.join(',') : indexed) ?? null;\n }\n /**\n * 展开或者收起数据index\n * @param index\n */\n toggleHierarchyState(index: number) {\n const oldIndexedData = this.currentIndexedData.slice(0);\n const indexed = this.getIndexKey(index);\n const state = this.getHierarchyState(index);\n\n const data = this.getOriginalRecord(indexed);\n\n this.clearSortedIndexMap();\n if (state === HierarchyState.collapse) {\n // 将节点状态置为expand\n this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.expand);\n this.pushChildrenNode(indexed, HierarchyState.expand, data);\n } else if (state === HierarchyState.expand) {\n // 记录状态变化影响的子节点行数\n let childrenLength = 0;\n /**\n * 当某个节点由展开变为折叠,需要计算出影响的节点数量 使用childrenLength来标记。同样需递归\n * @param indexKey\n * @param hierarchyState\n * @param nodeData\n * @returns\n */\n const computeChildrenNodeLength = (\n indexKey: number | number[],\n hierarchyState: HierarchyState,\n nodeData: any\n ) => {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return;\n }\n if (nodeData.children) {\n for (let i = 0; i < nodeData.children.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey) ? indexKey.concat([i]) : [indexKey, i];\n\n computeChildrenNodeLength(\n childIndex,\n this.treeDataHierarchyState.get(childIndex.join(',')),\n nodeData.children[i]\n );\n }\n }\n };\n computeChildrenNodeLength(indexed, state, data);\n\n this.currentIndexedData.splice(this.currentIndexedData.indexOf(indexed) + 1, childrenLength);\n this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.collapse);\n }\n // 变更了pagerConfig所以需要更新分页数据 TODO待定 因为只关注根节点的数量的话 可能不会影响到\n this.updatePagerData();\n\n return diffCellIndices(oldIndexedData, this.currentIndexedData);\n }\n /**\n * 某个节点状态由折叠变为展开,往this.currentIndexedData中插入展开后的新增节点,注意需要递归,因为展开节点下面的子节点也能是展开状态\n * @param recordRowIndex 要计算节点的行号(从body部分开始计算)\n * @param indexKey 需要判断节点的index\n * @param hierarchyState 当前节点状态\n * @param nodeData 当前节点数据 取children时用\n * @returns\n */\n pushChildrenNode(indexKey: number | number[], hierarchyState: HierarchyState, nodeData: any): number {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return 0;\n }\n let childrenLength = 0;\n if (nodeData.children) {\n const subNodeSortedIndexArray: Array<number> = Array.from({ length: nodeData.children.length }, (_, i) => i);\n this.lastOrder &&\n this.lastOrder !== 'normal' &&\n this.lastOrderField &&\n sort.sort(\n index =>\n isValid(subNodeSortedIndexArray[index])\n ? subNodeSortedIndexArray[index]\n : (subNodeSortedIndexArray[index] = index),\n (index, rel) => {\n subNodeSortedIndexArray[index] = rel;\n },\n nodeData.children.length,\n this.lastOrderFn,\n this.lastOrder,\n index =>\n this.getOriginalField(\n Array.isArray(indexKey) ? indexKey.concat([index]) : [indexKey, index],\n this.lastOrderField\n )\n );\n for (let i = 0; i < subNodeSortedIndexArray.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey)\n ? indexKey.concat([subNodeSortedIndexArray[i]])\n : [indexKey, subNodeSortedIndexArray[i]];\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childrenLength,\n // this.pagination.currentPage * this.pagination.perPageCount +\n // recordRowIndex +\n // childrenLength,\n 0,\n childIndex\n );\n const preChildState = this.treeDataHierarchyState.get(childIndex.join(','));\n const childData = this.getOriginalRecord(childIndex);\n if (!preChildState && (childData as any).children) {\n this.treeDataHierarchyState.set(childIndex.join(','), HierarchyState.collapse);\n }\n childrenLength += this.pushChildrenNode(\n childIndex,\n this.treeDataHierarchyState.get(childIndex.join(',')),\n nodeData.children[subNodeSortedIndexArray[i]]\n );\n }\n }\n return childrenLength;\n }\n changeFieldValue(\n value: FieldData,\n index: number,\n field: FieldDef,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n if (index >= 0) {\n const dataIndex = this.getIndexKey(index) as number;\n\n if (!this.changeValuesMap[dataIndex]) {\n const originRecord = this.getOriginalRecord(dataIndex);\n this.changeValuesMap[dataIndex] = cloneDeep(originRecord);\n }\n if (typeof field === 'string' || typeof field === 'number') {\n const beforeChangedValue = this.changeValuesMap[dataIndex][field]; // this.getOriginalField(index, field, col, row, table);\n const record = this.getOriginalRecord(dataIndex);\n if (typeof beforeChangedValue === 'number' && isAllDigits(value)) {\n record[field] = parseFloat(value);\n } else {\n record[field] = value;\n }\n }\n }\n // return getField(record, field);\n }\n /**\n * 将数据record 替换到index位置处\n * @param record\n * @param index\n */\n setRecord(record: any, index: number) {\n const indexed = this.getIndexKey(index);\n if (!Array.isArray(indexed)) {\n this.source.splice(indexed, 1, record);\n } else {\n const c_node_index = (indexed as Array<any>)[indexed.length - 1];\n const p_node = this.getOriginalRecord(indexed.slice(0, indexed.length - 1));\n (p_node as any).children.splice(c_node_index, 1, record);\n }\n }\n sort(\n field: FieldDef,\n order: SortOrder,\n orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1 = order !== 'desc'\n ? (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 > v2 ? 1 : -1)\n : (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 < v2 ? 1 : -1)\n ): void {\n this.lastOrderField = field;\n this.lastOrder = order;\n this.lastOrderFn = orderFn;\n let filedMap = this.sortedIndexMap.get(field);\n let orderedData;\n\n if (filedMap) {\n orderedData = filedMap[order];\n if (orderedData && orderedData.length > 0) {\n this.currentIndexedData = orderedData;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n return;\n }\n }\n const sortedIndexArray = [] as number[];\n if (order === 'normal') {\n for (let i = 0; i < this._sourceLength; i++) {\n sortedIndexArray[i] = i;\n }\n } else {\n sort.sort(\n index => (isValid(sortedIndexArray[index]) ? sortedIndexArray[index] : (sortedIndexArray[index] = index)),\n (index, rel) => {\n sortedIndexArray[index] = rel;\n },\n this._sourceLength,\n orderFn,\n order,\n index => this.getOriginalField(index, field)\n );\n }\n this.currentIndexedData = sortedIndexArray;\n if (this.enableHierarchyState) {\n let nodeLength = sortedIndexArray.length;\n const t0 = window.performance.now();\n for (let i = 0; i < nodeLength; i++) {\n const subNodeLength = this.pushChildrenNode(\n sortedIndexArray[i],\n this.treeDataHierarchyState.get(sortedIndexArray[i]),\n this.getOriginalRecord(sortedIndexArray[i]) // ?sortedIndexArray 在这个过程中不是变化了吗 通过i取id还是对的吗? 对哦!因为i和nodeLength都+subNodeLength 来动态调整过了!\n );\n nodeLength += subNodeLength;\n i += subNodeLength;\n }\n }\n if (!filedMap) {\n filedMap = { asc: [], desc: [], normal: [] };\n this.sortedIndexMap.set(field, filedMap);\n }\n filedMap[order] = sortedIndexArray;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n }\n /**\n * 当节点折叠或者展开时 将排序缓存清空(非当前排序规则的缓存)\n */\n clearSortedIndexMap() {\n if (this.lastOrderField && this.lastOrder) {\n this.sortedIndexMap.forEach((sortMap, key) => {\n if (key !== this.lastOrderField) {\n this.sortedIndexMap.delete(key);\n } else if (this.lastOrder === 'asc') {\n sortMap.desc = [];\n sortMap.normal = [];\n } else if (this.lastOrder === 'desc') {\n sortMap.asc = [];\n sortMap.normal = [];\n } else {\n sortMap.desc = [];\n sortMap.asc = [];\n }\n });\n }\n }\n get sourceLenght(): number {\n return this._sourceLength;\n }\n set sourceLength(sourceLen: number) {\n if (this._sourceLength === sourceLen) {\n return;\n }\n this._sourceLength = sourceLen;\n this.fireListeners(EVENT_TYPE.SOURCE_LENGTH_UPDATE, this._sourceLength);\n }\n get length(): number {\n return this.currentPagerIndexedData.length;\n }\n get dataSource(): DataSource {\n return this;\n }\n get currentPagerIndexedData(): (number | number[])[] {\n if (this._currentPagerIndexedData.length > 0) {\n return this._currentPagerIndexedData;\n }\n return []; //this.currentIndexedData || [];\n }\n release(): void {\n super.release?.();\n }\n clearSortedMap() {\n this.currentIndexedData && (this.currentIndexedData.length = 0);\n this.currentIndexedData = null;\n this.sortedIndexMap.forEach(item => {\n item.asc && (item.asc.length = 0);\n item.desc && (item.desc.length = 0);\n });\n this.sortedIndexMap.clear();\n }\n clearCurrentIndexedData(): void {\n this.currentIndexedData = null;\n this.currentPagerIndexedData.length = 0;\n }\n protected getOriginalRecord(dataIndex: number | number[]): MaybePromiseOrUndefined {\n return getValue(this._get(dataIndex), (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getRawRecord(dataIndex: number): MaybePromiseOrUndefined {\n if (this.changeValuesMap?.[dataIndex as number]) {\n return this.changeValuesMap[dataIndex as number];\n }\n return getValue(this._get(dataIndex), (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getOriginalField(\n index: number | number[],\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getOriginalRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected getRawFieldData(\n index: number,\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getRawRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected hasOriginalField(index: number | number[], field: FieldDef): boolean {\n if (field === null) {\n return false;\n }\n if (typeof field === 'function') {\n return true;\n }\n const record = this.getOriginalRecord(index);\n return Boolean(record && (field as any) in (record as any));\n }\n\n protected fieldPromiseCallBack(\n _index: number | number[],\n _field: FieldDef | FieldFormat | number,\n _value: MaybePromiseOrUndefined\n ): void {\n //\n }\n protected recordPromiseCallBack(_index: number | number[], _record: MaybePromiseOrUndefined): void {\n //\n }\n /** 静态变量 代表数据为空 */\n static EMPTY = new DataSource({\n get() {\n /* noop */\n },\n length: 0\n });\n}\n\nfunction isAllDigits(str: string) {\n const pattern = /^-?\\d+(\\.\\d+)?$/;\n return pattern.test(str);\n}\n"]}
|
package/cjs/dataset/dataset.d.ts
CHANGED
|
@@ -42,6 +42,8 @@ export declare class Dataset {
|
|
|
42
42
|
rows: string[];
|
|
43
43
|
columns: string[];
|
|
44
44
|
indicatorKeys: string[];
|
|
45
|
+
customRowTree: IHeaderTreeDefine[];
|
|
46
|
+
customColTree: IHeaderTreeDefine[];
|
|
45
47
|
colHeaderTree: any[];
|
|
46
48
|
rowHeaderTree: any[];
|
|
47
49
|
rowHierarchyType: 'grid' | 'tree';
|
|
@@ -49,9 +51,9 @@ export declare class Dataset {
|
|
|
49
51
|
indicatorsAsCol: boolean;
|
|
50
52
|
totalRecordsTree: Record<string, Record<string, Aggregator[]>>;
|
|
51
53
|
constructor(dataConfig: IDataConfig, rows: string[], columns: string[], indicatorKeys: string[], indicators: (string | IIndicator)[], indicatorsAsCol: boolean, records: any[] | Record<string, any[]>, rowHierarchyType?: 'grid' | 'tree', customColTree?: IHeaderTreeDefine[], customRowTree?: IHeaderTreeDefine[], needSplitPositiveAndNegative?: boolean);
|
|
54
|
+
setRecords(records: any[] | Record<string, any[]>): void;
|
|
52
55
|
registerAggregator(type: string, aggregator: any): void;
|
|
53
56
|
registerAggregators(): void;
|
|
54
|
-
private setRecords;
|
|
55
57
|
private processCollectedValuesWithSumBy;
|
|
56
58
|
private processCollectedValuesWithSortBy;
|
|
57
59
|
private generateCollectedValuesSortRule;
|
package/cjs/dataset/dataset.js
CHANGED
|
@@ -8,7 +8,7 @@ const ts_types_1 = require("../ts-types"), statistics_helper_1 = require("./stat
|
|
|
8
8
|
|
|
9
9
|
class Dataset {
|
|
10
10
|
constructor(dataConfig, rows, columns, indicatorKeys, indicators, indicatorsAsCol, records, rowHierarchyType, customColTree, customRowTree, needSplitPositiveAndNegative) {
|
|
11
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3
|
|
11
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3;
|
|
12
12
|
this.tree = {}, this.colFlatKeys = {}, this.rowFlatKeys = {}, this.colKeys = [],
|
|
13
13
|
this.rowKeys = [], this.rowOrder = "key_a_to_z", this.colOrder = "key_a_to_z", this.sorted = !1,
|
|
14
14
|
this.indicatorStatistics = [], this.aggregators = {}, this.stringJoinChar = String.fromCharCode(0),
|
|
@@ -20,37 +20,45 @@ class Dataset {
|
|
|
20
20
|
this.mappingRules = null === (_d = this.dataConfig) || void 0 === _d ? void 0 : _d.mappingRules,
|
|
21
21
|
this.totals = null === (_e = this.dataConfig) || void 0 === _e ? void 0 : _e.totals,
|
|
22
22
|
this.rows = rows, this.columns = columns, this.indicatorKeys = indicatorKeys, this.indicatorsAsCol = indicatorsAsCol,
|
|
23
|
-
this.indicators = indicators, this.
|
|
23
|
+
this.indicators = indicators, this.customColTree = customColTree, this.customRowTree = customRowTree,
|
|
24
|
+
this.colGrandTotalLabel = null !== (_h = null === (_g = null === (_f = this.totals) || void 0 === _f ? void 0 : _f.column) || void 0 === _g ? void 0 : _g.grandTotalLabel) && void 0 !== _h ? _h : "总计",
|
|
24
25
|
this.colSubTotalLabel = null !== (_l = null === (_k = null === (_j = this.totals) || void 0 === _j ? void 0 : _j.column) || void 0 === _k ? void 0 : _k.subTotalLabel) && void 0 !== _l ? _l : "小计",
|
|
25
26
|
this.rowGrandTotalLabel = null !== (_p = null === (_o = null === (_m = this.totals) || void 0 === _m ? void 0 : _m.row) || void 0 === _o ? void 0 : _o.grandTotalLabel) && void 0 !== _p ? _p : "总计",
|
|
26
27
|
this.rowSubTotalLabel = null !== (_s = null === (_r = null === (_q = this.totals) || void 0 === _q ? void 0 : _q.row) || void 0 === _r ? void 0 : _r.subTotalLabel) && void 0 !== _s ? _s : "小计",
|
|
27
28
|
this.collectValuesBy = null === (_t = this.dataConfig) || void 0 === _t ? void 0 : _t.collectValuesBy,
|
|
28
29
|
this.needSplitPositiveAndNegative = null != needSplitPositiveAndNegative && needSplitPositiveAndNegative,
|
|
29
|
-
this.rowsIsTotal = new Array(this.rows
|
|
30
|
-
|
|
30
|
+
this.rowsIsTotal = new Array(null !== (_v = null === (_u = this.rows) || void 0 === _u ? void 0 : _u.length) && void 0 !== _v ? _v : 0).fill(!1),
|
|
31
|
+
this.colsIsTotal = new Array(null !== (_x = null === (_w = this.columns) || void 0 === _w ? void 0 : _w.length) && void 0 !== _x ? _x : 0).fill(!1);
|
|
32
|
+
for (let i = 0, len = null === (_0 = null === (_z = null === (_y = this.totals) || void 0 === _y ? void 0 : _y.row) || void 0 === _z ? void 0 : _z.subTotalsDimensions) || void 0 === _0 ? void 0 : _0.length; i < len; i++) {
|
|
31
33
|
const dimension = this.totals.row.subTotalsDimensions[i], dimensionIndex = this.rows.indexOf(dimension);
|
|
32
34
|
this.rowsIsTotal[dimensionIndex] = !0;
|
|
33
35
|
}
|
|
34
|
-
for (let i = 0, len = null === (
|
|
36
|
+
for (let i = 0, len = null === (_3 = null === (_2 = null === (_1 = this.totals) || void 0 === _1 ? void 0 : _1.column) || void 0 === _2 ? void 0 : _2.subTotalsDimensions) || void 0 === _3 ? void 0 : _3.length; i < len; i++) {
|
|
35
37
|
const dimension = this.totals.column.subTotalsDimensions[i], dimensionIndex = this.columns.indexOf(dimension);
|
|
36
38
|
this.colsIsTotal[dimensionIndex] = !0;
|
|
37
39
|
}
|
|
38
|
-
|
|
40
|
+
this.setRecords(records);
|
|
41
|
+
}
|
|
42
|
+
setRecords(records) {
|
|
43
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
44
|
+
if (this.records = records, this.collectedValues = {}, this.cacheCollectedValues = {},
|
|
45
|
+
this.totalRecordsTree = {}, this.tree = {}, this.colFlatKeys = {}, this.rowFlatKeys = {},
|
|
46
|
+
this.colKeys = [], this.rowKeys = [], records) {
|
|
39
47
|
this.records = records;
|
|
40
48
|
"undefined" != typeof window && window.performance.now();
|
|
41
|
-
this.
|
|
49
|
+
this.processRecords(), this.processCollectedValuesWithSumBy(), this.generateCollectedValuesSortRule(),
|
|
42
50
|
this.processCollectedValuesWithSortBy();
|
|
43
51
|
"undefined" != typeof window && window.performance.now(), "undefined" != typeof window && window.performance.now();
|
|
44
52
|
this.totalStatistics();
|
|
45
53
|
"undefined" != typeof window && window.performance.now(), "undefined" != typeof window && window.performance.now();
|
|
46
54
|
this.sortKeys();
|
|
47
55
|
"undefined" != typeof window && window.performance.now(), "undefined" != typeof window && window.performance.now();
|
|
48
|
-
customRowTree ? (indicatorsAsCol || (customRowTree = this._adjustCustomTree(customRowTree)),
|
|
49
|
-
this.rowHeaderTree = customRowTree) : "tree" === this.rowHierarchyType ? this.rowHeaderTree = this.ArrToTree1(this.rowKeys, this.rows, indicatorsAsCol ? void 0 : indicators, (null === (
|
|
50
|
-
customColTree ? (indicatorsAsCol && (customColTree = this._adjustCustomTree(customColTree)),
|
|
51
|
-
this.colHeaderTree = customColTree) : this.colHeaderTree = this.ArrToTree(this.colKeys, this.columns, indicatorsAsCol ? indicators : void 0, this.colsIsTotal, (null === (
|
|
56
|
+
this.customRowTree ? (this.indicatorsAsCol || (this.customRowTree = this._adjustCustomTree(this.customRowTree)),
|
|
57
|
+
this.rowHeaderTree = this.customRowTree) : "tree" === this.rowHierarchyType ? this.rowHeaderTree = this.ArrToTree1(this.rowKeys, this.rows, this.indicatorsAsCol ? void 0 : this.indicators, (null === (_b = null === (_a = null == this ? void 0 : this.totals) || void 0 === _a ? void 0 : _a.row) || void 0 === _b ? void 0 : _b.showGrandTotals) || !this.indicatorsAsCol && 0 === this.columns.length || this.indicatorsAsCol && 0 === this.rows.length, this.rowGrandTotalLabel) : this.rowHeaderTree = this.ArrToTree(this.rowKeys, this.rows, this.indicatorsAsCol ? void 0 : this.indicators, this.rowsIsTotal, (null === (_d = null === (_c = null == this ? void 0 : this.totals) || void 0 === _c ? void 0 : _c.row) || void 0 === _d ? void 0 : _d.showGrandTotals) || this.indicatorsAsCol && 0 === this.rows.length, this.rowGrandTotalLabel, this.rowSubTotalLabel),
|
|
58
|
+
this.customColTree ? (this.indicatorsAsCol && (this.customColTree = this._adjustCustomTree(this.customColTree)),
|
|
59
|
+
this.colHeaderTree = this.customColTree) : this.colHeaderTree = this.ArrToTree(this.colKeys, this.columns, this.indicatorsAsCol ? this.indicators : void 0, this.colsIsTotal, (null === (_f = null === (_e = this.totals) || void 0 === _e ? void 0 : _e.column) || void 0 === _f ? void 0 : _f.showGrandTotals) || !this.indicatorsAsCol && 0 === this.columns.length, this.colGrandTotalLabel, this.colSubTotalLabel);
|
|
52
60
|
"undefined" != typeof window && window.performance.now();
|
|
53
|
-
(null === (
|
|
61
|
+
(null === (_g = this.dataConfig) || void 0 === _g ? void 0 : _g.isPivotChart) && this.cacheDeminsionCollectedValues();
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
64
|
registerAggregator(type, aggregator) {
|
|
@@ -64,9 +72,6 @@ class Dataset {
|
|
|
64
72
|
this.registerAggregator(ts_types_1.AggregationType.MIN, statistics_helper_1.MinAggregator),
|
|
65
73
|
this.registerAggregator(ts_types_1.AggregationType.AVG, statistics_helper_1.AvgAggregator);
|
|
66
74
|
}
|
|
67
|
-
setRecords() {
|
|
68
|
-
this.processRecords();
|
|
69
|
-
}
|
|
70
75
|
processCollectedValuesWithSumBy() {
|
|
71
76
|
var _a;
|
|
72
77
|
for (const field in this.collectedValues) if (null === (_a = this.collectValuesBy[field]) || void 0 === _a ? void 0 : _a.sumBy) for (const byKeys in this.collectedValues[field]) {
|