@cdc/chart 4.22.11 → 4.23.1
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/dist/495.js +3 -0
- package/dist/703.js +1 -0
- package/dist/cdcchart.js +723 -6
- package/examples/box-plot-data.json +71 -0
- package/examples/box-plot.csv +5 -0
- package/examples/{private/yaxis-test.json → box-plot.json} +47 -56
- package/examples/gallery/bar-chart-vertical/combo-line-chart.json +3 -1
- package/examples/gallery/bar-chart-vertical/vertical-bar-chart.json +85 -16
- package/examples/new-data.csv +17 -0
- package/examples/newdata.json +90 -0
- package/package.json +3 -2
- package/src/CdcChart.tsx +150 -94
- package/src/components/BarChart.tsx +156 -226
- package/src/components/BoxPlot.js +92 -0
- package/src/components/DataTable.tsx +28 -12
- package/src/components/EditorPanel.js +151 -104
- package/src/components/Filters.js +131 -0
- package/src/components/Legend.js +8 -1
- package/src/components/LineChart.tsx +64 -13
- package/src/components/LinearChart.tsx +120 -81
- package/src/components/PairedBarChart.tsx +1 -1
- package/src/components/PieChart.tsx +12 -2
- package/src/components/useIntersectionObserver.tsx +9 -7
- package/src/data/initial-state.js +14 -8
- package/src/hooks/useReduceData.ts +8 -5
- package/src/index.html +51 -51
- package/src/scss/DataTable.scss +1 -1
- package/src/scss/main.scss +53 -22
- package/examples/private/filters.json +0 -170
- package/examples/private/line-test-data.json +0 -22
- package/examples/private/line-test-two.json +0 -210
- package/examples/private/line-test.json +0 -102
- package/examples/private/new.json +0 -48800
- package/examples/private/newtest.csv +0 -101
- package/examples/private/shawn.json +0 -1106
- package/examples/private/test.json +0 -10124
- package/examples/private/yaxis-testing.csv +0 -27
- package/examples/private/yaxis.json +0 -28
|
@@ -31,6 +31,16 @@ export default function PieChart() {
|
|
|
31
31
|
freezeOnceVisible: false
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
+
// Make sure the chart is visible if in the editor
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
const element = document.querySelector('.isEditor')
|
|
37
|
+
if (element) {
|
|
38
|
+
// parent element is visible
|
|
39
|
+
console.log('setAnimation')
|
|
40
|
+
setAnimatePie(prevState => true)
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
|
|
34
44
|
useEffect(() => {
|
|
35
45
|
if (dataRef?.isIntersecting && config.animate && !animatedPie) {
|
|
36
46
|
setTimeout(() => {
|
|
@@ -117,7 +127,7 @@ export default function PieChart() {
|
|
|
117
127
|
width = width * 0.73
|
|
118
128
|
}
|
|
119
129
|
|
|
120
|
-
const height = config.
|
|
130
|
+
const height = config.heights.vertical
|
|
121
131
|
|
|
122
132
|
const radius = Math.min(width, height) / 2
|
|
123
133
|
const centerY = height / 2
|
|
@@ -146,7 +156,7 @@ export default function PieChart() {
|
|
|
146
156
|
|
|
147
157
|
return (
|
|
148
158
|
<ErrorBoundary component='PieChart'>
|
|
149
|
-
<svg width={width} height={height} className={`group ${animatedPie ? 'animated' : ''}`} role='img' aria-label={handleChartAriaLabels(config)}>
|
|
159
|
+
<svg width={width} height={height} className={`animated-pie group ${config.animate === false || animatedPie ? 'animated' : ''}`} role='img' aria-label={handleChartAriaLabels(config)}>
|
|
150
160
|
<Group top={centerY} left={centerX}>
|
|
151
161
|
<Pie data={filteredData || data} pieValue={d => d[config.runtime.yAxis.dataKey]} pieSortValues={() => -1} innerRadius={radius - donutThickness} outerRadius={radius}>
|
|
152
162
|
{pie => <AnimatedPie<any> {...pie} getKey={d => d.data[config.runtime.xAxis.dataKey]} />}
|
|
@@ -10,17 +10,19 @@ export default function useIntersectionObserver(elementRef, { threshold = 0, roo
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
useEffect(() => {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
setTimeout(() => {
|
|
14
|
+
const node = elementRef?.current
|
|
15
|
+
const hasIOSupport = !!window.IntersectionObserver
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
if (!hasIOSupport || frozen || !node) return
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
const observerParams = { threshold, root, rootMargin }
|
|
20
|
+
const observer = new IntersectionObserver(updateEntry, observerParams)
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
observer.observe(node)
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
return () => observer.disconnect()
|
|
25
|
+
}, 500);
|
|
24
26
|
}, [elementRef, threshold, root, rootMargin, frozen])
|
|
25
27
|
|
|
26
28
|
return entry
|
|
@@ -31,20 +31,25 @@ export default {
|
|
|
31
31
|
tickColor: '#333',
|
|
32
32
|
rightHideAxis: true,
|
|
33
33
|
rightAxisSize: 50,
|
|
34
|
+
rightLabel: '',
|
|
34
35
|
rightLabelOffsetSize: 0,
|
|
35
36
|
rightAxisLabelColor: '#333',
|
|
36
37
|
rightAxisTickLabelColor: '#333',
|
|
37
38
|
rightAxisTickColor: '#333',
|
|
38
|
-
|
|
39
|
-
numTicks:''
|
|
40
|
-
|
|
39
|
+
numTicks: ''
|
|
41
40
|
},
|
|
41
|
+
boxplot: [],
|
|
42
42
|
topAxis: {
|
|
43
43
|
hasLine: false
|
|
44
44
|
},
|
|
45
|
+
isLegendValue: false,
|
|
45
46
|
barThickness: 0.35,
|
|
46
47
|
barHeight: 25,
|
|
47
|
-
|
|
48
|
+
barSpace: 15,
|
|
49
|
+
heights: {
|
|
50
|
+
vertical: 300,
|
|
51
|
+
horizontal: 750
|
|
52
|
+
},
|
|
48
53
|
xAxis: {
|
|
49
54
|
type: 'categorical',
|
|
50
55
|
hideAxis: false,
|
|
@@ -57,15 +62,16 @@ export default {
|
|
|
57
62
|
labelColor: '#333',
|
|
58
63
|
tickLabelColor: '#333',
|
|
59
64
|
tickColor: '#333',
|
|
60
|
-
|
|
61
|
-
|
|
65
|
+
numTicks: '',
|
|
66
|
+
labelOffset: 65
|
|
62
67
|
},
|
|
63
68
|
table: {
|
|
64
69
|
label: 'Data Table',
|
|
65
70
|
expanded: true,
|
|
66
71
|
limitHeight: false,
|
|
67
72
|
height: '',
|
|
68
|
-
caption: ''
|
|
73
|
+
caption: '',
|
|
74
|
+
showDownloadUrl: false
|
|
69
75
|
},
|
|
70
76
|
orientation: 'vertical',
|
|
71
77
|
legend: {
|
|
@@ -88,7 +94,7 @@ export default {
|
|
|
88
94
|
palette: 'qualitative-bold',
|
|
89
95
|
isPaletteReversed: false,
|
|
90
96
|
labels: false,
|
|
91
|
-
dataFormat: { commas: false, prefix: '', suffix: '' },
|
|
97
|
+
dataFormat: { commas: false, prefix: '', suffix: '', abbreviated: false },
|
|
92
98
|
confidenceKeys: {},
|
|
93
99
|
visual: {
|
|
94
100
|
border: true,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
function useReduceData(config, data) {
|
|
2
|
-
// for combo charts check all Data Series
|
|
2
|
+
// for combo charts check if all Data Series selected to Bar;
|
|
3
3
|
const isBar = config?.series?.every(element => element?.type === 'Bar')
|
|
4
|
+
// for combo charts check if all Data series selected Line or dashed-md/sm/lg.
|
|
5
|
+
const isAllLine = config?.series?.every(el => el.type === 'Line' || el.type=== 'dashed-sm'|| el.type=== 'dashed-md' || el.type=== 'dashed-lg');
|
|
4
6
|
|
|
5
7
|
const getMaxValueFromData = () => {
|
|
6
8
|
let max // will hold max number from data.
|
|
@@ -66,10 +68,11 @@ function useReduceData(config, data) {
|
|
|
66
68
|
return existPositiveValue
|
|
67
69
|
}
|
|
68
70
|
|
|
69
|
-
const maxValue = getMaxValueFromData()
|
|
70
|
-
const minValue = getMinValueFromData()
|
|
71
|
-
const existPositiveValue = findPositiveNum()
|
|
72
|
-
|
|
71
|
+
const maxValue = Number(getMaxValueFromData());
|
|
72
|
+
const minValue = Number(getMinValueFromData());
|
|
73
|
+
const existPositiveValue = findPositiveNum();
|
|
74
|
+
|
|
75
|
+
return {minValue, maxValue, existPositiveValue ,isAllLine}
|
|
73
76
|
}
|
|
74
77
|
|
|
75
78
|
export default useReduceData
|
package/src/index.html
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
|
6
|
+
<style>
|
|
7
|
+
body {
|
|
8
|
+
/* max-width: 1000px; */
|
|
9
|
+
margin: 0 auto !important;
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
justify-content: center;
|
|
13
|
+
}
|
|
3
14
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
/* max-width: 1000px; */
|
|
10
|
-
margin: 0 auto !important;
|
|
11
|
-
display: flex;
|
|
12
|
-
flex-direction: column;
|
|
13
|
-
justify-content: center;
|
|
14
|
-
}
|
|
15
|
+
.react-container + .react-container {
|
|
16
|
+
margin-top: 3rem;
|
|
17
|
+
}
|
|
18
|
+
</style>
|
|
19
|
+
</head>
|
|
15
20
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
</style>
|
|
20
|
-
</head>
|
|
21
|
+
<body>
|
|
22
|
+
<!-- <div class="react-container" data-config="/examples/temp-example-config.json"></div> -->
|
|
21
23
|
|
|
22
|
-
<
|
|
23
|
-
<!-- <div class="react-container" data-config="/examples/temp-example-config.json"></div> -->
|
|
24
|
-
|
|
25
|
-
<!-- <select id="cove_select">
|
|
24
|
+
<!-- <select id="cove_select">
|
|
26
25
|
<option value=""">Choose An Option</option>
|
|
27
26
|
<option value="Non-Hispanic White">Non-Hispanic White</option>
|
|
28
27
|
<option value="Hispanic or Latino">Test 2</option>
|
|
29
28
|
</select> -->
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<!-- HORIZONTAL BAR CHARTS -->
|
|
47
|
-
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-horizontal/horizontal-bar-chart-with-numbers-on-bar.json"></div> -->
|
|
48
|
-
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-horizontal/horizontal-bar-chart.json"></div> -->
|
|
49
|
-
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-horizontal/horizontal-stacked.json"></div> -->
|
|
30
|
+
<!-- <div class="react-container" data-config="/examples/private/filters.json"></div> -->
|
|
31
|
+
<!-- <div class="react-container" data-config="/examples/private/yaxis-test.json"></div> -->
|
|
32
|
+
<!-- <div class="react-container" data-config="/examples/dynamic-legends.json"></div> -->
|
|
33
|
+
<!-- <div class="react-container" data-config="/examples/cutoff-example-config.json"></div> -->
|
|
34
|
+
<!-- <div class="react-container" data-config="/examples/covid-confidence-example-config.json"></div> -->
|
|
35
|
+
<!-- <div class="react-container" data-config="/examples/planet-example-config.json"></div> -->
|
|
36
|
+
<!-- <div class="react-container" data-config="/examples/planet-chart-horizontal-example-config.json"></div> -->
|
|
37
|
+
<!-- <div class="react-container" data-config="/examples/planet-combo-example-config.json"></div>-->
|
|
38
|
+
<!-- <div class="react-container" data-config="/examples/planet-pie-example-config.json"></div>-->
|
|
39
|
+
<!-- <div class="react-container" data-config="/examples/date-exclusions-config.json"></div> -->
|
|
40
|
+
<!--<div class="react-container" data-config="/examples/case-rate-example-config.json"></div>-->
|
|
41
|
+
<!-- <div class="react-container" data-config="/examples/private/textelements.json"></div> -->
|
|
42
|
+
<!-- <div class="react-container" data-config="/examples/private/example-bar-chart.json"></div> -->
|
|
43
|
+
<!-- <div class="react-container" data-config="/examples/example-sparkline.json"></div> -->
|
|
44
|
+
<!-- DATA PRESENTATION GALLERY: https://www.cdc.gov/wcms/4.0/cdc-wp/data-presentation/bar-chart.html#examples -->
|
|
50
45
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-vertical/vertical-bar-with-confidence.json"></div> -->
|
|
56
|
-
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-vertical/vertical-bar-chart.json"></div> -->
|
|
46
|
+
<!-- HORIZONTAL BAR CHARTS -->
|
|
47
|
+
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-horizontal/horizontal-bar-chart-with-numbers-on-bar.json"></div> -->
|
|
48
|
+
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-horizontal/horizontal-bar-chart.json"></div> -->
|
|
49
|
+
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-horizontal/horizontal-stacked.json"></div> -->
|
|
57
50
|
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
<!-- VERTICAL BAR CHARTS -->
|
|
52
|
+
<div class="react-container" data-config="/examples/gallery/bar-chart-vertical/combo-line-chart.json"></div>
|
|
53
|
+
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-vertical/vertical-bar-chart-categorical.json"></div> -->
|
|
54
|
+
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-vertical/vertical-bar-chart-stacked.json"></div> -->
|
|
55
|
+
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-vertical/vertical-bar-with-confidence.json"></div> -->
|
|
56
|
+
<!-- <div class="react-container" data-config="/examples/gallery/bar-chart-vertical/vertical-bar-chart.json"></div> -->
|
|
57
|
+
<!-- <div class="react-container" data-config="/examples/box-plot.json"></div> -->
|
|
60
58
|
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
<!-- LOLLIPOP CHARTS -->
|
|
60
|
+
<!-- <div class="react-container" data-config="/examples/gallery/lollipop/lollipop-style-horizontal.json"></div> -->
|
|
63
61
|
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
<!-- PAIRED BAR CHARTS -->
|
|
63
|
+
<!-- <div class="react-container" data-config="/examples/gallery/paired-bar/paired-bar-chart.json"></div> -->
|
|
66
64
|
|
|
65
|
+
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
66
|
+
</body>
|
|
67
67
|
</html>
|
package/src/scss/DataTable.scss
CHANGED
package/src/scss/main.scss
CHANGED
|
@@ -120,30 +120,30 @@
|
|
|
120
120
|
order: 1;
|
|
121
121
|
position: relative;
|
|
122
122
|
|
|
123
|
-
&__inner{
|
|
124
|
-
&.bottom{
|
|
123
|
+
&__inner {
|
|
124
|
+
&.bottom {
|
|
125
125
|
display: grid;
|
|
126
126
|
grid-template-columns: auto auto;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
&.single-row{
|
|
129
|
+
&.single-row {
|
|
130
130
|
display: flex;
|
|
131
131
|
flex-direction: row;
|
|
132
132
|
flex-wrap: wrap;
|
|
133
133
|
justify-content: flex-start;
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
padding:0 1.2em 1em 0;
|
|
134
|
+
|
|
135
|
+
& > div {
|
|
136
|
+
padding: 0 1.2em 1em 0;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
& div>span {
|
|
140
|
-
|
|
139
|
+
& div > span {
|
|
140
|
+
margin-right: 0 !important;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
& >div.legend-item{
|
|
143
|
+
& > div.legend-item {
|
|
144
144
|
margin: 0 !important;
|
|
145
145
|
}
|
|
146
|
-
|
|
146
|
+
}
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
.legend-reset {
|
|
@@ -186,14 +186,15 @@
|
|
|
186
186
|
font-size: 1.3em;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
h2,
|
|
189
|
+
h2,
|
|
190
|
+
p {
|
|
190
191
|
margin-bottom: 0.8em;
|
|
191
192
|
}
|
|
192
|
-
& div.legend-item{
|
|
193
|
+
& div.legend-item {
|
|
193
194
|
margin-bottom: 0.5em !important;
|
|
194
195
|
|
|
195
|
-
&:last-child{
|
|
196
|
-
|
|
196
|
+
&:last-child {
|
|
197
|
+
margin: 0 !important;
|
|
197
198
|
}
|
|
198
199
|
}
|
|
199
200
|
|
|
@@ -249,9 +250,8 @@
|
|
|
249
250
|
display: flex;
|
|
250
251
|
align-items: flex-start;
|
|
251
252
|
flex-wrap: wrap;
|
|
252
|
-
margin-bottom: 1em;
|
|
253
253
|
|
|
254
|
-
&.bottom{
|
|
254
|
+
&.bottom {
|
|
255
255
|
flex-wrap: nowrap;
|
|
256
256
|
flex-direction: column;
|
|
257
257
|
}
|
|
@@ -323,6 +323,28 @@
|
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
.filters-section {
|
|
326
|
+
margin-left: 1rem;
|
|
327
|
+
margin-right: 1rem;
|
|
328
|
+
|
|
329
|
+
&__title {
|
|
330
|
+
margin: 15px 0;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
&__wrapper {
|
|
334
|
+
margin-bottom: 40px;
|
|
335
|
+
|
|
336
|
+
hr {
|
|
337
|
+
margin-bottom: 20px;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
label {
|
|
341
|
+
display: inherit;
|
|
342
|
+
margin-bottom: 5px;
|
|
343
|
+
font-weight: 600;
|
|
344
|
+
font-size: 16px;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
326
348
|
@include breakpoint(md) {
|
|
327
349
|
display: flex;
|
|
328
350
|
gap: 30px;
|
|
@@ -334,6 +356,7 @@
|
|
|
334
356
|
|
|
335
357
|
select {
|
|
336
358
|
font-size: 1em;
|
|
359
|
+
padding-right: 5px;
|
|
337
360
|
}
|
|
338
361
|
|
|
339
362
|
.single-filter {
|
|
@@ -377,6 +400,10 @@
|
|
|
377
400
|
.chart-container {
|
|
378
401
|
flex-wrap: nowrap;
|
|
379
402
|
|
|
403
|
+
.no-wrap {
|
|
404
|
+
flex-wrap: nowrap;
|
|
405
|
+
}
|
|
406
|
+
|
|
380
407
|
.legend-container {
|
|
381
408
|
width: 25%;
|
|
382
409
|
margin-left: 1em;
|
|
@@ -387,7 +414,7 @@
|
|
|
387
414
|
margin-right: 1em;
|
|
388
415
|
order: 0;
|
|
389
416
|
}
|
|
390
|
-
&.bottom{
|
|
417
|
+
&.bottom {
|
|
391
418
|
width: 100%;
|
|
392
419
|
margin-left: 0;
|
|
393
420
|
}
|
|
@@ -422,8 +449,6 @@
|
|
|
422
449
|
}
|
|
423
450
|
}
|
|
424
451
|
|
|
425
|
-
|
|
426
|
-
|
|
427
452
|
@include breakpointClass(lg) {
|
|
428
453
|
&.font-small {
|
|
429
454
|
font-size: 1em;
|
|
@@ -457,6 +482,7 @@
|
|
|
457
482
|
// ANIMATIONS
|
|
458
483
|
// Pie Chart Animations
|
|
459
484
|
.animated-pie {
|
|
485
|
+
margin: auto !important;
|
|
460
486
|
transition: all 0.4s ease-in-out;
|
|
461
487
|
opacity: 0;
|
|
462
488
|
transform-origin: center;
|
|
@@ -494,19 +520,20 @@
|
|
|
494
520
|
.linear,
|
|
495
521
|
.Line,
|
|
496
522
|
.Combo {
|
|
497
|
-
&.animated path {
|
|
523
|
+
&.animated path.animation {
|
|
498
524
|
opacity: 0;
|
|
499
525
|
}
|
|
500
526
|
&.animate {
|
|
501
|
-
path {
|
|
527
|
+
path.animation {
|
|
502
528
|
opacity: 1;
|
|
503
529
|
stroke-dasharray: 2000;
|
|
504
|
-
stroke-dashoffset:
|
|
530
|
+
stroke-dashoffset: 4000;
|
|
505
531
|
animation: dash 2s ease-in-out forwards;
|
|
506
532
|
}
|
|
507
533
|
@keyframes dash {
|
|
508
534
|
to {
|
|
509
535
|
stroke-dashoffset: 0;
|
|
536
|
+
opacity: 0;
|
|
510
537
|
}
|
|
511
538
|
}
|
|
512
539
|
}
|
|
@@ -545,6 +572,10 @@
|
|
|
545
572
|
.group-2 {
|
|
546
573
|
transform-origin: center;
|
|
547
574
|
}
|
|
575
|
+
|
|
576
|
+
.visx-linepath .animation {
|
|
577
|
+
opacity: 0;
|
|
578
|
+
}
|
|
548
579
|
}
|
|
549
580
|
}
|
|
550
581
|
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"type": "chart",
|
|
3
|
-
"title": "Combo Chart (With Right Axis)",
|
|
4
|
-
"theme": "theme-blue",
|
|
5
|
-
"animate": false,
|
|
6
|
-
"fontSize": "medium",
|
|
7
|
-
"lineDatapointStyle": "hover",
|
|
8
|
-
"barHasBorder": "false",
|
|
9
|
-
"isLollipopChart": false,
|
|
10
|
-
"lollipopShape": "circle",
|
|
11
|
-
"lollipopColorStyle": "two-tone",
|
|
12
|
-
"visualizationSubType": "regular",
|
|
13
|
-
"barStyle": "",
|
|
14
|
-
"roundingStyle": "standard",
|
|
15
|
-
"tipRounding": "top",
|
|
16
|
-
"padding": {
|
|
17
|
-
"left": 5,
|
|
18
|
-
"right": 5
|
|
19
|
-
},
|
|
20
|
-
"yAxis": {
|
|
21
|
-
"hideAxis": false,
|
|
22
|
-
"displayNumbersOnBar": false,
|
|
23
|
-
"hideLabel": false,
|
|
24
|
-
"hideTicks": false,
|
|
25
|
-
"size": 50,
|
|
26
|
-
"gridLines": false,
|
|
27
|
-
"min": "",
|
|
28
|
-
"max": "",
|
|
29
|
-
"labelColor": "orange",
|
|
30
|
-
"tickLabelColor": "orange",
|
|
31
|
-
"tickColor": "orange",
|
|
32
|
-
"rightHideAxis": true,
|
|
33
|
-
"rightAxisSize": "88",
|
|
34
|
-
"rightLabelOffsetSize": "80",
|
|
35
|
-
"rightAxisLabelColor": "purple",
|
|
36
|
-
"rightAxisTickLabelColor": "purple",
|
|
37
|
-
"rightAxisTickColor": "purple",
|
|
38
|
-
"isLegendValue": false,
|
|
39
|
-
"numTicks": "",
|
|
40
|
-
"label": "Left Axis (Value)",
|
|
41
|
-
"rightSeries": "tot_tests_18_older",
|
|
42
|
-
"rightLabel": "",
|
|
43
|
-
"rightHideLabel": false,
|
|
44
|
-
"rightHideTicks": false,
|
|
45
|
-
"rightNumTicks": "6"
|
|
46
|
-
},
|
|
47
|
-
"topAxis": {
|
|
48
|
-
"hasLine": false
|
|
49
|
-
},
|
|
50
|
-
"barThickness": 0.35,
|
|
51
|
-
"barHeight": 25,
|
|
52
|
-
"height": 300,
|
|
53
|
-
"xAxis": {
|
|
54
|
-
"type": "date",
|
|
55
|
-
"hideAxis": false,
|
|
56
|
-
"hideLabel": false,
|
|
57
|
-
"hideTicks": false,
|
|
58
|
-
"size": "100",
|
|
59
|
-
"tickRotation": 30,
|
|
60
|
-
"min": "",
|
|
61
|
-
"max": "",
|
|
62
|
-
"labelColor": "blue",
|
|
63
|
-
"tickLabelColor": "blue",
|
|
64
|
-
"tickColor": "blue",
|
|
65
|
-
"isLegendValue": false,
|
|
66
|
-
"numTicks": "",
|
|
67
|
-
"label": "Date/Category Axis",
|
|
68
|
-
"dataKey": "week",
|
|
69
|
-
"dateParseFormat": "%m/%d/%Y",
|
|
70
|
-
"dateDisplayFormat": "%m/%d/%Y"
|
|
71
|
-
},
|
|
72
|
-
"table": {
|
|
73
|
-
"label": "Data Table",
|
|
74
|
-
"expanded": false,
|
|
75
|
-
"limitHeight": false,
|
|
76
|
-
"height": "",
|
|
77
|
-
"caption": "",
|
|
78
|
-
"show": true
|
|
79
|
-
},
|
|
80
|
-
"orientation": "vertical",
|
|
81
|
-
"legend": {
|
|
82
|
-
"behavior": "isolate",
|
|
83
|
-
"position": "bottom",
|
|
84
|
-
"singleRow": false,
|
|
85
|
-
"colorCode": "",
|
|
86
|
-
"reverseLabelOrder": false,
|
|
87
|
-
"description": "",
|
|
88
|
-
"dynamicLegend": false,
|
|
89
|
-
"dynamicLegendDefaultText": "Show All",
|
|
90
|
-
"dynamicLegendItemLimit": 5,
|
|
91
|
-
"dynamicLegendItemLimitMessage": "Dynamic Legend Item Limit Hit.",
|
|
92
|
-
"dynamicLegendChartMessage": "Select Options from the Legend",
|
|
93
|
-
"hide": false
|
|
94
|
-
},
|
|
95
|
-
"exclusions": {
|
|
96
|
-
"active": false,
|
|
97
|
-
"keys": []
|
|
98
|
-
},
|
|
99
|
-
"palette": "qualitative-bold",
|
|
100
|
-
"isPaletteReversed": false,
|
|
101
|
-
"labels": false,
|
|
102
|
-
"dataFormat": {
|
|
103
|
-
"commas": false,
|
|
104
|
-
"prefix": "",
|
|
105
|
-
"suffix": "",
|
|
106
|
-
"roundTo": "0"
|
|
107
|
-
},
|
|
108
|
-
"confidenceKeys": {},
|
|
109
|
-
"visual": {
|
|
110
|
-
"border": true,
|
|
111
|
-
"accent": true,
|
|
112
|
-
"background": true
|
|
113
|
-
},
|
|
114
|
-
"dataUrl": "/examples/private/yaxis.json",
|
|
115
|
-
"visualizationType": "Combo",
|
|
116
|
-
"series": [
|
|
117
|
-
{
|
|
118
|
-
"dataKey": "tot_tests_0_12",
|
|
119
|
-
"type": "Bar",
|
|
120
|
-
"axis": "Left"
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
"dataKey": "tot_tests_13_17",
|
|
124
|
-
"type": "Bar",
|
|
125
|
-
"axis": "Left"
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
"dataKey": "0_12_positivity_rate",
|
|
129
|
-
"type": "Bar",
|
|
130
|
-
"axis": "Left"
|
|
131
|
-
}
|
|
132
|
-
],
|
|
133
|
-
"dataCutoff": "0.5",
|
|
134
|
-
"filters": [
|
|
135
|
-
{
|
|
136
|
-
"values": [
|
|
137
|
-
"5/21/2022",
|
|
138
|
-
"5/28/2022",
|
|
139
|
-
"6/4/2022",
|
|
140
|
-
"6/11/2022",
|
|
141
|
-
"6/18/2022",
|
|
142
|
-
"6/25/2022",
|
|
143
|
-
"7/2/2022",
|
|
144
|
-
"7/9/2022",
|
|
145
|
-
"7/16/2022",
|
|
146
|
-
"7/23/2022",
|
|
147
|
-
"7/30/2022",
|
|
148
|
-
"8/6/2022",
|
|
149
|
-
"8/13/2022",
|
|
150
|
-
"8/20/2022",
|
|
151
|
-
"8/27/2022",
|
|
152
|
-
"9/3/2022",
|
|
153
|
-
"9/10/2022",
|
|
154
|
-
"9/17/2022",
|
|
155
|
-
"9/24/2022",
|
|
156
|
-
"10/1/2022",
|
|
157
|
-
"10/8/2022",
|
|
158
|
-
"10/15/2022",
|
|
159
|
-
"10/22/2022",
|
|
160
|
-
"10/29/2022",
|
|
161
|
-
"11/5/2022",
|
|
162
|
-
"11/12/2022"
|
|
163
|
-
],
|
|
164
|
-
"active": "5/21/2022",
|
|
165
|
-
"order": "asc",
|
|
166
|
-
"columnName": "week",
|
|
167
|
-
"label": "Week"
|
|
168
|
-
}
|
|
169
|
-
]
|
|
170
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"Number": "11.0",
|
|
4
|
-
"Date": "9/1/2022"
|
|
5
|
-
},
|
|
6
|
-
{
|
|
7
|
-
"Number": "12.2",
|
|
8
|
-
"Date": "9/2/2022"
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"Number": "13.6",
|
|
12
|
-
"Date": "9/4/2022"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"Number": "",
|
|
16
|
-
"Date": "9/5/2022"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"Number": "6.4",
|
|
20
|
-
"Date": "9/6/2022"
|
|
21
|
-
}
|
|
22
|
-
]
|