@ibiz-template/runtime 0.4.11 → 0.4.13
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 +1190 -282
- package/dist/index.system.min.js +2 -2
- package/out/config/global-config.d.ts.map +1 -1
- package/out/config/global-config.js +1 -0
- package/out/controller/common/base.controller.d.ts +7 -0
- package/out/controller/common/base.controller.d.ts.map +1 -1
- package/out/controller/common/base.controller.js +10 -0
- package/out/controller/common/control/control.controller.d.ts +14 -0
- package/out/controller/common/control/control.controller.d.ts.map +1 -1
- package/out/controller/common/control/control.controller.js +21 -0
- package/out/controller/common/control/md-control.controller.d.ts +9 -0
- package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
- package/out/controller/common/control/md-control.controller.js +20 -0
- package/out/controller/common/view/view.controller.d.ts +15 -1
- package/out/controller/common/view/view.controller.d.ts.map +1 -1
- package/out/controller/common/view/view.controller.js +23 -4
- package/out/controller/control/app-menu/app-menu.controller.d.ts +7 -0
- package/out/controller/control/app-menu/app-menu.controller.d.ts.map +1 -1
- package/out/controller/control/app-menu/app-menu.controller.js +22 -0
- package/out/controller/control/caption-bar/caption-bar.controller.d.ts.map +1 -1
- package/out/controller/control/caption-bar/caption-bar.controller.js +1 -6
- package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
- package/out/controller/control/form/edit-form/edit-form.controller.js +9 -22
- package/out/controller/control/form/edit-form/edit-form.service.d.ts +3 -2
- package/out/controller/control/form/edit-form/edit-form.service.d.ts.map +1 -1
- package/out/controller/control/form/edit-form/edit-form.service.js +11 -2
- package/out/controller/control/form/form/form.controller.d.ts +0 -7
- package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
- package/out/controller/control/form/form/form.controller.js +0 -11
- package/out/controller/control/form/form/form.service.d.ts +24 -0
- package/out/controller/control/form/form/form.service.d.ts.map +1 -0
- package/out/controller/control/form/form/form.service.js +45 -0
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -1
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +5 -1
- package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -1
- package/out/controller/control/form/form-detail/form-item/form-item.controller.js +0 -5
- package/out/controller/control/form/search-form/search-form.controller.d.ts.map +1 -1
- package/out/controller/control/form/search-form/search-form.controller.js +1 -5
- package/out/controller/control/form/search-form/search-form.service.d.ts +4 -3
- package/out/controller/control/form/search-form/search-form.service.d.ts.map +1 -1
- package/out/controller/control/form/search-form/search-form.service.js +8 -3
- package/out/controller/control/gantt/gantt.controller.d.ts +146 -2
- package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
- package/out/controller/control/gantt/gantt.controller.js +270 -0
- package/out/controller/control/grid/grid/grid-row.state.d.ts +11 -0
- package/out/controller/control/grid/grid/grid-row.state.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid-row.state.js +13 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts +7 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.js +27 -0
- package/out/controller/control/grid/grid/grid.service.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.service.js +30 -20
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +21 -1
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +44 -1
- package/out/controller/control/kanban/kanban.controller.d.ts +13 -0
- package/out/controller/control/kanban/kanban.controller.d.ts.map +1 -1
- package/out/controller/control/kanban/kanban.controller.js +72 -0
- package/out/controller/control/report-panel/generator/user-generator.js +1 -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 +11 -6
- package/out/controller/control/toolbar/toolbar.controllerr.d.ts +7 -0
- package/out/controller/control/toolbar/toolbar.controllerr.d.ts.map +1 -1
- package/out/controller/control/toolbar/toolbar.controllerr.js +22 -0
- package/out/controller/control/tree/tree.controller.d.ts +75 -0
- package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
- package/out/controller/control/tree/tree.controller.js +264 -1
- package/out/interface/common/i-global-config/i-global-view-config.d.ts +7 -0
- package/out/interface/common/i-global-config/i-global-view-config.d.ts.map +1 -1
- package/out/interface/controller/controller/control/i-control.controller.d.ts +14 -0
- package/out/interface/controller/controller/control/i-control.controller.d.ts.map +1 -1
- package/out/interface/controller/controller/view/i-view.controller.d.ts +14 -0
- package/out/interface/controller/controller/view/i-view.controller.d.ts.map +1 -1
- package/out/interface/controller/event/control/i-gantt.event.d.ts +42 -0
- package/out/interface/controller/event/control/i-gantt.event.d.ts.map +1 -1
- package/out/interface/controller/event/control/i-tree.event.d.ts +17 -0
- package/out/interface/controller/event/control/i-tree.event.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-control.state.d.ts +8 -0
- package/out/interface/controller/state/control/i-control.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-gantt.state.d.ts +22 -0
- package/out/interface/controller/state/control/i-gantt.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-grid.state.d.ts +11 -0
- package/out/interface/controller/state/control/i-grid.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-kanban.state.d.ts +24 -0
- package/out/interface/controller/state/control/i-kanban.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-tree.state.d.ts +7 -0
- package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
- package/out/interface/controller/state/view/i-view.state.d.ts +8 -0
- package/out/interface/controller/state/view/i-view.state.d.ts.map +1 -1
- package/out/interface/provider/i-grid-column.provider.d.ts +2 -2
- package/out/interface/provider/i-grid-column.provider.d.ts.map +1 -1
- package/out/interface/service/i-data-entity/i-data-entity.d.ts +8 -0
- package/out/interface/service/i-data-entity/i-data-entity.d.ts.map +1 -1
- package/out/interface/service/service/i-app-de.service.d.ts +11 -0
- package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
- package/out/interface/service/service/i-auth.service.d.ts +3 -2
- package/out/interface/service/service/i-auth.service.d.ts.map +1 -1
- package/out/logic-scheduler/executor/app-ui-logic-executor.d.ts.map +1 -1
- package/out/logic-scheduler/executor/app-ui-logic-executor.js +4 -2
- package/out/register/helper/grid-column-register.d.ts +2 -2
- package/out/register/helper/grid-column-register.d.ts.map +1 -1
- package/out/register/helper/grid-column-register.js +14 -0
- package/out/service/dto/method.dto.d.ts.map +1 -1
- package/out/service/dto/method.dto.js +8 -1
- package/out/service/service/auth/v7-auth.service.d.ts +1 -1
- package/out/service/service/auth/v7-auth.service.d.ts.map +1 -1
- package/out/service/service/auth/v7-auth.service.js +12 -7
- package/out/service/service/entity/de.service.d.ts +9 -1
- package/out/service/service/entity/de.service.d.ts.map +1 -1
- package/out/service/service/entity/de.service.js +69 -0
- package/out/service/service/entity/method/fetch.d.ts +5 -12
- package/out/service/service/entity/method/fetch.d.ts.map +1 -1
- package/out/service/service/entity/method/fetch.js +7 -74
- package/out/service/utils/de-cache/de-cache.js +2 -2
- package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts +1 -0
- package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts.map +1 -1
- package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts +2 -0
- package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts.map +1 -1
- package/out/service/vo/gantt-node-data/gantt-data-set-node-data.js +2 -1
- package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts +7 -0
- package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts.map +1 -1
- package/out/service/vo/gantt-node-data/gantt-node-data-util.js +18 -0
- package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts +1 -0
- package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts.map +1 -1
- package/out/service/vo/tree-node-data/tree-code-list-node-data.d.ts.map +1 -1
- package/out/service/vo/tree-node-data/tree-code-list-node-data.js +8 -4
- package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
- package/out/service/vo/tree-node-data/tree-data-set-node-data.js +8 -4
- package/out/service/vo/tree-node-data/tree-node-data.d.ts +1 -0
- package/out/service/vo/tree-node-data/tree-node-data.d.ts.map +1 -1
- package/out/service/vo/tree-node-data/tree-node-data.js +2 -0
- package/out/service/vo/tree-node-data/tree-static-node-data.d.ts.map +1 -1
- package/out/service/vo/tree-node-data/tree-static-node-data.js +8 -2
- package/out/utils/layout-panel-util/layout-panel-util.d.ts.map +1 -1
- package/out/utils/layout-panel-util/layout-panel-util.js +16 -2
- package/package.json +3 -3
- package/src/config/global-config.ts +1 -0
- package/src/controller/common/base.controller.ts +11 -0
- package/src/controller/common/control/control.controller.ts +23 -0
- package/src/controller/common/control/md-control.controller.ts +21 -0
- package/src/controller/common/view/view.controller.ts +27 -5
- package/src/controller/control/app-menu/app-menu.controller.ts +25 -0
- package/src/controller/control/caption-bar/caption-bar.controller.ts +1 -8
- package/src/controller/control/form/edit-form/edit-form.controller.ts +11 -26
- package/src/controller/control/form/edit-form/edit-form.service.ts +11 -2
- package/src/controller/control/form/form/form.controller.ts +0 -14
- package/src/controller/control/form/form/form.service.ts +63 -0
- package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +9 -1
- package/src/controller/control/form/form-detail/form-item/form-item.controller.ts +0 -5
- package/src/controller/control/form/search-form/search-form.controller.ts +1 -5
- package/src/controller/control/form/search-form/search-form.service.ts +8 -3
- package/src/controller/control/gantt/gantt.controller.ts +331 -1
- package/src/controller/control/grid/grid/grid-row.state.ts +15 -0
- package/src/controller/control/grid/grid/grid.controller.ts +34 -0
- package/src/controller/control/grid/grid/grid.service.ts +34 -21
- package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +67 -2
- package/src/controller/control/kanban/kanban.controller.ts +81 -0
- package/src/controller/control/report-panel/generator/user-generator.ts +1 -1
- package/src/controller/control/search-bar/search-bar.controller.ts +12 -8
- package/src/controller/control/toolbar/toolbar.controllerr.ts +29 -0
- package/src/controller/control/tree/tree.controller.ts +327 -2
- package/src/interface/common/i-global-config/i-global-view-config.ts +8 -0
- package/src/interface/controller/controller/control/i-control.controller.ts +16 -0
- package/src/interface/controller/controller/view/i-view.controller.ts +16 -0
- package/src/interface/controller/event/control/i-gantt.event.ts +37 -1
- package/src/interface/controller/event/control/i-tree.event.ts +14 -0
- package/src/interface/controller/state/control/i-control.state.ts +9 -0
- package/src/interface/controller/state/control/i-gantt.state.ts +25 -0
- package/src/interface/controller/state/control/i-grid.state.ts +10 -0
- package/src/interface/controller/state/control/i-kanban.state.ts +26 -0
- package/src/interface/controller/state/control/i-tree.state.ts +8 -0
- package/src/interface/controller/state/view/i-view.state.ts +9 -0
- package/src/interface/provider/i-grid-column.provider.ts +2 -2
- package/src/interface/service/i-data-entity/i-data-entity.ts +9 -0
- package/src/interface/service/service/i-app-de.service.ts +12 -0
- package/src/interface/service/service/i-auth.service.ts +3 -2
- package/src/logic-scheduler/executor/app-ui-logic-executor.ts +8 -2
- package/src/register/helper/grid-column-register.ts +17 -2
- package/src/service/dto/method.dto.ts +8 -1
- package/src/service/service/auth/v7-auth.service.ts +18 -8
- package/src/service/service/entity/de.service.ts +74 -1
- package/src/service/service/entity/method/fetch.ts +8 -79
- package/src/service/utils/de-cache/de-cache.ts +2 -2
- package/src/service/vo/gantt-node-data/gantt-code-list-node-data.ts +2 -0
- package/src/service/vo/gantt-node-data/gantt-data-set-node-data.ts +6 -1
- package/src/service/vo/gantt-node-data/gantt-node-data-util.ts +21 -0
- package/src/service/vo/gantt-node-data/gantt-static-node-data.ts +2 -0
- package/src/service/vo/tree-node-data/tree-code-list-node-data.ts +10 -5
- package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +10 -5
- package/src/service/vo/tree-node-data/tree-node-data.ts +3 -0
- package/src/service/vo/tree-node-data/tree-static-node-data.ts +10 -3
- package/src/utils/layout-panel-util/layout-panel-util.ts +17 -2
|
@@ -50,7 +50,7 @@ export class UserReportPanelGenerator extends ReportPanelBaseGenerator {
|
|
|
50
50
|
},
|
|
51
51
|
],
|
|
52
52
|
nodeDataHook:
|
|
53
|
-
"{{ data.forEach(node => { const type = node.data.source_lables || node.data.target_lables; Object.assign(node, { label: node.data.name, size: 66, style: { fill: node.color },donutAttrs: { prop1: 10000, prop2: 10 },donutColorMap: { prop1: node.color, prop2: node.color },icon: {show: true,img: type === 'NEO4J_ZT' ? resource.dir('
|
|
53
|
+
"{{ data.forEach(node => { const type = node.data.source_lables || node.data.target_lables; Object.assign(node, { label: node.data.name, size: 66, style: { fill: node.color },donutAttrs: { prop1: 10000, prop2: 10 },donutColorMap: { prop1: node.color, prop2: node.color },icon: {show: true,img: type === 'NEO4J_ZT' ? resource.dir('assets/images/user-avatar.png') : resource.dir('assets/images/phone.png'),width: 40,height: 40}})})}}",
|
|
54
54
|
edgeDataHook:
|
|
55
55
|
'{{ data.forEach(edge => {Object.assign(edge, { label: edge.name })}) }}',
|
|
56
56
|
},
|
|
@@ -156,7 +156,7 @@ export class SearchBarController
|
|
|
156
156
|
// 搜索过滤器
|
|
157
157
|
const filters = this.calcFilters();
|
|
158
158
|
if (filters) {
|
|
159
|
-
params.
|
|
159
|
+
params.searchconds = filters;
|
|
160
160
|
}
|
|
161
161
|
return params;
|
|
162
162
|
}
|
|
@@ -174,6 +174,7 @@ export class SearchBarController
|
|
|
174
174
|
children: [{ leaf: true, field: null, valueOP: null, value: null }],
|
|
175
175
|
},
|
|
176
176
|
];
|
|
177
|
+
this.evt.emit('onSearch', undefined);
|
|
177
178
|
}
|
|
178
179
|
|
|
179
180
|
/**
|
|
@@ -218,7 +219,7 @@ export class SearchBarController
|
|
|
218
219
|
}
|
|
219
220
|
});
|
|
220
221
|
if (hasFilter && !hasError) {
|
|
221
|
-
const filter = this.formatFilters(this.state.filterNodes[0]);
|
|
222
|
+
const filter = [this.formatFilters(this.state.filterNodes[0])];
|
|
222
223
|
return filter;
|
|
223
224
|
}
|
|
224
225
|
}
|
|
@@ -233,15 +234,18 @@ export class SearchBarController
|
|
|
233
234
|
formatFilters(node: IFilterNode): IData {
|
|
234
235
|
if (!node.leaf) {
|
|
235
236
|
return {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
237
|
+
condtype: 'GROUP',
|
|
238
|
+
condop: node.logicType,
|
|
239
|
+
bnotmode: false,
|
|
240
|
+
searchconds: node.children.map(item => this.formatFilters(item)),
|
|
239
241
|
};
|
|
240
242
|
}
|
|
243
|
+
|
|
241
244
|
return {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
+
condtype: 'DEFIELD',
|
|
246
|
+
fieldname: node.field,
|
|
247
|
+
condop: node.valueOP,
|
|
248
|
+
value: node.value,
|
|
245
249
|
};
|
|
246
250
|
}
|
|
247
251
|
}
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
IDEToolbarItem,
|
|
5
5
|
IDETBUIActionItem,
|
|
6
6
|
IControlLogic,
|
|
7
|
+
IDETBGroupItem,
|
|
7
8
|
} from '@ibiz/model-core';
|
|
8
9
|
import { ViewCallTag, ViewMode } from '../../../constant';
|
|
9
10
|
import {
|
|
@@ -241,4 +242,32 @@ export class ToolbarController<
|
|
|
241
242
|
);
|
|
242
243
|
super.initControlScheduler(actualLogics);
|
|
243
244
|
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* 转换各类多语言
|
|
248
|
+
*
|
|
249
|
+
* @date 2023-05-18 02:57:00
|
|
250
|
+
* @protected
|
|
251
|
+
*/
|
|
252
|
+
protected convertMultipleLanguages(): void {
|
|
253
|
+
const convertItemCaption = (items: IDEToolbarItem[]): void => {
|
|
254
|
+
items.forEach(item => {
|
|
255
|
+
if (item.capLanguageRes && item.capLanguageRes.lanResTag) {
|
|
256
|
+
item.caption = ibiz.i18n.t(
|
|
257
|
+
item.capLanguageRes.lanResTag,
|
|
258
|
+
item.caption,
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
if (
|
|
262
|
+
item.itemType === 'ITEMS' &&
|
|
263
|
+
(item as IDETBGroupItem).detoolbarItems
|
|
264
|
+
) {
|
|
265
|
+
convertItemCaption((item as IDETBGroupItem).detoolbarItems!);
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
};
|
|
269
|
+
if (this.model.detoolbarItems && this.model.detoolbarItems.length > 0) {
|
|
270
|
+
convertItemCaption(this.model.detoolbarItems);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
244
273
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/* eslint-disable no-param-reassign */
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
RuntimeError,
|
|
4
|
+
RuntimeModelError,
|
|
5
|
+
recursiveIterate,
|
|
6
|
+
} from '@ibiz-template/core';
|
|
7
|
+
import { IDETree, IDETreeDataSetNode, IDETreeNode } from '@ibiz/model-core';
|
|
4
8
|
import {
|
|
5
9
|
ITreeState,
|
|
6
10
|
ITreeEvent,
|
|
@@ -12,6 +16,13 @@ import { UIActionUtil } from '../../../ui-action';
|
|
|
12
16
|
import { MDControlController } from '../../common';
|
|
13
17
|
import { ContextMenuController } from '../context-menu';
|
|
14
18
|
import { TreeService } from './tree.service';
|
|
19
|
+
import { calcDeCodeNameById, getChildNodeRSs } from '../../../model';
|
|
20
|
+
|
|
21
|
+
export type DropNodeRS = {
|
|
22
|
+
minorEntityId: string;
|
|
23
|
+
pickupDEFName: string;
|
|
24
|
+
childDETreeNodeId: string;
|
|
25
|
+
};
|
|
15
26
|
|
|
16
27
|
/**
|
|
17
28
|
* 树部件控制器
|
|
@@ -44,6 +55,13 @@ export class TreeController
|
|
|
44
55
|
*/
|
|
45
56
|
enableQuickSearch: boolean = false;
|
|
46
57
|
|
|
58
|
+
/**
|
|
59
|
+
* 拖入节点关系处理
|
|
60
|
+
* @author lxm
|
|
61
|
+
* @date 2023-12-14 03:05:38
|
|
62
|
+
*/
|
|
63
|
+
dropNodeRss = new Map<string, DropNodeRS[]>();
|
|
64
|
+
|
|
47
65
|
protected initState(): void {
|
|
48
66
|
super.initState();
|
|
49
67
|
// 根节点初始化
|
|
@@ -87,6 +105,8 @@ export class TreeController
|
|
|
87
105
|
}
|
|
88
106
|
}
|
|
89
107
|
|
|
108
|
+
this.initDropNodeRss();
|
|
109
|
+
|
|
90
110
|
this.service = new TreeService(this.model);
|
|
91
111
|
await this.service.init(this.context);
|
|
92
112
|
|
|
@@ -108,6 +128,41 @@ export class TreeController
|
|
|
108
128
|
);
|
|
109
129
|
}
|
|
110
130
|
|
|
131
|
+
/**
|
|
132
|
+
* 初始化节点拖入关系处理
|
|
133
|
+
* @author lxm
|
|
134
|
+
* @date 2023-12-14 03:13:42
|
|
135
|
+
* @protected
|
|
136
|
+
*/
|
|
137
|
+
protected initDropNodeRss(): void {
|
|
138
|
+
this.model.detreeNodes?.forEach(node => {
|
|
139
|
+
if (!node.allowDrop) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const infos: Array<DropNodeRS> = [];
|
|
143
|
+
const nodeRSs = getChildNodeRSs(this.model, {
|
|
144
|
+
parentId: node.id,
|
|
145
|
+
hasQuery: false,
|
|
146
|
+
});
|
|
147
|
+
nodeRSs.forEach(nodeRS => {
|
|
148
|
+
if (nodeRS.parentDER1N?.pickupDEFName) {
|
|
149
|
+
const childNode = this.getNodeModel(nodeRS.childDETreeNodeId!);
|
|
150
|
+
if (childNode?.treeNodeType === 'DE' && childNode.appDataEntityId) {
|
|
151
|
+
infos.push({
|
|
152
|
+
minorEntityId: childNode.appDataEntityId,
|
|
153
|
+
pickupDEFName: nodeRS.parentDER1N.pickupDEFName.toLowerCase(),
|
|
154
|
+
childDETreeNodeId: nodeRS.childDETreeNodeId!,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
if (infos.length > 0) {
|
|
161
|
+
this.dropNodeRss.set(node.id!, infos);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
111
166
|
/**
|
|
112
167
|
* 树部件加载,从根节点开始重新加载
|
|
113
168
|
*
|
|
@@ -451,4 +506,274 @@ export class TreeController
|
|
|
451
506
|
}),
|
|
452
507
|
);
|
|
453
508
|
}
|
|
509
|
+
|
|
510
|
+
/**
|
|
511
|
+
* 计算是否允许拖动
|
|
512
|
+
* @author lxm
|
|
513
|
+
* @date 2023-12-14 11:28:07
|
|
514
|
+
* @param {ITreeNodeData} draggingNode
|
|
515
|
+
* @return {*} {boolean}
|
|
516
|
+
*/
|
|
517
|
+
calcAllowDrag(draggingNode: ITreeNodeData): boolean {
|
|
518
|
+
const nodeModel = this.getNodeModel(draggingNode.nodeId);
|
|
519
|
+
return nodeModel?.allowDrag === true;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* 计算是否允许拖入
|
|
524
|
+
* @author lxm
|
|
525
|
+
* @date 2023-12-14 02:04:15
|
|
526
|
+
* @param {ITreeNodeData} draggingNode
|
|
527
|
+
* @param {ITreeNodeData} dropNode
|
|
528
|
+
* @param {('inner' | 'prev' | 'next')} type
|
|
529
|
+
* @return {*} {boolean}
|
|
530
|
+
*/
|
|
531
|
+
calcAllowDrop(
|
|
532
|
+
draggingNode: ITreeNodeData,
|
|
533
|
+
dropNode: ITreeNodeData,
|
|
534
|
+
type: 'inner' | 'prev' | 'next',
|
|
535
|
+
): boolean {
|
|
536
|
+
const draggingNodeModel = this.getNodeModel(draggingNode.nodeId)!;
|
|
537
|
+
// * 移入的情况
|
|
538
|
+
if (type === 'inner') {
|
|
539
|
+
return !!this.findDropNodeRS(
|
|
540
|
+
dropNode.nodeId!,
|
|
541
|
+
draggingNodeModel.appDataEntityId!,
|
|
542
|
+
);
|
|
543
|
+
}
|
|
544
|
+
// * 前后的情况
|
|
545
|
+
if (draggingNode.parent?.id !== dropNode.parent?.id) {
|
|
546
|
+
// 父不一样的时候需要判断能否移入到对方的父节点内
|
|
547
|
+
return !!this.findDropNodeRS(
|
|
548
|
+
dropNode.parent!.nodeId!,
|
|
549
|
+
draggingNodeModel.appDataEntityId!,
|
|
550
|
+
);
|
|
551
|
+
}
|
|
552
|
+
// 父相同的情况下,就是排序,看是否能排序
|
|
553
|
+
const parentNodeModel = this.getNodeModel(dropNode.nodeId)!;
|
|
554
|
+
return parentNodeModel?.allowOrder === true;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* 找到指定父节点下的节点关系里面
|
|
559
|
+
* 配置的实体关系的子实体是指定实体的
|
|
560
|
+
* @author lxm
|
|
561
|
+
* @date 2023-12-14 01:43:41
|
|
562
|
+
* @protected
|
|
563
|
+
* @param {string} parentId 父节点模型id
|
|
564
|
+
* @param {string} appDataEntityId
|
|
565
|
+
* @return {*} {(IDETreeNodeRS | undefined)}
|
|
566
|
+
*/
|
|
567
|
+
protected findDropNodeRS(
|
|
568
|
+
parentId: string,
|
|
569
|
+
appDataEntityId: string,
|
|
570
|
+
): DropNodeRS | undefined {
|
|
571
|
+
const nodeRSs = this.dropNodeRss.get(parentId);
|
|
572
|
+
return nodeRSs?.find(item => item.minorEntityId === appDataEntityId);
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
/**
|
|
576
|
+
* 处理节点拖入事件
|
|
577
|
+
* @author lxm
|
|
578
|
+
* @date 2023-12-15 04:23:29
|
|
579
|
+
* @param {ITreeNodeData} draggingNode
|
|
580
|
+
* @param {ITreeNodeData} dropNode
|
|
581
|
+
* @param {('inner' | 'prev' | 'next')} dropType
|
|
582
|
+
* @return {*} {Promise<void>}
|
|
583
|
+
*/
|
|
584
|
+
async onNodeDrop(
|
|
585
|
+
draggingNode: ITreeNodeData,
|
|
586
|
+
dropNode: ITreeNodeData,
|
|
587
|
+
dropType: 'inner' | 'prev' | 'next',
|
|
588
|
+
): Promise<void> {
|
|
589
|
+
if (
|
|
590
|
+
dropType === 'inner' &&
|
|
591
|
+
!dropNode.leaf &&
|
|
592
|
+
dropNode.children === undefined
|
|
593
|
+
) {
|
|
594
|
+
await this.expandNodeByKey([dropNode.id]);
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
/** 修改的树节点数据 */
|
|
598
|
+
const modifiedNodeDatas: ITreeNodeData[] = [];
|
|
599
|
+
const draggingNodeModel = this.getNodeModel(draggingNode.nodeId)!;
|
|
600
|
+
const dropInNode = dropType === 'inner' ? dropNode : dropNode.parent!;
|
|
601
|
+
const isChangedParent = dropNode.parent?.id !== draggingNode.parent?.id;
|
|
602
|
+
let orderNodeModel = this.getNodeModel(dropNode.nodeId)!;
|
|
603
|
+
|
|
604
|
+
// * 处理切换父节点
|
|
605
|
+
if (
|
|
606
|
+
dropType === 'inner' ||
|
|
607
|
+
dropNode.parent?.id !== draggingNode.parent?.id
|
|
608
|
+
) {
|
|
609
|
+
const dropNodeRs = this.findDropNodeRS(
|
|
610
|
+
dropInNode.nodeId,
|
|
611
|
+
draggingNodeModel.appDataEntityId!,
|
|
612
|
+
);
|
|
613
|
+
if (dropNodeRs) {
|
|
614
|
+
// 修改关系属性的值为父节点的主键和树节点id
|
|
615
|
+
draggingNode.deData![dropNodeRs.pickupDEFName] = dropInNode.value;
|
|
616
|
+
modifiedNodeDatas.push(draggingNode);
|
|
617
|
+
orderNodeModel = this.getNodeModel(dropNodeRs.childDETreeNodeId)!;
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
// *修改节点数据
|
|
622
|
+
// 所有情况都先从原来的父的子集合里删除自己
|
|
623
|
+
const originArr = draggingNode.parent!.children!;
|
|
624
|
+
originArr.splice(originArr.indexOf(draggingNode), 1);
|
|
625
|
+
|
|
626
|
+
if (dropType === 'inner') {
|
|
627
|
+
// 移入时放到最后
|
|
628
|
+
if (!dropNode.children) {
|
|
629
|
+
dropNode.children = [];
|
|
630
|
+
dropNode.leaf = true;
|
|
631
|
+
this.state.expandedKeys.push(dropNode.id);
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
dropNode.children.push(draggingNode);
|
|
635
|
+
} else {
|
|
636
|
+
// 非插入时,放入指定节点前后
|
|
637
|
+
let insertIndex = dropInNode.children!.indexOf(dropNode);
|
|
638
|
+
if (dropType === 'next') {
|
|
639
|
+
insertIndex += 1;
|
|
640
|
+
}
|
|
641
|
+
dropInNode.children!.splice(insertIndex, 0, draggingNode);
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
//* 变更父节点后的,拖动节点调整
|
|
645
|
+
if (dropType === 'inner' || isChangedParent) {
|
|
646
|
+
// 更改父节点
|
|
647
|
+
draggingNode.parent = dropInNode;
|
|
648
|
+
// 修改指向的节点模型
|
|
649
|
+
draggingNode.nodeId = orderNodeModel.id!;
|
|
650
|
+
// 维护拖拽的节点和其子孙的展开,维护拖入节点的展开
|
|
651
|
+
this.state.expandedKeys = this.calcExpandedKeys([dropInNode]);
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
// *处理排序
|
|
655
|
+
const { sortAppDEFieldId, sortDir, allowOrder } =
|
|
656
|
+
orderNodeModel as IDETreeDataSetNode;
|
|
657
|
+
if (allowOrder === true) {
|
|
658
|
+
// 有排序属性才处理排序
|
|
659
|
+
if (!sortAppDEFieldId) {
|
|
660
|
+
throw new RuntimeModelError(orderNodeModel, '缺少配置排序属性');
|
|
661
|
+
}
|
|
662
|
+
const sortField = sortAppDEFieldId.toLowerCase();
|
|
663
|
+
const isAsc = sortDir === 'ASC';
|
|
664
|
+
|
|
665
|
+
const changedArr = [...dropInNode.children!];
|
|
666
|
+
|
|
667
|
+
// 降序把数组反转,保证两个数组都是从小到大排
|
|
668
|
+
if (!isAsc) {
|
|
669
|
+
changedArr.reverse();
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
* 获取下一个100的倍数
|
|
674
|
+
* @author lxm
|
|
675
|
+
* @date 2023-09-11 10:03:46
|
|
676
|
+
* @param {number} num
|
|
677
|
+
* @return {*} {number}
|
|
678
|
+
*/
|
|
679
|
+
const getNextSort = (num: number): number => {
|
|
680
|
+
return num + (100 - (num % 100));
|
|
681
|
+
};
|
|
682
|
+
|
|
683
|
+
const getSort = (deData: IData): number => {
|
|
684
|
+
return (deData[sortField] as number) || 0;
|
|
685
|
+
};
|
|
686
|
+
|
|
687
|
+
let lastSort: number;
|
|
688
|
+
changedArr.forEach((item, index) => {
|
|
689
|
+
const deData = item.deData!;
|
|
690
|
+
if (lastSort === undefined) {
|
|
691
|
+
// 第一次出现要调整顺序的时候一定是从拖拽节点开始
|
|
692
|
+
if (item === draggingNode) {
|
|
693
|
+
// 如果时第一个,则排序值为100
|
|
694
|
+
if (index === 0) {
|
|
695
|
+
lastSort = 100;
|
|
696
|
+
} else {
|
|
697
|
+
// 最后一个时,把前一个的排序值加100
|
|
698
|
+
lastSort = getNextSort(getSort(changedArr[index - 1].deData!));
|
|
699
|
+
}
|
|
700
|
+
deData[sortField] = lastSort;
|
|
701
|
+
|
|
702
|
+
// 修改父的时候可能已经加入进去了
|
|
703
|
+
if (modifiedNodeDatas.indexOf(item) === -1) {
|
|
704
|
+
modifiedNodeDatas.push(item);
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
} else {
|
|
708
|
+
if (lastSort >= getSort(deData)) {
|
|
709
|
+
deData[sortField] = getNextSort(lastSort);
|
|
710
|
+
modifiedNodeDatas.push(item);
|
|
711
|
+
}
|
|
712
|
+
// 更新上一个排序值
|
|
713
|
+
lastSort = getSort(deData);
|
|
714
|
+
}
|
|
715
|
+
});
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
await this.updateDeNodeData(modifiedNodeDatas);
|
|
719
|
+
|
|
720
|
+
// *通知界面修改移入的父节点的子节点数据
|
|
721
|
+
this.evt.emit('onAfterNodeDrop', { isChangedParent });
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* 更新实体节点数据
|
|
726
|
+
* @author lxm
|
|
727
|
+
* @date 2023-12-15 04:19:36
|
|
728
|
+
* @protected
|
|
729
|
+
* @param {ITreeNodeData[]} nodeDatas 节点数据集合
|
|
730
|
+
* @return {*} {Promise<void>}
|
|
731
|
+
*/
|
|
732
|
+
async updateDeNodeData(nodeDatas: ITreeNodeData[]): Promise<void> {
|
|
733
|
+
const app = ibiz.hub.getApp(this.context.srfappid);
|
|
734
|
+
await Promise.all(
|
|
735
|
+
nodeDatas.map(async node => {
|
|
736
|
+
const model = this.getNodeModel(node.nodeId)!;
|
|
737
|
+
const deData = node.deData!;
|
|
738
|
+
// 往上下文添加主键
|
|
739
|
+
const deName = calcDeCodeNameById(model.appDataEntityId!);
|
|
740
|
+
const tempContext = this.context.clone();
|
|
741
|
+
tempContext[deName] = deData.srfkey;
|
|
742
|
+
|
|
743
|
+
// 调用接口修改数据
|
|
744
|
+
const res = await app.deService.exec(
|
|
745
|
+
model.appDataEntityId!,
|
|
746
|
+
'update',
|
|
747
|
+
tempContext,
|
|
748
|
+
deData,
|
|
749
|
+
);
|
|
750
|
+
|
|
751
|
+
// 更新完之后更新state里的数据。
|
|
752
|
+
if (res.data) {
|
|
753
|
+
node.deData = res.data;
|
|
754
|
+
}
|
|
755
|
+
}),
|
|
756
|
+
);
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* 修改节点文本
|
|
761
|
+
* @author lxm
|
|
762
|
+
* @date 2023-12-15 04:32:52
|
|
763
|
+
* @param {ITreeNodeData} nodeData
|
|
764
|
+
* @param {string} text
|
|
765
|
+
* @return {*} {Promise<void>}
|
|
766
|
+
*/
|
|
767
|
+
async modifyNodeText(nodeData: ITreeNodeData, text: string): Promise<void> {
|
|
768
|
+
const model = this.getNodeModel(nodeData.nodeId)! as IDETreeDataSetNode;
|
|
769
|
+
if (!model.allowEditText) {
|
|
770
|
+
throw new RuntimeModelError(model, '树节点没有配置编辑模式:名称');
|
|
771
|
+
}
|
|
772
|
+
if (!nodeData.deData) {
|
|
773
|
+
throw new RuntimeError('不是实体树节点数据');
|
|
774
|
+
}
|
|
775
|
+
nodeData.text = text;
|
|
776
|
+
nodeData.deData[model.textAppDEFieldId!] = text;
|
|
777
|
+
await this.updateDeNodeData([nodeData]);
|
|
778
|
+
}
|
|
454
779
|
}
|
|
@@ -60,6 +60,22 @@ export interface IControlController<
|
|
|
60
60
|
*/
|
|
61
61
|
endLoading(): Promise<void>;
|
|
62
62
|
|
|
63
|
+
/**
|
|
64
|
+
* 部件激活,主要用于用户可见时设置为激活状态
|
|
65
|
+
*
|
|
66
|
+
* @author chitanda
|
|
67
|
+
* @date 2023-12-13 11:12:04
|
|
68
|
+
*/
|
|
69
|
+
onActivated(): void;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 部件暂停激活,主要用于用户不可见时设置为非激活状态
|
|
73
|
+
*
|
|
74
|
+
* @author chitanda
|
|
75
|
+
* @date 2023-12-13 11:12:06
|
|
76
|
+
*/
|
|
77
|
+
onDeactivated(): void;
|
|
78
|
+
|
|
63
79
|
/**
|
|
64
80
|
* 在不改变引用的前提下,更新上下文和导航参数
|
|
65
81
|
* 并处理如自定义导航参数的后续处理
|
|
@@ -162,4 +162,20 @@ export interface IViewController<
|
|
|
162
162
|
* @date 2022-09-19 14:09:09
|
|
163
163
|
*/
|
|
164
164
|
endLoading(): void;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* 视图激活,主要用于用户可见时设置为激活状态
|
|
168
|
+
*
|
|
169
|
+
* @author chitanda
|
|
170
|
+
* @date 2023-12-13 11:12:04
|
|
171
|
+
*/
|
|
172
|
+
onActivated(): void;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* 视图暂停激活,主要用于用户不可见时设置为非激活状态
|
|
176
|
+
*
|
|
177
|
+
* @author chitanda
|
|
178
|
+
* @date 2023-12-13 11:12:06
|
|
179
|
+
*/
|
|
180
|
+
onDeactivated(): void;
|
|
165
181
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { IGanttNodeData } from '../../state';
|
|
2
|
+
import { EventBase } from '../argument';
|
|
1
3
|
import { IMDControlEvent } from './i-md-control.event';
|
|
2
4
|
|
|
3
5
|
/**
|
|
@@ -9,4 +11,38 @@ import { IMDControlEvent } from './i-md-control.event';
|
|
|
9
11
|
* @interface IGanttEvent
|
|
10
12
|
* @extends {IMDControlEvent}
|
|
11
13
|
*/
|
|
12
|
-
export interface IGanttEvent extends IMDControlEvent {
|
|
14
|
+
export interface IGanttEvent extends IMDControlEvent {
|
|
15
|
+
/**
|
|
16
|
+
* 数据激活事件
|
|
17
|
+
*
|
|
18
|
+
* @type {({
|
|
19
|
+
* event: EventBase & { nodeData: IGanttNodeData };
|
|
20
|
+
* emitArgs: { data: IData[]; nodeData: IGanttNodeData };
|
|
21
|
+
* })}
|
|
22
|
+
* @memberof IGanttEvent
|
|
23
|
+
*/
|
|
24
|
+
onActive: {
|
|
25
|
+
event: EventBase & { nodeData: IGanttNodeData };
|
|
26
|
+
emitArgs: { data: IData[]; nodeData: IGanttNodeData };
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* 父节点刷新结束之后事件
|
|
31
|
+
*
|
|
32
|
+
* @type {({
|
|
33
|
+
* event: EventBase & {
|
|
34
|
+
* parentNode: IGanttNodeData;
|
|
35
|
+
* children: IGanttNodeData[];
|
|
36
|
+
* };
|
|
37
|
+
* emitArgs: { parentNode: IGanttNodeData; children: IGanttNodeData[] };
|
|
38
|
+
* })}
|
|
39
|
+
* @memberof IGanttEvent
|
|
40
|
+
*/
|
|
41
|
+
onAfterRefreshParent: {
|
|
42
|
+
event: EventBase & {
|
|
43
|
+
parentNode: IGanttNodeData;
|
|
44
|
+
children: IGanttNodeData[];
|
|
45
|
+
};
|
|
46
|
+
emitArgs: { parentNode: IGanttNodeData; children: IGanttNodeData[] };
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -35,4 +35,18 @@ export interface ITreeEvent extends IMDControlEvent {
|
|
|
35
35
|
event: EventBase & { parentNode: ITreeNodeData; children: ITreeNodeData[] };
|
|
36
36
|
emitArgs: { parentNode: ITreeNodeData; children: ITreeNodeData[] };
|
|
37
37
|
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* 树节点拖入变更处理完成后事件
|
|
41
|
+
* @author lxm
|
|
42
|
+
* @date 2023-12-15 03:18:10
|
|
43
|
+
* @type {({
|
|
44
|
+
* event: EventBase & { isChangedParent: boolean };
|
|
45
|
+
* emitArgs: { isChangedParent: boolean };
|
|
46
|
+
* })}
|
|
47
|
+
*/
|
|
48
|
+
onAfterNodeDrop: {
|
|
49
|
+
event: EventBase & { isChangedParent: boolean };
|
|
50
|
+
emitArgs: { isChangedParent: boolean };
|
|
51
|
+
};
|
|
38
52
|
}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { IControllerState } from '../common/i-controller.state';
|
|
2
2
|
|
|
3
3
|
export interface IControlState extends IControllerState {
|
|
4
|
+
/**
|
|
5
|
+
* 当前部件是否为激活状态(缓存下的激活状态,一般与框架的生命周期相同)
|
|
6
|
+
*
|
|
7
|
+
* @author chitanda
|
|
8
|
+
* @date 2023-12-13 11:12:30
|
|
9
|
+
* @type {boolean}
|
|
10
|
+
*/
|
|
11
|
+
activated: boolean;
|
|
12
|
+
|
|
4
13
|
/**
|
|
5
14
|
* 是否是简单模式
|
|
6
15
|
* @author zjm
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IColumnState } from './i-grid.state';
|
|
1
2
|
import { IMDControlState } from './i-md-control.state';
|
|
2
3
|
import { ITreeNodeData } from './i-tree.state';
|
|
3
4
|
|
|
@@ -13,6 +14,14 @@ import { ITreeNodeData } from './i-tree.state';
|
|
|
13
14
|
export interface IGanttState extends IMDControlState {
|
|
14
15
|
items: IGanttNodeData[];
|
|
15
16
|
|
|
17
|
+
/**
|
|
18
|
+
* 表格列状态数组
|
|
19
|
+
*
|
|
20
|
+
* @type {IColumnState[]}
|
|
21
|
+
* @memberof IGanttState
|
|
22
|
+
*/
|
|
23
|
+
columnStates: IColumnState[];
|
|
24
|
+
|
|
16
25
|
/**
|
|
17
26
|
* 树的根节点
|
|
18
27
|
*
|
|
@@ -111,4 +120,20 @@ export interface IGanttNodeData extends ITreeNodeData {
|
|
|
111
120
|
* @type {(IGanttNodeData[] | undefined)}
|
|
112
121
|
*/
|
|
113
122
|
children?: IGanttNodeData[] | undefined;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* 父节点数据对象
|
|
126
|
+
*
|
|
127
|
+
* @type {IGanttNodeData}
|
|
128
|
+
* @memberof IGanttNodeData
|
|
129
|
+
*/
|
|
130
|
+
parent?: IGanttNodeData;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* 节点数据项
|
|
134
|
+
*
|
|
135
|
+
* @type {IData}
|
|
136
|
+
* @memberof IGanttNodeData
|
|
137
|
+
*/
|
|
138
|
+
nodeDataItem?: IData;
|
|
114
139
|
}
|
|
@@ -73,6 +73,16 @@ export interface IGridRowState {
|
|
|
73
73
|
*/
|
|
74
74
|
uaColStates: { [p: string]: IButtonContainerState };
|
|
75
75
|
|
|
76
|
+
/**
|
|
77
|
+
* 界面行为组状态(p是界面行为的标识)
|
|
78
|
+
*
|
|
79
|
+
* @author zk
|
|
80
|
+
* @date 2023-12-15 10:12:42
|
|
81
|
+
* @type {{ [p: string]: IButtonContainerState }}
|
|
82
|
+
* @memberof IGridRowState
|
|
83
|
+
*/
|
|
84
|
+
uiActionGroupStates: { [p: string]: IButtonContainerState };
|
|
85
|
+
|
|
76
86
|
/**
|
|
77
87
|
* 编辑列的状态
|
|
78
88
|
*
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IDataViewControlState } from './i-data-view-control.state';
|
|
2
|
+
import { IMDControlGroupState } from './i-md-control.state';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* 看板部件(kanban)部件状态
|
|
@@ -23,4 +24,29 @@ export interface IKanbanState extends IDataViewControlState {
|
|
|
23
24
|
* @type {boolean}
|
|
24
25
|
*/
|
|
25
26
|
updating: boolean;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 分组数据
|
|
30
|
+
*
|
|
31
|
+
* @type {IKanbanGroupState[]}
|
|
32
|
+
* @memberof IKanbanState
|
|
33
|
+
*/
|
|
34
|
+
groups: IKanbanGroupState[];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* 看板部件分组数据
|
|
39
|
+
*
|
|
40
|
+
* @export
|
|
41
|
+
* @interface IKanbanGroupState
|
|
42
|
+
* @extends {IMDControlGroupState}
|
|
43
|
+
*/
|
|
44
|
+
export interface IKanbanGroupState extends IMDControlGroupState {
|
|
45
|
+
/**
|
|
46
|
+
* 颜色
|
|
47
|
+
*
|
|
48
|
+
* @type {string}
|
|
49
|
+
* @memberof IKanbanGroupState
|
|
50
|
+
*/
|
|
51
|
+
color?: string;
|
|
26
52
|
}
|