UNPKG

ze-react-component-library

Version:
235 lines (209 loc) 8.22 kB
import "antd/es/message/style"; import _message from "antd/es/message"; import "antd/es/button/style"; import _Button from "antd/es/button"; import "antd/es/result/style"; import _Result from "antd/es/result"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var __assign = this && this.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; import StatisticForValue from "../components/StatisticForValue"; import React from "react"; import Analyzer from "../Analyzer"; import { SizeMe } from "react-sizeme"; import useYoyMom from "./useYoyMom"; import "./index.less"; import { ErrorBoundary } from "react-error-boundary"; import { CopyOutlined } from "@ant-design/icons"; import useLocale from "../hooks/useLocale"; import { useAnalyzer } from "../hooks/useFrontConfig"; var ZEValueDisplayer2 = function ZEValueDisplayer2(_a) { var _b, _c; var result = _a.result, upColor = _a.upColor, downColor = _a.downColor, rootClassName = _a.rootClassName, _d = _a.showYoyAndMom, showYoyAndMom = _d === void 0 ? true : _d, onChangeLogicform = _a.onChangeLogicform, exportTitle = _a.exportTitle, _e = _a.analzyerProps, analzyerProps = _e === void 0 ? {} : _e; var t = useLocale().t; var _f = useYoyMom({ data: result, showYoyAndMom: showYoyAndMom, upColor: upColor, downColor: downColor }), getYoyMom = _f.getYoyMom, colors = _f.colors, lyTip = _f.lyTip, lyLF = _f.lyLF, lmTip = _f.lmTip, lmLF = _f.lmLF, hideMom = _f.hideMom; // 判断智能归因 var analyzerDefaultOperator; if (result && ((_b = result.logicform.preds) === null || _b === void 0 ? void 0 : _b.length) <= 3 && ((_c = result.logicform.preds[0]) === null || _c === void 0 ? void 0 : _c.operator) === "$sum") { var hasMom = result.logicform.preds.find(function (p) { return p.operator === "$mom" && p.pred === result.logicform.preds[0].pred; }); var hasYoy = result.logicform.preds.find(function (p) { return p.operator === "$yoy" && p.pred === result.logicform.preds[0].pred; }); if (hasMom) { analyzerDefaultOperator = "$mom"; } else if (hasYoy) { analyzerDefaultOperator = "$yoy"; } else { analyzerDefaultOperator = "$mom"; } } var showAnalyzer = useAnalyzer(); if (!result || !result.logicform) return /*#__PURE__*/React.createElement("div", null); if (result.result.length === 0) { return /*#__PURE__*/React.createElement(_Result, { status: "info", title: t("未查到数据") }); } if (result.logicform.groupby) return /*#__PURE__*/React.createElement(_Result, { status: "error", title: t("程序出错了"), subTitle: t("此数据无法用KPI组件展示") }); return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { className: ["ze-multi-values", rootClassName].filter(function (f) { return f; }).join(" ") }, result.columnProperties.map(function (property, i) { var _a, _b, _c; var predItem = (_b = (_a = result.logicform) === null || _a === void 0 ? void 0 : _a.preds) === null || _b === void 0 ? void 0 : _b.find(function (f) { return _typeof(f) === "object" && f.name === (property === null || property === void 0 ? void 0 : property.name); }); var value = result.result[0][property.name]; var _d = getYoyMom(property, i), mom = _d.mom, yoy = _d.yoy; var subItems = [{ title: t("$mom"), item: mom, tip: lmTip, logicform: lmLF, hide: hideMom }, { title: t("$yoy"), item: yoy, tip: lyTip, logicform: lyLF }].filter(function (d) { return !d.hide && d.item; }); return /*#__PURE__*/React.createElement("div", { className: ["ze-value-item-block", i === 0 ? "ze-value-item-block-highlight" : "", subItems.length > 0 ? "ze-value-item-multi" : ""].filter(function (d) { return d; }).join(" "), key: property.name }, /*#__PURE__*/React.createElement("div", { className: ["ze-value-item", i == 0 ? "ze-value-item-highlight" : ""].filter(function (f) { return f; }).join(" ") }, /*#__PURE__*/React.createElement(StatisticForValue, __assign({}, { property: property, value: value, logicform: { schema: (predItem === null || predItem === void 0 ? void 0 : predItem.schema) || ((_c = result.logicform) === null || _c === void 0 ? void 0 : _c.schema), query: (predItem === null || predItem === void 0 ? void 0 : predItem.query) || {}, preds: [__assign(__assign({}, predItem), { query: undefined })] }, upColor: colors.up, downColor: colors.down }))), /*#__PURE__*/React.createElement("div", { className: "ze-value-sub-items" }, subItems.map(function (_a) { var item = _a.item, title = _a.title, tip = _a.tip, logicform = _a.logicform; return /*#__PURE__*/React.createElement("div", { className: "ze-value-sub-item ze-value-item", key: title, style: { width: "calc((100% - 2*" + (subItems.length - 1) + "px) / " + subItems.length + ")" } }, /*#__PURE__*/React.createElement(StatisticForValue, __assign({}, { property: property, value: item === null || item === void 0 ? void 0 : item.lastPeriod, title: title, tip: tip, subTitle: /*#__PURE__*/React.createElement("div", { className: "ze-value-sub-item-trend-content" }, /*#__PURE__*/React.createElement(StatisticForValue, __assign({}, { property: { type: "percentage" }, value: item === null || item === void 0 ? void 0 : item.value, trend: item === null || item === void 0 ? void 0 : item.trend, upColor: colors.up, downColor: colors.down, showArrow: true }))) }))); }))); })), analyzerDefaultOperator && showAnalyzer && /*#__PURE__*/React.createElement(ErrorBoundary, { fallbackRender: function fallbackRender(_a) { var error = _a.error; return /*#__PURE__*/React.createElement("div", null, t("智能归因出错啦,请联系技术支持。复制错误信息"), /*#__PURE__*/React.createElement(_Button, { type: "link", icon: /*#__PURE__*/React.createElement(CopyOutlined, null), onClick: function onClick() { navigator.clipboard.writeText(error.message); _message.info(t("已复制错误信息")); } })); } }, /*#__PURE__*/React.createElement("div", { style: { marginTop: 10 } }, /*#__PURE__*/React.createElement(Analyzer, __assign({ result: result, upColor: upColor, downColor: downColor, onChangeLogicform: onChangeLogicform, defaultOperator: analyzerDefaultOperator }, analzyerProps, { title: exportTitle }))))); }; var padding = 48; var screenXL = 1200 - padding; var screenSM = 576 - padding; var ZEValueDisplayerWrapper = function ZEValueDisplayerWrapper(props) { return /*#__PURE__*/React.createElement(SizeMe, null, function (_a) { var size = _a.size; var className = ""; if (size.width < screenXL) { className = "screen-xl"; } if (size.width < screenSM) { className = "screen-sm"; } return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ZEValueDisplayer2, __assign({ rootClassName: className }, props))); }); }; export default ZEValueDisplayerWrapper;