@ibiz-template/runtime 0.1.28 → 0.1.29-dev.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/dist/index.esm.js +1205 -265
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/out/app-hub.d.ts +9 -0
- package/out/app-hub.d.ts.map +1 -1
- package/out/app-hub.js +4 -0
- package/out/application.d.ts +9 -1
- package/out/application.d.ts.map +1 -1
- package/out/application.js +2 -1
- package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
- package/out/controller/common/control/md-control.controller.js +3 -0
- package/out/controller/common/view/view.controller.d.ts +23 -1
- package/out/controller/common/view/view.controller.d.ts.map +1 -1
- package/out/controller/common/view/view.controller.js +52 -0
- package/out/controller/control/dashboard/custom-dashboard.controller.d.ts +69 -0
- package/out/controller/control/dashboard/custom-dashboard.controller.d.ts.map +1 -0
- package/out/controller/control/dashboard/custom-dashboard.controller.js +85 -0
- package/out/controller/control/dashboard/index.d.ts +1 -0
- package/out/controller/control/dashboard/index.d.ts.map +1 -1
- package/out/controller/control/dashboard/index.js +1 -0
- package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.d.ts +15 -1
- package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.d.ts.map +1 -1
- package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.js +26 -9
- package/out/controller/control/index.d.ts +2 -0
- package/out/controller/control/index.d.ts.map +1 -1
- package/out/controller/control/index.js +2 -0
- package/out/controller/control/tree-grid/index.d.ts +3 -0
- package/out/controller/control/tree-grid/index.d.ts.map +1 -0
- package/out/controller/control/tree-grid/index.js +2 -0
- package/out/controller/control/tree-grid/tree-grid.controller.d.ts +5 -0
- package/out/controller/control/tree-grid/tree-grid.controller.d.ts.map +1 -0
- package/out/controller/control/tree-grid/tree-grid.controller.js +3 -0
- package/out/controller/control/tree-grid/tree-grid.service.d.ts +13 -0
- package/out/controller/control/tree-grid/tree-grid.service.d.ts.map +1 -0
- package/out/controller/control/tree-grid/tree-grid.service.js +12 -0
- package/out/controller/control/tree-grid-ex/index.d.ts +3 -0
- package/out/controller/control/tree-grid-ex/index.d.ts.map +1 -0
- package/out/controller/control/tree-grid-ex/index.js +2 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +134 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +240 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts +65 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts.map +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex.service.js +143 -0
- package/out/controller/utils/event/controller-event.d.ts +7 -0
- package/out/controller/utils/event/controller-event.d.ts.map +1 -1
- package/out/controller/utils/event/controller-event.js +12 -0
- package/out/controller/utils/view-msg/index.d.ts +2 -0
- package/out/controller/utils/view-msg/index.d.ts.map +1 -0
- package/out/controller/utils/view-msg/index.js +1 -0
- package/out/controller/utils/view-msg/view-msg-controller.d.ts +69 -0
- package/out/controller/utils/view-msg/view-msg-controller.d.ts.map +1 -0
- package/out/controller/utils/view-msg/view-msg-controller.js +176 -0
- package/out/de-logic/de-logic-context.d.ts +8 -0
- package/out/de-logic/de-logic-context.d.ts.map +1 -1
- package/out/de-logic/de-logic-context.js +11 -0
- package/out/de-logic/de-logic-node/prepare-param-node/prepare-param-node.d.ts.map +1 -1
- package/out/de-logic/de-logic-node/prepare-param-node/prepare-param-node.js +5 -1
- package/out/de-logic/utils/handle-src-val.d.ts.map +1 -1
- package/out/de-logic/utils/handle-src-val.js +19 -8
- package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +9 -0
- package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
- package/out/interface/common/i-app-service/i-app-service.d.ts +9 -0
- package/out/interface/common/i-app-service/i-app-service.d.ts.map +1 -1
- package/out/interface/controller/common/index.d.ts +1 -0
- package/out/interface/controller/common/index.d.ts.map +1 -1
- package/out/interface/controller/common/index.js +1 -0
- package/out/interface/controller/common/view-message/i-view-message.d.ts +39 -0
- package/out/interface/controller/common/view-message/i-view-message.d.ts.map +1 -0
- package/out/interface/controller/common/view-message/i-view-message.js +1 -0
- package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +16 -0
- package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -0
- package/out/interface/controller/controller/control/i-tree-grid-ex.controller.js +1 -0
- package/out/interface/controller/controller/control/i-tree-grid.controller.d.ts +13 -0
- package/out/interface/controller/controller/control/i-tree-grid.controller.d.ts.map +1 -0
- package/out/interface/controller/controller/control/i-tree-grid.controller.js +1 -0
- package/out/interface/controller/controller/control/index.d.ts +2 -0
- package/out/interface/controller/controller/control/index.d.ts.map +1 -1
- package/out/interface/controller/controller/control/index.js +2 -0
- package/out/interface/controller/controller/control/portlet/i-portlet.controller.d.ts +7 -0
- package/out/interface/controller/controller/control/portlet/i-portlet.controller.d.ts.map +1 -1
- package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +13 -0
- package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -0
- package/out/interface/controller/event/control/i-tree-grid-ex.event.js +1 -0
- package/out/interface/controller/event/control/i-tree-grid.event.d.ts +13 -0
- package/out/interface/controller/event/control/i-tree-grid.event.d.ts.map +1 -0
- package/out/interface/controller/event/control/i-tree-grid.event.js +1 -0
- package/out/interface/controller/event/control/index.d.ts +2 -0
- package/out/interface/controller/event/control/index.d.ts.map +1 -1
- package/out/interface/controller/event/control/index.js +2 -0
- package/out/interface/controller/event/view/i-tree-grid-ex-view.event.d.ts +12 -0
- package/out/interface/controller/event/view/i-tree-grid-ex-view.event.d.ts.map +1 -0
- package/out/interface/controller/event/view/i-tree-grid-ex-view.event.js +1 -0
- package/out/interface/controller/event/view/i-tree-grid-view.event.d.ts +12 -0
- package/out/interface/controller/event/view/i-tree-grid-view.event.d.ts.map +1 -0
- package/out/interface/controller/event/view/i-tree-grid-view.event.js +1 -0
- package/out/interface/controller/event/view/index.d.ts +2 -0
- package/out/interface/controller/event/view/index.d.ts.map +1 -1
- package/out/interface/controller/event/view/index.js +2 -0
- package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +52 -0
- package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -0
- package/out/interface/controller/state/control/i-tree-grid-ex.state.js +1 -0
- package/out/interface/controller/state/control/i-tree-grid.state.d.ts +13 -0
- package/out/interface/controller/state/control/i-tree-grid.state.d.ts.map +1 -0
- package/out/interface/controller/state/control/i-tree-grid.state.js +1 -0
- package/out/interface/controller/state/control/index.d.ts +2 -0
- package/out/interface/controller/state/control/index.d.ts.map +1 -1
- package/out/interface/controller/state/control/index.js +2 -0
- package/out/interface/controller/state/view/i-tree-grid-ex-view.state.d.ts +13 -0
- package/out/interface/controller/state/view/i-tree-grid-ex-view.state.d.ts.map +1 -0
- package/out/interface/controller/state/view/i-tree-grid-ex-view.state.js +1 -0
- package/out/interface/controller/state/view/i-tree-grid-view.state.d.ts +13 -0
- package/out/interface/controller/state/view/i-tree-grid-view.state.d.ts.map +1 -0
- package/out/interface/controller/state/view/i-tree-grid-view.state.js +1 -0
- package/out/interface/controller/state/view/i-view.state.d.ts +10 -0
- package/out/interface/controller/state/view/i-view.state.d.ts.map +1 -1
- package/out/interface/controller/state/view/index.d.ts +2 -0
- package/out/interface/controller/state/view/index.d.ts.map +1 -1
- package/out/interface/controller/state/view/index.js +2 -0
- package/out/interface/provider/i-grid-column.provider.d.ts +2 -1
- package/out/interface/provider/i-grid-column.provider.d.ts.map +1 -1
- package/out/interface/service/service/i-app-de.service.d.ts +9 -0
- package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
- package/out/interface/service/service/i-config.service.d.ts +20 -0
- package/out/interface/service/service/i-config.service.d.ts.map +1 -0
- package/out/interface/service/service/i-config.service.js +1 -0
- package/out/interface/service/service/index.d.ts +1 -0
- package/out/interface/service/service/index.d.ts.map +1 -1
- package/out/service/app-data-entity/app-data-entity.d.ts +10 -0
- package/out/service/app-data-entity/app-data-entity.d.ts.map +1 -1
- package/out/service/app-data-entity/app-data-entity.js +40 -13
- package/out/service/service/config/config.service.d.ts +43 -0
- package/out/service/service/config/config.service.d.ts.map +1 -0
- package/out/service/service/config/config.service.js +54 -0
- package/out/service/service/entity/de.service.d.ts +9 -0
- package/out/service/service/entity/de.service.d.ts.map +1 -1
- package/out/service/service/entity/de.service.js +2 -0
- package/out/service/service/index.d.ts +1 -0
- package/out/service/service/index.d.ts.map +1 -1
- package/out/service/service/index.js +1 -0
- package/out/service/vo/control.vo.d.ts.map +1 -1
- package/out/service/vo/control.vo.js +1 -5
- package/out/ui-action/provider/backend-ui-action-provider.d.ts.map +1 -1
- package/out/ui-action/provider/backend-ui-action-provider.js +5 -2
- package/out/ui-action/provider/ui-action-provider-base.d.ts +12 -1
- package/out/ui-action/provider/ui-action-provider-base.d.ts.map +1 -1
- package/out/ui-action/provider/ui-action-provider-base.js +55 -5
- package/out/ui-logic/ui-logic-context.d.ts +8 -0
- package/out/ui-logic/ui-logic-context.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-context.js +11 -0
- package/out/ui-logic/ui-logic-link/ui-logic-link.js +1 -1
- package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.js +5 -1
- package/out/ui-logic/utils/handle-src-val.d.ts.map +1 -1
- package/out/ui-logic/utils/handle-src-val.js +17 -4
- package/package.json +2 -2
- package/src/app-hub.ts +17 -0
- package/src/application.ts +20 -1
- package/src/controller/common/control/md-control.controller.ts +3 -0
- package/src/controller/common/view/view.controller.ts +67 -0
- package/src/controller/control/dashboard/custom-dashboard.controller.ts +107 -0
- package/src/controller/control/dashboard/index.ts +1 -0
- package/src/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.ts +32 -9
- package/src/controller/control/index.ts +2 -0
- package/src/controller/control/tree-grid/index.ts +2 -0
- package/src/controller/control/tree-grid/tree-grid.controller.ts +6 -0
- package/src/controller/control/tree-grid/tree-grid.service.ts +12 -0
- package/src/controller/control/tree-grid-ex/index.ts +2 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +283 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex.service.ts +171 -0
- package/src/controller/utils/event/controller-event.ts +16 -0
- package/src/controller/utils/view-msg/index.ts +1 -0
- package/src/controller/utils/view-msg/view-msg-controller.ts +250 -0
- package/src/de-logic/de-logic-context.ts +12 -0
- package/src/de-logic/de-logic-node/prepare-param-node/prepare-param-node.ts +7 -1
- package/src/de-logic/utils/handle-src-val.ts +23 -10
- package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +10 -0
- package/src/interface/common/i-app-service/i-app-service.ts +10 -0
- package/src/interface/controller/common/index.ts +1 -0
- package/src/interface/controller/common/view-message/i-view-message.ts +42 -0
- package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +20 -0
- package/src/interface/controller/controller/control/i-tree-grid.controller.ts +12 -0
- package/src/interface/controller/controller/control/index.ts +2 -0
- package/src/interface/controller/controller/control/portlet/i-portlet.controller.ts +8 -0
- package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +12 -0
- package/src/interface/controller/event/control/i-tree-grid.event.ts +12 -0
- package/src/interface/controller/event/control/index.ts +2 -0
- package/src/interface/controller/event/view/i-tree-grid-ex-view.event.ts +12 -0
- package/src/interface/controller/event/view/i-tree-grid-view.event.ts +12 -0
- package/src/interface/controller/event/view/index.ts +2 -0
- package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +56 -0
- package/src/interface/controller/state/control/i-tree-grid.state.ts +12 -0
- package/src/interface/controller/state/control/index.ts +2 -0
- package/src/interface/controller/state/view/i-tree-grid-ex-view.state.ts +12 -0
- package/src/interface/controller/state/view/i-tree-grid-view.state.ts +12 -0
- package/src/interface/controller/state/view/i-view.state.ts +9 -0
- package/src/interface/controller/state/view/index.ts +2 -0
- package/src/interface/provider/i-grid-column.provider.ts +2 -1
- package/src/interface/service/service/i-app-de.service.ts +10 -0
- package/src/interface/service/service/i-config.service.ts +20 -0
- package/src/interface/service/service/index.ts +1 -0
- package/src/service/app-data-entity/app-data-entity.ts +44 -13
- package/src/service/service/config/config.service.ts +65 -0
- package/src/service/service/entity/de.service.ts +15 -0
- package/src/service/service/index.ts +1 -0
- package/src/service/vo/control.vo.ts +1 -6
- package/src/ui-action/provider/backend-ui-action-provider.ts +5 -2
- package/src/ui-action/provider/ui-action-provider-base.ts +68 -6
- package/src/ui-logic/ui-logic-context.ts +12 -0
- package/src/ui-logic/ui-logic-link/ui-logic-link.ts +1 -1
- package/src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts +7 -1
- package/src/ui-logic/utils/handle-src-val.ts +20 -4
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
IPortletController,
|
|
4
4
|
IDashboardController,
|
|
5
5
|
IPortletContainerController,
|
|
6
|
+
DataChangeEvent,
|
|
6
7
|
} from '../../../../../interface';
|
|
7
8
|
import { calcLayoutHeightWidth, calcDynaClass } from '../../../../../model';
|
|
8
9
|
import { ControlVO } from '../../../../../service';
|
|
@@ -144,6 +145,26 @@ export class PortletPartController<T extends IDBPortletPart = IDBPortletPart>
|
|
|
144
145
|
return new PortletPartState();
|
|
145
146
|
}
|
|
146
147
|
|
|
148
|
+
/**
|
|
149
|
+
* 数据改变方法
|
|
150
|
+
* @param {DataChangeEvent} event
|
|
151
|
+
* @return {*}
|
|
152
|
+
* @author: zhujiamin
|
|
153
|
+
* @Date: 2023-09-22 17:39:44
|
|
154
|
+
*/
|
|
155
|
+
onDataChange(event: DataChangeEvent): void {
|
|
156
|
+
let data = event.data[0];
|
|
157
|
+
if (data && data instanceof ControlVO) {
|
|
158
|
+
data = data.getOrigin();
|
|
159
|
+
}
|
|
160
|
+
if (data) {
|
|
161
|
+
this.state.actionGroupState!.update(
|
|
162
|
+
data,
|
|
163
|
+
this.dashboard.view.model.appDataEntityId!,
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
147
168
|
/**
|
|
148
169
|
* 初始化标题右侧界面行为按钮的状态
|
|
149
170
|
*
|
|
@@ -175,15 +196,7 @@ export class PortletPartController<T extends IDBPortletPart = IDBPortletPart>
|
|
|
175
196
|
// 实体门户视图监听视图数据变更,刷新界面行为组的状态。
|
|
176
197
|
const { appDataEntityId } = this.dashboard.view.model;
|
|
177
198
|
if (appDataEntityId) {
|
|
178
|
-
this.dashboard.view.evt.on('onDataChange',
|
|
179
|
-
let data = event.data[0];
|
|
180
|
-
if (data && data instanceof ControlVO) {
|
|
181
|
-
data = data.getOrigin();
|
|
182
|
-
}
|
|
183
|
-
if (data) {
|
|
184
|
-
this.state.actionGroupState!.update(data, appDataEntityId);
|
|
185
|
-
}
|
|
186
|
-
});
|
|
199
|
+
this.dashboard.view.evt.on('onDataChange', this.onDataChange);
|
|
187
200
|
}
|
|
188
201
|
}
|
|
189
202
|
|
|
@@ -243,4 +256,14 @@ export class PortletPartController<T extends IDBPortletPart = IDBPortletPart>
|
|
|
243
256
|
}
|
|
244
257
|
}
|
|
245
258
|
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* 销毁
|
|
262
|
+
* @author lxm
|
|
263
|
+
* @date 2023-04-25 11:08:54
|
|
264
|
+
*/
|
|
265
|
+
async destroyed(): Promise<void> {
|
|
266
|
+
ibiz.log.debug(`${this.model.codeName} onDestroyed`);
|
|
267
|
+
this.dashboard.view.evt.off('onDataChange', this.onDataChange);
|
|
268
|
+
}
|
|
246
269
|
}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { recursiveIterate } from '@ibiz-template/core';
|
|
2
|
+
import { IDETree, IDETreeColumn } from '@ibiz/model-core';
|
|
3
|
+
import {
|
|
4
|
+
MDCtrlLoadParams,
|
|
5
|
+
ITreeNodeData,
|
|
6
|
+
ITreeGridExController,
|
|
7
|
+
IGridColumnProvider,
|
|
8
|
+
ITreeGridExState,
|
|
9
|
+
ITreeGridExEvent,
|
|
10
|
+
} from '../../../interface';
|
|
11
|
+
import { getGridColumnProvider } from '../../../register';
|
|
12
|
+
import { MDControlController } from '../../common';
|
|
13
|
+
import {
|
|
14
|
+
GridColumnController,
|
|
15
|
+
GridFieldColumnController,
|
|
16
|
+
GridUAColumnController,
|
|
17
|
+
} from '../grid';
|
|
18
|
+
import { TreeGridExService } from './tree-grid-ex.service';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 树表格部件控制器
|
|
22
|
+
*
|
|
23
|
+
* @author zk
|
|
24
|
+
* @date 2023-09-21 06:09:46
|
|
25
|
+
* @export
|
|
26
|
+
* @class TreeGridExController
|
|
27
|
+
* @extends {MDControlController<IDETree, ITreeGridState, ITreeGridEvent>}
|
|
28
|
+
* @implements {ITreeGridExController}
|
|
29
|
+
*/
|
|
30
|
+
export class TreeGridExController
|
|
31
|
+
extends MDControlController<IDETree, ITreeGridExState, ITreeGridExEvent>
|
|
32
|
+
implements ITreeGridExController
|
|
33
|
+
{
|
|
34
|
+
declare service: TreeGridExService;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 表格列的适配器
|
|
38
|
+
*
|
|
39
|
+
* @author zk
|
|
40
|
+
* @date 2023-09-21 06:09:04
|
|
41
|
+
* @type {{ [key: string]: IGridColumnProvider }}
|
|
42
|
+
* @memberof TreeGridExController
|
|
43
|
+
*/
|
|
44
|
+
providers: { [key: string]: IGridColumnProvider } = {};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* 所有表格列控制器集合
|
|
48
|
+
*
|
|
49
|
+
* @author zk
|
|
50
|
+
* @date 2023-09-21 06:09:10
|
|
51
|
+
* @type {{ [key: string]: GridColumnController }}
|
|
52
|
+
* @memberof TreeGridExController
|
|
53
|
+
*/
|
|
54
|
+
columns: { [key: string]: GridColumnController } = {};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* 所有表格属性列的控制器
|
|
58
|
+
*
|
|
59
|
+
* @author zk
|
|
60
|
+
* @date 2023-09-21 06:09:16
|
|
61
|
+
* @type {{ [key: string]: GridFieldColumnController }}
|
|
62
|
+
* @memberof TreeGridExController
|
|
63
|
+
*/
|
|
64
|
+
fieldColumns: { [key: string]: GridFieldColumnController } = {};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* 所有表格操作列的控制器
|
|
68
|
+
*
|
|
69
|
+
* @author zk
|
|
70
|
+
* @date 2023-09-21 06:09:21
|
|
71
|
+
* @type {{ [key: string]: GridUAColumnController }}
|
|
72
|
+
* @memberof TreeGridExController
|
|
73
|
+
*/
|
|
74
|
+
uaColumns: { [key: string]: GridUAColumnController } = {};
|
|
75
|
+
|
|
76
|
+
protected initState(): void {
|
|
77
|
+
super.initState();
|
|
78
|
+
// 根节点初始化
|
|
79
|
+
this.state.size = 0;
|
|
80
|
+
this.state.columnStates = [];
|
|
81
|
+
this.state.defaultExpandedKeys = [];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
protected async onCreated(): Promise<void> {
|
|
85
|
+
await super.onCreated();
|
|
86
|
+
this.service = new TreeGridExService(this.model);
|
|
87
|
+
await this.service.init(this.context);
|
|
88
|
+
this.initColumnStates();
|
|
89
|
+
await this.initGridColumns();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* 初始化表格属性列,操作列,编辑项控制器
|
|
94
|
+
*
|
|
95
|
+
* @author zk
|
|
96
|
+
* @date 2023-09-21 06:09:28
|
|
97
|
+
* @protected
|
|
98
|
+
* @return {*} {Promise<void>}
|
|
99
|
+
* @memberof TreeGridExController
|
|
100
|
+
*/
|
|
101
|
+
protected async initGridColumns(): Promise<void> {
|
|
102
|
+
if (this.model.detreeColumns) {
|
|
103
|
+
await Promise.all(
|
|
104
|
+
this.model.detreeColumns.map(async column =>
|
|
105
|
+
this.initColumnsController(column),
|
|
106
|
+
),
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* 初始化表格属性列,操作列,编辑项控制器
|
|
113
|
+
*
|
|
114
|
+
* @author zk
|
|
115
|
+
* @date 2023-09-21 06:09:37
|
|
116
|
+
* @protected
|
|
117
|
+
* @param {IDETreeColumn} column
|
|
118
|
+
* @return {*} {Promise<void>}
|
|
119
|
+
* @memberof TreeGridExController
|
|
120
|
+
*/
|
|
121
|
+
protected async initColumnsController(column: IDETreeColumn): Promise<void> {
|
|
122
|
+
// 初始化适配器
|
|
123
|
+
const provider = await getGridColumnProvider(column);
|
|
124
|
+
if (!provider) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
this.providers[column.codeName!] = provider;
|
|
128
|
+
|
|
129
|
+
// 初始化表格列控制器
|
|
130
|
+
const controller = await provider.createController(column, this);
|
|
131
|
+
this.columns[column.codeName!] = controller as GridColumnController;
|
|
132
|
+
// 分类存放控制器
|
|
133
|
+
if (column.columnType === 'DEFGRIDCOLUMN') {
|
|
134
|
+
this.fieldColumns[column.codeName!] =
|
|
135
|
+
controller as GridFieldColumnController;
|
|
136
|
+
} else if (column.columnType === 'UAGRIDCOLUMN') {
|
|
137
|
+
this.uaColumns[column.codeName!] = controller as GridUAColumnController;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* 初始化表格列状态
|
|
143
|
+
*
|
|
144
|
+
* @author zk
|
|
145
|
+
* @date 2023-09-21 06:09:43
|
|
146
|
+
* @protected
|
|
147
|
+
* @memberof TreeGridExController
|
|
148
|
+
*/
|
|
149
|
+
protected initColumnStates(): void {
|
|
150
|
+
recursiveIterate(
|
|
151
|
+
this.model,
|
|
152
|
+
(column: IDETreeColumn) => {
|
|
153
|
+
if (column.columnType !== 'GROUPGRIDCOLUMN') {
|
|
154
|
+
this.state.columnStates.push({
|
|
155
|
+
key: column.codeName!,
|
|
156
|
+
caption: column.caption!,
|
|
157
|
+
hidden: !!column.hideDefault,
|
|
158
|
+
uaColumn: column.columnType === 'UAGRIDCOLUMN',
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{ childrenFields: ['detreeColumns'] },
|
|
163
|
+
);
|
|
164
|
+
this.calcColumnFixed();
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* 计算列的固定状态
|
|
169
|
+
*
|
|
170
|
+
* @author zk
|
|
171
|
+
* @date 2023-09-21 06:09:50
|
|
172
|
+
* @protected
|
|
173
|
+
* @memberof TreeGridExController
|
|
174
|
+
*/
|
|
175
|
+
protected calcColumnFixed(): void {
|
|
176
|
+
const showColumns = this.state.columnStates.filter(
|
|
177
|
+
column => !column.hidden,
|
|
178
|
+
);
|
|
179
|
+
const allNum = showColumns.length;
|
|
180
|
+
showColumns.forEach((column, index) => {
|
|
181
|
+
if (column.uaColumn) {
|
|
182
|
+
column.fixed = index + 1 <= Math.floor(allNum / 2) ? 'left' : 'right';
|
|
183
|
+
} else {
|
|
184
|
+
column.fixed = 'right';
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* 树部件加载,从根节点开始重新加载
|
|
191
|
+
*
|
|
192
|
+
* @author zk
|
|
193
|
+
* @date 2023-09-21 06:09:56
|
|
194
|
+
* @param {MDCtrlLoadParams} [args={}]
|
|
195
|
+
* @return {*} {Promise<ITreeNodeData[]>}
|
|
196
|
+
* @memberof TreeGridExController
|
|
197
|
+
*/
|
|
198
|
+
async load(args: MDCtrlLoadParams = {}): Promise<ITreeNodeData[]> {
|
|
199
|
+
const isInitialLoad = args.isInitialLoad === true;
|
|
200
|
+
const nodes = await this.loadNodes();
|
|
201
|
+
this.state.expandedKeys = this.calcExpandedKeys(nodes);
|
|
202
|
+
await this.afterLoad(args, nodes);
|
|
203
|
+
this.state.isLoaded = true;
|
|
204
|
+
await this.evt.emit('onLoadSuccess', {
|
|
205
|
+
isInitialLoad,
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
return nodes;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* 加载子节点数据
|
|
213
|
+
*
|
|
214
|
+
* @author zk
|
|
215
|
+
* @date 2023-09-21 06:09:02
|
|
216
|
+
* @param {ITreeNodeData} [parentNode]
|
|
217
|
+
* @return {*} {Promise<ITreeNodeData[]>}
|
|
218
|
+
* @memberof TreeGridExController
|
|
219
|
+
*/
|
|
220
|
+
async loadNodes(parentNode?: ITreeNodeData): Promise<ITreeNodeData[]> {
|
|
221
|
+
const params = await this.getFetchParams();
|
|
222
|
+
const hasQuery = !!params.query;
|
|
223
|
+
const defaultExpandedKeys = !parentNode
|
|
224
|
+
? this.state.defaultExpandedKeys
|
|
225
|
+
: undefined;
|
|
226
|
+
|
|
227
|
+
// 请求服务获取子节点数据
|
|
228
|
+
await this.startLoading();
|
|
229
|
+
let nodes;
|
|
230
|
+
try {
|
|
231
|
+
nodes =
|
|
232
|
+
(await this.service.fetchChildNodes(parentNode, {
|
|
233
|
+
context: this.context.clone(),
|
|
234
|
+
params,
|
|
235
|
+
hasQuery,
|
|
236
|
+
defaultExpandedKeys,
|
|
237
|
+
})) || [];
|
|
238
|
+
} finally {
|
|
239
|
+
await this.endLoading();
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// 有父节点绑定到父节点数据上,无父节点替换rootNodes
|
|
243
|
+
if (parentNode) {
|
|
244
|
+
parentNode.children = nodes;
|
|
245
|
+
} else {
|
|
246
|
+
this.state.rootNodes = nodes;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// 更新items
|
|
250
|
+
this.state.items = [];
|
|
251
|
+
recursiveIterate(
|
|
252
|
+
{ children: this.state.rootNodes },
|
|
253
|
+
(node: ITreeNodeData) => {
|
|
254
|
+
this.state.items.push(node);
|
|
255
|
+
},
|
|
256
|
+
);
|
|
257
|
+
|
|
258
|
+
return nodes;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* 计算展开节点集合
|
|
263
|
+
*
|
|
264
|
+
* @author zk
|
|
265
|
+
* @date 2023-09-21 06:09:07
|
|
266
|
+
* @param {ITreeNodeData[]} nodes
|
|
267
|
+
* @return {*} {string[]}
|
|
268
|
+
* @memberof TreeGridExController
|
|
269
|
+
*/
|
|
270
|
+
protected calcExpandedKeys(nodes: ITreeNodeData[]): string[] {
|
|
271
|
+
let expandedKeys: string[] = [];
|
|
272
|
+
recursiveIterate({ children: nodes }, (node: ITreeNodeData) => {
|
|
273
|
+
if (node.children?.length) {
|
|
274
|
+
expandedKeys.push(node.id);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
if (this.state.defaultExpandedKeys.length) {
|
|
278
|
+
expandedKeys.push(...this.state.defaultExpandedKeys);
|
|
279
|
+
expandedKeys = Array.from(new Set(expandedKeys));
|
|
280
|
+
}
|
|
281
|
+
return expandedKeys;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { IHttpResponse } from '@ibiz-template/core';
|
|
2
|
+
import {
|
|
3
|
+
IDETreeDataSetNode,
|
|
4
|
+
IDETreeNode,
|
|
5
|
+
IDETreeNodeRS,
|
|
6
|
+
} from '@ibiz/model-core';
|
|
7
|
+
import { isArray } from 'qx-util';
|
|
8
|
+
import { ITreeNodeData } from '../../../interface';
|
|
9
|
+
|
|
10
|
+
import { ControlVO, TreeDataSetNodeData, UIMapField } from '../../../service';
|
|
11
|
+
import { TreeFetchOpts, TreeService } from '../tree/tree.service';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 树表格增强部件服务
|
|
15
|
+
*
|
|
16
|
+
* @author zk
|
|
17
|
+
* @date 2023-09-25 05:09:52
|
|
18
|
+
* @export
|
|
19
|
+
* @class TreeGridService
|
|
20
|
+
* @extends {TreeService}
|
|
21
|
+
*/
|
|
22
|
+
export class TreeGridExService extends TreeService {
|
|
23
|
+
/**
|
|
24
|
+
* 表格列映射关系
|
|
25
|
+
*
|
|
26
|
+
* @author zk
|
|
27
|
+
* @date 2023-09-25 05:09:11
|
|
28
|
+
* @type {Map<string, Map<string, UIMapField>>}
|
|
29
|
+
* @memberof TreeGridService
|
|
30
|
+
*/
|
|
31
|
+
multipleUiMap: Map<string, Map<string, UIMapField>> = new Map();
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 初始化节点属性映射
|
|
35
|
+
*
|
|
36
|
+
* @author lxm
|
|
37
|
+
* @date 2022-08-31 18:08:37
|
|
38
|
+
*/
|
|
39
|
+
initUIDataMap(): void {
|
|
40
|
+
super.initUIDataMap();
|
|
41
|
+
this.model.detreeNodes?.forEach((item: IDETreeNode) => {
|
|
42
|
+
const dataMap: Map<string, UIMapField> = new Map();
|
|
43
|
+
item.detreeNodeDataItems?.forEach(dataItem => {
|
|
44
|
+
const uiKey = dataItem.id!.toLowerCase();
|
|
45
|
+
const deField = dataItem.appDEFieldId!;
|
|
46
|
+
// 后台实体属性
|
|
47
|
+
const deFieldKey = deField.toLowerCase();
|
|
48
|
+
const mapField = new UIMapField(uiKey, deFieldKey, {
|
|
49
|
+
isOriginField: true,
|
|
50
|
+
dataType: dataItem.dataType,
|
|
51
|
+
});
|
|
52
|
+
dataMap.set(uiKey, mapField);
|
|
53
|
+
});
|
|
54
|
+
this.multipleUiMap.set(item.id!, dataMap);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* 获取实体数据集数据
|
|
60
|
+
*
|
|
61
|
+
* @protected
|
|
62
|
+
* @param {TreeNodeRSModel} nodeRS
|
|
63
|
+
* @param {TreeFetchOpts} opts
|
|
64
|
+
* @returns {*}
|
|
65
|
+
* @memberof TreeService
|
|
66
|
+
*/
|
|
67
|
+
protected async getDENodeDatas(
|
|
68
|
+
nodeModel: IDETreeDataSetNode,
|
|
69
|
+
nodeRS: IDETreeNodeRS | undefined,
|
|
70
|
+
parentNodeData: ITreeNodeData | undefined,
|
|
71
|
+
opts: TreeFetchOpts,
|
|
72
|
+
): Promise<TreeDataSetNodeData[]> {
|
|
73
|
+
const { appDEDataSetId, appDataEntityId } = nodeModel;
|
|
74
|
+
|
|
75
|
+
// 处理查询参数,没有关系的时候不处理参数了
|
|
76
|
+
const { context, params, navContext, navParams } = nodeRS
|
|
77
|
+
? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts)
|
|
78
|
+
: {
|
|
79
|
+
context: opts.context,
|
|
80
|
+
params: opts.params,
|
|
81
|
+
navContext: {},
|
|
82
|
+
navParams: {},
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// 设置查询长度
|
|
86
|
+
params.size = nodeModel.maxSize || 1000;
|
|
87
|
+
// 排序属性
|
|
88
|
+
if (nodeModel.sortAppDEFieldId && nodeModel.sortDir) {
|
|
89
|
+
Object.assign(params, {
|
|
90
|
+
sort: `${nodeModel.sortAppDEFieldId.toLowerCase()},${nodeModel.sortDir.toLowerCase()}`,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// 请求实体数据
|
|
95
|
+
const response = await this.app.deService.exec(
|
|
96
|
+
appDataEntityId!,
|
|
97
|
+
appDEDataSetId!,
|
|
98
|
+
context,
|
|
99
|
+
params,
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
if (response.data.length) {
|
|
103
|
+
const { data } = this.handleResponseForMultiple(response, nodeModel.id!);
|
|
104
|
+
const nodeDatas = data.map((item: ControlVO) => {
|
|
105
|
+
return new TreeDataSetNodeData(nodeModel, parentNodeData, {
|
|
106
|
+
data: item,
|
|
107
|
+
leaf: !!opts.leaf,
|
|
108
|
+
navContext,
|
|
109
|
+
navParams,
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
return nodeDatas;
|
|
113
|
+
}
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* 处理多数据源响应
|
|
119
|
+
*
|
|
120
|
+
* @author zk
|
|
121
|
+
* @date 2023-09-21 04:09:06
|
|
122
|
+
* @param {IHttpResponse} response
|
|
123
|
+
* @param {string} tag 多数据源dataUIMap标识
|
|
124
|
+
* @return {*} {IHttpResponse}
|
|
125
|
+
* @memberof TreeGridService
|
|
126
|
+
*/
|
|
127
|
+
handleResponseForMultiple(
|
|
128
|
+
response: IHttpResponse,
|
|
129
|
+
tag: string,
|
|
130
|
+
): IHttpResponse {
|
|
131
|
+
const res = super.handleResponse(response) as IHttpResponse<
|
|
132
|
+
IData[] | IData
|
|
133
|
+
>;
|
|
134
|
+
if (res.headers) {
|
|
135
|
+
if (res.headers['x-page']) {
|
|
136
|
+
res.page = Number(res.headers['x-page']);
|
|
137
|
+
}
|
|
138
|
+
if (res.headers['x-per-page']) {
|
|
139
|
+
res.size = Number(res.headers['x-per-page']);
|
|
140
|
+
}
|
|
141
|
+
if (res.headers['x-total']) {
|
|
142
|
+
res.total = Number(res.headers['x-total']);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (res.ok) {
|
|
146
|
+
if (isArray(res.data)) {
|
|
147
|
+
res.data = (res.data as IData[]).map(item =>
|
|
148
|
+
this.toUIDataForMultiple(item, tag),
|
|
149
|
+
);
|
|
150
|
+
} else {
|
|
151
|
+
res.data = this.toUIDataForMultiple(res.data, tag);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return res;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* 实体数据转ui数据
|
|
159
|
+
*
|
|
160
|
+
* @author zk
|
|
161
|
+
* @date 2023-09-21 06:09:06
|
|
162
|
+
* @param {IData} entityData 实体数据
|
|
163
|
+
* @param {string} tag 多数据源dataUIMap标识
|
|
164
|
+
* @return {*} {ControlVO}
|
|
165
|
+
* @memberof TreeGridService
|
|
166
|
+
*/
|
|
167
|
+
toUIDataForMultiple(entityData: IData, tag: string): ControlVO {
|
|
168
|
+
const dataUIMap = this.multipleUiMap.get(tag);
|
|
169
|
+
return new ControlVO(entityData, dataUIMap);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -97,6 +97,22 @@ export class ControllerEvent<E extends IComponentEvent = IComponentEvent> {
|
|
|
97
97
|
this.evt.on(name as string, fn);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
/**
|
|
101
|
+
* 取消订阅指定事件
|
|
102
|
+
* @return {*}
|
|
103
|
+
* @author: zhujiamin
|
|
104
|
+
* @Date: 2023-09-22 17:45:07
|
|
105
|
+
*/
|
|
106
|
+
off<K extends EventTypeKeyOf<E>>(
|
|
107
|
+
name: K,
|
|
108
|
+
fn: (event: EventTypeObjec<E>[K]['event']) => void | Promise<void>,
|
|
109
|
+
): void {
|
|
110
|
+
if (this.isDestroyed) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.evt.off(name as string, fn);
|
|
114
|
+
}
|
|
115
|
+
|
|
100
116
|
/**
|
|
101
117
|
* 订阅任意事件
|
|
102
118
|
* @author lxm
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './view-msg-controller';
|