123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- "use strict";
- exports.__esModule = true;
- exports.default = void 0;
- var _propTypes = _interopRequireDefault(require("prop-types"));
- var _react = _interopRequireDefault(require("react"));
- var _xyChart = require("@data-ui/xy-chart");
- var _theme = require("@data-ui/theme");
- var _chartComposition = require("@superset-ui/chart-composition");
- var _DefaultTooltipRenderer = _interopRequireDefault(require("./DefaultTooltipRenderer"));
- var _Encoder = _interopRequireDefault(require("./Encoder"));
- var _createMarginSelector = _interopRequireWildcard(require("../utils/selectors/createMarginSelector"));
- var _convertScaleToDataUIScaleShape = _interopRequireDefault(require("../utils/convertScaleToDataUIScaleShape"));
- var _createXYChartLayoutWithTheme = _interopRequireDefault(require("../utils/createXYChartLayoutWithTheme"));
- var _createEncoderSelector = _interopRequireDefault(require("../encodeable/createEncoderSelector"));
- var _createRenderLegend = _interopRequireDefault(require("../components/legend/createRenderLegend"));
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
- const defaultProps = {
- className: '',
- margin: _createMarginSelector.DEFAULT_MARGIN,
- theme: _theme.chartTheme,
- TooltipRenderer: _DefaultTooltipRenderer.default
- };
- class BoxPlot extends _react.default.PureComponent {
- constructor(props) {
- super(props);
- _defineProperty(this, "createEncoder", (0, _createEncoderSelector.default)(_Encoder.default));
- _defineProperty(this, "createMargin", (0, _createMarginSelector.default)());
- this.renderChart = this.renderChart.bind(this);
- }
- renderChart(dim) {
- const {
- width,
- height
- } = dim;
- const {
- data,
- margin,
- theme,
- TooltipRenderer
- } = this.props;
- const encoder = this.createEncoder(this.props);
- const {
- channels
- } = encoder;
- const isHorizontal = channels.y.definition.type === 'nominal';
- if (typeof channels.x.scale !== 'undefined') {
- const xDomain = channels.x.getDomain(data);
- channels.x.scale.setDomain(xDomain);
- }
- if (typeof channels.y.scale !== 'undefined') {
- const yDomain = channels.y.getDomain(data);
- channels.y.scale.setDomain(yDomain);
- }
- const layout = (0, _createXYChartLayoutWithTheme.default)({
- width,
- height,
- margin: this.createMargin(margin),
- theme,
- xEncoder: channels.x,
- yEncoder: channels.y
- });
- return layout.renderChartWithFrame(chartDim => _react.default.createElement(_xyChart.XYChart, {
- showYGrid: true,
- width: chartDim.width,
- height: chartDim.height,
- ariaLabel: "BoxPlot",
- margin: layout.margin,
- renderTooltip: ({
- datum,
- color
- }) => _react.default.createElement(TooltipRenderer, {
- datum: datum,
- color: color,
- encoder: encoder
- }),
- theme: theme,
- xScale: (0, _convertScaleToDataUIScaleShape.default)(channels.x.scale.config),
- yScale: (0, _convertScaleToDataUIScaleShape.default)(channels.y.scale.config)
- }, layout.renderXAxis(), layout.renderYAxis(), _react.default.createElement(_xyChart.BoxPlotSeries, {
- key: channels.x.definition.field,
- animated: true,
- data: isHorizontal ? data.map(row => _extends({}, row, {
- y: channels.y.get(row)
- })) : data.map(row => _extends({}, row, {
- x: channels.x.get(row)
- })),
- fill: datum => channels.color.encode(datum, '#55acee'),
- fillOpacity: 0.4,
- stroke: datum => channels.color.encode(datum),
- strokeWidth: 1,
- widthRatio: 0.6,
- horizontal: channels.y.definition.type === 'nominal'
- })));
- }
- render() {
- const {
- className,
- data,
- width,
- height
- } = this.props;
- const encoder = this.createEncoder(this.props);
- return _react.default.createElement(_chartComposition.WithLegend, {
- className: "superset-chart-box-plot " + className,
- width: width,
- height: height,
- position: "top",
- renderLegend: (0, _createRenderLegend.default)(encoder, data, this.props),
- renderChart: this.renderChart
- });
- }
- }
- exports.default = BoxPlot;
- _defineProperty(BoxPlot, "propTypes", {
- className: _propTypes.default.string,
- width: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired,
- height: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired,
- TooltipRenderer: _propTypes.default.elementType
- });
- _defineProperty(BoxPlot, "defaultProps", defaultProps);
|