diff --git a/packages/@ourworldindata/core-table/src/CoreTableColumns.ts b/packages/@ourworldindata/core-table/src/CoreTableColumns.ts index 72bfe436e0..09120f2fba 100644 --- a/packages/@ourworldindata/core-table/src/CoreTableColumns.ts +++ b/packages/@ourworldindata/core-table/src/CoreTableColumns.ts @@ -269,6 +269,12 @@ export abstract class AbstractCoreColumn { return undefined } + @imemo get displayUnit(): string | undefined { + return this.unit && this.unit !== this.shortUnit + ? this.unit.replace(/^\((.*)\)$/, "$1") + : undefined + } + // Returns a map where the key is a series slug such as "name" and the value is a set // of all the unique values that this column has for that particular series. getUniqueValuesGroupedBy( diff --git a/packages/@ourworldindata/grapher/src/axis/Axis.ts b/packages/@ourworldindata/grapher/src/axis/Axis.ts index e3bbb71c11..a5ec9351ff 100644 --- a/packages/@ourworldindata/grapher/src/axis/Axis.ts +++ b/packages/@ourworldindata/grapher/src/axis/Axis.ts @@ -493,17 +493,31 @@ abstract class AbstractAxis { } @computed get labelTextWrap(): MarkdownTextWrap | undefined { - const text = this.label - return text - ? new MarkdownTextWrap({ - maxWidth: this.labelMaxWidth, - fontSize: this.labelFontSize, - text, - lineHeight: 1, - detailsOrderedByReference: - this.axisManager?.detailsOrderedByReference, - }) - : undefined + if (!this.label) return + + const textWrapProps = { + maxWidth: this.labelMaxWidth, + fontSize: this.labelFontSize, + lineHeight: 1, + detailsOrderedByReference: + this.axisManager?.detailsOrderedByReference, + } + + const displayUnit = this.formatColumn?.displayUnit + if (displayUnit) { + return MarkdownTextWrap.fromFragments({ + main: { text: this.label, bold: true }, + secondary: { text: `(${displayUnit})` }, + newLine: "avoid-wrap", + textWrapProps, + }) + } else { + return new MarkdownTextWrap({ + text: this.label, + fontWeight: 700, + ...textWrapProps, + }) + } } @computed get labelHeight(): number { diff --git a/packages/@ourworldindata/grapher/src/tooltip/TooltipContents.tsx b/packages/@ourworldindata/grapher/src/tooltip/TooltipContents.tsx index 18fad5e9d4..a5e6d85c76 100644 --- a/packages/@ourworldindata/grapher/src/tooltip/TooltipContents.tsx +++ b/packages/@ourworldindata/grapher/src/tooltip/TooltipContents.tsx @@ -132,11 +132,7 @@ class Variable extends React.Component<{ if (column.isMissing || column.name === "time") return null - const { unit, shortUnit, displayName } = column, - displayUnit = - unit && unit !== shortUnit - ? unit.replace(/^\((.*)\)$/, "$1") - : undefined, + const { displayUnit, displayName } = column, displayNotice = uniq((notice ?? []).filter((t) => t !== undefined)) .map((time) =>