Skip to content

Commit

Permalink
✨ (line chart) set y-axis min default to 0
Browse files Browse the repository at this point in the history
  • Loading branch information
sophiamersmann committed Oct 24, 2024
1 parent f65773a commit 6cf63e0
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 14 deletions.
8 changes: 4 additions & 4 deletions adminSiteClient/EditorCustomizeTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -577,9 +577,9 @@ export class EditorCustomizeTab<
}
resetButton={{
onClick: () =>
(yAxisConfig.min = undefined),
(yAxisConfig.min = Infinity),
disabled:
yAxisConfig.min === undefined,
yAxisConfig.min === Infinity,
}}
allowDecimal
allowNegative
Expand All @@ -592,9 +592,9 @@ export class EditorCustomizeTab<
}
resetButton={{
onClick: () =>
(yAxisConfig.max = undefined),
(yAxisConfig.max = -Infinity),
disabled:
yAxisConfig.max === undefined,
yAxisConfig.max === -Infinity,
}}
allowDecimal
allowNegative
Expand Down
19 changes: 13 additions & 6 deletions packages/@ourworldindata/grapher/src/axis/AxisConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -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 {
Expand Down Expand Up @@ -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
}
Expand Down
2 changes: 2 additions & 0 deletions packages/@ourworldindata/grapher/src/lineCharts/LineChart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ export const defaultGrapherConfig = {
maxTime: "latest",
yAxis: {
removePointsOutsideDomain: false,
min: "auto",
scaleType: "linear",
max: "auto",
canChangeScaleType: false,
Expand Down Expand Up @@ -66,7 +65,6 @@ export const defaultGrapherConfig = {
},
xAxis: {
removePointsOutsideDomain: false,
min: "auto",
scaleType: "linear",
max: "auto",
canChangeScaleType: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 6cf63e0

Please sign in to comment.