UNPKG

@gooddata/react-components

Version:

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

636 lines (597 loc) • 16.6 kB
// (C) 2019-2020 GoodData Corporation import { IUiConfig } from "../interfaces/Visualization"; import { METRIC, FACT, ATTRIBUTE, DATE, GEO_ATTRIBUTE } from "./bucket"; import { OverTimeComparisonTypes } from "../../interfaces/OverTimeComparison"; import { VisualizationTypes } from "../../constants/visualizationTypes"; import { MEASURES, SECONDARY_MEASURES, TERTIARY_MEASURES, VIEW } from "../../constants/bucketNames"; export const MAX_METRICS_COUNT = 20; export const DEFAULT_PIE_METRICS_COUNT = 1; export const DEFAULT_TREEMAP_MEASURES_COUNT = 1; export const MAX_FILTERS_COUNT = 20; export const MAX_CATEGORIES_COUNT = 1; export const MAX_TABLE_CATEGORIES_COUNT = 20; export const MAX_STACKS_COUNT = 1; export const MAX_VIEW_COUNT = 2; export const DEFAULT_HEADLINE_METRICS_COUNT = 1; export const DEFAULT_XIRR_METRICS_COUNT = 1; export const DEFAULT_XIRR_ATTRIBUTES_COUNT = 1; export const DEFAULT_GEO_ATTRIBUTES_COUNT = 1; export const DEFAULT_PUSHPIN_METRICS_COUNT = 1; export const UICONFIG = "uiConfig"; export const RECOMMENDATIONS = "recommendations"; export const SUPPORTED_COMPARISON_TYPES = "supportedOverTimeComparisonTypes"; export const OPEN_AS_REPORT = "openAsReport"; export const SUPPORTED = "supported"; export const UICONFIG_AXIS = "uiConfig.axis"; export const measuresBase = { accepts: [METRIC, FACT, ATTRIBUTE], allowsDuplicateItems: true, enabled: true, allowsReordering: true, allowsSwapping: true, itemsLimit: MAX_METRICS_COUNT, isShowInPercentEnabled: false, isShowInPercentVisible: true, }; export const viewBase = { accepts: [ATTRIBUTE, DATE], itemsLimit: MAX_CATEGORIES_COUNT, allowsSwapping: true, allowsReordering: false, enabled: true, isShowInPercentEnabled: false, }; const stackBase = { accepts: [ATTRIBUTE], itemsLimit: MAX_STACKS_COUNT, allowsSwapping: true, allowsReordering: false, enabled: true, isShowInPercentEnabled: false, }; export const defaultFilters = { filters: { accepts: [ATTRIBUTE, DATE], itemsLimit: MAX_FILTERS_COUNT, allowsReordering: false, enabled: true, isShowInPercentEnabled: false, }, }; export const disabledExportConfig = { exportConfig: { supported: false }, }; export const enabledExportConfig = { exportConfig: { supported: true }, }; export const disabledNoMetricConfig = { noMetricAccepted: { supported: false }, }; export const enabledNoMetricConfig = { noMetricAccepted: { supported: true }, }; export const disabledOpenAsReportConfig = { openAsReport: { supported: false }, }; export const enabledOpenAsReportConfig = { openAsReport: { supported: true }, }; export const defaultRootUiConfigProperties: Partial<IUiConfig> = { recommendations: {}, supportedOverTimeComparisonTypes: [], ...disabledNoMetricConfig, ...disabledOpenAsReportConfig, ...enabledExportConfig, }; export const DEFAULT_SCATTERPLOT_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, isShowInPercentVisible: false, allowsReordering: false, canAddItems: true, itemsLimit: 1, }, secondary_measures: { ...measuresBase, isShowInPercentVisible: false, allowsReordering: false, canAddItems: true, itemsLimit: 1, }, attribute: { ...viewBase, allowsReordering: false, allowsSwapping: false, canAddItems: true, itemsLimit: MAX_STACKS_COUNT, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, }; export const DEFAULT_BUBBLE_CHART_CONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, isShowInPercentVisible: false, allowsReordering: false, canAddItems: true, itemsLimit: 1, }, secondary_measures: { ...measuresBase, isShowInPercentVisible: false, allowsReordering: false, canAddItems: true, itemsLimit: 1, }, tertiary_measures: { ...measuresBase, isShowInPercentVisible: false, allowsReordering: false, canAddItems: true, itemsLimit: 1, }, view: { ...viewBase, allowsReordering: false, allowsSwapping: false, canAddItems: true, itemsLimit: 1, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, }; export const DEFAULT_BASE_CHART_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, }, view: { ...viewBase, }, stack: { ...stackBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...enabledOpenAsReportConfig, }; export const DEFAULT_BAR_CHART_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, isShowOnSecondaryAxisVisible: true, }, view: { ...viewBase, }, stack: { ...stackBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...enabledOpenAsReportConfig, supportedOverTimeComparisonTypes: [ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ], }; export const COLUMN_BAR_CHART_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, isShowOnSecondaryAxisVisible: true, }, view: { ...viewBase, allowsReordering: true, itemsLimit: MAX_VIEW_COUNT, }, stack: { ...stackBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...enabledOpenAsReportConfig, supportedOverTimeComparisonTypes: [ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ], optionalStacking: { supported: true, stackMeasures: false, }, }; export const DEFAULT_LINE_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, isShowOnSecondaryAxisVisible: true, }, trend: { ...viewBase, }, segment: { ...stackBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...enabledOpenAsReportConfig, supportedOverTimeComparisonTypes: [ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ], }; export const DEFAULT_AREA_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, }, view: { ...viewBase, allowsReordering: true, itemsLimit: MAX_VIEW_COUNT, }, stack: { ...stackBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...enabledOpenAsReportConfig, optionalStacking: { supported: true, stackMeasures: true, }, }; export const DEFAULT_PIE_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, itemsLimit: DEFAULT_PIE_METRICS_COUNT, allowsReordering: false, }, view: { ...viewBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...enabledOpenAsReportConfig, }; export const PIE_UICONFIG_WITH_MULTIPLE_METRICS: IUiConfig = { buckets: { measures: { ...measuresBase, }, view: { ...viewBase, itemsLimit: 0, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...enabledOpenAsReportConfig, }; export const PIE_UICONFIG_WITH_ONE_METRIC: IUiConfig = { buckets: { measures: { ...measuresBase, }, view: { ...viewBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...enabledOpenAsReportConfig, }; export const DEFAULT_TREEMAP_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, }, view: { ...viewBase, }, segment: { ...stackBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, }; export const TREEMAP_UICONFIG_WITH_MULTIPLE_MEASURES: IUiConfig = { buckets: { measures: { ...measuresBase, }, view: { ...viewBase, itemsLimit: 0, }, segment: { ...stackBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, }; export const TREEMAP_UICONFIG_WITH_ONE_MEASURE: IUiConfig = { buckets: { measures: { ...measuresBase, itemsLimit: DEFAULT_TREEMAP_MEASURES_COUNT, allowsReordering: false, canAddItems: false, isShowInPercentEnabled: true, }, view: { ...viewBase, }, segment: { ...stackBase, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, }; export const DEFAULT_PIVOT_TABLE_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, }, attribute: { ...viewBase, allowsSwapping: true, allowsReordering: true, itemsLimit: MAX_TABLE_CATEGORIES_COUNT, }, columns: { ...viewBase, allowsSwapping: true, allowsReordering: true, itemsLimit: MAX_TABLE_CATEGORIES_COUNT, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...disabledOpenAsReportConfig, ...enabledNoMetricConfig, supportedOverTimeComparisonTypes: [ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ], }; export const DEFAULT_TABLE_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, }, attribute: { ...viewBase, allowsSwapping: false, allowsReordering: true, itemsLimit: MAX_TABLE_CATEGORIES_COUNT, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...enabledNoMetricConfig, ...enabledOpenAsReportConfig, supportedOverTimeComparisonTypes: [ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ], }; export const DEFAULT_HEADLINE_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, itemsLimit: DEFAULT_HEADLINE_METRICS_COUNT, isShowInPercentVisible: false, allowsReordering: false, }, secondary_measures: { ...measuresBase, itemsLimit: DEFAULT_HEADLINE_METRICS_COUNT, isShowInPercentVisible: false, allowsReordering: false, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...disabledExportConfig, supportedOverTimeComparisonTypes: [ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ], }; export const DEFAULT_HEATMAP_UICONFIG: IUiConfig = { buckets: { measures: { accepts: [METRIC, FACT, ATTRIBUTE], enabled: true, allowsReordering: false, allowsSwapping: true, itemsLimit: 1, isShowInPercentEnabled: false, isShowInPercentVisible: false, icon: "", canAddItems: true, allowsDuplicateItems: true, }, view: { accepts: [ATTRIBUTE, DATE], itemsLimit: 1, allowsSwapping: true, allowsReordering: false, enabled: true, isShowInPercentEnabled: false, icon: "", canAddItems: true, }, stack: { accepts: [ATTRIBUTE, DATE], itemsLimit: 1, allowsSwapping: true, allowsReordering: false, enabled: true, isShowInPercentEnabled: false, icon: "", canAddItems: true, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, }; export const COMBO_CHART_UICONFIG_DEPRECATED: IUiConfig = { buckets: { measures: { ...measuresBase, }, secondary_measures: { ...measuresBase, }, view: { ...viewBase, itemsLimit: 1, }, ...defaultFilters, }, recommendations: {}, supportedOverTimeComparisonTypes: [], }; export const COMBO_CHART_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, canAddItems: true, allowSelectChartType: true, allowOptionalStacking: true, }, secondary_measures: { ...measuresBase, canAddItems: true, allowSelectChartType: true, allowShowOnSecondaryAxis: true, }, view: { ...viewBase, canAddItems: true, itemsLimit: 1, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, supportedOverTimeComparisonTypes: [ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ], supportedChartTypes: [VisualizationTypes.COLUMN, VisualizationTypes.LINE, VisualizationTypes.AREA], optionalStacking: { supported: true, disabled: false, stackMeasures: false, }, }; export const DEFAULT_XIRR_UICONFIG: IUiConfig = { buckets: { measures: { ...measuresBase, accepts: [METRIC, FACT], itemsLimit: DEFAULT_XIRR_METRICS_COUNT, isShowInPercentVisible: false, }, attribute: { ...viewBase, accepts: [DATE], itemsLimit: DEFAULT_XIRR_ATTRIBUTES_COUNT, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, ...disabledExportConfig, }; const geoMeasuresBase = { ...measuresBase, allowsReordering: false, itemsLimit: DEFAULT_PUSHPIN_METRICS_COUNT, isShowInPercentVisible: false, canAddItems: true, }; const geoAttributesBase = { ...viewBase, accepts: [ATTRIBUTE], canAddItems: true, itemsLimit: DEFAULT_GEO_ATTRIBUTES_COUNT, }; export const GEO_PUSHPIN_CHART_UICONFIG: IUiConfig = { buckets: { location: { ...geoAttributesBase, accepts: [ATTRIBUTE, GEO_ATTRIBUTE], }, size: { ...geoMeasuresBase, }, color: { ...geoMeasuresBase, }, segment: { ...geoAttributesBase, }, ...defaultFilters, }, supportedLocationIcon: { supported: true }, ...defaultRootUiConfigProperties, ...enabledNoMetricConfig, }; export const DEFAULT_BULLET_CHART_CONFIG: IUiConfig = { buckets: { [MEASURES]: { ...measuresBase, isShowOnSecondaryAxisVisible: false, isShowInPercentVisible: false, allowsReordering: false, canAddItems: true, itemsLimit: 1, }, [SECONDARY_MEASURES]: { ...measuresBase, isShowOnSecondaryAxisVisible: false, isShowInPercentVisible: false, allowsReordering: false, canAddItems: true, itemsLimit: 1, }, [TERTIARY_MEASURES]: { ...measuresBase, isShowOnSecondaryAxisVisible: false, isShowInPercentVisible: false, allowsReordering: false, canAddItems: true, itemsLimit: 1, }, [VIEW]: { ...viewBase, allowsReordering: true, allowsSwapping: true, canAddItems: true, itemsLimit: 2, }, ...defaultFilters, }, ...defaultRootUiConfigProperties, supportedOverTimeComparisonTypes: [ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ], };