All files / owid-grapher/coreTable OwidTableUtil.ts

81.48% Statements 22/27
100% Branches 5/5
75% Functions 3/4
81.48% Lines 22/27

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 451x 1x 1x 1x 1x           1x 61x 61x 61x 1x 38x 38x 38x 38x 38x 38x 31x 31x 1x 22x 22x 22x                                    
import { ColumnSlug } from "../clientUtils/owidTypes"
import { ColumnTypeNames, CoreColumnDef } from "./CoreColumnDef"
import { CoreTable } from "./CoreTable"
import { OwidColumnDef, OwidTableSlugs } from "./OwidTableConstants"
 
export function timeColumnSlugFromColumnDef(
    def: OwidColumnDef
): OwidTableSlugs.day | OwidTableSlugs.year {
    return def.isDailyMeasurement ? OwidTableSlugs.day : OwidTableSlugs.year
}
 
export function makeOriginalTimeSlugFromColumnSlug(slug: ColumnSlug): string {
    return `${slug}-originalTime`
}
 
export function getOriginalTimeColumnSlug(
    table: CoreTable,
    slug: ColumnSlug
): ColumnSlug {
    const originalTimeSlug = makeOriginalTimeSlugFromColumnSlug(slug)
    if (table.has(originalTimeSlug)) return originalTimeSlug
    return table.timeColumn.slug
}
 
export function toPercentageColumnDef(
    columnDef: CoreColumnDef,
    type = ColumnTypeNames.Percentage
): CoreColumnDef {
    // drops all values that can hinder the correct display of a percentage column
    // (e.g. a "kWh" unit or a numDecimalPlaces value of 0)
    return {
        ...columnDef,
        type,
        unit: undefined,
        shortUnit: undefined,
        display: {
            ...columnDef.display,
            unit: undefined,
            shortUnit: undefined,
            numDecimalPlaces: undefined,
            conversionFactor: undefined,
        },
    }
}