@ibiz-template/runtime 0.5.0-beta.4 → 0.5.0-beta.5
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 +548 -142
- package/dist/index.system.min.js +1 -1
- package/out/controller/control/app-menu/app-menu.controller.d.ts +34 -1
- package/out/controller/control/app-menu/app-menu.controller.d.ts.map +1 -1
- package/out/controller/control/app-menu/app-menu.controller.js +47 -5
- package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
- package/out/controller/control/gantt/gantt.controller.js +3 -3
- package/out/controller/control/grid/grid/entity-schema.d.ts +16 -0
- package/out/controller/control/grid/grid/entity-schema.d.ts.map +1 -0
- package/out/controller/control/grid/grid/entity-schema.js +81 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts +14 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.js +43 -1
- package/out/controller/control/grid/grid/grid.service.js +1 -1
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +1 -1
- package/out/controller/control/search-bar/entity-schema.d.ts +13 -0
- package/out/controller/control/search-bar/entity-schema.d.ts.map +1 -0
- package/out/controller/control/search-bar/entity-schema.js +151 -0
- package/out/controller/control/search-bar/search-bar-filter.controller.d.ts +9 -0
- package/out/controller/control/search-bar/search-bar-filter.controller.d.ts.map +1 -1
- package/out/controller/control/search-bar/search-bar-filter.controller.js +26 -6
- package/out/controller/control/search-bar/search-bar.controller.d.ts +29 -1
- package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
- package/out/controller/control/search-bar/search-bar.controller.js +55 -8
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +2 -1
- package/out/controller/utils/index.d.ts +1 -0
- package/out/controller/utils/index.d.ts.map +1 -1
- package/out/controller/utils/index.js +1 -0
- package/out/controller/utils/jsonschema/entity.d.ts +11 -0
- package/out/controller/utils/jsonschema/entity.d.ts.map +1 -0
- package/out/controller/utils/jsonschema/entity.js +16 -0
- package/out/controller/utils/jsonschema/index.d.ts +2 -0
- package/out/controller/utils/jsonschema/index.d.ts.map +1 -0
- package/out/controller/utils/jsonschema/index.js +1 -0
- package/out/interface/provider/i-app-menu-item.provider.d.ts +31 -0
- package/out/interface/provider/i-app-menu-item.provider.d.ts.map +1 -0
- package/out/interface/provider/i-app-menu-item.provider.js +1 -0
- package/out/interface/provider/index.d.ts +1 -0
- package/out/interface/provider/index.d.ts.map +1 -1
- package/out/interface/service/i-data-entity/i-data-entity.d.ts +0 -17
- package/out/interface/service/i-data-entity/i-data-entity.d.ts.map +1 -1
- package/out/register/helper/app-menu-item-register.d.ts +25 -0
- package/out/register/helper/app-menu-item-register.d.ts.map +1 -0
- package/out/register/helper/app-menu-item-register.js +52 -0
- package/out/register/helper/index.d.ts +1 -0
- package/out/register/helper/index.d.ts.map +1 -1
- package/out/register/helper/index.js +1 -0
- package/out/service/app-data-entity/app-data-entity.d.ts +0 -9
- package/out/service/app-data-entity/app-data-entity.d.ts.map +1 -1
- package/out/service/app-data-entity/app-data-entity.js +11 -41
- package/out/service/de-service-util.js +1 -1
- package/out/service/service/entity/method/de-action.d.ts +11 -0
- package/out/service/service/entity/method/de-action.d.ts.map +1 -1
- package/out/service/service/entity/method/de-action.js +31 -4
- package/out/service/utils/de-cache/de-cache.js +3 -3
- package/out/utils/open-redirect-view/open-redirect-view.d.ts +17 -4
- package/out/utils/open-redirect-view/open-redirect-view.d.ts.map +1 -1
- package/out/utils/open-redirect-view/open-redirect-view.js +20 -4
- package/package.json +3 -3
- package/src/controller/control/app-menu/app-menu.controller.ts +64 -6
- package/src/controller/control/gantt/gantt.controller.ts +3 -3
- package/src/controller/control/grid/grid/entity-schema.ts +105 -0
- package/src/controller/control/grid/grid/grid.controller.ts +57 -1
- package/src/controller/control/grid/grid/grid.service.ts +1 -1
- package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +1 -1
- package/src/controller/control/search-bar/entity-schema.ts +178 -0
- package/src/controller/control/search-bar/search-bar-filter.controller.ts +32 -9
- package/src/controller/control/search-bar/search-bar.controller.ts +69 -9
- package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +2 -2
- package/src/controller/utils/index.ts +1 -0
- package/src/controller/utils/jsonschema/entity.ts +19 -0
- package/src/controller/utils/jsonschema/index.ts +1 -0
- package/src/interface/provider/i-app-menu-item.provider.ts +40 -0
- package/src/interface/provider/index.ts +1 -0
- package/src/interface/service/i-data-entity/i-data-entity.ts +0 -19
- package/src/register/helper/app-menu-item-register.ts +65 -0
- package/src/register/helper/index.ts +1 -0
- package/src/service/app-data-entity/app-data-entity.ts +11 -46
- package/src/service/de-service-util.ts +1 -1
- package/src/service/service/entity/method/de-action.ts +44 -4
- package/src/service/utils/de-cache/de-cache.ts +3 -3
- package/src/utils/open-redirect-view/open-redirect-view.ts +31 -4
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { IAppMenu, IAppMenuItem } from '@ibiz/model-core';
|
|
2
|
-
import { IAppMenuState, IAppMenuEvent, IAppMenuController, IAppService } from '../../../interface';
|
|
2
|
+
import { IAppMenuState, IAppMenuEvent, IAppMenuController, IAppService, IAppMenuItemProvider } from '../../../interface';
|
|
3
3
|
import { AppCounter } from '../../../service';
|
|
4
4
|
import { ControlController } from '../../common';
|
|
5
|
+
import { CTX } from '../../ctx';
|
|
5
6
|
/**
|
|
6
7
|
* 应用菜单控制器
|
|
7
8
|
*
|
|
@@ -14,6 +15,22 @@ import { ControlController } from '../../common';
|
|
|
14
15
|
export declare class AppMenuController extends ControlController<IAppMenu, IAppMenuState, IAppMenuEvent> implements IAppMenuController {
|
|
15
16
|
app: IAppService;
|
|
16
17
|
protected initState(): void;
|
|
18
|
+
/**
|
|
19
|
+
* 所有菜单项,平铺开
|
|
20
|
+
* @author lxm
|
|
21
|
+
* @date 2023-12-29 02:43:35
|
|
22
|
+
* @type {IAppMenuItem[]}
|
|
23
|
+
*/
|
|
24
|
+
allAppMenuItems: IAppMenuItem[];
|
|
25
|
+
/**
|
|
26
|
+
* 菜单项适配器集合
|
|
27
|
+
* @author lxm
|
|
28
|
+
* @date 2023-07-19 04:14:50
|
|
29
|
+
* @type {{ [key: string]: IProvider }}
|
|
30
|
+
*/
|
|
31
|
+
itemProviders: {
|
|
32
|
+
[key: string]: IAppMenuItemProvider;
|
|
33
|
+
};
|
|
17
34
|
/**
|
|
18
35
|
* 视图层级
|
|
19
36
|
*
|
|
@@ -22,7 +39,16 @@ export declare class AppMenuController extends ControlController<IAppMenu, IAppM
|
|
|
22
39
|
* @memberof AppMenuController
|
|
23
40
|
*/
|
|
24
41
|
get routeDepth(): number | undefined;
|
|
42
|
+
constructor(model: IAppMenu, context: IContext, params: IParams, ctx: CTX);
|
|
25
43
|
protected onCreated(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* 初始化菜单项的适配器
|
|
46
|
+
* @author lxm
|
|
47
|
+
* @date 2023-12-29 02:50:20
|
|
48
|
+
* @protected
|
|
49
|
+
* @return {*} {Promise<void>}
|
|
50
|
+
*/
|
|
51
|
+
protected initAppMenuItemProviders(): Promise<void>;
|
|
26
52
|
/**
|
|
27
53
|
* 菜单项点击回调,触发对应的应用功能
|
|
28
54
|
*
|
|
@@ -43,6 +69,13 @@ export declare class AppMenuController extends ControlController<IAppMenu, IAppM
|
|
|
43
69
|
visible: boolean;
|
|
44
70
|
permitted: boolean;
|
|
45
71
|
};
|
|
72
|
+
/**
|
|
73
|
+
* 所有项平铺
|
|
74
|
+
* @author lxm
|
|
75
|
+
* @date 2023-12-29 02:42:39
|
|
76
|
+
* @protected
|
|
77
|
+
*/
|
|
78
|
+
protected flattenAllItems(): void;
|
|
46
79
|
/**
|
|
47
80
|
* 所有项平铺
|
|
48
81
|
* @return {*}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-menu.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/app-menu/app-menu.controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"app-menu.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/app-menu/app-menu.controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC;;;;;;;;GAQG;AACH,qBAAa,iBACX,SAAQ,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,CAChE,YAAW,kBAAkB;IAE7B,GAAG,EAAG,WAAW,CAAC;IAElB,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B;;;;;OAKG;IACH,eAAe,EAAG,YAAY,EAAE,CAAC;IAEjC;;;;;OAKG;IACH,aAAa,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAA;KAAE,CAAM;IAE5D;;;;;;OAMG;IACH,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;gBAEW,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG;cAKzD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1C;;;;;;OAMG;cACa,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWzD;;;;;;;OAOG;IACG,eAAe,CACnB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,UAAU,EAClB,QAAQ,GAAE,OAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAwChB;;;;;;OAMG;IAEH,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG;QACrC,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;KACpB;IAwBD;;;;;OAKG;IACH,SAAS,CAAC,eAAe,IAAI,IAAI;IAcjC;;;;;OAKG;IACH,WAAW,IAAI,YAAY,EAAE;IAI7B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQzC;;;;;OAKG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;CAkB3C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { findRecursiveChild, RuntimeError, RuntimeModelError, } from '@ibiz-template/core';
|
|
2
2
|
import { AppFuncCommand } from '../../../command';
|
|
3
3
|
import { ControlController } from '../../common';
|
|
4
|
+
import { getAppMenuItemProvider } from '../../../register';
|
|
4
5
|
/**
|
|
5
6
|
* 应用菜单控制器
|
|
6
7
|
*
|
|
@@ -25,15 +26,42 @@ export class AppMenuController extends ControlController {
|
|
|
25
26
|
get routeDepth() {
|
|
26
27
|
return this.view.modal.routeDepth;
|
|
27
28
|
}
|
|
29
|
+
constructor(model, context, params, ctx) {
|
|
30
|
+
super(model, context, params, ctx);
|
|
31
|
+
/**
|
|
32
|
+
* 菜单项适配器集合
|
|
33
|
+
* @author lxm
|
|
34
|
+
* @date 2023-07-19 04:14:50
|
|
35
|
+
* @type {{ [key: string]: IProvider }}
|
|
36
|
+
*/
|
|
37
|
+
this.itemProviders = {};
|
|
38
|
+
this.flattenAllItems();
|
|
39
|
+
}
|
|
28
40
|
async onCreated() {
|
|
29
41
|
var _a;
|
|
30
42
|
await super.onCreated();
|
|
31
43
|
this.app = await ibiz.hub.getApp(this.context.srfappid);
|
|
44
|
+
await this.initAppMenuItemProviders();
|
|
32
45
|
// 初始化菜单项状态
|
|
33
46
|
(_a = this.model.appMenuItems) === null || _a === void 0 ? void 0 : _a.forEach(item => {
|
|
34
47
|
this.initMenuItemState(item);
|
|
35
48
|
});
|
|
36
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* 初始化菜单项的适配器
|
|
52
|
+
* @author lxm
|
|
53
|
+
* @date 2023-12-29 02:50:20
|
|
54
|
+
* @protected
|
|
55
|
+
* @return {*} {Promise<void>}
|
|
56
|
+
*/
|
|
57
|
+
async initAppMenuItemProviders() {
|
|
58
|
+
await Promise.all(this.allAppMenuItems.map(async (item) => {
|
|
59
|
+
const provider = await getAppMenuItemProvider(item);
|
|
60
|
+
if (provider) {
|
|
61
|
+
this.itemProviders[item.id] = provider;
|
|
62
|
+
}
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
37
65
|
/**
|
|
38
66
|
* 菜单项点击回调,触发对应的应用功能
|
|
39
67
|
*
|
|
@@ -54,6 +82,11 @@ export class AppMenuController extends ControlController {
|
|
|
54
82
|
eventArg: id,
|
|
55
83
|
event,
|
|
56
84
|
});
|
|
85
|
+
// 如果有适配器,走适配器的点击处理
|
|
86
|
+
const provider = this.itemProviders[id];
|
|
87
|
+
if (provider && provider.onClick) {
|
|
88
|
+
return provider.onClick(menuItem, event, this);
|
|
89
|
+
}
|
|
57
90
|
if (!menuItem.appFuncId) {
|
|
58
91
|
throw new RuntimeModelError(menuItem, '没有配置应用功能');
|
|
59
92
|
}
|
|
@@ -101,11 +134,11 @@ export class AppMenuController extends ControlController {
|
|
|
101
134
|
}
|
|
102
135
|
/**
|
|
103
136
|
* 所有项平铺
|
|
104
|
-
* @
|
|
105
|
-
* @
|
|
106
|
-
* @
|
|
137
|
+
* @author lxm
|
|
138
|
+
* @date 2023-12-29 02:42:39
|
|
139
|
+
* @protected
|
|
107
140
|
*/
|
|
108
|
-
|
|
141
|
+
flattenAllItems() {
|
|
109
142
|
const result = [];
|
|
110
143
|
const flattenMenus = (menuItems) => {
|
|
111
144
|
menuItems.forEach(item => {
|
|
@@ -116,7 +149,16 @@ export class AppMenuController extends ControlController {
|
|
|
116
149
|
});
|
|
117
150
|
};
|
|
118
151
|
flattenMenus(this.model.appMenuItems);
|
|
119
|
-
|
|
152
|
+
this.allAppMenuItems = result;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* 所有项平铺
|
|
156
|
+
* @return {*}
|
|
157
|
+
* @author: zhujiamin
|
|
158
|
+
* @Date: 2022-09-09 16:48:21
|
|
159
|
+
*/
|
|
160
|
+
getAllItems() {
|
|
161
|
+
return this.allAppMenuItems;
|
|
120
162
|
}
|
|
121
163
|
/**
|
|
122
164
|
* 根据id去视图控制器里取得计数器对象
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gantt.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/gantt/gantt.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"gantt.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/gantt/gantt.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;;;;;;;;GASG;AACH,qBAAa,eACX,SAAQ,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAC/D,YAAW,gBAAgB;IAEnB,OAAO,EAAE,YAAY,CAAC;IAE9B;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B;;;;;;OAMG;IACH,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAExC;;;;;;OAMG;cACa,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5C;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAIvC;;;;;;OAMG;IACH,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK;IAgBjE;;;;;;;;OAQG;IACG,cAAc,CAClB,QAAQ,EAAE,cAAc,GAAG,KAAK,EAChC,IAAI,EAAE,KAAK,EACX,eAAe,GAAE,OAAe,GAC/B,OAAO,CAAC,IAAI,CAAC;CA+BjB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { GanttService } from './gantt.service';
|
|
2
2
|
import { TreeGridExController } from '../tree-grid-ex';
|
|
3
|
+
import { calcDeCodeNameById } from '../../../model';
|
|
3
4
|
/**
|
|
4
5
|
* 甘特图控制器
|
|
5
6
|
*
|
|
@@ -20,7 +21,6 @@ export class GanttController extends TreeGridExController {
|
|
|
20
21
|
*/
|
|
21
22
|
initState() {
|
|
22
23
|
super.initState();
|
|
23
|
-
this.state.rootNodes = [];
|
|
24
24
|
this.state.ganttStyle = {};
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
@@ -94,9 +94,9 @@ export class GanttController extends TreeGridExController {
|
|
|
94
94
|
? this.transformNodeDataItem(nodeModel, data)
|
|
95
95
|
: data;
|
|
96
96
|
if (Object.keys(newData).length > 0) {
|
|
97
|
-
const
|
|
97
|
+
const deName = calcDeCodeNameById(nodeModel.appDataEntityId);
|
|
98
98
|
const tempContext = Object.assign(this.context.clone(), {
|
|
99
|
-
[
|
|
99
|
+
[deName]: currentNode.srfkey,
|
|
100
100
|
});
|
|
101
101
|
const response = await this.service.execDeService(nodeModel.appDataEntityId, 'update', tempContext, newData);
|
|
102
102
|
if (response.status === 200) {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IDEGridDataItem, IDEGridFieldColumn } from '@ibiz/model-core';
|
|
2
|
+
import { GridController } from './grid.controller';
|
|
3
|
+
/**
|
|
4
|
+
* 根据json模型计算出表格列模型
|
|
5
|
+
* @author lxm
|
|
6
|
+
* @date 2024-01-02 10:27:40
|
|
7
|
+
* @export
|
|
8
|
+
* @param {IData} json
|
|
9
|
+
* @param {SearchBarController} c
|
|
10
|
+
* @return {*} {ISearchBarFilter[]}
|
|
11
|
+
*/
|
|
12
|
+
export declare function calcColumnModelBySchema(json: IData, c: GridController): Promise<{
|
|
13
|
+
degridColumns: IDEGridFieldColumn[];
|
|
14
|
+
degridDataItems: IDEGridDataItem[];
|
|
15
|
+
} | undefined>;
|
|
16
|
+
//# sourceMappingURL=entity-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-schema.d.ts","sourceRoot":"","sources":["../../../../../src/controller/control/grid/grid/entity-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASnD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,KAAK,EACX,CAAC,EAAE,cAAc,GAChB,OAAO,CACN;IAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;IAAC,eAAe,EAAE,eAAe,EAAE,CAAA;CAAE,GAC3E,SAAS,CACZ,CA+EA"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const TypeToDataType = {
|
|
2
|
+
string: 25,
|
|
3
|
+
number: 6,
|
|
4
|
+
integer: 9,
|
|
5
|
+
date: 5,
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* 根据json模型计算出表格列模型
|
|
9
|
+
* @author lxm
|
|
10
|
+
* @date 2024-01-02 10:27:40
|
|
11
|
+
* @export
|
|
12
|
+
* @param {IData} json
|
|
13
|
+
* @param {SearchBarController} c
|
|
14
|
+
* @return {*} {ISearchBarFilter[]}
|
|
15
|
+
*/
|
|
16
|
+
export async function calcColumnModelBySchema(json, c) {
|
|
17
|
+
var _a;
|
|
18
|
+
if (!json.properties) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const { properties } = json;
|
|
22
|
+
if (!(Object.keys(properties).length > 0)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const addFields = [];
|
|
26
|
+
Object.keys(properties).forEach((key) => {
|
|
27
|
+
let type;
|
|
28
|
+
switch (properties[key].type) {
|
|
29
|
+
case 'string':
|
|
30
|
+
type = 'string';
|
|
31
|
+
if (properties[key].format === 'date-time') {
|
|
32
|
+
type = 'date';
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
case 'integer':
|
|
36
|
+
type = 'integer';
|
|
37
|
+
break;
|
|
38
|
+
case 'number':
|
|
39
|
+
type = 'number';
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
ibiz.log.error(`未支持的类型${properties[key].type}`);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
addFields.push({
|
|
46
|
+
key,
|
|
47
|
+
description: properties[key].description,
|
|
48
|
+
type,
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
// 属性codeName对应的属性id
|
|
52
|
+
const codeNameToId = {};
|
|
53
|
+
const dataEntity = await ibiz.hub.getAppDataEntity(c.model.appDataEntityId, c.model.appId);
|
|
54
|
+
(_a = dataEntity.appDEFields) === null || _a === void 0 ? void 0 : _a.forEach(field => {
|
|
55
|
+
codeNameToId[field.codeName.toLowerCase()] = field.id;
|
|
56
|
+
});
|
|
57
|
+
const addColumns = [];
|
|
58
|
+
const addDataItems = [];
|
|
59
|
+
addFields.forEach(item => {
|
|
60
|
+
addColumns.push({
|
|
61
|
+
appId: c.model.appId,
|
|
62
|
+
appDEFieldId: codeNameToId[item.key],
|
|
63
|
+
id: item.key,
|
|
64
|
+
codeName: item.key,
|
|
65
|
+
columnType: 'DEFGRIDCOLUMN',
|
|
66
|
+
width: 150,
|
|
67
|
+
widthUnit: 'PX',
|
|
68
|
+
valueType: 'SIMPLE',
|
|
69
|
+
caption: item.description,
|
|
70
|
+
dataItemName: item.key,
|
|
71
|
+
});
|
|
72
|
+
addDataItems.push({
|
|
73
|
+
appId: c.model.appId,
|
|
74
|
+
appDEFieldId: codeNameToId[item.key],
|
|
75
|
+
id: item.key,
|
|
76
|
+
valueType: 'SIMPLE',
|
|
77
|
+
dataType: TypeToDataType[item.type],
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
return { degridColumns: addColumns, degridDataItems: addDataItems };
|
|
81
|
+
}
|
|
@@ -40,6 +40,13 @@ export declare class GridController extends MDControlController<IDEGrid, IGridSt
|
|
|
40
40
|
* @type {boolean}
|
|
41
41
|
*/
|
|
42
42
|
isMultistageHeader: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* 是否添加jsonschema里定义的表格列
|
|
45
|
+
* @author lxm
|
|
46
|
+
* @date 2024-01-02 05:27:16
|
|
47
|
+
* @type {boolean}
|
|
48
|
+
*/
|
|
49
|
+
addSchemaColumn: boolean;
|
|
43
50
|
/**
|
|
44
51
|
* 所有表格列控制器集合
|
|
45
52
|
*
|
|
@@ -159,6 +166,13 @@ export declare class GridController extends MDControlController<IDEGrid, IGridSt
|
|
|
159
166
|
* @returns {*} {Promise<void>}
|
|
160
167
|
*/
|
|
161
168
|
protected onCreated(): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* 根据jsonschema初始化自定义表格列
|
|
171
|
+
* @author lxm
|
|
172
|
+
* @date 2024-01-02 04:41:23
|
|
173
|
+
* @return {*} {Promise<void>}
|
|
174
|
+
*/
|
|
175
|
+
initByEntitySchema(): Promise<void>;
|
|
162
176
|
/**
|
|
163
177
|
* 初始化表格分组
|
|
164
178
|
* @author lxm
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.controller.d.ts","sourceRoot":"","sources":["../../../../../src/controller/control/grid/grid/grid.controller.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,OAAO,EAEP,aAAa,EACb,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,+DAA+D,CAAC;AAC1G,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAS,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"grid.controller.d.ts","sourceRoot":"","sources":["../../../../../src/controller/control/grid/grid/grid.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,9 @@ import { getGridColumnProvider } from '../../../../register';
|
|
|
8
8
|
import { Srfuf } from '../../../../service';
|
|
9
9
|
import { MDControlController } from '../../../common';
|
|
10
10
|
import { GridNotifyState } from '../../../constant';
|
|
11
|
-
import { exportData, getDefaultValue, isValueChange } from '../../../utils';
|
|
11
|
+
import { exportData, getDefaultValue, getEntitySchema, isValueChange, } from '../../../utils';
|
|
12
12
|
import { handleAllSettled, ScriptFactory } from '../../../../utils';
|
|
13
|
+
import { calcColumnModelBySchema } from './entity-schema';
|
|
13
14
|
/**
|
|
14
15
|
* 表格控制器
|
|
15
16
|
*
|
|
@@ -36,6 +37,13 @@ export class GridController extends MDControlController {
|
|
|
36
37
|
* @type {boolean}
|
|
37
38
|
*/
|
|
38
39
|
this.isMultistageHeader = false;
|
|
40
|
+
/**
|
|
41
|
+
* 是否添加jsonschema里定义的表格列
|
|
42
|
+
* @author lxm
|
|
43
|
+
* @date 2024-01-02 05:27:16
|
|
44
|
+
* @type {boolean}
|
|
45
|
+
*/
|
|
46
|
+
this.addSchemaColumn = false;
|
|
39
47
|
/**
|
|
40
48
|
* 所有表格列控制器集合
|
|
41
49
|
*
|
|
@@ -143,6 +151,7 @@ export class GridController extends MDControlController {
|
|
|
143
151
|
* @returns {*} {Promise<void>}
|
|
144
152
|
*/
|
|
145
153
|
async onCreated() {
|
|
154
|
+
await this.initByEntitySchema();
|
|
146
155
|
await super.onCreated();
|
|
147
156
|
this.service = new GridService(this.model);
|
|
148
157
|
await this.service.init(this.context);
|
|
@@ -155,6 +164,39 @@ export class GridController extends MDControlController {
|
|
|
155
164
|
// 初始化表格分组
|
|
156
165
|
await this.initGroup();
|
|
157
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* 根据jsonschema初始化自定义表格列
|
|
169
|
+
* @author lxm
|
|
170
|
+
* @date 2024-01-02 04:41:23
|
|
171
|
+
* @return {*} {Promise<void>}
|
|
172
|
+
*/
|
|
173
|
+
async initByEntitySchema() {
|
|
174
|
+
if (!this.addSchemaColumn) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const json = await getEntitySchema(this.model.appDataEntityId, this.context);
|
|
178
|
+
if (!json) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const result = await calcColumnModelBySchema(json, this);
|
|
182
|
+
if (result && result.degridColumns.length > 0) {
|
|
183
|
+
const { degridColumns, degridDataItems } = result;
|
|
184
|
+
// 修改模型之前拷贝一份,避免污染原始数据
|
|
185
|
+
this.model = clone(this.model);
|
|
186
|
+
this.model.degridColumns = [
|
|
187
|
+
...(this.model.degridColumns || []).filter(item => {
|
|
188
|
+
return degridColumns.findIndex(x => x.id === item.id) === -1;
|
|
189
|
+
}),
|
|
190
|
+
...degridColumns,
|
|
191
|
+
];
|
|
192
|
+
this.model.degridDataItems = [
|
|
193
|
+
...(this.model.degridDataItems || []).filter(item => {
|
|
194
|
+
return degridDataItems.findIndex(x => x.id === item.id) === -1;
|
|
195
|
+
}),
|
|
196
|
+
...degridDataItems,
|
|
197
|
+
];
|
|
198
|
+
}
|
|
199
|
+
}
|
|
158
200
|
/**
|
|
159
201
|
* 初始化表格分组
|
|
160
202
|
* @author lxm
|
|
@@ -29,7 +29,7 @@ export class GridService extends MDControlService {
|
|
|
29
29
|
// 后台实体属性
|
|
30
30
|
if (deField) {
|
|
31
31
|
const deFieldKey = deField.toLowerCase();
|
|
32
|
-
const dataItem = dataItems.find(item => item.
|
|
32
|
+
const dataItem = dataItems.find(item => item.id === column.dataItemName);
|
|
33
33
|
if (dataItem) {
|
|
34
34
|
mapField = new UIMapField(uiKey, deFieldKey, {
|
|
35
35
|
isOriginField: true,
|
package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js
CHANGED
|
@@ -200,7 +200,7 @@ export class GridFieldColumnController extends GridColumnController {
|
|
|
200
200
|
calcFieldAgg(items) {
|
|
201
201
|
const { aggField, aggMode, aggValueFormat, unitName } = this.model;
|
|
202
202
|
// 无聚合配置的列,返回undefined
|
|
203
|
-
if (aggMode === 'NONE') {
|
|
203
|
+
if (isNil(aggMode) || aggMode === 'NONE') {
|
|
204
204
|
return;
|
|
205
205
|
}
|
|
206
206
|
const fieldName = aggField || this.model.id;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ISearchBarFilter } from '@ibiz/model-core';
|
|
2
|
+
import { SearchBarController } from './search-bar.controller';
|
|
3
|
+
/**
|
|
4
|
+
* 根据json模型计算出过滤项模型
|
|
5
|
+
* @author lxm
|
|
6
|
+
* @date 2024-01-02 10:27:40
|
|
7
|
+
* @export
|
|
8
|
+
* @param {IData} json
|
|
9
|
+
* @param {SearchBarController} c
|
|
10
|
+
* @return {*} {ISearchBarFilter[]}
|
|
11
|
+
*/
|
|
12
|
+
export declare function calcFilterModelBySchema(json: IData, c: SearchBarController): ISearchBarFilter[];
|
|
13
|
+
//# sourceMappingURL=entity-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-schema.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/search-bar/entity-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AA2F9D;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,KAAK,EACX,CAAC,EAAE,mBAAmB,GACrB,gBAAgB,EAAE,CAwEpB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { ValueOP } from '../../../constant';
|
|
2
|
+
import { ExcludeOPs } from './search-bar-filter.controller';
|
|
3
|
+
const appId = '';
|
|
4
|
+
/** 数据类型映射操作符号 */
|
|
5
|
+
const typeToOPs = {
|
|
6
|
+
string: [
|
|
7
|
+
ValueOP.EQ,
|
|
8
|
+
ValueOP.NOT_EQ,
|
|
9
|
+
ValueOP.IS_NULL,
|
|
10
|
+
ValueOP.IS_NOT_NULL,
|
|
11
|
+
ValueOP.USER_LIKE,
|
|
12
|
+
ValueOP.LIKE,
|
|
13
|
+
ValueOP.LIFT_LIKE,
|
|
14
|
+
ValueOP.RIGHT_LIKE,
|
|
15
|
+
],
|
|
16
|
+
number: [
|
|
17
|
+
ValueOP.EQ,
|
|
18
|
+
ValueOP.GT,
|
|
19
|
+
ValueOP.GT_AND_EQ,
|
|
20
|
+
ValueOP.LT,
|
|
21
|
+
ValueOP.LT_AND_EQ,
|
|
22
|
+
ValueOP.NOT_EQ,
|
|
23
|
+
ValueOP.IS_NULL,
|
|
24
|
+
ValueOP.IS_NOT_NULL,
|
|
25
|
+
ValueOP.IN,
|
|
26
|
+
ValueOP.NOT_IN,
|
|
27
|
+
],
|
|
28
|
+
date: [
|
|
29
|
+
ValueOP.EQ,
|
|
30
|
+
ValueOP.GT,
|
|
31
|
+
ValueOP.GT_AND_EQ,
|
|
32
|
+
ValueOP.LT,
|
|
33
|
+
ValueOP.LT_AND_EQ,
|
|
34
|
+
ValueOP.NOT_EQ,
|
|
35
|
+
ValueOP.IS_NULL,
|
|
36
|
+
ValueOP.IS_NOT_NULL,
|
|
37
|
+
ValueOP.IN,
|
|
38
|
+
ValueOP.NOT_IN,
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
/** 数据类型和操作符映射的编辑器模型 */
|
|
42
|
+
const EditorsMap = {};
|
|
43
|
+
/**
|
|
44
|
+
* 初始化默认映射的编辑器模型
|
|
45
|
+
* @author lxm
|
|
46
|
+
* @date 2024-01-02 10:32:05
|
|
47
|
+
* @param {string} type
|
|
48
|
+
* @param {string} op
|
|
49
|
+
* @return {*} {IEditor}
|
|
50
|
+
*/
|
|
51
|
+
function initDefaultEditor() {
|
|
52
|
+
Object.keys(typeToOPs).forEach(type => {
|
|
53
|
+
const allowOPs = typeToOPs[type];
|
|
54
|
+
allowOPs.forEach(op => {
|
|
55
|
+
if (ExcludeOPs.includes(op)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const key = `${type}_${op}`;
|
|
59
|
+
if (EditorsMap[key]) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (type === 'date' && ![ValueOP.IN, ValueOP.NOT_IN].includes(op)) {
|
|
63
|
+
EditorsMap[key] = {
|
|
64
|
+
appId,
|
|
65
|
+
editorType: 'DATEPICKER',
|
|
66
|
+
id: key,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// 都可以给字符串类型
|
|
71
|
+
EditorsMap[key] = {
|
|
72
|
+
appId,
|
|
73
|
+
editorType: 'TEXTBOX',
|
|
74
|
+
id: key,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
initDefaultEditor();
|
|
81
|
+
/**
|
|
82
|
+
* 根据json模型计算出过滤项模型
|
|
83
|
+
* @author lxm
|
|
84
|
+
* @date 2024-01-02 10:27:40
|
|
85
|
+
* @export
|
|
86
|
+
* @param {IData} json
|
|
87
|
+
* @param {SearchBarController} c
|
|
88
|
+
* @return {*} {ISearchBarFilter[]}
|
|
89
|
+
*/
|
|
90
|
+
export function calcFilterModelBySchema(json, c) {
|
|
91
|
+
var _a;
|
|
92
|
+
if (!json.properties) {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
const { properties } = json;
|
|
96
|
+
if (!(Object.keys(properties).length > 0)) {
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
const addFields = [];
|
|
100
|
+
Object.keys(properties).forEach((key) => {
|
|
101
|
+
let type;
|
|
102
|
+
switch (properties[key].type) {
|
|
103
|
+
case 'string':
|
|
104
|
+
type = 'string';
|
|
105
|
+
if (properties[key].format === 'date-time') {
|
|
106
|
+
type = 'date';
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
case 'integer':
|
|
110
|
+
case 'number':
|
|
111
|
+
type = 'number';
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
ibiz.log.error(`未支持的类型${properties[key].type}`);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
addFields.push({
|
|
118
|
+
key,
|
|
119
|
+
description: properties[key].description,
|
|
120
|
+
type,
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
// 属性codeName对应的属性id
|
|
124
|
+
const codeNameToId = {};
|
|
125
|
+
(_a = c.appDataEntity.appDEFields) === null || _a === void 0 ? void 0 : _a.forEach(field => {
|
|
126
|
+
codeNameToId[field.codeName.toLowerCase()] = field.id;
|
|
127
|
+
});
|
|
128
|
+
const addSearchBarFilters = [];
|
|
129
|
+
addFields.forEach(item => {
|
|
130
|
+
const ops = typeToOPs[item.type];
|
|
131
|
+
if (!ops) {
|
|
132
|
+
ibiz.log.error('未支持的类型', item.type);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
ops.forEach(op => {
|
|
136
|
+
const editorModel = EditorsMap[`${item.type}_${op}`];
|
|
137
|
+
addSearchBarFilters.push({
|
|
138
|
+
appId,
|
|
139
|
+
appDEFieldId: codeNameToId[item.key],
|
|
140
|
+
id: item.key,
|
|
141
|
+
caption: item.description,
|
|
142
|
+
defsearchMode: {
|
|
143
|
+
appId,
|
|
144
|
+
valueOP: op,
|
|
145
|
+
},
|
|
146
|
+
editor: editorModel,
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
return addSearchBarFilters;
|
|
151
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ISearchBarFilter } from '@ibiz/model-core';
|
|
2
2
|
import { IEditorContainerController, IEditorController, IEditorProvider } from '../../../interface';
|
|
3
3
|
import { SearchBarController } from './search-bar.controller';
|
|
4
|
+
/** 不需要编辑器的OP */
|
|
5
|
+
export declare const ExcludeOPs: string[];
|
|
4
6
|
/**
|
|
5
7
|
* 搜索栏过滤项控制器
|
|
6
8
|
* @author lxm
|
|
@@ -53,6 +55,13 @@ export declare class SearchBarFilterController implements IEditorContainerContro
|
|
|
53
55
|
* @type {string}
|
|
54
56
|
*/
|
|
55
57
|
valueOP?: string;
|
|
58
|
+
/**
|
|
59
|
+
* 不需要编辑器
|
|
60
|
+
* @author lxm
|
|
61
|
+
* @date 2024-01-02 11:08:45
|
|
62
|
+
* @type {boolean}
|
|
63
|
+
*/
|
|
64
|
+
noEditor: boolean;
|
|
56
65
|
constructor(model: ISearchBarFilter, searchBar: SearchBarController);
|
|
57
66
|
/**
|
|
58
67
|
* 初始化
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-bar-filter.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/search-bar/search-bar-filter.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-bar-filter.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/search-bar/search-bar-filter.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,gBAAgB;AAChB,eAAO,MAAM,UAAU,EAAE,MAAM,EAGrB,CAAC;AAEX;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,0BAA0B;IAiEjE,KAAK,EAAE,gBAAgB;IACvB,SAAS,EAAE,mBAAmB;IAjEvC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAE7B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,IAAI,OAAO,IAAI,QAAQ,CAEtB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAE7B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAE3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAS;gBAGjB,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAE,mBAAmB;IAqBvC;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAe5B"}
|