@ibiz-template/model-helper 0.7.41-alpha.2 → 0.7.41-alpha.21

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.
@@ -1 +1 @@
1
- {"version":3,"file":"model-helper.d.ts","sourceRoot":"","sources":["../src/model-helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-helper.d.ts","sourceRoot":"","sources":["../src/model-helper.ts"],"names":[],"mappings":"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"}
@@ -168,8 +168,18 @@ export class ModelHelper {
168
168
  for (let i = 0; i < subAppRefs.length; i++) {
169
169
  const subApp = subAppRefs[i];
170
170
  const sourceSubApp = getAllPSSubAppRefs[i];
171
- // eslint-disable-next-line no-await-in-loop
172
- await this.initSubApp(app, subApp, sourceSubApp);
171
+ // 控制插件应用访问权限、通过应用样式参数SUBAPPACCESSKEY定义权限标识
172
+ if (subApp.accessKey) {
173
+ const mianApp = await ibiz.hub.getApp(ibiz.env.appId);
174
+ await mianApp.authority.init();
175
+ const permitted = mianApp.authority.calcByResCode(subApp.accessKey);
176
+ if (permitted) {
177
+ await this.initSubApp(app, subApp, sourceSubApp);
178
+ }
179
+ }
180
+ else {
181
+ await this.initSubApp(app, subApp, sourceSubApp);
182
+ }
173
183
  }
174
184
  }
175
185
  }
@@ -389,6 +399,8 @@ export class ModelHelper {
389
399
  this.merge.mergeSubAppGridCloumnActionGroup(view, controls, this.subAppRefs);
390
400
  // 合并树视图部件
391
401
  this.merge.mergeSubAppTreeView(view, controls, this.subAppRefs);
402
+ // 合并子应用表单部件
403
+ this.merge.mergeSubAppForm(view, controls, this.subAppRefs);
392
404
  }
393
405
  /**
394
406
  * 根据应用视图 codeName 获取应用视图模型
@@ -0,0 +1,45 @@
1
+ import { IDEForm } from '@ibiz/model-core';
2
+ /** 默认配置参数 */
3
+ declare const IterateOpts: {
4
+ /** 子集合属性数组 */
5
+ childrenFields: string[];
6
+ };
7
+ /**
8
+ * @description 递归遍历子元素,递归遍历子元素 用法:传入数组和回调函数 无返回值
9
+ * @example
10
+ * ```
11
+ * const parent = {
12
+ * name: 'parent',
13
+ * children: [
14
+ * {
15
+ * name: 'child1',
16
+ * children: [{ name: 'grandchild1' }, { name: 'grandchild2' }],
17
+ * },
18
+ * { name: 'child2', children: [{ name: 'grandchild3' }] },
19
+ * ],
20
+ * };
21
+ *
22
+ * const result: string[] = [];
23
+ *
24
+ * recursiveIterate(parent, item => {
25
+ * result.push(item.name);
26
+ * });
27
+ *
28
+ * result // => ['child1', 'grandchild1', 'grandchild2', 'child2', 'grandchild3']
29
+ * ```
30
+ * @export
31
+ * @param {IData} parent 父元素
32
+ * @param {(item: any) => boolean} callback 每一个子元素的回调
33
+ * @param {Partial<typeof IterateOpts>} [opts]
34
+ */
35
+ export declare function recursiveIterate(parent: IData, callback: (item: any, _parent: any) => boolean | void, opts?: Partial<typeof IterateOpts>): void;
36
+ /**
37
+ * @description 合并子应用表单
38
+ * @export
39
+ * @param {(IDEForm | undefined)} dst 主应用表单模型
40
+ * @param {(IDEForm | undefined)} src 子应用表单模型
41
+ * @returns {*} {void}
42
+ */
43
+ export declare function mergeAppDEForm(dst: IDEForm | undefined, src: IDEForm | undefined): void;
44
+ export {};
45
+ //# sourceMappingURL=merge-de-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-de-form.d.ts","sourceRoot":"","sources":["../../../src/utils/merge-model/merge-de-form.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAU3C,aAAa;AACb,QAAA,MAAM,WAAW;IACf,cAAc;;CAEf,CAAC;AAiCF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,GAAG,IAAI,EACrD,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,GACjC,IAAI,CAaN;AA2ID;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,GAAG,SAAS,EACxB,GAAG,EAAE,OAAO,GAAG,SAAS,GACvB,IAAI,CAKN"}
@@ -0,0 +1,219 @@
1
+ import { mergeDeepRight } from 'ramda';
2
+ // 表单子属性集合(常量)
3
+ const CHILDRENFIELDS = [
4
+ 'deformPages',
5
+ 'deformTabPages',
6
+ 'deformDetails',
7
+ ];
8
+ /** 默认配置参数 */
9
+ const IterateOpts = {
10
+ /** 子集合属性数组 */
11
+ childrenFields: ['children'],
12
+ };
13
+ /**
14
+ * @description 获取表单成员匹配属性标识
15
+ * @param {IModel} model 指定模型数据
16
+ * @param {string[]} fields 属性集合
17
+ * @returns {*} {(string | undefined)}
18
+ */
19
+ function getFormDetailMatchField(model, fields) {
20
+ var _a;
21
+ for (const field of fields) {
22
+ if ((_a = model[field]) === null || _a === void 0 ? void 0 : _a.length) {
23
+ return field;
24
+ }
25
+ }
26
+ }
27
+ /**
28
+ * @description 获取子属性集合
29
+ * @param {IData} parent
30
+ * @param {string[]} fields 子集合可能的属性名称
31
+ * @returns {*} {(IData[] | undefined)}
32
+ */
33
+ function getChildField(parent, fields) {
34
+ var _a;
35
+ for (const field of fields) {
36
+ if ((_a = parent[field]) === null || _a === void 0 ? void 0 : _a.length) {
37
+ return parent[field];
38
+ }
39
+ }
40
+ }
41
+ /**
42
+ * @description 递归遍历子元素,递归遍历子元素 用法:传入数组和回调函数 无返回值
43
+ * @example
44
+ * ```
45
+ * const parent = {
46
+ * name: 'parent',
47
+ * children: [
48
+ * {
49
+ * name: 'child1',
50
+ * children: [{ name: 'grandchild1' }, { name: 'grandchild2' }],
51
+ * },
52
+ * { name: 'child2', children: [{ name: 'grandchild3' }] },
53
+ * ],
54
+ * };
55
+ *
56
+ * const result: string[] = [];
57
+ *
58
+ * recursiveIterate(parent, item => {
59
+ * result.push(item.name);
60
+ * });
61
+ *
62
+ * result // => ['child1', 'grandchild1', 'grandchild2', 'child2', 'grandchild3']
63
+ * ```
64
+ * @export
65
+ * @param {IData} parent 父元素
66
+ * @param {(item: any) => boolean} callback 每一个子元素的回调
67
+ * @param {Partial<typeof IterateOpts>} [opts]
68
+ */
69
+ export function recursiveIterate(parent, callback, opts) {
70
+ const { childrenFields } = mergeDeepRight(IterateOpts, opts || {});
71
+ const children = getChildField(parent, childrenFields);
72
+ if (children === null || children === void 0 ? void 0 : children.length) {
73
+ for (const child of children) {
74
+ // 递归自身的子成员
75
+ const isBreak = callback(child, parent);
76
+ // 如果回调返回true则不循环子数据
77
+ if (!isBreak) {
78
+ recursiveIterate(child, callback, opts);
79
+ }
80
+ }
81
+ }
82
+ }
83
+ /**
84
+ * @description 计算子应用表单合并项(仅合并类型为用户标记为dynamic_overlay:before|after|inside|replace:formitemname)
85
+ * @param {IDEForm} src 子应用表单模型
86
+ * @returns {*} {Map<string, IData>} key值为关联主表单项标识;value为{position:before|after|inside|replace,model:IModel}对象
87
+ */
88
+ function computeSubAppFormItems(src) {
89
+ const subAppMergeItemsMap = new Map();
90
+ recursiveIterate(src, (item, parent) => {
91
+ // 用户标记为dynamic_overlay:开始的才识别为需覆盖到主应用表单
92
+ if (item.userTag &&
93
+ item.userTag.startsWith('dynamic_overlay:') &&
94
+ item.userTag.split(':').length === 3) {
95
+ // before|after|inside|replace + ':formitemname' 定义附加位置
96
+ const tags = item.userTag.split(':');
97
+ if (tags[1] && tags[2]) {
98
+ if (!subAppMergeItemsMap.get(tags[2])) {
99
+ subAppMergeItemsMap.set(tags[2], []);
100
+ }
101
+ const tempItem = {
102
+ position: tags[1],
103
+ model: item,
104
+ // 定义当前项是否已经被合并
105
+ merge: false,
106
+ };
107
+ const targetMergeArray = subAppMergeItemsMap.get(tags[2]);
108
+ targetMergeArray.push(tempItem);
109
+ }
110
+ // 退出当前子的循环,父已经合并,无需管子的合并
111
+ return true;
112
+ }
113
+ }, {
114
+ childrenFields: CHILDRENFIELDS,
115
+ });
116
+ return subAppMergeItemsMap;
117
+ }
118
+ /**
119
+ * @description 合并指定表单成员到主表表单指定位置
120
+ * @param {IModel} item 当前表单成员
121
+ * @param {IModel} parent 当前表单成员父成员
122
+ * @param {IData} mergeItem 子应用表单合并项
123
+ * @returns {*} {void}
124
+ */
125
+ function mergeSubAppFormItemToDst(item, parent, mergeItem) {
126
+ const { position, model } = mergeItem;
127
+ const formMatchField = getFormDetailMatchField(parent, CHILDRENFIELDS);
128
+ if (!formMatchField)
129
+ return;
130
+ const curIndex = parent[formMatchField].findIndex((parentItem) => {
131
+ return parentItem.codeName === item.codeName;
132
+ });
133
+ switch (position) {
134
+ // 附加至目标之前(before)
135
+ case 'before':
136
+ if (curIndex !== -1) {
137
+ parent[formMatchField].splice(curIndex, 0, model);
138
+ }
139
+ else {
140
+ parent[formMatchField].push(model);
141
+ }
142
+ break;
143
+ // 附加至目标内部(inside)
144
+ case 'inside':
145
+ const itemMatchField = getFormDetailMatchField(item, CHILDRENFIELDS);
146
+ if (itemMatchField) {
147
+ item[itemMatchField].push(model);
148
+ }
149
+ break;
150
+ // 替换目标(replace)
151
+ case 'replace':
152
+ if (curIndex !== -1) {
153
+ parent[formMatchField].splice(curIndex, 1, model);
154
+ }
155
+ break;
156
+ // 附加至目标之后(after)
157
+ case 'after':
158
+ if (curIndex !== -1) {
159
+ parent[formMatchField].splice(curIndex + 1, 0, model);
160
+ }
161
+ break;
162
+ // 附加至目标之后(默认)
163
+ default:
164
+ if (curIndex !== -1) {
165
+ parent[formMatchField].splice(curIndex + 1, 0, model);
166
+ }
167
+ break;
168
+ }
169
+ // 标记当前项已被合并
170
+ mergeItem.merge = true;
171
+ }
172
+ /**
173
+ * @description 合并子应用表单表单项
174
+ * @param {IDEForm} dst 目标表单模型
175
+ * @param {Map<string, IData>} subAppMergeItems 子应用需合并项数据
176
+ * @returns {*} {void}
177
+ */
178
+ function mergeSubAppFormItems(dst, subAppMergeItems) {
179
+ if (!dst || !subAppMergeItems)
180
+ return;
181
+ if (subAppMergeItems.size === 0)
182
+ return;
183
+ recursiveIterate(dst, (item, parent) => {
184
+ // 通过关联主表单项标识进行合并
185
+ const mergeItems = subAppMergeItems.get(item.codeName);
186
+ if (mergeItems && mergeItems.length > 0) {
187
+ mergeItems.forEach((mergeItem) => {
188
+ // 判断当前项是否已经被合并,若已经被合并则不再处理
189
+ if (!mergeItem.merge) {
190
+ mergeSubAppFormItemToDst(item, parent, mergeItem);
191
+ }
192
+ });
193
+ }
194
+ }, {
195
+ childrenFields: CHILDRENFIELDS,
196
+ });
197
+ // 矫正合并后主表单模型数据
198
+ if (dst.deformPages && dst.deformPages.length > 1) {
199
+ dst.noTabHeader = false;
200
+ }
201
+ else {
202
+ dst.noTabHeader = true;
203
+ }
204
+ }
205
+ /**
206
+ * @description 合并子应用表单
207
+ * @export
208
+ * @param {(IDEForm | undefined)} dst 主应用表单模型
209
+ * @param {(IDEForm | undefined)} src 子应用表单模型
210
+ * @returns {*} {void}
211
+ */
212
+ export function mergeAppDEForm(dst, src) {
213
+ if (!dst || !src)
214
+ return;
215
+ const subAppMergeItems = computeSubAppFormItems(src);
216
+ if (subAppMergeItems.size === 0)
217
+ return;
218
+ mergeSubAppFormItems(dst, subAppMergeItems);
219
+ }
@@ -1,4 +1,4 @@
1
- import { IAppView, IControl, ISubAppRef } from '@ibiz/model-core';
1
+ import { IAppView, IControl, IDEToolbarItem, ISubAppRef } from '@ibiz/model-core';
2
2
  import { DSLHelper } from '@ibiz/rt-model-api';
3
3
  /**
4
4
  * 子应用模型合并对象
@@ -56,6 +56,14 @@ export declare class MergeSubModelHelper {
56
56
  * @param {ISubAppRef[]} subAppRefs
57
57
  */
58
58
  mergeSubAppToolbarActionGroup(view: IAppView, controls: IControl[] | undefined, subAppRefs: ISubAppRef[]): void;
59
+ /**
60
+ * @description 递归合并工具项界面行为组
61
+ * @param {IDEToolbarItem[]} dstToolBarItems
62
+ * @param {IAppView} view
63
+ * @param {ISubAppRef[]} subAppRefs
64
+ * @memberof MergeSubModelHelper
65
+ */
66
+ recursiveMergeSubAppToolbarItemActionGroup(dstToolBarItems: IDEToolbarItem[], view: IAppView, subAppRefs: ISubAppRef[]): void;
59
67
  /**
60
68
  * 合并树上下文菜单
61
69
  *
@@ -87,5 +95,13 @@ export declare class MergeSubModelHelper {
87
95
  * @param {ISubAppRef[]} subAppRefs
88
96
  */
89
97
  mergeSubAppGridCloumnActionGroup(view: IAppView, controls: IControl[] | undefined, subAppRefs: ISubAppRef[]): void;
98
+ /**
99
+ * @description 合并子应用表单(实体代码标识和表单代码标识一致)
100
+ * @param {IAppView} view
101
+ * @param {(IControl[] | undefined)} controls
102
+ * @param {ISubAppRef[]} subAppRefs
103
+ * @memberof MergeSubModelHelper
104
+ */
105
+ mergeSubAppForm(view: IAppView, controls: IControl[] | undefined, subAppRefs: ISubAppRef[]): void;
90
106
  }
91
107
  //# sourceMappingURL=merge-model-helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-model-helper.d.ts","sourceRoot":"","sources":["../../../src/utils/merge-model/merge-model-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,QAAQ,EASR,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAO/C;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,YAAmB;IAEhC;;;;;;;OAOG;IACH,gBAAgB,CACd,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAcP;;;;;;;;OAQG;IACH,uBAAuB,CACrB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAuBP;;;;;;;;OAQG;IACH,iBAAiB,CACf,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAiBP;;;;;;;;OAQG;IACH,6BAA6B,CAC3B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAiDP;;;;;;;;OAQG;IACH,qCAAqC,CACnC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAuEP,mBAAmB,CACjB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAwBP;;;;;;;;OAQG;IACH,0BAA0B,CACxB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAuCP;;;;;;;;OAQG;IACH,gCAAgC,CAC9B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;CAoCR"}
1
+ {"version":3,"file":"merge-model-helper.d.ts","sourceRoot":"","sources":["../../../src/utils/merge-model/merge-model-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,QAAQ,EASR,cAAc,EAEd,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQ/C;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,YAAmB;IAEhC;;;;;;;OAOG;IACH,gBAAgB,CACd,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAcP;;;;;;;;OAQG;IACH,uBAAuB,CACrB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAuBP;;;;;;;;OAQG;IACH,iBAAiB,CACf,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAiBP;;;;;;;;OAQG;IACH,6BAA6B,CAC3B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAwBP;;;;;;OAMG;IACH,0CAA0C,CACxC,eAAe,EAAE,cAAc,EAAE,EACjC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAwCP;;;;;;;;OAQG;IACH,qCAAqC,CACnC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAyEP,mBAAmB,CACjB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAwBP;;;;;;;;OAQG;IACH,0BAA0B,CACxB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAuCP;;;;;;;;OAQG;IACH,gCAAgC,CAC9B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;IAqCP;;;;;;OAMG;IACH,eAAe,CACb,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI;CAmBR"}
@@ -5,6 +5,7 @@ import { mergeAppMenu } from './merge-app-menu';
5
5
  import { mergeDEDrControl } from './merge-de-drcontrol';
6
6
  import { mergeAppDEUIActionGroup } from './merge-app-uiaction-group';
7
7
  import { mergeTreeView } from './merge-treeview';
8
+ import { mergeAppDEForm } from './merge-de-form';
8
9
  /**
9
10
  * 子应用模型合并对象
10
11
  *
@@ -113,27 +114,7 @@ export class MergeSubModelHelper {
113
114
  });
114
115
  if (dstToolBar && dstToolBar.detoolbarItems) {
115
116
  const dstToolBarItems = dstToolBar.detoolbarItems;
116
- if (dstToolBarItems && dstToolBarItems.length > 0) {
117
- for (let i = 0; i < dstToolBarItems.length; i++) {
118
- const dstToolBarItem = dstToolBarItems[i];
119
- if (dstToolBarItem &&
120
- dstToolBarItem.uiactionGroup) {
121
- const dstUIActionGroup = dstToolBarItem
122
- .uiactionGroup;
123
- if (dstUIActionGroup) {
124
- for (let j = 0; j < subAppRefs.length; j++) {
125
- if (subAppRefs[j].appId === view.appId) {
126
- continue;
127
- }
128
- const srcAppDEUIActionGroup = ibiz.hub.getSubAppDEUIActionGroups(dstUIActionGroup.uniqueTag, subAppRefs[j].appId);
129
- if (srcAppDEUIActionGroup) {
130
- mergeAppDEUIActionGroup(dstToolBarItems[i].uiactionGroup, srcAppDEUIActionGroup);
131
- }
132
- }
133
- }
134
- }
135
- }
136
- }
117
+ this.recursiveMergeSubAppToolbarItemActionGroup(dstToolBarItems, view, subAppRefs);
137
118
  }
138
119
  controls.forEach(control => {
139
120
  if (control && control.controls) {
@@ -141,6 +122,40 @@ export class MergeSubModelHelper {
141
122
  }
142
123
  });
143
124
  }
125
+ /**
126
+ * @description 递归合并工具项界面行为组
127
+ * @param {IDEToolbarItem[]} dstToolBarItems
128
+ * @param {IAppView} view
129
+ * @param {ISubAppRef[]} subAppRefs
130
+ * @memberof MergeSubModelHelper
131
+ */
132
+ recursiveMergeSubAppToolbarItemActionGroup(dstToolBarItems, view, subAppRefs) {
133
+ if (dstToolBarItems && dstToolBarItems.length > 0) {
134
+ for (let i = 0; i < dstToolBarItems.length; i++) {
135
+ const dstToolBarItem = dstToolBarItems[i];
136
+ if (dstToolBarItem &&
137
+ dstToolBarItem.uiactionGroup) {
138
+ const dstUIActionGroup = dstToolBarItem
139
+ .uiactionGroup;
140
+ if (dstUIActionGroup) {
141
+ for (let j = 0; j < subAppRefs.length; j++) {
142
+ if (subAppRefs[j].appId === view.appId) {
143
+ continue;
144
+ }
145
+ const srcAppDEUIActionGroup = ibiz.hub.getSubAppDEUIActionGroups(dstUIActionGroup.uniqueTag, subAppRefs[j].appId);
146
+ if (srcAppDEUIActionGroup) {
147
+ mergeAppDEUIActionGroup(dstToolBarItems[i].uiactionGroup, srcAppDEUIActionGroup);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ if (dstToolBarItem.detoolbarItems) {
153
+ this.recursiveMergeSubAppToolbarItemActionGroup(dstToolBarItem
154
+ .detoolbarItems, view, subAppRefs);
155
+ }
156
+ }
157
+ }
158
+ }
144
159
  /**
145
160
  * 合并树上下文菜单
146
161
  *
@@ -179,13 +194,15 @@ export class MergeSubModelHelper {
179
194
  if (srcAppDEUIActionGroup) {
180
195
  mergeAppDEUIActionGroup(dstContextMenuItems[i]
181
196
  .uiactionGroup, srcAppDEUIActionGroup);
182
- const targetDeTreeNode = (_b = dstTree.detreeNodes) === null || _b === void 0 ? void 0 : _b.find(treeNode => {
197
+ const targetDeTreeNodes = (_b = dstTree.detreeNodes) === null || _b === void 0 ? void 0 : _b.filter(treeNode => {
183
198
  return (treeNode.decontextMenu &&
184
199
  treeNode.decontextMenu.modelId ===
185
200
  dstContextMenu.modelId);
186
201
  });
187
- if (targetDeTreeNode) {
188
- targetDeTreeNode.decontextMenu = dstContextMenu;
202
+ if (targetDeTreeNodes && targetDeTreeNodes.length > 0) {
203
+ targetDeTreeNodes.forEach(targetDeTreeNode => {
204
+ targetDeTreeNode.decontextMenu = dstContextMenu;
205
+ });
189
206
  }
190
207
  }
191
208
  }
@@ -297,4 +314,29 @@ export class MergeSubModelHelper {
297
314
  });
298
315
  }
299
316
  }
317
+ /**
318
+ * @description 合并子应用表单(实体代码标识和表单代码标识一致)
319
+ * @param {IAppView} view
320
+ * @param {(IControl[] | undefined)} controls
321
+ * @param {ISubAppRef[]} subAppRefs
322
+ * @memberof MergeSubModelHelper
323
+ */
324
+ mergeSubAppForm(view, controls, subAppRefs) {
325
+ if (!controls)
326
+ return;
327
+ const forms = controls.filter(item => {
328
+ return item.controlType === 'FORM';
329
+ });
330
+ if (forms.length === 0)
331
+ return;
332
+ forms.forEach(dstForm => {
333
+ const ids = dstForm.id.split('.');
334
+ for (let i = 0; i < subAppRefs.length; i++) {
335
+ const srcForm = ibiz.hub.getSubAppControl(ids[1] + ids[2], subAppRefs[i].appId);
336
+ if (srcForm) {
337
+ mergeAppDEForm(dstForm, srcForm);
338
+ }
339
+ }
340
+ });
341
+ }
300
342
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/model-helper",
3
- "version": "0.7.41-alpha.2",
3
+ "version": "0.7.41-alpha.21",
4
4
  "description": "模型辅助库",
5
5
  "main": "out/index.js",
6
6
  "types": "out/index.d.ts",
@@ -30,14 +30,14 @@
30
30
  "author": "iBiz",
31
31
  "license": "MIT",
32
32
  "dependencies": {
33
- "@ibiz-template/core": "^0.7.41-alpha.2",
34
- "@ibiz/model-core": "^0.1.76",
35
- "@ibiz/rt-model-api": "0.2.73",
33
+ "@ibiz-template/core": "^0.7.41-alpha.18",
34
+ "@ibiz/model-core": "^0.1.81",
35
+ "@ibiz/rt-model-api": "0.2.79",
36
36
  "pluralize": "^8.0.0",
37
37
  "ramda": "^0.29.1"
38
38
  },
39
39
  "devDependencies": {
40
- "@ibiz-template/runtime": "^0.7.41-alpha.2",
40
+ "@ibiz-template/runtime": "^0.7.41-alpha.21",
41
41
  "@types/pluralize": "^0.0.33",
42
42
  "@types/ramda": "^0.29.10"
43
43
  },
@@ -45,5 +45,5 @@
45
45
  "@ibiz-template/runtime": "^0.6.0",
46
46
  "ramda": "^0.29.0"
47
47
  },
48
- "gitHead": "339bfa274a8edb1ba4c53cb08920fdc86f048d36"
48
+ "gitHead": "70e316e5d3c511884cd2b577b5b2483b5ff6c97c"
49
49
  }