aldehyde 0.2.445 → 0.2.447

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 (95) hide show
  1. package/lib/controls/file-view/index.js +1 -1
  2. package/lib/controls/file-view/index.js.map +1 -1
  3. package/lib/form/criteria-form.js +1 -1
  4. package/lib/form/criteria-form.js.map +1 -1
  5. package/lib/index.d.ts +2 -1
  6. package/lib/index.d.ts.map +1 -1
  7. package/lib/index.js +2 -1
  8. package/lib/index.js.map +1 -1
  9. package/lib/layout/menu/l2menu-quick-bar.d.ts.map +1 -1
  10. package/lib/layout/menu/l2menu-quick-bar.js +2 -1
  11. package/lib/layout/menu/l2menu-quick-bar.js.map +1 -1
  12. package/lib/layout2/components/search-menu.d.ts.map +1 -1
  13. package/lib/layout2/components/search-menu.js +8 -6
  14. package/lib/layout2/components/search-menu.js.map +1 -1
  15. package/lib/layout2/components/theme-button.d.ts.map +1 -1
  16. package/lib/layout2/components/theme-button.js +3 -1
  17. package/lib/layout2/components/theme-button.js.map +1 -1
  18. package/lib/layout2/tabs/tabs-layout.js +3 -3
  19. package/lib/layout2/tabs/tabs-layout.js.map +1 -1
  20. package/lib/layout3/components/tabs-layout.js +3 -3
  21. package/lib/layout3/components/tabs-layout.js.map +1 -1
  22. package/lib/layout3/css/header.less +12 -0
  23. package/lib/layout4/components/tabs-layout.js +3 -3
  24. package/lib/layout4/components/tabs-layout.js.map +1 -1
  25. package/lib/layout5/header.js +1 -1
  26. package/lib/layout5/header.js.map +1 -1
  27. package/lib/list/vertical-list/item.js +1 -1
  28. package/lib/list/vertical-list/item.js.map +1 -1
  29. package/lib/locale/LocaleButton.js +1 -1
  30. package/lib/locale/LocaleButton.js.map +1 -1
  31. package/lib/locale/LocaleProvider.d.ts +6 -2
  32. package/lib/locale/LocaleProvider.d.ts.map +1 -1
  33. package/lib/locale/LocaleProvider.js +32 -11
  34. package/lib/locale/LocaleProvider.js.map +1 -1
  35. package/lib/locale/langMp.d.ts +1 -1
  36. package/lib/locale/langMp.d.ts.map +1 -1
  37. package/lib/locale/useLocale.d.ts +1 -1
  38. package/lib/lowcode-components/line-bar-chart/index.d.ts +2 -0
  39. package/lib/lowcode-components/line-bar-chart/index.d.ts.map +1 -1
  40. package/lib/lowcode-components/line-bar-chart/index.js +14 -13
  41. package/lib/lowcode-components/line-bar-chart/index.js.map +1 -1
  42. package/lib/lowcode-components/line-chart/index.d.ts +2 -0
  43. package/lib/lowcode-components/line-chart/index.d.ts.map +1 -1
  44. package/lib/lowcode-components/line-chart/index.js +14 -13
  45. package/lib/lowcode-components/line-chart/index.js.map +1 -1
  46. package/lib/module/ttmpl-tree.d.ts +9 -0
  47. package/lib/module/ttmpl-tree.d.ts.map +1 -0
  48. package/lib/module/ttmpl-tree.js +42 -0
  49. package/lib/module/ttmpl-tree.js.map +1 -0
  50. package/lib/table/page-config-button.js +1 -1
  51. package/lib/table/page-config-button.js.map +1 -1
  52. package/lib/tmpl/interface.d.ts +2 -0
  53. package/lib/tmpl/interface.d.ts.map +1 -1
  54. package/lib/units/index.d.ts.map +1 -1
  55. package/lib/units/index.js +11 -3
  56. package/lib/units/index.js.map +1 -1
  57. package/lib/welcome/components/menu-card.d.ts.map +1 -1
  58. package/lib/welcome/components/menu-card.js +5 -3
  59. package/lib/welcome/components/menu-card.js.map +1 -1
  60. package/lib/welcome/components/page-card.js +1 -1
  61. package/lib/welcome/components/page-card.js.map +1 -1
  62. package/lib/welcome/components/quick-entrance.js +1 -1
  63. package/lib/welcome/components/quick-entrance.js.map +1 -1
  64. package/lib/welcome/components/user-menus.js +4 -4
  65. package/lib/welcome/components/user-menus.js.map +1 -1
  66. package/lib/welcome/components/workbench.d.ts.map +1 -1
  67. package/lib/welcome/components/workbench.js +3 -1
  68. package/lib/welcome/components/workbench.js.map +1 -1
  69. package/package.json +1 -1
  70. package/src/aldehyde/controls/file-view/index.tsx +1 -1
  71. package/src/aldehyde/form/criteria-form.tsx +1 -1
  72. package/src/aldehyde/index.tsx +3 -1
  73. package/src/aldehyde/layout/menu/l2menu-quick-bar.tsx +2 -1
  74. package/src/aldehyde/layout2/components/search-menu.tsx +9 -6
  75. package/src/aldehyde/layout2/components/theme-button.tsx +3 -1
  76. package/src/aldehyde/layout2/tabs/tabs-layout.tsx +3 -3
  77. package/src/aldehyde/layout3/components/tabs-layout.tsx +3 -3
  78. package/src/aldehyde/layout3/css/header.less +12 -0
  79. package/src/aldehyde/layout4/components/tabs-layout.tsx +3 -3
  80. package/src/aldehyde/layout5/header.tsx +1 -1
  81. package/src/aldehyde/list/vertical-list/item.tsx +1 -1
  82. package/src/aldehyde/locale/LocaleButton.tsx +1 -1
  83. package/src/aldehyde/locale/LocaleProvider.tsx +37 -24
  84. package/src/aldehyde/locale/langMp.ts +1 -1
  85. package/src/aldehyde/lowcode-components/line-bar-chart/index.tsx +17 -13
  86. package/src/aldehyde/lowcode-components/line-chart/index.tsx +17 -13
  87. package/src/aldehyde/module/ttmpl-tree.tsx +48 -0
  88. package/src/aldehyde/table/page-config-button.tsx +1 -1
  89. package/src/aldehyde/tmpl/interface.tsx +2 -0
  90. package/src/aldehyde/units/index.tsx +10 -3
  91. package/src/aldehyde/welcome/components/menu-card.tsx +5 -3
  92. package/src/aldehyde/welcome/components/page-card.tsx +1 -1
  93. package/src/aldehyde/welcome/components/quick-entrance.tsx +1 -1
  94. package/src/aldehyde/welcome/components/user-menus.tsx +4 -4
  95. package/src/aldehyde/welcome/components/workbench.tsx +3 -1
@@ -16,6 +16,7 @@ import HcserviceV3 from "../../tmpl/hcservice-v3";
16
16
  import HCDataSource from "../../tmpl/hc-data-source";
17
17
  import IconFont from "../../icon/aliIcon";
18
18
  import { handleMenuItemUrl } from "../../layout2/page";
19
+ import { useLocale } from "../../locale/useLocale";
19
20
  import "./workbench.less";
20
21
  const { useToken } = theme;
21
22
  const Workbench = (props) => {
@@ -26,6 +27,7 @@ const Workbench = (props) => {
26
27
  const rowRef = useRef(null);
27
28
  const navigate = useNavigate();
28
29
  const { token } = useToken();
30
+ const { translate } = useLocale();
29
31
  const getL2Menus = () => __awaiter(void 0, void 0, void 0, function* () {
30
32
  var _a;
31
33
  let temData = yield HCDataSource.fastMenu("QuickPanel");
@@ -97,7 +99,7 @@ const Workbench = (props) => {
97
99
  React.createElement("div", { className: "stat-card", style: { borderColor: `${token.colorBorder}CC`, backgroundColor: token.colorBgContainer }, onClick: () => navigate(`/${item.url}`) },
98
100
  React.createElement("div", { className: "bg-gradient", style: { background: `radial-gradient(circle, ${iconColor}1A 0%, transparent 70%)` } }),
99
101
  React.createElement("div", null,
100
- React.createElement("p", { className: "card-title" }, l2Menu.title),
102
+ React.createElement("p", { className: "card-title" }, translate("${" + l2Menu.title + "}")),
101
103
  React.createElement("p", { className: "card-count", style: { color: iconColor } }, l2Menu.count || 0)),
102
104
  React.createElement("div", { className: "icon-wrapper", style: { color: iconColor, background: `${iconColor}1A` } },
103
105
  React.createElement("div", { className: "icon-animated" }, renderIcon)))));
@@ -1 +1 @@
1
- {"version":3,"file":"workbench.js","sourceRoot":"","sources":["../../../../../src/aldehyde/welcome/components/workbench.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workbench.js","sourceRoot":"","sources":["../../../../../src/aldehyde/welcome/components/workbench.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aldehyde",
3
- "version": "0.2.445",
3
+ "version": "0.2.447",
4
4
  "author": "cosmicparticle",
5
5
  "main": "lib/index.js",
6
6
  "module": "src/aldehyde/index.txs",
@@ -59,7 +59,7 @@ export default class FileView extends React.PureComponent<FileViewProps, FileVie
59
59
 
60
60
  componentDidUpdate(prevProps, prevState, snapshot) {
61
61
  const { value } = this.props;
62
- const { value: preValue } = this.props;
62
+ const { value: preValue } = prevProps;
63
63
  if (value != preValue) {
64
64
  this.loadData();
65
65
  }
@@ -458,7 +458,7 @@ const CriteriaForm: React.FC<CriteriaFormProps> = (props) => {
458
458
  ? [
459
459
  {
460
460
  required: true,
461
- message: translate("${请选择}" + item.title),
461
+ message: translate("${请选择}" + "${" + item.title + "}"),
462
462
  },
463
463
  ]
464
464
  : undefined
@@ -148,6 +148,7 @@ import SplitViewLtmplRoute from "./routable/splitview-ltmpl-route";
148
148
  import SsoLogin from "./sso-Login";
149
149
 
150
150
  import NavigationTree from "./tree/navigation-tree";
151
+ import TtmplTree from "./module/ttmpl-tree";
151
152
 
152
153
  // 图编辑、渲染功能
153
154
  import Edit2D from "./controls/2dEditor/2dEditor";
@@ -214,5 +215,6 @@ export {
214
215
  SsoLogin,
215
216
  NavigationTree,
216
217
  Edit2D,
217
- View2D
218
+ View2D,
219
+ TtmplTree
218
220
  };
@@ -78,6 +78,7 @@ class L2MenuQuickBar extends React.PureComponent<
78
78
 
79
79
  renderQuickBar = (quickBars: QuickBar[]) => {
80
80
  const { backgroudColor, style = {} } = this.props;
81
+ const { translate } = this.context;
81
82
  let total: number = 0;
82
83
  const syyy: CSSProperties = {
83
84
  "--message-bar-backgroupd": backgroudColor,
@@ -94,7 +95,7 @@ class L2MenuQuickBar extends React.PureComponent<
94
95
  <span onClick={() => this.showDraw(quickBar.l2Menu.id)}>
95
96
  <Space>
96
97
  {renderIcon}
97
- {quickBar.l2Menu.title}
98
+ {translate("${" + quickBar.l2Menu.title + "}")}
98
99
  </Space>
99
100
  </span>
100
101
  </Menu.Item>
@@ -3,15 +3,17 @@ import { Button, ButtonProps, Popover, TreeSelect } from "antd";
3
3
  import { SearchOutlined } from "@ant-design/icons";
4
4
  import { useNavigate } from "react-router-dom";
5
5
  import { MenuType } from "../type/layout-type";
6
+ import { useLocale } from "../../locale/useLocale";
6
7
 
7
- const handleMenu = (arr: MenuType[]) => {
8
+ const handleMenu = (arr: MenuType[], translate: any) => {
8
9
  return arr.map(item => {
9
10
  const newItem = {
10
11
  ...item,
11
- value: item.id
12
+ value: item.id,
13
+ label: translate("${" + item.label + "}")
12
14
  };
13
15
  if (item.children && Array.isArray(item.children) && item.children.length > 0) {
14
- newItem.children = handleMenu(item.children);
16
+ newItem.children = handleMenu(item.children, translate);
15
17
  newItem.url = newItem.children[0].url; // 存在子菜单时,url 为第一个子菜单的 url
16
18
  }
17
19
  return newItem;
@@ -24,15 +26,16 @@ interface Props extends ButtonProps {
24
26
 
25
27
  const Index = (props: Props) => {
26
28
  const { menuList } = props;
29
+ const { translate, getLocale } = useLocale();
27
30
  const [menu, setMenu] = useState<MenuType[]>([]);
28
31
  const [searchValue, setSearchValue] = useState<string>();
29
32
  const [selectInit, setSelectInit] = useState<boolean>(true); // 解决搜索框初始化设置searchValue,onSearch返回空value的问题
30
33
  const navigate = useNavigate();
31
34
 
32
35
  useEffect(() => {
33
- const newMenu = handleMenu(menuList);
36
+ const newMenu = handleMenu(menuList, translate);
34
37
  setMenu(newMenu);
35
- }, [menuList]);
38
+ }, [menuList, getLocale()]);
36
39
 
37
40
  const handleRouter = (value: string, node: MenuType) => {
38
41
  if (value) {
@@ -47,7 +50,7 @@ const Index = (props: Props) => {
47
50
  const renderMenu = <TreeSelect
48
51
  style={{ width: 200 }}
49
52
  showSearch
50
- placeholder="请输入搜索菜单"
53
+ placeholder={translate("${请输入}")}
51
54
  treeNodeFilterProp="label"
52
55
  treeNodeLabelProp="label"
53
56
  allowClear
@@ -4,6 +4,7 @@ import { useSessionStorageState } from "ahooks";
4
4
  import AliIcon from "../../icon/aliIcon";
5
5
  import { KeepAliveTab } from "../../hooks/use-tabs";
6
6
  import ProgramConfig from "../../units";
7
+ import { useLocale } from "../../locale/useLocale";
7
8
 
8
9
  const { useToken } = theme;
9
10
 
@@ -21,6 +22,7 @@ const ThemeButton = (props: Props) => {
21
22
  const [version, setVersion] = useState<string>();
22
23
  const [themes, setThemes] = useState<{ label: string, value: string }[]>([]);
23
24
  const [keepAliveTabs, setKeepAliveTabs] = useSessionStorageState<KeepAliveTab[]>('keepAliveTabs', { defaultValue: [] });
25
+ const { translate } = useLocale();
24
26
 
25
27
  const getThemeConfig = async () => {
26
28
  const themeConfig = await ProgramConfig.getThemeConfig();
@@ -47,7 +49,7 @@ const ThemeButton = (props: Props) => {
47
49
  const items: MenuProps["items"] = useMemo(() => themes.map((item) => ({
48
50
  label: (
49
51
  <span style={version === item.value ? { color: token.colorPrimary } : {}}>
50
- {item.label}
52
+ {translate("${" + item.label + "}")}
51
53
  </span>
52
54
  ),
53
55
  key: item.value,
@@ -18,7 +18,7 @@ interface Props {
18
18
 
19
19
  const TabsLayout = (props: Props) => {
20
20
  const { menuList } = props;
21
- const { translate } = useLocale();
21
+ const { translate, getLocale } = useLocale();
22
22
  const { activeTabRoutePath, closeTab, refreshTab, closeOtherTab, tabs, } = useContext(KeepAliveTabContext);
23
23
 
24
24
  const getIcon = (icon?: string): React.ReactElement | undefined => {
@@ -73,7 +73,7 @@ const TabsLayout = (props: Props) => {
73
73
  </div>
74
74
  </Dropdown>
75
75
  )
76
- }, [menuItems]);
76
+ }, [menuItems, getLocale()]);
77
77
 
78
78
  const tabItems = useMemo(() => {
79
79
  if (!menuList.length) { // 无菜单不显示
@@ -101,7 +101,7 @@ const TabsLayout = (props: Props) => {
101
101
  closable: tabs.length > 1, // 剩最后一个就不能删除了
102
102
  }
103
103
  })
104
- }, [tabs, menuList]);
104
+ }, [tabs, menuList, getLocale()]);
105
105
  //let tabItems=tabItemsf();
106
106
 
107
107
  let navigate = useNavigate();
@@ -22,7 +22,7 @@ interface Props {
22
22
 
23
23
  const TabsLayout = (props: Props) => {
24
24
  const { menuList } = props;
25
- const { translate } = useLocale();
25
+ const { translate, getLocale } = useLocale();
26
26
  const navigate = useNavigate();
27
27
  const { activeTabRoutePath, closeTab, refreshTab, closeOtherTab, tabs = [] } = useContext(KeepAliveTabContext);
28
28
 
@@ -63,7 +63,7 @@ const TabsLayout = (props: Props) => {
63
63
  </div>
64
64
  </Dropdown >
65
65
  )
66
- }, [menuItems]);
66
+ }, [menuItems, getLocale()]);
67
67
 
68
68
  const tabItems = useMemo(() => {
69
69
  if (!menuList.length) { // 无菜单不显示
@@ -83,7 +83,7 @@ const TabsLayout = (props: Props) => {
83
83
  ),
84
84
  closable: tabs.length > 1, // 剩最后一个就不能删除了
85
85
  }))
86
- }, [tabs, menuList]);
86
+ }, [tabs, menuList, getLocale()]);
87
87
 
88
88
  const onTabsChange = useCallback((tabKey: string) => {
89
89
  const tab = tabs.find(r => r.routePath === tabKey);
@@ -158,6 +158,7 @@
158
158
  border: 1px solid;
159
159
  background-clip: padding-box;
160
160
  background: linear-gradient(180deg, #203c51, #02243e);
161
+ padding: 0 4px;
161
162
  }
162
163
 
163
164
  .menu-item-border-sel {
@@ -166,6 +167,17 @@
166
167
  color: #C4E8FF !important;
167
168
  font-weight: 700 !important;
168
169
  }
170
+
171
+ .menu-item-border-sel>.ant-space,
172
+ .menu-item-border>.ant-space {
173
+ max-width: stretch;
174
+
175
+ .ant-space-item:nth-of-type(2) {
176
+ overflow: hidden;
177
+ text-overflow: ellipsis;
178
+ white-space: nowrap;
179
+ }
180
+ }
169
181
  }
170
182
 
171
183
  .menu-item::before {
@@ -21,7 +21,7 @@ interface Props {
21
21
 
22
22
  const TabsLayout = (props: Props) => {
23
23
  const { menuList } = props;
24
- const { translate } = useLocale();
24
+ const { translate, getLocale } = useLocale();
25
25
  const navigate = useNavigate();
26
26
  const { activeTabRoutePath, closeTab, refreshTab, closeOtherTab, tabs = [] } = useContext(KeepAliveTabContext);
27
27
 
@@ -62,7 +62,7 @@ const TabsLayout = (props: Props) => {
62
62
  </div>
63
63
  </Dropdown >
64
64
  )
65
- }, [menuItems]);
65
+ }, [menuItems, getLocale()]);
66
66
 
67
67
  const tabItems = useMemo(() => {
68
68
  if (!menuList.length) { // 无菜单不显示
@@ -82,7 +82,7 @@ const TabsLayout = (props: Props) => {
82
82
  ),
83
83
  closable: tabs.length > 1, // 剩最后一个就不能删除了
84
84
  }))
85
- }, [tabs, menuList]);
85
+ }, [tabs, menuList, getLocale()]);
86
86
 
87
87
  const onTabsChange = useCallback((tabKey: string) => {
88
88
  const tab = tabs.find(r => r.routePath === tabKey);
@@ -143,7 +143,7 @@ const Header: React.FC<HeaderPropsType> = ({ menuList, themeConfig }) => {
143
143
  const breadcrumbItems = useMemo(() => {
144
144
  const temData = handleBreadcrumbItems(menuList, []);
145
145
  return temData || [{ title: <NavLink to={pathname} target="_self">{translate("${首页}")}</NavLink> }];
146
- }, [menuList, pathname]);
146
+ }, [menuList, pathname, getLocale()]);
147
147
 
148
148
  const toolbarStyle: CSSProperties = {
149
149
  width: "100%",
@@ -111,7 +111,7 @@ const Index = (props: Props) => {
111
111
  <Space size="large">
112
112
  {temData["cardShowCols"].map((col, index) =>
113
113
  <div className="card-show-item" key={index}>
114
- <div className="title">{col.title}:</div>
114
+ <div className="title">{translate("${" + col.title + "}")}:</div>
115
115
  <div className="element">{(col.value || col.value === 0) ? col.element : "-"}</div>
116
116
  </div>)}
117
117
  </Space> :
@@ -31,7 +31,7 @@ const LocaleButton = (props: Props) => {
31
31
 
32
32
  items.unshift({
33
33
  label: (
34
- <span style={getLocale() === "zh" ? { color: token.colorPrimary } : {}}>
34
+ <span style={(!getLocale() || getLocale() === "zh") ? { color: token.colorPrimary } : {}}>
35
35
  中文
36
36
  </span>
37
37
  ),
@@ -70,24 +70,20 @@ const getLocaleWithServer = async (lang: string, serverKey?: string) => {
70
70
  return {};
71
71
  };
72
72
 
73
- export const LocaleProvider = ({
74
- serverKey = "",
75
- children,
76
- }: {
73
+ interface Props {
77
74
  serverKey?: string | string[];
78
75
  children: ReactNode;
79
- }) => {
76
+ languages?: string[];
77
+ defaultLanguage?: LocaleType
78
+ }
79
+
80
+ export const LocaleProvider = (props: Props) => {
80
81
  const { navigatorLanguage } = useNavigatorLanguage();
81
- const localeStorageLang: LocaleType = window.localStorage.getItem(
82
- "locale"
83
- ) as LocaleType;
84
- const localeStorageLangPkg: object = JSON.parse(
85
- window.localStorage.getItem("langPkg")
86
- );
82
+ const { serverKey = "", children, languages = [], defaultLanguage } = props;
83
+ const localeStorageLang: LocaleType = window.localStorage.getItem("locale") as LocaleType;
84
+ const localeStorageLangPkg: object = JSON.parse(window.localStorage.getItem("langPkg"));
87
85
 
88
- const [locale, setLocale] = useState<LocaleType>(
89
- localeStorageLang ? localeStorageLang : getLangWithLangMp(navigatorLanguage)
90
- );
86
+ const [locale, setLocale] = useState<LocaleType>(localeStorageLang);
91
87
 
92
88
  const [siderCollapsed, setSiderCollapsed] = useState<boolean>(false);
93
89
 
@@ -140,18 +136,35 @@ export const LocaleProvider = ({
140
136
  };
141
137
 
142
138
  useEffect(() => {
143
- if (!Array.isArray(serverKey)) serverKey = [...new Set(["", serverKey])];
144
- getAllLocale([...new Set(["", ...serverKey])]);
145
- // 获取所有可以配置的语言
146
- HcserviceV3.getAllLang().then((res) => {
147
- if (res.status === "success") {
148
- setAvailableLang(
149
- res.languages ? res.languages.map((i) => getLangWithLangMp(i)) : []
150
- );
151
- }
152
- });
139
+ if (locale) {
140
+ let temServerKey = serverKey;
141
+ if (!Array.isArray(serverKey)) temServerKey = [...new Set(["", serverKey])];
142
+ getAllLocale([...new Set(["", ...temServerKey])]);
143
+ }
153
144
  }, [locale]);
154
145
 
146
+ useEffect(() => {
147
+ // 使用主题中配置支持语言(主题未配置,则默认返回的后端配置的语言)
148
+ if ("languages" in props) { // 判断props是否有传参languages
149
+ setAvailableLang(languages?.filter(r => r !== "zh")?.map((i) => getLangWithLangMp(i)) || []);
150
+ } else {
151
+ // 兼容旧版本语言获取
152
+ HcserviceV3.getAllLang().then((res) => {
153
+ if (res.status === "success") {
154
+ setAvailableLang(res.languages ? res.languages.map((i) => getLangWithLangMp(i)) : []);
155
+ }
156
+ });
157
+ }
158
+ }, [languages?.length]);
159
+
160
+ useEffect(() => {
161
+ if ("defaultLanguage" in props && !locale) { // 判断props是否传参defaultLanguage
162
+ setLocale(defaultLanguage); // 存在defaultLanguage且无本地缓存,设置defaultLanguage
163
+ } else {
164
+ setLocale(localeStorageLang || getLangWithLangMp(navigatorLanguage))
165
+ }
166
+ }, [defaultLanguage]);
167
+
155
168
  useEffect(() => {
156
169
  window.localStorage.setItem("langPkg", JSON.stringify(langPkg));
157
170
  }, [langPkg]);
@@ -4,7 +4,7 @@ import enUS from "antd/locale/en_US";
4
4
  import ptPT from 'antd/locale/pt_PT';
5
5
  import ruRU from 'antd/locale/ru_RU';
6
6
 
7
- export type LocaleType = "zh" | "en" | "fr" | "pt" | "ru";
7
+ export type LocaleType = "zh" | "en" | "fr" | "pt" | "ru" | string;
8
8
 
9
9
  export const langMp = {
10
10
  fr: ["fra", "fr-FR"],
@@ -50,8 +50,8 @@ const legends = {
50
50
  rightBottom: { right: 5, bottom: 0 },
51
51
  };
52
52
 
53
- // 处理数据格式
54
- const handleData = (data: { config: { [key: string]: string }, value: { [key: string]: any }[] }[]) => {
53
+ // 处理数据格式 nullSetZero(是否空值置0)
54
+ const handleData = (data: { config: { [key: string]: string }, value: { [key: string]: any }[] }[], nullSetZero?: boolean) => {
55
55
  if (!data?.length) {
56
56
  return [];
57
57
  }
@@ -63,10 +63,10 @@ const handleData = (data: { config: { [key: string]: string }, value: { [key: st
63
63
  name: config.d1,
64
64
  data: vNames.map((r) => ({
65
65
  name: config[r],
66
- data: value.map((v) => [v["d1"], v[r]]),
66
+ data: value.map((v) => [v["d1"], nullSetZero ? (v[r] || 0) : v[r]]),
67
67
  }))
68
68
  } : {
69
- data: value.map((r, index) => ({ name: `数值${index || ""}`, data: vNames.map(v => [config[v], r[v]]) }))
69
+ data: value.map((r, index) => ({ name: `数值${index || ""}`, data: vNames.map(v => [config[v], nullSetZero ? (r[v] || 0) : r[v]]) }))
70
70
  };
71
71
  });
72
72
  return temData[0]?.data || [];
@@ -90,6 +90,8 @@ export interface ComponentStyle {
90
90
  renderer?: "canvas" | "svg";
91
91
  barMaxWidth?: number; //柱状图最大宽度
92
92
  dataZoom?: boolean;
93
+ connectNulls?: boolean; // 是否连接空值
94
+ nullSetZero?: boolean; // 空值是否置0
93
95
  }
94
96
 
95
97
  export interface ComponentProps {
@@ -129,11 +131,12 @@ const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>
129
131
  // 全局初始化请求数据处理
130
132
  const handleInitData = (val: DataConfigProps) => {
131
133
  if (val.sourceType === "sourceId" && val.isInit && val.initData) {
132
- const { config, value } = val.initData;
133
- const temData = handleData(value);
134
+ const { config: dataConfig, value } = val.initData;
135
+ const { nullSetZero } = config || {};
136
+ const temData = handleData(value, nullSetZero);
134
137
  setData(temData);
135
- if (config?.requestMode === "polling") {
136
- pollingIntervalRef.current = setInterval(() => { getData() }, config?.pollingInterval || 60000);
138
+ if (dataConfig?.requestMode === "polling") {
139
+ pollingIntervalRef.current = setInterval(() => { getData() }, dataConfig?.pollingInterval || 60000);
137
140
  }
138
141
  }
139
142
  }
@@ -171,13 +174,13 @@ const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>
171
174
 
172
175
  // 请求数据
173
176
  const getData = async (params?: object) => {
177
+ const { nullSetZero } = config || {};
174
178
  setLoading(true);
175
179
  const { data } = await HydrocarbonService.requestChartData(null, dataConfig?.sourceId, params) || {};
176
180
  setLoading(false);
177
- const { config, value } = data || {};
178
- const temData = handleData(value);
181
+ const temData = handleData(data?.value, nullSetZero);
179
182
  setData(temData);
180
- return config;
183
+ return data?.config;
181
184
  };
182
185
 
183
186
  // 初始化请求数据
@@ -225,7 +228,7 @@ const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>
225
228
  }, [searchParams, initSearchParams]);
226
229
 
227
230
  const renderChart = () => {
228
- const { grid, legend, tooltip, color, xAxis, yAxis, smooth, lineStyle, step, isArea, isGradient, areaStyle, barMaxWidth, symbol, dataZoom } = config;
231
+ const { grid, legend, tooltip, color, xAxis, yAxis, smooth, lineStyle, step, isArea, isGradient, areaStyle, barMaxWidth, symbol, dataZoom, connectNulls } = config;
229
232
  const option = _.cloneDeep(defOption);
230
233
  // 编辑态无数据显示默认数据
231
234
  const temData = isDesignMode && !data?.length ? option.series : data;
@@ -250,7 +253,8 @@ const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>
250
253
  { offset: 0, color: color[index] },
251
254
  { offset: 1, color: 'rgba(0, 0, 0, 0)' }
252
255
  ]) : color[index]
253
- } : undefined
256
+ } : undefined,
257
+ connectNulls
254
258
  } : {
255
259
  type: "bar",
256
260
  ...r,
@@ -45,8 +45,8 @@ const legends = {
45
45
  rightBottom: { right: 5, bottom: 0 },
46
46
  };
47
47
 
48
- // 处理数据格式
49
- const handleData = (data: { config: { [key: string]: string }, value: { [key: string]: any }[] }[]) => {
48
+ // 处理数据格式 nullSetZero(是否空值置0)
49
+ const handleData = (data: { config: { [key: string]: string }, value: { [key: string]: any }[] }[], nullSetZero?: boolean) => {
50
50
  if (!data?.length) {
51
51
  return [];
52
52
  }
@@ -59,10 +59,10 @@ const handleData = (data: { config: { [key: string]: string }, value: { [key: st
59
59
  name: config.d1,
60
60
  data: vNames.map((r) => ({
61
61
  name: config[r],
62
- data: value.map((v) => [v["d1"], v[r]]),
62
+ data: value.map((v) => [v["d1"], nullSetZero ? (v[r] || 0) : v[r]]),
63
63
  }))
64
64
  } : {
65
- data: value.map((r, index) => ({ name: `数值${index || ""}`, data: vNames.map(v => [config[v], r[v]]) }))
65
+ data: value.map((r, index) => ({ name: `数值${index || ""}`, data: vNames.map(v => [config[v], nullSetZero ? (r[v] || 0) : r[v]]) }))
66
66
  };
67
67
  });
68
68
  return temData[0]?.data || [];
@@ -85,6 +85,8 @@ export interface ComponentStyle {
85
85
  areaStyle?: { opacity: number }; // 面积图样式
86
86
  renderer?: "canvas" | "svg";
87
87
  dataZoom?: boolean;
88
+ connectNulls?: boolean; // 是否连接空值
89
+ nullSetZero?: boolean; // 空值是否置0
88
90
  }
89
91
 
90
92
  export interface ComponentProps {
@@ -124,11 +126,12 @@ const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>
124
126
  // 全局初始化请求数据处理
125
127
  const handleInitData = (val: DataConfigProps) => {
126
128
  if (val.sourceType === "sourceId" && val.isInit && val.initData) {
127
- const { config, value } = val.initData;
128
- const temData = handleData(value);
129
+ const { config: dataConfig, value } = val.initData;
130
+ const { nullSetZero } = config || {};
131
+ const temData = handleData(value, nullSetZero);
129
132
  setData(temData);
130
- if (config?.requestMode === "polling") {
131
- pollingIntervalRef.current = setInterval(() => { getData() }, config?.pollingInterval || 60000);
133
+ if (dataConfig?.requestMode === "polling") {
134
+ pollingIntervalRef.current = setInterval(() => { getData() }, dataConfig?.pollingInterval || 60000);
132
135
  }
133
136
  }
134
137
  }
@@ -166,13 +169,13 @@ const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>
166
169
 
167
170
  // 请求数据
168
171
  const getData = async (params?: object) => {
172
+ const { nullSetZero } = config || {};
169
173
  setLoading(true);
170
174
  const { data } = await HydrocarbonService.requestChartData(null, dataConfig?.sourceId, params) || {};
171
175
  setLoading(false);
172
- const { config, value } = data || {};
173
- const temData = handleData(value);
176
+ const temData = handleData(data?.value, nullSetZero);
174
177
  setData(temData);
175
- return config;
178
+ return data?.config;
176
179
  };
177
180
 
178
181
  // 初始化请求数据
@@ -220,7 +223,7 @@ const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>
220
223
  }, [searchParams, initSearchParams]);
221
224
 
222
225
  const renderChart = () => {
223
- const { grid, legend, tooltip, color, xAxis, yAxis, smooth, lineStyle, step, isArea, isGradient, areaStyle, dataZoom, symbol: { itemStyle, ...symbol } } = config;
226
+ const { grid, legend, tooltip, color, xAxis, yAxis, smooth, connectNulls, lineStyle, step, isArea, isGradient, areaStyle, dataZoom, symbol: { itemStyle, ...symbol } } = config;
224
227
  const option = _.cloneDeep(defOption);
225
228
  // 编辑态无数据显示默认数据
226
229
  const temData = isDesignMode && !data?.length ? option.series : data;
@@ -244,7 +247,8 @@ const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>
244
247
  { offset: 0, color: color[index] || color[0] },
245
248
  { offset: 1, color: 'rgba(0, 0, 0, 0)' }
246
249
  ]) : color[index]
247
- } : undefined
250
+ } : undefined,
251
+ connectNulls
248
252
  }));
249
253
  chart.current.setOption(option, true);
250
254
  };
@@ -0,0 +1,48 @@
1
+ import React, { useState, useEffect } from "react";
2
+ import { RouterCompProps, TtmplConfig } from "../tmpl/interface";
3
+ import HCDataSource from "../tmpl/hc-data-source";
4
+ import ActTree from "../tree/act-tree";
5
+ import { Card, message } from "antd";
6
+
7
+ export interface TtmplTreeProps extends RouterCompProps {
8
+ treeTop?: number;
9
+ sourceId: string;
10
+ }
11
+
12
+ const TtmplTree: React.FC<TtmplTreeProps> = (props) => {
13
+ const { treeTop, sourceId } = props;
14
+ const [ttmplConfig, setTtmplConfig] = useState<TtmplConfig>();
15
+
16
+ const loadData = async () => {
17
+ try {
18
+ let config: TtmplConfig = await HCDataSource.requestTtmplConfig(null, sourceId);
19
+ if (config.type === "1M") {
20
+ message.error("不支持的配置树。请联系管理员!");
21
+ } else {
22
+ setTtmplConfig({ ...config });
23
+ }
24
+ } catch (error) {
25
+ console.error("Failed to load ttmpl config", error);
26
+ }
27
+ };
28
+
29
+ useEffect(() => {
30
+ if (sourceId) {
31
+ loadData();
32
+ }
33
+ }, [sourceId]);
34
+
35
+ if (!ttmplConfig) {
36
+ return <Card loading={true} />;
37
+ }
38
+
39
+ return (
40
+ <ActTree
41
+ key={ttmplConfig?.id}
42
+ top={treeTop}
43
+ ttmplConfig={ttmplConfig}
44
+ />
45
+ );
46
+ };
47
+
48
+ export default TtmplTree;
@@ -180,7 +180,7 @@ const Index = (props: Props) => {
180
180
  <Form.Item style={{ margin: 0, textAlign: "right" }}><Button type="primary" htmlType="submit">{translate("${提交}")}</Button></Form.Item>
181
181
  </Form>;
182
182
 
183
- return <Dropdown trigger={["click"]} menu={{ items: [renderMenuItem({ key: "default", name: "默认" }), ...menus.map(r => renderMenuItem({ ...r, key: r.recordCode }))].filter(Boolean) }} popupRender={(menu) => (
183
+ return <Dropdown trigger={["click"]} menu={{ items: [renderMenuItem({ key: "default", name: translate("${默认}") }), ...menus.map(r => renderMenuItem({ ...r, key: r.recordCode }))].filter(Boolean) }} popupRender={(menu) => (
184
184
  <div style={contentStyle} ref={menuRef}>
185
185
  {React.cloneElement(menu as any, { style: { boxShadow: 'none' } },)}
186
186
  <Divider style={{ margin: 0 }} />