@cdc/core 4.25.7 → 4.25.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/DataTable/DataTable.tsx +76 -42
- package/components/DataTable/DataTableStandAlone.tsx +4 -1
- package/components/DataTable/components/ChartHeader.tsx +21 -2
- package/components/DataTable/components/ExpandCollapse.tsx +12 -1
- package/components/DataTable/components/MapHeader.tsx +18 -1
- package/components/DownloadButton.tsx +4 -1
- package/components/EditorPanel/DataTableEditor.tsx +10 -1
- package/components/Filters/Filters.tsx +26 -9
- package/components/Footnotes/FootnotesStandAlone.tsx +2 -1
- package/components/{MediaControls.jsx → MediaControls.tsx} +32 -16
- package/dist/cove-main.css +0 -2
- package/dist/cove-main.css.map +1 -1
- package/helpers/cove/number.ts +6 -2
- package/helpers/coveUpdateWorker.ts +3 -1
- package/helpers/events.ts +32 -0
- package/helpers/metrics/helpers.ts +52 -0
- package/helpers/metrics/types.ts +43 -0
- package/helpers/ver/4.25.8.ts +61 -0
- package/helpers/ver/tests/4.25.8.test.ts +86 -0
- package/helpers/viewports.ts +2 -0
- package/package.json +2 -2
- package/styles/_button-section.scss +0 -2
- package/types/ForecastingSeriesKey.ts +0 -1
- package/types/Series.ts +4 -0
- package/types/Table.ts +1 -0
- package/helpers/events.js +0 -14
|
@@ -52,9 +52,9 @@ export type DataTableProps = {
|
|
|
52
52
|
vizTitle?: string
|
|
53
53
|
// determines if columns should be wrapped in the table
|
|
54
54
|
wrapColumns?: boolean
|
|
55
|
+
interactionLabel?: string
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
/* eslint-disable jsx-a11y/no-noninteractive-tabindex, jsx-a11y/no-static-element-interactions */
|
|
58
58
|
const DataTable = (props: DataTableProps) => {
|
|
59
59
|
const {
|
|
60
60
|
columns,
|
|
@@ -71,7 +71,8 @@ const DataTable = (props: DataTableProps) => {
|
|
|
71
71
|
tableTitle,
|
|
72
72
|
viewport,
|
|
73
73
|
vizTitle,
|
|
74
|
-
wrapColumns
|
|
74
|
+
wrapColumns,
|
|
75
|
+
interactionLabel = ''
|
|
75
76
|
} = props
|
|
76
77
|
const runtimeData = useMemo(() => {
|
|
77
78
|
const data = removeNullColumns(parentRuntimeData)
|
|
@@ -135,23 +136,23 @@ const DataTable = (props: DataTableProps) => {
|
|
|
135
136
|
const rows =
|
|
136
137
|
isVertical && sortBy.column
|
|
137
138
|
? rawRows.sort((a, b) => {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
139
|
+
let dataA
|
|
140
|
+
let dataB
|
|
141
|
+
if (config.type === 'map' && config.columns) {
|
|
142
|
+
const sortByColName = config.columns[sortBy.column].name
|
|
143
|
+
dataA = runtimeData[a][sortByColName]
|
|
144
|
+
dataB = runtimeData[b][sortByColName]
|
|
145
|
+
}
|
|
146
|
+
if (['chart', 'dashboard', 'table'].includes(config.type)) {
|
|
147
|
+
dataA = runtimeData[a][sortBy.column]
|
|
148
|
+
dataB = runtimeData[b][sortBy.column]
|
|
149
|
+
}
|
|
150
|
+
if (!dataA && !dataB && config.type === 'chart' && config.xAxis && config.xAxis.type === 'date-time') {
|
|
151
|
+
dataA = timeParse(config.runtime.xAxis.dateParseFormat)(runtimeData[a][config.xAxis.dataKey])
|
|
152
|
+
dataB = timeParse(config.runtime.xAxis.dateParseFormat)(runtimeData[b][config.xAxis.dataKey])
|
|
153
|
+
}
|
|
154
|
+
return dataA || dataB ? customSort(dataA, dataB, sortBy, config) : 0
|
|
155
|
+
})
|
|
155
156
|
: rawRows
|
|
156
157
|
|
|
157
158
|
const limitHeight = {
|
|
@@ -230,17 +231,17 @@ const DataTable = (props: DataTableProps) => {
|
|
|
230
231
|
const visibleData =
|
|
231
232
|
config.type === 'map'
|
|
232
233
|
? getMapRowData(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
234
|
+
rows,
|
|
235
|
+
columns,
|
|
236
|
+
config,
|
|
237
|
+
formatLegendLocation,
|
|
238
|
+
runtimeData as Record<string, Object>,
|
|
239
|
+
displayGeoName,
|
|
240
|
+
filterColumns
|
|
241
|
+
)
|
|
241
242
|
: runtimeData.map(d => {
|
|
242
|
-
|
|
243
|
-
|
|
243
|
+
return _.pick(d, [...filterColumns, ...dataSeriesColumns])
|
|
244
|
+
})
|
|
244
245
|
const csvData = config.table?.downloadVisibleDataOnly ? visibleData : rawData
|
|
245
246
|
|
|
246
247
|
// only use fullGeoName on County maps and no other
|
|
@@ -279,27 +280,31 @@ const DataTable = (props: DataTableProps) => {
|
|
|
279
280
|
? mapCellMatrix({ ...props, rows, wrapColumns, runtimeData, viewport })
|
|
280
281
|
: chartCellMatrix({ rows, ...props, runtimeData, isVertical, sortBy, hasRowType, viewport })
|
|
281
282
|
|
|
283
|
+
const useBottomExpandCollapse = config.table.showBottomCollapse && expanded && Array.isArray(childrenMatrix)
|
|
284
|
+
|
|
282
285
|
// If every value in a column is a number, record the column index so the header and cells can be right-aligned
|
|
283
286
|
const rightAlignedCols = childrenMatrix.length
|
|
284
287
|
? Object.fromEntries(
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
288
|
+
Object.keys(childrenMatrix[0])
|
|
289
|
+
.filter(
|
|
290
|
+
i => childrenMatrix.filter(row => isRightAlignedTableValue(row[i])).length === childrenMatrix.length
|
|
291
|
+
)
|
|
292
|
+
.map(x => [x, true])
|
|
293
|
+
)
|
|
291
294
|
: {}
|
|
292
295
|
|
|
296
|
+
const showCollapseButton = config.table.collapsible !== false && useBottomExpandCollapse
|
|
293
297
|
const TableMediaControls = ({ belowTable }) => {
|
|
294
298
|
const hasDownloadLink = config.table.download
|
|
295
299
|
return (
|
|
296
300
|
<MediaControls.Section classes={getMediaControlsClasses(belowTable, hasDownloadLink)}>
|
|
297
|
-
<MediaControls.Link config={config} dashboardDataConfig={dataConfig} />
|
|
301
|
+
<MediaControls.Link config={config} dashboardDataConfig={dataConfig} interactionLabel={interactionLabel} />
|
|
298
302
|
{hasDownloadLink && (
|
|
299
303
|
<DownloadButton
|
|
300
304
|
rawData={getDownloadData()}
|
|
301
305
|
fileName={`${vizTitle || 'data-table'}.csv`}
|
|
302
306
|
headerColor={headerColor}
|
|
307
|
+
interactionLabel={interactionLabel}
|
|
303
308
|
/>
|
|
304
309
|
)}
|
|
305
310
|
</MediaControls.Section>
|
|
@@ -308,11 +313,21 @@ const DataTable = (props: DataTableProps) => {
|
|
|
308
313
|
|
|
309
314
|
return (
|
|
310
315
|
<ErrorBoundary component='DataTable'>
|
|
311
|
-
{!config.table.showDownloadLinkBelow &&
|
|
316
|
+
{!config.table.showDownloadLinkBelow && (
|
|
317
|
+
<div className='w-100 d-flex justify-content-end'>
|
|
318
|
+
<TableMediaControls />
|
|
319
|
+
</div>
|
|
320
|
+
)}
|
|
312
321
|
<section id={tabbingId.replace('#', '')} className={getClassNames()} aria-label={accessibilityLabel}>
|
|
313
322
|
<SkipTo skipId={skipId} skipMessage='Skip Data Table' />
|
|
314
323
|
{config.table.collapsible !== false && (
|
|
315
|
-
<ExpandCollapse
|
|
324
|
+
<ExpandCollapse
|
|
325
|
+
expanded={expanded}
|
|
326
|
+
setExpanded={setExpanded}
|
|
327
|
+
tableTitle={tableTitle}
|
|
328
|
+
config={config}
|
|
329
|
+
interactionLabel={interactionLabel}
|
|
330
|
+
/>
|
|
316
331
|
)}
|
|
317
332
|
<div className='table-container' style={limitHeight}>
|
|
318
333
|
<Table
|
|
@@ -333,6 +348,7 @@ const DataTable = (props: DataTableProps) => {
|
|
|
333
348
|
sortBy={sortBy}
|
|
334
349
|
setSortBy={setSortBy}
|
|
335
350
|
rightAlignedCols={rightAlignedCols}
|
|
351
|
+
interactionLabel={interactionLabel}
|
|
336
352
|
/>
|
|
337
353
|
) : (
|
|
338
354
|
<ChartHeader
|
|
@@ -344,12 +360,14 @@ const DataTable = (props: DataTableProps) => {
|
|
|
344
360
|
setSortBy={setSortBy}
|
|
345
361
|
viewport={viewport}
|
|
346
362
|
rightAlignedCols={rightAlignedCols}
|
|
363
|
+
interactionLabel={interactionLabel}
|
|
347
364
|
/>
|
|
348
365
|
)
|
|
349
366
|
}
|
|
350
367
|
tableOptions={{
|
|
351
|
-
className: `table table-striped table-width-unset ${
|
|
352
|
-
|
|
368
|
+
className: `table table-striped table-width-unset ${
|
|
369
|
+
expanded ? 'data-table' : 'data-table cdcdataviz-sr-only'
|
|
370
|
+
}${isVertical ? '' : ' horizontal'}`,
|
|
353
371
|
'aria-live': 'assertive',
|
|
354
372
|
'aria-rowcount': config?.data?.length ? config.data.length : -1,
|
|
355
373
|
hidden: !expanded,
|
|
@@ -382,7 +400,18 @@ const DataTable = (props: DataTableProps) => {
|
|
|
382
400
|
)}
|
|
383
401
|
</div>
|
|
384
402
|
</section>
|
|
385
|
-
|
|
403
|
+
<div className={`w-100 d-flex ${showCollapseButton ? 'justify-content-between' : 'justify-content-end'}`}>
|
|
404
|
+
{showCollapseButton && (
|
|
405
|
+
<button
|
|
406
|
+
className='border-0 bg-transparent text-decoration-underline mt-2'
|
|
407
|
+
style={{ color: 'var(--colors-link-blue)', fontSize: '0.772rem', textUnderlineOffset: '6px' }}
|
|
408
|
+
onClick={() => setExpanded(false)}
|
|
409
|
+
>
|
|
410
|
+
- Collapse table
|
|
411
|
+
</button>
|
|
412
|
+
)}
|
|
413
|
+
{config.table.showDownloadLinkBelow && <TableMediaControls belowTable={true} />}
|
|
414
|
+
</div>
|
|
386
415
|
<div id={skipId} className='cdcdataviz-sr-only'>
|
|
387
416
|
Skipped data table.
|
|
388
417
|
</div>
|
|
@@ -394,7 +423,12 @@ const DataTable = (props: DataTableProps) => {
|
|
|
394
423
|
<ErrorBoundary component='DataTable'>
|
|
395
424
|
<section id={tabbingId.replace('#', '')} className={getClassNames()} aria-label={accessibilityLabel}>
|
|
396
425
|
<SkipTo skipId={skipId} skipMessage='Skip Data Table' />
|
|
397
|
-
<ExpandCollapse
|
|
426
|
+
<ExpandCollapse
|
|
427
|
+
expanded={expanded}
|
|
428
|
+
setExpanded={setExpanded}
|
|
429
|
+
tableTitle={tableTitle}
|
|
430
|
+
interactionLabel={interactionLabel}
|
|
431
|
+
/>
|
|
398
432
|
<div className='table-container' style={limitHeight}>
|
|
399
433
|
<Table
|
|
400
434
|
viewport={viewport}
|
|
@@ -18,6 +18,7 @@ type StandAloneProps = {
|
|
|
18
18
|
isEditor?: boolean
|
|
19
19
|
updateConfig?: (Visualization) => void
|
|
20
20
|
datasets?: Datasets
|
|
21
|
+
interactionLabel?: string
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
const DataTableStandAlone: React.FC<StandAloneProps> = ({
|
|
@@ -26,7 +27,8 @@ const DataTableStandAlone: React.FC<StandAloneProps> = ({
|
|
|
26
27
|
updateConfig,
|
|
27
28
|
viewport,
|
|
28
29
|
isEditor,
|
|
29
|
-
datasets
|
|
30
|
+
datasets,
|
|
31
|
+
interactionLabel = ''
|
|
30
32
|
}) => {
|
|
31
33
|
const [filteredData, setFilteredData] = useState<Record<string, any>[]>(
|
|
32
34
|
filterVizData(config.filters, config.formattedData || config.data)
|
|
@@ -69,6 +71,7 @@ const DataTableStandAlone: React.FC<StandAloneProps> = ({
|
|
|
69
71
|
tabbingId={visualizationKey}
|
|
70
72
|
tableTitle={config.table.label}
|
|
71
73
|
viewport={viewport || 'lg'}
|
|
74
|
+
interactionLabel={interactionLabel}
|
|
72
75
|
/>
|
|
73
76
|
<FootnotesStandAlone config={config.footnotes} filters={config.filters?.filter(f => f.filterFootnotes)} />
|
|
74
77
|
</>
|
|
@@ -6,8 +6,19 @@ import { SortIcon } from './SortIcon'
|
|
|
6
6
|
import { getNewSortBy } from '../helpers/getNewSortBy'
|
|
7
7
|
import parse from 'html-react-parser'
|
|
8
8
|
import { ChartConfig } from '@cdc/chart/src/types/ChartConfig'
|
|
9
|
+
import { publishAnalyticsEvent } from '../../../helpers/metrics/helpers'
|
|
9
10
|
|
|
10
|
-
type ChartHeaderProps = {
|
|
11
|
+
type ChartHeaderProps = {
|
|
12
|
+
data
|
|
13
|
+
isVertical
|
|
14
|
+
config
|
|
15
|
+
setSortBy
|
|
16
|
+
sortBy
|
|
17
|
+
hasRowType?
|
|
18
|
+
viewport
|
|
19
|
+
rightAlignedCols
|
|
20
|
+
interactionLabel: string
|
|
21
|
+
}
|
|
11
22
|
|
|
12
23
|
const ChartHeader = ({
|
|
13
24
|
data,
|
|
@@ -17,7 +28,8 @@ const ChartHeader = ({
|
|
|
17
28
|
sortBy,
|
|
18
29
|
hasRowType,
|
|
19
30
|
viewport,
|
|
20
|
-
rightAlignedCols
|
|
31
|
+
rightAlignedCols,
|
|
32
|
+
interactionLabel
|
|
21
33
|
}: ChartHeaderProps) => {
|
|
22
34
|
const groupBy = config.table?.groupBy
|
|
23
35
|
if (!data) return
|
|
@@ -104,6 +116,13 @@ const ChartHeader = ({
|
|
|
104
116
|
scope='col'
|
|
105
117
|
onClick={() => {
|
|
106
118
|
if (hasRowType) return
|
|
119
|
+
publishAnalyticsEvent(
|
|
120
|
+
`data_table_sort_by|${newSortBy.column}|${
|
|
121
|
+
newSortBy.asc === true ? 'asc' : newSortBy.asc === false ? 'desc' : 'undefined'
|
|
122
|
+
}`,
|
|
123
|
+
'click',
|
|
124
|
+
interactionLabel
|
|
125
|
+
)
|
|
107
126
|
setSortBy(newSortBy)
|
|
108
127
|
}}
|
|
109
128
|
onKeyDown={e => {
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
+
import { publishAnalyticsEvent } from '../../../helpers/metrics/helpers'
|
|
2
|
+
import { Visualization } from '../../../types/Visualization'
|
|
1
3
|
import Icon from '../../ui/Icon'
|
|
2
4
|
import parse from 'html-react-parser'
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
interface ExpandCollapseProps {
|
|
7
|
+
expanded: boolean
|
|
8
|
+
setExpanded: (expanded: boolean) => void
|
|
9
|
+
tableTitle: string
|
|
10
|
+
config?: Visualization
|
|
11
|
+
interactionLabel?: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const ExpandCollapse = ({ expanded, setExpanded, tableTitle, config, interactionLabel = '' }: ExpandCollapseProps) => {
|
|
5
15
|
return (
|
|
6
16
|
<div
|
|
7
17
|
role='button'
|
|
8
18
|
className={expanded ? 'data-table-heading p-3' : 'collapsed data-table-heading p-3'}
|
|
9
19
|
onClick={() => {
|
|
20
|
+
publishAnalyticsEvent('data_table_toggled', 'click', interactionLabel, config.type || 'unknown')
|
|
10
21
|
setExpanded(!expanded)
|
|
11
22
|
}}
|
|
12
23
|
tabIndex={0}
|
|
@@ -2,10 +2,12 @@ import { DataTableProps } from '../DataTable'
|
|
|
2
2
|
import ScreenReaderText from '../../elements/ScreenReaderText'
|
|
3
3
|
import { SortIcon } from './SortIcon'
|
|
4
4
|
import { getNewSortBy } from '../helpers/getNewSortBy'
|
|
5
|
+
import { publishAnalyticsEvent } from '../../../helpers/metrics/helpers'
|
|
5
6
|
|
|
6
7
|
type MapHeaderProps = DataTableProps & {
|
|
7
8
|
sortBy: { column; asc }
|
|
8
9
|
setSortBy: Function
|
|
10
|
+
interactionLabel: string
|
|
9
11
|
}
|
|
10
12
|
|
|
11
13
|
const ColumnHeadingText = ({ text, config }) => {
|
|
@@ -16,7 +18,15 @@ const ColumnHeadingText = ({ text, config }) => {
|
|
|
16
18
|
return text
|
|
17
19
|
}
|
|
18
20
|
|
|
19
|
-
const MapHeader = ({
|
|
21
|
+
const MapHeader = ({
|
|
22
|
+
columns,
|
|
23
|
+
config,
|
|
24
|
+
indexTitle,
|
|
25
|
+
sortBy,
|
|
26
|
+
setSortBy,
|
|
27
|
+
rightAlignedCols,
|
|
28
|
+
interactionLabel = ''
|
|
29
|
+
}: MapHeaderProps) => {
|
|
20
30
|
return (
|
|
21
31
|
<tr>
|
|
22
32
|
{Object.keys(columns)
|
|
@@ -46,6 +56,13 @@ const MapHeader = ({ columns, config, indexTitle, sortBy, setSortBy, rightAligne
|
|
|
46
56
|
role='columnheader'
|
|
47
57
|
scope='col'
|
|
48
58
|
onClick={() => {
|
|
59
|
+
publishAnalyticsEvent(
|
|
60
|
+
`data_table_sort_by|${newSortBy.column}|${
|
|
61
|
+
newSortBy.asc === true ? 'asc' : newSortBy.asc === false ? 'desc' : 'undefined'
|
|
62
|
+
}`,
|
|
63
|
+
'click',
|
|
64
|
+
interactionLabel
|
|
65
|
+
)
|
|
49
66
|
setSortBy(newSortBy)
|
|
50
67
|
}}
|
|
51
68
|
onKeyDown={e => {
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import Papa from 'papaparse'
|
|
2
|
+
import { publishAnalyticsEvent } from '../helpers/metrics/helpers'
|
|
2
3
|
|
|
3
4
|
type DownloadButtonProps = {
|
|
4
5
|
rawData: Object
|
|
5
6
|
fileName: string
|
|
6
7
|
headerColor: string
|
|
7
8
|
skipId: string | number
|
|
9
|
+
configUrl?: string
|
|
8
10
|
}
|
|
9
11
|
|
|
10
|
-
const DownloadButton = ({ rawData, fileName, headerColor, skipId }: DownloadButtonProps) => {
|
|
12
|
+
const DownloadButton = ({ rawData, fileName, headerColor, skipId, configUrl }: DownloadButtonProps) => {
|
|
11
13
|
const csvData = Papa.unparse(rawData)
|
|
12
14
|
// Prepend a Byte Order Mark (BOM) to the CSV data.
|
|
13
15
|
// The BOM is a special marker that helps applications like Excel recognize the file as UTF-8 encoded.
|
|
@@ -22,6 +24,7 @@ const DownloadButton = ({ rawData, fileName, headerColor, skipId }: DownloadButt
|
|
|
22
24
|
//@ts-ignore
|
|
23
25
|
navigator.msSaveBlob(blob, fileName)
|
|
24
26
|
}
|
|
27
|
+
publishAnalyticsEvent('data_downloaded', 'click', configUrl)
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
return (
|
|
@@ -216,7 +216,7 @@ const DataTableEditor: React.FC<DataTableProps> = ({ config, updateField, isDash
|
|
|
216
216
|
section='table'
|
|
217
217
|
updateField={updateField}
|
|
218
218
|
/>
|
|
219
|
-
{config.table.collapsible
|
|
219
|
+
{config.table.collapsible && (
|
|
220
220
|
<CheckBox
|
|
221
221
|
value={config.table.expanded}
|
|
222
222
|
fieldName='expanded'
|
|
@@ -225,6 +225,15 @@ const DataTableEditor: React.FC<DataTableProps> = ({ config, updateField, isDash
|
|
|
225
225
|
updateField={updateField}
|
|
226
226
|
/>
|
|
227
227
|
)}
|
|
228
|
+
{config.table.collapsible && (
|
|
229
|
+
<CheckBox
|
|
230
|
+
value={config.table.showBottomCollapse}
|
|
231
|
+
fieldName='showBottomCollapse'
|
|
232
|
+
label='Show collapse below table'
|
|
233
|
+
section='table'
|
|
234
|
+
updateField={updateField}
|
|
235
|
+
/>
|
|
236
|
+
)}
|
|
228
237
|
<CheckBox
|
|
229
238
|
value={config.table.download}
|
|
230
239
|
fieldName='download'
|
|
@@ -14,10 +14,12 @@ import { getNestedOptions } from './helpers/getNestedOptions'
|
|
|
14
14
|
import { getWrappingStatuses } from './helpers/filterWrapping'
|
|
15
15
|
import { handleSorting } from './helpers/handleSorting'
|
|
16
16
|
import { getChangedFilters } from './helpers/getChangedFilters'
|
|
17
|
+
import { getUniqueValues } from '@cdc/map/src/helpers'
|
|
17
18
|
import { getQueryParams, updateQueryString } from '../../helpers/queryStringUtils'
|
|
18
19
|
import { applyQueuedActive } from './helpers/applyQueuedActive'
|
|
19
20
|
import Tabs from './components/Tabs'
|
|
20
21
|
import Dropdown from './components/Dropdown'
|
|
22
|
+
import { publishAnalyticsEvent } from '../../helpers/metrics/helpers'
|
|
21
23
|
|
|
22
24
|
export const VIZ_FILTER_STYLE = {
|
|
23
25
|
dropdown: 'dropdown',
|
|
@@ -33,18 +35,13 @@ export type VizFilterStyle = (typeof VIZ_FILTER_STYLE)[keyof typeof VIZ_FILTER_S
|
|
|
33
35
|
|
|
34
36
|
export const filterStyleOptions = Object.values(VIZ_FILTER_STYLE)
|
|
35
37
|
|
|
36
|
-
const BUTTON_TEXT = {
|
|
37
|
-
apply: 'Apply',
|
|
38
|
-
resetText: 'Clear Filters'
|
|
39
|
-
}
|
|
40
|
-
|
|
41
38
|
type FilterProps = {
|
|
42
39
|
dimensions?: DimensionsType
|
|
43
40
|
config: Visualization
|
|
44
41
|
setFilters: Function
|
|
45
42
|
standaloneMap?: boolean
|
|
46
43
|
excludedData?: Object[]
|
|
47
|
-
|
|
44
|
+
interactionLabel?: string
|
|
48
45
|
}
|
|
49
46
|
|
|
50
47
|
const Filters: React.FC<FilterProps> = ({
|
|
@@ -53,7 +50,7 @@ const Filters: React.FC<FilterProps> = ({
|
|
|
53
50
|
standaloneMap,
|
|
54
51
|
setFilters,
|
|
55
52
|
excludedData,
|
|
56
|
-
|
|
53
|
+
interactionLabel = ''
|
|
57
54
|
}) => {
|
|
58
55
|
const { filters, general, theme, filterBehavior } = visualizationConfig
|
|
59
56
|
const [showApplyButton, setShowApplyButton] = useState(false)
|
|
@@ -89,6 +86,13 @@ const Filters: React.FC<FilterProps> = ({
|
|
|
89
86
|
|
|
90
87
|
const newFilters = getChangedFilters([...filters], index, value, filterBehavior)
|
|
91
88
|
setFilters(newFilters)
|
|
89
|
+
|
|
90
|
+
publishAnalyticsEvent(
|
|
91
|
+
`${visualizationConfig.type}_filter_changed`,
|
|
92
|
+
'click',
|
|
93
|
+
`${interactionLabel}|key_${newFilters?.[index]?.columnName}|value_${newFilters?.[index]?.active}`,
|
|
94
|
+
visualizationConfig.type
|
|
95
|
+
)
|
|
92
96
|
}
|
|
93
97
|
|
|
94
98
|
const handleApplyButton = newFilters => {
|
|
@@ -109,6 +113,13 @@ const Filters: React.FC<FilterProps> = ({
|
|
|
109
113
|
|
|
110
114
|
setFilters(newFilters)
|
|
111
115
|
|
|
116
|
+
publishAnalyticsEvent(
|
|
117
|
+
`${visualizationConfig.type}_filter_applied`,
|
|
118
|
+
'click',
|
|
119
|
+
`${interactionLabel}|${newFilters.map(f => f.active)}`,
|
|
120
|
+
visualizationConfig.type
|
|
121
|
+
)
|
|
122
|
+
|
|
112
123
|
setShowApplyButton(false)
|
|
113
124
|
}
|
|
114
125
|
|
|
@@ -137,6 +148,12 @@ const Filters: React.FC<FilterProps> = ({
|
|
|
137
148
|
}
|
|
138
149
|
|
|
139
150
|
setFilters(newFilters)
|
|
151
|
+
publishAnalyticsEvent(
|
|
152
|
+
`${visualizationConfig.type}_filter_reset`,
|
|
153
|
+
'click',
|
|
154
|
+
`${interactionLabel}`,
|
|
155
|
+
visualizationConfig.type
|
|
156
|
+
)
|
|
140
157
|
}
|
|
141
158
|
|
|
142
159
|
const mobileFilterStyle = useMemo(() => {
|
|
@@ -269,10 +286,10 @@ const Filters: React.FC<FilterProps> = ({
|
|
|
269
286
|
disabled={!showApplyButton}
|
|
270
287
|
className={[general?.headerColor ? general.headerColor : theme, 'apply', 'me-2'].join(' ')}
|
|
271
288
|
>
|
|
272
|
-
|
|
289
|
+
Apply
|
|
273
290
|
</Button>
|
|
274
291
|
<Button secondary disabled={initialFiltersActive} onClick={handleReset}>
|
|
275
|
-
|
|
292
|
+
Clear Filters
|
|
276
293
|
</Button>
|
|
277
294
|
</div>
|
|
278
295
|
) : (
|
|
@@ -14,7 +14,8 @@ const FootnotesStandAlone: React.FC<StandAloneProps> = ({ config, filters }) =>
|
|
|
14
14
|
if (!config) return null
|
|
15
15
|
// get the api footnotes from the config
|
|
16
16
|
const apiFootnotes = useMemo(() => {
|
|
17
|
-
|
|
17
|
+
// If filters exist and should filter footnotes, apply them, otherwise use data as-is
|
|
18
|
+
const configData = filters && filters.length > 0 ? filterVizData(filters, config.data) : config.data
|
|
18
19
|
if (configData && config.dataKey && config.dynamicFootnotes) {
|
|
19
20
|
const { symbolColumn, textColumn, orderColumn } = config.dynamicFootnotes
|
|
20
21
|
const _data = configData.map(row => _.pick(row, [symbolColumn, textColumn, orderColumn]))
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
// import html2pdf from 'html2pdf.js'
|
|
3
|
+
import { publishAnalyticsEvent } from '@cdc/core/helpers/metrics/helpers'
|
|
3
4
|
|
|
4
5
|
const buttonText = {
|
|
5
6
|
pdf: 'Download PDF',
|
|
@@ -33,7 +34,7 @@ const saveImageAs = (uri, filename) => {
|
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
const generateMedia = (state, type, elementToCapture) => {
|
|
37
|
+
const generateMedia = (state, type, elementToCapture, interactionLabel) => {
|
|
37
38
|
// Identify Selector
|
|
38
39
|
const baseSvg = document.querySelector(`[data-download-id=${elementToCapture}]`)
|
|
39
40
|
|
|
@@ -75,20 +76,30 @@ const generateMedia = (state, type, elementToCapture) => {
|
|
|
75
76
|
|
|
76
77
|
switch (type) {
|
|
77
78
|
case 'image':
|
|
79
|
+
const container = document.createElement('div')
|
|
80
|
+
// On screenshots without a title (like some charts), add padding around the chart svg
|
|
81
|
+
if (!state.showTitle) {
|
|
82
|
+
container.style.padding = '35px'
|
|
83
|
+
}
|
|
84
|
+
container.appendChild(baseSvg.cloneNode(true)) // Clone baseSvg to avoid modifying the original
|
|
85
|
+
|
|
78
86
|
const downloadImage = async () => {
|
|
87
|
+
document.body.appendChild(container) // Append container to the DOM
|
|
79
88
|
import(/* webpackChunkName: "html2canvas" */ 'html2canvas').then(mod => {
|
|
80
89
|
mod
|
|
81
|
-
.default(
|
|
90
|
+
.default(container, {
|
|
82
91
|
ignoreElements: el =>
|
|
83
92
|
el.className?.indexOf &&
|
|
84
93
|
el.className.search(/download-buttons|download-links|data-table-container/) !== -1
|
|
85
94
|
})
|
|
86
95
|
.then(canvas => {
|
|
87
96
|
saveImageAs(canvas.toDataURL(), filename + '.png')
|
|
97
|
+
publishAnalyticsEvent(`${state.type}_image_downloaded`, 'click', interactionLabel, `${state.type}`)
|
|
88
98
|
})
|
|
89
99
|
})
|
|
90
100
|
}
|
|
91
101
|
downloadImage()
|
|
102
|
+
|
|
92
103
|
return
|
|
93
104
|
case 'pdf':
|
|
94
105
|
// let opt = {
|
|
@@ -115,22 +126,13 @@ const generateMedia = (state, type, elementToCapture) => {
|
|
|
115
126
|
}
|
|
116
127
|
}
|
|
117
128
|
|
|
118
|
-
|
|
119
|
-
// Apparently some packages use state.headerColor where others use state.theme
|
|
120
|
-
const handleTheme = state => {
|
|
121
|
-
if (state?.headerColor) return state.headerColor // ie. maps
|
|
122
|
-
if (state?.theme) return state.theme // ie. charts
|
|
123
|
-
return 'theme-notFound'
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// Download CSV
|
|
127
|
-
const Button = ({ state, text, type, title, elementToCapture }) => {
|
|
129
|
+
const Button = ({ state, text, type, title, elementToCapture, interactionLabel = '' }) => {
|
|
128
130
|
const buttonClasses = ['btn', 'btn-primary']
|
|
129
131
|
return (
|
|
130
132
|
<button
|
|
131
133
|
className={buttonClasses.join(' ')}
|
|
132
134
|
title={title}
|
|
133
|
-
onClick={() => generateMedia(state, type, elementToCapture)}
|
|
135
|
+
onClick={() => generateMedia(state, type, elementToCapture, interactionLabel)}
|
|
134
136
|
style={{ lineHeight: '1.4em' }}
|
|
135
137
|
>
|
|
136
138
|
{buttonText[type]}
|
|
@@ -139,12 +141,19 @@ const Button = ({ state, text, type, title, elementToCapture }) => {
|
|
|
139
141
|
}
|
|
140
142
|
|
|
141
143
|
// Link to CSV/JSON data
|
|
142
|
-
const Link = ({ config, dashboardDataConfig }) => {
|
|
144
|
+
const Link = ({ config, dashboardDataConfig, interactionLabel }) => {
|
|
143
145
|
let dataConfig = dashboardDataConfig || config
|
|
144
146
|
// Handles Maps & Charts
|
|
145
147
|
if (dataConfig.dataFileSourceType === 'url' && dataConfig.dataFileName && config.table.showDownloadUrl) {
|
|
146
148
|
return (
|
|
147
|
-
<a
|
|
149
|
+
<a
|
|
150
|
+
href={dataConfig.dataFileName}
|
|
151
|
+
title={buttonText.link}
|
|
152
|
+
target='_blank'
|
|
153
|
+
onClick={() => {
|
|
154
|
+
publishAnalyticsEvent('data_viewed', 'click', `${unknown}`)
|
|
155
|
+
}}
|
|
156
|
+
>
|
|
148
157
|
{buttonText.link}
|
|
149
158
|
</a>
|
|
150
159
|
)
|
|
@@ -152,7 +161,14 @@ const Link = ({ config, dashboardDataConfig }) => {
|
|
|
152
161
|
|
|
153
162
|
// Handles Dashboards
|
|
154
163
|
return config?.table?.showDownloadUrl && dataConfig.dataUrl ? (
|
|
155
|
-
<a
|
|
164
|
+
<a
|
|
165
|
+
href={dataConfig.dataUrl}
|
|
166
|
+
title='Link to view full data set'
|
|
167
|
+
target='_blank'
|
|
168
|
+
onClick={() => {
|
|
169
|
+
publishAnalyticsEvent('data_viewed', 'click', `${interactionLabel}`)
|
|
170
|
+
}}
|
|
171
|
+
>
|
|
156
172
|
{buttonText.link}
|
|
157
173
|
</a>
|
|
158
174
|
) : null
|
package/dist/cove-main.css
CHANGED
|
@@ -549,9 +549,7 @@ body.post-type-cdc_visualization .cdc-editor .configure .editor-panel {
|
|
|
549
549
|
float: unset;
|
|
550
550
|
}
|
|
551
551
|
.cdc-open-viz-module .download-links {
|
|
552
|
-
display: flex;
|
|
553
552
|
justify-content: flex-end;
|
|
554
|
-
width: 100%;
|
|
555
553
|
line-height: 1;
|
|
556
554
|
}
|
|
557
555
|
.cdc-open-viz-module .download-links.brush-active {
|
package/dist/cove-main.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../styles/_reset.scss","../styles/_global-variables.scss","../styles/filters.scss","../styles/base.scss","../styles/_global.scss","../styles/_variables.scss","../styles/_button-section.scss","../styles/_series-list.scss","../styles/heading-colors.scss","../styles/v2/themes/_color-definitions.scss","../styles/v2/components/ui/tooltip.scss","../styles/v2/utils/_align.scss","../styles/v2/utils/_animations.scss","../styles/v2/utils/_grid.scss","../styles/v2/main.scss","../styles/v2/base/_general.scss","../styles/v2/base/_heading.scss","../styles/v2/base/_file-selector.scss","../styles/v2/layout/_alert.scss","../styles/v2/layout/_component.scss","../styles/v2/layout/_progression.scss","../styles/v2/utils/_mixins.scss","../styles/v2/layout/_tooltip.scss","../styles/v2/utils/_breakpoints.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAoEE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;AAAA;AAEE;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;;AAGF;AACE;EACA;;AAGF;AACE;AAAA;EAEA;;;AC9CF;EAEI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;AAON;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC7GA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;;AAKF;EACE;EACA;;AAIA;EACE;EACA;;AAGJ;EAEE;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;;AAMF;EACE;EACA;;;AAKN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;;;AC9FN;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EAWA;EACA;EACA;;AChFF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;EAIA;EACA;;AAJA;EAHF;IAII;;;AAIF;EACE;;AAKF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAGJ;EACE,kBClEE;EDmEF;EACA;EACA;EACA;;AACA;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA,YC5HG;ED6HH;EACA;EACA;EACA;;AAEF;EACE,YClIW;EDmIX;EACA;;AAEF;EACE;;AAEF;EACE;EACA,OC5IG;ED6IH;;AACA;EACE;;AAGJ;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE,kBCtKK;EDuKL,cCvKK;;ADwKL;EACE;EACA;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAC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GF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;;AC3KR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOA;AAAA;EACE;;AAKA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAKJ;AAAA;AAAA;AAAA;EAEE;EACA;EACA;EACA;EACA;;AAGE;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;EACE;;AAEA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;EACA;;;AAKN;EACE;EACA;EACA;;;AAGF;EACE;EACA;;AAGE;EACE;EACA;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;;AChJJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;ACJN;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAIJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AC1BJ;EACE;EACA;;;AA5BE;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAQF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAeJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;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;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;;AKzKR;EAEE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;ALqEE;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AA3CJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AM1KR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,ONwKU;EMvKV;;AAEA;EACE;EACA;EACA;EACA,ONqKS;;AMlKX;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AC/BJ;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AClBF;EACE;EACA;EACA;EACA,ORkLW;EQjLX;EACA;EACA;EACA;;AAEA;EACE,kBRyKW;;AQtKb;EACE;EACA,ORmKG;EQlKH;;AHDF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AIlDJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AClCJ;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE,YVsKW;;AUlKf;EACE;;AClBF;ECAE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EDRA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AEzER;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA,OAhBmB;EAiBnB,kBAlBgB;EAmBhB;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAMJ;EACE;;AAIJ;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;ACxFA;ETeA","file":"cove-main.css"}
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../styles/_reset.scss","../styles/_global-variables.scss","../styles/filters.scss","../styles/base.scss","../styles/_global.scss","../styles/_variables.scss","../styles/_button-section.scss","../styles/_series-list.scss","../styles/heading-colors.scss","../styles/v2/themes/_color-definitions.scss","../styles/v2/components/ui/tooltip.scss","../styles/v2/utils/_align.scss","../styles/v2/utils/_animations.scss","../styles/v2/utils/_grid.scss","../styles/v2/main.scss","../styles/v2/base/_general.scss","../styles/v2/base/_heading.scss","../styles/v2/base/_file-selector.scss","../styles/v2/layout/_alert.scss","../styles/v2/layout/_component.scss","../styles/v2/layout/_progression.scss","../styles/v2/utils/_mixins.scss","../styles/v2/layout/_tooltip.scss","../styles/v2/utils/_breakpoints.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAoEE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;AAAA;AAEE;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;;AAGF;AACE;EACA;;AAGF;AACE;AAAA;EAEA;;;AC9CF;EAEI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;AAON;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC7GA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;;;AAKF;EACE;EACA;;AAIA;EACE;EACA;;AAGJ;EAEE;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;;AAMF;EACE;EACA;;;AAKN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;;;AC9FN;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EAWA;EACA;EACA;;AChFF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;EAIA;EACA;;AAJA;EAHF;IAII;;;AAIF;EACE;;AAKF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAGJ;EACE,kBClEE;EDmEF;EACA;EACA;EACA;;AACA;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA,YC5HG;ED6HH;EACA;EACA;EACA;;AAEF;EACE,YClIW;EDmIX;EACA;;AAEF;EACE;;AAEF;EACE;EACA,OC5IG;ED6IH;;AACA;EACE;;AAGJ;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE,kBCtKK;EDuKL,cCvKK;;ADwKL;EACE;EACA;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAC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CA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;;AC3KR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOA;AAAA;EACE;;AAKA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAKJ;AAAA;AAAA;AAAA;EAEE;EACA;EACA;EACA;EACA;;AAGE;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;EACE;;AAEA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;EACA;;;AAKN;EACE;EACA;EACA;;;AAGF;EACE;EACA;;AAGE;EACE;EACA;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;;AChJJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;ACJN;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAIJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AC1BJ;EACE;EACA;;;AA5BE;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAQF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAeJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF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;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EA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AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AApCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AM1KR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,ONwKU;EMvKV;;AAEA;EACE;EACA;EACA;EACA,ONqKS;;AMlKX;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AC/BJ;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AClBF;EACE;EACA;EACA;EACA,ORkLW;EQjLX;EACA;EACA;EACA;;AAEA;EACE,kBRyKW;;AQtKb;EACE;EACA,ORmKG;EQlKH;;AHDF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AIlDJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AClCJ;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE,YVsKW;;AUlKf;EACE;;AClBF;ECAE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EDRA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AEzER;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA,OAhBmB;EAiBnB,kBAlBgB;EAmBhB;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAMJ;EACE;;AAIJ;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;ACxFA;ETeA","file":"cove-main.css"}
|
package/helpers/cove/number.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { VisualizationType } from './../../../../node_modules/@cdc/chart/src/types/ChartConfig'
|
|
2
|
-
import { Visualization } from '@cdc/core/types/Visualization'
|
|
3
1
|
import numberFromString from '@cdc/core/helpers/numberFromString'
|
|
4
2
|
|
|
5
3
|
const abbreviateNumber = num => {
|
|
@@ -193,6 +191,12 @@ const formatNumber = (num, axis, shouldAbbreviate = false, config = null, addCol
|
|
|
193
191
|
result += bottomSuffix
|
|
194
192
|
}
|
|
195
193
|
}
|
|
194
|
+
if (config.visualizationType === 'Pie') {
|
|
195
|
+
// add default suffix
|
|
196
|
+
if (!suffix) {
|
|
197
|
+
result += '%'
|
|
198
|
+
}
|
|
199
|
+
}
|
|
196
200
|
if (isNegative) {
|
|
197
201
|
result = '-' + result
|
|
198
202
|
}
|
|
@@ -16,6 +16,7 @@ import update_4_25_3 from './ver/4.25.3'
|
|
|
16
16
|
import update_4_25_4 from './ver/4.25.4'
|
|
17
17
|
import update_4_25_6 from './ver/4.25.6'
|
|
18
18
|
import update_4_25_7 from './ver/4.25.7'
|
|
19
|
+
import update_4_25_8 from './ver/4.25.8'
|
|
19
20
|
|
|
20
21
|
export const coveUpdateWorker = (config, multiDashboardVersion?) => {
|
|
21
22
|
let genConfig = config
|
|
@@ -34,7 +35,8 @@ export const coveUpdateWorker = (config, multiDashboardVersion?) => {
|
|
|
34
35
|
['4.25.3', update_4_25_3],
|
|
35
36
|
['4.25.4', update_4_25_4],
|
|
36
37
|
['4.25.6', update_4_25_6],
|
|
37
|
-
['4.25.7', update_4_25_7]
|
|
38
|
+
['4.25.7', update_4_25_7],
|
|
39
|
+
['4.25.8', update_4_25_8]
|
|
38
40
|
]
|
|
39
41
|
|
|
40
42
|
versions.forEach(([version, updateFunction, alwaysRun]: [string, UpdateFunction, boolean?]) => {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* Subscribes a listener function to a custom event on the document.
|
|
4
|
+
* @param eventName - The name of the event to listen for.
|
|
5
|
+
* @param listener - The callback function to invoke when the event is triggered.
|
|
6
|
+
*/
|
|
7
|
+
function subscribe(eventName: string, listener: EventListenerOrEventListenerObject): void {
|
|
8
|
+
document.addEventListener(eventName, listener)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Unsubscribes a listener function from a custom event on the document.
|
|
14
|
+
* @param eventName - The name of the event to stop listening for.
|
|
15
|
+
* @param listener - The callback function to remove.
|
|
16
|
+
*/
|
|
17
|
+
function unsubscribe(eventName: string, listener: EventListenerOrEventListenerObject): void {
|
|
18
|
+
document.removeEventListener(eventName, listener)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Publishes (dispatches) a custom event with optional data payload on the document.
|
|
24
|
+
* @param eventName - The name of the event to dispatch.
|
|
25
|
+
* @param data - Optional data to include in the event's detail property.
|
|
26
|
+
*/
|
|
27
|
+
function publish(eventName: string, data?: any): void {
|
|
28
|
+
const event = new CustomEvent(eventName, { detail: data })
|
|
29
|
+
document.dispatchEvent(event)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { publish, subscribe, unsubscribe }
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { publish } from '../events'
|
|
2
|
+
import packageJson from '../../package.json'
|
|
3
|
+
import {
|
|
4
|
+
COVE_VISUALIZATION_TYPES,
|
|
5
|
+
ANALYTICS_EVENT_ACTIONS,
|
|
6
|
+
ANALYTICS_EVENT_TYPES
|
|
7
|
+
} from './types'
|
|
8
|
+
import { GetLabelForEvent } from './getLabelForEvent'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Retrieves the version of the package from its package.json file.
|
|
12
|
+
* @returns {string} The version of the package.
|
|
13
|
+
*/
|
|
14
|
+
export const getPackageVersion = () => {
|
|
15
|
+
try {
|
|
16
|
+
return packageJson.version
|
|
17
|
+
} catch (e) {
|
|
18
|
+
console.error('Error loading package version:', e)
|
|
19
|
+
return 'unknown'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Publishes an analytics event with the specified parameters.
|
|
25
|
+
* @param {ANALYTICS_EVENT_TYPES} eventType - The type of the event
|
|
26
|
+
* @param {ANALYTICS_EVENT_ACTIONS} [eventAction='unknown'] - The action associated with the event
|
|
27
|
+
* @param {ANALYTICS_EVENT_LABEL} [eventLabel='unknown'] - The label for the event
|
|
28
|
+
* @param {COVE_VISUALIZATION_TYPES} [visualizationType] - The type of visualization associated with the event
|
|
29
|
+
* @param {Object} [additionalDetails] - Additional details to include in the event
|
|
30
|
+
* @returns {void}
|
|
31
|
+
* @description This function is used to publish analytics events for various user interactions and system states.
|
|
32
|
+
*/
|
|
33
|
+
export const publishAnalyticsEvent = <T extends ANALYTICS_EVENT_TYPES>(
|
|
34
|
+
eventType: T,
|
|
35
|
+
eventAction: ANALYTICS_EVENT_ACTIONS = 'unknown',
|
|
36
|
+
eventLabel: GetLabelForEvent<T>,
|
|
37
|
+
visualizationType?: COVE_VISUALIZATION_TYPES,
|
|
38
|
+
additionalDetails?: Object
|
|
39
|
+
) => {
|
|
40
|
+
// Added check if we ever need to disable analytics
|
|
41
|
+
const ANALYTICS_POWERED_ON = true
|
|
42
|
+
if (!ANALYTICS_POWERED_ON) return
|
|
43
|
+
|
|
44
|
+
return publish('cove:analytics', {
|
|
45
|
+
eventType,
|
|
46
|
+
eventAction,
|
|
47
|
+
eventLabel,
|
|
48
|
+
component: visualizationType || 'unknown',
|
|
49
|
+
version: getPackageVersion() || 'unknown',
|
|
50
|
+
...(additionalDetails || {})
|
|
51
|
+
})
|
|
52
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type COVE_VISUALIZATION_TYPES =
|
|
2
|
+
| 'map'
|
|
3
|
+
| 'chart'
|
|
4
|
+
| 'data-table'
|
|
5
|
+
| 'markup-include'
|
|
6
|
+
| 'waffle-chart'
|
|
7
|
+
| 'dashboard'
|
|
8
|
+
| 'filtered-text'
|
|
9
|
+
| 'table-filter'
|
|
10
|
+
| 'data-bite'
|
|
11
|
+
| 'unknown'
|
|
12
|
+
|
|
13
|
+
export type ANALYTICS_EVENT_ACTIONS =
|
|
14
|
+
| 'click'
|
|
15
|
+
| 'drag'
|
|
16
|
+
| 'toggle'
|
|
17
|
+
| 'none'
|
|
18
|
+
| 'keydown'
|
|
19
|
+
| 'load'
|
|
20
|
+
| 'submit'
|
|
21
|
+
| 'change'
|
|
22
|
+
| 'unknown'
|
|
23
|
+
|
|
24
|
+
export type LEGEND_TOGGLE_MODES = 'highlight' | 'isolate'
|
|
25
|
+
|
|
26
|
+
export type ANALYTICS_EVENT_TYPES =
|
|
27
|
+
| 'data_downloaded'
|
|
28
|
+
| 'data_table_toggled' // expand/collapse
|
|
29
|
+
| 'data_viewed'
|
|
30
|
+
| `${COVE_VISUALIZATION_TYPES}_filter_reset`
|
|
31
|
+
| `${COVE_VISUALIZATION_TYPES}_filter_applied`
|
|
32
|
+
| `${COVE_VISUALIZATION_TYPES}_filter_changed`
|
|
33
|
+
| `${COVE_VISUALIZATION_TYPES}_image_downloaded`
|
|
34
|
+
| `${COVE_VISUALIZATION_TYPES}_legend_item_toggled--${LEGEND_TOGGLE_MODES}-mode`
|
|
35
|
+
| `${COVE_VISUALIZATION_TYPES}_legend_reset`
|
|
36
|
+
| `${COVE_VISUALIZATION_TYPES}_loaded`
|
|
37
|
+
| `${COVE_VISUALIZATION_TYPES}_navigation_menu`
|
|
38
|
+
| `${COVE_VISUALIZATION_TYPES}_panned`
|
|
39
|
+
| `${COVE_VISUALIZATION_TYPES}_reset_zoom_level`
|
|
40
|
+
| `${COVE_VISUALIZATION_TYPES}_zoomed_in`
|
|
41
|
+
| `${COVE_VISUALIZATION_TYPES}_zoomed_out`
|
|
42
|
+
| `data_table_sort_by|${string}|${'asc' | 'desc' | 'undefined'}`
|
|
43
|
+
| 'link_to_data_table_click'
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import _ from 'lodash'
|
|
2
|
+
|
|
3
|
+
export const updateAxisColors = config => {
|
|
4
|
+
if (config.type === 'chart') {
|
|
5
|
+
if (config.xAxis) {
|
|
6
|
+
;['labelColor', 'tickLabelColor', 'tickColor'].forEach(k => {
|
|
7
|
+
if (config.xAxis[k] === '#333') {
|
|
8
|
+
config.xAxis[k] = '#1c1d1f'
|
|
9
|
+
}
|
|
10
|
+
})
|
|
11
|
+
}
|
|
12
|
+
if (config.yAxis) {
|
|
13
|
+
;[
|
|
14
|
+
'labelColor',
|
|
15
|
+
'tickLabelColor',
|
|
16
|
+
'tickColor',
|
|
17
|
+
'rightAxisLabelColor',
|
|
18
|
+
'rightAxisTickLabelColor',
|
|
19
|
+
'rightAxisTickColor'
|
|
20
|
+
].forEach(k => {
|
|
21
|
+
if (config.yAxis[k] === '#333') {
|
|
22
|
+
config.yAxis[k] = '#1c1d1f'
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
} else if (config.type === 'dashboard') {
|
|
27
|
+
Object.values(config.visualizations).forEach(visualization => {
|
|
28
|
+
updateAxisColors(visualization)
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const updateStatePickedToStatesPicked = config => {
|
|
34
|
+
if (config.type === 'map') {
|
|
35
|
+
if (config.general?.statePicked) {
|
|
36
|
+
config.general.statesPicked = [{ ...config.general.statePicked }]
|
|
37
|
+
delete config.general.statePicked
|
|
38
|
+
}
|
|
39
|
+
// Also migrate the property name for filter controls
|
|
40
|
+
if (config.general?.filterControlsStatePicked) {
|
|
41
|
+
config.general.filterControlsStatesPicked = config.general.filterControlsStatePicked
|
|
42
|
+
delete config.general.filterControlsStatePicked
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (config.type === 'dashboard') {
|
|
46
|
+
Object.values(config.visualizations).forEach(visualization => {
|
|
47
|
+
updateStatePickedToStatesPicked(visualization)
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const update_4_25_8 = config => {
|
|
53
|
+
const ver = '4.25.8'
|
|
54
|
+
const newConfig = _.cloneDeep(config)
|
|
55
|
+
updateAxisColors(newConfig)
|
|
56
|
+
updateStatePickedToStatesPicked(newConfig)
|
|
57
|
+
newConfig.version = ver
|
|
58
|
+
return newConfig
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export default update_4_25_8
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { updateStatePickedToStatesPicked } from '../4.25.8'
|
|
2
|
+
import { coveUpdateWorker } from '../../coveUpdateWorker'
|
|
3
|
+
import { expect, describe, it } from 'vitest'
|
|
4
|
+
|
|
5
|
+
describe('4.25.8 update worker', () => {
|
|
6
|
+
describe('updateStatePickedToStatesPicked', () => {
|
|
7
|
+
it('converts statePicked to statesPicked for map config', () => {
|
|
8
|
+
const mockConfig = {
|
|
9
|
+
type: 'map',
|
|
10
|
+
general: {
|
|
11
|
+
statePicked: { fipsCode: '12', stateName: 'Florida' }
|
|
12
|
+
}
|
|
13
|
+
} as any
|
|
14
|
+
|
|
15
|
+
updateStatePickedToStatesPicked(mockConfig)
|
|
16
|
+
|
|
17
|
+
expect(mockConfig.general.statePicked).toBeUndefined()
|
|
18
|
+
expect(mockConfig.general.statesPicked).toEqual([{ fipsCode: '12', stateName: 'Florida' }])
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
it('converts filterControlsStatePicked to filterControlsStatesPicked for map config', () => {
|
|
22
|
+
const mockConfig = {
|
|
23
|
+
type: 'map',
|
|
24
|
+
general: {
|
|
25
|
+
filterControlsStatePicked: 'State',
|
|
26
|
+
statePicked: { fipsCode: '12', stateName: 'Florida' }
|
|
27
|
+
}
|
|
28
|
+
} as any
|
|
29
|
+
|
|
30
|
+
updateStatePickedToStatesPicked(mockConfig)
|
|
31
|
+
|
|
32
|
+
expect(mockConfig.general.filterControlsStatePicked).toBeUndefined()
|
|
33
|
+
expect(mockConfig.general.filterControlsStatesPicked).toBe('State')
|
|
34
|
+
expect(mockConfig.general.statesPicked).toEqual([{ fipsCode: '12', stateName: 'Florida' }])
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
it('handles dashboard with map visualizations', () => {
|
|
38
|
+
const mockConfig = {
|
|
39
|
+
type: 'dashboard',
|
|
40
|
+
visualizations: {
|
|
41
|
+
map1: {
|
|
42
|
+
type: 'map',
|
|
43
|
+
general: {
|
|
44
|
+
filterControlsStatePicked: 'State',
|
|
45
|
+
statePicked: { fipsCode: '01', stateName: 'Alabama' }
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
} as any
|
|
50
|
+
|
|
51
|
+
updateStatePickedToStatesPicked(mockConfig)
|
|
52
|
+
|
|
53
|
+
const mapViz = mockConfig.visualizations.map1.general
|
|
54
|
+
expect(mapViz.filterControlsStatePicked).toBeUndefined()
|
|
55
|
+
expect(mapViz.filterControlsStatesPicked).toBe('State')
|
|
56
|
+
expect(mapViz.statePicked).toBeUndefined()
|
|
57
|
+
expect(mapViz.statesPicked).toEqual([{ fipsCode: '01', stateName: 'Alabama' }])
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
it('works with full update worker integration', () => {
|
|
61
|
+
const mockConfig = {
|
|
62
|
+
type: 'dashboard',
|
|
63
|
+
version: '4.24.9',
|
|
64
|
+
rows: [], // Add missing rows property
|
|
65
|
+
visualizations: {
|
|
66
|
+
map1: {
|
|
67
|
+
type: 'map',
|
|
68
|
+
general: {
|
|
69
|
+
filterControlsStatePicked: 'State',
|
|
70
|
+
statePicked: { fipsCode: '12', stateName: 'Florida' }
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
} as any
|
|
75
|
+
|
|
76
|
+
const updatedConfig = coveUpdateWorker(mockConfig)
|
|
77
|
+
|
|
78
|
+
expect(updatedConfig.version).toBe('4.25.8')
|
|
79
|
+
const mapViz = updatedConfig.visualizations.map1.general
|
|
80
|
+
expect(mapViz.filterControlsStatePicked).toBeUndefined()
|
|
81
|
+
expect(mapViz.filterControlsStatesPicked).toBe('State')
|
|
82
|
+
expect(mapViz.statePicked).toBeUndefined()
|
|
83
|
+
expect(mapViz.statesPicked).toEqual([{ fipsCode: '12', stateName: 'Florida' }])
|
|
84
|
+
})
|
|
85
|
+
})
|
|
86
|
+
})
|
package/helpers/viewports.ts
CHANGED
|
@@ -12,3 +12,5 @@ export const isMobileHeightViewport = currentViewport => isBelowBreakpoint('sm',
|
|
|
12
12
|
export const isMobileStateLabelViewport = currentViewport => isBelowBreakpoint('md', currentViewport)
|
|
13
13
|
|
|
14
14
|
export const isMobileTerritoryViewport = currentViewport => isBelowBreakpoint('sm', currentViewport)
|
|
15
|
+
|
|
16
|
+
export const isMobileFontViewport = currentViewport => isBelowBreakpoint('sm', currentViewport)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdc/core",
|
|
3
|
-
"version": "4.25.
|
|
3
|
+
"version": "4.25.8",
|
|
4
4
|
"description": "Core components, styles, hooks, and helpers, for the CDC Open Visualization project",
|
|
5
5
|
"moduleName": "CdcCore",
|
|
6
6
|
"main": "dist/cdccore",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"react": "^18.2.0",
|
|
38
38
|
"react-dom": "^18.2.0"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "e369994230b5e3facff224e1d89d5937528ac5a0",
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"sass": "^1.79.4"
|
|
43
43
|
}
|
package/types/Series.ts
CHANGED
package/types/Table.ts
CHANGED
|
@@ -23,6 +23,7 @@ export type Table = {
|
|
|
23
23
|
pivot?: Pivot
|
|
24
24
|
show?: boolean
|
|
25
25
|
sharedFilterColumns?: string[] // added at runtime by Dashboard
|
|
26
|
+
showBottomCollapse?: boolean // if true, the table will have a button to collapse at bottom of the expanded table
|
|
26
27
|
showDataTableLink?: boolean
|
|
27
28
|
showDownloadImgButton?: boolean
|
|
28
29
|
showDownloadLinkBelow?: boolean
|
package/helpers/events.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
function subscribe(eventName, listener) {
|
|
2
|
-
document.addEventListener(eventName, listener)
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
function unsubscribe(eventName, listener) {
|
|
6
|
-
document.removeEventListener(eventName, listener)
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function publish(eventName, data) {
|
|
10
|
-
const event = new CustomEvent(eventName, { detail: data })
|
|
11
|
-
document.dispatchEvent(event)
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export { publish, subscribe, unsubscribe }
|