@ibiz-template/runtime 0.4.17-dev.0 → 0.5.0-beta.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.
Files changed (146) hide show
  1. package/dist/index.esm.js +972 -529
  2. package/dist/index.system.min.js +2 -2
  3. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  4. package/out/controller/common/control/md-control.controller.js +7 -2
  5. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -1
  6. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +2 -6
  7. package/out/controller/control/grid/grid/grid-column.controller.d.ts +2 -1
  8. package/out/controller/control/grid/grid/grid-column.controller.d.ts.map +1 -1
  9. package/out/controller/control/grid/grid/grid.controller.d.ts +17 -1
  10. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  11. package/out/controller/control/grid/grid/grid.controller.js +32 -0
  12. package/out/controller/control/kanban/kanban.controller.d.ts +2 -2
  13. package/out/controller/control/kanban/kanban.controller.d.ts.map +1 -1
  14. package/out/controller/control/kanban/kanban.controller.js +1 -1
  15. package/out/controller/control/md-ctrl/md-ctrl.controller.js +1 -1
  16. package/out/controller/control/search-bar/index.d.ts +1 -0
  17. package/out/controller/control/search-bar/index.d.ts.map +1 -1
  18. package/out/controller/control/search-bar/index.js +1 -0
  19. package/out/controller/control/search-bar/search-bar.controller.d.ts +59 -2
  20. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  21. package/out/controller/control/search-bar/search-bar.controller.js +142 -9
  22. package/out/controller/control/search-bar/search-bar.service.d.ts +78 -0
  23. package/out/controller/control/search-bar/search-bar.service.d.ts.map +1 -0
  24. package/out/controller/control/search-bar/search-bar.service.js +130 -0
  25. package/out/controller/control/tree/tree.controller.d.ts +27 -1
  26. package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
  27. package/out/controller/control/tree/tree.controller.js +45 -7
  28. package/out/controller/control/tree/tree.service.d.ts +1 -1
  29. package/out/controller/control/tree/tree.service.d.ts.map +1 -1
  30. package/out/controller/control/tree-grid-ex/index.d.ts +2 -0
  31. package/out/controller/control/tree-grid-ex/index.d.ts.map +1 -1
  32. package/out/controller/control/tree-grid-ex/index.js +2 -0
  33. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts +4 -0
  34. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts.map +1 -0
  35. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.js +3 -0
  36. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts +93 -0
  37. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts.map +1 -0
  38. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.js +89 -0
  39. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts +13 -0
  40. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts.map +1 -0
  41. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.js +11 -0
  42. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts +31 -0
  43. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts.map +1 -0
  44. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.js +61 -0
  45. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts +26 -0
  46. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts.map +1 -0
  47. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.js +26 -0
  48. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +48 -46
  49. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -1
  50. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +85 -115
  51. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts +8 -58
  52. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts.map +1 -1
  53. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.js +5 -135
  54. package/out/interface/controller/controller/control/i-grid.controller.d.ts +8 -0
  55. package/out/interface/controller/controller/control/i-grid.controller.d.ts.map +1 -1
  56. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +7 -7
  57. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -1
  58. package/out/interface/controller/controller/control/i-tree.controller.d.ts +1 -1
  59. package/out/interface/controller/controller/control/i-tree.controller.d.ts.map +1 -1
  60. package/out/interface/controller/controller/control/index.d.ts +1 -0
  61. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  62. package/out/interface/controller/controller/control/index.js +1 -0
  63. package/out/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.d.ts +12 -0
  64. package/out/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.d.ts.map +1 -0
  65. package/out/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.js +1 -0
  66. package/out/interface/controller/controller/control/tree-grid-ex-column/index.d.ts +2 -0
  67. package/out/interface/controller/controller/control/tree-grid-ex-column/index.d.ts.map +1 -0
  68. package/out/interface/controller/controller/control/tree-grid-ex-column/index.js +1 -0
  69. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +2 -2
  70. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -1
  71. package/out/interface/controller/state/control/i-search-bar.state.d.ts +64 -0
  72. package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +1 -1
  73. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +31 -23
  74. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -1
  75. package/out/interface/controller/state/control/i-tree.state.d.ts +8 -1
  76. package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
  77. package/out/interface/provider/i-tree-grid-ex-column.provider.d.ts +31 -0
  78. package/out/interface/provider/i-tree-grid-ex-column.provider.d.ts.map +1 -0
  79. package/out/interface/provider/i-tree-grid-ex-column.provider.js +1 -0
  80. package/out/interface/provider/index.d.ts +1 -0
  81. package/out/interface/provider/index.d.ts.map +1 -1
  82. package/out/interface/service/service/i-app-de.service.d.ts +10 -0
  83. package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
  84. package/out/register/helper/index.d.ts +1 -0
  85. package/out/register/helper/index.d.ts.map +1 -1
  86. package/out/register/helper/index.js +1 -0
  87. package/out/register/helper/tree-grid-ex-column-register.d.ts +23 -0
  88. package/out/register/helper/tree-grid-ex-column-register.d.ts.map +1 -0
  89. package/out/register/helper/tree-grid-ex-column-register.js +50 -0
  90. package/out/service/de-service-util.d.ts +3 -2
  91. package/out/service/de-service-util.d.ts.map +1 -1
  92. package/out/service/de-service-util.js +11 -10
  93. package/out/service/dto/method.dto.d.ts +2 -3
  94. package/out/service/dto/method.dto.d.ts.map +1 -1
  95. package/out/service/dto/method.dto.js +3 -4
  96. package/out/service/service/entity/de.service.d.ts +10 -0
  97. package/out/service/service/entity/de.service.d.ts.map +1 -1
  98. package/out/service/service/entity/de.service.js +22 -1
  99. package/out/service/service/entity/method/method.d.ts.map +1 -1
  100. package/out/service/service/entity/method/method.js +1 -12
  101. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  102. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +51 -0
  103. package/out/service/vo/tree-node-data/tree-node-data.d.ts +2 -0
  104. package/out/service/vo/tree-node-data/tree-node-data.d.ts.map +1 -1
  105. package/out/service/vo/tree-node-data/tree-node-data.js +1 -0
  106. package/package.json +3 -3
  107. package/src/controller/common/control/md-control.controller.ts +7 -2
  108. package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +2 -6
  109. package/src/controller/control/grid/grid/grid-column.controller.ts +4 -1
  110. package/src/controller/control/grid/grid/grid.controller.ts +34 -0
  111. package/src/controller/control/kanban/kanban.controller.ts +2 -2
  112. package/src/controller/control/md-ctrl/md-ctrl.controller.ts +1 -1
  113. package/src/controller/control/search-bar/index.ts +1 -0
  114. package/src/controller/control/search-bar/search-bar.controller.ts +178 -10
  115. package/src/controller/control/search-bar/search-bar.service.ts +161 -0
  116. package/src/controller/control/tree/tree.controller.ts +58 -11
  117. package/src/controller/control/tree/tree.service.ts +3 -1
  118. package/src/controller/control/tree-grid-ex/index.ts +2 -0
  119. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/index.ts +3 -0
  120. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.ts +121 -0
  121. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.ts +13 -0
  122. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.ts +76 -0
  123. package/src/controller/control/tree-grid-ex/tree-grid-ex-row.state.ts +37 -0
  124. package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +116 -140
  125. package/src/controller/control/tree-grid-ex/tree-grid-ex.service.ts +10 -165
  126. package/src/interface/controller/controller/control/i-grid.controller.ts +9 -0
  127. package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +11 -12
  128. package/src/interface/controller/controller/control/i-tree.controller.ts +5 -2
  129. package/src/interface/controller/controller/control/index.ts +1 -0
  130. package/src/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.ts +12 -0
  131. package/src/interface/controller/controller/control/tree-grid-ex-column/index.ts +1 -0
  132. package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +2 -2
  133. package/src/interface/controller/state/control/i-search-bar.state.ts +73 -0
  134. package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +27 -24
  135. package/src/interface/controller/state/control/i-tree.state.ts +9 -1
  136. package/src/interface/provider/i-tree-grid-ex-column.provider.ts +39 -0
  137. package/src/interface/provider/index.ts +1 -0
  138. package/src/interface/service/service/i-app-de.service.ts +13 -0
  139. package/src/register/helper/index.ts +1 -0
  140. package/src/register/helper/tree-grid-ex-column-register.ts +67 -0
  141. package/src/service/de-service-util.ts +6 -4
  142. package/src/service/dto/method.dto.ts +4 -5
  143. package/src/service/service/entity/de.service.ts +26 -1
  144. package/src/service/service/entity/method/method.ts +1 -13
  145. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +53 -0
  146. package/src/service/vo/tree-node-data/tree-node-data.ts +6 -0
@@ -0,0 +1,121 @@
1
+ import { IDETreeColumn } from '@ibiz/model-core';
2
+ import { TreeGridExController } from '../../tree-grid-ex.controller';
3
+
4
+ /**
5
+ * 树表格(增强)列控制器
6
+ * @author lxm
7
+ * @date 2023-12-21 02:03:28
8
+ * @export
9
+ * @class TreeGridExColumnController
10
+ * @template T
11
+ */
12
+ export class TreeGridExColumnController<
13
+ T extends IDETreeColumn = IDETreeColumn,
14
+ > {
15
+ /**
16
+ * 树表格(增强)列模型对象
17
+ *
18
+ * @author lxm
19
+ * @date 2022-09-05 19:09:07
20
+ * @type {T}
21
+ */
22
+ readonly model: T;
23
+
24
+ /**
25
+ * 树表格(增强)控制器
26
+ *
27
+ * @author lxm
28
+ * @date 2022-08-24 22:08:59
29
+ * @type {GridController}
30
+ */
31
+ readonly treeGrid: TreeGridExController;
32
+
33
+ /**
34
+ * 是否是自适应列
35
+ * @author lxm
36
+ * @date 2023-07-07 11:20:16
37
+ * @type {boolean}
38
+ */
39
+ isAdaptiveColumn: boolean = false;
40
+
41
+ /**
42
+ * 是否是脚本代码
43
+ * @return {*}
44
+ * @author: zhujiamin
45
+ * @Date: 2023-08-15 10:51:25
46
+ */
47
+ isCustomCode: boolean = false;
48
+
49
+ /**
50
+ * 上下文
51
+ *
52
+ * @author lxm
53
+ * @date 2022-09-05 19:09:24
54
+ * @readonly
55
+ * @type {IContext}
56
+ */
57
+ get context(): IContext {
58
+ return this.treeGrid.context;
59
+ }
60
+
61
+ /**
62
+ * 视图参数
63
+ *
64
+ * @author lxm
65
+ * @date 2022-09-05 19:09:00
66
+ * @readonly
67
+ * @type {IParams}
68
+ */
69
+ get params(): IParams {
70
+ return this.treeGrid.params;
71
+ }
72
+
73
+ /**
74
+ * 是否是第一个显示的树表格列
75
+ * @author lxm
76
+ * @date 2023-12-22 03:28:10
77
+ * @readonly
78
+ * @type {boolean}
79
+ */
80
+ get isFirstShowColumn(): boolean {
81
+ const firstColumn = this.treeGrid.state.columnStates.find(
82
+ item => !item.hidden,
83
+ );
84
+ return firstColumn?.key === this.model.codeName;
85
+ }
86
+
87
+ /**
88
+ * Creates an instance of GridFieldColumnController.
89
+ * @author lxm
90
+ * @date 2022-08-24 20:08:22
91
+ * @param {T} model
92
+ */
93
+ constructor(model: T, treeGrid: TreeGridExController) {
94
+ this.model = model;
95
+ this.treeGrid = treeGrid;
96
+ this.isAdaptiveColumn = model.widthUnit === 'STAR';
97
+ }
98
+
99
+ /**
100
+ * 子类不可覆盖或重写此方法,在 init 时需要重写的使用 onInit 方法。
101
+ *
102
+ * @author lxm
103
+ * @date 2022-08-18 22:08:30
104
+ * @returns {*} {Promise<void>}
105
+ */
106
+ async init(): Promise<void> {
107
+ await this.onInit();
108
+ }
109
+
110
+ /**
111
+ * 初始化方法
112
+ *
113
+ * @author lxm
114
+ * @date 2022-09-28 15:09:15
115
+ * @protected
116
+ * @returns {*} {Promise<void>}
117
+ */
118
+ protected async onInit(): Promise<void> {
119
+ // 初始化操作
120
+ }
121
+ }
@@ -0,0 +1,13 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import { IDETreeDEFColumn } from '@ibiz/model-core';
3
+ import { TreeGridExColumnController } from '../tree-grid-ex-column/tree-grid-ex-column.controller';
4
+
5
+ /**
6
+ * 树表格(增强)属性列控制器
7
+ * @author lxm
8
+ * @date 2023-12-21 02:02:36
9
+ * @export
10
+ * @class TreeGridExFieldColumnController
11
+ * @extends {TreeGridExColumnController<IDETreeDEFColumn>}
12
+ */
13
+ export class TreeGridExFieldColumnController extends TreeGridExColumnController<IDETreeDEFColumn> {}
@@ -0,0 +1,76 @@
1
+ /* eslint-disable no-param-reassign */
2
+ import { RuntimeModelError } from '@ibiz-template/core';
3
+ import { IDETreeUAColumn, IUIActionGroupDetail } from '@ibiz/model-core';
4
+ import { UIActionUtil } from '../../../../../ui-action';
5
+ import { ButtonContainerState, UIActionButtonState } from '../../../../utils';
6
+ import { TreeGridExColumnController } from '../tree-grid-ex-column/tree-grid-ex-column.controller';
7
+ import { ITreeGridExRowState } from '../../../../../interface';
8
+
9
+ /**
10
+ * 树表格(增强)操作列控制器
11
+ * @author lxm
12
+ * @date 2023-12-21 02:04:05
13
+ * @export
14
+ * @class TreeGridExUAColumnController
15
+ * @extends {TreeGridExColumnController<IDETreeUAColumn>}
16
+ */
17
+ export class TreeGridExUAColumnController extends TreeGridExColumnController<IDETreeUAColumn> {
18
+ /**
19
+ * 给rowController初始化操作列的状态
20
+ *
21
+ * @author lxm
22
+ * @date 2022-09-07 21:09:43
23
+ * @param {ITreeGridExRowState} row
24
+ */
25
+ initActionStates(row: ITreeGridExRowState): void {
26
+ // 操作列按钮状态控制
27
+ const { deuiactionGroup } = this.model;
28
+ if (!deuiactionGroup) {
29
+ throw new RuntimeModelError(this.model, '操作列没有配置界面行为组');
30
+ }
31
+ if (!deuiactionGroup.uiactionGroupDetails?.length) {
32
+ ibiz.log.debug('操作列界面行为组没有配置界面行为');
33
+ return;
34
+ }
35
+ const containerState = new ButtonContainerState();
36
+ deuiactionGroup.uiactionGroupDetails.forEach(detail => {
37
+ const actionid = detail.uiactionId;
38
+ if (actionid) {
39
+ const buttonState = new UIActionButtonState(
40
+ detail.id!,
41
+ this.treeGrid.context.srfappid!,
42
+ actionid,
43
+ );
44
+ containerState.addState(detail.id!, buttonState);
45
+ }
46
+ });
47
+ row.uaColStates[this.model.codeName!] = containerState;
48
+ }
49
+
50
+ /**
51
+ * 触发操作列点击事件
52
+ *
53
+ * @author lxm
54
+ * @date 2022-09-07 22:09:46
55
+ * @param {IPSUIActionGroupDetail} detail
56
+ * @param {MouseEvent} event
57
+ */
58
+ async onActionClick(
59
+ detail: IUIActionGroupDetail,
60
+ row: ITreeGridExRowState,
61
+ event: MouseEvent,
62
+ ): Promise<void> {
63
+ const actionId = detail.uiactionId;
64
+ await UIActionUtil.execAndResolved(
65
+ actionId!,
66
+ {
67
+ context: this.context,
68
+ params: this.params,
69
+ data: [row.data],
70
+ view: this.treeGrid.view,
71
+ event,
72
+ },
73
+ detail.appId,
74
+ );
75
+ }
76
+ }
@@ -0,0 +1,37 @@
1
+ import {
2
+ IButtonContainerState,
3
+ ITreeGridExRowState,
4
+ ITreeNodeData,
5
+ } from '../../../interface';
6
+ import { TreeGridExController } from './tree-grid-ex.controller';
7
+
8
+ /**
9
+ * 树表格(增强)行数据状态类
10
+ *
11
+ * @author lxm
12
+ * @date 2023-12-22 10:39:01
13
+ * @export
14
+ * @class TreeGridExRowState
15
+ * @implements {ITreeGridExRowState}
16
+ */
17
+ export class TreeGridExRowState implements ITreeGridExRowState {
18
+ data: ITreeNodeData;
19
+
20
+ /**
21
+ * 操作列状态(p是操作列的标识)
22
+ *
23
+ * @author lxm
24
+ * @date 2022-09-07 22:09:38
25
+ * @type {({ [p: string]: IButtonContainerState })}
26
+ */
27
+ uaColStates: { [p: string]: IButtonContainerState } = {};
28
+
29
+ constructor(data: ITreeNodeData, treeGrid: TreeGridExController) {
30
+ this.data = data;
31
+
32
+ // 初始化操作列状态
33
+ Object.values(treeGrid.uaColumns).forEach(column => {
34
+ column.initActionStates(this);
35
+ });
36
+ }
37
+ }
@@ -1,24 +1,26 @@
1
+ import { IDETreeColumn, IDETreeGridEx } from '@ibiz/model-core';
1
2
  import { recursiveIterate } from '@ibiz-template/core';
2
- import { IDETree, IDETreeColumn } from '@ibiz/model-core';
3
3
  import {
4
- MDCtrlLoadParams,
5
- ITreeNodeData,
6
4
  ITreeGridExController,
7
- IGridColumnProvider,
8
5
  ITreeGridExState,
9
6
  ITreeGridExEvent,
7
+ ITreeGridExColumnProvider,
8
+ ITreeGridExRowState,
9
+ ITreeNodeData,
10
10
  } from '../../../interface';
11
- import { getGridColumnProvider } from '../../../register';
12
- import { MDControlController } from '../../common';
13
- import {
14
- GridColumnController,
15
- GridFieldColumnController,
16
- GridUAColumnController,
17
- } from '../grid';
11
+ import { getTreeGridExColumnProvider } from '../../../register';
12
+
18
13
  import { TreeGridExService } from './tree-grid-ex.service';
14
+ import { TreeController } from '../tree/tree.controller';
15
+ import {
16
+ TreeGridExColumnController,
17
+ TreeGridExFieldColumnController,
18
+ TreeGridExUAColumnController,
19
+ } from './tree-grid-ex-column';
20
+ import { TreeGridExRowState } from './tree-grid-ex-row.state';
19
21
 
20
22
  /**
21
- * 树表格部件控制器
23
+ * 树表格(增强)部件控制器
22
24
  *
23
25
  * @author zk
24
26
  * @date 2023-09-21 06:09:46
@@ -27,70 +29,97 @@ import { TreeGridExService } from './tree-grid-ex.service';
27
29
  * @extends {MDControlController<IDETree, ITreeGridState, ITreeGridEvent>}
28
30
  * @implements {ITreeGridExController}
29
31
  */
30
- export class TreeGridExController
31
- extends MDControlController<IDETree, ITreeGridExState, ITreeGridExEvent>
32
- implements ITreeGridExController
32
+ export class TreeGridExController<
33
+ T extends IDETreeGridEx = IDETreeGridEx,
34
+ S extends ITreeGridExState = ITreeGridExState,
35
+ E extends ITreeGridExEvent = ITreeGridExEvent,
36
+ >
37
+ extends TreeController<T, S, E>
38
+ implements ITreeGridExController<T, S, E>
33
39
  {
34
40
  declare service: TreeGridExService;
35
41
 
36
42
  /**
37
- * 表格列的适配器
43
+ * 树表格(增强)列的适配器
38
44
  *
39
45
  * @author zk
40
46
  * @date 2023-09-21 06:09:04
41
- * @type {{ [key: string]: IGridColumnProvider }}
47
+ * @type {{ [key: string]: ITreeGridExColumnProvider }}
42
48
  * @memberof TreeGridExController
43
49
  */
44
- providers: { [key: string]: IGridColumnProvider } = {};
50
+ providers: { [key: string]: ITreeGridExColumnProvider } = {};
45
51
 
46
52
  /**
47
- * 所有表格列控制器集合
53
+ * 所有树表格(增强)列控制器集合
48
54
  *
49
55
  * @author zk
50
56
  * @date 2023-09-21 06:09:10
51
- * @type {{ [key: string]: GridColumnController }}
57
+ * @type {{ [key: string]: TreeGridExColumnController }}
52
58
  * @memberof TreeGridExController
53
59
  */
54
- columns: { [key: string]: GridColumnController } = {};
60
+ columns: { [key: string]: TreeGridExColumnController } = {};
55
61
 
56
62
  /**
57
- * 所有表格属性列的控制器
63
+ * 所有树表格(增强)属性列的控制器
58
64
  *
59
65
  * @author zk
60
66
  * @date 2023-09-21 06:09:16
61
- * @type {{ [key: string]: GridFieldColumnController }}
67
+ * @type {{ [key: string]: TreeGridExFieldColumnController }}
62
68
  * @memberof TreeGridExController
63
69
  */
64
- fieldColumns: { [key: string]: GridFieldColumnController } = {};
70
+ fieldColumns: { [key: string]: TreeGridExFieldColumnController } = {};
65
71
 
66
72
  /**
67
- * 所有表格操作列的控制器
73
+ * 所有树表格(增强)操作列的控制器
68
74
  *
69
75
  * @author zk
70
76
  * @date 2023-09-21 06:09:21
71
- * @type {{ [key: string]: GridUAColumnController }}
77
+ * @type {{ [key: string]: TreeGridExUAColumnController }}
72
78
  * @memberof TreeGridExController
73
79
  */
74
- uaColumns: { [key: string]: GridUAColumnController } = {};
80
+ uaColumns: { [key: string]: TreeGridExUAColumnController } = {};
81
+
82
+ /**
83
+ * 是否有配置宽度自适应列
84
+ *
85
+ * @type {boolean}
86
+ * @memberof GridController
87
+ */
88
+ get hasAdaptiveColumn(): boolean {
89
+ return !!Object.values(this.columns).find(item => item.isAdaptiveColumn);
90
+ }
91
+
92
+ /**
93
+ * 单元格超出呈现模式
94
+ * @author lxm
95
+ * @date 2023-11-17 01:56:26
96
+ * @readonly
97
+ * @type {('wrap' | 'ellipsis')}
98
+ */
99
+ get overflowMode(): 'wrap' | 'ellipsis' {
100
+ return ibiz.config.grid.overflowMode;
101
+ }
75
102
 
76
103
  protected initState(): void {
77
104
  super.initState();
78
- // 根节点初始化
79
- this.state.size = 0;
80
105
  this.state.columnStates = [];
81
- this.state.defaultExpandedKeys = [];
106
+ this.state.rows = {};
82
107
  }
83
108
 
84
109
  protected async onCreated(): Promise<void> {
85
110
  await super.onCreated();
86
- this.service = new TreeGridExService(this.model);
87
- await this.service.init(this.context);
111
+
88
112
  this.initColumnStates();
89
113
  await this.initGridColumns();
90
114
  }
91
115
 
116
+ protected async initService(): Promise<void> {
117
+ this.service = new TreeGridExService(this.model);
118
+ await this.service.init(this.context);
119
+ }
120
+
92
121
  /**
93
- * 初始化表格属性列,操作列,编辑项控制器
122
+ * 初始化树表格(增强)属性列,操作列,编辑项控制器
94
123
  *
95
124
  * @author zk
96
125
  * @date 2023-09-21 06:09:28
@@ -109,7 +138,7 @@ export class TreeGridExController
109
138
  }
110
139
 
111
140
  /**
112
- * 初始化表格属性列,操作列,编辑项控制器
141
+ * 初始化树表格(增强)属性列,操作列,编辑项控制器
113
142
  *
114
143
  * @author zk
115
144
  * @date 2023-09-21 06:09:37
@@ -120,27 +149,28 @@ export class TreeGridExController
120
149
  */
121
150
  protected async initColumnsController(column: IDETreeColumn): Promise<void> {
122
151
  // 初始化适配器
123
- const provider = await getGridColumnProvider(column);
152
+ const provider = await getTreeGridExColumnProvider(column);
124
153
  if (!provider) {
125
154
  return;
126
155
  }
127
156
  this.providers[column.codeName!] = provider;
128
157
 
129
- // 初始化表格列控制器
130
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
131
- const controller = await provider.createController(column, this as any);
132
- this.columns[column.codeName!] = controller as GridColumnController;
158
+ // 初始化树表格(增强)列控制器
159
+ const controller = await provider.createController(column, this);
160
+
133
161
  // 分类存放控制器
162
+ this.columns[column.codeName!] = controller as TreeGridExColumnController;
134
163
  if (column.columnType === 'DEFGRIDCOLUMN') {
135
164
  this.fieldColumns[column.codeName!] =
136
- controller as GridFieldColumnController;
165
+ controller as TreeGridExFieldColumnController;
137
166
  } else if (column.columnType === 'UAGRIDCOLUMN') {
138
- this.uaColumns[column.codeName!] = controller as GridUAColumnController;
167
+ this.uaColumns[column.codeName!] =
168
+ controller as TreeGridExUAColumnController;
139
169
  }
140
170
  }
141
171
 
142
172
  /**
143
- * 初始化表格列状态
173
+ * 初始化树表格(增强)列状态
144
174
  *
145
175
  * @author zk
146
176
  * @date 2023-09-21 06:09:43
@@ -148,20 +178,15 @@ export class TreeGridExController
148
178
  * @memberof TreeGridExController
149
179
  */
150
180
  protected initColumnStates(): void {
151
- recursiveIterate(
152
- this.model,
153
- (column: IDETreeColumn) => {
154
- if (column.columnType !== 'GROUPGRIDCOLUMN') {
155
- this.state.columnStates.push({
156
- key: column.codeName!,
157
- caption: column.caption!,
158
- hidden: !!column.hideDefault,
159
- uaColumn: column.columnType === 'UAGRIDCOLUMN',
160
- });
161
- }
162
- },
163
- { childrenFields: ['detreeColumns'] },
164
- );
181
+ this.model.detreeColumns?.forEach(column => {
182
+ this.state.columnStates.push({
183
+ key: column.codeName!,
184
+ caption: column.caption!,
185
+ hidden: !!column.hideDefault,
186
+ uaColumn: column.columnType === 'UAGRIDCOLUMN',
187
+ });
188
+ });
189
+
165
190
  this.calcColumnFixed();
166
191
  }
167
192
 
@@ -174,111 +199,62 @@ export class TreeGridExController
174
199
  * @memberof TreeGridExController
175
200
  */
176
201
  protected calcColumnFixed(): void {
202
+ // 过滤出当前显示的列
177
203
  const showColumns = this.state.columnStates.filter(
178
204
  column => !column.hidden,
179
205
  );
180
206
  const allNum = showColumns.length;
181
207
  showColumns.forEach((column, index) => {
182
208
  if (column.uaColumn) {
209
+ // 操作列根据在中间列的那一侧,固定在最左侧或最右侧
183
210
  column.fixed = index + 1 <= Math.floor(allNum / 2) ? 'left' : 'right';
184
- } else {
185
- column.fixed = 'right';
186
211
  }
187
212
  });
188
213
  }
189
214
 
190
215
  /**
191
- * 树部件加载,从根节点开始重新加载
192
- *
193
- * @author zk
194
- * @date 2023-09-21 06:09:56
195
- * @param {MDCtrlLoadParams} [args={}]
196
- * @return {*} {Promise<ITreeNodeData[]>}
197
- * @memberof TreeGridExController
216
+ * 获取树表格行数据
217
+ * @author lxm
218
+ * @date 2023-12-22 02:23:44
219
+ * @param {string} key 可以是节点id也可以是_uuid
220
+ * @return {*} {(ITreeGridExRowState | undefined)}
198
221
  */
199
- async load(args: MDCtrlLoadParams = {}): Promise<ITreeNodeData[]> {
200
- const isInitialLoad = args.isInitialLoad === true;
201
- const nodes = await this.loadNodes();
202
- this.state.expandedKeys = this.calcExpandedKeys(nodes);
203
- await this.afterLoad(args, nodes);
204
- this.state.isLoaded = true;
205
- await this.evt.emit('onLoadSuccess', {
206
- isInitialLoad,
207
- });
208
-
209
- return nodes;
210
- }
211
-
212
- /**
213
- * 加载子节点数据
214
- *
215
- * @author zk
216
- * @date 2023-09-21 06:09:02
217
- * @param {ITreeNodeData} [parentNode]
218
- * @return {*} {Promise<ITreeNodeData[]>}
219
- * @memberof TreeGridExController
220
- */
221
- async loadNodes(parentNode?: ITreeNodeData): Promise<ITreeNodeData[]> {
222
- const params = await this.getFetchParams();
223
- const hasQuery = !!params.query;
224
- const defaultExpandedKeys = !parentNode
225
- ? this.state.defaultExpandedKeys
226
- : undefined;
227
-
228
- // 请求服务获取子节点数据
229
- await this.startLoading();
230
- let nodes;
231
- try {
232
- nodes =
233
- (await this.service.fetchChildNodes(parentNode, {
234
- context: this.context.clone(),
235
- params,
236
- hasQuery,
237
- defaultExpandedKeys,
238
- })) || [];
239
- } finally {
240
- await this.endLoading();
241
- }
242
-
243
- // 有父节点绑定到父节点数据上,无父节点替换rootNodes
244
- if (parentNode) {
245
- parentNode.children = nodes;
246
- } else {
247
- this.state.rootNodes = nodes;
222
+ getRowState(key: string): ITreeGridExRowState | undefined {
223
+ const nodeData = this.getNodeData(key);
224
+ if (nodeData) {
225
+ return this.state.rows[nodeData._uuid];
248
226
  }
227
+ }
249
228
 
250
- // 更新items
251
- this.state.items = [];
252
- recursiveIterate(
253
- { children: this.state.rootNodes },
254
- (node: ITreeNodeData) => {
255
- this.state.items.push(node);
256
- },
257
- );
229
+ async afterLoadNodes(nodes: ITreeNodeData[]): Promise<void> {
230
+ await super.afterLoadNodes(nodes);
258
231
 
259
- return nodes;
232
+ // 封装更新树表格行数据
233
+ recursiveIterate({ children: nodes }, (node: ITreeNodeData) => {
234
+ this.state.rows[node._uuid] = new TreeGridExRowState(node, this);
235
+ });
260
236
  }
261
237
 
262
238
  /**
263
- * 计算展开节点集合
239
+ * 转换各类多语言
264
240
  *
265
- * @author zk
266
- * @date 2023-09-21 06:09:07
267
- * @param {ITreeNodeData[]} nodes
268
- * @return {*} {string[]}
269
- * @memberof TreeGridExController
241
+ * @date 2023-05-18 02:57:00
242
+ * @protected
270
243
  */
271
- protected calcExpandedKeys(nodes: ITreeNodeData[]): string[] {
272
- let expandedKeys: string[] = [];
273
- recursiveIterate({ children: nodes }, (node: ITreeNodeData) => {
274
- if (node.children?.length) {
275
- expandedKeys.push(node.id);
276
- }
277
- });
278
- if (this.state.defaultExpandedKeys.length) {
279
- expandedKeys.push(...this.state.defaultExpandedKeys);
280
- expandedKeys = Array.from(new Set(expandedKeys));
244
+ protected convertMultipleLanguages(): void {
245
+ // *转换列标题的多语言
246
+ const convertColumnCaption = (columns: IDETreeColumn[]): void => {
247
+ columns.forEach((column: IDETreeColumn) => {
248
+ if (column.capLanguageRes && column.capLanguageRes.lanResTag) {
249
+ column.caption = ibiz.i18n.t(
250
+ column.capLanguageRes.lanResTag,
251
+ column.caption,
252
+ );
253
+ }
254
+ });
255
+ };
256
+ if (this.model.detreeColumns && this.model.detreeColumns.length > 0) {
257
+ convertColumnCaption(this.model.detreeColumns);
281
258
  }
282
- return expandedKeys;
283
259
  }
284
260
  }