-
-
Notifications
You must be signed in to change notification settings - Fork 229
/
Copy pathKeyDataTable.tsx
103 lines (101 loc) · 3.8 KB
/
KeyDataTable.tsx
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
95
96
97
98
99
100
101
102
103
import { DataPageDataV2, joinTitleFragments } from "@ourworldindata/types"
import {
makeSource,
makeLastUpdated,
makeNextUpdate,
makeDateRange,
makeUnit,
makeUnitConversionFactor,
makeLinks,
SimpleMarkdownText,
} from "@ourworldindata/components"
export default function KeyDataTable({
datapageData,
attribution,
}: {
datapageData: DataPageDataV2
attribution: string
}) {
const source = makeSource({
attribution: attribution,
owidProcessingLevel: datapageData.owidProcessingLevel,
})
const lastUpdated = makeLastUpdated(datapageData)
const nextUpdate = makeNextUpdate(datapageData)
const dateRange = makeDateRange(datapageData)
const unit = makeUnit(datapageData)
const unitConversionFactor = makeUnitConversionFactor(datapageData)
const links = makeLinks({ link: datapageData.source?.link })
return (
<div className="key-data-block grid grid-cols-4 grid-sm-cols-12">
{datapageData.descriptionShort && (
<div className="key-data span-cols-4 span-sm-cols-12">
<div className="key-data-description-short__title">
{datapageData.title.title}
</div>
<div className="key-data-description-short__title-fragments">
{
// This method may return undefined if both fields are empty
joinTitleFragments(
datapageData.attributionShort,
datapageData.titleVariant
)
}
</div>
<div>
<SimpleMarkdownText
text={datapageData.descriptionShort}
useParagraphs={false}
/>
</div>
</div>
)}
{source && (
<div className="key-data span-cols-4 span-sm-cols-12">
<div className="key-data__title">Source</div>
<div>{source}</div>
</div>
)}
{lastUpdated && (
<div className="key-data span-cols-2 span-sm-cols-6">
<div className="key-data__title">Last updated</div>
<div>{lastUpdated}</div>
</div>
)}
{nextUpdate && (
<div className="key-data span-cols-2 span-sm-cols-6">
<div className="key-data__title">Next expected update</div>
<div>{nextUpdate}</div>
</div>
)}
{dateRange && (
<div className="key-data span-cols-2 span-sm-cols-6">
<div className="key-data__title">Date range</div>
<div>{dateRange}</div>
</div>
)}
{unit && (
<div className="key-data span-cols-2 span-sm-cols-6">
<div className="key-data__title">Unit</div>
<div>{unit}</div>
</div>
)}
{unitConversionFactor && (
<div className="key-data span-cols-2 span-sm-cols-6">
<div className="key-data__title">
Unit conversion factor
</div>
<div>{unitConversionFactor}</div>
</div>
)}
{links && (
<div className="key-data span-cols-2 span-sm-cols-6">
<div className="key-data__title">Links</div>
<div className="key-data__content--hide-overflow">
{links}
</div>
</div>
)}
</div>
)
}