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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 224x 224x 224x 224x 224x 224x 224x 224x 224x 224x 224x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 59x 59x 59x 59x 59x 59x 59x 59x 59x 58x 58x 59x 59x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 1x 1x 219x 219x 219x 1x 1x | import { observable } from "mobx" import { MapProjectionName } from "./MapProjections" import { ColorScaleConfig } from "../color/ColorScaleConfig" import { ColumnSlug, OwidVariableId } from "../../clientUtils/owidTypes" import { Persistable, updatePersistables, objectWithPersistablesToObject, deleteRuntimeAndUnchangedProps, } from "../../clientUtils/persistable/Persistable" import { maxTimeBoundFromJSONOrPositiveInfinity, maxTimeToJSON, } from "../../clientUtils/TimeBounds" import { trimObject, NoUndefinedValues } from "../../clientUtils/Util" // MapConfig holds the data and underlying logic needed by MapTab. // It wraps the map property on ChartConfig. // TODO: migrate database config & only pass legend props class MapConfigDefaults { @observable columnSlug?: ColumnSlug @observable time?: number @observable timeTolerance?: number @observable hideTimeline?: boolean @observable projection = MapProjectionName.World @observable colorScale = new ColorScaleConfig() // Show the label from colorSchemeLabels in the tooltip instead of the numeric value @observable tooltipUseCustomLabels?: boolean = undefined } export type MapConfigInterface = MapConfigDefaults interface MapConfigWithLegacyInterface extends MapConfigInterface { variableId?: OwidVariableId targetYear?: number } export class MapConfig extends MapConfigDefaults implements Persistable { updateFromObject(obj: Partial<MapConfigWithLegacyInterface>): void { // Migrate variableIds to columnSlugs if (obj.variableId && !obj.columnSlug) obj.columnSlug = obj.variableId.toString() updatePersistables(this, obj) // Migrate "targetYear" to "time" // TODO migrate the database property instead if (obj.targetYear) this.time = maxTimeBoundFromJSONOrPositiveInfinity(obj.targetYear) else if (obj.time) this.time = maxTimeBoundFromJSONOrPositiveInfinity(obj.time) } toObject(): NoUndefinedValues<MapConfigWithLegacyInterface> { const obj = objectWithPersistablesToObject( this ) as MapConfigWithLegacyInterface deleteRuntimeAndUnchangedProps(obj, new MapConfigDefaults()) if (obj.time) obj.time = maxTimeToJSON(this.time) as any if (obj.columnSlug) { // Restore variableId for legacy for now obj.variableId = parseInt(obj.columnSlug) delete obj.columnSlug } return trimObject(obj) } constructor(obj?: Partial<MapConfigWithLegacyInterface>) { super() if (obj) this.updateFromObject(obj) } } |