UNPKG

ze-react-component-library

Version:
342 lines (293 loc) 11.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("antd/lib/message/style"); var _message2 = _interopRequireDefault(require("antd/lib/message")); require("antd/lib/button/style"); var _button = _interopRequireDefault(require("antd/lib/button")); require("antd/lib/space/style"); var _space = _interopRequireDefault(require("antd/lib/space")); var _react = _interopRequireDefault(require("react")); var _icons = require("@ant-design/icons"); var _GroupByMenu = _interopRequireDefault(require("../components/GroupByMenu")); var _StatisticForValue = _interopRequireDefault(require("../components/StatisticForValue")); var _Analyzer = _interopRequireDefault(require("../Analyzer")); var _reactErrorBoundary = require("react-error-boundary"); var _ZECard = _interopRequireDefault(require("../ZECard")); var _reactSizeme = require("react-sizeme"); var _useYoyMom = _interopRequireDefault(require("./useYoyMom")); require("./index.less"); var _ZELogicform = _interopRequireDefault(require("../ZELogicform")); var _useLocale = _interopRequireDefault(require("../hooks/useLocale")); var _useFrontConfig = require("../hooks/useFrontConfig"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var __assign = void 0 && (void 0).__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); }; var padding = 48; var screenXL = 1200 - padding; var screenSM = 576 - padding; var ZEValueDisplayer = function ZEValueDisplayer(_a) { var _b, _c, _d; var data = _a.data, logicform = _a.logicform, onChangeLogicform = _a.onChangeLogicform, children = _a.children, _e = _a.showYoyAndMom, showYoyAndMom = _e === void 0 ? false : _e, trend = _a.trend, title = _a.title, exportTitle = _a.exportTitle, _tip = _a.tip, upColor = _a.upColor, downColor = _a.downColor, _f = _a.highlight, highlight = _f === void 0 ? true : _f, noWrapper = _a.noWrapper, rootClassName = _a.rootClassName, _g = _a.analzyerProps, analzyerProps = _g === void 0 ? {} : _g, showArrow = _a.showArrow; var t = (0, _useLocale.default)().t; var invalid = !data || data.error; var tip = _tip; var showRecommendKPIs = false; if (((_c = (_b = data === null || data === void 0 ? void 0 : data.columnProperties) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.recommend_kpis) && data.logicform.preds[0].operator === "$sum" && // @ts-ignore !data.logicform.preds[0].by) { showRecommendKPIs = true; } var showYoyAndMomFinal = showYoyAndMom && !showRecommendKPIs; var showAnalyzer = (0, _useFrontConfig.useAnalyzer)(); var _h = (0, _useYoyMom.default)({ data: data, showYoyAndMom: showYoyAndMomFinal, upColor: upColor, downColor: downColor }), shouldSplitByYear = _h.shouldSplitByYear, timestampProperty = _h.timestampProperty, yoyData = _h.yoyData, momData = _h.momData, lmTip = _h.lmTip, lmLF = _h.lmLF, lyTip = _h.lyTip, lyLF = _h.lyLF, getYoyMom = _h.getYoyMom, colors = _h.colors, hideMom = _h.hideMom; var _j = getYoyMom(), mom = _j.mom, yoy = _j.yoy; // feat: 如果timestamp prop区间超过1年,那么给个分组 var groupbyYearComponent = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null); if (shouldSplitByYear) { groupbyYearComponent = /*#__PURE__*/_react.default.createElement(_ZECard.default, { logicform: __assign(__assign({}, data.logicform), { groupby: [{ _id: timestampProperty.name, level: "year" }] }), chartProps: { style: { height: 300 } }, showMainContentOnly: true }); } // 如果没有Children的话,采用默认的statistic来表现 var defaultStatistics; if (!invalid && !children) { defaultStatistics = /*#__PURE__*/_react.default.createElement(_space.default, { size: "large" }, data.columnProperties.length > 0 ? data.columnProperties.map(function (property) { var _a, _b; return /*#__PURE__*/_react.default.createElement(_StatisticForValue.default, __assign({}, { property: property, title: title, tip: tip, logicform: logicform || data.logicform, trend: trend, key: property.name, value: (_b = (_a = data === null || data === void 0 ? void 0 : data.result) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b[property.name], upColor: colors.up, downColor: colors.down, showArrow: showArrow })); }) : /*#__PURE__*/_react.default.createElement(_StatisticForValue.default, __assign({}, { property: undefined, title: title, tip: tip, logicform: logicform || data.logicform, trend: trend, value: undefined, upColor: colors.up, downColor: colors.down, showArrow: showArrow }))); } var recommendKpis = (showRecommendKPIs ? data.columnProperties[0].recommend_kpis : []).map(function (kpi) { return /*#__PURE__*/_react.default.createElement(_ZELogicform.default, { content: function content(_v, _l, res) { return /*#__PURE__*/_react.default.createElement(ZEValueDisplayer, { data: res, onChangeLogicform: onChangeLogicform, showYoyAndMom: false, upColor: upColor, downColor: downColor, highlight: false, noWrapper: true }); }, logicform: __assign(__assign({}, data.logicform), { preds: [kpi] }) }); }); var renderContent = function renderContent() { var _a, _b; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { className: "ze-value-item " + (highlight ? "ze-value-item-highlight" : "") }, (data === null || data === void 0 ? void 0 : data.logicform) ? /*#__PURE__*/_react.default.createElement(_GroupByMenu.default, { title: t("深入分析"), result: data, onChangeLogicform: onChangeLogicform, selectedItem: null, menuStyle: { width: 200, height: 200, overflow: "auto" } }, /*#__PURE__*/_react.default.createElement("div", { onClick: function onClick(e) { return e.preventDefault(); } }, children || defaultStatistics)) : /*#__PURE__*/_react.default.createElement("div", { onClick: function onClick(e) { return e.preventDefault(); } }, children || defaultStatistics)), lyLF && yoyData && showYoyAndMomFinal ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ZEValueDisplayer, { data: yoyData, onChangeLogicform: onChangeLogicform, showYoyAndMom: false, title: t("去年同期"), tip: lyTip, logicform: lyLF, upColor: upColor, downColor: downColor, highlight: false, noWrapper: true }), /*#__PURE__*/_react.default.createElement(ZEValueDisplayer, { data: __assign(__assign({}, yoyData), { result: [{ _id: "0", 同比: yoy === null || yoy === void 0 ? void 0 : yoy.value }], columnProperties: [__assign(__assign({}, (_a = yoyData === null || yoyData === void 0 ? void 0 : yoyData.columnProperties) === null || _a === void 0 ? void 0 : _a[0]), { type: "percentage", name: "同比", ui: {}, unit: undefined })] }), onChangeLogicform: onChangeLogicform, showYoyAndMom: false, trend: yoy === null || yoy === void 0 ? void 0 : yoy.trend, tip: lyTip, logicform: lyLF, title: t("$yoy"), upColor: upColor, downColor: downColor, highlight: false, noWrapper: true, showArrow: true })) : null, lmLF && momData && showYoyAndMomFinal && !hideMom ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ZEValueDisplayer, { data: momData, onChangeLogicform: onChangeLogicform, showYoyAndMom: false, title: t("上一期"), tip: lmTip, logicform: lmLF, upColor: upColor, downColor: downColor, highlight: false, noWrapper: true }), /*#__PURE__*/_react.default.createElement(ZEValueDisplayer, { data: __assign(__assign({}, momData), { result: [{ _id: "0", 环比: mom === null || mom === void 0 ? void 0 : mom.value }], columnProperties: [__assign(__assign({}, (_b = momData === null || momData === void 0 ? void 0 : momData.columnProperties) === null || _b === void 0 ? void 0 : _b[0]), { type: "percentage", name: "环比", ui: {}, unit: undefined })] }), onChangeLogicform: onChangeLogicform, showYoyAndMom: false, trend: mom === null || mom === void 0 ? void 0 : mom.trend, tip: lmTip, logicform: lmLF, title: t("$mom"), upColor: upColor, downColor: downColor, highlight: false, noWrapper: true, showArrow: true })) : null, recommendKpis); }; if (invalid) return null; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, noWrapper ? renderContent() : /*#__PURE__*/_react.default.createElement("div", { className: ["ze-value-items", rootClassName].join(" ") }, renderContent()), groupbyYearComponent, !shouldSplitByYear && (data === null || data === void 0 ? void 0 : data.logicform) && showYoyAndMom && showAnalyzer && /*#__PURE__*/_react.default.createElement(_reactErrorBoundary.ErrorBoundary, { fallbackRender: function fallbackRender(_a) { var error = _a.error; return /*#__PURE__*/_react.default.createElement("div", null, t("智能归因出错啦,请联系技术支持。复制错误信息"), /*#__PURE__*/_react.default.createElement(_button.default, { type: "link", icon: /*#__PURE__*/_react.default.createElement(_icons.CopyOutlined, null), onClick: function onClick() { navigator.clipboard.writeText(error.message); _message2.default.info(t("已复制错误信息")); } })); } }, /*#__PURE__*/_react.default.createElement(_Analyzer.default, __assign({ result: data, upColor: upColor, downColor: downColor, onChangeLogicform: onChangeLogicform, // @ts-ignore customSummary: (_d = data.columnProperties[0].analyzer) === null || _d === void 0 ? void 0 : _d.customSummary }, analzyerProps, { title: exportTitle })))); }; var ZEValueDisplayerWrapper = function ZEValueDisplayerWrapper(props) { return /*#__PURE__*/_react.default.createElement(_reactSizeme.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.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(ZEValueDisplayer, __assign({ rootClassName: className }, props))); }); }; var _default = ZEValueDisplayerWrapper; exports.default = _default;