diff --git a/scripts/codemod-v1-to-v2.test.ts b/scripts/codemod-v1-to-v2.test.ts index 0b03e2e4..4e7ceae9 100644 --- a/scripts/codemod-v1-to-v2.test.ts +++ b/scripts/codemod-v1-to-v2.test.ts @@ -192,7 +192,9 @@ describe("upgradeV1ToV2", () => { const { doc } = upgradeV1ToV2(v1({})); const kf = doc.keyFeatures; expect(Object.keys(kf)).toHaveLength(11); - for (const entries of Object.values(kf)) { + for (const [field, entries] of Object.entries(kf)) { + // Power-only, so Electrification has no scope it can apply to: see below. + if (field === "electrification") continue; expect(entries).toHaveLength(1); expect(entries[0].sector).toBe("Power"); expect(entries[0].geography).toBe("Global"); @@ -200,6 +202,28 @@ describe("upgradeV1ToV2", () => { expect(kf.emissionsTrajectory[0].value).toBe("Significant decrease"); }); + it("emits no Electrification for a Power-only pathway, which it cannot apply to", () => { + expect(upgradeV1ToV2(v1({})).doc.keyFeatures.electrification).toEqual([]); + }); + + it("keeps Electrification across sectors for a multi-sector pathway", () => { + const { doc } = upgradeV1ToV2( + v1({ + sectors: [ + { name: "Power", technologies: [] }, + { name: "Buildings", technologies: [] }, + ], + } as Partial), + ); + expect(doc.keyFeatures.electrification).toEqual([ + { + sector: "across sectors", + geography: "Global", + value: "Significant increase", + }, + ]); + }); + it("nests an array-valued field rather than splatting it into entries", () => { const doc = upgradeV1ToV2( v1({ diff --git a/scripts/codemod-v1-to-v2.ts b/scripts/codemod-v1-to-v2.ts index 575b0659..dc586956 100644 --- a/scripts/codemod-v1-to-v2.ts +++ b/scripts/codemod-v1-to-v2.ts @@ -39,6 +39,7 @@ import { fileURLToPath } from "node:url"; import type { PathwayMetadataV1 } from "../src/types/pathwayMetadata.v1.d.ts"; import type { PathwayMetadataV2 } from "../src/types/pathwayMetadata.v2.d.ts"; import { technologyBelongsToSector } from "../src/utils/timeseriesTaxonomy.ts"; +import { isForbiddenKeyFeatureSector } from "../src/utils/keyFeatureRules.ts"; const V1_ID = "http://pathways.rmi.org/schema/pathwayMetadata.v1.json"; const V2_ID = "http://pathways.rmi.org/schema/pathwayMetadata.v2.json"; @@ -223,7 +224,14 @@ export function upgradeV1ToV2(doc: PathwayMetadataV1): UpgradeResult { ), energyEfficiency: scoped(sector, geography, kf.energyEfficiency), energyDemand: scoped(sector, geography, kf.energyDemand), - electrification: scoped(sector, geography, kf.electrification), + // A Power-only pathway's widest scope is Power, which electrification + // cannot apply to: the pair carries no value at all. + electrification: isForbiddenKeyFeatureSector( + "electrification", + sector, + ) + ? [] + : scoped(sector, geography, kf.electrification), policyTypes: scoped(sector, geography, kf.policyTypes), technologyCostTrend: scoped( sector, diff --git a/scripts/import-pathway-data.test.ts b/scripts/import-pathway-data.test.ts index 3c5ce97d..6b632cda 100644 --- a/scripts/import-pathway-data.test.ts +++ b/scripts/import-pathway-data.test.ts @@ -18,6 +18,7 @@ import { buildDataAvailability, descriptionFromV1, keyFeaturesFromV1, + buildKeyFeatures, charCount, withinLimit, buildCoreDrivers, @@ -164,12 +165,17 @@ describe("value normalization", () => { expect(isAbsent("No information")).toBe(false); }); - it("does not treat the scope sentinels as absent", () => { - // Cookbook decision 0023 made these authored values, and #858 added them to - // the schema. They used to be swallowed here, which discarded the very - // distinction they exist to draw: an explicit value terminates #869's + it("does not treat the scope sentinel as absent", () => { + // Cookbook decision 0023 made it an authored value, and #858 added it to + // the schema. It used to be swallowed here, which discarded the very + // distinction it exists to draw: an explicit value terminates #869's // fallback chain where an absent entry keeps broadening. expect(isAbsent("Not applicable at this scope level")).toBe(false); + }); + + it("does not treat 0023's measure-level Not Applicable as absent either", () => { + // It means something only at a forbidden pair, where buildKeyFeatures + // drops it; anywhere else it must reach the off-enum report. expect(isAbsent("Not Applicable")).toBe(false); }); @@ -490,6 +496,99 @@ describe("keyFeaturesFromV1", () => { expect(keyFeaturesFromV1(v2, new Report(), "T")).toBeNull(); expect(keyFeaturesFromV1(null, new Report(), "T")).toBeNull(); }); + it("drops Electrification of a Power-only pathway, which cannot apply", () => { + const kf = keyFeaturesFromV1( + { + ...v1, + keyFeatures: { ...v1.keyFeatures, electrification: "Minor increase" }, + }, + new Report(), + "T", + ); + expect(kf?.electrification).toEqual([]); + expect(kf?.emissionsTrajectory).toHaveLength(1); + }); +}); + +describe("buildKeyFeatures", () => { + const SECTORS = new Set(["Power", "Buildings"]); + const GEOS = new Set(["across regions", "TH", "VN"]); + const row = (sector: string, geography: string, electrification: string) => ({ + "Key features sector scope": sector, + "Key features regional scope": geography, + "Emissions trajectory": "Moderate decrease", + "Electrification": electrification, + }); + + it.each(["No information", "Moderate increase"])( + "refuses an Electrification cell on a Power row holding %s", + (value) => { + const report = new Report(); + const kf = buildKeyFeatures( + [row("Power", "TH", value), row("Power", "VN", value)], + SECTORS, + GEOS, + report, + "T", + ); + // One error naming both rows, not one per cell. + expect(report.errors).toHaveLength(1); + expect(report.errors[0]).toContain( + "T: Electrification cannot apply to the Power sector", + ); + expect(report.errors[0]).toContain("{TH, VN}"); + expect(kf.electrification).toEqual([]); + // The rest of the row still imports. + expect(kf.emissionsTrajectory).toHaveLength(2); + }, + ); + + it.each(["", "Not Applicable", " not applicable "])( + "accepts and drops an Electrification cell on a Power row holding %j", + (value) => { + const report = new Report(); + const kf = buildKeyFeatures( + [row("Power", "TH", value)], + SECTORS, + GEOS, + report, + "T", + ); + expect(report.errors).toEqual([]); + expect(report.lines).toEqual([]); + expect(kf.electrification).toEqual([]); + }, + ); + + it("still reports Not Applicable off-enum away from a forbidden pair", () => { + const report = new Report(); + const kf = buildKeyFeatures( + [row("Buildings", "TH", "Not Applicable")], + SECTORS, + GEOS, + report, + "T", + ); + expect(report.errors).toEqual([]); + expect(report.lines.join("\n")).toContain("off-enum value(s) dropped"); + expect(kf.electrification).toEqual([]); + }); + + it("imports Electrification for other sectors and across sectors", () => { + const report = new Report(); + const kf = buildKeyFeatures( + [ + row("Buildings", "TH", "Minor increase"), + row("across sectors", "across regions", "Moderate increase"), + ], + SECTORS, + GEOS, + report, + "T", + ); + expect(report.errors).toEqual([]); + expect(kf.electrification).toHaveLength(2); + }); }); describe("data-availability cell parsing", () => { diff --git a/scripts/import-pathway-data.ts b/scripts/import-pathway-data.ts index bbfb4ba0..d906b8e6 100644 --- a/scripts/import-pathway-data.ts +++ b/scripts/import-pathway-data.ts @@ -42,6 +42,10 @@ import { availabilityMetricsForSector, technologyBelongsToSector, } from "../src/utils/timeseriesTaxonomy.ts"; +import { + isForbiddenKeyFeatureSector, + type KeyFeatureKey, +} from "../src/utils/keyFeatureRules.ts"; import countryCodeSchema from "../src/schema/common/countryCode.v1.json" with { type: "json" }; import pathwayMetadataV2Schema from "../src/schema/pathwayMetadata.v2.json" with { type: "json" }; import sectorSchema from "../src/schema/common/sector.v1.json" with { type: "json" }; @@ -764,20 +768,28 @@ async function readWorkbook(path: string, prefix: string): Promise { // Value normalization helpers. // -------------------------------------------------------------------------- +/** 0023's measure-level marker, lower-cased; meaningful only at a forbidden pair. */ +const NOT_APPLICABLE_CELL = "not applicable"; + /** Cells that mean "no value at this scope" -- the entry is omitted entirely. */ /** * Whether a cell records nothing at all, as against recording an absence. * * The `not applicable` / `not available` prefixes used to be here, and taking - * them out is the point of the change. Cookbook decision 0023 made those - * authored values rather than empty cells: `Not applicable at this scope level` - * says this row is not the widest scope the field is calculated for, and - * `Not Applicable` says the measure is meaningless for the sector at any scope. - * #858 added both to the schema, and the epic turns on the distinction — an + * them out is the point of the change. Cookbook decision 0023 made + * `Not applicable at this scope level` an authored value rather than an empty + * cell: it says this row is not the widest scope the field is calculated for. + * #858 added it to the schema, and the epic turns on the distinction — an * explicit value terminates #869's fallback chain where an absent entry keeps - * broadening. Swallowing them here threw away exactly what they were added to + * broadening. Swallowing it here threw away exactly what it was added to * express. * + * 0023's other value, `Not Applicable` for a measure that is meaningless for + * the sector (Electrification × Power), stays in the workbook but not in the + * data: such a pair has no entry at all. It is deliberately not absent here, + * because it means something only at a forbidden pair; {@link buildKeyFeatures} + * drops it there, and anywhere else it is off-enum and reported. + * * A consequence worth keeping: a cell still carrying a pre-0023 spelling now * fails `matchEnum` and is reported in `badValues` instead of vanishing, so the * importer's own report names the cells left to correct. @@ -1046,8 +1058,16 @@ type ScopedEntry = { * Emits every resolvable (sector, geography) scope. Entries whose sector or * geography does not resolve against the pathway's declared coverage are * omitted and reported, so the file still passes validateScopedEntries. + * + * A cell at a field × sector that cannot apply (Electrification × Power, see + * `FORBIDDEN_KEY_FEATURE_SECTORS`) is written as no entry at all. The workbook + * may say so with 0023's `Not Applicable` or leave the cell blank; either is + * dropped. Any other value there -- `No information` included -- is an + * authoring error that stops the import, as validateScopedEntries would reject + * the entry. Refused rather than dropped, so the workbook and the data cannot + * disagree about what the pathway reports. */ -function buildKeyFeatures( +export function buildKeyFeatures( rows: Row[], declaredSectors: Set, geoAllowed: Set, @@ -1063,6 +1083,8 @@ function buildKeyFeatures( const badSectors = new Set(); const badGeos = new Set(); const badValues = new Set(); + // "\0" -> the geographies of rows with a value there. + const forbidden = new Map(); let dupScopes = 0; for (const row of rows) { @@ -1096,6 +1118,12 @@ function buildKeyFeatures( for (const [column, field] of Object.entries(KF_COLUMN_TO_FIELD)) { const raw = row[column] ?? ""; if (isAbsent(raw)) continue; + if (isForbiddenKeyFeatureSector(field as KeyFeatureKey, sector)) { + if (raw.trim().toLowerCase() === NOT_APPLICABLE_CELL) continue; + const key = `${column}\u0000${sector}`; + forbidden.set(key, [...(forbidden.get(key) ?? []), geography]); + continue; + } let value: string | string[] | null = null; if (KF_ARRAY_FIELDS.has(field)) { const tokens = splitList(raw); @@ -1141,6 +1169,17 @@ function buildKeyFeatures( if (dupScopes) parts.push(`${dupScopes} duplicate-scope value(s) collapsed`); if (parts.length > 1) report.note(`${id}: ${parts.join("; ")}`); + // One error per column and sector, naming its rows, rather than one per cell: + // a pathway can have dozens of Power rows. + for (const [key, geographies] of forbidden) { + const [column, sector] = key.split("\u0000"); + report.error( + `${id}: ${column} cannot apply to the ${sector} sector, but ${geographies.length}` + + ` ${sector} row(s) give it a value {${geographies.join(", ")}} -- leave` + + ` those ${column} cells blank or "Not Applicable" (not "No information")`, + ); + } + for (const field of Object.keys(fields)) { fields[field].sort( (a, b) => diff --git a/src/components/KeyFeatures.test.tsx b/src/components/KeyFeatures.test.tsx index 50a109dc..b6deb571 100644 --- a/src/components/KeyFeatures.test.tsx +++ b/src/components/KeyFeatures.test.tsx @@ -462,7 +462,6 @@ describe("FeatureItem with a resolution (#869)", () => { it("inherits Electrification of Power from across sectors, and says why", async () => { renderResolved("electrification", [ - e("Power", "TH", "Not Applicable"), e("across sectors", "South East Asia", "Moderate increase"), ]); @@ -474,11 +473,23 @@ describe("FeatureItem with a resolution (#869)", () => { ); }); - it("shows No information for Electrification of Power with nothing across sectors", async () => { - renderResolved("electrification", [e("Power", "TH", "Not Applicable")]); + it("shows Not applicable for Electrification of Power with nothing across sectors", async () => { + renderResolved("electrification", []); - expect(screen.queryByText(/not applicable/i)).not.toBeInTheDocument(); + expect(screen.queryByText("No information")).not.toBeInTheDocument(); expect(queryScopeBadge()).not.toBeInTheDocument(); + expect(await tooltipOf("Not applicable")).toBe( + "Electrification does not apply to the Power sector.", + ); + }); + + it("still shows No information for Electrification of another sector", async () => { + renderResolved("electrification", [], { + sector: "Buildings", + geography: "TH", + }); + + expect(screen.queryByText("Not applicable")).not.toBeInTheDocument(); expect(await tooltipOf("No information")).toBe( "Nothing is recorded for this pathway at any scope.", ); @@ -644,9 +655,6 @@ describe("feature config against the schema", () => { "No information", // Skipped by the resolver, never rendered. "Not applicable at this scope level", - // Skipped by the resolver like the sentinel above. The validator (PR 2) - // limits it to Electrification × Power. - "Not Applicable", ]); type ValueSchema = { diff --git a/src/components/KeyFeatures.tsx b/src/components/KeyFeatures.tsx index 1c65740f..3b265f52 100644 --- a/src/components/KeyFeatures.tsx +++ b/src/components/KeyFeatures.tsx @@ -286,6 +286,12 @@ export const GROUPS: GroupConfig[] = [ /** The visible text of every absent value, authored or not. */ const NO_INFORMATION = "No information"; +/** + * The visible text where a feature cannot apply to the sector and the pathway + * reports nothing broader to show instead. Kept apart from "No information", + * which means the pathway could say something here and doesn't. + */ +const NOT_APPLICABLE = "Not applicable"; /* Tooltip copy for the states the resolver tells apart (#869). Authored and @@ -297,6 +303,14 @@ const AUTHORED_NO_INFORMATION_TOOLTIP = "The pathway does not report this."; const UNAVAILABLE_TOOLTIP = "Nothing is recorded for this pathway at any scope."; +/** Why a feature has nothing to show for a sector it cannot apply to. */ +function notApplicableTooltip( + feature: FeatureConfig, + notApplicableSector: string, +): string { + return `${feature.label} does not apply to the ${notApplicableSector} sector.`; +} + /** * Why a value is inherited. A feature that cannot apply to the requested sector * says so, rather than claiming that sector simply has no value. @@ -348,14 +362,21 @@ export const FeatureItem: React.FC = ({ // Only a resolution can say which kind of absence this is, so the // widest-value path keeps its untooltipped badge. - const absenceTooltip = + const notApplicableSector = resolution?.status === "unavailable" + ? resolution.notApplicableSector + : undefined; + const absenceTooltip = notApplicableSector + ? notApplicableTooltip(feature, notApplicableSector) + : resolution?.status === "unavailable" ? UNAVAILABLE_TOOLTIP : resolution ? AUTHORED_NO_INFORMATION_TOOLTIP : undefined; - const noInformation = ( - {NO_INFORMATION} + const absenceBadge = ( + + {notApplicableSector ? NOT_APPLICABLE : NO_INFORMATION} + ); // Names the broader scope an inherited value came from (#859). @@ -422,7 +443,7 @@ export const FeatureItem: React.FC = ({
{selectedOnly ? selected === NO_INFORMATION - ? noInformation + ? absenceBadge : pill(selected, true) : feature.options.map((opt) => pill(opt, opt === selected))}
@@ -443,7 +464,7 @@ export const FeatureItem: React.FC = ({
{selectedOnly ? validSelected.length === 0 - ? noInformation + ? absenceBadge : validSelected.map((opt) => pill(opt, true)) : feature.options.map((opt) => pill(opt, selectedArr.includes(opt)), @@ -466,7 +487,7 @@ export const FeatureItem: React.FC = ({ ); const textColor = palette[selectedIndex]?.text ?? "text-rmigray-500"; const valueDisplay = isNoInfo ? ( - noInformation + absenceBadge ) : ( {selectedValue} @@ -516,7 +537,7 @@ export const FeatureItem: React.FC = ({ ? "text-rmigray-500" : NEUTRAL_SELECTED_COLOR.text; const valueDisplay = isNoInfo ? ( - noInformation + absenceBadge ) : ( {selectedValue} diff --git a/src/data/cgs-iesr/CGS-IESR-1-5-2024.json b/src/data/cgs-iesr/CGS-IESR-1-5-2024.json index bb4c72c2..26c8f688 100644 --- a/src/data/cgs-iesr/CGS-IESR-1-5-2024.json +++ b/src/data/cgs-iesr/CGS-IESR-1-5-2024.json @@ -95,13 +95,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/cgs-iesr/CGS-IESR-BAU-2024.json b/src/data/cgs-iesr/CGS-IESR-BAU-2024.json index ec59f9c0..eca171b9 100644 --- a/src/data/cgs-iesr/CGS-IESR-BAU-2024.json +++ b/src/data/cgs-iesr/CGS-IESR-BAU-2024.json @@ -78,13 +78,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/iea/IEA-APS-2024.json b/src/data/iea/IEA-APS-2024.json index 5dd7b3f2..3f14eb11 100644 --- a/src/data/iea/IEA-APS-2024.json +++ b/src/data/iea/IEA-APS-2024.json @@ -1623,11 +1623,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -1688,61 +1683,6 @@ "geography": "Southeast Asia", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Advanced economies", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Asia Pacific", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central and South America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eurasia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "OECD", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Advanced economies", @@ -1828,36 +1768,6 @@ "geography": "US", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "BR", diff --git a/src/data/iea/IEA-CPS-2025.json b/src/data/iea/IEA-CPS-2025.json index b99b6b5b..0431a29c 100644 --- a/src/data/iea/IEA-CPS-2025.json +++ b/src/data/iea/IEA-CPS-2025.json @@ -865,86 +865,6 @@ "sector": "across sectors", "geography": "US", "value": "Low or no change" - }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Asia Pacific", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central and South America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eurasia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/iea/IEA-NZE-2024.json b/src/data/iea/IEA-NZE-2024.json index f7dfee58..90f1f53a 100644 --- a/src/data/iea/IEA-NZE-2024.json +++ b/src/data/iea/IEA-NZE-2024.json @@ -185,11 +185,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", diff --git a/src/data/iea/IEA-NZE-2025.json b/src/data/iea/IEA-NZE-2025.json index 0610cbdf..841ed54f 100644 --- a/src/data/iea/IEA-NZE-2025.json +++ b/src/data/iea/IEA-NZE-2025.json @@ -149,11 +149,6 @@ "sector": "across sectors", "geography": "Global", "value": "Significant increase" - }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/iea/IEA-STEPS-2024.json b/src/data/iea/IEA-STEPS-2024.json index 3b6aa54a..0699f370 100644 --- a/src/data/iea/IEA-STEPS-2024.json +++ b/src/data/iea/IEA-STEPS-2024.json @@ -1627,11 +1627,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -1692,61 +1687,6 @@ "geography": "Southeast Asia", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Advanced economies", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Asia Pacific", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central and South America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eurasia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "OECD", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Advanced economies", @@ -1832,36 +1772,6 @@ "geography": "US", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "BR", diff --git a/src/data/iea/IEA-STEPS-2025.json b/src/data/iea/IEA-STEPS-2025.json index 6fd3cf54..c81c03e6 100644 --- a/src/data/iea/IEA-STEPS-2025.json +++ b/src/data/iea/IEA-STEPS-2025.json @@ -865,86 +865,6 @@ "sector": "across sectors", "geography": "US", "value": "Minor increase" - }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Asia Pacific", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central and South America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eurasia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/jetp-id/JETP-CIPP-2023.json b/src/data/jetp-id/JETP-CIPP-2023.json index ef91bdf3..a29f71d3 100644 --- a/src/data/jetp-id/JETP-CIPP-2023.json +++ b/src/data/jetp-id/JETP-CIPP-2023.json @@ -76,13 +76,7 @@ "value": "Significant increase" } ], - "electrification": [ - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/jrc/JRC-GECO-1-5-2025.json b/src/data/jrc/JRC-GECO-1-5-2025.json index f4f5caf4..598d7186 100644 --- a/src/data/jrc/JRC-GECO-1-5-2025.json +++ b/src/data/jrc/JRC-GECO-1-5-2025.json @@ -1657,201 +1657,6 @@ "sector": "across sectors", "geography": "ZA", "value": "Moderate increase" - }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Algeria & Libya", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EFTA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Mediterranean Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Morocco & Tunisia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Balkans", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Central America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest of Commonwealth of Independent States", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest of Persian Gulf", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Pacific", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest South America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest South East Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Sub-Saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CL", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EG", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "GB", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "SA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "UA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/jrc/JRC-GECO-NDC-LTS-2025.json b/src/data/jrc/JRC-GECO-NDC-LTS-2025.json index eee2c2fe..c571bb83 100644 --- a/src/data/jrc/JRC-GECO-NDC-LTS-2025.json +++ b/src/data/jrc/JRC-GECO-NDC-LTS-2025.json @@ -1644,201 +1644,6 @@ "sector": "across sectors", "geography": "ZA", "value": "Moderate increase" - }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Algeria & Libya", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EFTA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Mediterranean Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Morocco & Tunisia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Balkans", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Central America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest of Commonwealth of Independent States", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest of Persian Gulf", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Pacific", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest South America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest South East Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Sub-Saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CL", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EG", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "GB", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "SA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "UA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/jrc/JRC-GECO-REFERENCE-2025.json b/src/data/jrc/JRC-GECO-REFERENCE-2025.json index 141660ea..402d1c87 100644 --- a/src/data/jrc/JRC-GECO-REFERENCE-2025.json +++ b/src/data/jrc/JRC-GECO-REFERENCE-2025.json @@ -1644,201 +1644,6 @@ "sector": "across sectors", "geography": "ZA", "value": "Moderate increase" - }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Algeria & Libya", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EFTA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Mediterranean Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Morocco & Tunisia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Balkans", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Central America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest of Commonwealth of Independent States", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest of Persian Gulf", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Pacific", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest South America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest South East Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Sub-Saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CL", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EG", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "GB", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "SA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "UA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/ngfs/NGFS-B2C-GCAM-2024.json b/src/data/ngfs/NGFS-B2C-GCAM-2024.json index ed027747..2669a64c 100644 --- a/src/data/ngfs/NGFS-B2C-GCAM-2024.json +++ b/src/data/ngfs/NGFS-B2C-GCAM-2024.json @@ -2554,11 +2554,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -2724,166 +2719,6 @@ "geography": "USA", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Africa Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Western", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Australia NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central America and Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CO", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-12", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-15", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Non EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Free Trade Association", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PK", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TW", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "USA", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Africa Eastern", diff --git a/src/data/ngfs/NGFS-B2C-MESSAGE-2024.json b/src/data/ngfs/NGFS-B2C-MESSAGE-2024.json index 10a42b14..b3c30729 100644 --- a/src/data/ngfs/NGFS-B2C-MESSAGE-2024.json +++ b/src/data/ngfs/NGFS-B2C-MESSAGE-2024.json @@ -1061,76 +1061,11 @@ "geography": "Western Europe", "value": "Moderate increase" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eastern Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East and North Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Pacific Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Pacific OECD", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Centrally Planned Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Western Europe", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "China", diff --git a/src/data/ngfs/NGFS-B2C-REMIND-2024.json b/src/data/ngfs/NGFS-B2C-REMIND-2024.json index 13fb45be..09d4d094 100644 --- a/src/data/ngfs/NGFS-B2C-REMIND-2024.json +++ b/src/data/ngfs/NGFS-B2C-REMIND-2024.json @@ -1298,11 +1298,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -1368,66 +1363,6 @@ "geography": "US", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Canada / NZ / Australia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Countries from the Reforming Economies of the Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU 28", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East / North Africa / Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Non-EU28 Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Canada / NZ / Australia", diff --git a/src/data/ngfs/NGFS-CP-GCAM-2024.json b/src/data/ngfs/NGFS-CP-GCAM-2024.json index 60a6d48b..97490509 100644 --- a/src/data/ngfs/NGFS-CP-GCAM-2024.json +++ b/src/data/ngfs/NGFS-CP-GCAM-2024.json @@ -2553,11 +2553,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -2723,166 +2718,6 @@ "geography": "USA", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Africa Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Western", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Australia NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central America and Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CO", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-12", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-15", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Non EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Free Trade Association", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PK", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TW", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "USA", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Africa Eastern", diff --git a/src/data/ngfs/NGFS-CP-MESSAGE-2024.json b/src/data/ngfs/NGFS-CP-MESSAGE-2024.json index 881801ac..86f58612 100644 --- a/src/data/ngfs/NGFS-CP-MESSAGE-2024.json +++ b/src/data/ngfs/NGFS-CP-MESSAGE-2024.json @@ -1061,76 +1061,11 @@ "geography": "Western Europe", "value": "Low or no change" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eastern Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East and North Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Pacific Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Pacific OECD", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Centrally Planned Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Western Europe", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "China", diff --git a/src/data/ngfs/NGFS-CP-REMIND-2024.json b/src/data/ngfs/NGFS-CP-REMIND-2024.json index 66f80592..7ed2e1b7 100644 --- a/src/data/ngfs/NGFS-CP-REMIND-2024.json +++ b/src/data/ngfs/NGFS-CP-REMIND-2024.json @@ -1298,11 +1298,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -1368,66 +1363,6 @@ "geography": "US", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Canada / NZ / Australia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Countries from the Reforming Economies of the Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU 28", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East / North Africa / Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Non-EU28 Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Canada / NZ / Australia", diff --git a/src/data/ngfs/NGFS-DT-GCAM-2024.json b/src/data/ngfs/NGFS-DT-GCAM-2024.json index 2243802d..da79c317 100644 --- a/src/data/ngfs/NGFS-DT-GCAM-2024.json +++ b/src/data/ngfs/NGFS-DT-GCAM-2024.json @@ -2554,11 +2554,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -2724,166 +2719,6 @@ "geography": "USA", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Africa Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Western", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Australia NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central America and Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CO", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-12", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-15", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Non EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Free Trade Association", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PK", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TW", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "USA", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Africa Eastern", diff --git a/src/data/ngfs/NGFS-DT-MESSAGE-2024.json b/src/data/ngfs/NGFS-DT-MESSAGE-2024.json index 71c20c40..9c6e823f 100644 --- a/src/data/ngfs/NGFS-DT-MESSAGE-2024.json +++ b/src/data/ngfs/NGFS-DT-MESSAGE-2024.json @@ -1061,76 +1061,11 @@ "geography": "Western Europe", "value": "Moderate increase" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eastern Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East and North Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Pacific Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Pacific OECD", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Centrally Planned Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Western Europe", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "China", diff --git a/src/data/ngfs/NGFS-DT-REMIND-2024.json b/src/data/ngfs/NGFS-DT-REMIND-2024.json index a021f065..e4cf4b3d 100644 --- a/src/data/ngfs/NGFS-DT-REMIND-2024.json +++ b/src/data/ngfs/NGFS-DT-REMIND-2024.json @@ -1298,11 +1298,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -1368,66 +1363,6 @@ "geography": "US", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Canada / NZ / Australia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Countries from the Reforming Economies of the Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU 28", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East / North Africa / Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Non-EU28 Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Canada / NZ / Australia", diff --git a/src/data/ngfs/NGFS-FW-GCAM-2024.json b/src/data/ngfs/NGFS-FW-GCAM-2024.json index 45c5d100..840578d8 100644 --- a/src/data/ngfs/NGFS-FW-GCAM-2024.json +++ b/src/data/ngfs/NGFS-FW-GCAM-2024.json @@ -2553,11 +2553,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -2723,166 +2718,6 @@ "geography": "USA", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Africa Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Western", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Australia NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central America and Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CO", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-12", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-15", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Non EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Free Trade Association", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PK", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TW", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "USA", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Africa Eastern", diff --git a/src/data/ngfs/NGFS-FW-MESSAGE-2024.json b/src/data/ngfs/NGFS-FW-MESSAGE-2024.json index a8b9c282..f82f1c7f 100644 --- a/src/data/ngfs/NGFS-FW-MESSAGE-2024.json +++ b/src/data/ngfs/NGFS-FW-MESSAGE-2024.json @@ -1061,76 +1061,11 @@ "geography": "Western Europe", "value": "Moderate increase" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eastern Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East and North Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Pacific Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Pacific OECD", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Centrally Planned Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Western Europe", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "China", diff --git a/src/data/ngfs/NGFS-FW-REMIND-2024.json b/src/data/ngfs/NGFS-FW-REMIND-2024.json index 53e71eb6..42bbedb7 100644 --- a/src/data/ngfs/NGFS-FW-REMIND-2024.json +++ b/src/data/ngfs/NGFS-FW-REMIND-2024.json @@ -1298,11 +1298,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -1368,66 +1363,6 @@ "geography": "US", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Canada / NZ / Australia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Countries from the Reforming Economies of the Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU 28", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East / North Africa / Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Non-EU28 Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Canada / NZ / Australia", diff --git a/src/data/ngfs/NGFS-LD-GCAM-2024.json b/src/data/ngfs/NGFS-LD-GCAM-2024.json index b3ac6bed..14096ca7 100644 --- a/src/data/ngfs/NGFS-LD-GCAM-2024.json +++ b/src/data/ngfs/NGFS-LD-GCAM-2024.json @@ -2554,11 +2554,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -2724,166 +2719,6 @@ "geography": "USA", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Africa Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Western", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Australia NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central America and Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CO", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-12", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-15", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Non EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Free Trade Association", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PK", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TW", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "USA", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Africa Eastern", diff --git a/src/data/ngfs/NGFS-LD-MESSAGE-2024.json b/src/data/ngfs/NGFS-LD-MESSAGE-2024.json index 397144a6..beee6e70 100644 --- a/src/data/ngfs/NGFS-LD-MESSAGE-2024.json +++ b/src/data/ngfs/NGFS-LD-MESSAGE-2024.json @@ -1062,76 +1062,11 @@ "geography": "Western Europe", "value": "Moderate increase" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eastern Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East and North Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Pacific Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Pacific OECD", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Centrally Planned Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Western Europe", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "China", diff --git a/src/data/ngfs/NGFS-LD-REMIND-2024.json b/src/data/ngfs/NGFS-LD-REMIND-2024.json index 32f3ea72..fa159632 100644 --- a/src/data/ngfs/NGFS-LD-REMIND-2024.json +++ b/src/data/ngfs/NGFS-LD-REMIND-2024.json @@ -1299,11 +1299,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -1369,66 +1364,6 @@ "geography": "US", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Canada / NZ / Australia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Countries from the Reforming Economies of the Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU 28", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East / North Africa / Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Non-EU28 Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Canada / NZ / Australia", diff --git a/src/data/ngfs/NGFS-NDC-GCAM-2024.json b/src/data/ngfs/NGFS-NDC-GCAM-2024.json index 28e651bc..8d235d1e 100644 --- a/src/data/ngfs/NGFS-NDC-GCAM-2024.json +++ b/src/data/ngfs/NGFS-NDC-GCAM-2024.json @@ -2553,11 +2553,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -2723,166 +2718,6 @@ "geography": "USA", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Africa Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Western", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Australia NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central America and Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CO", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-12", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-15", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Non EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Free Trade Association", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PK", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TW", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "USA", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Africa Eastern", diff --git a/src/data/ngfs/NGFS-NDC-MESSAGE-2024.json b/src/data/ngfs/NGFS-NDC-MESSAGE-2024.json index fc640b3e..8fea2987 100644 --- a/src/data/ngfs/NGFS-NDC-MESSAGE-2024.json +++ b/src/data/ngfs/NGFS-NDC-MESSAGE-2024.json @@ -1061,76 +1061,11 @@ "geography": "Western Europe", "value": "Moderate increase" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eastern Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East and North Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Pacific Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Pacific OECD", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Centrally Planned Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Western Europe", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "China", diff --git a/src/data/ngfs/NGFS-NDC-REMIND-2024.json b/src/data/ngfs/NGFS-NDC-REMIND-2024.json index a3ca990d..e2cb8c32 100644 --- a/src/data/ngfs/NGFS-NDC-REMIND-2024.json +++ b/src/data/ngfs/NGFS-NDC-REMIND-2024.json @@ -1298,11 +1298,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -1368,66 +1363,6 @@ "geography": "US", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Canada / NZ / Australia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Countries from the Reforming Economies of the Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU 28", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East / North Africa / Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Non-EU28 Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Canada / NZ / Australia", diff --git a/src/data/ngfs/NGFS-NZ2050-GCAM-2024.json b/src/data/ngfs/NGFS-NZ2050-GCAM-2024.json index 1c41cb13..09d87fc3 100644 --- a/src/data/ngfs/NGFS-NZ2050-GCAM-2024.json +++ b/src/data/ngfs/NGFS-NZ2050-GCAM-2024.json @@ -2554,11 +2554,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -2724,166 +2719,6 @@ "geography": "USA", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Africa Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Africa Western", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Australia NZ", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central America and Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CO", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-12", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU-15", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Eastern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Europe Non EU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "European Free Trade Association", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PK", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Northern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South America Southern", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Southeast Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TW", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "USA", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Africa Eastern", diff --git a/src/data/ngfs/NGFS-NZ2050-MESSAGE-2024.json b/src/data/ngfs/NGFS-NZ2050-MESSAGE-2024.json index b2823eae..879b28e1 100644 --- a/src/data/ngfs/NGFS-NZ2050-MESSAGE-2024.json +++ b/src/data/ngfs/NGFS-NZ2050-MESSAGE-2024.json @@ -1062,76 +1062,11 @@ "geography": "Western Europe", "value": "Moderate increase" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Eastern Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East and North Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "North America", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Pacific Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Pacific OECD", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Rest Centrally Planned Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "South Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Western Europe", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "China", diff --git a/src/data/ngfs/NGFS-NZ2050-REMIND-2024.json b/src/data/ngfs/NGFS-NZ2050-REMIND-2024.json index 333d3943..449d81c3 100644 --- a/src/data/ngfs/NGFS-NZ2050-REMIND-2024.json +++ b/src/data/ngfs/NGFS-NZ2050-REMIND-2024.json @@ -1299,11 +1299,6 @@ "geography": "Global", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Global", @@ -1369,66 +1364,6 @@ "geography": "US", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "Canada / NZ / Australia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "China", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Countries from the Reforming Economies of the Former Soviet Union", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU 28", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Latin America and the Caribbean", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Middle East / North Africa / Central Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Non-EU28 Europe", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Other Asia", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "Sub-saharan Africa", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "Canada / NZ / Australia", diff --git a/src/data/philippines-department-of-energy/PHDOE-CES1-2023.json b/src/data/philippines-department-of-energy/PHDOE-CES1-2023.json index 7b3e269f..b82f61d8 100644 --- a/src/data/philippines-department-of-energy/PHDOE-CES1-2023.json +++ b/src/data/philippines-department-of-energy/PHDOE-CES1-2023.json @@ -123,11 +123,6 @@ "sector": "across sectors", "geography": "PH", "value": "Moderate increase" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/philippines-department-of-energy/PHDOE-CES2-2023.json b/src/data/philippines-department-of-energy/PHDOE-CES2-2023.json index f5c231f4..72371685 100644 --- a/src/data/philippines-department-of-energy/PHDOE-CES2-2023.json +++ b/src/data/philippines-department-of-energy/PHDOE-CES2-2023.json @@ -123,11 +123,6 @@ "sector": "across sectors", "geography": "PH", "value": "Moderate increase" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/philippines-department-of-energy/PHDOE-REFERENCE-2023.json b/src/data/philippines-department-of-energy/PHDOE-REFERENCE-2023.json index 29ccce41..fe4696d1 100644 --- a/src/data/philippines-department-of-energy/PHDOE-REFERENCE-2023.json +++ b/src/data/philippines-department-of-energy/PHDOE-REFERENCE-2023.json @@ -123,11 +123,6 @@ "sector": "across sectors", "geography": "PH", "value": "Moderate increase" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/transitionzero/TZ-BAU-2024.json b/src/data/transitionzero/TZ-BAU-2024.json index 2fab999c..4c910455 100644 --- a/src/data/transitionzero/TZ-BAU-2024.json +++ b/src/data/transitionzero/TZ-BAU-2024.json @@ -245,63 +245,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "ASEAN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "LA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MM", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "SG", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/transitionzero/TZ-EBAU-2024.json b/src/data/transitionzero/TZ-EBAU-2024.json index 87b5be4e..a1e19132 100644 --- a/src/data/transitionzero/TZ-EBAU-2024.json +++ b/src/data/transitionzero/TZ-EBAU-2024.json @@ -245,63 +245,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "ASEAN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "LA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MM", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "SG", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/transitionzero/TZ-ISG-2024.json b/src/data/transitionzero/TZ-ISG-2024.json index 6a94b528..a4ed438d 100644 --- a/src/data/transitionzero/TZ-ISG-2024.json +++ b/src/data/transitionzero/TZ-ISG-2024.json @@ -245,63 +245,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "ASEAN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "LA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MM", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "SG", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/transitionzero/TZ-REGI-2024.json b/src/data/transitionzero/TZ-REGI-2024.json index 8e43e062..758567f7 100644 --- a/src/data/transitionzero/TZ-REGI-2024.json +++ b/src/data/transitionzero/TZ-REGI-2024.json @@ -245,63 +245,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "ASEAN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "LA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MM", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "SG", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-BAS-SG-2024.json b/src/data/un-sdsn-cw/SDSN-CW-BAS-SG-2024.json index 44314355..b2b19060 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-BAS-SG-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-BAS-SG-2024.json @@ -70,13 +70,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "SG", - "value": "No information" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-BAU-SG-2024.json b/src/data/un-sdsn-cw/SDSN-CW-BAU-SG-2024.json index c192d5d6..4f1f861a 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-BAU-SG-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-BAU-SG-2024.json @@ -71,13 +71,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "SG", - "value": "No information" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-EP-LA-2025.json b/src/data/un-sdsn-cw/SDSN-CW-EP-LA-2025.json index db68fda4..15a4300c 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-EP-LA-2025.json +++ b/src/data/un-sdsn-cw/SDSN-CW-EP-LA-2025.json @@ -71,13 +71,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "LA", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-EP-MY-2024.json b/src/data/un-sdsn-cw/SDSN-CW-EP-MY-2024.json index 49f7a1a5..c83e8b76 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-EP-MY-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-EP-MY-2024.json @@ -115,11 +115,6 @@ "sector": "across sectors", "geography": "MY", "value": "No information" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/un-sdsn-cw/SDSN-CW-EPP-MM-2025.json b/src/data/un-sdsn-cw/SDSN-CW-EPP-MM-2025.json index d9c614fc..4263d060 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-EPP-MM-2025.json +++ b/src/data/un-sdsn-cw/SDSN-CW-EPP-MM-2025.json @@ -83,13 +83,7 @@ "value": "Significant increase" } ], - "electrification": [ - { - "sector": "Power", - "geography": "MM", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-EXT-TH-2024.json b/src/data/un-sdsn-cw/SDSN-CW-EXT-TH-2024.json index 39a623e7..104abbf9 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-EXT-TH-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-EXT-TH-2024.json @@ -78,13 +78,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-HA1O-SG-2024.json b/src/data/un-sdsn-cw/SDSN-CW-HA1O-SG-2024.json index 3a6b06ff..ee572cb2 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-HA1O-SG-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-HA1O-SG-2024.json @@ -81,13 +81,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "SG", - "value": "No information" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-HA1S-SG-2024.json b/src/data/un-sdsn-cw/SDSN-CW-HA1S-SG-2024.json index 27b4903a..f688bb9f 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-HA1S-SG-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-HA1S-SG-2024.json @@ -72,13 +72,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "SG", - "value": "No information" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-HA2O-SG-2024.json b/src/data/un-sdsn-cw/SDSN-CW-HA2O-SG-2024.json index 2dfa6a46..4a2d93ee 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-HA2O-SG-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-HA2O-SG-2024.json @@ -80,13 +80,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "SG", - "value": "No information" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-HA2S-SG-2024.json b/src/data/un-sdsn-cw/SDSN-CW-HA2S-SG-2024.json index 2ada2fd0..878367ce 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-HA2S-SG-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-HA2S-SG-2024.json @@ -80,13 +80,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "SG", - "value": "No information" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-MAP-LA-2025.json b/src/data/un-sdsn-cw/SDSN-CW-MAP-LA-2025.json index 47f19c27..7fbfeac5 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-MAP-LA-2025.json +++ b/src/data/un-sdsn-cw/SDSN-CW-MAP-LA-2025.json @@ -72,13 +72,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "LA", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-MAP-TH-2024.json b/src/data/un-sdsn-cw/SDSN-CW-MAP-TH-2024.json index 5ea63509..1aaf3ad1 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-MAP-TH-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-MAP-TH-2024.json @@ -78,13 +78,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-MAP1-PH-2024.json b/src/data/un-sdsn-cw/SDSN-CW-MAP1-PH-2024.json index 3d7e9cb7..e3fbdca3 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-MAP1-PH-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-MAP1-PH-2024.json @@ -104,11 +104,6 @@ "sector": "across sectors", "geography": "PH", "value": "No information" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/un-sdsn-cw/SDSN-CW-MAP2-PH-2024.json b/src/data/un-sdsn-cw/SDSN-CW-MAP2-PH-2024.json index 2ef2e7a0..d30af5e9 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-MAP2-PH-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-MAP2-PH-2024.json @@ -103,11 +103,6 @@ "sector": "across sectors", "geography": "PH", "value": "No information" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/un-sdsn-cw/SDSN-CW-MAP3-PH-2024.json b/src/data/un-sdsn-cw/SDSN-CW-MAP3-PH-2024.json index 3fcfb886..8d1cc5a7 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-MAP3-PH-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-MAP3-PH-2024.json @@ -103,11 +103,6 @@ "sector": "across sectors", "geography": "PH", "value": "No information" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/un-sdsn-cw/SDSN-CW-MAP4-PH-2024.json b/src/data/un-sdsn-cw/SDSN-CW-MAP4-PH-2024.json index 1e326a8d..bed2e908 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-MAP4-PH-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-MAP4-PH-2024.json @@ -102,11 +102,6 @@ "sector": "across sectors", "geography": "PH", "value": "No information" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/un-sdsn-cw/SDSN-CW-NZE-TH-2024.json b/src/data/un-sdsn-cw/SDSN-CW-NZE-TH-2024.json index 86868bb7..7def6d6c 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-NZE-TH-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-NZE-TH-2024.json @@ -78,13 +78,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "TH", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-OEP-LA-2025.json b/src/data/un-sdsn-cw/SDSN-CW-OEP-LA-2025.json index 442ea182..a6bc30d3 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-OEP-LA-2025.json +++ b/src/data/un-sdsn-cw/SDSN-CW-OEP-LA-2025.json @@ -71,13 +71,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "LA", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-OEP-MY-2024.json b/src/data/un-sdsn-cw/SDSN-CW-OEP-MY-2024.json index d2ee8a4e..76d5ee0a 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-OEP-MY-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-OEP-MY-2024.json @@ -115,11 +115,6 @@ "sector": "across sectors", "geography": "MY", "value": "No information" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/un-sdsn-cw/SDSN-CW-OEP-PH-2024.json b/src/data/un-sdsn-cw/SDSN-CW-OEP-PH-2024.json index 36d2da49..657a664a 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-OEP-PH-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-OEP-PH-2024.json @@ -103,11 +103,6 @@ "sector": "across sectors", "geography": "PH", "value": "No information" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/un-sdsn-cw/SDSN-CW-OEPP-MM-2025.json b/src/data/un-sdsn-cw/SDSN-CW-OEPP-MM-2025.json index ae9c5f1b..8c72b699 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-OEPP-MM-2025.json +++ b/src/data/un-sdsn-cw/SDSN-CW-OEPP-MM-2025.json @@ -90,13 +90,7 @@ "value": "Significant increase" } ], - "electrification": [ - { - "sector": "Power", - "geography": "MM", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-OMAP-LA-2025.json b/src/data/un-sdsn-cw/SDSN-CW-OMAP-LA-2025.json index fd705415..4b7ee277 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-OMAP-LA-2025.json +++ b/src/data/un-sdsn-cw/SDSN-CW-OMAP-LA-2025.json @@ -72,13 +72,7 @@ "value": "No information" } ], - "electrification": [ - { - "sector": "Power", - "geography": "LA", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-OMAP-MM-2025.json b/src/data/un-sdsn-cw/SDSN-CW-OMAP-MM-2025.json index c1c8c8ac..0e65e1ac 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-OMAP-MM-2025.json +++ b/src/data/un-sdsn-cw/SDSN-CW-OMAP-MM-2025.json @@ -91,13 +91,7 @@ "value": "Significant increase" } ], - "electrification": [ - { - "sector": "Power", - "geography": "MM", - "value": "Not Applicable" - } - ], + "electrification": [], "policyTypes": [ { "sector": "Power", diff --git a/src/data/un-sdsn-cw/SDSN-CW-OMAP-MY-2024.json b/src/data/un-sdsn-cw/SDSN-CW-OMAP-MY-2024.json index 75ff9ad3..54e32104 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-OMAP-MY-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-OMAP-MY-2024.json @@ -114,11 +114,6 @@ "sector": "across sectors", "geography": "MY", "value": "No information" - }, - { - "sector": "Power", - "geography": "MY", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/un-sdsn-cw/SDSN-CW-SEP-PH-2024.json b/src/data/un-sdsn-cw/SDSN-CW-SEP-PH-2024.json index ed9818b9..f76b66b2 100644 --- a/src/data/un-sdsn-cw/SDSN-CW-SEP-PH-2024.json +++ b/src/data/un-sdsn-cw/SDSN-CW-SEP-PH-2024.json @@ -103,11 +103,6 @@ "sector": "across sectors", "geography": "PH", "value": "No information" - }, - { - "sector": "Power", - "geography": "PH", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/uts-isf/UTS-ISF-OECM-2024.json b/src/data/uts-isf/UTS-ISF-OECM-2024.json index 3f38f24a..bfc3f973 100644 --- a/src/data/uts-isf/UTS-ISF-OECM-2024.json +++ b/src/data/uts-isf/UTS-ISF-OECM-2024.json @@ -915,111 +915,6 @@ "sector": "across sectors", "geography": "ZA", "value": "Significant increase" - }, - { - "sector": "Power", - "geography": "Global", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "EU27", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "AU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "BR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "CN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "DE", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "FR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "GB", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ID", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IN", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "IT", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "JP", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "KR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "MX", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "RU", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "SA", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "TR", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "US", - "value": "Not Applicable" - }, - { - "sector": "Power", - "geography": "ZA", - "value": "Not Applicable" } ], "policyTypes": [ diff --git a/src/data/vn-erea-dea/EREA-DEA-GG-2024.json b/src/data/vn-erea-dea/EREA-DEA-GG-2024.json index 9bb33ffb..95d142f9 100644 --- a/src/data/vn-erea-dea/EREA-DEA-GG-2024.json +++ b/src/data/vn-erea-dea/EREA-DEA-GG-2024.json @@ -170,11 +170,6 @@ "geography": "VN", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "VN", diff --git a/src/data/vn-erea-dea/EREA-DEA-GT-2024.json b/src/data/vn-erea-dea/EREA-DEA-GT-2024.json index 60b41f29..72af48db 100644 --- a/src/data/vn-erea-dea/EREA-DEA-GT-2024.json +++ b/src/data/vn-erea-dea/EREA-DEA-GT-2024.json @@ -171,11 +171,6 @@ "geography": "VN", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "VN", diff --git a/src/data/vn-erea-dea/EREA-DEA-NZ-2024.json b/src/data/vn-erea-dea/EREA-DEA-NZ-2024.json index 91cb5f49..75433490 100644 --- a/src/data/vn-erea-dea/EREA-DEA-NZ-2024.json +++ b/src/data/vn-erea-dea/EREA-DEA-NZ-2024.json @@ -171,11 +171,6 @@ "geography": "VN", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "VN", diff --git a/src/data/vn-erea-dea/EREA-DEA-NZPLUS-2024.json b/src/data/vn-erea-dea/EREA-DEA-NZPLUS-2024.json index 2d973479..092538ea 100644 --- a/src/data/vn-erea-dea/EREA-DEA-NZPLUS-2024.json +++ b/src/data/vn-erea-dea/EREA-DEA-NZPLUS-2024.json @@ -171,11 +171,6 @@ "geography": "VN", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "VN", diff --git a/src/data/vn-erea-dea/EREA-DEA-VN-BASELINE-2024.json b/src/data/vn-erea-dea/EREA-DEA-VN-BASELINE-2024.json index 8dcf9b0f..7e119ac7 100644 --- a/src/data/vn-erea-dea/EREA-DEA-VN-BASELINE-2024.json +++ b/src/data/vn-erea-dea/EREA-DEA-VN-BASELINE-2024.json @@ -169,11 +169,6 @@ "geography": "VN", "value": "Not applicable at this scope level" }, - { - "sector": "Power", - "geography": "VN", - "value": "Not Applicable" - }, { "sector": "Steel", "geography": "VN", diff --git a/src/pages/PathwayDetailPage.scope.test.tsx b/src/pages/PathwayDetailPage.scope.test.tsx index 82a949de..86af2da8 100644 --- a/src/pages/PathwayDetailPage.scope.test.tsx +++ b/src/pages/PathwayDetailPage.scope.test.tsx @@ -1,5 +1,11 @@ import { describe, it, expect, vi, afterEach } from "vitest"; -import { render, screen, fireEvent } from "@testing-library/react"; +import { + render, + screen, + fireEvent, + waitFor, + within, +} from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { MemoryRouter, Route, Routes } from "react-router"; @@ -60,6 +66,14 @@ const fixtures = [ energyDemand: [ { sector: "Power", geography: "SG", value: "No information" }, ], + // Never recorded for Power, which it cannot apply to: Power inherits it. + electrification: [ + { + sector: "across sectors", + geography: "Global", + value: "Moderate increase", + }, + ], }, coreDrivers: { policies: "Carbon pricing sustained across the region.", @@ -120,6 +134,44 @@ const fixtures = [ ], }, }, + { + // Power only, like JETP-CIPP-2023: no across sectors row, so nothing for + // Electrification to inherit. + id: "detail-power-only", + name: { full: "Power-only Pathway", short: "PO" }, + description: "Pathway blurb", + pathwayDescription: "The description prose.", + pathwayType: "Normative", + modelYearNetzero: 2050, + modelTempIncrease: 1.5, + publication: { + publisher: { full: "Publisher S", short: "PubS" }, + title: { full: "Publication S", short: "PubTitleS" }, + year: 2024, + }, + sectors: [{ name: "Power", technologies: [] }], + metric: ["Capacity"], + geography: { country: ["SG"] }, + keyFeatures: { + emissionsTrajectory: [ + { sector: "Power", geography: "SG", value: "Significant decrease" }, + ], + }, + coreDrivers: { + policies: null, + emissionsTargets: null, + technologyCosts: null, + investmentChange: null, + macroeconomicDrivers: null, + behavioralShifts: null, + otherDrivers: null, + }, + dependencies: [], + dataAvailability: { + overall: "Hosted as a single timeseries file.", + byMetric: [], + }, + }, ] as const; /* @@ -181,6 +233,36 @@ const selectScope = async (name: string): Promise => { await userEvent.click(screen.getByRole("button", { name })); }; +/** The key feature labelled `label`: its item in the group's list. */ +async function findFeature(label: string): Promise { + let item: HTMLElement = await screen.findByText( + label, + { selector: "p" }, + WAIT, + ); + while ( + item.parentElement && + !item.parentElement.classList.contains("space-y-4") + ) { + item = item.parentElement; + } + return item; +} + +/** Open the tooltip on `trigger`'s focusable ancestor, and read it. */ +async function tooltipOf(trigger: HTMLElement): Promise { + const focusable = trigger.closest("[tabindex]") as HTMLElement; + // Re-fired inside waitFor: TextWithTooltip attaches its listeners in an + // effect, and a focus that lands before them is dropped without a trace. + await waitFor(() => { + fireEvent.focus(focusable); + expect(screen.getByRole("tooltip")).toBeInTheDocument(); + }); + const content = screen.getByRole("tooltip").textContent; + fireEvent.blur(focusable); + return content; +} + describe("PathwayDetailPage — scope ribbon (#872)", () => { afterEach(() => { vi.resetModules(); @@ -430,4 +512,39 @@ describe("PathwayDetailPage — scope ribbon (#872)", () => { }, TEST_TIMEOUT, ); + + it( + "says Electrification does not apply to Power, inheriting where it can", + async () => { + // Electrification is on the full panel only, not At a glance's subset. + await mountDetailPage("/pathway/detail-scope?tab=assumptions"); + const electrification = await findFeature("Electrification"); + + // Opens on Power · Global, which inherits the across sectors value. + expect(electrification).toHaveTextContent("Moderate increase"); + expect( + await tooltipOf( + within(electrification).getByText("Across sectors · Global"), + ), + ).toBe( + "Electrification does not apply to the Power sector; showing the" + + " closest broader scope this pathway reports.", + ); + }, + TEST_TIMEOUT, + ); + + it( + "shows Not applicable, not No information, when Power has nothing to inherit", + async () => { + await mountDetailPage("/pathway/detail-power-only?tab=assumptions"); + const electrification = await findFeature("Electrification"); + + expect(electrification).not.toHaveTextContent("No information"); + expect( + await tooltipOf(within(electrification).getByText("Not applicable")), + ).toBe("Electrification does not apply to the Power sector."); + }, + TEST_TIMEOUT, + ); }); diff --git a/src/schema/pathwayMetadata.v2.json b/src/schema/pathwayMetadata.v2.json index 6bd4ca72..c6b3b1f0 100644 --- a/src/schema/pathwayMetadata.v2.json +++ b/src/schema/pathwayMetadata.v2.json @@ -216,7 +216,7 @@ } }, "electrification": { - "description": "Represents the extent to which energy end-uses transition from fossil fuels to electricity. Scoped: see keyFeatures.", + "description": "Represents the extent to which energy end-uses transition from fossil fuels to electricity. Scoped: see keyFeatures. Never recorded for the Power sector, which it cannot apply to (validateScopes enforces this).", "type": "array", "uniqueItems": true, "items": { @@ -241,7 +241,6 @@ "Minor increase", "Moderate increase", "Significant increase", - "Not Applicable", "Not applicable at this scope level" ] } diff --git a/src/schema/pathwayMetadata.v2.test.ts b/src/schema/pathwayMetadata.v2.test.ts index a617a588..fdf6c5f3 100644 --- a/src/schema/pathwayMetadata.v2.test.ts +++ b/src/schema/pathwayMetadata.v2.test.ts @@ -116,9 +116,6 @@ const WIDEST_ON_BOTH_AXES: ReadonlySet = new Set([ * reason. Listed rather than tolerated, so an unplanned addition still fails. */ const DELIBERATE_ADDITIONS: Readonly> = { - // A property of the sector (meaningless for Power), not of the row's scope, - // so it survives at every scope where the sentinel would not. - electrification: ["Not Applicable"], // Cookbook decision 0020. newTechnologiesIncluded: ["SMR"], }; diff --git a/src/types/pathwayMetadata.v2.d.ts b/src/types/pathwayMetadata.v2.d.ts index 4747c183..8c26b098 100644 --- a/src/types/pathwayMetadata.v2.d.ts +++ b/src/types/pathwayMetadata.v2.d.ts @@ -315,7 +315,7 @@ export interface PathwayMetadataV2 { | "Significant increase"; }[]; /** - * Represents the extent to which energy end-uses transition from fossil fuels to electricity. Scoped: see keyFeatures. + * Represents the extent to which energy end-uses transition from fossil fuels to electricity. Scoped: see keyFeatures. Never recorded for the Power sector, which it cannot apply to (validateScopes enforces this). */ electrification: { sector: ScopeSector3; @@ -329,7 +329,6 @@ export interface PathwayMetadataV2 { | "Minor increase" | "Moderate increase" | "Significant increase" - | "Not Applicable" | "Not applicable at this scope level"; }[]; /** diff --git a/src/utils/keyFeatureResolution.test.ts b/src/utils/keyFeatureResolution.test.ts index 9389a8cd..f3203ce3 100644 --- a/src/utils/keyFeatureResolution.test.ts +++ b/src/utils/keyFeatureResolution.test.ts @@ -353,9 +353,8 @@ describe("resolveKeyFeature — edge cases", () => { }); }); - it("skips a Not Applicable cell and inherits across sectors, naming its sector", () => { + it("inherits Electrification of Power from across sectors, naming the sector", () => { const p = withEntries("electrification", [ - e("Power", "TH", "Not Applicable"), e("across sectors", "TH", "Moderate increase"), ]); expect(resolveKeyFeature(p, "electrification", at("Power", "TH"))).toEqual({ @@ -368,20 +367,37 @@ describe("resolveKeyFeature — edge cases", () => { }); }); - it("is unavailable when nothing follows the Not Applicable cell", () => { + it.each(["Significant increase", "No information", "Not Applicable"])( + "never reads an Electrification of Power cell, even one saying %s", + (value) => { + // The validator rejects any value there; the resolver does not rely on it. + const p = withEntries("electrification", [ + e("Power", "TH", value), + e("across sectors", "TH", "Moderate increase"), + ]); + expect( + resolveKeyFeature(p, "electrification", at("Power", "TH")), + ).toMatchObject({ + status: "resolved", + value: "Moderate increase", + sourceScope: { sector: "across sectors", geography: "TH" }, + notApplicableSector: "Power", + }); + }, + ); + + it("is unavailable but names the sector when nothing is across sectors", () => { // A Power-only pathway: no across sectors row to fall back to, for the - // ribbon's Power and for an empty sector alike. - const p = withEntries( - "electrification", - [e("Power", "SG", "Not Applicable")], - { - sectors: [{ name: "Power", technologies: [] }], - geography: { country: ["SG"] }, - }, - ); + // ribbon's Power and for an empty sector alike. The sector is named so the + // page says "Not applicable" rather than "No information". + const p = withEntries("electrification", [], { + sectors: [{ name: "Power", technologies: [] }], + geography: { country: ["SG"] }, + }); const unavailable = { status: "unavailable", requestedScope: { sector: "Power", geography: "SG" }, + notApplicableSector: "Power", }; expect(resolveKeyFeature(p, "electrification", at("Power", "SG"))).toEqual( unavailable, @@ -391,21 +407,16 @@ describe("resolveKeyFeature — edge cases", () => { ); }); - it("knows no forbidden pairs: what Power records is its answer", () => { - // Only the data's Not Applicable marks a pair as inapplicable; requiring it - // at Electrification × Power is the validator's job (PR 2). Until then an - // authored value there is shown, like the six SDSN Singapore files' No - // information. - const p = withEntries("electrification", [ - e("Power", "TH", "No information"), - e("across sectors", "TH", "Moderate increase"), - ]); - expect(resolveKeyFeature(p, "electrification", at("Power", "TH"))).toEqual({ - status: "resolved", - value: "No information", - sourceScope: { sector: "Power", geography: "TH" }, - requestedScope: { sector: "Power", geography: "TH" }, - isFallback: false, + it("names no sector when a field that applies there is unavailable", () => { + const p = withEntries("emissionsTrajectory", [], { + sectors: [{ name: "Power", technologies: [] }], + geography: { country: ["SG"] }, + }); + expect( + resolveKeyFeature(p, "emissionsTrajectory", at("Power", "SG")), + ).toEqual({ + status: "unavailable", + requestedScope: { sector: "Power", geography: "SG" }, }); }); diff --git a/src/utils/keyFeatureResolution.ts b/src/utils/keyFeatureResolution.ts index a8ca7840..656a5a19 100644 --- a/src/utils/keyFeatureResolution.ts +++ b/src/utils/keyFeatureResolution.ts @@ -27,8 +27,8 @@ import { containsCodes, declaredGeographyTokens, declaredTokenCodes, + isForbiddenKeyFeatureSector, isScopeLevelNotApplicable, - MEASURE_NOT_APPLICABLE, widestGeography, widestSector, type KeyFeatureKey, @@ -51,9 +51,9 @@ export type ResolvedKeyFeature = /** The source differs from the request on either axis. */ isFallback: boolean; /** - * Set when the walk skipped a `Not Applicable` cell (Electrification × - * Power) before finding this value. Names that cell's sector, so the badge - * can say the feature does not apply there. + * Set when the field cannot apply to the requested sector (Electrification + * × Power), so that sector was left out of the walk and the value comes + * from across sectors instead. Names the skipped sector. */ notApplicableSector?: string; } @@ -61,7 +61,15 @@ export type ResolvedKeyFeature = * Nothing usable anywhere on the chain. Not the same as an authored * `No information`, which is the pathway's answer and resolves. */ - | { status: "unavailable"; requestedScope: Scope }; + | { + status: "unavailable"; + requestedScope: Scope; + /** + * Set when the field cannot apply to the requested sector, so the absence + * is "does not apply", not "not recorded". Names that sector. + */ + notApplicableSector?: string; + }; type ResolvablePathway = Pick< PathwayMetadataType, @@ -146,13 +154,15 @@ export function geographyChain( * else ends it, including an authored `No information`, `None` or `No new * technologies`: those are the pathway's answer, not an absence of one. * - * A `Not Applicable` cell (Electrification × Power) is skipped the same way, and - * the walk goes on to `across sectors`. Most pathways open on Power, so stopping - * there would hide the pathway's electrification everywhere it is first seen; - * inheriting the across-sectors value, badged and explained, shows it. A pathway - * with nothing across sectors ends `unavailable`, as any exhausted chain does. - * Malformed or non-array input degrades to "no entries", and so to - * `unavailable`. + * A field that cannot apply to the requested sector (Electrification × Power, + * see `FORBIDDEN_KEY_FEATURE_SECTORS`) leaves that sector out of the walk + * without reading it, and goes on to `across sectors`. Most pathways open on + * Power, so answering "not applicable" there would hide the pathway's + * electrification everywhere it is first seen; inheriting the across-sectors + * value, badged and explained, shows it. A pathway with nothing across sectors + * ends `unavailable`, still naming the sector, so the page says the feature does + * not apply there rather than that nothing is recorded. Malformed or non-array + * input degrades to "no entries", and so to `unavailable`. */ export function createKeyFeatureResolver( pathway: ResolvablePathway, @@ -166,19 +176,25 @@ export function createKeyFeatureResolver( ); return (field) => { + const notApplicable = isForbiddenKeyFeatureSector( + field, + requestedScope.sector, + ); + const fieldSectors = notApplicable + ? sectors.filter((sector) => sector !== requestedScope.sector) + : sectors; + const notApplicableSector = notApplicable + ? { notApplicableSector: requestedScope.sector } + : {}; + const entries = asEntries(pathway.keyFeatures?.[field]); - let notApplicableSector: string | undefined; - for (const sector of sectors) { + for (const sector of fieldSectors) { for (const geography of geographies) { const entry = entries.find( (e) => e.sector === sector && e.geography === geography, ); if (!entry || entry.value == null) continue; if (isScopeLevelNotApplicable(entry.value)) continue; - if (entry.value === MEASURE_NOT_APPLICABLE) { - notApplicableSector ??= sector; - continue; - } return { status: "resolved", value: entry.value, @@ -187,12 +203,12 @@ export function createKeyFeatureResolver( isFallback: sector !== requestedScope.sector || geography !== requestedScope.geography, - ...(notApplicableSector ? { notApplicableSector } : {}), + ...notApplicableSector, }; } } - return { status: "unavailable", requestedScope }; + return { status: "unavailable", requestedScope, ...notApplicableSector }; }; } diff --git a/src/utils/keyFeatureRules.test.ts b/src/utils/keyFeatureRules.test.ts index 55f995b8..74fd96a2 100644 --- a/src/utils/keyFeatureRules.test.ts +++ b/src/utils/keyFeatureRules.test.ts @@ -6,6 +6,7 @@ import { containsCodes, declaredGeographyTokens, declaredTokenCodes, + isForbiddenKeyFeatureSector, isScopeLevelNotApplicable, widestGeography, widestSector, @@ -286,3 +287,24 @@ describe("isScopeLevelNotApplicable", () => { expect(isScopeLevelNotApplicable(undefined)).toBe(false); }); }); + +describe("isForbiddenKeyFeatureSector", () => { + it("forbids Electrification of Power", () => { + expect(isForbiddenKeyFeatureSector("electrification", "Power")).toBe(true); + }); + + it("allows Electrification of other sectors, including across sectors", () => { + expect(isForbiddenKeyFeatureSector("electrification", "Buildings")).toBe( + false, + ); + expect(isForbiddenKeyFeatureSector("electrification", ACROSS_SECTORS)).toBe( + false, + ); + }); + + it("allows every other field for Power", () => { + expect(isForbiddenKeyFeatureSector("emissionsTrajectory", "Power")).toBe( + false, + ); + }); +}); diff --git a/src/utils/keyFeatureRules.ts b/src/utils/keyFeatureRules.ts index d1f3e52c..97e118ae 100644 --- a/src/utils/keyFeatureRules.ts +++ b/src/utils/keyFeatureRules.ts @@ -1,7 +1,7 @@ /** * The rules for reading scoped keyFeatures that the app and the validator must * agree on (#869, cookbook decision 0023): the scope sentinels, the - * Electrification × Power exclusion, the scope-level sentinel value, which + * forbidden field × sector combinations, the scope-level sentinel value, which * countries a pathway's own geography token covers, and a pathway's widest scope * on each axis. * @@ -41,17 +41,29 @@ export const ACROSS_REGIONS = "across regions"; export const SCOPE_LEVEL_NOT_APPLICABLE = "Not applicable at this scope level"; /** - * The measure for a field that cannot apply to a sector at all — Electrification - * of the Power sector, since power already is electricity. Distinct from + * Field × sector combinations that cannot apply by definition: power cannot be + * electrified, because it already is electricity. Distinct from * {@link SCOPE_LEVEL_NOT_APPLICABLE}, which is about where a value is recorded * rather than whether one can exist. * - * The resolver treats it like that sentinel: not an answer, so it skips the cell - * and falls back to `across sectors`. Which (field, sector) pairs must carry it, - * and that it appears nowhere else, is the validator's rule (PR 2), so the - * resolver needs no list of them. + * A forbidden combination carries no value at all — not a marker, not + * `No information` — so nothing in the data says it is forbidden; this list is + * the one place that does. The validator rejects any entry at one, and the + * resolver drops the sector from the chain without reading it, so the page can + * say the feature does not apply rather than that nothing is recorded. */ -export const MEASURE_NOT_APPLICABLE = "Not Applicable"; +export const FORBIDDEN_KEY_FEATURE_SECTORS: Readonly< + Partial> +> = { + electrification: ["Power"], +}; + +export function isForbiddenKeyFeatureSector( + field: KeyFeatureKey, + sector: string, +): boolean { + return FORBIDDEN_KEY_FEATURE_SECTORS[field]?.includes(sector) ?? false; +} /** * Is this cell the scope-level sentinel? True for the scalar, and for any array diff --git a/src/utils/scopeAvailability.test.ts b/src/utils/scopeAvailability.test.ts index 66da6861..574ebed1 100644 --- a/src/utils/scopeAvailability.test.ts +++ b/src/utils/scopeAvailability.test.ts @@ -93,7 +93,6 @@ describe("scopeAvailability", () => { const av = scopeAvailability( withKeyFeatures( entry("Steel", "TH", "Not applicable at this scope level"), - entry("Power", "VN", "Not Applicable"), entry("Cement", "ID", "No information"), entry("Rail", "MY", ["No information"]), entry("Aviation", "PH", ["Not applicable at this scope level"]), @@ -102,14 +101,32 @@ describe("scopeAvailability", () => { { keyFeatures: true }, ); - for (const sector of ["Steel", "Power", "Cement", "Rail", "Aviation"]) { + for (const sector of ["Steel", "Cement", "Rail", "Aviation"]) { expect(av.hasSector(sector)).toBe(false); } - for (const geography of ["TH", "VN", "ID", "MY", "PH"]) { + for (const geography of ["TH", "ID", "MY", "PH"]) { expect(av.hasGeography(geography)).toBe(false); } }); + it("ignore a forbidden field × sector, whatever it holds", () => { + // The resolver never reads Electrification of Power, so a value there + // would make Power selectable with nothing new to show. + const av = scopeAvailability( + { + dependencies: [], + keyFeatures: { + electrification: [entry("Power", "VN", "Significant increase")], + }, + } as unknown as PathwayMetadataType, + [], + { keyFeatures: true }, + ); + + expect(av.hasSector("Power")).toBe(false); + expect(av.hasGeography("VN")).toBe(false); + }); + it("count an array value with anything besides No information", () => { const av = scopeAvailability( withKeyFeatures(entry("Steel", "TH", ["No information", "CCUS"])), diff --git a/src/utils/scopeAvailability.ts b/src/utils/scopeAvailability.ts index f56a74cc..f60602ab 100644 --- a/src/utils/scopeAvailability.ts +++ b/src/utils/scopeAvailability.ts @@ -1,8 +1,9 @@ import type { PathwayMetadataType } from "../types"; import { asEntries } from "./keyFeatureScope"; import { - MEASURE_NOT_APPLICABLE, + isForbiddenKeyFeatureSector, isScopeLevelNotApplicable, + type KeyFeatureKey, } from "./keyFeatureRules"; import { pathwayToolAvailability } from "./timeseriesAvailability"; @@ -23,14 +24,12 @@ export const ALL_AVAILABLE: ScopeAvailability = { }; /** - * Does a key-feature value say something about its scope? Not the two - * not-applicable markers, which the resolver skips, and not "No information": - * a token whose only values are "No information" would show nothing new when - * selected. + * Does a key-feature value say something about its scope? Not the scope-level + * marker, which the resolver skips, and not "No information": a token whose + * only values are "No information" would show nothing new when selected. */ function isInformative(value: unknown): boolean { if (value == null || isScopeLevelNotApplicable(value)) return false; - if (value === MEASURE_NOT_APPLICABLE) return false; const values = Array.isArray(value) ? value : [value]; return values.some((v) => v !== "No information"); } @@ -41,8 +40,11 @@ function keyFeatureScopes( ): { sectors: Set; geographies: Set } { const sectors = new Set(); const geographies = new Set(); - for (const field of Object.values(keyFeatures ?? {})) { - for (const entry of asEntries(field)) { + for (const [field, value] of Object.entries(keyFeatures ?? {})) { + for (const entry of asEntries(value)) { + // The resolver never reads a forbidden sector, whatever it holds. + if (isForbiddenKeyFeatureSector(field as KeyFeatureKey, entry.sector)) + continue; if (!isInformative(entry.value)) continue; sectors.add(entry.sector); geographies.add(entry.geography); diff --git a/src/utils/validateScopes.test.ts b/src/utils/validateScopes.test.ts index 9218278a..588e4ff2 100644 --- a/src/utils/validateScopes.test.ts +++ b/src/utils/validateScopes.test.ts @@ -237,6 +237,43 @@ describe("validateScopedEntries — reporting", () => { }); }); +describe("validateScopedEntries — forbidden field × sector", () => { + const electrification = (sector: string, value: string) => + validateScopedEntries( + pathway({ + keyFeatures: { + electrification: [{ sector, geography: "SG", value }], + } as unknown as PathwayMetadataV2["keyFeatures"], + }), + ); + + it.each(["Not Applicable", "No information", "Moderate increase"])( + "rejects Electrification of Power holding %s", + (value) => { + const errors = electrification("Power", value); + expect(errors).toHaveLength(1); + expect(errors[0]).toContain("/keyFeatures/electrification/0 "); + expect(errors[0]).toContain("Leave the entry out"); + }, + ); + + it("accepts Electrification of another sector, and across sectors", () => { + expect(electrification("Steel", "Moderate increase")).toEqual([]); + expect(electrification("across sectors", "Moderate increase")).toEqual([]); + }); + + it("accepts other fields for Power", () => { + const errors = validateScopedEntries( + pathway({ + keyFeatures: { + emissionsTrajectory: [entry("Power", "SG")], + } as unknown as PathwayMetadataV2["keyFeatures"], + }), + ); + expect(errors).toEqual([]); + }); +}); + describe("validateScopedEntries — one value per scope", () => { const dup = (geography: string, value: string) => ({ sector: "Power", diff --git a/src/utils/validateScopes.ts b/src/utils/validateScopes.ts index 2d5e8803..ac96d8b5 100644 --- a/src/utils/validateScopes.ts +++ b/src/utils/validateScopes.ts @@ -18,6 +18,13 @@ * compares whole entries, so two at the same (sector, geography) with different * values are "unique" to the schema while being contradictory as data. * + * It also rejects any entry at a field × sector that cannot apply + * (`FORBIDDEN_KEY_FEATURE_SECTORS` in `keyFeatureRules.ts`, today Electrification + * × Power). Such a pair carries no value at all. Unlike the rules around it, + * this one reads only the entry's own `sector`, so draft-07 could express it per + * item; it lives here so that the validator, the importer and the page all read + * the one declaration in `keyFeatureRules.ts` rather than a copy in the schema. + * * It also enforces #461 -- that a technology belongs to the sector it is attached * to. #461 suggests mirroring the `if`/`then` sector conditional in * `pathwayTimeseries.v1.json`, but that keyword pair defeats @@ -50,6 +57,10 @@ import { technologyBelongsToSector, UNSEGMENTED, } from "./timeseriesTaxonomy.ts"; +import { + isForbiddenKeyFeatureSector, + type KeyFeatureKey, +} from "./keyFeatureRules.ts"; /** `$id` of the schema these checks apply to. */ export const PATHWAY_METADATA_V2_ID = @@ -255,6 +266,17 @@ export function validateScopedEntries(pathway: PathwayMetadataV2): string[] { ); } + // A field that cannot apply to a sector (Electrification × Power) has no + // value there at all. Not "Not Applicable" and not "No information": the + // resolver never reads the cell, and the page says the feature does not + // apply, so any value would be authored and then silently ignored. + if (isForbiddenKeyFeatureSector(field as KeyFeatureKey, entry.sector)) { + errors.push( + `${at} is ${field} for the ${entry.sector} sector, which it cannot` + + ` apply to. Leave the entry out: no value, not even "No information".`, + ); + } + // One scope, one value. The schema's `uniqueItems` only rejects entries // that are identical including their value, so two entries at the same // (sector, geography) carrying *different* values validate cleanly -- and diff --git a/testdata/valid/pathwayMetadata_v2_full.json b/testdata/valid/pathwayMetadata_v2_full.json index fbae549f..92f7d58a 100644 --- a/testdata/valid/pathwayMetadata_v2_full.json +++ b/testdata/valid/pathwayMetadata_v2_full.json @@ -109,7 +109,7 @@ "value": "Significant increase" }, { - "sector": "Power", + "sector": "Steel", "geography": "SG", "value": "Moderate increase" }