@sis-cc/dotstatsuite-components 22.0.1 → 22.0.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/bridge-d3-react/src/index.js +18 -0
- package/dist/bridge-d3-react/src/index.js.map +1 -0
- package/dist/bridge-d3-react/src/react-chart-factory.js +44 -0
- package/dist/bridge-d3-react/src/react-chart-factory.js.map +1 -0
- package/dist/rules/src/chart/getAxisOptions.js +256 -0
- package/dist/rules/src/chart/getAxisOptions.js.map +1 -0
- package/dist/rules/src/chart/getBaseOptions.js +77 -0
- package/dist/rules/src/chart/getBaseOptions.js.map +1 -0
- package/dist/rules/src/chart/getChartOptions.js +120 -0
- package/dist/rules/src/chart/getChartOptions.js.map +1 -0
- package/dist/rules/src/chart/getGridOptions.js +46 -0
- package/dist/rules/src/chart/getGridOptions.js.map +1 -0
- package/dist/rules/src/chart/getTooltipOptions.js +223 -0
- package/dist/rules/src/chart/getTooltipOptions.js.map +1 -0
- package/dist/rules/src/constants.js +65 -0
- package/dist/rules/src/constants.js.map +1 -0
- package/dist/rules/src/date.js +121 -0
- package/dist/rules/src/date.js.map +1 -0
- package/dist/rules/src/dimension-utils.js +57 -0
- package/dist/rules/src/dimension-utils.js.map +1 -0
- package/dist/rules/src/factories/choro-series.js +68 -0
- package/dist/rules/src/factories/choro-series.js.map +1 -0
- package/dist/rules/src/factories/sample-focus.js +25 -0
- package/dist/rules/src/factories/sample-focus.js.map +1 -0
- package/dist/rules/src/factories/sample-series.js +53 -0
- package/dist/rules/src/factories/sample-series.js.map +1 -0
- package/dist/rules/src/factories/scatter-dimension.js +35 -0
- package/dist/rules/src/factories/scatter-dimension.js.map +1 -0
- package/dist/rules/src/factories/scatter-focus.js +42 -0
- package/dist/rules/src/factories/scatter-focus.js.map +1 -0
- package/dist/rules/src/factories/scatter-series.js +91 -0
- package/dist/rules/src/factories/scatter-series.js.map +1 -0
- package/dist/rules/src/factories/stacked-dimension.js +32 -0
- package/dist/rules/src/factories/stacked-dimension.js.map +1 -0
- package/dist/rules/src/factories/stacked-series.js +188 -0
- package/dist/rules/src/factories/stacked-series.js.map +1 -0
- package/dist/rules/src/factories/symbol-dimension.js +32 -0
- package/dist/rules/src/factories/symbol-dimension.js.map +1 -0
- package/dist/rules/src/factories/symbol-series.js +65 -0
- package/dist/rules/src/factories/symbol-series.js.map +1 -0
- package/dist/rules/src/factories/timeline-focus.js +21 -0
- package/dist/rules/src/factories/timeline-focus.js.map +1 -0
- package/dist/rules/src/factories/timeline-series.js +94 -0
- package/dist/rules/src/factories/timeline-series.js.map +1 -0
- package/dist/rules/src/get-values-enhanced.js +133 -0
- package/dist/rules/src/get-values-enhanced.js.map +1 -0
- package/dist/rules/src/header/getDefaultSubtitle.js +44 -0
- package/dist/rules/src/header/getDefaultSubtitle.js.map +1 -0
- package/dist/rules/src/header/getHeaderUnits.js +21 -0
- package/dist/rules/src/header/getHeaderUnits.js.map +1 -0
- package/dist/rules/src/header/getSubtitleFlags.js +47 -0
- package/dist/rules/src/header/getSubtitleFlags.js.map +1 -0
- package/dist/rules/src/header/getTitleFlags.js +12 -0
- package/dist/rules/src/header/getTitleFlags.js.map +1 -0
- package/dist/rules/src/index.js +378 -0
- package/dist/rules/src/index.js.map +1 -0
- package/dist/rules/src/layout.js +107 -0
- package/dist/rules/src/layout.js.map +1 -0
- package/dist/rules/src/observation-formater.js +86 -0
- package/dist/rules/src/observation-formater.js.map +1 -0
- package/dist/rules/src/preparators/formatValue.js +96 -0
- package/dist/rules/src/preparators/formatValue.js.map +1 -0
- package/dist/rules/src/preparators/getObservations.js +22 -0
- package/dist/rules/src/preparators/getObservations.js.map +1 -0
- package/dist/rules/src/preparators/getReportingYearStart.js +19 -0
- package/dist/rules/src/preparators/getReportingYearStart.js.map +1 -0
- package/dist/rules/src/properties/errors.js +22 -0
- package/dist/rules/src/properties/errors.js.map +1 -0
- package/dist/rules/src/properties/focus.js +72 -0
- package/dist/rules/src/properties/focus.js.map +1 -0
- package/dist/rules/src/properties/getAvailableChartTypes.js +31 -0
- package/dist/rules/src/properties/getAvailableChartTypes.js.map +1 -0
- package/dist/rules/src/properties/getHeaderProps.js +76 -0
- package/dist/rules/src/properties/getHeaderProps.js.map +1 -0
- package/dist/rules/src/properties/getInformationsStateFromNewProps.js +50 -0
- package/dist/rules/src/properties/getInformationsStateFromNewProps.js.map +1 -0
- package/dist/rules/src/properties/getObservationsType.js +28 -0
- package/dist/rules/src/properties/getObservationsType.js.map +1 -0
- package/dist/rules/src/properties/getStringifiedSubtitle.js +9 -0
- package/dist/rules/src/properties/getStringifiedSubtitle.js.map +1 -0
- package/dist/rules/src/properties/index.js +384 -0
- package/dist/rules/src/properties/index.js.map +1 -0
- package/dist/rules/src/properties/linear.js +123 -0
- package/dist/rules/src/properties/linear.js.map +1 -0
- package/dist/rules/src/properties/scatter.js +156 -0
- package/dist/rules/src/properties/scatter.js.map +1 -0
- package/dist/rules/src/properties/stacked.js +96 -0
- package/dist/rules/src/properties/stacked.js.map +1 -0
- package/dist/rules/src/properties/symbol.js +76 -0
- package/dist/rules/src/properties/symbol.js.map +1 -0
- package/dist/rules/src/properties/utils.js +86 -0
- package/dist/rules/src/properties/utils.js.map +1 -0
- package/dist/rules/src/sdmx-data/index.js +38 -0
- package/dist/rules/src/sdmx-data/index.js.map +1 -0
- package/dist/rules/src/table/factories/getCellValue.js +53 -0
- package/dist/rules/src/table/factories/getCellValue.js.map +1 -0
- package/dist/rules/src/v8-transformer.js +174 -0
- package/dist/rules/src/v8-transformer.js.map +1 -0
- package/dist/rules2/src/applyHierarchicalCodesToDim.js +126 -0
- package/dist/rules2/src/applyHierarchicalCodesToDim.js.map +1 -0
- package/dist/rules2/src/combinedValuesDisplay.js +77 -0
- package/dist/rules2/src/combinedValuesDisplay.js.map +1 -0
- package/dist/rules2/src/constants.js +9 -0
- package/dist/rules2/src/constants.js.map +1 -0
- package/dist/rules2/src/duplicateObservations.js +38 -0
- package/dist/rules2/src/duplicateObservations.js.map +1 -0
- package/dist/rules2/src/enhanceObservations.js +98 -0
- package/dist/rules2/src/enhanceObservations.js.map +1 -0
- package/dist/rules2/src/getAttributesSeries.js +39 -0
- package/dist/rules2/src/getAttributesSeries.js.map +1 -0
- package/dist/rules2/src/getCombinationDefinitions.js +50 -0
- package/dist/rules2/src/getCombinationDefinitions.js.map +1 -0
- package/dist/rules2/src/getDataflowAttributes.js +25 -0
- package/dist/rules2/src/getDataflowAttributes.js.map +1 -0
- package/dist/rules2/src/getDataflowTooltipAttributesIds.js +33 -0
- package/dist/rules2/src/getDataflowTooltipAttributesIds.js.map +1 -0
- package/dist/rules2/src/getDimensionValuesIndexes.js +16 -0
- package/dist/rules2/src/getDimensionValuesIndexes.js.map +1 -0
- package/dist/rules2/src/getHCodelistsRefsInData.js +35 -0
- package/dist/rules2/src/getHCodelistsRefsInData.js.map +1 -0
- package/dist/rules2/src/getHeaderCombinations.js +51 -0
- package/dist/rules2/src/getHeaderCombinations.js.map +1 -0
- package/dist/rules2/src/getHeaderCoordinates.js +10 -0
- package/dist/rules2/src/getHeaderCoordinates.js.map +1 -0
- package/dist/rules2/src/getHeaderSubtitle.js +37 -0
- package/dist/rules2/src/getHeaderSubtitle.js.map +1 -0
- package/dist/rules2/src/getHeaderTitle.js +18 -0
- package/dist/rules2/src/getHeaderTitle.js.map +1 -0
- package/dist/rules2/src/getMSDInformations.js +26 -0
- package/dist/rules2/src/getMSDInformations.js.map +1 -0
- package/dist/rules2/src/getManyValuesDimensions.js +37 -0
- package/dist/rules2/src/getManyValuesDimensions.js.map +1 -0
- package/dist/rules2/src/getMetadataCoordinates.js +40 -0
- package/dist/rules2/src/getMetadataCoordinates.js.map +1 -0
- package/dist/rules2/src/getNotDisplayedIds.js +56 -0
- package/dist/rules2/src/getNotDisplayedIds.js.map +1 -0
- package/dist/rules2/src/getOneValueDimensions.js +37 -0
- package/dist/rules2/src/getOneValueDimensions.js.map +1 -0
- package/dist/rules2/src/getSeriesCombinations.js +27 -0
- package/dist/rules2/src/getSeriesCombinations.js.map +1 -0
- package/dist/rules2/src/hasCellMetadata.js +17 -0
- package/dist/rules2/src/hasCellMetadata.js.map +1 -0
- package/dist/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js +60 -0
- package/dist/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js.map +1 -0
- package/dist/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js +38 -0
- package/dist/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js.map +1 -0
- package/dist/rules2/src/index.js +47 -0
- package/dist/rules2/src/index.js.map +1 -0
- package/dist/rules2/src/parseAttributes.js +44 -0
- package/dist/rules2/src/parseAttributes.js.map +1 -0
- package/dist/rules2/src/parseCombinations.js +105 -0
- package/dist/rules2/src/parseCombinations.js.map +1 -0
- package/dist/rules2/src/parseHierarchicalCodelist.js +34 -0
- package/dist/rules2/src/parseHierarchicalCodelist.js.map +1 -0
- package/dist/rules2/src/parseMetadataSeries.js +124 -0
- package/dist/rules2/src/parseMetadataSeries.js.map +1 -0
- package/dist/rules2/src/prepareData.js +78 -0
- package/dist/rules2/src/prepareData.js.map +1 -0
- package/dist/rules2/src/refineAttributes.js +19 -0
- package/dist/rules2/src/refineAttributes.js.map +1 -0
- package/dist/rules2/src/refineDimensions.js +21 -0
- package/dist/rules2/src/refineDimensions.js.map +1 -0
- package/dist/rules2/src/refineTimePeriod.js +130 -0
- package/dist/rules2/src/refineTimePeriod.js.map +1 -0
- package/dist/rules2/src/sdmx3.0DataFormatPatch.js +12 -0
- package/dist/rules2/src/sdmx3.0DataFormatPatch.js.map +1 -0
- package/dist/rules2/src/table/declineObservationsOverAttributes.js +35 -0
- package/dist/rules2/src/table/declineObservationsOverAttributes.js.map +1 -0
- package/dist/rules2/src/table/getCells.js +96 -0
- package/dist/rules2/src/table/getCells.js.map +1 -0
- package/dist/rules2/src/table/getCellsAttributesIds.js +41 -0
- package/dist/rules2/src/table/getCellsAttributesIds.js.map +1 -0
- package/dist/rules2/src/table/getCellsMetadataCoordinates.js +16 -0
- package/dist/rules2/src/table/getCellsMetadataCoordinates.js.map +1 -0
- package/dist/rules2/src/table/getCuratedCells.js +36 -0
- package/dist/rules2/src/table/getCuratedCells.js.map +1 -0
- package/dist/rules2/src/table/getFlagsAndNotes.js +26 -0
- package/dist/rules2/src/table/getFlagsAndNotes.js.map +1 -0
- package/dist/rules2/src/table/getIndexedCombinationsByDisplay.js +19 -0
- package/dist/rules2/src/table/getIndexedCombinationsByDisplay.js.map +1 -0
- package/dist/rules2/src/table/getLayout.js +87 -0
- package/dist/rules2/src/table/getLayout.js.map +1 -0
- package/dist/rules2/src/table/getLayoutData2.js +205 -0
- package/dist/rules2/src/table/getLayoutData2.js.map +1 -0
- package/dist/rules2/src/table/getSortedLayoutIndexes.js +141 -0
- package/dist/rules2/src/table/getSortedLayoutIndexes.js.map +1 -0
- package/dist/rules2/src/table/getTableLabelAccessor.js +11 -0
- package/dist/rules2/src/table/getTableLabelAccessor.js.map +1 -0
- package/dist/rules2/src/table/getTableLayoutIds.js +317 -0
- package/dist/rules2/src/table/getTableLayoutIds.js.map +1 -0
- package/dist/rules2/src/table/getTableProps.js +85 -0
- package/dist/rules2/src/table/getTableProps.js.map +1 -0
- package/dist/rules2/src/table/parseSeriesIndexesHierarchies.js +82 -0
- package/dist/rules2/src/table/parseSeriesIndexesHierarchies.js.map +1 -0
- package/dist/rules2/src/table/parseValueHierarchy.js +29 -0
- package/dist/rules2/src/table/parseValueHierarchy.js.map +1 -0
- package/dist/rules2/src/table/refineLayoutSize2.js +324 -0
- package/dist/rules2/src/table/refineLayoutSize2.js.map +1 -0
- package/dist/rules2/src/utils.js +29 -0
- package/dist/rules2/src/utils.js.map +1 -0
- package/dist/viewer/src/chart.js +50 -0
- package/dist/viewer/src/chart.js.map +1 -0
- package/dist/viewer/src/chartUtils/options.js +33 -0
- package/dist/viewer/src/chartUtils/options.js.map +1 -0
- package/dist/viewer/src/chartUtils/series.js +54 -0
- package/dist/viewer/src/chartUtils/series.js.map +1 -0
- package/dist/viewer/src/footer.js +39 -0
- package/dist/viewer/src/footer.js.map +1 -0
- package/dist/viewer/src/header.js +12 -0
- package/dist/viewer/src/header.js.map +1 -0
- package/dist/viewer/src/index.js +160 -0
- package/dist/viewer/src/index.js.map +1 -0
- package/dist/viewer/src/legends/AxisLegend.js +42 -0
- package/dist/viewer/src/legends/AxisLegend.js.map +1 -0
- package/dist/viewer/src/legends/ChartLegends.js +80 -0
- package/dist/viewer/src/legends/ChartLegends.js.map +1 -0
- package/dist/viewer/src/legends/FocusLegend.js +67 -0
- package/dist/viewer/src/legends/FocusLegend.js.map +1 -0
- package/dist/viewer/src/legends/Legend.js +51 -0
- package/dist/viewer/src/legends/Legend.js.map +1 -0
- package/dist/viewer/src/legends/SeriesLegend.js +77 -0
- package/dist/viewer/src/legends/SeriesLegend.js.map +1 -0
- package/dist/viewer/src/utils.js +24 -0
- package/dist/viewer/src/utils.js.map +1 -0
- package/package.json +1 -1
- package/src/app.js +13 -0
- package/src/bridge-d3-react/README.md +42 -0
- package/src/bridge-d3-react/src/app.js +64 -0
- package/src/bridge-d3-react/src/index.js +16 -0
- package/src/bridge-d3-react/src/mock-choro.js +394 -0
- package/src/bridge-d3-react/src/react-chart-factory.jsx +65 -0
- package/src/index.js +10 -0
- package/src/rules/README.md +23 -0
- package/src/rules/src/chart/getAxisOptions.js +263 -0
- package/src/rules/src/chart/getBaseOptions.js +84 -0
- package/src/rules/src/chart/getChartOptions.js +118 -0
- package/src/rules/src/chart/getGridOptions.js +52 -0
- package/src/rules/src/chart/getTooltipOptions.js +230 -0
- package/src/rules/src/constants.js +64 -0
- package/src/rules/src/date.js +118 -0
- package/src/rules/src/dimension-utils.js +54 -0
- package/src/rules/src/factories/choro-series.js +65 -0
- package/src/rules/src/factories/sample-focus.js +22 -0
- package/src/rules/src/factories/sample-series.js +50 -0
- package/src/rules/src/factories/scatter-dimension.js +32 -0
- package/src/rules/src/factories/scatter-focus.js +39 -0
- package/src/rules/src/factories/scatter-series.js +92 -0
- package/src/rules/src/factories/stacked-dimension.js +29 -0
- package/src/rules/src/factories/stacked-series.js +185 -0
- package/src/rules/src/factories/symbol-dimension.js +29 -0
- package/src/rules/src/factories/symbol-series.js +62 -0
- package/src/rules/src/factories/timeline-focus.js +18 -0
- package/src/rules/src/factories/timeline-series.js +91 -0
- package/src/rules/src/get-values-enhanced.js +134 -0
- package/src/rules/src/header/getDefaultSubtitle.js +40 -0
- package/src/rules/src/header/getHeaderUnits.js +17 -0
- package/src/rules/src/header/getSubtitleFlags.js +43 -0
- package/src/rules/src/header/getTitleFlags.js +8 -0
- package/src/rules/src/header/index.js +4 -0
- package/src/rules/src/index.js +398 -0
- package/src/rules/src/layout.js +113 -0
- package/src/rules/src/observation-formater.js +83 -0
- package/src/rules/src/preparators/enhanceObservations.js +152 -0
- package/src/rules/src/preparators/formatValue.js +93 -0
- package/src/rules/src/preparators/getObservations.js +19 -0
- package/src/rules/src/preparators/getReportingYearStart.js +16 -0
- package/src/rules/src/properties/errors.js +19 -0
- package/src/rules/src/properties/focus.js +69 -0
- package/src/rules/src/properties/getAvailableChartTypes.js +34 -0
- package/src/rules/src/properties/getHeaderProps.js +74 -0
- package/src/rules/src/properties/getInformationsStateFromNewProps.js +47 -0
- package/src/rules/src/properties/getObservationsType.js +29 -0
- package/src/rules/src/properties/getStringifiedSubtitle.js +6 -0
- package/src/rules/src/properties/index.js +424 -0
- package/src/rules/src/properties/information.js +84 -0
- package/src/rules/src/properties/linear.js +129 -0
- package/src/rules/src/properties/scatter.js +158 -0
- package/src/rules/src/properties/stacked.js +98 -0
- package/src/rules/src/properties/symbol.js +79 -0
- package/src/rules/src/properties/utils.js +110 -0
- package/src/rules/src/sdmx-data/index.js +39 -0
- package/src/rules/src/table/factories/getCellValue.js +50 -0
- package/src/rules/src/table/index.js +1 -0
- package/src/rules/src/v8-transformer.js +177 -0
- package/src/rules2/src/applyHierarchicalCodesToDim.js +123 -0
- package/src/rules2/src/combinedValuesDisplay.js +74 -0
- package/src/rules2/src/constants.js +6 -0
- package/src/rules2/src/duplicateObservations.js +35 -0
- package/src/rules2/src/enhanceObservations.js +95 -0
- package/src/rules2/src/getAdvAttrSeriesAtCoordinates.js +29 -0
- package/src/rules2/src/getAttributesSeries.js +36 -0
- package/src/rules2/src/getCombinationDefinitions.js +47 -0
- package/src/rules2/src/getDataflowAttributes.js +23 -0
- package/src/rules2/src/getDataflowTooltipAttributesIds.js +31 -0
- package/src/rules2/src/getDimensionValuesIndexes.js +13 -0
- package/src/rules2/src/getHCodelistsRefsInData.js +32 -0
- package/src/rules2/src/getHeaderCombinations.js +48 -0
- package/src/rules2/src/getHeaderCoordinates.js +7 -0
- package/src/rules2/src/getHeaderSubtitle.js +34 -0
- package/src/rules2/src/getHeaderTitle.js +15 -0
- package/src/rules2/src/getMSDInformations.js +23 -0
- package/src/rules2/src/getManyValuesDimensions.js +34 -0
- package/src/rules2/src/getMetadataCoordinates.js +37 -0
- package/src/rules2/src/getMetadataStructureFromData.js +17 -0
- package/src/rules2/src/getNotDisplayedIds.js +53 -0
- package/src/rules2/src/getOneValueDimensions.js +34 -0
- package/src/rules2/src/getSeriesCombinations.js +24 -0
- package/src/rules2/src/hasCellMetadata.js +14 -0
- package/src/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js +57 -0
- package/src/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js +35 -0
- package/src/rules2/src/index.js +50 -0
- package/src/rules2/src/parseAttributes.js +41 -0
- package/src/rules2/src/parseCombinations.js +102 -0
- package/src/rules2/src/parseHierarchicalCodelist.js +48 -0
- package/src/rules2/src/parseMetadataSeries.js +121 -0
- package/src/rules2/src/prepareData.js +75 -0
- package/src/rules2/src/refineAttributes.js +16 -0
- package/src/rules2/src/refineDimensions.js +18 -0
- package/src/rules2/src/refineMetadataCoordinates.js +28 -0
- package/src/rules2/src/refineTimePeriod.js +127 -0
- package/src/rules2/src/sdmx3.0DataFormatPatch.js +9 -0
- package/src/rules2/src/table/declineObservationsOverAttributes.js +32 -0
- package/src/rules2/src/table/getCells.js +93 -0
- package/src/rules2/src/table/getCellsAttributesIds.js +38 -0
- package/src/rules2/src/table/getCellsMetadataCoordinates.js +13 -0
- package/src/rules2/src/table/getCombinationDimensionsData.js +39 -0
- package/src/rules2/src/table/getCuratedCells.js +33 -0
- package/src/rules2/src/table/getFlagsAndNotes.js +23 -0
- package/src/rules2/src/table/getIndexedCombinationsByDisplay.js +16 -0
- package/src/rules2/src/table/getLayout.js +84 -0
- package/src/rules2/src/table/getLayoutData2.js +202 -0
- package/src/rules2/src/table/getSortedLayoutIndexes.js +138 -0
- package/src/rules2/src/table/getTableLabelAccessor.js +9 -0
- package/src/rules2/src/table/getTableLayoutIds.js +314 -0
- package/src/rules2/src/table/getTableProps.js +82 -0
- package/src/rules2/src/table/parseSeriesIndexesHierarchies.js +79 -0
- package/src/rules2/src/table/parseValueHierarchy.js +33 -0
- package/src/rules2/src/table/refineLayoutSize2.js +321 -0
- package/src/rules2/src/utils.js +37 -0
- package/src/viewer/mocks/bar.js +33 -0
- package/src/viewer/mocks/gpp-symbol.js +93 -0
- package/src/viewer/mocks/gpp-time.js +1103 -0
- package/src/viewer/mocks/row.js +39 -0
- package/src/viewer/mocks/scatter.js +93 -0
- package/src/viewer/mocks/stack.js +161 -0
- package/src/viewer/src/app/leg.js +36 -0
- package/src/viewer/src/app/nodata-res.js +22 -0
- package/src/viewer/src/app/nodata-sized.js +23 -0
- package/src/viewer/src/app/one-table-cell.js +70 -0
- package/src/viewer/src/app/table.js +423 -0
- package/src/viewer/src/app/use-case-1.js +33 -0
- package/src/viewer/src/app/use-case-2.js +38 -0
- package/src/viewer/src/app/use-case-3.js +18 -0
- package/src/viewer/src/app.js +116 -0
- package/src/viewer/src/chart.jsx +52 -0
- package/src/viewer/src/chartUtils/options.js +30 -0
- package/src/viewer/src/chartUtils/series.js +51 -0
- package/src/viewer/src/footer.jsx +23 -0
- package/src/viewer/src/header.jsx +10 -0
- package/src/viewer/src/index.jsx +158 -0
- package/src/viewer/src/legends/AxisLegend.jsx +41 -0
- package/src/viewer/src/legends/ChartLegends.jsx +66 -0
- package/src/viewer/src/legends/FocusLegend.jsx +63 -0
- package/src/viewer/src/legends/Legend.jsx +46 -0
- package/src/viewer/src/legends/SeriesLegend.jsx +78 -0
- package/src/viewer/src/utils.js +21 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React__default, { useState, useEffect } from 'react';
|
|
3
|
+
import * as R from 'ramda';
|
|
4
|
+
import useSize from '@react-hook/size';
|
|
5
|
+
import { Loading, NoData, TableHtml5 } from '@sis-cc/dotstatsuite-visions';
|
|
6
|
+
import { useTheme, makeStyles } from '@mui/styles';
|
|
7
|
+
import getChartOptions from './chartUtils/options.js';
|
|
8
|
+
import Header from './header.js';
|
|
9
|
+
import ChartWrapper from './chart.js';
|
|
10
|
+
import Footer from './footer.js';
|
|
11
|
+
import { isChartDataNotReady } from './utils.js';
|
|
12
|
+
|
|
13
|
+
const useStyles = makeStyles(() => ({
|
|
14
|
+
container: {
|
|
15
|
+
borderColor: '#007bc7',
|
|
16
|
+
borderBottomWidth: 1,
|
|
17
|
+
borderLeftWidth: 0,
|
|
18
|
+
borderTopWidth: 1,
|
|
19
|
+
borderRightWidth: 0,
|
|
20
|
+
borderStyle: 'solid',
|
|
21
|
+
'& svg text::selection': {
|
|
22
|
+
background: 'none'
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
tableContainer: {
|
|
26
|
+
minWidth: '100%',
|
|
27
|
+
minHeight: '100%',
|
|
28
|
+
willChange: 'transform, opacity'
|
|
29
|
+
},
|
|
30
|
+
chartContainer: {
|
|
31
|
+
width: ({
|
|
32
|
+
fixedWidth
|
|
33
|
+
}) => fixedWidth || '100%',
|
|
34
|
+
height: ({
|
|
35
|
+
fixedHeight
|
|
36
|
+
}) => fixedHeight || '100%',
|
|
37
|
+
overflow: 'hidden',
|
|
38
|
+
position: 'relative'
|
|
39
|
+
}
|
|
40
|
+
}));
|
|
41
|
+
const ViewContent = ({
|
|
42
|
+
loading,
|
|
43
|
+
loadingProps = {},
|
|
44
|
+
type,
|
|
45
|
+
width,
|
|
46
|
+
errorMessage,
|
|
47
|
+
...rest
|
|
48
|
+
}) => {
|
|
49
|
+
if (loading) return /*#__PURE__*/React__default.createElement(Loading, _extends({
|
|
50
|
+
message: loading
|
|
51
|
+
}, loadingProps));
|
|
52
|
+
if (errorMessage) return /*#__PURE__*/React__default.createElement(NoData, {
|
|
53
|
+
message: errorMessage
|
|
54
|
+
});
|
|
55
|
+
if (type === 'table') {
|
|
56
|
+
const tableProps = R.propOr({}, 'tableProps', rest);
|
|
57
|
+
const hasNoObs = R.pipe(R.prop('cells'), R.anyPass([R.isNil, R.isEmpty]))(tableProps);
|
|
58
|
+
if (hasNoObs) return /*#__PURE__*/React__default.createElement(Loading, null);
|
|
59
|
+
return /*#__PURE__*/React__default.createElement(TableHtml5, _extends({
|
|
60
|
+
isRtl: R.prop('isRtl', rest)
|
|
61
|
+
}, tableProps));
|
|
62
|
+
}
|
|
63
|
+
if (isChartDataNotReady({
|
|
64
|
+
data: R.prop('chartData', rest)
|
|
65
|
+
}) || !width) {
|
|
66
|
+
return /*#__PURE__*/React__default.createElement(Loading, null);
|
|
67
|
+
}
|
|
68
|
+
return /*#__PURE__*/React__default.createElement(ChartWrapper, {
|
|
69
|
+
data: R.prop('chartData', rest),
|
|
70
|
+
getAxisOptions: R.prop('getAxisOptions', rest),
|
|
71
|
+
heightOffsets: R.prop('heightOffsets', rest),
|
|
72
|
+
options: R.prop('chartOptions', rest),
|
|
73
|
+
type: type,
|
|
74
|
+
width: width
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
const Viewer = ({
|
|
78
|
+
type,
|
|
79
|
+
targets = {},
|
|
80
|
+
width,
|
|
81
|
+
...rest
|
|
82
|
+
}) => {
|
|
83
|
+
const classes = useStyles({
|
|
84
|
+
fixedWidth: rest.fixedWidth,
|
|
85
|
+
fixedHeight: rest.fixedHeight
|
|
86
|
+
});
|
|
87
|
+
return /*#__PURE__*/React__default.createElement("div", _extends({}, targets.viewer ? {
|
|
88
|
+
ref: targets.viewer
|
|
89
|
+
} : {}, {
|
|
90
|
+
className: R.join(' ')([classes.container, type === 'table' ? classes.tableContainer : classes.chartContainer])
|
|
91
|
+
}), /*#__PURE__*/React__default.createElement(Header, _extends({
|
|
92
|
+
target: targets.header
|
|
93
|
+
}, R.propOr({}, 'headerProps', rest))), /*#__PURE__*/React__default.createElement(ViewContent, _extends({
|
|
94
|
+
type: type,
|
|
95
|
+
width: width
|
|
96
|
+
}, rest)), /*#__PURE__*/React__default.createElement(Footer, _extends({
|
|
97
|
+
width: width,
|
|
98
|
+
target: targets.footer,
|
|
99
|
+
type: type,
|
|
100
|
+
chartData: R.prop('chartData', rest),
|
|
101
|
+
chartOptions: R.prop('chartOptions', rest)
|
|
102
|
+
}, R.prop('footerProps', rest))));
|
|
103
|
+
};
|
|
104
|
+
const defaultChartHeight = chartOptions => R.pipe(R.path(['base', 'height']), h => R.isNil(h) || isNaN(h) ? 0 : h)(chartOptions);
|
|
105
|
+
const ViewerWrapper = ({
|
|
106
|
+
chartOptions,
|
|
107
|
+
type,
|
|
108
|
+
getResponsiveSize,
|
|
109
|
+
...props
|
|
110
|
+
}) => {
|
|
111
|
+
const theme = useTheme();
|
|
112
|
+
const viewerTarget = React__default.useRef(null);
|
|
113
|
+
const headerTarget = React__default.useRef(null);
|
|
114
|
+
const footerTarget = React__default.useRef(null);
|
|
115
|
+
const [viewerWidth, viewerHeight] = useSize(viewerTarget);
|
|
116
|
+
const [_, headerHeight] = useSize(headerTarget, {
|
|
117
|
+
initialHeight: -1
|
|
118
|
+
});
|
|
119
|
+
const [___, footerHeight] = useSize(footerTarget, {
|
|
120
|
+
initialHeight: -1
|
|
121
|
+
});
|
|
122
|
+
const [chartSvgHeight, setChartSvgHeight] = useState(0);
|
|
123
|
+
const defChartHeight = defaultChartHeight(chartOptions);
|
|
124
|
+
useEffect(() => {
|
|
125
|
+
if (R.is(Function, getResponsiveSize) && viewerWidth && headerHeight !== -1 && footerHeight !== -1) {
|
|
126
|
+
getResponsiveSize({
|
|
127
|
+
responsiveWidth: viewerWidth,
|
|
128
|
+
responsiveHeight: viewerHeight
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}, [viewerWidth, viewerHeight]);
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
if (headerHeight !== -1 && footerHeight !== -1 && !isNaN(headerHeight) && !isNaN(footerHeight)) {
|
|
134
|
+
const nextHeight = defChartHeight - headerHeight - footerHeight - 2;
|
|
135
|
+
setChartSvgHeight(nextHeight);
|
|
136
|
+
}
|
|
137
|
+
}, [headerHeight, footerHeight, defChartHeight]);
|
|
138
|
+
if (type === 'table') {
|
|
139
|
+
return /*#__PURE__*/React__default.createElement(Viewer, _extends({}, props, {
|
|
140
|
+
width: viewerWidth,
|
|
141
|
+
type: type
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
const preparedChartOptions = R.pipe(R.over(R.lensPath(['base', 'width']), R.when(R.anyPass([R.isNil, isNaN]), R.always(viewerWidth || 0))), R.set(R.lensPath(['base', 'height']), chartSvgHeight), chartOptions => getChartOptions(chartOptions, props.chartData, type, theme, props.timeFormats, props.locale))(chartOptions);
|
|
145
|
+
return /*#__PURE__*/React__default.createElement(Viewer, _extends({}, props, {
|
|
146
|
+
type: type,
|
|
147
|
+
chartOptions: preparedChartOptions,
|
|
148
|
+
fixedWidth: R.path(['base', 'width'], chartOptions),
|
|
149
|
+
fixedHeight: defChartHeight,
|
|
150
|
+
targets: {
|
|
151
|
+
viewer: viewerTarget,
|
|
152
|
+
header: headerTarget,
|
|
153
|
+
footer: footerTarget
|
|
154
|
+
},
|
|
155
|
+
width: viewerWidth
|
|
156
|
+
}));
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export { ViewerWrapper as default };
|
|
160
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/viewer/src/index.jsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport * as R from 'ramda';\nimport useSize from '@react-hook/size';\nimport { Loading, NoData, TableHtml5 } from '@sis-cc/dotstatsuite-visions';\nimport { makeStyles, useTheme } from '@mui/styles';\nimport getChartOptions from './chartUtils/options.js';\nimport Header from './header.jsx';\nimport Chart from './chart.jsx';\nimport Footer from './footer.jsx';\nimport { isChartDataNotReady } from './utils.js';\n\nconst useStyles = makeStyles(() => ({\n container: {\n borderColor: '#007bc7',\n borderBottomWidth: 1,\n borderLeftWidth: 0,\n borderTopWidth: 1,\n borderRightWidth: 0,\n borderStyle: 'solid',\n '& svg text::selection': {\n background: 'none'\n }\n },\n tableContainer: {\n minWidth: '100%',\n minHeight: '100%',\n willChange: 'transform, opacity'\n },\n chartContainer: {\n width: ({ fixedWidth }) => fixedWidth || '100%',\n height: ({ fixedHeight }) => fixedHeight || '100%',\n overflow: 'hidden',\n position: 'relative'\n }\n}));\n\nconst ViewContent = ({ loading, loadingProps = {}, type, width, errorMessage, ...rest }) => {\n if (loading)\n return <Loading message={loading} {...loadingProps} />;\n if (errorMessage)\n return <NoData message={errorMessage} />;\n\n if (type === 'table') {\n const tableProps = R.propOr({}, 'tableProps', rest);\n const hasNoObs = R.pipe(R.prop('cells'), R.anyPass([R.isNil, R.isEmpty]))(tableProps);\n if (hasNoObs) return <Loading />;\n\n return <TableHtml5 isRtl={R.prop('isRtl', rest)} {...tableProps} />;\n }\n if (isChartDataNotReady({ data: R.prop('chartData', rest) }) || !width) {\n return <Loading />;\n }\n return (\n <Chart\n data={R.prop('chartData', rest)}\n getAxisOptions={R.prop('getAxisOptions', rest)}\n heightOffsets={R.prop('heightOffsets', rest)}\n options={R.prop('chartOptions', rest)}\n type={type}\n width={width}\n />\n );\n};\n\nconst Viewer = ({ type, targets = {}, width, ...rest }) => {\n const classes = useStyles({\n fixedWidth: rest.fixedWidth,\n fixedHeight: rest.fixedHeight\n });\n\n return (\n <div\n {...(targets.viewer ? { ref: targets.viewer } : {})}\n className={R.join(' ')(\n [classes.container,\n type === 'table' ? classes.tableContainer : classes.chartContainer]\n )}\n >\n <Header\n target={targets.header}\n {...R.propOr({}, 'headerProps', rest)}\n />\n <ViewContent type={type} width={width} {...rest} />\n <Footer\n width={width}\n target={targets.footer}\n type={type}\n chartData={R.prop('chartData', rest)}\n chartOptions={R.prop('chartOptions', rest)}\n {...R.prop('footerProps', rest)}\n />\n </div>\n );\n};\n\nconst defaultChartHeight = chartOptions => R.pipe(\n R.path(['base', 'height']),\n h => (R.isNil(h) || isNaN(h)) ? 0 : h\n)(chartOptions);\n\nconst ViewerWrapper = ({ chartOptions, type, getResponsiveSize, ...props }) => {\n const theme = useTheme();\n const viewerTarget = React.useRef(null);\n const headerTarget = React.useRef(null);\n const footerTarget = React.useRef(null);\n const [viewerWidth, viewerHeight] = useSize(viewerTarget);\n const [_, headerHeight] = useSize(headerTarget, { initialHeight: -1 });\n const [___, footerHeight] = useSize(footerTarget, { initialHeight: -1 });\n const [chartSvgHeight, setChartSvgHeight] = useState(0);\n const defChartHeight = defaultChartHeight(chartOptions);\n\n useEffect(() => {\n if (R.is(Function, getResponsiveSize) && viewerWidth && headerHeight !== -1 && footerHeight !== -1) {\n getResponsiveSize({\n responsiveWidth: viewerWidth,\n responsiveHeight: viewerHeight\n });\n }\n }, [viewerWidth, viewerHeight]);\n\n useEffect(() => {\n if (headerHeight !== -1 && footerHeight !== -1 && !isNaN(headerHeight) && !isNaN(footerHeight)) {\n const nextHeight = defChartHeight - headerHeight - footerHeight - 2;\n setChartSvgHeight(nextHeight);\n }\n }, [headerHeight, footerHeight, defChartHeight]);\n\n\n if (type === 'table') {\n return <Viewer\n {...props}\n width={viewerWidth}\n type={type}\n />;\n }\n\n const preparedChartOptions = R.pipe(\n R.over(R.lensPath(['base', 'width']), R.when(R.anyPass([R.isNil, isNaN]), R.always(viewerWidth || 0))),\n R.set(R.lensPath(['base', 'height']), chartSvgHeight),\n chartOptions => getChartOptions(chartOptions, props.chartData, type, theme, props.timeFormats, props.locale),\n )(chartOptions);\n\n return <Viewer\n {...props}\n type={type}\n chartOptions={preparedChartOptions}\n fixedWidth={R.path(['base', 'width'], chartOptions)}\n fixedHeight={defChartHeight}\n targets={{\n viewer: viewerTarget,\n header: headerTarget,\n footer: footerTarget\n }}\n width={viewerWidth}\n />;\n};\n\nexport default ViewerWrapper;\n"],"names":["useStyles","makeStyles","container","borderColor","borderBottomWidth","borderLeftWidth","borderTopWidth","borderRightWidth","borderStyle","background","tableContainer","minWidth","minHeight","willChange","chartContainer","width","fixedWidth","height","fixedHeight","overflow","position","ViewContent","loading","loadingProps","type","errorMessage","rest","React","createElement","Loading","_extends","message","NoData","tableProps","R","propOr","hasNoObs","pipe","prop","anyPass","isNil","isEmpty","TableHtml5","isRtl","isChartDataNotReady","data","Chart","getAxisOptions","heightOffsets","options","Viewer","targets","classes","viewer","ref","className","join","Header","target","header","Footer","footer","chartData","chartOptions","defaultChartHeight","path","h","isNaN","ViewerWrapper","getResponsiveSize","props","theme","useTheme","viewerTarget","useRef","headerTarget","footerTarget","viewerWidth","viewerHeight","useSize","_","headerHeight","initialHeight","___","footerHeight","chartSvgHeight","setChartSvgHeight","useState","defChartHeight","useEffect","is","Function","responsiveWidth","responsiveHeight","nextHeight","preparedChartOptions","over","lensPath","when","always","set","getChartOptions","timeFormats","locale"],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import * as R from 'ramda';
|
|
3
|
+
import { SCATTER } from '../../../rules/src/constants.js';
|
|
4
|
+
import { getFontFromTheme } from '../utils.js';
|
|
5
|
+
import makeStyles from '../../../node_modules/@mui/styles/makeStyles/makeStyles.js';
|
|
6
|
+
|
|
7
|
+
const useStyles = makeStyles(theme => {
|
|
8
|
+
const legendFont = getFontFromTheme(['axisLegend'])(theme);
|
|
9
|
+
return {
|
|
10
|
+
xLegend: legendFont,
|
|
11
|
+
yLegend: {
|
|
12
|
+
...legendFont,
|
|
13
|
+
left: 10,
|
|
14
|
+
position: 'absolute',
|
|
15
|
+
zIndex: 1
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
const getAxisLabel = axis => R.pipe(R.propOr([], 'series'), R.head, R.when(R.isNil, R.always({})), R.path(['dimensionValues', axis, 'name']));
|
|
20
|
+
const AxisLegend = ({
|
|
21
|
+
axis,
|
|
22
|
+
data,
|
|
23
|
+
type
|
|
24
|
+
}) => {
|
|
25
|
+
const classes = useStyles();
|
|
26
|
+
if (!R.equals(SCATTER, type)) return null;
|
|
27
|
+
switch (axis) {
|
|
28
|
+
case 'x':
|
|
29
|
+
return /*#__PURE__*/React__default.createElement("span", {
|
|
30
|
+
className: classes.xLegend
|
|
31
|
+
}, "\u2192 ", getAxisLabel('x')(data));
|
|
32
|
+
case 'y':
|
|
33
|
+
return /*#__PURE__*/React__default.createElement("span", {
|
|
34
|
+
className: classes.yLegend
|
|
35
|
+
}, "\u2191 ", getAxisLabel('y')(data));
|
|
36
|
+
default:
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export { AxisLegend as default };
|
|
42
|
+
//# sourceMappingURL=AxisLegend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AxisLegend.js","sources":["../../../../src/viewer/src/legends/AxisLegend.jsx"],"sourcesContent":["import React from 'react';\nimport * as R from 'ramda';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { SCATTER } from '../../../rules/src/constants';\nimport { getFontFromTheme } from '../utils';\n\nconst useStyles = makeStyles(theme => {\n const legendFont = getFontFromTheme(['axisLegend'])(theme);\n return ({\n xLegend: legendFont,\n yLegend: {\n ...legendFont,\n left: 10,\n position: 'absolute',\n zIndex: 1,\n }\n })\n});\n\nconst getAxisLabel = axis => R.pipe(\n R.propOr([], 'series'),\n R.head,\n R.when(R.isNil, R.always({})),\n R.path(['dimensionValues', axis, 'name'])\n);\n\nconst AxisLegend = ({ axis, data, type }) => {\n const classes = useStyles();\n if (!R.equals(SCATTER, type))\n return null;\n switch (axis) {\n case 'x':\n return <span className={classes.xLegend}>→ {getAxisLabel('x')(data)}</span>;\n case 'y':\n return <span className={classes.yLegend}>↑ {getAxisLabel('y')(data)}</span>;\n default:\n return null;\n }\n};\n\nexport default AxisLegend;\n"],"names":["useStyles","makeStyles","theme","legendFont","getFontFromTheme","xLegend","yLegend","left","position","zIndex","getAxisLabel","axis","R","pipe","propOr","head","when","isNil","always","path","AxisLegend","data","type","classes","equals","SCATTER","React","createElement","className"],"mappings":";;;;;;AAMA,MAAMA,SAAS,GAAGC,UAAU,CAACC,KAAK,IAAI;EACpC,MAAMC,UAAU,GAAGC,gBAAgB,CAAC,CAAC,YAAY,CAAC,CAAC,CAACF,KAAK,CAAC;EAC1D,OAAQ;AACNG,IAAAA,OAAO,EAAEF,UAAU;AACnBG,IAAAA,OAAO,EAAE;AACP,MAAA,GAAGH,UAAU;AACbI,MAAAA,IAAI,EAAE,EAAE;AACRC,MAAAA,QAAQ,EAAE,UAAU;AACpBC,MAAAA,MAAM,EAAE;AACV;GACD;AACH,CAAC,CAAC;AAEF,MAAMC,YAAY,GAAGC,IAAI,IAAIC,CAAC,CAACC,IAAI,CACjCD,CAAC,CAACE,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,EACtBF,CAAC,CAACG,IAAI,EACNH,CAAC,CAACI,IAAI,CAACJ,CAAC,CAACK,KAAK,EAAEL,CAAC,CAACM,MAAM,CAAC,EAAE,CAAC,CAAC,EAC7BN,CAAC,CAACO,IAAI,CAAC,CAAC,iBAAiB,EAAER,IAAI,EAAE,MAAM,CAAC,CAC1C,CAAC;AAED,MAAMS,UAAU,GAAGA,CAAC;EAAET,IAAI;EAAEU,IAAI;AAAEC,EAAAA;AAAK,CAAC,KAAK;AAC3C,EAAA,MAAMC,OAAO,GAAGvB,SAAS,EAAE;EAC3B,IAAI,CAACY,CAAC,CAACY,MAAM,CAACC,OAAO,EAAEH,IAAI,CAAC,EAC1B,OAAO,IAAI;AACb,EAAA,QAAQX,IAAI;AACV,IAAA,KAAK,GAAG;MACN,oBAAOe,cAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;QAAMC,SAAS,EAAEL,OAAO,CAAClB;OAAQ,EAAC,SAAE,EAACK,YAAY,CAAC,GAAG,CAAC,CAACW,IAAI,CAAQ,CAAC;AAC7E,IAAA,KAAK,GAAG;MACN,oBAAOK,cAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;QAAMC,SAAS,EAAEL,OAAO,CAACjB;OAAQ,EAAC,SAAE,EAACI,YAAY,CAAC,GAAG,CAAC,CAACW,IAAI,CAAQ,CAAC;AAC7E,IAAA;AACE,MAAA,OAAO,IAAI;AACf;AACF;;;;"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import * as R from 'ramda';
|
|
3
|
+
import numeral from 'numeral';
|
|
4
|
+
import { computeOptions } from '@sis-cc/dotstatsuite-d3-charts';
|
|
5
|
+
import { ChoroplethLegend } from '../../../bridge-d3-react/src/index.js';
|
|
6
|
+
import AxisLegend from './AxisLegend.js';
|
|
7
|
+
import FocusLegend from './FocusLegend.js';
|
|
8
|
+
import SeriesLegend from './SeriesLegend.js';
|
|
9
|
+
import { CHORO } from '../../../rules/src/constants.js';
|
|
10
|
+
import { getFontFromTheme, getOptionsFromFont } from '../utils.js';
|
|
11
|
+
import useTheme from '../../../node_modules/@mui/material/styles/useTheme.js';
|
|
12
|
+
|
|
13
|
+
const ChoroLegend = ({
|
|
14
|
+
type,
|
|
15
|
+
options,
|
|
16
|
+
data
|
|
17
|
+
}) => {
|
|
18
|
+
if (type !== CHORO) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const theme = useTheme();
|
|
22
|
+
const fontOptions = R.pipe(getFontFromTheme(['mapLegend']), getOptionsFromFont)(theme);
|
|
23
|
+
const legendOptions = R.mergeDeepLeft(options, {
|
|
24
|
+
legend: {
|
|
25
|
+
choropleth: {
|
|
26
|
+
width: 300,
|
|
27
|
+
height: 30,
|
|
28
|
+
margin: {
|
|
29
|
+
left: 15,
|
|
30
|
+
right: 15
|
|
31
|
+
},
|
|
32
|
+
axis: {
|
|
33
|
+
thickness: 0,
|
|
34
|
+
orient: 'bottom',
|
|
35
|
+
font: fontOptions,
|
|
36
|
+
tick: {
|
|
37
|
+
size: 5,
|
|
38
|
+
thickness: 0
|
|
39
|
+
},
|
|
40
|
+
format: {
|
|
41
|
+
proc: d => numeral(d).format('0,0.[00]')
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return /*#__PURE__*/React__default.createElement(ChoroplethLegend, {
|
|
48
|
+
options: legendOptions,
|
|
49
|
+
data: data.series
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const ChartLegends = ({
|
|
53
|
+
data,
|
|
54
|
+
options,
|
|
55
|
+
type,
|
|
56
|
+
width
|
|
57
|
+
}) => {
|
|
58
|
+
const engineOptions = R.pipe(R.assocPath(['serie', 'stacked', 'layerSeries'], R.pathOr([], ['series', 0, 'layerSeries'], data)), computeOptions)(options);
|
|
59
|
+
return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(AxisLegend, {
|
|
60
|
+
axis: "x",
|
|
61
|
+
data: data,
|
|
62
|
+
type: type
|
|
63
|
+
}), /*#__PURE__*/React__default.createElement(FocusLegend, {
|
|
64
|
+
data: data,
|
|
65
|
+
options: engineOptions,
|
|
66
|
+
type: type,
|
|
67
|
+
width: width
|
|
68
|
+
}), /*#__PURE__*/React__default.createElement(SeriesLegend, {
|
|
69
|
+
data: data,
|
|
70
|
+
options: engineOptions,
|
|
71
|
+
type: type
|
|
72
|
+
}), /*#__PURE__*/React__default.createElement(ChoroLegend, {
|
|
73
|
+
data: data,
|
|
74
|
+
options: options,
|
|
75
|
+
type: type
|
|
76
|
+
}));
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export { ChartLegends as default };
|
|
80
|
+
//# sourceMappingURL=ChartLegends.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartLegends.js","sources":["../../../../src/viewer/src/legends/ChartLegends.jsx"],"sourcesContent":["import React from 'react';\nimport * as R from 'ramda';\nimport numeral from 'numeral';\nimport { computeOptions } from '@sis-cc/dotstatsuite-d3-charts';\nimport { ChoroplethLegend } from '../../../bridge-d3-react/src';\nimport { useTheme } from '@mui/material/styles';\nimport AxisLegend from './AxisLegend.jsx';\nimport FocusLegend from './FocusLegend.jsx';\nimport SeriesLegend from './SeriesLegend.jsx';\nimport { CHORO } from '../../../rules/src/constants';\nimport { getFontFromTheme, getOptionsFromFont } from '../utils';\n\n\nconst ChoroLegend = ({ type, options, data }) => {\n if (type !== CHORO) {\n return null;\n }\n const theme = useTheme();\n const fontOptions = R.pipe(getFontFromTheme(['mapLegend']), getOptionsFromFont)(theme);\n const legendOptions = R.mergeDeepLeft(\n options,\n {\n legend: {\n choropleth: {\n width: 300,\n height: 30,\n margin: { left: 15, right: 15 },\n axis: {\n thickness: 0,\n orient: 'bottom',\n font: fontOptions,\n tick: {\n size: 5,\n thickness: 0\n },\n format: {\n proc: d => numeral(d).format('0,0.[00]')\n }\n }\n }\n }\n }\n );\n\n return (\n <ChoroplethLegend options={legendOptions} data={data.series} />\n );\n}\n\nconst ChartLegends = ({ data, options, type, width }) => {\n const engineOptions = R.pipe(\n R.assocPath(['serie', 'stacked', 'layerSeries'], R.pathOr([], ['series', 0, 'layerSeries'], data)),\n computeOptions\n )(options);\n\n return (\n <div>\n <AxisLegend axis=\"x\" data={data} type={type} />\n <FocusLegend data={data} options ={engineOptions} type={type} width={width} />\n <SeriesLegend data={data} options={engineOptions} type={type} />\n <ChoroLegend data={data} options={options} type={type} />\n </div>\n );\n};\n\nexport default ChartLegends;\n"],"names":["ChoroLegend","type","options","data","CHORO","theme","useTheme","fontOptions","R","pipe","getFontFromTheme","getOptionsFromFont","legendOptions","mergeDeepLeft","legend","choropleth","width","height","margin","left","right","axis","thickness","orient","font","tick","size","format","proc","d","numeral","React","createElement","ChoroplethLegend","series","ChartLegends","engineOptions","assocPath","pathOr","computeOptions","AxisLegend","FocusLegend","SeriesLegend"],"mappings":";;;;;;;;;;;;AAaA,MAAMA,WAAW,GAAGA,CAAC;EAAEC,IAAI;EAAEC,OAAO;AAAEC,EAAAA;AAAK,CAAC,KAAK;EAC/C,IAAIF,IAAI,KAAKG,KAAK,EAAE;AAClB,IAAA,OAAO,IAAI;AACb,EAAA;AACA,EAAA,MAAMC,KAAK,GAAGC,QAAQ,EAAE;AACxB,EAAA,MAAMC,WAAW,GAAGC,CAAC,CAACC,IAAI,CAACC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,EAAEC,kBAAkB,CAAC,CAACN,KAAK,CAAC;AACtF,EAAA,MAAMO,aAAa,GAAGJ,CAAC,CAACK,aAAa,CACnCX,OAAO,EACP;AACEY,IAAAA,MAAM,EAAE;AACNC,MAAAA,UAAU,EAAE;AACVC,QAAAA,KAAK,EAAE,GAAG;AACVC,QAAAA,MAAM,EAAE,EAAE;AACVC,QAAAA,MAAM,EAAE;AAAEC,UAAAA,IAAI,EAAE,EAAE;AAAEC,UAAAA,KAAK,EAAE;SAAI;AAC/BC,QAAAA,IAAI,EAAE;AACJC,UAAAA,SAAS,EAAE,CAAC;AACZC,UAAAA,MAAM,EAAE,QAAQ;AAChBC,UAAAA,IAAI,EAAEjB,WAAW;AACjBkB,UAAAA,IAAI,EAAE;AACJC,YAAAA,IAAI,EAAE,CAAC;AACPJ,YAAAA,SAAS,EAAE;WACZ;AACDK,UAAAA,MAAM,EAAE;YACNC,IAAI,EAAEC,CAAC,IAAIC,OAAO,CAACD,CAAC,CAAC,CAACF,MAAM,CAAC,UAAU;AACzC;AACF;AACF;AACF;AACF,GACF,CAAC;AAED,EAAA,oBACEI,cAAA,CAAAC,aAAA,CAACC,gBAAgB,EAAA;AAAC/B,IAAAA,OAAO,EAAEU,aAAc;IAACT,IAAI,EAAEA,IAAI,CAAC+B;AAAO,GAAE,CAAC;AAEnE,CAAC;AAED,MAAMC,YAAY,GAAGA,CAAC;EAAEhC,IAAI;EAAED,OAAO;EAAED,IAAI;AAAEe,EAAAA;AAAM,CAAC,KAAK;AACvD,EAAA,MAAMoB,aAAa,GAAG5B,CAAC,CAACC,IAAI,CAC1BD,CAAC,CAAC6B,SAAS,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE7B,CAAC,CAAC8B,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,CAAC,EAAEnC,IAAI,CAAC,CAAC,EAClGoC,cACF,CAAC,CAACrC,OAAO,CAAC;EAEV,oBACE6B,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA,IAAA,eACED,cAAA,CAAAC,aAAA,CAACQ,UAAU,EAAA;AAACnB,IAAAA,IAAI,EAAC,GAAG;AAAClB,IAAAA,IAAI,EAAEA,IAAK;AAACF,IAAAA,IAAI,EAAEA;AAAK,GAAE,CAAC,eAC/C8B,cAAA,CAAAC,aAAA,CAACS,WAAW,EAAA;AAACtC,IAAAA,IAAI,EAAEA,IAAK;AAACD,IAAAA,OAAO,EAAGkC,aAAc;AAACnC,IAAAA,IAAI,EAAEA,IAAK;AAACe,IAAAA,KAAK,EAAEA;AAAM,GAAE,CAAC,eAC9Ee,cAAA,CAAAC,aAAA,CAACU,YAAY,EAAA;AAACvC,IAAAA,IAAI,EAAEA,IAAK;AAACD,IAAAA,OAAO,EAAEkC,aAAc;AAACnC,IAAAA,IAAI,EAAEA;AAAK,GAAE,CAAC,eAChE8B,cAAA,CAAAC,aAAA,CAAChC,WAAW,EAAA;AAACG,IAAAA,IAAI,EAAEA,IAAK;AAACD,IAAAA,OAAO,EAAEA,OAAQ;AAACD,IAAAA,IAAI,EAAEA;AAAK,GAAE,CACrD,CAAC;AAEV;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import * as R from 'ramda';
|
|
3
|
+
import Legend from './Legend.js';
|
|
4
|
+
import { SCATTER, TIMELINE } from '../../../rules/src/constants.js';
|
|
5
|
+
|
|
6
|
+
const REDUCED_THRESHOLD = 160;
|
|
7
|
+
const scatterRenderer = ({
|
|
8
|
+
color
|
|
9
|
+
}) => /*#__PURE__*/React__default.createElement("svg", {
|
|
10
|
+
width: "12",
|
|
11
|
+
height: "14"
|
|
12
|
+
}, /*#__PURE__*/React__default.createElement("circle", {
|
|
13
|
+
cx: "7",
|
|
14
|
+
cy: "7",
|
|
15
|
+
r: "4",
|
|
16
|
+
stroke: color,
|
|
17
|
+
fill: color
|
|
18
|
+
}));
|
|
19
|
+
const lineRenderer = ({
|
|
20
|
+
color
|
|
21
|
+
}) => /*#__PURE__*/React__default.createElement("svg", {
|
|
22
|
+
width: "12",
|
|
23
|
+
height: "14"
|
|
24
|
+
}, /*#__PURE__*/React__default.createElement("line", {
|
|
25
|
+
x1: "0",
|
|
26
|
+
y1: "7",
|
|
27
|
+
x2: "11",
|
|
28
|
+
y2: "7",
|
|
29
|
+
stroke: color,
|
|
30
|
+
strokeWidth: "2"
|
|
31
|
+
}));
|
|
32
|
+
const FocusLegend = ({
|
|
33
|
+
data,
|
|
34
|
+
options,
|
|
35
|
+
type,
|
|
36
|
+
width
|
|
37
|
+
}) => {
|
|
38
|
+
if (width < REDUCED_THRESHOLD) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const itemRenderer = R.pipe(R.when(R.always(type === SCATTER), R.always(scatterRenderer)), R.when(R.always(type === TIMELINE), R.always(lineRenderer)))(null);
|
|
42
|
+
const getItemLabel = R.ifElse(R.equals(SCATTER), R.always(R.pipe(R.prop('label'), R.split(' - '), R.last)), R.always(R.prop('label')))(type);
|
|
43
|
+
const items = R.pipe(R.pathOr({}, ['share', 'focused']), R.mapObjIndexed((selection, key) => {
|
|
44
|
+
if (R.isNil(selection)) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const colors = R.pathOr([], ['serie', `${key}Colors`], options);
|
|
48
|
+
const nColors = R.length(colors);
|
|
49
|
+
return R.pipe(R.addIndex(R.map)((entry, index) => {
|
|
50
|
+
if (entry.value === 'uniq-dp') {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const color = R.nth(index % nColors, colors);
|
|
54
|
+
return {
|
|
55
|
+
color,
|
|
56
|
+
label: getItemLabel(entry)
|
|
57
|
+
};
|
|
58
|
+
}), R.filter(R.identity))(selection);
|
|
59
|
+
}), R.props(['baseline', 'highlight']), R.filter(R.identity), R.unnest)(data);
|
|
60
|
+
return /*#__PURE__*/React__default.createElement(Legend, {
|
|
61
|
+
items: items,
|
|
62
|
+
itemRenderer: itemRenderer
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export { REDUCED_THRESHOLD, FocusLegend as default };
|
|
67
|
+
//# sourceMappingURL=FocusLegend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FocusLegend.js","sources":["../../../../src/viewer/src/legends/FocusLegend.jsx"],"sourcesContent":["import React from 'react';\nimport * as R from 'ramda';\nimport Legend from './Legend.jsx';\nimport { SCATTER, TIMELINE } from '../../../rules/src/constants';\n\nexport const REDUCED_THRESHOLD = 160;\n\nconst scatterRenderer = ({ color }) => (\n <svg width='12' height='14'>\n <circle cx='7' cy='7' r='4' stroke={color} fill={color} />\n </svg>\n);\n\nconst lineRenderer = ({ color }) => (\n <svg width='12' height='14'>\n <line x1='0' y1='7' x2='11' y2='7' stroke={color} strokeWidth='2' />\n </svg>\n);\n\nconst FocusLegend = ({ data, options, type, width }) => {\n if (width < REDUCED_THRESHOLD) {\n return null;\n }\n\n const itemRenderer = R.pipe(\n R.when(R.always(type === SCATTER), R.always(scatterRenderer)),\n R.when(R.always(type === TIMELINE), R.always(lineRenderer)),\n )(null);\n\n const getItemLabel = R.ifElse(\n R.equals(SCATTER),\n R.always(R.pipe(R.prop('label'), R.split(' - '), R.last)),\n R.always(R.prop('label'))\n )(type);\n\n const items = R.pipe(\n R.pathOr({}, ['share', 'focused']),\n R.mapObjIndexed((selection, key) => {\n if (R.isNil(selection)) {\n return null;\n }\n const colors = R.pathOr([], ['serie', `${key}Colors`], options);\n const nColors = R.length(colors);\n return R.pipe(\n R.addIndex(R.map)((entry, index) => {\n if (entry.value === 'uniq-dp') {\n return null;\n }\n const color = R.nth(index % nColors, colors);\n return ({ color, label: getItemLabel(entry) });\n }),\n R.filter(R.identity)\n )(selection);\n }),\n R.props(['baseline', 'highlight']),\n R.filter(R.identity),\n R.unnest\n )(data)\n\n return (<Legend items={items} itemRenderer={itemRenderer} />);\n}\n\nexport default FocusLegend;\n"],"names":["REDUCED_THRESHOLD","scatterRenderer","color","React","createElement","width","height","cx","cy","r","stroke","fill","lineRenderer","x1","y1","x2","y2","strokeWidth","FocusLegend","data","options","type","itemRenderer","R","pipe","when","always","SCATTER","TIMELINE","getItemLabel","ifElse","equals","prop","split","last","items","pathOr","mapObjIndexed","selection","key","isNil","colors","nColors","length","addIndex","map","entry","index","value","nth","label","filter","identity","props","unnest","Legend"],"mappings":";;;;;AAKO,MAAMA,iBAAiB,GAAG;AAEjC,MAAMC,eAAe,GAAGA,CAAC;AAAEC,EAAAA;AAAM,CAAC,kBAChCC,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,EAAAA,KAAK,EAAC,IAAI;AAACC,EAAAA,MAAM,EAAC;AAAI,CAAA,eACzBH,cAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQG,EAAAA,EAAE,EAAC,GAAG;AAACC,EAAAA,EAAE,EAAC,GAAG;AAACC,EAAAA,CAAC,EAAC,GAAG;AAACC,EAAAA,MAAM,EAAER,KAAM;AAACS,EAAAA,IAAI,EAAET;AAAM,CAAE,CACtD,CACN;AAED,MAAMU,YAAY,GAAGA,CAAC;AAAEV,EAAAA;AAAM,CAAC,kBAC7BC,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,EAAAA,KAAK,EAAC,IAAI;AAACC,EAAAA,MAAM,EAAC;AAAI,CAAA,eACzBH,cAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMS,EAAAA,EAAE,EAAC,GAAG;AAACC,EAAAA,EAAE,EAAC,GAAG;AAACC,EAAAA,EAAE,EAAC,IAAI;AAACC,EAAAA,EAAE,EAAC,GAAG;AAACN,EAAAA,MAAM,EAAER,KAAM;AAACe,EAAAA,WAAW,EAAC;AAAG,CAAE,CAChE,CACN;AAED,MAAMC,WAAW,GAAGA,CAAC;EAAEC,IAAI;EAAEC,OAAO;EAAEC,IAAI;AAAEhB,EAAAA;AAAM,CAAC,KAAK;EACtD,IAAIA,KAAK,GAAGL,iBAAiB,EAAE;AAC7B,IAAA,OAAO,IAAI;AACb,EAAA;EAEA,MAAMsB,YAAY,GAAGC,CAAC,CAACC,IAAI,CACzBD,CAAC,CAACE,IAAI,CAACF,CAAC,CAACG,MAAM,CAACL,IAAI,KAAKM,OAAO,CAAC,EAAEJ,CAAC,CAACG,MAAM,CAACzB,eAAe,CAAC,CAAC,EAC7DsB,CAAC,CAACE,IAAI,CAACF,CAAC,CAACG,MAAM,CAACL,IAAI,KAAKO,QAAQ,CAAC,EAAEL,CAAC,CAACG,MAAM,CAACd,YAAY,CAAC,CAC5D,CAAC,CAAC,IAAI,CAAC;EAEP,MAAMiB,YAAY,GAAGN,CAAC,CAACO,MAAM,CAC3BP,CAAC,CAACQ,MAAM,CAACJ,OAAO,CAAC,EACjBJ,CAAC,CAACG,MAAM,CAACH,CAAC,CAACC,IAAI,CAACD,CAAC,CAACS,IAAI,CAAC,OAAO,CAAC,EAAET,CAAC,CAACU,KAAK,CAAC,KAAK,CAAC,EAAEV,CAAC,CAACW,IAAI,CAAC,CAAC,EACzDX,CAAC,CAACG,MAAM,CAACH,CAAC,CAACS,IAAI,CAAC,OAAO,CAAC,CAC1B,CAAC,CAACX,IAAI,CAAC;AAEP,EAAA,MAAMc,KAAK,GAAGZ,CAAC,CAACC,IAAI,CAClBD,CAAC,CAACa,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAClCb,CAAC,CAACc,aAAa,CAAC,CAACC,SAAS,EAAEC,GAAG,KAAK;AAClC,IAAA,IAAIhB,CAAC,CAACiB,KAAK,CAACF,SAAS,CAAC,EAAE;AACtB,MAAA,OAAO,IAAI;AACb,IAAA;AACA,IAAA,MAAMG,MAAM,GAAGlB,CAAC,CAACa,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAA,EAAGG,GAAG,QAAQ,CAAC,EAAEnB,OAAO,CAAC;AAC/D,IAAA,MAAMsB,OAAO,GAAGnB,CAAC,CAACoB,MAAM,CAACF,MAAM,CAAC;AAChC,IAAA,OAAOlB,CAAC,CAACC,IAAI,CACXD,CAAC,CAACqB,QAAQ,CAACrB,CAAC,CAACsB,GAAG,CAAC,CAAC,CAACC,KAAK,EAAEC,KAAK,KAAK;AAClC,MAAA,IAAID,KAAK,CAACE,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAA,OAAO,IAAI;AACb,MAAA;MACA,MAAM9C,KAAK,GAAGqB,CAAC,CAAC0B,GAAG,CAACF,KAAK,GAAGL,OAAO,EAAED,MAAM,CAAC;MAC5C,OAAQ;QAAEvC,KAAK;QAAEgD,KAAK,EAAErB,YAAY,CAACiB,KAAK;OAAG;AAC/C,IAAA,CAAC,CAAC,EACFvB,CAAC,CAAC4B,MAAM,CAAC5B,CAAC,CAAC6B,QAAQ,CACrB,CAAC,CAACd,SAAS,CAAC;AACd,EAAA,CAAC,CAAC,EACFf,CAAC,CAAC8B,KAAK,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,EAClC9B,CAAC,CAAC4B,MAAM,CAAC5B,CAAC,CAAC6B,QAAQ,CAAC,EACpB7B,CAAC,CAAC+B,MACJ,CAAC,CAACnC,IAAI,CAAC;AAEP,EAAA,oBAAQhB,cAAA,CAAAC,aAAA,CAACmD,MAAM,EAAA;AAACpB,IAAAA,KAAK,EAAEA,KAAM;AAACb,IAAAA,YAAY,EAAEA;AAAa,GAAE,CAAC;AAC9D;;;;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import * as R from 'ramda';
|
|
3
|
+
import { getFontFromTheme } from '../utils.js';
|
|
4
|
+
import makeStyles from '../../../node_modules/@mui/styles/makeStyles/makeStyles.js';
|
|
5
|
+
|
|
6
|
+
const useStyles = makeStyles(theme => ({
|
|
7
|
+
legend: {
|
|
8
|
+
...getFontFromTheme(['chartLegend'])(theme),
|
|
9
|
+
display: 'flex',
|
|
10
|
+
flexDirection: 'row',
|
|
11
|
+
flexWrap: 'wrap',
|
|
12
|
+
justifyContent: 'flex-start'
|
|
13
|
+
},
|
|
14
|
+
entry: {
|
|
15
|
+
alignItems: 'center',
|
|
16
|
+
display: 'flex',
|
|
17
|
+
flexDirection: 'row',
|
|
18
|
+
flexWrap: 'wrap',
|
|
19
|
+
marginLeft: 10
|
|
20
|
+
},
|
|
21
|
+
text: {
|
|
22
|
+
marginLeft: 5
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
const Legend = ({
|
|
26
|
+
items,
|
|
27
|
+
itemRenderer
|
|
28
|
+
}) => {
|
|
29
|
+
if (!R.is(Function, itemRenderer) || R.isNil(items) || R.isEmpty(items)) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const classes = useStyles();
|
|
33
|
+
const legendEntries = R.addIndex(R.map)((entry, index) => {
|
|
34
|
+
const style = R.isNil(entry.color) ? {} : {
|
|
35
|
+
color: entry.color
|
|
36
|
+
};
|
|
37
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
38
|
+
className: classes.entry,
|
|
39
|
+
style: style,
|
|
40
|
+
key: index
|
|
41
|
+
}, itemRenderer(entry), /*#__PURE__*/React__default.createElement("div", {
|
|
42
|
+
className: classes.text
|
|
43
|
+
}, R.prop('label', entry)));
|
|
44
|
+
})(items);
|
|
45
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
46
|
+
className: classes.legend
|
|
47
|
+
}, legendEntries);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export { Legend as default };
|
|
51
|
+
//# sourceMappingURL=Legend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Legend.js","sources":["../../../../src/viewer/src/legends/Legend.jsx"],"sourcesContent":["import React from 'react';\nimport * as R from 'ramda';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { getFontFromTheme } from '../utils';\n\nconst useStyles = makeStyles(theme => ({\n legend: {\n ...getFontFromTheme(['chartLegend'])(theme),\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n },\n entry: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n marginLeft: 10,\n },\n text: { marginLeft: 5 }\n}));\n\nconst Legend = ({ items, itemRenderer }) => {\n if (!R.is(Function, (itemRenderer)) || R.isNil(items) || R.isEmpty(items)) {\n return null;\n }\n\n const classes = useStyles();\n\n const legendEntries = R.addIndex(R.map)(\n (entry, index) => {\n const style = R.isNil(entry.color) ? {} : { color: entry.color };\n return (\n <div className={classes.entry} style={style} key={index}>\n {itemRenderer(entry)}\n <div className={classes.text} >{R.prop('label', entry)}</div>\n </div>\n );\n }\n )(items);\n\n return (<div className={classes.legend} >{legendEntries}</div>);\n};\n\nexport default Legend;\n"],"names":["useStyles","makeStyles","theme","legend","getFontFromTheme","display","flexDirection","flexWrap","justifyContent","entry","alignItems","marginLeft","text","Legend","items","itemRenderer","R","is","Function","isNil","isEmpty","classes","legendEntries","addIndex","map","index","style","color","React","createElement","className","key","prop"],"mappings":";;;;;AAKA,MAAMA,SAAS,GAAGC,UAAU,CAACC,KAAK,KAAK;AACrCC,EAAAA,MAAM,EAAE;IACN,GAAGC,gBAAgB,CAAC,CAAC,aAAa,CAAC,CAAC,CAACF,KAAK,CAAC;AAC3CG,IAAAA,OAAO,EAAE,MAAM;AACfC,IAAAA,aAAa,EAAE,KAAK;AACpBC,IAAAA,QAAQ,EAAE,MAAM;AAChBC,IAAAA,cAAc,EAAE;GACjB;AACDC,EAAAA,KAAK,EAAE;AACLC,IAAAA,UAAU,EAAE,QAAQ;AACpBL,IAAAA,OAAO,EAAE,MAAM;AACfC,IAAAA,aAAa,EAAE,KAAK;AACpBC,IAAAA,QAAQ,EAAE,MAAM;AAChBI,IAAAA,UAAU,EAAE;GACb;AACDC,EAAAA,IAAI,EAAE;AAAED,IAAAA,UAAU,EAAE;AAAE;AACxB,CAAC,CAAC,CAAC;AAEH,MAAME,MAAM,GAAGA,CAAC;EAAEC,KAAK;AAAEC,EAAAA;AAAa,CAAC,KAAK;EAC1C,IAAI,CAACC,CAAC,CAACC,EAAE,CAACC,QAAQ,EAAGH,YAAa,CAAC,IAAIC,CAAC,CAACG,KAAK,CAACL,KAAK,CAAC,IAAIE,CAAC,CAACI,OAAO,CAACN,KAAK,CAAC,EAAE;AACzE,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,MAAMO,OAAO,GAAGrB,SAAS,EAAE;AAE3B,EAAA,MAAMsB,aAAa,GAAGN,CAAC,CAACO,QAAQ,CAACP,CAAC,CAACQ,GAAG,CAAC,CACrC,CAACf,KAAK,EAAEgB,KAAK,KAAK;AAChB,IAAA,MAAMC,KAAK,GAAGV,CAAC,CAACG,KAAK,CAACV,KAAK,CAACkB,KAAK,CAAC,GAAG,EAAE,GAAG;MAAEA,KAAK,EAAElB,KAAK,CAACkB;KAAO;IAChE,oBACEC,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;MAAKC,SAAS,EAAET,OAAO,CAACZ,KAAM;AAACiB,MAAAA,KAAK,EAAEA,KAAM;AAAEK,MAAAA,GAAG,EAAEN;AAAM,KAAA,EACtDV,YAAY,CAACN,KAAK,CAAC,eACpBmB,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;MAAKC,SAAS,EAAET,OAAO,CAACT;KAAK,EAAGI,CAAC,CAACgB,IAAI,CAAC,OAAO,EAAEvB,KAAK,CAAO,CACzD,CAAC;EAEV,CACF,CAAC,CAACK,KAAK,CAAC;EAET,oBAAQc,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKC,SAAS,EAAET,OAAO,CAAClB;AAAO,GAAA,EAAGmB,aAAmB,CAAC;AAC/D;;;;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import * as R from 'ramda';
|
|
4
|
+
import Legend from './Legend.js';
|
|
5
|
+
import { H_SYMBOL, V_SYMBOL, STACKED_BAR, STACKED_ROW } from '../../../rules/src/constants.js';
|
|
6
|
+
|
|
7
|
+
const getSymbolSeriesItems = ({
|
|
8
|
+
data,
|
|
9
|
+
options
|
|
10
|
+
}) => {
|
|
11
|
+
const symbolMarkers = R.path(['serie', 'symbol', 'markers'], options);
|
|
12
|
+
const nMarkers = R.length(symbolMarkers);
|
|
13
|
+
const markerSize = Number(R.path(['serie', 'symbol', 'markerDefaultSize'], options));
|
|
14
|
+
const strokeWidth = R.path(['serie', 'symbol', 'markerDefaultStrokeWidth'], options);
|
|
15
|
+
const size = Math.round(Math.sqrt(markerSize)) + 8;
|
|
16
|
+
return R.pipe(R.pathOr([], ['series', 0, 'symbolValues']), R.addIndex(R.map)((label, serieIndex) => {
|
|
17
|
+
const marker = R.nth(serieIndex % nMarkers, symbolMarkers);
|
|
18
|
+
return {
|
|
19
|
+
d: marker.path(markerSize),
|
|
20
|
+
transform: `translate(${size / 2}, ${size / 2}) rotate(${R.propOr(0, 'rotate', marker)})`,
|
|
21
|
+
style: R.pipe(R.mergeRight({
|
|
22
|
+
strokeWidth
|
|
23
|
+
}), R.when(s => s.fill !== s.stroke, R.assoc('fill', 'white')))(marker.style),
|
|
24
|
+
size,
|
|
25
|
+
label
|
|
26
|
+
};
|
|
27
|
+
}))(data);
|
|
28
|
+
};
|
|
29
|
+
const getStackedSeriesItems = R.pipe(R.pathOr([], ['options', 'serie', 'stacked', 'layerSeries']), R.when(s => R.length(s) === 1, R.always([])));
|
|
30
|
+
const stackedLayerRenderer = ({
|
|
31
|
+
baseColor
|
|
32
|
+
}) => /*#__PURE__*/React__default.createElement("svg", {
|
|
33
|
+
width: "21",
|
|
34
|
+
height: "14"
|
|
35
|
+
}, /*#__PURE__*/React__default.createElement("rect", {
|
|
36
|
+
x: "0",
|
|
37
|
+
y: "0",
|
|
38
|
+
width: "21",
|
|
39
|
+
height: "14",
|
|
40
|
+
fill: baseColor
|
|
41
|
+
}));
|
|
42
|
+
const symbolRenderer = ({
|
|
43
|
+
d,
|
|
44
|
+
size,
|
|
45
|
+
style,
|
|
46
|
+
transform
|
|
47
|
+
}) => /*#__PURE__*/React__default.createElement("svg", {
|
|
48
|
+
width: size,
|
|
49
|
+
height: size
|
|
50
|
+
}, /*#__PURE__*/React__default.createElement("path", _extends({
|
|
51
|
+
d: d,
|
|
52
|
+
transform: transform
|
|
53
|
+
}, style)));
|
|
54
|
+
|
|
55
|
+
// stacked entries = [{ label, color }];
|
|
56
|
+
|
|
57
|
+
const SeriesLegend = ({
|
|
58
|
+
data,
|
|
59
|
+
options,
|
|
60
|
+
type
|
|
61
|
+
}) => {
|
|
62
|
+
const itemRenderer = R.pipe(R.when(R.always(type === H_SYMBOL || type === V_SYMBOL), R.always(symbolRenderer)), R.when(R.always(type === STACKED_BAR || type === STACKED_ROW), R.always(stackedLayerRenderer)))(null);
|
|
63
|
+
if (R.isNil(itemRenderer)) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
const seriesItems = R.pipe(R.when(R.always(type === H_SYMBOL || type === V_SYMBOL), getSymbolSeriesItems), R.when(R.always(type === STACKED_BAR || type === STACKED_ROW), getStackedSeriesItems))({
|
|
67
|
+
data,
|
|
68
|
+
options
|
|
69
|
+
});
|
|
70
|
+
return /*#__PURE__*/React__default.createElement(Legend, {
|
|
71
|
+
items: seriesItems,
|
|
72
|
+
itemRenderer: itemRenderer
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export { SeriesLegend as default };
|
|
77
|
+
//# sourceMappingURL=SeriesLegend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SeriesLegend.js","sources":["../../../../src/viewer/src/legends/SeriesLegend.jsx"],"sourcesContent":["import React from 'react';\nimport * as R from 'ramda';\nimport Legend from './Legend.jsx';\nimport { H_SYMBOL, STACKED_BAR, STACKED_ROW, V_SYMBOL } from '../../../rules/src/constants';\n\nconst getSymbolSeriesItems = ({ data, options }) => {\n const symbolMarkers = R.path(['serie', 'symbol', 'markers'], options);\n const nMarkers = R.length(symbolMarkers);\n const markerSize = Number(R.path(['serie', 'symbol', 'markerDefaultSize'], options));\n const strokeWidth = R.path(['serie', 'symbol', 'markerDefaultStrokeWidth'], options);\n const size = Math.round(Math.sqrt(markerSize)) + 8;\n return R.pipe(\n R.pathOr([], ['series', 0, 'symbolValues']),\n R.addIndex(R.map)(\n (label, serieIndex) => {\n const marker = R.nth(serieIndex % nMarkers, symbolMarkers);\n return ({\n d: marker.path(markerSize),\n transform: `translate(${size / 2}, ${size / 2}) rotate(${R.propOr(0, 'rotate', marker)})`,\n style: R.pipe(\n R.mergeRight({ strokeWidth }),\n R.when(\n s => s.fill !== s.stroke,\n R.assoc('fill', 'white')\n )\n )(marker.style),\n size,\n label\n })\n }\n )\n )(data);\n};\n\nconst getStackedSeriesItems = R.pipe(\n R.pathOr([], ['options', 'serie', 'stacked', 'layerSeries']),\n R.when(s => R.length(s) === 1, R.always([]))\n);\n\nconst stackedLayerRenderer = ({ baseColor }) => (\n <svg width=\"21\" height=\"14\">\n <rect x='0' y='0' width='21' height='14' fill={baseColor} />\n </svg>\n);\n\nconst symbolRenderer = ({ d, size, style, transform }) => (\n <svg width={size} height={size}>\n <path\n d={d}\n transform={transform}\n {...style}\n />\n </svg>\n);\n\n// stacked entries = [{ label, color }];\n\nconst SeriesLegend = ({ data, options, type }) => {\n const itemRenderer = R.pipe(\n R.when(R.always(type === H_SYMBOL || type === V_SYMBOL), R.always(symbolRenderer)),\n R.when(R.always(type === STACKED_BAR || type === STACKED_ROW), R.always(stackedLayerRenderer))\n )(null);\n\n if (R.isNil(itemRenderer)) {\n return null;\n }\n\n const seriesItems = R.pipe(\n R.when(R.always(type === H_SYMBOL || type === V_SYMBOL), getSymbolSeriesItems),\n R.when(R.always(type === STACKED_BAR || type === STACKED_ROW), getStackedSeriesItems)\n )({ data, options });\n\n return (\n <Legend items={seriesItems} itemRenderer={itemRenderer} />\n );\n};\n\nexport default SeriesLegend;\n"],"names":["getSymbolSeriesItems","data","options","symbolMarkers","R","path","nMarkers","length","markerSize","Number","strokeWidth","size","Math","round","sqrt","pipe","pathOr","addIndex","map","label","serieIndex","marker","nth","d","transform","propOr","style","mergeRight","when","s","fill","stroke","assoc","getStackedSeriesItems","always","stackedLayerRenderer","baseColor","React","createElement","width","height","x","y","symbolRenderer","_extends","SeriesLegend","type","itemRenderer","H_SYMBOL","V_SYMBOL","STACKED_BAR","STACKED_ROW","isNil","seriesItems","Legend","items"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
const isChartNoData = R.anyPass([
|
|
4
|
+
R.pipe(R.path(['data', 'series']), R.isEmpty),
|
|
5
|
+
R.allPass([
|
|
6
|
+
R.pipe(R.prop('type'), R.equals('ChoroplethChart'), R.not),
|
|
7
|
+
R.pipe(R.path(['data', 'series', 0, 'datapoints']), R.anyPass([R.isNil, R.isEmpty]))
|
|
8
|
+
])
|
|
9
|
+
]);
|
|
10
|
+
|
|
11
|
+
const isChartDataNotReady = R.pipe(R.path(['data', 'series']), R.isNil);
|
|
12
|
+
|
|
13
|
+
const getFontFromTheme = customPath => R.converge(
|
|
14
|
+
R.mergeRight,
|
|
15
|
+
[R.pathOr({}, ['mixins', 'chart', 'main']), R.pathOr({}, R.concat(['mixins', 'chart'], customPath))]
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const getOptionsFromFont = R.pipe(
|
|
19
|
+
R.props(['color', 'fontFamily', 'fontSize', 'fontWeight']),
|
|
20
|
+
([color, family, size, weight]) => ({ color, size, family, weight })
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
export { getFontFromTheme, getOptionsFromFont, isChartDataNotReady, isChartNoData };
|
|
24
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/viewer/src/utils.js"],"sourcesContent":["import * as R from 'ramda';\n\nexport const isChartNoData = R.anyPass([\n R.pipe(R.path(['data', 'series']), R.isEmpty),\n R.allPass([\n R.pipe(R.prop('type'), R.equals('ChoroplethChart'), R.not),\n R.pipe(R.path(['data', 'series', 0, 'datapoints']), R.anyPass([R.isNil, R.isEmpty]))\n ])\n]);\n\nexport const isChartDataNotReady = R.pipe(R.path(['data', 'series']), R.isNil);\n\nexport const getFontFromTheme = customPath => R.converge(\n R.mergeRight,\n [R.pathOr({}, ['mixins', 'chart', 'main']), R.pathOr({}, R.concat(['mixins', 'chart'], customPath))]\n);\n\nexport const getOptionsFromFont = R.pipe(\n R.props(['color', 'fontFamily', 'fontSize', 'fontWeight']),\n ([color, family, size, weight]) => ({ color, size, family, weight })\n);\n"],"names":[],"mappings":";;AAEY,MAAC,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC;AACvC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;AAC/C,EAAE,CAAC,CAAC,OAAO,CAAC;AACZ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AAC9D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACvF,GAAG;AACH,CAAC;;AAEW,MAAC,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK;;AAEjE,MAAC,gBAAgB,GAAG,UAAU,IAAI,CAAC,CAAC,QAAQ;AACxD,EAAE,CAAC,CAAC,UAAU;AACd,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;AACrG;;AAEY,MAAC,kBAAkB,GAAG,CAAC,CAAC,IAAI;AACxC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AAC5D,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AACrE;;;;"}
|
package/package.json
CHANGED
package/src/app.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { StrictMode } from 'react';
|
|
2
|
+
import { createRoot } from 'react-dom/client';
|
|
3
|
+
|
|
4
|
+
const container = document.getElementById('root');
|
|
5
|
+
const root = createRoot(container);
|
|
6
|
+
|
|
7
|
+
const App = () => (
|
|
8
|
+
<StrictMode>
|
|
9
|
+
I'm not groot, I'm component
|
|
10
|
+
</StrictMode>
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
root.render(<App />);
|