aldehyde 0.2.99 → 0.2.100

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 (190) hide show
  1. package/dist/bundle.021f784b1c84781461d2.js +1 -0
  2. package/dist/bundle.03c542ca824e205fe307.js +2 -0
  3. package/dist/bundle.03c542ca824e205fe307.js.LICENSE.txt +27 -0
  4. package/dist/bundle.03c542ca824e205fe307.js.gz +0 -0
  5. package/dist/bundle.15cb660c34802f6cccf5.js +1 -0
  6. package/dist/bundle.15cb660c34802f6cccf5.js.gz +0 -0
  7. package/dist/bundle.2f9c2d692fe0277a37aa.js +2 -0
  8. package/dist/bundle.2f9c2d692fe0277a37aa.js.LICENSE.txt +1 -0
  9. package/dist/bundle.2f9c2d692fe0277a37aa.js.gz +0 -0
  10. package/dist/bundle.320c02187dd135005102.js +2 -0
  11. package/dist/bundle.320c02187dd135005102.js.LICENSE.txt +6 -0
  12. package/dist/bundle.320c02187dd135005102.js.gz +0 -0
  13. package/dist/bundle.35a4af7e2d0da1942d79.js +10 -0
  14. package/dist/bundle.35a4af7e2d0da1942d79.js.gz +0 -0
  15. package/dist/bundle.3f9072b1629cdb384b46.js +2 -0
  16. package/dist/bundle.3f9072b1629cdb384b46.js.LICENSE.txt +5 -0
  17. package/dist/bundle.3f9072b1629cdb384b46.js.gz +0 -0
  18. package/dist/bundle.46e2295b5360a725bcd5.js +1 -0
  19. package/dist/bundle.46e2295b5360a725bcd5.js.gz +0 -0
  20. package/dist/bundle.4c3c988531c3cf360b87.js +1 -0
  21. package/dist/bundle.4c3c988531c3cf360b87.js.gz +0 -0
  22. package/dist/bundle.4df89546fd2e9d665dfb.js +2 -0
  23. package/dist/bundle.4df89546fd2e9d665dfb.js.LICENSE.txt +5 -0
  24. package/dist/bundle.4df89546fd2e9d665dfb.js.gz +0 -0
  25. package/dist/bundle.5a9afb9ee6cceca506fa.js +5 -0
  26. package/dist/bundle.5a9afb9ee6cceca506fa.js.LICENSE.txt +10 -0
  27. package/dist/bundle.5a9afb9ee6cceca506fa.js.gz +0 -0
  28. package/dist/bundle.5e6cccd06b34a0e3a2ff.js +1 -0
  29. package/dist/bundle.5e6cccd06b34a0e3a2ff.js.gz +0 -0
  30. package/dist/bundle.62c62e6aaa7f3c20761e.js +2 -0
  31. package/dist/bundle.62c62e6aaa7f3c20761e.js.LICENSE.txt +17 -0
  32. package/dist/bundle.62c62e6aaa7f3c20761e.js.gz +0 -0
  33. package/dist/bundle.6fd2dadd29083268c5a6.js +2 -0
  34. package/dist/bundle.6fd2dadd29083268c5a6.js.LICENSE.txt +17 -0
  35. package/dist/bundle.6fd2dadd29083268c5a6.js.gz +0 -0
  36. package/dist/bundle.8241d8d05e35988dd480.js +1 -0
  37. package/dist/bundle.8241d8d05e35988dd480.js.gz +0 -0
  38. package/dist/bundle.829683dfa6a98c78c58e.js +2 -0
  39. package/dist/bundle.829683dfa6a98c78c58e.js.LICENSE.txt +14 -0
  40. package/dist/bundle.829683dfa6a98c78c58e.js.gz +0 -0
  41. package/dist/bundle.840e28984e710e12f467.js +75 -0
  42. package/dist/bundle.840e28984e710e12f467.js.LICENSE.txt +8 -0
  43. package/dist/bundle.840e28984e710e12f467.js.gz +0 -0
  44. package/dist/bundle.85ce5221fe6ab1d91f7d.js +2 -0
  45. package/dist/bundle.85ce5221fe6ab1d91f7d.js.LICENSE.txt +1 -0
  46. package/dist/bundle.85ce5221fe6ab1d91f7d.js.gz +0 -0
  47. package/dist/bundle.9cfd99a04bde7f781c30.js +1 -0
  48. package/dist/bundle.9cfd99a04bde7f781c30.js.gz +0 -0
  49. package/dist/bundle.a049dc8814bbbf59160f.js +1 -0
  50. package/dist/bundle.a049dc8814bbbf59160f.js.gz +0 -0
  51. package/dist/bundle.a94f7811fac19aa9d6a3.js +2 -0
  52. package/dist/bundle.a94f7811fac19aa9d6a3.js.LICENSE.txt +1 -0
  53. package/dist/bundle.a94f7811fac19aa9d6a3.js.gz +0 -0
  54. package/dist/bundle.abdde6e82ee9f60d1bf3.js +2 -0
  55. package/dist/bundle.abdde6e82ee9f60d1bf3.js.LICENSE.txt +30 -0
  56. package/dist/bundle.abdde6e82ee9f60d1bf3.js.gz +0 -0
  57. package/dist/bundle.b207a66d5902f39d0c5a.js +1 -0
  58. package/dist/bundle.b207a66d5902f39d0c5a.js.gz +0 -0
  59. package/dist/bundle.b7b86a025aa95dea0e19.js +2 -0
  60. package/dist/bundle.b7b86a025aa95dea0e19.js.LICENSE.txt +8 -0
  61. package/dist/bundle.b7b86a025aa95dea0e19.js.gz +0 -0
  62. package/dist/bundle.b7e3eb480b649b3de67b.js +2 -0
  63. package/dist/bundle.b7e3eb480b649b3de67b.js.LICENSE.txt +5 -0
  64. package/dist/bundle.b7e3eb480b649b3de67b.js.gz +0 -0
  65. package/dist/bundle.c1c6028fd703ebf78c2e.js +2 -0
  66. package/dist/bundle.c1c6028fd703ebf78c2e.js.LICENSE.txt +5 -0
  67. package/dist/bundle.c1c6028fd703ebf78c2e.js.gz +0 -0
  68. package/dist/bundle.cd10ae07e0e0c36d0dee.js +2 -0
  69. package/dist/bundle.cd10ae07e0e0c36d0dee.js.LICENSE.txt +22 -0
  70. package/dist/bundle.cd10ae07e0e0c36d0dee.js.gz +0 -0
  71. package/dist/bundle.cf6a1933769c2aee4e6e.js +1 -0
  72. package/dist/bundle.cf6a1933769c2aee4e6e.js.gz +0 -0
  73. package/dist/bundle.d158d417d1d7a8acb2a1.js +1 -0
  74. package/dist/bundle.d158d417d1d7a8acb2a1.js.gz +0 -0
  75. package/dist/bundle.db40aa107272f4303ece.js +1 -0
  76. package/dist/bundle.db40aa107272f4303ece.js.gz +0 -0
  77. package/dist/bundle.ddefe6d8f235ef95d470.js +1 -0
  78. package/dist/bundle.ddefe6d8f235ef95d470.js.gz +0 -0
  79. package/dist/bundle.e02a7a16b4a6b3bb412f.js +2 -0
  80. package/dist/bundle.e02a7a16b4a6b3bb412f.js.LICENSE.txt +16 -0
  81. package/dist/bundle.e02a7a16b4a6b3bb412f.js.gz +0 -0
  82. package/dist/bundle.e760a70171cf0ae4567b.js +1 -0
  83. package/dist/bundle.e760a70171cf0ae4567b.js.gz +0 -0
  84. package/dist/bundle.f3ce062a620fe456c152.js +1 -0
  85. package/dist/bundle.f6e1c4fda58154810fe2.js +2 -0
  86. package/dist/bundle.f6e1c4fda58154810fe2.js.LICENSE.txt +41 -0
  87. package/dist/bundle.f6e1c4fda58154810fe2.js.gz +0 -0
  88. package/dist/bundle.fe9c09b8ace9c3117b0a.js +1 -0
  89. package/dist/bundle.fe9c09b8ace9c3117b0a.js.gz +0 -0
  90. package/dist/bundle.feaa17bec2057a4ee54f.js +1 -0
  91. package/dist/bundle.feaa17bec2057a4ee54f.js.gz +0 -0
  92. package/dist/css/chemstruc-graph-6437e59640f8b99b774f.css +12 -0
  93. package/dist/css/chemstruc-graph-6437e59640f8b99b774f.css.gz +0 -0
  94. package/dist/css/common-901df6b21f13391f2a53.css +56 -0
  95. package/dist/css/html-editor-draft-5e8e152675ab7d201c00.css +886 -0
  96. package/dist/css/html-editor-draft-5e8e152675ab7d201c00.css.gz +0 -0
  97. package/dist/css/main-f3c8fdebab315e61e7be.css +865 -0
  98. package/dist/css/main-f3c8fdebab315e61e7be.css.gz +0 -0
  99. package/dist/images/development-30de07a0.png +0 -0
  100. package/dist/images/logo-54b328b7.png +0 -0
  101. package/dist/images/pain-point-8f02421e.png +0 -0
  102. package/dist/images/target-13a5b4b9.png +0 -0
  103. package/dist/images/time-cost-cb40d2c2.png +0 -0
  104. package/dist/images/time-prograss-44b86b36.png +0 -0
  105. package/dist/index.html +4 -0
  106. package/lib/controls/collapse-card/index.d.ts +11 -2
  107. package/lib/controls/collapse-card/index.d.ts.map +1 -1
  108. package/lib/controls/collapse-card/index.js +18 -16
  109. package/lib/controls/collapse-card/index.js.map +1 -1
  110. package/lib/controls/entry-control.d.ts.map +1 -1
  111. package/lib/controls/entry-control.js +2 -1
  112. package/lib/controls/entry-control.js.map +1 -1
  113. package/lib/detail/button/fix-right-submit-button-bar.js +1 -1
  114. package/lib/detail/button/fix-right-submit-button-bar.js.map +1 -1
  115. package/lib/detail/view/act-dtmpl-view.js +1 -1
  116. package/lib/detail/view/act-dtmpl-view.js.map +1 -1
  117. package/lib/detail/view/field-view-group.d.ts +10 -1
  118. package/lib/detail/view/field-view-group.d.ts.map +1 -1
  119. package/lib/detail/view/field-view-group.js +17 -11
  120. package/lib/detail/view/field-view-group.js.map +1 -1
  121. package/lib/form/criteria-form.js +3 -3
  122. package/lib/form/criteria-form.js.map +1 -1
  123. package/lib/form/form-Item-group.js +1 -1
  124. package/lib/form/form-Item-group.js.map +1 -1
  125. package/lib/layout/MainPage.js +1 -1
  126. package/lib/layout/MainPage.js.map +1 -1
  127. package/lib/layout/header/index.js +3 -3
  128. package/lib/layout/header/index.js.map +1 -1
  129. package/lib/layout/menu/block.d.ts +13 -1
  130. package/lib/layout/menu/block.d.ts.map +1 -1
  131. package/lib/layout/menu/block.js +66 -8
  132. package/lib/layout/menu/block.js.map +1 -1
  133. package/lib/layout/menu/menu-2layers.d.ts +10 -0
  134. package/lib/layout/menu/menu-2layers.d.ts.map +1 -1
  135. package/lib/layout/menu/menu-2layers.js +32 -9
  136. package/lib/layout/menu/menu-2layers.js.map +1 -1
  137. package/lib/layout/sidebar/index.d.ts.map +1 -1
  138. package/lib/layout/sidebar/index.js +3 -1
  139. package/lib/layout/sidebar/index.js.map +1 -1
  140. package/lib/locale/LocaleProvider.d.ts.map +1 -1
  141. package/lib/locale/LocaleProvider.js +10 -8
  142. package/lib/locale/LocaleProvider.js.map +1 -1
  143. package/lib/locale/translate.d.ts.map +1 -1
  144. package/lib/locale/translate.js +10 -8
  145. package/lib/locale/translate.js.map +1 -1
  146. package/lib/routable/ltmpl-route.d.ts +2 -2
  147. package/lib/routable/ltmpl-route.d.ts.map +1 -1
  148. package/lib/routable/ltmpl-route.js +22 -21
  149. package/lib/routable/ltmpl-route.js.map +1 -1
  150. package/lib/table/act-table.d.ts.map +1 -1
  151. package/lib/table/act-table.js +18 -8
  152. package/lib/table/act-table.js.map +1 -1
  153. package/lib/table/column/column-selector.d.ts.map +1 -1
  154. package/lib/table/column/column-selector.js +20 -18
  155. package/lib/table/column/column-selector.js.map +1 -1
  156. package/lib/table/query-table.d.ts +10 -1
  157. package/lib/table/query-table.d.ts.map +1 -1
  158. package/lib/table/query-table.js +47 -41
  159. package/lib/table/query-table.js.map +1 -1
  160. package/lib/table/relation-table.js +4 -4
  161. package/lib/table/relation-table.js.map +1 -1
  162. package/lib/tree/tmpl-tree.d.ts.map +1 -1
  163. package/lib/tree/tmpl-tree.js +9 -6
  164. package/lib/tree/tmpl-tree.js.map +1 -1
  165. package/lib/tree/tree-node.d.ts.map +1 -1
  166. package/lib/tree/tree-node.js.map +1 -1
  167. package/package.json +1 -1
  168. package/src/aldehyde/controls/action/index.tsx +6 -5
  169. package/src/aldehyde/controls/collapse-card/index.tsx +96 -54
  170. package/src/aldehyde/controls/entry-control.tsx +2 -1
  171. package/src/aldehyde/detail/button/fix-right-submit-button-bar.tsx +1 -1
  172. package/src/aldehyde/detail/view/act-dtmpl-view.tsx +1 -1
  173. package/src/aldehyde/detail/view/field-view-group.tsx +62 -47
  174. package/src/aldehyde/form/criteria-form.tsx +3 -3
  175. package/src/aldehyde/form/form-Item-group.tsx +1 -1
  176. package/src/aldehyde/layout/MainPage.tsx +1 -1
  177. package/src/aldehyde/layout/header/index.tsx +4 -4
  178. package/src/aldehyde/layout/menu/block.less +11 -0
  179. package/src/aldehyde/layout/menu/block.tsx +132 -72
  180. package/src/aldehyde/layout/menu/menu-2layers.tsx +99 -64
  181. package/src/aldehyde/layout/sidebar/index.tsx +5 -1
  182. package/src/aldehyde/locale/LocaleProvider.tsx +10 -9
  183. package/src/aldehyde/locale/translate.ts +10 -7
  184. package/src/aldehyde/routable/ltmpl-route.tsx +220 -196
  185. package/src/aldehyde/table/act-table.tsx +26 -9
  186. package/src/aldehyde/table/column/column-selector.tsx +111 -72
  187. package/src/aldehyde/table/query-table.tsx +354 -304
  188. package/src/aldehyde/table/relation-table.tsx +4 -4
  189. package/src/aldehyde/tree/tmpl-tree.tsx +19 -3
  190. package/src/aldehyde/tree/tree-node.tsx +0 -3
@@ -1,67 +1,109 @@
1
- import * as React from 'react'
2
- import {Button, Card} from 'antd'
3
- import './index.css'
4
- import {DownOutlined, RightOutlined} from '@ant-design/icons';
5
- import {CardProps} from "antd/lib/card";
1
+ import * as React from "react";
2
+ import { Button, Card } from "antd";
3
+ import "./index.css";
4
+ import { DownOutlined, RightOutlined } from "@ant-design/icons";
5
+ import { CardProps } from "antd/lib/card";
6
6
  import ToolTipBar from "../../detail/tooltipbar";
7
+ import { LocaleContext } from "../../locale/LocaleProvider";
7
8
 
8
9
  interface CollapseCardProps extends CardProps {
9
- initCollapse?: boolean,
10
- tip?:any,
11
- showRightNav?:boolean,
12
- };
10
+ initCollapse?: boolean;
11
+ tip?: any;
12
+ showRightNav?: boolean;
13
+ }
13
14
 
14
15
  interface CollapseCardState {
15
- collapse?: boolean,
16
- };
17
- export default class CollapseCard extends React.PureComponent<CollapseCardProps, CollapseCardState> {
18
-
19
- state = {
20
- collapse: false,
21
- }
16
+ collapse?: boolean;
17
+ }
18
+ export default class CollapseCard extends React.PureComponent<
19
+ CollapseCardProps,
20
+ CollapseCardState
21
+ > {
22
+ state = {
23
+ collapse: false,
24
+ };
25
+ static contextType = LocaleContext;
26
+ context: React.ContextType<typeof LocaleContext>;
22
27
 
23
- componentDidMount() {
24
- const {initCollapse} = this.props;
25
- this.setState({
26
- collapse: initCollapse,
27
- })
28
- }
28
+ componentDidMount() {
29
+ const { initCollapse } = this.props;
30
+ this.setState({
31
+ collapse: initCollapse,
32
+ });
33
+ }
29
34
 
30
- componentDidUpdate(prevProps) {
31
- const {initCollapse} = this.props;
32
- if (this.props != prevProps) {
33
- this.setState({
34
- collapse: initCollapse,
35
- })
36
- }
35
+ componentDidUpdate(prevProps) {
36
+ const { initCollapse } = this.props;
37
+ if (this.props != prevProps) {
38
+ this.setState({
39
+ collapse: initCollapse,
40
+ });
37
41
  }
42
+ }
38
43
 
39
- cardTitle = () => {
40
- const {title,tip} = this.props;
41
- const {collapse} = this.state;
42
- if(!title || 'null'==title){//没title不显示card ,同时不支持伸缩。
43
- return null;
44
- };
45
- let titleBegin=null;
46
- if (collapse) {
47
- titleBegin= <Button type="text" onClick={() => {
48
- this.setState({collapse: false})
49
- }}><RightOutlined/>{title}</Button>
50
- } else {
51
- titleBegin= <Button type="text" onClick={() => {
52
- this.setState({collapse: true})
53
- }}><DownOutlined/>{title}</Button>
54
- }
55
- return <>{titleBegin}<ToolTipBar content={tip}></ToolTipBar></>;
44
+ cardTitle = () => {
45
+ const { title, tip } = this.props;
46
+ const { collapse } = this.state;
47
+ const { translate } = this.context;
48
+ if (!title || "null" == title) {
49
+ //没title不显示card 头 ,同时不支持伸缩。
50
+ return null;
56
51
  }
57
-
58
- render() {
59
- const {collapse} = this.state;
60
- const { extra, title, className,initCollapse,showRightNav, ...other } = this.props;
61
- return <Card {...other} size={'small'} extra={collapse ? "" : extra} style={{width:showRightNav?"90%":'100%'}}
62
- className={`${className} ${collapse ? 'collapse' : ""}`} title={this.cardTitle()}>
63
- {collapse ? null : this.props.children}
64
- </Card>;
52
+ let titleBegin = null;
53
+ if (collapse) {
54
+ titleBegin = (
55
+ <Button
56
+ type="text"
57
+ onClick={() => {
58
+ this.setState({ collapse: false });
59
+ }}
60
+ >
61
+ <RightOutlined />
62
+ {translate("${" + title + "}")}
63
+ </Button>
64
+ );
65
+ } else {
66
+ titleBegin = (
67
+ <Button
68
+ type="text"
69
+ onClick={() => {
70
+ this.setState({ collapse: true });
71
+ }}
72
+ >
73
+ <DownOutlined />
74
+ {translate("${" + title + "}")}
75
+ </Button>
76
+ );
65
77
  }
78
+ return (
79
+ <>
80
+ {titleBegin}
81
+ <ToolTipBar content={tip}></ToolTipBar>
82
+ </>
83
+ );
84
+ };
66
85
 
86
+ render() {
87
+ const { collapse } = this.state;
88
+ const {
89
+ extra,
90
+ title,
91
+ className,
92
+ initCollapse,
93
+ showRightNav,
94
+ ...other
95
+ } = this.props;
96
+ return (
97
+ <Card
98
+ {...other}
99
+ size={"small"}
100
+ extra={collapse ? "" : extra}
101
+ style={{ width: showRightNav ? "90%" : "100%" }}
102
+ className={`${className} ${collapse ? "collapse" : ""}`}
103
+ title={this.cardTitle()}
104
+ >
105
+ {collapse ? null : this.props.children}
106
+ </Card>
107
+ );
108
+ }
67
109
  }
@@ -18,6 +18,7 @@ import Units from "../units";
18
18
  import { ProgramConfig, useLocale } from "../index";
19
19
  import { LockOutlined } from "@ant-design/icons";
20
20
  import DatePicker from "./date-picker";
21
+ import translate from "../locale/translate";
21
22
 
22
23
  const CheckboxGroup = Checkbox.Group;
23
24
  const RadioGroup = Radio.Group;
@@ -78,7 +79,7 @@ function getOptions(mstrucId) {
78
79
  parseInt(item.order) > 0 &&
79
80
  parseInt(item.order) < 10000
80
81
  ? item.order + "."
81
- : "") + item.title,
82
+ : "") + translate("${" + item.title + "}"),
82
83
  value: item.value,
83
84
  });
84
85
  });
@@ -125,7 +125,7 @@ class FixRightSubmitButtonBar extends React.PureComponent<
125
125
  key="btn"
126
126
  block
127
127
  >
128
- 保 存
128
+ {translate("${保存}")}
129
129
  </Button>
130
130
  </li>
131
131
  ) : (
@@ -131,7 +131,7 @@ class ActDtmplView extends React.PureComponent<
131
131
  className="hoverable pageHeader"
132
132
  >
133
133
  <h3>
134
- {title ? title : translate("${详情}")}
134
+ {translate("${" + (title ? title : "详情") + "}")}
135
135
  {dtmplConfig ? <ToolTipBar content={dtmplConfig.tip} /> : null}
136
136
  <div className="fr">
137
137
  {buttons &&
@@ -1,59 +1,74 @@
1
- import React from 'react'
2
- import {Col,Row,Descriptions} from 'antd';
3
- import {FieldConfig, FieldGroupConfig} from "../../tmpl/interface";
4
- import ViewControl from '../../controls/view-control';
5
-
1
+ import React from "react";
2
+ import { Col, Row, Descriptions } from "antd";
3
+ import { FieldConfig, FieldGroupConfig } from "../../tmpl/interface";
4
+ import ViewControl from "../../controls/view-control";
5
+ import { LocaleContext } from "../../locale/LocaleProvider";
6
6
 
7
7
  interface FieldViewGroupProps {
8
- serverKey?:string,
9
- fields: FieldConfig[],
10
- valueMap?: object,
11
- width?: number,
12
- };
8
+ serverKey?: string;
9
+ fields: FieldConfig[];
10
+ valueMap?: object;
11
+ width?: number;
12
+ }
13
13
 
14
14
  interface FieldViewGroupState {
15
- fileList: any,
16
- };
15
+ fileList: any;
16
+ }
17
17
 
18
- export default class FieldViewGroup extends React.PureComponent<FieldViewGroupProps, FieldViewGroupState> {
18
+ export default class FieldViewGroup extends React.PureComponent<
19
+ FieldViewGroupProps,
20
+ FieldViewGroupState
21
+ > {
22
+ constructor(props) {
23
+ super(props);
24
+ this.state = {
25
+ fileList: [],
26
+ };
27
+ }
28
+ static contextType = LocaleContext;
29
+ context: React.ContextType<typeof LocaleContext>;
19
30
 
20
- constructor(props) {
21
- super(props);
22
- this.state = {
23
- fileList: [],
24
- }
25
- }
26
-
27
- initViewList = () => {
28
- const {fields, valueMap,serverKey} = this.props
29
- const formItemList = [];
31
+ initViewList = () => {
32
+ const { fields, valueMap, serverKey } = this.props;
33
+ const { translate } = this.context;
34
+ const formItemList = [];
30
35
 
31
- if (fields.length > 0) {
32
- fields.forEach((item, index) => {
33
- const title = item.title;
34
- let fieldValue = valueMap?valueMap[item.id]:undefined;
35
- //fieldValue 没有值时不能为null 要为 undefined。antd input所限制
36
- fieldValue = fieldValue ? fieldValue : item.defaultValue ? item.defaultValue : undefined;
37
- const fieldKey = item.id + Math.random() * 100;
36
+ if (fields.length > 0) {
37
+ fields.forEach((item, index) => {
38
+ const title = item.title;
39
+ let fieldValue = valueMap ? valueMap[item.id] : undefined;
40
+ //fieldValue 没有值时不能为null 要为 undefined。antd input所限制
41
+ fieldValue = fieldValue
42
+ ? fieldValue
43
+ : item.defaultValue
44
+ ? item.defaultValue
45
+ : undefined;
46
+ const fieldKey = item.id + Math.random() * 100;
38
47
 
39
- if(item.extControlType !='hidden' && !item.hidden){
40
- const formItem = <Descriptions.Item label={item.title} span={item.colNum} key={index}
41
- className='labelcss'
42
- >
43
- <ViewControl serverKey={serverKey} holderType={'descriptions'} value={fieldValue} fieldConfig={item}/>
44
- </Descriptions.Item>
45
- formItemList.push(formItem);
46
- }
47
- });
48
+ if (item.extControlType != "hidden" && !item.hidden) {
49
+ const formItem = (
50
+ <Descriptions.Item
51
+ label={translate("${" + item.title + "}")}
52
+ span={item.colNum}
53
+ key={index}
54
+ className="labelcss"
55
+ >
56
+ <ViewControl
57
+ serverKey={serverKey}
58
+ holderType={"descriptions"}
59
+ value={fieldValue}
60
+ fieldConfig={item}
61
+ />
62
+ </Descriptions.Item>
63
+ );
64
+ formItemList.push(formItem);
48
65
  }
49
- return formItemList;
66
+ });
50
67
  }
68
+ return formItemList;
69
+ };
51
70
 
52
- render() {
53
- return (
54
- <Descriptions column={2}>
55
- {this.initViewList()}
56
- </Descriptions>
57
- )
58
- }
71
+ render() {
72
+ return <Descriptions column={2}>{this.initViewList()}</Descriptions>;
73
+ }
59
74
  }
@@ -183,7 +183,7 @@ const CriteriaForm: React.FC<CriteriaFormProps> = (props) => {
183
183
 
184
184
  let fieldValue = data ? data[drillingColIdsName] : dimensionColIds;
185
185
  let antdControlProps = {
186
- placeholder: translate("${请选择维度}"),
186
+ placeholder: translate("${请选择}${维度}"),
187
187
  disabled: false,
188
188
  value: fieldValue,
189
189
  style: { minWidth: 220, width: "100%" },
@@ -231,7 +231,7 @@ const CriteriaForm: React.FC<CriteriaFormProps> = (props) => {
231
231
  if (!hiddenCriteriaIds.includes(item.id)) {
232
232
  return (
233
233
  <FormItem
234
- label={item.title}
234
+ label={translate("${" + item.title + "}")}
235
235
  name={formItemName}
236
236
  key={item.id}
237
237
  tooltip={item.tip}
@@ -240,7 +240,7 @@ const CriteriaForm: React.FC<CriteriaFormProps> = (props) => {
240
240
  ? [
241
241
  {
242
242
  required: true,
243
- message: translate("${请选择}${" + item.title + "}"),
243
+ message: translate("${请选择}" + item.title),
244
244
  },
245
245
  ]
246
246
  : undefined
@@ -82,7 +82,7 @@ export default class FormItemGroup extends React.PureComponent<
82
82
 
83
83
  return (
84
84
  <FormItem
85
- label={item.title}
85
+ label={translate("${" + item.title + "}")}
86
86
  hidden={item.hidden}
87
87
  name={item[nameAttr]}
88
88
  key={item.id}
@@ -279,7 +279,7 @@ class MainPage extends React.PureComponent<MainPageProps, MainPageState> {
279
279
  collapsed={collapsed}
280
280
  >
281
281
  <SideBar
282
- title={sideBartitle}
282
+ title={translate("${" + sideBartitle + "}")}
283
283
  logo={sideBarLogo}
284
284
  blockMenu={this.findCurrentBlock()}
285
285
  currentL2MenuId={currentL2MenuId}
@@ -1,5 +1,5 @@
1
1
  import React, { CSSProperties } from "react";
2
- import { Col, Layout, Row, theme } from "antd";
2
+ import { Col, Layout, Menu, Row, theme } from "antd";
3
3
  import { MenuFoldOutlined, MenuUnfoldOutlined } from "@ant-design/icons";
4
4
  import "./index.css";
5
5
  import Block, { BlockProps } from "../menu/block";
@@ -25,7 +25,7 @@ const Header: React.FC<HeaderProps> = (props) => {
25
25
  "--antd-color-primary": token.colorPrimary,
26
26
  } as CSSProperties;
27
27
  return (
28
- <AntdHeader style={{ padding: 0, height: "auto" }}>
28
+ <AntdHeader style={{ padding: 0, height: "auto", minWidth: "1000px" }}>
29
29
  {/*<Row justify="space-around" align="middle" style={{'background':'#0f4da1',height:'100px'}}>*/}
30
30
  {/* <Col span={12}>*/}
31
31
  {/* <img style={{height:'80px'}} src={Logo}></img>*/}
@@ -49,7 +49,7 @@ const Header: React.FC<HeaderProps> = (props) => {
49
49
  </div>
50
50
  <Block {...props} activeColor={token.colorPrimary} />
51
51
  </Col>
52
- <Col span={2} style={{ width: "100%" }}>
52
+ <Col span={1} style={{ width: "100%" }}>
53
53
  <L2MenuQuickBar backgroudColor={token.colorPrimary}></L2MenuQuickBar>
54
54
  </Col>
55
55
  <Col span={1} style={{ width: "100%" }}>
@@ -57,7 +57,7 @@ const Header: React.FC<HeaderProps> = (props) => {
57
57
  backgroudColor={token.colorPrimary}
58
58
  ></L2MenuMessageBar>
59
59
  </Col>
60
- <Col span={1}>
60
+ <Col span={2}>
61
61
  <UserBar backgroudColor={token.colorPrimary}></UserBar>
62
62
  </Col>
63
63
  </Row>
@@ -0,0 +1,11 @@
1
+ .menu-item > div {
2
+ color: var(--antd-color-primary) !important;
3
+ }
4
+
5
+ .ant-menu > .ant-menu-submenu-selected {
6
+ background-color: var(--antd-color-primary) !important;
7
+ }
8
+
9
+ .ant-menu > .ant-menu-submenu-selected > div {
10
+ color: rgb(255, 255, 255) !important;
11
+ }
@@ -1,89 +1,149 @@
1
- import React, {CSSProperties} from "react";
2
- import { Dropdown, Menu} from 'antd';
3
- import {BlockMenu} from "../../tmpl/interface";
4
- import MenuRender from './menu-render';
5
-
6
-
7
- export interface BlockProps{
8
- blocks:BlockMenu[];
9
- currentBlockId?:string;
10
- currentL2MenuId?:string;
11
- activeColor?:string;
12
- }
13
- interface BlockState{
1
+ import React, { CSSProperties } from "react";
2
+ import { Dropdown, Menu, MenuProps } from "antd";
3
+ import { BlockMenu } from "../../tmpl/interface";
4
+ import MenuRender from "./menu-render";
5
+ import { LocaleContext } from "../../locale/LocaleProvider";
6
+ import "./block.less";
14
7
 
8
+ export interface BlockProps {
9
+ blocks: BlockMenu[];
10
+ currentBlockId?: string;
11
+ currentL2MenuId?: string;
12
+ activeColor?: string;
15
13
  }
14
+ interface BlockState {}
16
15
 
17
16
  class Block extends React.PureComponent<BlockProps, BlockState> {
17
+ static contextType = LocaleContext;
18
+ context: React.ContextType<typeof LocaleContext>;
19
+ constructor(props) {
20
+ super(props);
21
+ }
18
22
 
19
- constructor(props) {
20
- super(props);
21
- }
22
-
23
- getSubMenu = (blockMenu:BlockMenu)=>{
24
- return MenuRender.getMenu(blockMenu,null);
25
- }
23
+ getSubMenu = (blockMenu: BlockMenu) => {
24
+ return MenuRender.getMenu(blockMenu, null);
25
+ };
26
26
 
27
- findBlockId = (blocks:BlockMenu[],currentL2MenuId:string) => {
28
- let blockId:string=undefined;
29
- for(const block of blocks){
30
- if(block.l1Menus){
31
- for(const menul1 of block.l1Menus){
32
- for(const menul2 of menul1.l2Menus){
33
- if(menul2.id===currentL2MenuId){
34
- blockId=block.id;
35
- return blockId;
36
- }
37
- }
38
- }
39
- }else{
40
- for(const menul1 of block.items){
41
- for(const menul2 of menul1.items){
42
- if(menul2.id===currentL2MenuId){
43
- blockId=block.id;
44
- return blockId;
45
- }
46
- }
47
- }
27
+ findBlockId = (blocks: BlockMenu[], currentL2MenuId: string) => {
28
+ let blockId: string = undefined;
29
+ for (const block of blocks) {
30
+ if (block.l1Menus) {
31
+ for (const menul1 of block.l1Menus) {
32
+ for (const menul2 of menul1.l2Menus) {
33
+ if (menul2.id === currentL2MenuId) {
34
+ blockId = block.id;
35
+ return blockId;
48
36
  }
49
-
37
+ }
38
+ }
39
+ } else {
40
+ for (const menul1 of block.items) {
41
+ for (const menul2 of menul1.items) {
42
+ if (menul2.id === currentL2MenuId) {
43
+ blockId = block.id;
44
+ return blockId;
45
+ }
46
+ }
50
47
  }
51
- return blockId;
48
+ }
52
49
  }
50
+ return blockId;
51
+ };
53
52
 
54
- render(){
55
- const {currentBlockId,blocks,currentL2MenuId,activeColor}=this.props;
53
+ get computedBlocks() {
54
+ const { translate } = this.context;
55
+ const blocks: BlockMenu[] = JSON.parse(JSON.stringify(this.props.blocks));
56
56
 
57
- const syyy={'--header-block-active-bottom-color':activeColor?activeColor:"#1E90FF",'--header-top-active-background':activeColor?activeColor:"#1E90FF"} as CSSProperties
57
+ blocks &&
58
+ Array.isArray(blocks) &&
59
+ blocks.forEach((block) => {
60
+ block.title = translate("${" + block.title + "}");
58
61
 
59
- if(!blocks || blocks.length<1){
60
- return <></>;
61
- }
62
- let blockId=currentBlockId;
63
- if(currentL2MenuId && !blockId){
64
- blockId=this.findBlockId(blocks,currentL2MenuId);
65
- }
66
- if(!blockId){
67
- blockId=blocks.at(0).id;
68
- }
62
+ const dropdownMenu = block.items;
69
63
 
70
- return (
71
- blocks.map((item, index) => {
72
- return <div key={index}
73
- className={`${item.id == blockId ? "active" : ""} header-block`} style={syyy}>
74
- <Dropdown menu={{ items:this.getSubMenu(item) }}>
75
- <a className="dropdown-link"
76
- style={item.id == blockId?{color:'#fff'}:{color:activeColor}}
77
- rel="noopener noreferrer"
78
- >
79
- {item.title}
80
- </a>
81
- </Dropdown>
82
- </div>
83
- })
84
- );
64
+ dropdownMenu &&
65
+ Array.isArray(dropdownMenu) &&
66
+ dropdownMenu.forEach((menu) => {
67
+ menu.title = translate("${" + menu.title + "}");
68
+ });
69
+ });
70
+
71
+ return blocks;
72
+ }
73
+
74
+ get menuItems() {
75
+ const blocks = this.computedBlocks;
76
+ const items: MenuProps["items"] = [];
77
+
78
+ blocks.forEach((block) => {
79
+ const item: typeof items[0] = {
80
+ className: "menu-item",
81
+ label: block.title,
82
+ key: block.id,
83
+ children: this.getSubMenu(block),
84
+ };
85
+
86
+ items.push(item);
87
+ });
88
+
89
+ return items;
90
+ }
91
+
92
+ render() {
93
+ const { currentBlockId, blocks, currentL2MenuId, activeColor } = this.props;
94
+
95
+ const syyy = {
96
+ "--header-block-active-bottom-color": activeColor
97
+ ? activeColor
98
+ : "#1E90FF",
99
+ "--header-top-active-background": activeColor ? activeColor : "#1E90FF",
100
+ } as CSSProperties;
101
+
102
+ if (!blocks || blocks.length < 1) {
103
+ return <></>;
104
+ }
105
+ let blockId = currentBlockId;
106
+ if (currentL2MenuId && !blockId) {
107
+ blockId = this.findBlockId(blocks, currentL2MenuId);
85
108
  }
109
+ if (!blockId) {
110
+ blockId = blocks.at(0).id;
111
+ }
112
+
113
+ // return this.computedBlocks.map((item, index) => {
114
+ // return (
115
+ // <div
116
+ // key={index}
117
+ // className={`${item.id == blockId ? "active" : ""} header-block`}
118
+ // style={syyy}
119
+ // >
120
+ // <Dropdown menu={{ items: this.getSubMenu(item) }}>
121
+ // <a
122
+ // className="dropdown-link"
123
+ // style={
124
+ // item.id == blockId ? { color: "#fff" } : { color: activeColor }
125
+ // }
126
+ // rel="noopener noreferrer"
127
+ // >
128
+ // {item.title}
129
+ // </a>
130
+ // </Dropdown>
131
+ // </div>
132
+ // );
133
+ // });
86
134
 
135
+ return (
136
+ <Menu
137
+ mode="horizontal"
138
+ defaultSelectedKeys={[currentBlockId, currentL2MenuId]}
139
+ items={this.menuItems}
140
+ style={{
141
+ flex: 1,
142
+ minWidth: 0,
143
+ }}
144
+ />
145
+ );
146
+ }
87
147
  }
88
148
 
89
- export default Block;
149
+ export default Block;