Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 allow single-entity selection for charts split by metric / TAS-828 #4476

Merged
merged 1 commit into from
Jan 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { MigrationInterface, QueryRunner } from "typeorm"

// As part of the migration, we'll update all charts that are split by metric
// and have a 'change-country' setting to use the 'add-country' setting instead.
// These charts should be excluded from the migration since the 'change-country'
// is more appropriate for them.
const slugs = [
"cancer-death-rates-by-age",
"neonatal-deaths-by-cause",
"dealing-with-anxiety-depression-approaches",
"mental-illness-estimated-cases",
"deaths-from-cardiovascular-disease-type",
"country-level-monthly-temperature-anomalies",
"summer-temperature-anomalies",
"winter-temperature-anomalies",
"autumn-temperature-anomalies",
"spring-temperature-anomalies",
"5-year-survival-rate-of-cancers-among-female-patients-in-england",
]

export class RetainMultiEntitySelectionForChartsSplitByMetric1737580227406
implements MigrationInterface
{
public async up(queryRunner: QueryRunner): Promise<void> {
// Charts faceted by metric used to ignore the 'change-country' setting
// and offer multi-entity selection always. The code change that comes
// with this migration makes it so that the 'change-country' setting
// is respected. This migration updates all existing charts that relied
// on the old behavior to use the 'add-country' setting explicitly.
await queryRunner.query(
`
UPDATE chart_configs
SET
patch = JSON_SET(patch, '$.addCountryMode', 'add-country'),
full = JSON_SET(full, '$.addCountryMode', 'add-country')
WHERE
full ->> '$.addCountryMode' = 'change-country'
AND full ->> '$.selectedFacetStrategy' = 'metric'
AND slug NOT IN (?);
`,
[slugs]
)
}

public async down(): Promise<void> {
// no-op
}
}
11 changes: 3 additions & 8 deletions packages/@ourworldindata/grapher/src/core/Grapher.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3692,16 +3692,11 @@ export class Grapher
if (this.addCountryMode === EntitySelectionMode.MultipleEntities)
return true

// if the chart is currently faceted by entity, then use multi-entity
// selection, even if the author specified single-entity selection
if (
// we force multi-entity selection mode when the chart is faceted
this.addCountryMode === EntitySelectionMode.SingleEntity &&
this.facetStrategy !== FacetStrategy.none &&
// unless the author explicitly configured the chart to be split
// by metric and hid the facet control
!(
this.facetStrategy === FacetStrategy.metric &&
this.hideFacetControl
)
this.facetStrategy === FacetStrategy.entity
)
return true

Expand Down
Loading