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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 176x 176x 176x 176x 176x 176x 176x 176x 176x 176x 176x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 176x 176x 176x 176x 176x 176x 176x 1x 1x 24x 24x 1x 1x 176x 176x 176x 176x 176x 176x 176x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | // Todo: remove this.
// Any display changes really can be computed columns. And then charts just need xColumnSlug, sizeColumnSlug, yColumnSlug (or yColumnSlugs) et cetera
import { observable, computed } from "mobx"
import { trimObject } from "../../clientUtils/Util"
import { OwidTable } from "../../coreTable/OwidTable"
import { OwidVariableDisplayConfig } from "../../clientUtils/OwidVariable"
import {
ColumnSlug,
DimensionProperty,
OwidVariableId,
} from "../../clientUtils/owidTypes"
import { Time } from "../../coreTable/CoreTableConstants"
import {
Persistable,
deleteRuntimeAndUnchangedProps,
updatePersistables,
} from "../../clientUtils/persistable/Persistable"
import { CoreColumn } from "../../coreTable/CoreTableColumns"
import { OwidChartDimensionInterface } from "../../clientUtils/OwidVariableDisplayConfigInterface"
// A chart "dimension" represents a binding between a chart
// and a particular variable that it requests as data
class ChartDimensionDefaults implements OwidChartDimensionInterface {
@observable property!: DimensionProperty
@observable variableId!: OwidVariableId
// check on: malaria-deaths-comparisons and computing-efficiency
@observable display = new OwidVariableDisplayConfig() // todo: make persistable
// XXX move this somewhere else, it's only used for scatter x override and Marimekko override
@observable targetYear?: Time = undefined
}
// todo: remove when we remove dimensions
export interface LegacyDimensionsManager {
table: OwidTable
}
export class ChartDimension
extends ChartDimensionDefaults
implements Persistable
{
private manager: LegacyDimensionsManager
constructor(
obj: OwidChartDimensionInterface,
manager: LegacyDimensionsManager
) {
super()
this.manager = manager
if (obj) this.updateFromObject(obj)
}
@computed private get table(): OwidTable {
return this.manager.table
}
updateFromObject(obj: OwidChartDimensionInterface): void {
if (obj.display) updatePersistables(this, { display: obj.display })
this.targetYear = obj.targetYear
this.variableId = obj.variableId
this.property = obj.property
this.slug = obj.slug
}
toObject(): OwidChartDimensionInterface {
return trimObject(
deleteRuntimeAndUnchangedProps(
{
property: this.property,
variableId: this.variableId,
display: this.display,
targetYear: this.targetYear,
},
new ChartDimensionDefaults()
)
)
}
// Do not persist yet, until we migrate off VariableIds
@observable slug?: ColumnSlug
@computed get column(): CoreColumn {
return this.table.get(this.columnSlug)
}
@computed get columnSlug(): string {
return this.slug ?? this.variableId.toString()
}
}
|