@ibiz-template/runtime 0.3.3 → 0.3.4

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.
Files changed (51) hide show
  1. package/dist/index.esm.js +255 -43
  2. package/dist/index.system.min.js +2 -2
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/controller/control/calendar/calendar.controller.d.ts +7 -0
  5. package/out/controller/control/calendar/calendar.controller.d.ts.map +1 -1
  6. package/out/controller/control/calendar/calendar.controller.js +28 -2
  7. package/out/controller/control/chart/chart.controller.d.ts +6 -0
  8. package/out/controller/control/chart/chart.controller.d.ts.map +1 -1
  9. package/out/controller/control/chart/chart.controller.js +5 -3
  10. package/out/controller/control/chart/generator/base-series-generator.d.ts +21 -6
  11. package/out/controller/control/chart/generator/base-series-generator.d.ts.map +1 -1
  12. package/out/controller/control/chart/generator/base-series-generator.js +51 -7
  13. package/out/controller/control/chart/generator/chart-options-generator.d.ts +15 -1
  14. package/out/controller/control/chart/generator/chart-options-generator.d.ts.map +1 -1
  15. package/out/controller/control/chart/generator/chart-options-generator.js +23 -3
  16. package/out/controller/control/chart/generator/funnel-series-generator.d.ts +2 -3
  17. package/out/controller/control/chart/generator/funnel-series-generator.d.ts.map +1 -1
  18. package/out/controller/control/chart/generator/funnel-series-generator.js +1 -5
  19. package/out/controller/control/chart/generator/pie-series-generator.d.ts +2 -3
  20. package/out/controller/control/chart/generator/pie-series-generator.d.ts.map +1 -1
  21. package/out/controller/control/chart/generator/pie-series-generator.js +1 -5
  22. package/out/controller/control/chart/generator/radar-series-generator.d.ts +1 -2
  23. package/out/controller/control/chart/generator/radar-series-generator.d.ts.map +1 -1
  24. package/out/controller/control/chart/generator/radar-series-generator.js +1 -4
  25. package/out/controller/control/exp-bar/chart-exp-bar.controller.d.ts +25 -1
  26. package/out/controller/control/exp-bar/chart-exp-bar.controller.d.ts.map +1 -1
  27. package/out/controller/control/exp-bar/chart-exp-bar.controller.js +68 -2
  28. package/out/interface/controller/state/control/i-chart.state.d.ts +21 -0
  29. package/out/interface/controller/state/control/i-chart.state.d.ts.map +1 -1
  30. package/out/service/vo/chart-data/chart-data.d.ts +11 -0
  31. package/out/service/vo/chart-data/chart-data.d.ts.map +1 -0
  32. package/out/service/vo/chart-data/chart-data.js +50 -0
  33. package/out/service/vo/chart-data/index.d.ts +2 -0
  34. package/out/service/vo/chart-data/index.d.ts.map +1 -0
  35. package/out/service/vo/chart-data/index.js +1 -0
  36. package/out/service/vo/index.d.ts +1 -0
  37. package/out/service/vo/index.d.ts.map +1 -1
  38. package/out/service/vo/index.js +1 -0
  39. package/package.json +3 -3
  40. package/src/controller/control/calendar/calendar.controller.ts +29 -2
  41. package/src/controller/control/chart/chart.controller.ts +11 -3
  42. package/src/controller/control/chart/generator/base-series-generator.ts +71 -9
  43. package/src/controller/control/chart/generator/chart-options-generator.ts +24 -3
  44. package/src/controller/control/chart/generator/funnel-series-generator.ts +3 -7
  45. package/src/controller/control/chart/generator/pie-series-generator.ts +3 -7
  46. package/src/controller/control/chart/generator/radar-series-generator.ts +2 -6
  47. package/src/controller/control/exp-bar/chart-exp-bar.controller.ts +97 -4
  48. package/src/interface/controller/state/control/i-chart.state.ts +24 -0
  49. package/src/service/vo/chart-data/chart-data.ts +75 -0
  50. package/src/service/vo/chart-data/index.ts +1 -0
  51. package/src/service/vo/index.ts +1 -0
@@ -1,4 +1,4 @@
1
- import { IChartExpBar, IDEChart } from '@ibiz/model-core';
1
+ import { IChartExpBar, IDEChart, INavigatable } from '@ibiz/model-core';
2
2
  import {
3
3
  IChartExpBarState,
4
4
  IChartExpBarEvent,
@@ -6,6 +6,8 @@ import {
6
6
  INavViewMsg,
7
7
  } from '../../../interface';
8
8
  import { ExpBarControlController } from './exp-bar.controller';
9
+ import { ChartController } from '../chart';
10
+ import { convertNavData } from '../../../utils';
9
11
 
10
12
  /**
11
13
  * 图表导航栏控制器
@@ -23,6 +25,90 @@ export class ChartExpBarController
23
25
  >
24
26
  implements IChartExpBarController
25
27
  {
28
+ /**
29
+ * 导航页面首次打开且没有回显时,
30
+ * 默认取第一条数据进行导航
31
+ * 对于不同的导航,第一条可导航的数据可能定义不同,可以重写改方法。
32
+ * @author lxm
33
+ * @date 2023-08-10 03:58:15
34
+ * @protected
35
+ */
36
+ protected navByFirstItem(): void {
37
+ const data = this.xDataController.state.items[0];
38
+ if (!data) {
39
+ // 导航视图传空让他导航占位绘制空界面
40
+ this.state.srfnav = '';
41
+ this._evt.emit('onNavViewChange', {
42
+ navViewMsg: {
43
+ key: '',
44
+ isCache: this.isCache,
45
+ },
46
+ });
47
+ return;
48
+ }
49
+ // 默认选中并激活第一项(这里的第一项是我们自己封装的chartData)
50
+ const activeSeriesGenerator = (
51
+ this.xDataController as ChartController
52
+ ).generator.seriesGenerators.find(generator => {
53
+ return generator.chartDataArr.length > 0 && generator.model.navAppViewId;
54
+ });
55
+ if (activeSeriesGenerator) {
56
+ this.xDataController.setActive(activeSeriesGenerator.chartDataArr[0]);
57
+ }
58
+ }
59
+
60
+ /**
61
+ * 解析参数
62
+ *
63
+ * @author zk
64
+ * @date 2023-05-29 04:05:52
65
+ * @param {IDETabViewPanel} tabViewPanel
66
+ * @return {*}
67
+ * @memberof ExpBarControlController
68
+ */
69
+ prepareParams(
70
+ XDataModel: INavigatable & { appDataEntityId?: string },
71
+ data: IData,
72
+ context: IContext,
73
+ params: IParams,
74
+ ): { context: IContext; params: IParams } {
75
+ const { context: tempContext, params: tempParams } = super.prepareParams(
76
+ XDataModel,
77
+ data,
78
+ context,
79
+ params,
80
+ );
81
+ // 序列上或配置导航相关参数
82
+ if (data._seriesModelId) {
83
+ const seriesModel = (XDataModel as IDEChart).dechartSerieses?.find(
84
+ series => {
85
+ return series.id === data._seriesModelId;
86
+ },
87
+ );
88
+ if (seriesModel) {
89
+ const { navigateContexts, navigateParams } = seriesModel;
90
+ // 序列上配的导航视图参数和上下文
91
+ const tempContext2 = convertNavData(
92
+ navigateContexts,
93
+ data,
94
+ params,
95
+ tempContext,
96
+ );
97
+ const tempParams2 = convertNavData(
98
+ navigateParams,
99
+ data,
100
+ params,
101
+ tempParams,
102
+ );
103
+ return {
104
+ context: Object.assign(tempContext.clone(), tempContext2),
105
+ params: tempParams2,
106
+ };
107
+ }
108
+ }
109
+ return { context: tempContext, params: tempParams };
110
+ }
111
+
26
112
  /**
27
113
  * 获取导航视图
28
114
  *
@@ -37,11 +123,18 @@ export class ChartExpBarController
37
123
  context: IContext,
38
124
  params: IParams,
39
125
  ): INavViewMsg {
40
- const viewModelId = (this.XDataModel as IDEChart).dechartSerieses?.[0]
41
- .navAppViewId;
126
+ let viewModelId;
127
+ if (data._seriesModelId) {
128
+ const seriesModel = (this.XDataModel as IDEChart).dechartSerieses?.find(
129
+ series => {
130
+ return series.id === data._seriesModelId;
131
+ },
132
+ );
133
+ viewModelId = seriesModel?.navAppViewId;
134
+ }
42
135
  const result = this.prepareParams(this.XDataModel!, data, context, params);
43
136
  return {
44
- key: data[this.navKeyName],
137
+ key: data._uuid,
45
138
  context: result.context,
46
139
  params: result.params,
47
140
  viewId: viewModelId,
@@ -9,3 +9,27 @@ import { IMDControlState } from './i-md-control.state';
9
9
  * @extends {IMDControlState}
10
10
  */
11
11
  export interface IChartState extends IMDControlState {}
12
+
13
+ /**
14
+ * 图表数据格式
15
+ *
16
+ */
17
+ export interface IChartData {
18
+ /**
19
+ * 序列模型id
20
+ *
21
+ */
22
+ _seriesModelId?: string;
23
+
24
+ /**
25
+ * 分组名称
26
+ *
27
+ */
28
+ _groupName?: string;
29
+
30
+ /**
31
+ * 分类值
32
+ *
33
+ */
34
+ _catalog?: string;
35
+ }
@@ -0,0 +1,75 @@
1
+ /* eslint-disable no-constructor-return */
2
+ import { createUUID } from 'qx-util';
3
+ import { IDEChartSeries } from '@ibiz/model-core';
4
+ import { IChartData } from '../../../interface';
5
+
6
+ // 更新属性,缺的补充定义
7
+ function updateKeyDefine(target: IParams, keys: string[]): void {
8
+ keys.forEach(key => {
9
+ if (!Object.prototype.hasOwnProperty.call(target, key)) {
10
+ Object.defineProperty(target, key, {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: undefined,
15
+ });
16
+ }
17
+ });
18
+ }
19
+
20
+ export class ChartData implements IChartData {
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ [key: string | symbol]: any;
23
+
24
+ _seriesModelId?: string;
25
+
26
+ _catalog?: string;
27
+
28
+ _groupName?: string;
29
+
30
+ _uuid?: string;
31
+
32
+ constructor(
33
+ deData: IData,
34
+ seriesModel?: IDEChartSeries,
35
+ catalog?: string,
36
+ groupName?: string,
37
+ ) {
38
+ this._seriesModelId = seriesModel?.id;
39
+
40
+ this._catalog = catalog;
41
+
42
+ this._groupName = groupName;
43
+
44
+ this._uuid = createUUID();
45
+
46
+ return new Proxy<ChartData>(this, {
47
+ set(target, p, value): boolean {
48
+ if (Object.prototype.hasOwnProperty.call(deData, p)) {
49
+ deData[p] = value;
50
+ } else {
51
+ target[p] = value;
52
+ }
53
+ return true;
54
+ },
55
+
56
+ get(target, p, _receiver): unknown {
57
+ if (target[p] !== undefined) {
58
+ return target[p];
59
+ }
60
+ if (deData[p] !== undefined) {
61
+ return deData[p];
62
+ }
63
+ },
64
+
65
+ ownKeys(target): ArrayLike<string | symbol> {
66
+ // 整合所有并排除重复
67
+ const allKeys = [
68
+ ...new Set([...Object.keys(target), ...Object.keys(deData)]),
69
+ ];
70
+ updateKeyDefine(target, allKeys);
71
+ return allKeys;
72
+ },
73
+ });
74
+ }
75
+ }
@@ -0,0 +1 @@
1
+ export { ChartData } from './chart-data';
@@ -4,3 +4,4 @@ export * from './ui-map-field';
4
4
  export * from './calendar-item-data';
5
5
  export * from './map-data';
6
6
  export * from './panel-data';
7
+ export * from './chart-data';