@ibiz-template/model-helper 0.4.8-dev.0 → 0.4.9

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":"AAAA,OAAO,EAEL,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,UAAU,EAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC;;;;;;;GAOG;AACH,qBAAa,WAAW;IAgCpB,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IACpD,SAAS,CAAC,YAAY,EAAE,MAAM;IAC9B,SAAS,CAAC,UAAU,EAAE,OAAO;IAjC/B,SAAS,CAAC,GAAG,YAAmB;IAEhC;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,CAAM;IAExC;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAEpD;;;;;;;OAOG;gBAES,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC1C,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,OAAc;IAKtC;;;;;;;OAOG;IACG,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5C;;;;;;;;OAQG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAA0B,GAChC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;;;OAQG;cACa,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDlE;;;;;;;;;OASG;cACa,UAAU,CACxB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;;;OAOG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAWlE;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7D;;;;;;;;;OASG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,EACxB,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,CAAC;IAU1B;;;;;;;OAOG;IACH,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IA2BtD;;;;;;;;OAQG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GACvB,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;;;OAQG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GACvB,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,CACpB,OAAO,GAAE,OAAO,GAAG,MAA0B,GAC5C,SAAS;IAQZ;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,GAAE,OAAO,GAAG,MAA0B,GAAG,MAAM;CASxE"}
1
+ {"version":3,"file":"model-helper.d.ts","sourceRoot":"","sources":["../src/model-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,UAAU,EAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC;;;;;;;GAOG;AACH,qBAAa,WAAW;IAgCpB,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IACpD,SAAS,CAAC,YAAY,EAAE,MAAM;IAC9B,SAAS,CAAC,UAAU,EAAE,OAAO;IAjC/B,SAAS,CAAC,GAAG,YAAmB;IAEhC;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,CAAM;IAExC;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAEpD;;;;;;;OAOG;gBAES,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC1C,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,OAAc;IAKtC;;;;;;;OAOG;IACG,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5C;;;;;;;;OAQG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAA0B,GAChC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;;;OAQG;cACa,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDlE;;;;;;;;;OASG;cACa,UAAU,CACxB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;;;OAOG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAWlE;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7D;;;;;;;;;OASG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,EACxB,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,CAAC;IAU1B;;;;;;;OAOG;IACH,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAatD;;;;;;;;OAQG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GACvB,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;;;OAQG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GACvB,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,CACpB,OAAO,GAAE,OAAO,GAAG,MAA0B,GAC5C,SAAS;IAQZ;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,GAAE,OAAO,GAAG,MAA0B,GAAG,MAAM;CASxE"}
@@ -1,7 +1,7 @@
1
1
  import { DSLHelper } from '@ibiz/rt-model-api';
2
2
  import { ModelUtil } from './model-util';
3
3
  import { ModelLoader } from './model-loader';
4
- import { plural } from './utils';
4
+ import { mergeAppMenu, plural } from './utils';
5
5
  /**
6
6
  * 模型加载工具类
7
7
  *
@@ -202,19 +202,7 @@ export class ModelHelper {
202
202
  view.controls.forEach((ctrl) => {
203
203
  if (ctrl.controlType === 'APPMENU') {
204
204
  ctrl = ctrl;
205
- this.subAppRefs.forEach(subApp => {
206
- if (subApp &&
207
- subApp.appMenuModel &&
208
- subApp.appMenuModel.appMenuItems) {
209
- if (!ctrl.appMenuItems) {
210
- ctrl.appMenuItems = [];
211
- }
212
- ctrl.appMenuItems = [
213
- ...ctrl.appMenuItems,
214
- ...subApp.appMenuModel.appMenuItems,
215
- ];
216
- }
217
- });
205
+ mergeAppMenu(ctrl, this.subAppRefs);
218
206
  }
219
207
  });
220
208
  }
@@ -2,4 +2,5 @@ export { formatPath } from './format-path/format-path';
2
2
  export { mergeModel } from './merge-model/merge-model';
3
3
  export { plural, pluralLower } from './plural/plural';
4
4
  export { ServicePathDeep, ServicePathItem, ServicePathUtil, } from './service-path-util/service-path-util';
5
+ export { mergeAppMenu } from './merge-model/merge-app-menu';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC"}
@@ -2,3 +2,4 @@ export { formatPath } from './format-path/format-path';
2
2
  export { mergeModel } from './merge-model/merge-model';
3
3
  export { plural, pluralLower } from './plural/plural';
4
4
  export { ServicePathUtil, } from './service-path-util/service-path-util';
5
+ export { mergeAppMenu } from './merge-model/merge-app-menu';
@@ -0,0 +1,11 @@
1
+ import { IAppMenuModel, ISubAppRef } from '@ibiz/model-core';
2
+ /**
3
+ * 合并主应用首页菜单
4
+ * @author lxm
5
+ * @date 2023-12-07 02:26:57
6
+ * @export
7
+ * @param {IAppMenuModel} mainMenu
8
+ * @param {ISubAppRef[]} subAppRefs
9
+ */
10
+ export declare function mergeAppMenu(mainMenu: IAppMenuModel, subAppRefs: ISubAppRef[]): void;
11
+ //# sourceMappingURL=merge-app-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-app-menu.d.ts","sourceRoot":"","sources":["../../../src/utils/merge-model/merge-app-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyD3E;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI,CAeN"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * 递归合并主菜单项和子菜单项
3
+ * @author lxm
4
+ * @date 2023-12-07 03:16:13
5
+ * @param {IAppMenuItem} mainItem
6
+ * @param {IAppMenuItem} subItem
7
+ */
8
+ function mergeMenuItem(mainItem, subItem) {
9
+ var _a, _b, _c;
10
+ // 主菜单项没有子菜单项直接合并替换
11
+ if (!((_a = mainItem.appMenuItems) === null || _a === void 0 ? void 0 : _a.length)) {
12
+ if ((_b = subItem.appMenuItems) === null || _b === void 0 ? void 0 : _b.length) {
13
+ // 子菜单有下级菜单的时候只是添加下级菜单
14
+ mainItem.appMenuItems = subItem.appMenuItems;
15
+ }
16
+ else {
17
+ // 子菜单项也没有下级菜单的时候覆盖
18
+ Object.assign(mainItem, subItem);
19
+ }
20
+ }
21
+ else {
22
+ const addItems = [];
23
+ (_c = subItem.appMenuItems) === null || _c === void 0 ? void 0 : _c.forEach(item => {
24
+ var _a;
25
+ const sameMenu = (_a = mainItem.appMenuItems) === null || _a === void 0 ? void 0 : _a.find(x => x.id === item.id);
26
+ if (sameMenu) {
27
+ mergeMenuItem(sameMenu, item);
28
+ }
29
+ else {
30
+ addItems.push(item);
31
+ }
32
+ });
33
+ mainItem.appMenuItems.push(...addItems);
34
+ }
35
+ }
36
+ /**
37
+ * 合并主菜单和子菜单
38
+ * @author lxm
39
+ * @date 2023-12-07 03:15:54
40
+ * @param {IAppMenuModel} main
41
+ * @param {IAppMenuModel} sub
42
+ */
43
+ function mergeMenu(main, sub) {
44
+ var _a;
45
+ const addItems = [];
46
+ (_a = sub.appMenuItems) === null || _a === void 0 ? void 0 : _a.forEach(item => {
47
+ var _a;
48
+ const sameMenu = (_a = main.appMenuItems) === null || _a === void 0 ? void 0 : _a.find(x => x.id === item.id);
49
+ if (sameMenu) {
50
+ mergeMenuItem(sameMenu, item);
51
+ }
52
+ else {
53
+ addItems.push(item);
54
+ }
55
+ });
56
+ if (!main.appMenuItems) {
57
+ main.appMenuItems = [];
58
+ }
59
+ main.appMenuItems.push(...addItems);
60
+ }
61
+ /**
62
+ * 合并主应用首页菜单
63
+ * @author lxm
64
+ * @date 2023-12-07 02:26:57
65
+ * @export
66
+ * @param {IAppMenuModel} mainMenu
67
+ * @param {ISubAppRef[]} subAppRefs
68
+ */
69
+ export function mergeAppMenu(mainMenu, subAppRefs) {
70
+ const subMenus = [];
71
+ subAppRefs.forEach(sub => {
72
+ var _a, _b;
73
+ if ((_b = (_a = sub.appMenuModel) === null || _a === void 0 ? void 0 : _a.appMenuItems) === null || _b === void 0 ? void 0 : _b.length) {
74
+ subMenus.push(sub.appMenuModel);
75
+ }
76
+ });
77
+ if (subMenus.length === 0) {
78
+ return;
79
+ }
80
+ // 依次合并主应用菜单和子应用菜单
81
+ subMenus.forEach(subMenu => {
82
+ mergeMenu(mainMenu, subMenu);
83
+ });
84
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/model-helper",
3
- "version": "0.4.8-dev.0",
3
+ "version": "0.4.9",
4
4
  "description": "控制器包",
5
5
  "main": "out/index.js",
6
6
  "types": "out/index.d.ts",
@@ -35,7 +35,7 @@
35
35
  "ramda": "^0.29.1"
36
36
  },
37
37
  "devDependencies": {
38
- "@ibiz-template/runtime": "^0.4.8-dev.0",
38
+ "@ibiz-template/runtime": "^0.4.9",
39
39
  "@types/pluralize": "^0.0.33",
40
40
  "@types/ramda": "^0.29.9"
41
41
  },
@@ -43,5 +43,5 @@
43
43
  "@ibiz-template/runtime": "^0.4.0",
44
44
  "ramda": "^0.29.0"
45
45
  },
46
- "gitHead": "7ee2d66f0b84abba32b842f6b78fc77862cc3c55"
46
+ "gitHead": "aed61e1dc8d1cf0f56bbed55cfe70d6ea0f5cc58"
47
47
  }
@@ -11,7 +11,7 @@ import {
11
11
  import { DSLHelper } from '@ibiz/rt-model-api';
12
12
  import { ModelUtil } from './model-util';
13
13
  import { ModelLoader } from './model-loader';
14
- import { plural } from './utils';
14
+ import { mergeAppMenu, plural } from './utils';
15
15
 
16
16
  /**
17
17
  * 模型加载工具类
@@ -246,21 +246,7 @@ export class ModelHelper {
246
246
  view.controls.forEach((ctrl: IAppMenu) => {
247
247
  if (ctrl.controlType === 'APPMENU') {
248
248
  ctrl = ctrl as IAppMenuModel;
249
- this.subAppRefs.forEach(subApp => {
250
- if (
251
- subApp &&
252
- subApp.appMenuModel &&
253
- subApp.appMenuModel.appMenuItems
254
- ) {
255
- if (!ctrl.appMenuItems) {
256
- ctrl.appMenuItems = [];
257
- }
258
- ctrl.appMenuItems = [
259
- ...ctrl.appMenuItems,
260
- ...subApp.appMenuModel.appMenuItems,
261
- ];
262
- }
263
- });
249
+ mergeAppMenu(ctrl, this.subAppRefs);
264
250
  }
265
251
  });
266
252
  }
@@ -6,3 +6,4 @@ export {
6
6
  ServicePathItem,
7
7
  ServicePathUtil,
8
8
  } from './service-path-util/service-path-util';
9
+ export { mergeAppMenu } from './merge-model/merge-app-menu';
@@ -0,0 +1,84 @@
1
+ import { IAppMenuItem, IAppMenuModel, ISubAppRef } from '@ibiz/model-core';
2
+
3
+ /**
4
+ * 递归合并主菜单项和子菜单项
5
+ * @author lxm
6
+ * @date 2023-12-07 03:16:13
7
+ * @param {IAppMenuItem} mainItem
8
+ * @param {IAppMenuItem} subItem
9
+ */
10
+ function mergeMenuItem(mainItem: IAppMenuItem, subItem: IAppMenuItem): void {
11
+ // 主菜单项没有子菜单项直接合并替换
12
+ if (!mainItem.appMenuItems?.length) {
13
+ if (subItem.appMenuItems?.length) {
14
+ // 子菜单有下级菜单的时候只是添加下级菜单
15
+ mainItem.appMenuItems = subItem.appMenuItems;
16
+ } else {
17
+ // 子菜单项也没有下级菜单的时候覆盖
18
+ Object.assign(mainItem, subItem);
19
+ }
20
+ } else {
21
+ const addItems: IAppMenuItem[] = [];
22
+ subItem.appMenuItems?.forEach(item => {
23
+ const sameMenu = mainItem.appMenuItems?.find(x => x.id === item.id);
24
+ if (sameMenu) {
25
+ mergeMenuItem(sameMenu, item);
26
+ } else {
27
+ addItems.push(item);
28
+ }
29
+ });
30
+ mainItem.appMenuItems.push(...addItems);
31
+ }
32
+ }
33
+
34
+ /**
35
+ * 合并主菜单和子菜单
36
+ * @author lxm
37
+ * @date 2023-12-07 03:15:54
38
+ * @param {IAppMenuModel} main
39
+ * @param {IAppMenuModel} sub
40
+ */
41
+ function mergeMenu(main: IAppMenuModel, sub: IAppMenuModel): void {
42
+ const addItems: IAppMenuItem[] = [];
43
+ sub.appMenuItems?.forEach(item => {
44
+ const sameMenu = main.appMenuItems?.find(x => x.id === item.id);
45
+ if (sameMenu) {
46
+ mergeMenuItem(sameMenu, item);
47
+ } else {
48
+ addItems.push(item);
49
+ }
50
+ });
51
+
52
+ if (!main.appMenuItems) {
53
+ main.appMenuItems = [];
54
+ }
55
+ main.appMenuItems.push(...addItems);
56
+ }
57
+
58
+ /**
59
+ * 合并主应用首页菜单
60
+ * @author lxm
61
+ * @date 2023-12-07 02:26:57
62
+ * @export
63
+ * @param {IAppMenuModel} mainMenu
64
+ * @param {ISubAppRef[]} subAppRefs
65
+ */
66
+ export function mergeAppMenu(
67
+ mainMenu: IAppMenuModel,
68
+ subAppRefs: ISubAppRef[],
69
+ ): void {
70
+ const subMenus: IAppMenuModel[] = [];
71
+ subAppRefs.forEach(sub => {
72
+ if (sub.appMenuModel?.appMenuItems?.length) {
73
+ subMenus.push(sub.appMenuModel);
74
+ }
75
+ });
76
+ if (subMenus.length === 0) {
77
+ return;
78
+ }
79
+
80
+ // 依次合并主应用菜单和子应用菜单
81
+ subMenus.forEach(subMenu => {
82
+ mergeMenu(mainMenu, subMenu);
83
+ });
84
+ }