UNPKG

@gooddata/react-components

Version:

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

165 lines 8.89 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 cloneDeep = require("lodash/cloneDeep"); var get = require("lodash/get"); var set = require("lodash/set"); var negate = require("lodash/negate"); var react_dom_1 = require("react-dom"); var BucketNames = require("../../../../constants/bucketNames"); var visualizationTypes_1 = require("../../../../constants/visualizationTypes"); var bucketConfig_1 = require("../../../utils/bucketConfig"); var PluggableBaseChart_1 = require("../baseChart/PluggableBaseChart"); var uiConfig_1 = require("../../../constants/uiConfig"); var bucket_1 = require("../../../constants/bucket"); var bucketHelper_1 = require("../../../utils/bucketHelper"); var areaChartUiConfigHelper_1 = require("../../../utils/uiConfigHelpers/areaChartUiConfigHelper"); var sort_1 = require("../../../utils/sort"); var LineChartBasedConfigurationPanel_1 = require("../../configurationPanels/LineChartBasedConfigurationPanel"); var propertiesHelper_1 = require("../../../utils/propertiesHelper"); var supportedProperties_1 = require("../../../constants/supportedProperties"); var mdObjectHelper_1 = require("../../../utils/mdObjectHelper"); var PluggableAreaChart = /** @class */ (function (_super) { __extends(PluggableAreaChart, _super); function PluggableAreaChart(props) { var _this = _super.call(this, props) || this; _this.type = visualizationTypes_1.VisualizationTypes.AREA; _this.defaultControlsProperties = { stackMeasures: true, }; _this.initializeProperties(props.visualizationProperties); return _this; } PluggableAreaChart.prototype.getUiConfig = function () { return cloneDeep(uiConfig_1.DEFAULT_AREA_UICONFIG); }; PluggableAreaChart.prototype.update = function (options, visualizationProperties, mdObject, references) { this.updateCustomSupportedProperties(mdObject); _super.prototype.update.call(this, options, visualizationProperties, mdObject, references); }; PluggableAreaChart.prototype.getExtendedReferencePoint = function (referencePoint) { var clonedReferencePoint = cloneDeep(referencePoint); var newReferencePoint = __assign({}, clonedReferencePoint, { uiConfig: this.getUiConfig() }); newReferencePoint = bucketHelper_1.removeAllArithmeticMeasuresFromDerived(newReferencePoint); newReferencePoint = bucketHelper_1.removeAllDerivedMeasures(newReferencePoint); this.configureBuckets(newReferencePoint); newReferencePoint = areaChartUiConfigHelper_1.setAreaChartUiConfig(newReferencePoint, this.intl, this.type); newReferencePoint = bucketConfig_1.configurePercent(newReferencePoint, false); newReferencePoint = bucketConfig_1.configureOverTimeComparison(newReferencePoint, !!this.featureFlags.enableWeekFilters); this.supportedPropertiesList = propertiesHelper_1.removeImmutableOptionalStackingProperties(newReferencePoint, this.getSupportedPropertiesList()); newReferencePoint = propertiesHelper_1.getReferencePointWithSupportedProperties(newReferencePoint, this.supportedPropertiesList); newReferencePoint = sort_1.removeSort(newReferencePoint); return Promise.resolve(bucketHelper_1.sanitizeFilters(newReferencePoint)); }; PluggableAreaChart.prototype.configureBuckets = function (extendedReferencePoint) { var _a = this.getBucketItems(extendedReferencePoint), measures = _a.measures, views = _a.views, stacks = _a.stacks; set(extendedReferencePoint, bucket_1.BUCKETS, [ { localIdentifier: BucketNames.MEASURES, items: measures, }, { localIdentifier: BucketNames.VIEW, items: views, }, { localIdentifier: BucketNames.STACK, items: stacks, }, ]); }; PluggableAreaChart.prototype.getSupportedPropertiesList = function () { return supportedProperties_1.AREA_CHART_SUPPORTED_PROPERTIES; }; PluggableAreaChart.prototype.renderConfigurationPanel = function () { if (document.querySelector(this.configPanelElement)) { react_dom_1.render(React.createElement(LineChartBasedConfigurationPanel_1.default, { locale: this.locale, colors: this.colors, properties: this.visualizationProperties, propertiesMeta: this.propertiesMeta, mdObject: this.mdObject, references: this.references, pushData: this.handlePushData, type: this.type, isError: this.isError, isLoading: this.isLoading, featureFlags: this.featureFlags }), document.querySelector(this.configPanelElement)); } }; PluggableAreaChart.prototype.updateCustomSupportedProperties = function (mdObject) { if (mdObjectHelper_1.haveManyViewItems(mdObject)) { this.addSupportedProperties(supportedProperties_1.OPTIONAL_STACKING_PROPERTIES); this.setCustomControlsProperties({ stackMeasures: false, stackMeasuresToPercent: false, }); } else { this.setCustomControlsProperties({}); } }; PluggableAreaChart.prototype.addSupportedProperties = function (properties) { var supportedPropertiesList = this.supportedPropertiesList; (properties || []).forEach(function (property) { if (!supportedPropertiesList.some(function (supportedProperty) { return supportedProperty === property; })) { supportedPropertiesList.push(property); } }); }; PluggableAreaChart.prototype.getAllAttributes = function (buckets) { return bucketHelper_1.getAllAttributeItemsWithPreference(buckets, [ BucketNames.TREND, BucketNames.VIEW, BucketNames.SEGMENT, BucketNames.STACK, ]); }; PluggableAreaChart.prototype.getAllAttributesWithoutDate = function (buckets) { return this.getAllAttributes(buckets).filter(negate(bucketHelper_1.isDateBucketItem)); }; PluggableAreaChart.prototype.filterStackItems = function (bucketItems) { return bucketItems.filter(negate(bucketHelper_1.isDateBucketItem)).slice(0, uiConfig_1.MAX_STACKS_COUNT); }; PluggableAreaChart.prototype.getBucketItems = function (referencePoint) { var buckets = get(referencePoint, bucket_1.BUCKETS, []); var measures = bucketHelper_1.getFilteredMeasuresForStackedCharts(buckets); var dateItems = bucketHelper_1.getDateItems(buckets); var stacks = this.filterStackItems(bucketHelper_1.getStackItems(buckets)); var isAllowMoreThanOneViewByAttribute = !stacks.length && measures.length <= 1; var numOfAttributes = isAllowMoreThanOneViewByAttribute ? uiConfig_1.MAX_VIEW_COUNT : 1; var views = bucketHelper_1.getAllCategoriesAttributeItems(buckets).slice(0, numOfAttributes); var hasDateItemInViewByBucket = views.some(bucketHelper_1.isDateBucketItem); if (dateItems.length && !hasDateItemInViewByBucket) { var firstDateItem = dateItems[0]; var allAttributes = this.getAllAttributesWithoutDate(buckets); var extraViewItems = allAttributes.slice(0, numOfAttributes - 1); views = numOfAttributes > 1 ? [firstDateItem].concat(extraViewItems) : [firstDateItem]; if (!isAllowMoreThanOneViewByAttribute && measures.length <= 1) { stacks = allAttributes.slice(0, uiConfig_1.MAX_STACKS_COUNT); } } return { measures: measures, views: views, stacks: stacks, }; }; return PluggableAreaChart; }(PluggableBaseChart_1.PluggableBaseChart)); exports.PluggableAreaChart = PluggableAreaChart; //# sourceMappingURL=PluggableAreaChart.js.map