@cdc/chart 4.23.11 → 4.24.2
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/cdcchart.js +35740 -35027
- package/examples/feature/bar/additional-column-tooltip.json +446 -0
- package/examples/feature/bar/tall-data.json +98 -0
- package/examples/feature/forest-plot/forest-plot.json +63 -19
- package/examples/feature/forest-plot/linear.json +52 -3
- package/examples/feature/forest-plot/log.json +26 -0
- package/examples/feature/forest-plot/logarithmic.json +0 -35
- package/examples/feature/line/line-chart-preliminary.json +393 -0
- package/examples/feature/regions/index.json +9 -5
- package/examples/feature/scatterplot/scatterplot.json +272 -33
- package/index.html +10 -8
- package/package.json +2 -2
- package/src/CdcChart.tsx +70 -234
- package/src/ConfigContext.tsx +6 -0
- package/src/_stories/ChartEditor.stories.tsx +22 -0
- package/src/_stories/ChartLine.preliminary.tsx +19 -0
- package/src/_stories/_mock/pie_config.json +192 -0
- package/src/_stories/_mock/pie_data.json +218 -0
- package/src/_stories/_mock/preliminary_mock.json +346 -0
- package/src/components/{AreaChart.Stacked.jsx → AreaChart/components/AreaChart.Stacked.jsx} +2 -2
- package/src/components/{AreaChart.jsx → AreaChart/components/AreaChart.jsx} +2 -26
- package/src/components/AreaChart/index.tsx +4 -0
- package/src/components/{BarChart.Horizontal.tsx → BarChart/components/BarChart.Horizontal.tsx} +8 -8
- package/src/components/{BarChart.StackedHorizontal.tsx → BarChart/components/BarChart.StackedHorizontal.tsx} +37 -7
- package/src/components/BarChart/components/BarChart.StackedVertical.tsx +108 -0
- package/src/components/{BarChart.Vertical.tsx → BarChart/components/BarChart.Vertical.tsx} +53 -70
- package/src/components/BarChart/components/BarChart.jsx +39 -0
- package/src/components/{BarChartType.jsx → BarChart/components/BarChartType.jsx} +0 -2
- package/src/components/BarChart/components/context.tsx +13 -0
- package/src/components/BarChart/index.tsx +3 -0
- package/src/components/{BoxPlot.jsx → BoxPlot/BoxPlot.jsx} +10 -9
- package/src/components/BoxPlot/index.tsx +3 -0
- package/src/components/EditorPanel/EditorPanel.tsx +2776 -0
- package/src/components/EditorPanel/EditorPanelContext.ts +40 -0
- package/src/components/EditorPanel/components/PanelProps.ts +3 -0
- package/src/components/EditorPanel/components/Panels/Panel.BoxPlot.tsx +148 -0
- package/src/components/{ForestPlotSettings.jsx → EditorPanel/components/Panels/Panel.ForestPlotSettings.tsx} +97 -167
- package/src/components/EditorPanel/components/Panels/Panel.General.tsx +160 -0
- package/src/components/EditorPanel/components/Panels/Panel.Regions.tsx +168 -0
- package/src/components/{Series.jsx → EditorPanel/components/Panels/Panel.Series.tsx} +4 -4
- package/src/components/EditorPanel/components/Panels/Panel.Visual.tsx +297 -0
- package/src/components/EditorPanel/components/Panels/index.tsx +17 -0
- package/src/components/EditorPanel/components/panels.scss +72 -0
- package/src/components/EditorPanel/editor-panel.scss +739 -0
- package/src/components/EditorPanel/index.tsx +3 -0
- package/src/{hooks → components/EditorPanel}/useEditorPermissions.js +34 -2
- package/src/components/{Forecasting.jsx → Forecasting/Forecasting.jsx} +1 -1
- package/src/components/Forecasting/index.tsx +3 -0
- package/src/components/ForestPlot/ForestPlot.tsx +254 -0
- package/src/components/ForestPlot/ForestPlotProps.ts +7 -0
- package/src/components/ForestPlot/index.tsx +1 -209
- package/src/components/Legend/Legend.Component.tsx +199 -0
- package/src/components/Legend/Legend.tsx +28 -0
- package/src/components/Legend/helpers/createFormatLabels.tsx +140 -0
- package/src/components/Legend/index.tsx +3 -0
- package/src/components/LineChart/LineChartProps.ts +29 -0
- package/src/components/LineChart/components/LineChart.Circle.tsx +147 -0
- package/src/components/LineChart/helpers.ts +45 -0
- package/src/components/LineChart/index.tsx +111 -23
- package/src/components/LinearChart.jsx +55 -72
- package/src/components/PairedBarChart.jsx +4 -2
- package/src/components/{PieChart.jsx → PieChart/PieChart.tsx} +93 -31
- package/src/components/PieChart/index.tsx +3 -0
- package/src/components/Regions/components/Regions.tsx +144 -0
- package/src/components/Regions/index.tsx +3 -0
- package/src/components/{ScatterPlot.jsx → ScatterPlot/ScatterPlot.jsx} +3 -3
- package/src/components/ScatterPlot/index.tsx +3 -0
- package/src/components/{SparkLine.jsx → Sparkline/SparkLine.jsx} +2 -2
- package/src/components/Sparkline/index.tsx +3 -0
- package/src/data/initial-state.js +10 -8
- package/src/helpers/abbreviateNumber.ts +17 -0
- package/src/helpers/computeMarginBottom.ts +55 -0
- package/src/helpers/filterData.ts +18 -0
- package/src/helpers/generateColorsArray.ts +8 -0
- package/src/helpers/getQuartiles.ts +30 -0
- package/src/helpers/handleChartAriaLabels.ts +19 -0
- package/src/helpers/handleLineType.ts +18 -0
- package/src/helpers/lineOptions.ts +18 -0
- package/src/helpers/sort.ts +7 -0
- package/src/helpers/tests/computeMarginBottom.test.ts +20 -0
- package/src/hooks/useBarChart.js +7 -6
- package/src/hooks/useHighlightedBars.js +1 -1
- package/src/hooks/useMinMax.ts +3 -3
- package/src/hooks/useScales.ts +19 -6
- package/src/hooks/{useTooltip.jsx → useTooltip.tsx} +31 -25
- package/src/scss/main.scss +0 -3
- package/src/types/ChartConfig.ts +167 -23
- package/src/types/ChartContext.ts +34 -12
- package/src/types/ForestPlot.ts +7 -14
- package/src/types/Label.ts +7 -0
- package/examples/feature/scatterplot/scatterplot-continuous.csv +0 -17
- package/src/ConfigContext.jsx +0 -5
- package/src/components/BarChart.StackedVertical.tsx +0 -91
- package/src/components/BarChart.jsx +0 -30
- package/src/components/EditorPanel.jsx +0 -3356
- package/src/components/ForestPlot/Readme.md +0 -0
- package/src/components/Legend.jsx +0 -310
- package/src/components/LineChart/LineChart.Circle.tsx +0 -105
- package/src/scss/LinearChart.scss +0 -0
- package/src/scss/editor-panel.scss +0 -745
- package/src/scss/legend.scss +0 -206
- package/src/scss/mixins.scss +0 -0
- package/src/scss/variables.scss +0 -1
- package/src/types/ChartProps.ts +0 -7
package/src/ConfigContext.jsx
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import React, { useContext } from 'react'
|
|
2
|
-
import ConfigContext from '../ConfigContext'
|
|
3
|
-
import { useBarChart } from '../hooks/useBarChart'
|
|
4
|
-
import { BarStack } from '@visx/shape'
|
|
5
|
-
import { Group } from '@visx/group'
|
|
6
|
-
import { Text } from '@visx/text'
|
|
7
|
-
import { type BarChartProps } from '../types/ChartProps'
|
|
8
|
-
|
|
9
|
-
const BarChartStackedVertical = (props: BarChartProps) => {
|
|
10
|
-
const { xScale, yScale, xMax, yMax } = props
|
|
11
|
-
const { transformedData, colorScale, seriesHighlight, config, formatNumber, formatDate, parseDate, setSharedFilter } = useContext(ConfigContext)
|
|
12
|
-
const { isHorizontal, barBorderWidth, applyRadius, hoveredBar, getAdditionalColumn, onMouseLeaveBar, onMouseOverBar } = useBarChart()
|
|
13
|
-
const { orientation } = config
|
|
14
|
-
const data = config.brush.active && config.brush.data?.length ? config.brush.data : transformedData
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
config.visualizationSubType === 'stacked' &&
|
|
18
|
-
!isHorizontal && (
|
|
19
|
-
<BarStack data={data} keys={config.runtime.barSeriesKeys || config.runtime.seriesKeys} x={d => d[config.runtime.xAxis.dataKey]} xScale={xScale} yScale={yScale} color={colorScale}>
|
|
20
|
-
{barStacks =>
|
|
21
|
-
barStacks.reverse().map(barStack =>
|
|
22
|
-
barStack.bars.map(bar => {
|
|
23
|
-
let transparentBar = config.legend.behavior === 'highlight' && seriesHighlight.length > 0 && seriesHighlight.indexOf(bar.key) === -1
|
|
24
|
-
let displayBar = config.legend.behavior === 'highlight' || seriesHighlight.length === 0 || seriesHighlight.indexOf(bar.key) !== -1
|
|
25
|
-
let barThickness = xMax / barStack.bars.length
|
|
26
|
-
let barThicknessAdjusted = barThickness * (config.barThickness || 0.8)
|
|
27
|
-
let offset = (barThickness * (1 - (config.barThickness || 0.8))) / 2
|
|
28
|
-
// tooltips
|
|
29
|
-
const xAxisValue = config.runtime.xAxis.type === 'date' ? formatDate(parseDate(data[bar.index][config.runtime.xAxis.dataKey])) : data[bar.index][config.runtime.xAxis.dataKey]
|
|
30
|
-
const yAxisValue = formatNumber(bar.bar ? bar.bar.data[bar.key] : 0, 'left')
|
|
31
|
-
if (!yAxisValue) return
|
|
32
|
-
const style = applyRadius(barStack.index)
|
|
33
|
-
const xAxisTooltip = config.runtime.xAxis.label ? `${config.runtime.xAxis.label}: ${xAxisValue}` : xAxisValue
|
|
34
|
-
const additionalColTooltip = getAdditionalColumn(hoveredBar)
|
|
35
|
-
const tooltipBody = `${config.runtime.seriesLabels[bar.key]}: ${yAxisValue}`
|
|
36
|
-
const tooltip = `<ul>
|
|
37
|
-
<li class="tooltip-heading"">${xAxisTooltip}</li>
|
|
38
|
-
<li class="tooltip-body ">${tooltipBody}</li>
|
|
39
|
-
<li class="tooltip-body ">${additionalColTooltip}</li>
|
|
40
|
-
</li></ul>`
|
|
41
|
-
|
|
42
|
-
return (
|
|
43
|
-
<Group key={`${barStack.index}--${bar.index}--${orientation}`}>
|
|
44
|
-
<style>
|
|
45
|
-
{`
|
|
46
|
-
#barStack${barStack.index}-${bar.index} rect,
|
|
47
|
-
#barStack${barStack.index}-${bar.index} foreignObject div{
|
|
48
|
-
animation-delay: ${barStack.index * 0.5}s;
|
|
49
|
-
transform-origin: ${barThicknessAdjusted / 2}px ${bar.y + bar.height}px
|
|
50
|
-
}
|
|
51
|
-
`}
|
|
52
|
-
</style>
|
|
53
|
-
<Group key={`bar-stack-${barStack.index}-${bar.index}`} id={`barStack${barStack.index}-${bar.index}`} className='stack vertical'>
|
|
54
|
-
<Text display={config.labels && displayBar ? 'block' : 'none'} opacity={transparentBar ? 0.5 : 1} x={barThickness * bar.index + offset} y={bar.y - 5} fill={'#000'} textAnchor='middle'>
|
|
55
|
-
{yAxisValue}
|
|
56
|
-
</Text>
|
|
57
|
-
<foreignObject
|
|
58
|
-
onMouseOver={() => onMouseOverBar(xAxisValue, bar.key)}
|
|
59
|
-
onMouseLeave={onMouseLeaveBar}
|
|
60
|
-
key={`bar-stack-${barStack.index}-${bar.index}`}
|
|
61
|
-
x={barThickness * bar.index + offset}
|
|
62
|
-
y={bar.y}
|
|
63
|
-
width={barThicknessAdjusted}
|
|
64
|
-
height={bar.height}
|
|
65
|
-
display={displayBar ? 'block' : 'none'}
|
|
66
|
-
data-tooltip-html={tooltip}
|
|
67
|
-
data-tooltip-id={`cdc-open-viz-tooltip-${config.runtime.uniqueId}`}
|
|
68
|
-
onClick={e => {
|
|
69
|
-
e.preventDefault()
|
|
70
|
-
if (setSharedFilter) {
|
|
71
|
-
bar[config.xAxis.dataKey] = xAxisValue
|
|
72
|
-
setSharedFilter(config.uid, bar)
|
|
73
|
-
}
|
|
74
|
-
}}
|
|
75
|
-
>
|
|
76
|
-
<div
|
|
77
|
-
style={{ transition: 'all 0.2s linear', opacity: transparentBar ? 0.2 : 1, width: barThicknessAdjusted, height: bar.height, background: colorScale(config.runtime.seriesLabels[bar.key]), border: `${config.barHasBorder === 'true' ? barBorderWidth : 0}px solid #333`, ...style }}
|
|
78
|
-
></div>
|
|
79
|
-
</foreignObject>
|
|
80
|
-
</Group>
|
|
81
|
-
</Group>
|
|
82
|
-
)
|
|
83
|
-
})
|
|
84
|
-
)
|
|
85
|
-
}
|
|
86
|
-
</BarStack>
|
|
87
|
-
)
|
|
88
|
-
)
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export default BarChartStackedVertical
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import React, { useContext } from 'react'
|
|
2
|
-
|
|
3
|
-
// visx
|
|
4
|
-
import { Group } from '@visx/group'
|
|
5
|
-
import { Bar } from '@visx/shape'
|
|
6
|
-
|
|
7
|
-
// cdc
|
|
8
|
-
import BarChartType from './BarChartType'
|
|
9
|
-
import ErrorBoundary from '@cdc/core/components/ErrorBoundary'
|
|
10
|
-
import ConfigContext from '../ConfigContext'
|
|
11
|
-
|
|
12
|
-
const BarChart = ({ xScale, yScale, seriesScale, xMax, yMax, handleTooltipMouseOver, handleTooltipMouseOff, handleTooltipClick }) => {
|
|
13
|
-
const { transformedData: data, config } = useContext(ConfigContext)
|
|
14
|
-
|
|
15
|
-
return (
|
|
16
|
-
<ErrorBoundary component='BarChart'>
|
|
17
|
-
<Group left={parseFloat(config.runtime.yAxis.size)}>
|
|
18
|
-
<BarChartType.StackedVertical xScale={xScale} yScale={yScale} xMax={xMax} yMax={yMax} />
|
|
19
|
-
<BarChartType.StackedHorizontal xScale={xScale} yScale={yScale} xMax={xMax} yMax={yMax} />
|
|
20
|
-
<BarChartType.Vertical xScale={xScale} yScale={yScale} xMax={xMax} yMax={yMax} seriesScale={seriesScale} />
|
|
21
|
-
<BarChartType.Horizontal xScale={xScale} yScale={yScale} xMax={xMax} yMax={yMax} seriesScale={seriesScale} />
|
|
22
|
-
|
|
23
|
-
{/* tooltips */}
|
|
24
|
-
<Bar key={'bars'} display={config.tooltips.singleSeries ? 'none' : 'block'} width={Number(xMax)} height={Number(yMax)} fill={'transparent'} fillOpacity={0.05} onMouseMove={e => handleTooltipMouseOver(e, data)} onMouseOut={handleTooltipMouseOff} onClick={e => handleTooltipClick(e, data)} />
|
|
25
|
-
</Group>
|
|
26
|
-
</ErrorBoundary>
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export default BarChart
|