diff --git a/adminSiteClient/EditorCustomizeTab.tsx b/adminSiteClient/EditorCustomizeTab.tsx index cdbc1cb260b..ae3cdf5bedc 100644 --- a/adminSiteClient/EditorCustomizeTab.tsx +++ b/adminSiteClient/EditorCustomizeTab.tsx @@ -577,9 +577,9 @@ export class EditorCustomizeTab< } resetButton={{ onClick: () => - (yAxisConfig.min = undefined), + (yAxisConfig.min = Infinity), disabled: - yAxisConfig.min === undefined, + yAxisConfig.min === Infinity, }} allowDecimal allowNegative @@ -592,9 +592,9 @@ export class EditorCustomizeTab< } resetButton={{ onClick: () => - (yAxisConfig.max = undefined), + (yAxisConfig.max = -Infinity), disabled: - yAxisConfig.max === undefined, + yAxisConfig.max === -Infinity, }} allowDecimal allowNegative diff --git a/packages/@ourworldindata/grapher/src/axis/AxisConfig.ts b/packages/@ourworldindata/grapher/src/axis/AxisConfig.ts index 2226665d24c..676da96add0 100644 --- a/packages/@ourworldindata/grapher/src/axis/AxisConfig.ts +++ b/packages/@ourworldindata/grapher/src/axis/AxisConfig.ts @@ -45,10 +45,17 @@ class AxisConfigDefaults implements AxisConfigInterface { @observable.ref domainValues?: number[] = undefined } -function parseAutoOrNumberFromJSON( +function parseMinFromJSON( value: AxisMinMaxValueStr.auto | number | undefined ): number | undefined { - if (value === AxisMinMaxValueStr.auto) return undefined + if (value === AxisMinMaxValueStr.auto) return Infinity + return value +} + +function parseMaxFromJSON( + value: AxisMinMaxValueStr.auto | number | undefined +): number | undefined { + if (value === AxisMinMaxValueStr.auto) return -Infinity return value } @@ -67,8 +74,8 @@ export class AxisConfig // todo: test/refactor updateFromObject(props?: AxisConfigInterface): void { if (props) extend(this, props) - if (props?.min) this.min = parseAutoOrNumberFromJSON(props?.min) - if (props?.max) this.max = parseAutoOrNumberFromJSON(props?.max) + if (props?.min) this.min = parseMinFromJSON(props?.min) + if (props?.max) this.max = parseMaxFromJSON(props?.max) } toObject(): AxisConfigInterface { @@ -96,8 +103,8 @@ export class AxisConfig deleteRuntimeAndUnchangedProps(obj, new AxisConfigDefaults()) - if (obj.min === undefined) obj.min = AxisMinMaxValueStr.auto - if (obj.max === undefined) obj.max = AxisMinMaxValueStr.auto + if (obj.min === Infinity) obj.min = AxisMinMaxValueStr.auto + if (obj.max === -Infinity) obj.max = AxisMinMaxValueStr.auto return obj } diff --git a/packages/@ourworldindata/grapher/src/lineCharts/LineChart.tsx b/packages/@ourworldindata/grapher/src/lineCharts/LineChart.tsx index 6b6e2b64ce4..37d5c4f16e7 100644 --- a/packages/@ourworldindata/grapher/src/lineCharts/LineChart.tsx +++ b/packages/@ourworldindata/grapher/src/lineCharts/LineChart.tsx @@ -1342,6 +1342,8 @@ export class LineChart // horizontal axis to be at the bottom of the chart. // see https://github.com/owid/owid-grapher/pull/975#issuecomment-890798547 singleValueAxisPointAlign: AxisAlign.start, + // default to 0 if not set + min: 0, ...this.manager.yAxisConfig, }, this diff --git a/packages/@ourworldindata/grapher/src/schema/defaultGrapherConfig.ts b/packages/@ourworldindata/grapher/src/schema/defaultGrapherConfig.ts index 6497d08f13c..dd0f68334e2 100644 --- a/packages/@ourworldindata/grapher/src/schema/defaultGrapherConfig.ts +++ b/packages/@ourworldindata/grapher/src/schema/defaultGrapherConfig.ts @@ -26,7 +26,6 @@ export const defaultGrapherConfig = { maxTime: "latest", yAxis: { removePointsOutsideDomain: false, - min: "auto", scaleType: "linear", max: "auto", canChangeScaleType: false, @@ -66,7 +65,6 @@ export const defaultGrapherConfig = { }, xAxis: { removePointsOutsideDomain: false, - min: "auto", scaleType: "linear", max: "auto", canChangeScaleType: false, diff --git a/packages/@ourworldindata/grapher/src/schema/grapher-schema.005.yaml b/packages/@ourworldindata/grapher/src/schema/grapher-schema.005.yaml index 79ca82b4122..4465a68f6c0 100644 --- a/packages/@ourworldindata/grapher/src/schema/grapher-schema.005.yaml +++ b/packages/@ourworldindata/grapher/src/schema/grapher-schema.005.yaml @@ -514,8 +514,9 @@ $defs: type: string description: Axis label min: - description: Minimum domain value of the axis. Inferred from data if set to "auto". - default: auto + description: | + Minimum domain value of the axis. Inferred from data if set to "auto". + Usually defaults to "auto", but defaults to 0 for line charts on the y-axis. oneOf: - type: number - type: string