From 5b465ed18f5cebc164177a81c8e0453a6c450a54 Mon Sep 17 00:00:00 2001 From: Daniel Bachler Date: Mon, 23 Dec 2024 20:11:08 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20fix=20some=20issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../grapher/src/core/Grapher.tsx | 10 ++++++-- .../grapher/src/core/LegacyToOwidTable.ts | 24 ++++++++++++------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/packages/@ourworldindata/grapher/src/core/Grapher.tsx b/packages/@ourworldindata/grapher/src/core/Grapher.tsx index bc0b239629..81f3ab24f9 100644 --- a/packages/@ourworldindata/grapher/src/core/Grapher.tsx +++ b/packages/@ourworldindata/grapher/src/core/Grapher.tsx @@ -192,7 +192,11 @@ import { DefaultChartClass, } from "../chart/ChartTypeMap" import { Entity, SelectionArray } from "../selection/SelectionArray" -import { legacyToOwidTableAndDimensions } from "./LegacyToOwidTable" +import { + addSelectedEntityColorsToTable, + computeActualDimensions, + legacyToOwidTableAndDimensions, +} from "./LegacyToOwidTable" import { ScatterPlotManager } from "../scatterCharts/ScatterPlotChartConstants" import { autoDetectSeriesStrategy, @@ -1167,7 +1171,9 @@ export class Grapher legacyConfig.selectedEntityColors ) : table - const dimensions = legacyConfig.dimensions ?? [] + const dimensions = legacyConfig.dimensions + ? computeActualDimensions(legacyConfig.dimensions) + : [] this.createPerformanceMeasurement( "legacyToOwidTableAndDimensions", startMark diff --git a/packages/@ourworldindata/grapher/src/core/LegacyToOwidTable.ts b/packages/@ourworldindata/grapher/src/core/LegacyToOwidTable.ts index 47f6eafdda..79b4fa25e8 100644 --- a/packages/@ourworldindata/grapher/src/core/LegacyToOwidTable.ts +++ b/packages/@ourworldindata/grapher/src/core/LegacyToOwidTable.ts @@ -61,12 +61,7 @@ export const legacyToOwidTableAndDimensions = ( // We need to create a column for each unique [variable, targetTime] pair. So there can be // multiple columns for a single variable. - const newDimensions = dimensions.map((dimension) => ({ - ...dimension, - slug: dimension.targetYear - ? `${dimension.variableId}-${dimension.targetYear}` - : `${dimension.variableId}`, - })) + const newDimensions = computeActualDimensions(dimensions) const dimensionColumns = uniqBy(newDimensions, (dim) => dim.slug) const variableTablesToJoinByYear: OwidTable[] = [] @@ -333,16 +328,16 @@ export const legacyToOwidTableAndDimensions = ( export const addSelectedEntityColorsToTable = ( table: OwidTable, - selectedEntityColors: { [entityName: string]: string } + selectedEntityColors: { [entityName: string]: string | undefined } ): OwidTable => { const entityColorColumnSlug = OwidTableSlugs.entityColor const valueFn = (entityId: EntityId | undefined) => { - // see comment above about entityMetaById[id] if (!entityId) return ErrorValueTypes.UndefinedButShouldBeString const entityName = table.entityIdToNameMap.get(entityId) return entityName && selectedEntityColors - ? selectedEntityColors[entityName] + ? (selectedEntityColors[entityName] ?? + ErrorValueTypes.UndefinedButShouldBeString) : ErrorValueTypes.UndefinedButShouldBeString } @@ -743,6 +738,17 @@ const annotationsToMap = (annotations: string): Map => { return entityAnnotationsMap } +export function computeActualDimensions( + dimensions: OwidChartDimensionInterface[] +): OwidChartDimensionInterface[] { + return dimensions.map((dimension) => ({ + ...dimension, + slug: dimension.targetYear + ? `${dimension.variableId}-${dimension.targetYear}` + : `${dimension.variableId}`, + })) +} + /** * Loads a single variable into an OwidTable. */