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.
- package/lib/controls/file-view/index.js +1 -1
- package/lib/controls/file-view/index.js.map +1 -1
- package/lib/form/criteria-form.js +1 -1
- package/lib/form/criteria-form.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/layout/menu/l2menu-quick-bar.d.ts.map +1 -1
- package/lib/layout/menu/l2menu-quick-bar.js +2 -1
- package/lib/layout/menu/l2menu-quick-bar.js.map +1 -1
- package/lib/layout2/components/search-menu.d.ts.map +1 -1
- package/lib/layout2/components/search-menu.js +8 -6
- package/lib/layout2/components/search-menu.js.map +1 -1
- package/lib/layout2/components/theme-button.d.ts.map +1 -1
- package/lib/layout2/components/theme-button.js +3 -1
- package/lib/layout2/components/theme-button.js.map +1 -1
- package/lib/layout2/tabs/tabs-layout.js +3 -3
- package/lib/layout2/tabs/tabs-layout.js.map +1 -1
- package/lib/layout3/components/tabs-layout.js +3 -3
- package/lib/layout3/components/tabs-layout.js.map +1 -1
- package/lib/layout3/css/header.less +12 -0
- package/lib/layout4/components/tabs-layout.js +3 -3
- package/lib/layout4/components/tabs-layout.js.map +1 -1
- package/lib/layout5/header.js +1 -1
- package/lib/layout5/header.js.map +1 -1
- package/lib/list/vertical-list/item.js +1 -1
- package/lib/list/vertical-list/item.js.map +1 -1
- package/lib/locale/LocaleButton.js +1 -1
- package/lib/locale/LocaleButton.js.map +1 -1
- package/lib/locale/LocaleProvider.d.ts +6 -2
- package/lib/locale/LocaleProvider.d.ts.map +1 -1
- package/lib/locale/LocaleProvider.js +32 -11
- package/lib/locale/LocaleProvider.js.map +1 -1
- package/lib/locale/langMp.d.ts +1 -1
- package/lib/locale/langMp.d.ts.map +1 -1
- package/lib/locale/useLocale.d.ts +1 -1
- package/lib/lowcode-components/line-bar-chart/index.d.ts +2 -0
- package/lib/lowcode-components/line-bar-chart/index.d.ts.map +1 -1
- package/lib/lowcode-components/line-bar-chart/index.js +14 -13
- package/lib/lowcode-components/line-bar-chart/index.js.map +1 -1
- package/lib/lowcode-components/line-chart/index.d.ts +2 -0
- package/lib/lowcode-components/line-chart/index.d.ts.map +1 -1
- package/lib/lowcode-components/line-chart/index.js +14 -13
- package/lib/lowcode-components/line-chart/index.js.map +1 -1
- package/lib/module/ttmpl-tree.d.ts +9 -0
- package/lib/module/ttmpl-tree.d.ts.map +1 -0
- package/lib/module/ttmpl-tree.js +42 -0
- package/lib/module/ttmpl-tree.js.map +1 -0
- package/lib/table/page-config-button.js +1 -1
- package/lib/table/page-config-button.js.map +1 -1
- package/lib/tmpl/interface.d.ts +2 -0
- package/lib/tmpl/interface.d.ts.map +1 -1
- package/lib/units/index.d.ts.map +1 -1
- package/lib/units/index.js +11 -3
- package/lib/units/index.js.map +1 -1
- package/lib/welcome/components/menu-card.d.ts.map +1 -1
- package/lib/welcome/components/menu-card.js +5 -3
- package/lib/welcome/components/menu-card.js.map +1 -1
- package/lib/welcome/components/page-card.js +1 -1
- package/lib/welcome/components/page-card.js.map +1 -1
- package/lib/welcome/components/quick-entrance.js +1 -1
- package/lib/welcome/components/quick-entrance.js.map +1 -1
- package/lib/welcome/components/user-menus.js +4 -4
- package/lib/welcome/components/user-menus.js.map +1 -1
- package/lib/welcome/components/workbench.d.ts.map +1 -1
- package/lib/welcome/components/workbench.js +3 -1
- package/lib/welcome/components/workbench.js.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/controls/file-view/index.tsx +1 -1
- package/src/aldehyde/form/criteria-form.tsx +1 -1
- package/src/aldehyde/index.tsx +3 -1
- package/src/aldehyde/layout/menu/l2menu-quick-bar.tsx +2 -1
- package/src/aldehyde/layout2/components/search-menu.tsx +9 -6
- package/src/aldehyde/layout2/components/theme-button.tsx +3 -1
- package/src/aldehyde/layout2/tabs/tabs-layout.tsx +3 -3
- package/src/aldehyde/layout3/components/tabs-layout.tsx +3 -3
- package/src/aldehyde/layout3/css/header.less +12 -0
- package/src/aldehyde/layout4/components/tabs-layout.tsx +3 -3
- package/src/aldehyde/layout5/header.tsx +1 -1
- package/src/aldehyde/list/vertical-list/item.tsx +1 -1
- package/src/aldehyde/locale/LocaleButton.tsx +1 -1
- package/src/aldehyde/locale/LocaleProvider.tsx +37 -24
- package/src/aldehyde/locale/langMp.ts +1 -1
- package/src/aldehyde/lowcode-components/line-bar-chart/index.tsx +17 -13
- package/src/aldehyde/lowcode-components/line-chart/index.tsx +17 -13
- package/src/aldehyde/module/ttmpl-tree.tsx +48 -0
- package/src/aldehyde/table/page-config-button.tsx +1 -1
- package/src/aldehyde/tmpl/interface.tsx +2 -0
- package/src/aldehyde/units/index.tsx +10 -3
- package/src/aldehyde/welcome/components/menu-card.tsx +5 -3
- package/src/aldehyde/welcome/components/page-card.tsx +1 -1
- package/src/aldehyde/welcome/components/quick-entrance.tsx +1 -1
- package/src/aldehyde/welcome/components/user-menus.tsx +4 -4
- 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":";;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,qBAAqB,CAAC;AAC7B,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAErD,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,kBAAkB,CAAC;AAE1B,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;AAW3B,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IAC1C,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA8B,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"workbench.js","sourceRoot":"","sources":["../../../../../src/aldehyde/welcome/components/workbench.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,qBAAqB,CAAC;AAC7B,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAErD,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,kBAAkB,CAAC;AAE1B,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;AAW3B,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IAC1C,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA8B,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAElC,MAAM,UAAU,GAAG,GAAS,EAAE;;QAC5B,IAAI,OAAO,GAAiB,MAAM,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtE,IAAI,OAAO,GAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE,CAAC;YACrB,OAAO,GAAG,CAAA,MAAA,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,0CAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI,EAAE,CAAA;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrB,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;gBAC5F,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;oBAC1H,OAAO,CAAC,IAAI,iCAAM,IAAI,KAAE,GAAG,IAAG,CAAC;gBACjC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,GAAG,WAAW,CAAC,GAAS,EAAE;oBAC7B,IAAI,KAAK,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC/D,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,iCAAM,GAAG,KAAE,CAAC,IAAI,CAAC,EAAE,CAAC,kCAAO,IAAI,KAAE,KAAK,EAAE,KAAK,IAAI,CAAC,OAAK,CAAC,CAAA;gBAC5E,CAAC,CAAA,EAAE,MAAM,CAAC,CAAC;gBACX,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,KAAK,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,mCAAQ,IAAI,KAAE,KAAK,EAAE,KAAK,IAAI,CAAC,GAAE,CAAC;YACvD,CAAC;YACD,UAAU,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAA,CAAC;IAGF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE,CAAC;YAClB,UAAU,EAAE,CAAC;QACf,CAAC;QACD,OAAO,GAAG,EAAE;YACV,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO;IACP,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,4BAA4B;QAC5B,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,qBAAqB;QACrB,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1E,uBAAuB;QACvB,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;QAC3C,OAAO;QACP,SAAS,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,QAAQ,CAAC,OAAO;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;YACxC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAC,QAAQ,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAI,CAAC,CAAC,CAAC,oBAAC,aAAa,OAAG,CAAC;YACrF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,CAAC;YAC1D,IAAI,IAAI,GAAG,CACT,oBAAC,GAAG,IAAC,SAAS,EAAC,YAAY,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;gBACxD,6BAAK,SAAS,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC3J,6BAAK,SAAS,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,2BAA2B,SAAS,yBAAyB,EAAE,GAAI;oBACrH;wBACE,2BAAG,SAAS,EAAC,YAAY,IAAE,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAK;wBACpE,2BAAG,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAK,CAC1E;oBACN,6BAAK,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,SAAS,IAAI,EAAE;wBACrF,6BAAK,SAAS,EAAC,eAAe,IAAE,UAAU,CAAO,CAC7C,CACF,CACF,CACP,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAA;IAED,OAAO,6BAAK,SAAS,EAAC,WAAW;QAC/B,oBAAC,GAAG,IAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC,UAAU,IAC5D,UAAU,EAAE,CACT;QACL,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtB;gBACE,oBAAC,MAAM,IACL,IAAI,EAAC,SAAS,EACd,KAAK,QACL,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAChC,KAAK,EAAC,QAAQ,EACd,IAAI,EAAE,oBAAC,YAAY,OAAG,EACtB,SAAS,EAAC,aAAa,GACvB;gBACF,oBAAC,MAAM,IACL,IAAI,EAAC,SAAS,EACd,KAAK,QACL,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE,oBAAC,aAAa,OAAG,EACvB,SAAS,EAAC,cAAc,GACxB,CACD,CAAC,CAAC,CAAC,EAAE,CACN,CAAC;AACT,CAAC,CAAA;AAED,eAAe,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -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 } =
|
|
62
|
+
const { value: preValue } = prevProps;
|
|
63
63
|
if (value != preValue) {
|
|
64
64
|
this.loadData();
|
|
65
65
|
}
|
package/src/aldehyde/index.tsx
CHANGED
|
@@ -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
|
-
|
|
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
|
|
82
|
-
|
|
83
|
-
|
|
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 (
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
|
134
|
+
const { config: dataConfig, value } = val.initData;
|
|
135
|
+
const { nullSetZero } = config || {};
|
|
136
|
+
const temData = handleData(value, nullSetZero);
|
|
134
137
|
setData(temData);
|
|
135
|
-
if (
|
|
136
|
-
pollingIntervalRef.current = setInterval(() => { getData() },
|
|
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
|
|
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
|
|
129
|
+
const { config: dataConfig, value } = val.initData;
|
|
130
|
+
const { nullSetZero } = config || {};
|
|
131
|
+
const temData = handleData(value, nullSetZero);
|
|
129
132
|
setData(temData);
|
|
130
|
-
if (
|
|
131
|
-
pollingIntervalRef.current = setInterval(() => { getData() },
|
|
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
|
|
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 }} />
|