UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

140 lines (139 loc) 6.96 kB
var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import * as React from 'react'; import { observer } from 'mobx-react'; import classnames from 'classnames'; import { computed } from 'mobx'; import { Tooltip } from 'antd'; import { ArrowDown, ArrowRight, ArrowUp } from '@qn-pandora/pandora-component-icons'; import { ChartType, ESingleFieldPosition, ESingleFieldTrendMode } from '../../../../constants/chart-style'; import BasicComponent from '../../../../components/Base/BasicComponent'; import bind from '../../../../utils/bind'; import { ETrend } from '../constant'; import * as styles from './style.mless'; var DisplayField = /** @class */ (function (_super) { __extends(DisplayField, _super); function DisplayField() { return _super !== null && _super.apply(this, arguments) || this; } Object.defineProperty(DisplayField.prototype, "fieldsStyle", { get: function () { var _a = this.props, chartHeight = _a.chartHeight, displayFiled = _a.displayFiled, chartType = _a.chartType, chartWidth = _a.chartWidth; var position = displayFiled.position, fontSize = displayFiled.fontSize; var bottomMarginTop = 0; if (chartType === ChartType.SingleGauge && position === ESingleFieldPosition.Bottom) { bottomMarginTop = chartHeight / 5.8; } var marginLeft = position === ESingleFieldPosition.Right ? null : 'auto'; var style = { fontSize: fontSize, width: '100%', marginTop: "-" + bottomMarginTop + "px", maxWidth: chartWidth * 2 + "px", minWidth: chartWidth / 2 + "px" }; if (marginLeft) { style['marginLeft'] = marginLeft; } return style; }, enumerable: false, configurable: true }); DisplayField.prototype.getIcon = function (trend) { switch (trend) { case ETrend.Up: return React.createElement(ArrowUp, { className: styles.up }); case ETrend.Equal: return React.createElement(ArrowRight, { className: styles.equal }); case ETrend.Down: return React.createElement(ArrowDown, { className: styles.down }); default: return null; } }; DisplayField.prototype.getTooltipPlacement = function (position, index) { return position === ESingleFieldPosition.Right ? 'bottomLeft' : (index + 1) % 2 === 0 ? 'bottomLeft' : 'bottomRight'; }; DisplayField.prototype.render = function () { var _a; var _this = this; var _b = this.props, displayFiled = _b.displayFiled, className = _b.className; var _c = displayFiled.fields, fields = _c === void 0 ? [] : _c, position = displayFiled.position, _d = displayFiled.fieldNum, fieldNum = _d === void 0 ? 1 : _d; return (React.createElement(React.Fragment, null, fields.length > 0 && (React.createElement("div", { className: classnames(styles.fields, className, (_a = {}, _a[styles.bottomFields] = position === ESingleFieldPosition.Bottom, _a[styles.twoCol] = fieldNum >= 2, _a)), style: this.fieldsStyle }, fields.map(function (item, index) { var _a; var name = item.name, value = item.value, nickname = item.nickname; if (!name) { return; } var position = _this.props.displayFiled.position; var placement = _this.getTooltipPlacement(position, index); return (React.createElement(Tooltip, { title: value || '', placement: placement }, React.createElement("div", { className: styles.fieldWrapper }, React.createElement("span", { className: classnames(styles.field, (_a = {}, _a[styles[item.trend]] = item.trendMode === ESingleFieldTrendMode.Value || item.trendMode === ESingleFieldTrendMode.ValueAndArrow || item.trendMode === ESingleFieldTrendMode.ZeroAndNotZero, _a)) }, React.createElement("span", { className: styles.key }, nickname || name, ":"), value ? value : '--', (item.trendMode === ESingleFieldTrendMode.Arrow || item.trendMode === ESingleFieldTrendMode.ValueAndArrow) && (React.createElement("span", { className: styles.icon }, item.trend && _this.getIcon(item.trend))))))); }))))); }; __decorate([ computed, __metadata("design:type", Object), __metadata("design:paramtypes", []) ], DisplayField.prototype, "fieldsStyle", null); __decorate([ bind, __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], DisplayField.prototype, "getIcon", null); __decorate([ bind, __metadata("design:type", Function), __metadata("design:paramtypes", [String, Number]), __metadata("design:returntype", void 0) ], DisplayField.prototype, "getTooltipPlacement", null); DisplayField = __decorate([ observer ], DisplayField); return DisplayField; }(BasicComponent)); export default DisplayField;