UNPKG

@gooddata/react-components

Version:

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

50 lines (42 loc) 1.93 kB
// (C) 2020 GoodData Corporation import { Execution } from "@gooddata/typings"; import { findAttributeInDimension } from "../executionResultHelper"; import { IUnwrappedAttributeHeaderWithItems } from "../../components/visualizations/typings/chart"; import { IGeoData } from "../../interfaces/GeoChart"; export interface IGeoAttributesInDimension { locationAttribute: IUnwrappedAttributeHeaderWithItems; segmentByAttribute: IUnwrappedAttributeHeaderWithItems; tooltipTextAttribute: IUnwrappedAttributeHeaderWithItems; } export function findGeoAttributesInDimension( execution: Execution.IExecutionResponses, geoData: IGeoData, ): IGeoAttributesInDimension { const { executionResponse: { dimensions }, executionResult: { headerItems }, } = execution; const { color, location, segment, size, tooltipText } = geoData; const hasMeasure = size || color; const attrDimensionIndex = hasMeasure ? 1 : 0; const attributeDimension: Execution.IResultDimension = dimensions[attrDimensionIndex]; const attributeResultHeaderItems: Execution.IResultHeaderItem[][] = headerItems[attrDimensionIndex]; const locationAttribute: IUnwrappedAttributeHeaderWithItems = findAttributeInDimension( attributeDimension, attributeResultHeaderItems, location.index, ); const segmentByAttribute: IUnwrappedAttributeHeaderWithItems = segment && segment.data.length ? findAttributeInDimension(attributeDimension, attributeResultHeaderItems, segment.index) : undefined; const tooltipTextAttribute: IUnwrappedAttributeHeaderWithItems = tooltipText && tooltipText.data.length ? findAttributeInDimension(attributeDimension, attributeResultHeaderItems, tooltipText.index) : undefined; return { locationAttribute, segmentByAttribute, tooltipTextAttribute, }; }