UNPKG

@gooddata/react-components

Version:

GoodData.UI - A powerful JavaScript library for building analytical applications

116 lines • 6.84 kB
"use strict"; 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 (b.hasOwnProperty(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 __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); }; Object.defineProperty(exports, "__esModule", { value: true }); // (C) 2019-2020 GoodData Corporation var React = require("react"); var react_dom_1 = require("react-dom"); var bucketConfig_1 = require("../../../utils/bucketConfig"); var cloneDeep = require("lodash/cloneDeep"); var includes = require("lodash/includes"); var set = require("lodash/set"); var PluggableBaseChart_1 = require("../baseChart/PluggableBaseChart"); var bucketHelper_1 = require("../../../utils/bucketHelper"); var BucketNames = require("../../../../constants/bucketNames"); var bucket_1 = require("../../../constants/bucket"); var sort_1 = require("../../../utils/sort"); var bubbleChartUiConfigHelper_1 = require("../../../utils/uiConfigHelpers/bubbleChartUiConfigHelper"); var uiConfig_1 = require("../../../constants/uiConfig"); var supportedProperties_1 = require("../../../constants/supportedProperties"); var BubbleChartConfigurationPanel_1 = require("../../configurationPanels/BubbleChartConfigurationPanel"); var propertiesHelper_1 = require("../../../utils/propertiesHelper"); var visualizationTypes_1 = require("../../../../constants/visualizationTypes"); var PluggableBubbleChart = /** @class */ (function (_super) { __extends(PluggableBubbleChart, _super); function PluggableBubbleChart(props) { var _this = _super.call(this, props) || this; _this.type = visualizationTypes_1.VisualizationTypes.BUBBLE; _this.supportedPropertiesList = supportedProperties_1.BUBBLE_CHART_SUPPORTED_PROPERTIES; _this.initializeProperties(props.visualizationProperties); return _this; } PluggableBubbleChart.prototype.getExtendedReferencePoint = function (referencePoint) { var clonedReferencePoint = cloneDeep(referencePoint); var newReferencePoint = __assign({}, clonedReferencePoint, { uiConfig: cloneDeep(uiConfig_1.DEFAULT_BUBBLE_CHART_CONFIG) }); newReferencePoint = bucketHelper_1.removeAllArithmeticMeasuresFromDerived(newReferencePoint); newReferencePoint = bucketHelper_1.removeAllDerivedMeasures(newReferencePoint); var buckets = bucketHelper_1.limitNumberOfMeasuresInBuckets(clonedReferencePoint.buckets, 3); // limit number of measures in the ref point here? // Check if there are three measure buckets var measuresBucketItems = bucketHelper_1.getPreferredBucketItems(buckets, [BucketNames.MEASURES], [bucket_1.METRIC]); var secondaryMeasuresBucketItems = bucketHelper_1.getPreferredBucketItems(buckets, [BucketNames.SECONDARY_MEASURES], [bucket_1.METRIC]); var tertiaryMeasuresBucketItems = bucketHelper_1.getPreferredBucketItems(buckets, [BucketNames.TERTIARY_MEASURES], [bucket_1.METRIC]); var allMeasures = bucketHelper_1.getMeasures(buckets); // skip first to reserve first items to be picked later var secondaryAndTertiaryItems = secondaryMeasuresBucketItems.slice(0, 1).concat(tertiaryMeasuresBucketItems.slice(0, 1)); var measures = measuresBucketItems.length > 0 ? measuresBucketItems.slice(0, 1) : allMeasures.filter(function (measure) { return !includes(secondaryAndTertiaryItems, measure); }).slice(0, 1); var secondaryMeasures = secondaryMeasuresBucketItems.length > 0 ? secondaryMeasuresBucketItems.slice(0, 1) : allMeasures .filter(function (measure) { return !includes(measures.concat(tertiaryMeasuresBucketItems.slice(0, 1)), measure); }) .slice(0, 1); var tertiaryMeasures = tertiaryMeasuresBucketItems.length > 0 ? tertiaryMeasuresBucketItems.slice(0, 1) : allMeasures .filter(function (measure) { return !includes(measures.concat(secondaryMeasures), measure); }) .slice(0, 1); set(newReferencePoint, bucket_1.BUCKETS, [ { localIdentifier: BucketNames.MEASURES, items: measures, }, { localIdentifier: BucketNames.SECONDARY_MEASURES, items: secondaryMeasures, }, { localIdentifier: BucketNames.TERTIARY_MEASURES, items: tertiaryMeasures, }, { localIdentifier: BucketNames.VIEW, items: bucketHelper_1.getAllAttributeItems(buckets).slice(0, 1), }, ]); newReferencePoint = bubbleChartUiConfigHelper_1.setBubbleChartUiConfig(newReferencePoint, this.intl, this.type); newReferencePoint = bucketConfig_1.configurePercent(newReferencePoint, true); newReferencePoint = bucketConfig_1.configureOverTimeComparison(newReferencePoint, !!this.featureFlags.enableWeekFilters); newReferencePoint = propertiesHelper_1.getReferencePointWithSupportedProperties(newReferencePoint, this.supportedPropertiesList); newReferencePoint = sort_1.removeSort(newReferencePoint); return Promise.resolve(bucketHelper_1.sanitizeFilters(newReferencePoint)); }; PluggableBubbleChart.prototype.renderConfigurationPanel = function () { if (document.querySelector(this.configPanelElement)) { react_dom_1.render(React.createElement(BubbleChartConfigurationPanel_1.default, { locale: this.locale, references: this.references, properties: this.visualizationProperties, propertiesMeta: this.propertiesMeta, mdObject: this.mdObject, colors: this.colors, pushData: this.handlePushData, type: this.type, isError: this.isError, isLoading: this.isLoading, featureFlags: this.featureFlags }), document.querySelector(this.configPanelElement)); } }; return PluggableBubbleChart; }(PluggableBaseChart_1.PluggableBaseChart)); exports.PluggableBubbleChart = PluggableBubbleChart; //# sourceMappingURL=PluggableBubbleChart.js.map