@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
140 lines (139 loc) • 6.96 kB
JavaScript
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;