All files / owid-grapher/explorer/urlMigrations CO2UrlMigration.ts

100% Statements 39/39
100% Branches 4/4
100% Functions 2/2
100% Lines 39/39

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 481x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 4x                  
import { legacyToCurrentGrapherUrl } from "../../grapher/core/GrapherUrlMigrations"
import { Url } from "../../clientUtils/urls/Url"
import { UrlMigration } from "../../clientUtils/urls/UrlMigration"
import {
    decodeURIComponentOrUndefined,
    getExplorerSlugFromUrl,
    QueryParamTransformMap,
    transformQueryParams,
} from "./ExplorerUrlMigrationUtils"
 
const EXPLORER_SLUG = "co2"
 
const co2QueryParamTransformMap: QueryParamTransformMap = {
    "Gas ": {
        newName: "Gas",
        transformValue: decodeURIComponentOrUndefined,
    },
    "Accounting ": {
        newName: "Accounting",
        transformValue: decodeURIComponentOrUndefined,
    },
    "Fuel ": {
        newName: "Fuel",
        transformValue: decodeURIComponentOrUndefined,
    },
    "Count ": {
        newName: "Count",
        transformValue: decodeURIComponentOrUndefined,
    },
    "Relative to world total ": {
        newName: "Relative to world total",
        transformValue: (value) => (value ? "true" : "false"),
    },
}
 
export const co2UrlMigration: UrlMigration = (url: Url) => {
    // if it's not the /explorer/co2 path, skip it
    const explorerSlug = getExplorerSlugFromUrl(url)
    if (explorerSlug !== EXPLORER_SLUG) return url
 
    url = legacyToCurrentGrapherUrl(url)
    const queryParams = transformQueryParams(
        url.queryParams,
        co2QueryParamTransformMap
    )
    return url.setQueryParams(queryParams)
}