@milaboratories/miplots4 1.0.165 → 1.0.167
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/common/Tooltip.d.ts +2 -1
- package/dist/common/Tooltip.js +147 -143
- package/dist/common/Tooltip.js.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.d.ts +11 -31
- package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/discrete/components/Chart.js +143 -143
- package/dist/discrete/components/Chart.js.map +1 -1
- package/dist/discrete/index.d.ts +2 -0
- package/dist/discrete/index.js +127 -123
- package/dist/discrete/index.js.map +1 -1
- package/dist/discrete/utils/getFacetLabels.d.ts +3 -0
- package/dist/discrete/utils/getFacetLabels.js +16 -0
- package/dist/discrete/utils/getFacetLabels.js.map +1 -0
- package/dist/heatmap/components/tooltipUtils.js +15 -15
- package/dist/heatmap/components/tooltipUtils.js.map +1 -1
- package/dist/heatmap/fillCellsData.js +88 -85
- package/dist/heatmap/fillCellsData.js.map +1 -1
- package/dist/histogram/getHistogramData.js +42 -41
- package/dist/histogram/getHistogramData.js.map +1 -1
- package/dist/histogram/index.d.ts +1 -0
- package/dist/histogram/index.js +59 -57
- package/dist/histogram/index.js.map +1 -1
- package/dist/scatterplot/components/ChartTooltip.js +34 -33
- package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
- package/dist/scatterplot/components/ChartsGroup.js +31 -31
- package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
- package/dist/scatterplot/dots.d.ts +2 -2
- package/dist/scatterplot/dots.js +9 -9
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot/index.d.ts +1 -0
- package/dist/scatterplot/index.js +61 -59
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot/utils/sortDotsByGrouping.d.ts +2 -1
- package/dist/scatterplot/utils/sortDotsByGrouping.js +22 -11
- package/dist/scatterplot/utils/sortDotsByGrouping.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +17 -17
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.js +49 -49
- package/dist/scatterplot-umap/components/SVGLayer.js.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.d.ts +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.js +39 -38
- package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
- package/dist/scatterplot-umap/index.js +87 -77
- package/dist/scatterplot-umap/index.js.map +1 -1
- package/dist/types/bubble.js +32 -37
- package/dist/types/bubble.js.map +1 -1
- package/dist/types/common.d.ts +41 -0
- package/dist/types/common.js +39 -35
- package/dist/types/common.js.map +1 -1
- package/dist/types/discrete.d.ts +680 -70
- package/dist/types/discrete.js +141 -141
- package/dist/types/discrete.js.map +1 -1
- package/dist/types/heatmap.js +54 -59
- package/dist/types/heatmap.js.map +1 -1
- package/dist/types/scatterplot-umap.js +19 -24
- package/dist/types/scatterplot-umap.js.map +1 -1
- package/dist/types/scatterplot.js +41 -46
- package/dist/types/scatterplot.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","sources":["../../../src/discrete/components/Chart.tsx"],"sourcesContent":["import type {TooltipsData} from '../../common/Tooltip';\nimport {BLACK} from '../../constants';\nimport {BandAxis} from '../../common/BandAxis';\nimport {BarElement} from './layers/BarElement';\nimport {BinnedDotsElement} from './layers/BinnedDotsElement';\nimport {BoxElement} from './layers/BoxElement';\nimport {DotsGroupElement} from './layers/DotsGroupElement';\nimport {ErrorBarElement} from './layers/ErrorBarElement';\nimport {LineElement} from './layers/LineElement';\nimport {LogoElement} from './layers/LogoElement';\nimport {PairedPointsElement} from './layers/PairedPointsElement';\nimport {SinaElement} from './layers/SinaElement';\nimport {StackedAreaElement} from './layers/StackedAreaElement';\nimport {StackedBarElement} from './layers/StackedBarElement';\nimport {StatsPValue} from './layers/StatsPValue';\nimport {NumberAxis} from './NumberAxis';\nimport type {ChartDimensionsData, ChartScales, ChartSizes, Margins} from './types';\nimport type {DiscreteSettingsImpl} from '../DiscreteSettingsImpl';\nimport {getPairwiseStatLevelsCount} from '../utils/statsPValue';\nimport {ViolinElement} from './layers/ViolinElement';\nimport {DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, P_VALUE_LINE_HEIGHT, TITLE_LINE} from '../constants';\nimport type {\n BarsData,\n BinnedDotsData,\n BoxesData,\n DotsData,\n ErrorBarsData,\n LayerData,\n LinesData, LogoPlotData,\n PairedPointsData,\n SinaData, StackedAreaData,\n StackedBarsData,\n StatsData,\n ViolinsData,\n} from '../layers/types';\nimport type {GroupingData} from '../../types';\nimport type {ColumnName, FrameType, Orientation} from '../../types';\nimport {Grid} from './Grid';\nimport React, {useState} from 'react';\n\ninterface ChartProps {\n facetSettings?: DiscreteSettingsImpl['facetSettings'];\n chartSizes: ChartSizes;\n dimensions: ChartDimensionsData;\n margins: Margins;\n scales: ChartScales;\n orientation: Orientation;\n facetKey: string;\n facetTitle: string[]; // can be multiline\n layersData: LayerData[];\n statsData: StatsData[];\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'];\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n keyColumn: ColumnName | null;\n tooltips: DiscreteSettingsImpl['chartSettings']['tooltips'];\n tooltipsContainer?: Element;\n xLabels: Record<string, string[]>;\n onlyPositive: boolean;\n secondaryGrouping: GroupingData;\n tooltipsData: TooltipsData<unknown>;\n}\n\nfunction getYShiftsForStats(statsData: StatsData[], primaryKeys: string[], facetKey: string) {\n if (!statsData.length) {\n return [];\n }\n const yShifts = [0];\n for (let i = 0; i < statsData.length - 1; i++) {\n const stat = statsData[i];\n if (stat.meta.statType === 'pairwise') {\n const lineCount = getPairwiseStatLevelsCount(\n stat.values[facetKey],\n primaryKeys,\n stat.meta.significanceLevels,\n stat.meta.ns\n );\n yShifts.push(yShifts[yShifts.length - 1] + P_VALUE_LINE_HEIGHT * lineCount);\n } else {\n yShifts.push(yShifts[yShifts.length - 1] + P_VALUE_LINE_HEIGHT);\n }\n }\n return yShifts;\n}\n\nfunction getAxisTitle(title: string | ColumnName): string {\n if (typeof title === 'string') {\n return title;\n }\n return title.value;\n}\n\nexport function Chart({\n facetSettings,\n facetTitle,\n dimensions,\n scales,\n orientation,\n layersData,\n statsData,\n facetKey,\n xAxis,\n yAxis,\n frameType,\n tooltips,\n tooltipsContainer,\n keyColumn,\n chartSizes,\n margins,\n xLabels,\n onlyPositive,\n secondaryGrouping,\n tooltipsData,\n}: ChartProps) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n const isVertical = orientation === 'vertical';\n const yShifts = getYShiftsForStats(statsData, scales.xPrimary.domain(), facetKey);\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const xTitle = getAxisTitle(xAxis.title);\n const yTitle = getAxisTitle(yAxis.title);\n const needLeftAxis =\n dimensions.chartEdgeSides.includes('left') ||\n (isVertical && !facetSettings?.sharedY) ||\n (!isVertical && !facetSettings?.sharedX);\n const needBottomAxis =\n dimensions.chartEdgeSides.includes('bottom') ||\n (isVertical && !facetSettings?.sharedX) ||\n (!isVertical && !facetSettings?.sharedY);\n const needLeftAxisTitle = dimensions.chartEdgeSides.includes('left');\n const needBottomAxisTitle = dimensions.chartEdgeSides.includes('bottom');\n\n const {width, height} = dimensions.inner;\n const {left, top, padding} = dimensions;\n\n const sideDistances = {\n left: margins.left + left + padding.left,\n right: chartSizes.totalWidth - (margins.left + left + padding.left),\n top: margins.top + top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + top + padding.top),\n };\n\n const chartTransform = `translate(${left + padding.left},${top + padding.top})`;\n\n const debug = false;\n return (\n <g transform={chartTransform}>\n {debug && (\n <g>\n <rect width={width} height={padding.top} x={0} y={-padding.top} fill=\"none\" stroke=\"black\" />\n <rect width={width} height={padding.bottom} x={0} y={height} fill=\"none\" stroke=\"black\" />\n <rect width={padding.left} height={height} x={-padding.left} y={0} fill=\"none\" stroke=\"black\" />\n <rect width={padding.right} height={height} x={width} y={0} fill=\"none\" stroke=\"black\" />\n </g>\n )}\n {facetTitle.length && (\n <g>\n {frameType === 'full' && <rect x=\"0\" y={-padding.top} height={padding.top} width={width} fill=\"#F7F8FA\" stroke={BLACK} />}\n {facetTitle.map((titleLine, idx) => {\n const linesCount = facetTitle.length;\n const topOffset = (padding.top - FACET_TITLE_LINE * linesCount) / 2;\n return (\n <text\n key={idx}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fill={BLACK}\n x={width / 2}\n dy={topOffset + FACET_TITLE_LINE / 2 - padding.top}\n y={idx * FACET_TITLE_LINE}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {titleLine}\n </text>\n );\n })}\n </g>\n )}\n <g dominantBaseline=\"central\" textAnchor=\"middle\" fontWeight=\"500\" fontSize=\"14px\" fill={BLACK}>\n {needBottomAxisTitle && (\n <text x={width / 2} y={height + padding.bottom - TITLE_LINE / 2}>\n {isVertical ? xTitle : yTitle}\n </text>\n )}\n {needBottomAxisTitle && debug && (\n <rect\n x=\"0\"\n y={height + padding.bottom - TITLE_LINE}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n {needLeftAxisTitle && (\n <text\n x={-padding.left + TITLE_LINE / 2}\n y={height / 2}\n transform={`rotate(-90,${-padding.left + TITLE_LINE / 2},${height / 2})`}\n >\n {isVertical ? yTitle : xTitle}\n </text>\n )}\n {needLeftAxisTitle && debug && (\n <rect x={-padding.left} y=\"0\" width={TITLE_LINE} height={height} fill=\"none\" stroke=\"black\" />\n )}\n </g>\n <Grid\n orientation={orientation}\n width={width}\n height={height}\n scaleX={scales.xPrimary}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n {isVertical ? (\n <BandAxis\n scale={scales.xPrimary}\n orient=\"bottom\"\n labelsPosition={xAxis.labelsPosition}\n tickSize={tickSizeX}\n labels={xLabels}\n />\n ) : (\n <NumberAxis scale={scales.y} onlyPositive={onlyPositive} orient=\"bottom\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n )}\n </g>\n )}\n {needLeftAxis && (\n <g>\n {isVertical ? (\n <NumberAxis scale={scales.y} onlyPositive={onlyPositive} orient=\"left\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n ) : (\n <BandAxis\n scale={scales.xPrimary}\n orient=\"left\"\n labelsPosition={xAxis.labelsPosition}\n tickSize={tickSizeX}\n labels={xLabels}\n />\n )}\n </g>\n )}\n <g>\n {layersData.map(layerData => (\n <g key={layerData.type}>\n {layerData.type === 'box' &&\n (layerData as BoxesData).geoms[facetKey].map(box => (\n <BoxElement\n key={box.key}\n facetKey={facetKey}\n box={box}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BoxesData).aes}\n hasKeyFromColumn={keyColumn !== null}\n sideDistances={sideDistances}\n showTooltips={tooltips.box.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'violin' &&\n (layerData as ViolinsData).geoms[facetKey].map(violin => (\n <ViolinElement\n key={violin.key}\n facetKey={facetKey}\n violin={violin}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n maxViolinDensity={(layerData as ViolinsData).meta.maxDensity}\n aes={(layerData as ViolinsData).aes}\n sideDistances={sideDistances}\n showTooltips={tooltips.violin.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'dot' &&\n (layerData as DotsData).geoms[facetKey].map(dotsGroup => (\n <DotsGroupElement\n key={dotsGroup.key}\n facetKey={facetKey}\n geom={dotsGroup}\n scales={scales}\n orientation={orientation}\n aes={(layerData as DotsData).aes}\n hasKeyFromColumn={keyColumn !== null}\n sideDistances={sideDistances}\n showTooltips={tooltips.dot.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'line' &&\n (layerData as LinesData).geoms[facetKey].map(line => (\n <LineElement\n key={line.key}\n facetKey={facetKey}\n line={line}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as LinesData).aes}\n showTooltips={tooltips.line.show}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'errorbar' &&\n (layerData as ErrorBarsData).geoms[facetKey].map(errorBar => (\n <ErrorBarElement\n key={errorBar.key}\n facetKey={facetKey}\n errorBar={errorBar}\n scales={scales}\n orientation={orientation}\n aes={(layerData as ErrorBarsData).aes}\n sideDistances={sideDistances}\n showTooltips={tooltips.errorBar.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'bar' &&\n (layerData as BarsData).geoms[facetKey].map(bar => (\n <BarElement\n key={bar.key}\n bar={bar}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BarsData).aes}\n />\n ))}\n {layerData.type === 'stackedBar' &&\n (layerData as StackedBarsData).geoms[facetKey].map(geom => (\n <StackedBarElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as StackedBarsData).aes}\n normalize={(layerData as StackedBarsData).meta.normalize}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'stackedArea' && (\n <StackedAreaElement\n key='stackedArea'\n facetKey={facetKey}\n layerData={layerData as StackedAreaData}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n )}\n {layerData.type === 'binnedDots' &&\n (layerData as BinnedDotsData).geoms[facetKey].map(geom => (\n <BinnedDotsElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BinnedDotsData).aes}\n binsCount={(layerData as BinnedDotsData).meta.binsCount}\n min={(layerData as BinnedDotsData).meta.minY}\n max={(layerData as BinnedDotsData).meta.maxY}\n hasKeyFromColumn={(layerData as BinnedDotsData).meta.hasKeyFromColumn}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'pairedPoints' &&\n (layerData as PairedPointsData).geoms[facetKey].map(geom => (\n <PairedPointsElement\n key={geom.id}\n facetKey={facetKey}\n geom={geom}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as PairedPointsData).aes}\n showTooltips={tooltips.pairedPoints.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'sina' &&\n (layerData as SinaData).geoms[facetKey].map(geom => (\n <SinaElement\n key={geom.key}\n geom={geom}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as SinaData).aes}\n hasKeyFromColumn={keyColumn !== null}\n showTooltips={false}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'logo' &&\n (layerData as LogoPlotData).geoms[facetKey].map(geom => (\n <LogoElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as LogoPlotData).aes}\n normalize={(layerData as LogoPlotData).meta.normalize}\n sideDistances={sideDistances}\n showTooltips={tooltips.logo.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n </g>\n ))}\n {statsData.map((statsLayer, idx) => (\n <StatsPValue\n yShift={yShifts[idx]}\n scales={scales}\n orientation={orientation}\n statType={statsLayer.meta.statType}\n values={statsLayer.values[facetKey]}\n testMethod={statsLayer.meta.testMethod}\n format={statsLayer.meta.format}\n ns={statsLayer.meta.ns}\n key={`${statsLayer.meta.statType}_${statsLayer.meta.testMethod}`}\n significanceLevels={statsLayer.meta.significanceLevels}\n />\n ))}\n </g>\n <g>\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>}\n <g\n ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n </g>\n </g>\n );\n}\n"],"names":["getYShiftsForStats","statsData","primaryKeys","facetKey","yShifts","stat","lineCount","getPairwiseStatLevelsCount","P_VALUE_LINE_HEIGHT","getAxisTitle","title","Chart","facetSettings","facetTitle","dimensions","scales","orientation","layersData","xAxis","yAxis","frameType","tooltips","tooltipsContainer","keyColumn","chartSizes","margins","xLabels","onlyPositive","secondaryGrouping","tooltipsData","activeElementContainer","setActiveElementContainer","useState","isVertical","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","xTitle","yTitle","needLeftAxis","needBottomAxis","needLeftAxisTitle","needBottomAxisTitle","width","height","left","top","padding","sideDistances","chartTransform","debug","jsxs","jsx","BLACK","titleLine","idx","linesCount","topOffset","FACET_TITLE_LINE","TITLE_LINE","Grid","BandAxis","NumberAxis","layerData","box","BoxElement","violin","ViolinElement","dotsGroup","DotsGroupElement","line","LineElement","errorBar","ErrorBarElement","bar","BarElement","geom","StackedBarElement","StackedAreaElement","BinnedDotsElement","PairedPointsElement","SinaElement","LogoElement","statsLayer","StatsPValue","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.js","sources":["../../../src/discrete/components/Chart.tsx"],"sourcesContent":["import type {TooltipsData} from '../../common/Tooltip';\nimport {BLACK} from '../../constants';\nimport {BandAxis} from '../../common/BandAxis';\nimport {BarElement} from './layers/BarElement';\nimport {BinnedDotsElement} from './layers/BinnedDotsElement';\nimport {BoxElement} from './layers/BoxElement';\nimport {DotsGroupElement} from './layers/DotsGroupElement';\nimport {ErrorBarElement} from './layers/ErrorBarElement';\nimport {LineElement} from './layers/LineElement';\nimport {LogoElement} from './layers/LogoElement';\nimport {PairedPointsElement} from './layers/PairedPointsElement';\nimport {SinaElement} from './layers/SinaElement';\nimport {StackedAreaElement} from './layers/StackedAreaElement';\nimport {StackedBarElement} from './layers/StackedBarElement';\nimport {StatsPValue} from './layers/StatsPValue';\nimport {NumberAxis} from './NumberAxis';\nimport type {ChartDimensionsData, ChartScales, ChartSizes, Margins} from './types';\nimport type {DiscreteSettingsImpl} from '../DiscreteSettingsImpl';\nimport {getPairwiseStatLevelsCount} from '../utils/statsPValue';\nimport {ViolinElement} from './layers/ViolinElement';\nimport {DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, P_VALUE_LINE_HEIGHT, TITLE_LINE} from '../constants';\nimport type {\n BarsData,\n BinnedDotsData,\n BoxesData,\n DotsData,\n ErrorBarsData,\n LayerData,\n LinesData, LogoPlotData,\n PairedPointsData,\n SinaData, StackedAreaData,\n StackedBarsData,\n StatsData,\n ViolinsData,\n} from '../layers/types';\nimport type {GroupingData} from '../../types';\nimport type {ColumnName, FrameType, Orientation} from '../../types';\nimport {Grid} from './Grid';\nimport React, {useState} from 'react';\n\ninterface ChartProps {\n facetSettings?: DiscreteSettingsImpl['facetSettings'];\n chartSizes: ChartSizes;\n dimensions: ChartDimensionsData;\n margins: Margins;\n scales: ChartScales;\n orientation: Orientation;\n facetKey: string;\n facetTitle: string[]; // can be multiline\n layersData: LayerData[];\n statsData: StatsData[];\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'];\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n keyColumn: ColumnName | null;\n tooltips: DiscreteSettingsImpl['chartSettings']['tooltips'];\n tooltipsContainer?: Element;\n xLabels: Record<string, string[]>;\n onlyPositive: boolean;\n secondaryGrouping: GroupingData;\n tooltipsData: TooltipsData<unknown>;\n}\n\nfunction getYShiftsForStats(statsData: StatsData[], primaryKeys: string[], facetKey: string) {\n if (!statsData.length) {\n return [];\n }\n const yShifts = [0];\n for (let i = 0; i < statsData.length - 1; i++) {\n const stat = statsData[i];\n if (stat.meta.statType === 'pairwise') {\n const lineCount = getPairwiseStatLevelsCount(\n stat.values[facetKey],\n primaryKeys,\n stat.meta.significanceLevels,\n stat.meta.ns\n );\n yShifts.push(yShifts[yShifts.length - 1] + P_VALUE_LINE_HEIGHT * lineCount);\n } else {\n yShifts.push(yShifts[yShifts.length - 1] + P_VALUE_LINE_HEIGHT);\n }\n }\n return yShifts;\n}\n\nfunction getAxisTitle(title: string | ColumnName): string {\n if (typeof title === 'string') {\n return title;\n }\n return title.value;\n}\n\nexport function Chart({\n facetSettings,\n facetTitle,\n dimensions,\n scales,\n orientation,\n layersData,\n statsData,\n facetKey,\n xAxis,\n yAxis,\n frameType,\n tooltips,\n tooltipsContainer,\n keyColumn,\n chartSizes,\n margins,\n xLabels,\n onlyPositive,\n secondaryGrouping,\n tooltipsData,\n}: ChartProps) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n const isVertical = orientation === 'vertical';\n const yShifts = getYShiftsForStats(statsData, scales.xPrimary.domain(), facetKey);\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const xTitle = getAxisTitle(xAxis.title);\n const yTitle = getAxisTitle(yAxis.title);\n const needLeftAxis =\n dimensions.chartEdgeSides.includes('left') ||\n (isVertical && !facetSettings?.sharedY) ||\n (!isVertical && !facetSettings?.sharedX);\n const needBottomAxis =\n dimensions.chartEdgeSides.includes('bottom') ||\n (isVertical && !facetSettings?.sharedX) ||\n (!isVertical && !facetSettings?.sharedY);\n const needLeftAxisTitle = dimensions.chartEdgeSides.includes('left');\n const needBottomAxisTitle = dimensions.chartEdgeSides.includes('bottom');\n\n const {width, height} = dimensions.inner;\n const {left, top, padding} = dimensions;\n\n const sideDistances = {\n left: margins.left + left + padding.left,\n right: chartSizes.totalWidth - (margins.left + left + padding.left),\n top: margins.top + top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + top + padding.top),\n };\n\n const chartTransform = `translate(${left + padding.left},${top + padding.top})`;\n\n const debug = false;\n return (\n <g transform={chartTransform}>\n {debug && (\n <g>\n <rect width={width} height={padding.top} x={0} y={-padding.top} fill=\"none\" stroke=\"black\" />\n <rect width={width} height={padding.bottom} x={0} y={height} fill=\"none\" stroke=\"black\" />\n <rect width={padding.left} height={height} x={-padding.left} y={0} fill=\"none\" stroke=\"black\" />\n <rect width={padding.right} height={height} x={width} y={0} fill=\"none\" stroke=\"black\" />\n </g>\n )}\n {facetTitle.length && (\n <g>\n {frameType === 'full' && <rect x=\"0\" y={-padding.top} height={padding.top} width={width} fill=\"#F7F8FA\" stroke={BLACK} />}\n {facetTitle.map((titleLine, idx) => {\n const linesCount = facetTitle.length;\n const topOffset = (padding.top - FACET_TITLE_LINE * linesCount) / 2;\n return (\n <text\n key={idx}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fill={BLACK}\n x={width / 2}\n dy={topOffset + FACET_TITLE_LINE / 2 - padding.top}\n y={idx * FACET_TITLE_LINE}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {titleLine}\n </text>\n );\n })}\n </g>\n )}\n <g dominantBaseline=\"central\" textAnchor=\"middle\" fontWeight=\"500\" fontSize=\"14px\" fill={BLACK}>\n {needBottomAxisTitle && (\n <text x={width / 2} y={height + padding.bottom - TITLE_LINE / 2}>\n {isVertical ? xTitle : yTitle}\n </text>\n )}\n {needBottomAxisTitle && debug && (\n <rect\n x=\"0\"\n y={height + padding.bottom - TITLE_LINE}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n {needLeftAxisTitle && (\n <text\n x={-padding.left + TITLE_LINE / 2}\n y={height / 2}\n transform={`rotate(-90,${-padding.left + TITLE_LINE / 2},${height / 2})`}\n >\n {isVertical ? yTitle : xTitle}\n </text>\n )}\n {needLeftAxisTitle && debug && (\n <rect x={-padding.left} y=\"0\" width={TITLE_LINE} height={height} fill=\"none\" stroke=\"black\" />\n )}\n </g>\n <Grid\n orientation={orientation}\n width={width}\n height={height}\n scaleX={scales.xPrimary}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n {isVertical ? (\n <BandAxis\n scale={scales.xPrimary}\n orient=\"bottom\"\n labelsPosition={xAxis.labelsPosition}\n tickSize={tickSizeX}\n labels={xLabels}\n />\n ) : (\n <NumberAxis scale={scales.y} onlyPositive={onlyPositive} orient=\"bottom\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n )}\n </g>\n )}\n {needLeftAxis && (\n <g>\n {isVertical ? (\n <NumberAxis scale={scales.y} onlyPositive={onlyPositive} orient=\"left\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n ) : (\n <BandAxis\n scale={scales.xPrimary}\n orient=\"left\"\n labelsPosition={xAxis.labelsPosition}\n tickSize={tickSizeX}\n labels={xLabels}\n />\n )}\n </g>\n )}\n <g>\n {layersData.map(layerData => (\n <g key={layerData.type}>\n {layerData.type === 'box' &&\n (layerData as BoxesData).geoms[facetKey].map(box => (\n <BoxElement\n key={box.key}\n facetKey={facetKey}\n box={box}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BoxesData).aes}\n hasKeyFromColumn={keyColumn !== null}\n sideDistances={sideDistances}\n showTooltips={tooltips.box.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'violin' &&\n (layerData as ViolinsData).geoms[facetKey].map(violin => (\n <ViolinElement\n key={violin.key}\n facetKey={facetKey}\n violin={violin}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n maxViolinDensity={(layerData as ViolinsData).meta.maxDensity}\n aes={(layerData as ViolinsData).aes}\n sideDistances={sideDistances}\n showTooltips={tooltips.violin.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'dot' &&\n (layerData as DotsData).geoms[facetKey].map(dotsGroup => (\n <DotsGroupElement\n key={dotsGroup.key}\n facetKey={facetKey}\n geom={dotsGroup}\n scales={scales}\n orientation={orientation}\n aes={(layerData as DotsData).aes}\n hasKeyFromColumn={keyColumn !== null}\n sideDistances={sideDistances}\n showTooltips={tooltips.dot.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'line' &&\n (layerData as LinesData).geoms[facetKey].map(line => (\n <LineElement\n key={line.key}\n facetKey={facetKey}\n line={line}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as LinesData).aes}\n showTooltips={tooltips.line.show ?? true}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'errorbar' &&\n (layerData as ErrorBarsData).geoms[facetKey].map(errorBar => (\n <ErrorBarElement\n key={errorBar.key}\n facetKey={facetKey}\n errorBar={errorBar}\n scales={scales}\n orientation={orientation}\n aes={(layerData as ErrorBarsData).aes}\n sideDistances={sideDistances}\n showTooltips={tooltips.errorBar.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'bar' &&\n (layerData as BarsData).geoms[facetKey].map(bar => (\n <BarElement\n key={bar.key}\n bar={bar}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BarsData).aes}\n />\n ))}\n {layerData.type === 'stackedBar' &&\n (layerData as StackedBarsData).geoms[facetKey].map(geom => (\n <StackedBarElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as StackedBarsData).aes}\n normalize={(layerData as StackedBarsData).meta.normalize}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show ?? true}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'stackedArea' && (\n <StackedAreaElement\n key='stackedArea'\n facetKey={facetKey}\n layerData={layerData as StackedAreaData}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show ?? true}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n )}\n {layerData.type === 'binnedDots' &&\n (layerData as BinnedDotsData).geoms[facetKey].map(geom => (\n <BinnedDotsElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BinnedDotsData).aes}\n binsCount={(layerData as BinnedDotsData).meta.binsCount}\n min={(layerData as BinnedDotsData).meta.minY}\n max={(layerData as BinnedDotsData).meta.maxY}\n hasKeyFromColumn={(layerData as BinnedDotsData).meta.hasKeyFromColumn}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'pairedPoints' &&\n (layerData as PairedPointsData).geoms[facetKey].map(geom => (\n <PairedPointsElement\n key={geom.id}\n facetKey={facetKey}\n geom={geom}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as PairedPointsData).aes}\n showTooltips={tooltips.pairedPoints.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'sina' &&\n (layerData as SinaData).geoms[facetKey].map(geom => (\n <SinaElement\n key={geom.key}\n geom={geom}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as SinaData).aes}\n hasKeyFromColumn={keyColumn !== null}\n showTooltips={false}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'logo' &&\n (layerData as LogoPlotData).geoms[facetKey].map(geom => (\n <LogoElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as LogoPlotData).aes}\n normalize={(layerData as LogoPlotData).meta.normalize}\n sideDistances={sideDistances}\n showTooltips={tooltips.logo.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n </g>\n ))}\n {statsData.map((statsLayer, idx) => (\n <StatsPValue\n yShift={yShifts[idx]}\n scales={scales}\n orientation={orientation}\n statType={statsLayer.meta.statType}\n values={statsLayer.values[facetKey]}\n testMethod={statsLayer.meta.testMethod}\n format={statsLayer.meta.format}\n ns={statsLayer.meta.ns}\n key={`${statsLayer.meta.statType}_${statsLayer.meta.testMethod}`}\n significanceLevels={statsLayer.meta.significanceLevels}\n />\n ))}\n </g>\n <g>\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>}\n <g\n ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n </g>\n </g>\n );\n}\n"],"names":["getYShiftsForStats","statsData","primaryKeys","facetKey","yShifts","i","stat","lineCount","getPairwiseStatLevelsCount","P_VALUE_LINE_HEIGHT","getAxisTitle","title","Chart","facetSettings","facetTitle","dimensions","scales","orientation","layersData","xAxis","yAxis","frameType","tooltips","tooltipsContainer","keyColumn","chartSizes","margins","xLabels","onlyPositive","secondaryGrouping","tooltipsData","activeElementContainer","setActiveElementContainer","useState","isVertical","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","xTitle","yTitle","needLeftAxis","needBottomAxis","needLeftAxisTitle","needBottomAxisTitle","width","height","left","top","padding","sideDistances","chartTransform","debug","jsxs","jsx","BLACK","titleLine","idx","linesCount","topOffset","FACET_TITLE_LINE","TITLE_LINE","Grid","BandAxis","NumberAxis","layerData","box","BoxElement","violin","ViolinElement","dotsGroup","DotsGroupElement","line","LineElement","errorBar","ErrorBarElement","bar","BarElement","geom","StackedBarElement","StackedAreaElement","BinnedDotsElement","PairedPointsElement","SinaElement","LogoElement","statsLayer","StatsPValue","node"],"mappings":"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"}
|
package/dist/discrete/index.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export declare class ChartDiscrete extends AbstractChart {
|
|
|
16
16
|
facetKeyLists: GroupKey[][];
|
|
17
17
|
nonEmptyGroupsByFacets: Record<string, string[]>;
|
|
18
18
|
onlyPositive: boolean;
|
|
19
|
+
facetKeys: string[];
|
|
20
|
+
facetLabels: Record<string, string[]>;
|
|
19
21
|
} | null;
|
|
20
22
|
constructor(data: DataFrame, settings: DiscreteSettings, eventHandlers?: DiscreteEventHandlers);
|
|
21
23
|
mount(node: HTMLElement): void;
|
package/dist/discrete/index.js
CHANGED
|
@@ -1,51 +1,52 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { l as
|
|
5
|
-
import { s as
|
|
6
|
-
import { AbstractChart as
|
|
7
|
-
import { NO_GROUPED as
|
|
8
|
-
import { getUnknownErrorInfo as
|
|
1
|
+
var F = Object.defineProperty;
|
|
2
|
+
var T = (l, n, e) => n in l ? F(l, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[n] = e;
|
|
3
|
+
var D = (l, n, e) => T(l, typeof n != "symbol" ? n + "" : n, e);
|
|
4
|
+
import { l as P } from "../_virtual/lodash.js";
|
|
5
|
+
import { s as M } from "../_virtual/server.browser.js";
|
|
6
|
+
import { AbstractChart as V } from "../AbstractChart.js";
|
|
7
|
+
import { NO_GROUPED as E } from "../DataFrame.js";
|
|
8
|
+
import { getUnknownErrorInfo as b, isErrorInfo as k } from "../types/common.js";
|
|
9
9
|
import "../types/discrete.js";
|
|
10
10
|
import "../types/scatterplot.js";
|
|
11
11
|
import "../types/heatmap.js";
|
|
12
12
|
import "../types/dendro.js";
|
|
13
13
|
import "../types/histogram.js";
|
|
14
14
|
import "../types/bubble.js";
|
|
15
|
-
import
|
|
16
|
-
import { MAX_GROUPS_COUNT as w, MAX_FACETS_COUNT as
|
|
17
|
-
import { DiscreteSettingsImpl as
|
|
18
|
-
import { getBoxesData as
|
|
19
|
-
import { getViolinsData as
|
|
20
|
-
import { getSinaData as
|
|
21
|
-
import { getDotsData as
|
|
22
|
-
import { getLinesData as
|
|
23
|
-
import { getErrorBarsData as
|
|
24
|
-
import { getBarsData as
|
|
25
|
-
import { getStackedBarsData as
|
|
26
|
-
import { getStackedAreaData as
|
|
27
|
-
import { getBinnedDotsData as
|
|
28
|
-
import { getPairedPointsData as
|
|
29
|
-
import { getLogoData as
|
|
30
|
-
import { getStatsData as
|
|
31
|
-
import { getFacetStringKey as
|
|
32
|
-
import { arraysAreDifferent as
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
15
|
+
import j from "./ChartRenderer.js";
|
|
16
|
+
import { MAX_GROUPS_COUNT as w, MAX_FACETS_COUNT as A } from "../constants.js";
|
|
17
|
+
import { DiscreteSettingsImpl as N, StatLayer as B, BoxLayer as H, ViolinLayer as X, DotLayer as q, LineLayer as z, ErrorBarLayer as J, BarLayer as Q, StackedBarLayer as W, StackedAreaLayer as Y, BinnedDotsLayer as Z, PairedPointsLayer as $, SinaLayer as tt, LogoPlotLayer as at } from "./DiscreteSettingsImpl.js";
|
|
18
|
+
import { getBoxesData as et } from "./layers/boxes.js";
|
|
19
|
+
import { getViolinsData as rt } from "./layers/violins.js";
|
|
20
|
+
import { getSinaData as ot } from "./layers/sina.js";
|
|
21
|
+
import { getDotsData as nt } from "./layers/dots.js";
|
|
22
|
+
import { getLinesData as it } from "./layers/lines.js";
|
|
23
|
+
import { getErrorBarsData as st } from "./layers/errorbars.js";
|
|
24
|
+
import { getBarsData as ut } from "./layers/bar.js";
|
|
25
|
+
import { getStackedBarsData as lt } from "./layers/stackedBar.js";
|
|
26
|
+
import { getStackedAreaData as ct } from "./layers/stackedArea.js";
|
|
27
|
+
import { getBinnedDotsData as ht } from "./layers/binnedDots.js";
|
|
28
|
+
import { getPairedPointsData as dt } from "./layers/pairedPoints.js";
|
|
29
|
+
import { getLogoData as mt } from "./layers/logo.js";
|
|
30
|
+
import { getStatsData as pt } from "./layers/stats/index.js";
|
|
31
|
+
import { getFacetStringKey as x } from "./utils/getFacetStringKey.js";
|
|
32
|
+
import { arraysAreDifferent as I } from "../utils/arraysAreDifferent.js";
|
|
33
|
+
import { getFacetLabels as ft } from "./utils/getFacetLabels.js";
|
|
34
|
+
function R(l, n, e = null) {
|
|
35
|
+
const t = n.value, r = l.getColumnCategories(t);
|
|
36
|
+
return P.intersection(e ?? r, r).map(String);
|
|
36
37
|
}
|
|
37
|
-
function
|
|
38
|
+
function K(l) {
|
|
38
39
|
if (!l.length)
|
|
39
40
|
return [];
|
|
40
41
|
let n = [[]];
|
|
41
|
-
return l.forEach((
|
|
42
|
+
return l.forEach((e) => {
|
|
42
43
|
const t = [];
|
|
43
|
-
|
|
44
|
-
t.push(...n.map((s) => [...s,
|
|
44
|
+
e.forEach((r) => {
|
|
45
|
+
t.push(...n.map((s) => [...s, r]));
|
|
45
46
|
}), n = t;
|
|
46
47
|
}), n;
|
|
47
48
|
}
|
|
48
|
-
function
|
|
49
|
+
function v(l, n) {
|
|
49
50
|
if (!n)
|
|
50
51
|
return {
|
|
51
52
|
keys: ["null"],
|
|
@@ -54,177 +55,180 @@ function B(l, n) {
|
|
|
54
55
|
valueLabels: { null: "" },
|
|
55
56
|
inheritedAes: null
|
|
56
57
|
};
|
|
57
|
-
const
|
|
58
|
+
const e = n.columnName.value, t = n.columnName.valueLabels, r = l.getColumnCategories(e, !1), s = (o) => t ? String(
|
|
58
59
|
l.getColumnValue(
|
|
59
60
|
t,
|
|
60
|
-
l.getColumnCategoryRowIndex(
|
|
61
|
+
l.getColumnCategoryRowIndex(e, o)
|
|
61
62
|
)
|
|
62
|
-
) : o, u = l.getColumnCategories(
|
|
63
|
+
) : o, u = l.getColumnCategories(e, !n.allowNullGroup);
|
|
63
64
|
return {
|
|
64
|
-
keys: n.order === void 0 ? u :
|
|
65
|
-
value:
|
|
66
|
-
label: n.columnName.label ??
|
|
67
|
-
valueLabels:
|
|
65
|
+
keys: n.order === void 0 ? u : P.intersection(n.order.map(String), u),
|
|
66
|
+
value: e,
|
|
67
|
+
label: n.columnName.label ?? e,
|
|
68
|
+
valueLabels: r.reduce((o, h) => (o[h] = s(h), o), {}),
|
|
68
69
|
inheritedAes: n.inheritedAes ?? null
|
|
69
70
|
};
|
|
70
71
|
}
|
|
71
|
-
class
|
|
72
|
-
constructor(
|
|
73
|
-
super(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
class zt extends V {
|
|
73
|
+
constructor(e, t, r) {
|
|
74
|
+
super(e, t);
|
|
75
|
+
D(this, "settings");
|
|
76
|
+
D(this, "chartRenderer", new j());
|
|
77
|
+
D(this, "onTooltipHintSwitch", () => {
|
|
77
78
|
});
|
|
78
|
-
|
|
79
|
-
this.settings = new
|
|
79
|
+
D(this, "calculatedData", null);
|
|
80
|
+
this.settings = new N(t), r && (this.onTooltipHintSwitch = r[0]);
|
|
80
81
|
}
|
|
81
|
-
mount(
|
|
82
|
+
mount(e) {
|
|
82
83
|
try {
|
|
83
|
-
this.chartRenderer.init(
|
|
84
|
+
this.chartRenderer.init(e), this._updateData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
|
|
84
85
|
} catch (t) {
|
|
85
|
-
this.hasError = !0, t instanceof Error && (this.errorInfo = k(t.cause) ? t.cause :
|
|
86
|
+
this.hasError = !0, t instanceof Error && (this.errorInfo = k(t.cause) ? t.cause : b(t), this.chartRenderer.renderError(t.message), console.error(t));
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
unmount() {
|
|
89
90
|
this.chartRenderer.clear();
|
|
90
91
|
}
|
|
91
|
-
updateSettingsAndData(
|
|
92
|
+
updateSettingsAndData(e, t) {
|
|
92
93
|
try {
|
|
93
|
-
const
|
|
94
|
-
this.settings = new
|
|
95
|
-
} catch (
|
|
96
|
-
this.hasError = !0,
|
|
94
|
+
const r = this.settings, s = this.data;
|
|
95
|
+
this.settings = new N(t), this.data = e, this._needUpdateCalculatedDataBySettings(r, this.settings) || this._needUpdateCalculatedDataByData(s, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
|
|
96
|
+
} catch (r) {
|
|
97
|
+
this.hasError = !0, r instanceof Error && (this.errorInfo = k(r.cause) ? r.cause : b(r), this.chartRenderer.renderError(r.message), console.error(r));
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
|
-
updateChartState(
|
|
100
|
+
updateChartState(e, t) {
|
|
100
101
|
console.warn("no chart state for discrete");
|
|
101
102
|
}
|
|
102
103
|
export() {
|
|
103
|
-
return this._updateChart(),
|
|
104
|
+
return this._updateChart(), M.renderToString(this.chartRenderer.component);
|
|
104
105
|
}
|
|
105
|
-
_needUpdateCalculatedDataBySettings(
|
|
106
|
-
var
|
|
107
|
-
return
|
|
108
|
-
var
|
|
109
|
-
return
|
|
110
|
-
}) ||
|
|
106
|
+
_needUpdateCalculatedDataBySettings(e, t) {
|
|
107
|
+
var r, s, u, c, o, h, d, m, G, p, f, C;
|
|
108
|
+
return e.chartSettings.yAxis.scale !== t.chartSettings.yAxis.scale || (((r = e.primaryGrouping) == null ? void 0 : r.columnName.value) ?? "") !== (((s = t.primaryGrouping) == null ? void 0 : s.columnName.value) ?? "") || (((u = e.secondaryGrouping) == null ? void 0 : u.columnName.value) ?? "") !== (((c = t.secondaryGrouping) == null ? void 0 : c.columnName.value) ?? "") || (((o = e.primaryGrouping) == null ? void 0 : o.allowNullGroup) ?? "") !== (((h = t.primaryGrouping) == null ? void 0 : h.allowNullGroup) ?? "") || (((d = e.secondaryGrouping) == null ? void 0 : d.allowNullGroup) ?? "") !== (((m = t.secondaryGrouping) == null ? void 0 : m.allowNullGroup) ?? "") || I((G = e.primaryGrouping) == null ? void 0 : G.order, (p = t.primaryGrouping) == null ? void 0 : p.order, { ignoreOrder: !0 }) || I((f = e.secondaryGrouping) == null ? void 0 : f.order, (C = t.secondaryGrouping) == null ? void 0 : C.order, { ignoreOrder: !0 }) || e.facetBy.some((i, y) => {
|
|
109
|
+
var L;
|
|
110
|
+
return i.value !== ((L = t.facetBy[y]) == null ? void 0 : L.value);
|
|
111
|
+
}) || e.layers.length !== t.layers.length || e.layers.some((i, y) => !i.isEqualForCalculation(t.layers[y]));
|
|
111
112
|
}
|
|
112
|
-
_needUpdateCalculatedDataByData(
|
|
113
|
-
const
|
|
114
|
-
return
|
|
115
|
-
var
|
|
116
|
-
return
|
|
113
|
+
_needUpdateCalculatedDataByData(e, t) {
|
|
114
|
+
const r = Object.keys(e.data), s = Object.keys(t.data);
|
|
115
|
+
return e.id !== t.id || r.length !== s.length || r.some((u) => {
|
|
116
|
+
var c;
|
|
117
|
+
return e.data[u].length !== ((c = t.data[u]) == null ? void 0 : c.length);
|
|
117
118
|
});
|
|
118
119
|
}
|
|
119
120
|
_updateData() {
|
|
120
|
-
var
|
|
121
|
-
const { chartSettings:
|
|
122
|
-
if (!((
|
|
121
|
+
var S, _;
|
|
122
|
+
const { chartSettings: e, y: t, keyColumn: r, facetBy: s, layers: u, facetSettings: c } = this.settings, { yAxis: o } = e, h = this.data.getColumn(t.value).every((a) => a === null || !(Number(a) < 0)), d = v(this.data, this.settings.primaryGrouping), m = v(this.data, this.settings.secondaryGrouping), G = s.map((a) => a.value);
|
|
123
|
+
if (!((S = this.settings.primaryGrouping) != null && S.unlimitedGroupsCount) && d.keys.length > w) {
|
|
123
124
|
const a = {
|
|
124
125
|
type: "tooManyPrimaryGroups",
|
|
125
126
|
info: { count: d.keys.length, maxCount: w }
|
|
126
127
|
};
|
|
127
128
|
throw Error(a.type, { cause: a });
|
|
128
129
|
}
|
|
129
|
-
if (!((_ = this.settings.secondaryGrouping) != null && _.unlimitedGroupsCount) &&
|
|
130
|
+
if (!((_ = this.settings.secondaryGrouping) != null && _.unlimitedGroupsCount) && m.keys.length > w) {
|
|
130
131
|
const a = {
|
|
131
132
|
type: "tooManySecondaryGroups",
|
|
132
|
-
info: { count:
|
|
133
|
+
info: { count: m.keys.length, maxCount: w }
|
|
133
134
|
};
|
|
134
135
|
throw Error(a.type, { cause: a });
|
|
135
136
|
}
|
|
136
|
-
const
|
|
137
|
+
const p = s.length ? K(
|
|
137
138
|
s.map((a) => {
|
|
138
|
-
var
|
|
139
|
-
return
|
|
139
|
+
var g;
|
|
140
|
+
return R(this.data, a, (g = c == null ? void 0 : c.order) == null ? void 0 : g[a.value]);
|
|
140
141
|
})
|
|
141
|
-
) : [[
|
|
142
|
-
if (
|
|
142
|
+
) : [[E]];
|
|
143
|
+
if (p.length > A) {
|
|
143
144
|
const a = {
|
|
144
145
|
type: "tooManyFacets",
|
|
145
|
-
info: { count:
|
|
146
|
+
info: { count: p.length, maxCount: A }
|
|
146
147
|
};
|
|
147
148
|
throw Error(a.type, { cause: a });
|
|
148
149
|
}
|
|
149
|
-
|
|
150
|
+
const f = p.map(x), C = ft(this.data, s, f, p);
|
|
151
|
+
this.data.setGrouping([...G, d.value, m.value]);
|
|
150
152
|
const i = {
|
|
151
|
-
facet:
|
|
152
|
-
primary: d.value !== null ? d.keys : [
|
|
153
|
-
secondary:
|
|
154
|
-
},
|
|
155
|
-
(
|
|
156
|
-
).map(String), a), {}),
|
|
157
|
-
if (a instanceof V)
|
|
158
|
-
return tt(a, i, this.data, t, e, o);
|
|
159
|
-
if (a instanceof j)
|
|
160
|
-
return at(a, i, this.data, t, o);
|
|
153
|
+
facet: p,
|
|
154
|
+
primary: d.value !== null ? d.keys : [E],
|
|
155
|
+
secondary: m.value !== null ? m.keys : [E]
|
|
156
|
+
}, y = i.facet.reduce((a, g) => (a[x(g)] = i.primary.filter(
|
|
157
|
+
(O) => this.data.getRowsByGrouping([...g, O]).length > 0
|
|
158
|
+
).map(String), a), {}), L = u.filter((a) => !(a instanceof B)).map((a) => {
|
|
161
159
|
if (a instanceof H)
|
|
162
|
-
return et(a, i, this.data, t,
|
|
160
|
+
return et(a, i, this.data, t, r, o);
|
|
163
161
|
if (a instanceof X)
|
|
164
|
-
return
|
|
162
|
+
return rt(a, i, this.data, t, o);
|
|
165
163
|
if (a instanceof q)
|
|
166
|
-
return nt(a, i, this.data, t, o);
|
|
164
|
+
return nt(a, i, this.data, t, o, r);
|
|
167
165
|
if (a instanceof z)
|
|
168
166
|
return it(a, i, this.data, t, o);
|
|
169
167
|
if (a instanceof J)
|
|
170
|
-
return st(a, i, this.data, t);
|
|
168
|
+
return st(a, i, this.data, t, o);
|
|
171
169
|
if (a instanceof Q)
|
|
172
|
-
return ut(a, i, this.data, t);
|
|
170
|
+
return ut(a, i, this.data, t, o);
|
|
173
171
|
if (a instanceof W)
|
|
174
|
-
return lt(a, i, this.data, t
|
|
172
|
+
return lt(a, i, this.data, t);
|
|
175
173
|
if (a instanceof Y)
|
|
176
|
-
return ct(a, i, this.data, t
|
|
174
|
+
return ct(a, i, this.data, t);
|
|
177
175
|
if (a instanceof Z)
|
|
178
|
-
return
|
|
176
|
+
return ht(a, i, this.data, t, o);
|
|
179
177
|
if (a instanceof $)
|
|
180
|
-
return
|
|
178
|
+
return dt(a, i, this.data, t, o);
|
|
179
|
+
if (a instanceof tt)
|
|
180
|
+
return ot(a, i, this.data, t, o);
|
|
181
|
+
if (a instanceof at)
|
|
182
|
+
return mt(a, i, this.data, t);
|
|
181
183
|
throw new Error("Unknown layer type");
|
|
182
|
-
}),
|
|
184
|
+
}), U = u.filter((a) => a instanceof B).map((a) => {
|
|
183
185
|
if (d.value === null)
|
|
184
186
|
throw new Error("Cannot calculate p-value without data grouping");
|
|
185
|
-
return
|
|
187
|
+
return pt(a, i.facet, i.primary, t, this.data);
|
|
186
188
|
});
|
|
187
189
|
this.calculatedData = {
|
|
188
|
-
layersData:
|
|
189
|
-
statsLayersData:
|
|
190
|
+
layersData: L,
|
|
191
|
+
statsLayersData: U,
|
|
190
192
|
primaryGrouping: d,
|
|
191
|
-
secondaryGrouping:
|
|
192
|
-
facetKeyLists:
|
|
193
|
-
nonEmptyGroupsByFacets:
|
|
194
|
-
onlyPositive:
|
|
193
|
+
secondaryGrouping: m,
|
|
194
|
+
facetKeyLists: p,
|
|
195
|
+
nonEmptyGroupsByFacets: y,
|
|
196
|
+
onlyPositive: h,
|
|
197
|
+
facetKeys: f,
|
|
198
|
+
facetLabels: C
|
|
195
199
|
};
|
|
196
200
|
}
|
|
197
201
|
_updateAesInData() {
|
|
198
202
|
if (this.calculatedData === null)
|
|
199
203
|
return;
|
|
200
|
-
const { layers:
|
|
201
|
-
for (let o = 0; o <
|
|
202
|
-
const
|
|
203
|
-
"aes" in
|
|
204
|
+
const { layers: e, facetBy: t, primaryGrouping: r, secondaryGrouping: s, facetSettings: u } = this.settings, c = e.filter((o) => !(o instanceof B));
|
|
205
|
+
for (let o = 0; o < c.length; o++) {
|
|
206
|
+
const h = c[o];
|
|
207
|
+
"aes" in h && (this.calculatedData.layersData[o].aes = h.aes);
|
|
204
208
|
}
|
|
205
|
-
this.calculatedData.primaryGrouping =
|
|
209
|
+
this.calculatedData.primaryGrouping = v(this.data, r), this.calculatedData.secondaryGrouping = v(this.data, s), this.calculatedData.facetKeyLists = t.length ? K(
|
|
206
210
|
t.map((o) => {
|
|
207
|
-
var
|
|
208
|
-
return
|
|
211
|
+
var h;
|
|
212
|
+
return R(this.data, o, (h = u == null ? void 0 : u.order) == null ? void 0 : h[o.value]);
|
|
209
213
|
})
|
|
210
|
-
) : [[
|
|
214
|
+
) : [[E]];
|
|
211
215
|
}
|
|
212
216
|
_updateChart() {
|
|
213
217
|
if (!this.calculatedData)
|
|
214
218
|
return;
|
|
215
|
-
const { id:
|
|
219
|
+
const { id: e, chartSettings: t, keyColumn: r, facetSettings: s } = this.settings, { facetLabels: u } = this.calculatedData;
|
|
216
220
|
this.chartRenderer.render(
|
|
217
221
|
this.data,
|
|
218
|
-
|
|
222
|
+
e,
|
|
219
223
|
t,
|
|
220
224
|
this.calculatedData.primaryGrouping,
|
|
221
225
|
this.calculatedData.secondaryGrouping,
|
|
222
226
|
s,
|
|
223
|
-
|
|
224
|
-
|
|
227
|
+
this.calculatedData.facetKeys,
|
|
228
|
+
this.calculatedData.facetKeys.map((c) => u[c]),
|
|
225
229
|
this.calculatedData.layersData,
|
|
226
230
|
this.calculatedData.statsLayersData,
|
|
227
|
-
|
|
231
|
+
r,
|
|
228
232
|
this.calculatedData.nonEmptyGroupsByFacets,
|
|
229
233
|
this.calculatedData.onlyPositive,
|
|
230
234
|
this.onTooltipHintSwitch
|
|
@@ -232,6 +236,6 @@ class jt extends F {
|
|
|
232
236
|
}
|
|
233
237
|
}
|
|
234
238
|
export {
|
|
235
|
-
|
|
239
|
+
zt as ChartDiscrete
|
|
236
240
|
};
|
|
237
241
|
//# sourceMappingURL=index.js.map
|