@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,158 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { isRefAreaDimension } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
3
|
+
import { SCATTER } from '../constants';
|
|
4
|
+
import {
|
|
5
|
+
artefactToOption,
|
|
6
|
+
getDimensionsWithValues,
|
|
7
|
+
getPropertyDimension,
|
|
8
|
+
toState,
|
|
9
|
+
} from './utils';
|
|
10
|
+
import { focusStateFromNewProps } from './focus';
|
|
11
|
+
|
|
12
|
+
const getScatterDimension = getPropertyDimension('scatterDimension');
|
|
13
|
+
|
|
14
|
+
const toScatterState = (dim, xVal, yVal) => ({
|
|
15
|
+
scatterDimension: toState(dim),
|
|
16
|
+
scatterX: toState(xVal),
|
|
17
|
+
scatterY: toState(yVal),
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export const toScatterSingularity = (state) => ({
|
|
21
|
+
id: R.prop('scatterDimension', state),
|
|
22
|
+
xId: R.prop('scatterX', state),
|
|
23
|
+
yId: R.prop('scatterY', state),
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export const isScatter = (type) => type === SCATTER;
|
|
27
|
+
|
|
28
|
+
export const scatterValueOptions = ({ data, type, display }, state) => {
|
|
29
|
+
if (!isScatter(type)) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
const scatterDimension = getScatterDimension(data, state);
|
|
33
|
+
if (R.isNil(scatterDimension)) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
return R.map(
|
|
37
|
+
artefactToOption(display),
|
|
38
|
+
R.prop('values', scatterDimension)
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export const onChangeScatterDim = (props, state) => (value) => {
|
|
43
|
+
const { data } = props;
|
|
44
|
+
const dimension = getScatterDimension(data, { scatterDimension: value });
|
|
45
|
+
if (R.isNil(dimension)) {
|
|
46
|
+
return ({});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const [xVal, yVal] = R.take(2, R.prop('values', dimension));
|
|
50
|
+
|
|
51
|
+
const newScatterState = toScatterState(dimension, xVal, yVal);
|
|
52
|
+
|
|
53
|
+
return ({
|
|
54
|
+
...newScatterState,
|
|
55
|
+
...focusStateFromNewProps(
|
|
56
|
+
props,
|
|
57
|
+
toScatterSingularity(newScatterState),
|
|
58
|
+
state
|
|
59
|
+
)
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export const scatterStateValueToOption = (property, props, state) => {
|
|
64
|
+
const dimension = getScatterDimension(props.data, state);
|
|
65
|
+
if (R.isNil(dimension) || !isScatter(props.type)) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const value = R.find(
|
|
69
|
+
R.propEq('id', R.prop(property, state)),
|
|
70
|
+
R.prop('values', dimension)
|
|
71
|
+
);
|
|
72
|
+
return artefactToOption(props.display)(value);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export const onChangeScatterVal = ({ data, type }, state, valKey, otherValKey) => (value) => {
|
|
76
|
+
const options = scatterValueOptions({ data, type }, state);
|
|
77
|
+
const [matching, otherOptions] = R.partition(R.propEq('value', value), options);
|
|
78
|
+
if (R.isEmpty(matching)) {
|
|
79
|
+
return ({});
|
|
80
|
+
}
|
|
81
|
+
const stateOtherValue = R.prop(otherValKey, state);
|
|
82
|
+
return ({
|
|
83
|
+
[valKey]: value,
|
|
84
|
+
[otherValKey]: stateOtherValue === value
|
|
85
|
+
? R.prop('value', R.head(otherOptions))
|
|
86
|
+
: stateOtherValue
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
//----------------------------------------------------------------------------------------------------
|
|
91
|
+
|
|
92
|
+
export const scatterStateFromNewProps = (props, state) => {
|
|
93
|
+
const { data, type } = props;
|
|
94
|
+
const undefinedState = toScatterState(undefined, undefined, undefined);
|
|
95
|
+
if (!isScatter(type)) {
|
|
96
|
+
return undefinedState;
|
|
97
|
+
}
|
|
98
|
+
if (R.isNil(data)) {
|
|
99
|
+
return {};
|
|
100
|
+
}
|
|
101
|
+
const dimensions = getDimensionsWithValues(data);
|
|
102
|
+
if (R.isEmpty(dimensions)) {
|
|
103
|
+
return { ...undefinedState, highlight: [], baseline: [] };
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
let scatterDimension = getScatterDimension(props.data, state);
|
|
107
|
+
if (R.isNil(scatterDimension)) {
|
|
108
|
+
const refinedDimensions = R.reject(isRefAreaDimension, dimensions);
|
|
109
|
+
scatterDimension = R.head(R.isEmpty(refinedDimensions) ? dimensions : refinedDimensions);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const values = R.prop('values', scatterDimension);
|
|
113
|
+
|
|
114
|
+
const stateScatterX = R.prop('scatterX', state);
|
|
115
|
+
let stateScatterY = R.prop('scatterY', state);
|
|
116
|
+
|
|
117
|
+
if (stateScatterX === stateScatterY) {
|
|
118
|
+
stateScatterY = undefined;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
let _scatterX = undefined;
|
|
122
|
+
let _scatterY = undefined;
|
|
123
|
+
|
|
124
|
+
R.forEach(
|
|
125
|
+
(value) => {
|
|
126
|
+
if (R.prop('id', value) === stateScatterX) {
|
|
127
|
+
_scatterX = value;
|
|
128
|
+
}
|
|
129
|
+
else if (R.prop('id', value) === stateScatterY) {
|
|
130
|
+
_scatterY = value;
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
values
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
//dirty as f
|
|
137
|
+
const scatterX = R.isNil(_scatterX)
|
|
138
|
+
? R.head(R.reject(R.propEq('id', R.prop('id', _scatterY)), values))
|
|
139
|
+
: _scatterX;
|
|
140
|
+
const scatterY = R.isNil(_scatterY)
|
|
141
|
+
? R.head(R.reject(R.propEq('id', R.prop('id', scatterX)), values))
|
|
142
|
+
: _scatterY;
|
|
143
|
+
|
|
144
|
+
const scatterState = toScatterState(
|
|
145
|
+
scatterDimension,
|
|
146
|
+
scatterX,
|
|
147
|
+
scatterY,
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
return ({
|
|
151
|
+
...scatterState,
|
|
152
|
+
...focusStateFromNewProps(
|
|
153
|
+
props,
|
|
154
|
+
toScatterSingularity(scatterState),
|
|
155
|
+
state
|
|
156
|
+
)
|
|
157
|
+
});
|
|
158
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { PERCENT, STACKED_BAR, STACKED_ROW, VALUES } from '../constants';
|
|
3
|
+
import {
|
|
4
|
+
getDimensionsWithValues,
|
|
5
|
+
getGroupedDimensions,
|
|
6
|
+
getPropertyDimension,
|
|
7
|
+
toState
|
|
8
|
+
} from './utils';
|
|
9
|
+
import { splitDimensions } from '../';
|
|
10
|
+
import { focusStateFromNewProps } from './focus';
|
|
11
|
+
|
|
12
|
+
const getStackedDimension = getPropertyDimension('stackedDimension');
|
|
13
|
+
|
|
14
|
+
const stackedModes = { [PERCENT]: PERCENT, [VALUES]: VALUES };
|
|
15
|
+
|
|
16
|
+
export const isStacked = (type) => type === STACKED_BAR || type === STACKED_ROW;
|
|
17
|
+
|
|
18
|
+
const toStackedState = (dimension, mode) => ({
|
|
19
|
+
stackedDimension: toState(dimension),
|
|
20
|
+
stackedMode: mode,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export const toStackedSingularity = (state) => ({
|
|
24
|
+
id: R.prop('stackedDimension', state),
|
|
25
|
+
mode: R.prop('stackedMode', state),
|
|
26
|
+
limit: 5
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export const onChangeStackedDimension = ({ data }, state) => (value) => {
|
|
30
|
+
const dimension = getStackedDimension(data, { stackedDimension: value });
|
|
31
|
+
if (R.isNil(dimension)) {
|
|
32
|
+
return ({});
|
|
33
|
+
}
|
|
34
|
+
return ({
|
|
35
|
+
stackedDimension: toState(dimension),
|
|
36
|
+
highlight: [],
|
|
37
|
+
baseline: [],
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export const stackedModeOptions = [{ value: VALUES }, { value: PERCENT }];
|
|
42
|
+
|
|
43
|
+
export const isStackedDimActive = ({ data, type }) => {
|
|
44
|
+
const { values } = splitDimensions(data);
|
|
45
|
+
if (R.length(values) < 2) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return isStacked(type);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const onChangeStackedMode = (value) => R.has(value, stackedModes)
|
|
52
|
+
? ({ stackedMode: value })
|
|
53
|
+
: ({});
|
|
54
|
+
|
|
55
|
+
export const stackedStateFromNewProps = (props, state) => {
|
|
56
|
+
const { data, type } = props;
|
|
57
|
+
if (!isStacked(type)) {
|
|
58
|
+
return toStackedState(undefined, undefined);
|
|
59
|
+
}
|
|
60
|
+
if (R.isNil(data)) {
|
|
61
|
+
return {};
|
|
62
|
+
}
|
|
63
|
+
const dimensions = getDimensionsWithValues(data);
|
|
64
|
+
if (R.isEmpty(dimensions)) {
|
|
65
|
+
return { ...toStackedState(undefined, undefined), baseline: [], highlight: [] };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
let dimension = getStackedDimension(data, state);
|
|
69
|
+
if (R.isNil(dimension)) {
|
|
70
|
+
const { value, values } = splitDimensions(data);
|
|
71
|
+
if (R.length(values) === 1) {
|
|
72
|
+
dimension = R.head(value);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const { area, time, other } = getGroupedDimensions(data);
|
|
76
|
+
if (!R.isNil(area) && !R.isEmpty(area)) {
|
|
77
|
+
dimension = R.head(area);
|
|
78
|
+
}
|
|
79
|
+
else if (!R.isNil(time) && !R.isEmpty(time)) {
|
|
80
|
+
dimension = R.head(time)
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
dimension = R.head(other);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const _mode = R.prop('stackedMode', state);
|
|
88
|
+
const mode = R.has(_mode, stackedModes) ? _mode : VALUES;
|
|
89
|
+
const stackedState = toStackedState(dimension, mode);
|
|
90
|
+
return ({
|
|
91
|
+
...stackedState,
|
|
92
|
+
...focusStateFromNewProps(
|
|
93
|
+
props,
|
|
94
|
+
toStackedSingularity(stackedState),
|
|
95
|
+
state
|
|
96
|
+
)
|
|
97
|
+
});
|
|
98
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { extractSdmxArtefacts } from '../';
|
|
3
|
+
import { H_SYMBOL, V_SYMBOL } from '../constants';
|
|
4
|
+
import {
|
|
5
|
+
getDimensionsWithValues,
|
|
6
|
+
getGroupedDimensions,
|
|
7
|
+
getPropertyDimension,
|
|
8
|
+
toState
|
|
9
|
+
} from './utils';
|
|
10
|
+
import { focusStateFromNewProps } from './focus';
|
|
11
|
+
|
|
12
|
+
const getSymbolDimension = getPropertyDimension('symbolDimension');
|
|
13
|
+
|
|
14
|
+
export const isSymbol = (type) => (type === H_SYMBOL || type === V_SYMBOL);
|
|
15
|
+
|
|
16
|
+
const toSymbolState = (dimension) => ({
|
|
17
|
+
symbolDimension: toState(dimension)
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export const toSymbolSingularity = (data, state) => {
|
|
21
|
+
const symbolDimension = getSymbolDimension(data, state);
|
|
22
|
+
const res = ({
|
|
23
|
+
id: R.isNil(symbolDimension) ? undefined : R.prop('id', symbolDimension),
|
|
24
|
+
serie: R.pipe(
|
|
25
|
+
R.prop('values'),
|
|
26
|
+
values => R.isNil(values) ? [] : values,
|
|
27
|
+
R.take(5)
|
|
28
|
+
)(symbolDimension),
|
|
29
|
+
});
|
|
30
|
+
return res;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const symbolStateFromNewProps = (props, state) => {
|
|
34
|
+
const { data, type } = props;
|
|
35
|
+
if (!isSymbol(type)) {
|
|
36
|
+
return toSymbolState(undefined);
|
|
37
|
+
}
|
|
38
|
+
if (R.isNil(data)) {
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
const dimensions = getDimensionsWithValues(data);
|
|
42
|
+
if (R.isEmpty(dimensions)) {
|
|
43
|
+
return { ...toSymbolState(undefined), baseline: [], highlight: [] };
|
|
44
|
+
}
|
|
45
|
+
let symbolDimension = getSymbolDimension(data, state);
|
|
46
|
+
if (R.isNil(symbolDimension)) {
|
|
47
|
+
const { area, other, time } = getGroupedDimensions(data);
|
|
48
|
+
if (!R.isNil(other) && !R.isEmpty(other)) {
|
|
49
|
+
symbolDimension = R.head(other);
|
|
50
|
+
}
|
|
51
|
+
else if (!R.isNil(time) && !R.isEmpty(time)) {
|
|
52
|
+
symbolDimension = R.head(time);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
symbolDimension = R.head(area);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const symbolState = toSymbolState(symbolDimension);
|
|
59
|
+
return ({
|
|
60
|
+
...symbolState,
|
|
61
|
+
...focusStateFromNewProps(
|
|
62
|
+
props,
|
|
63
|
+
toSymbolSingularity(data, symbolState),
|
|
64
|
+
state
|
|
65
|
+
)
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export const onChangeSymbolDim = ({ data }) => (option) => {
|
|
70
|
+
const dimension = getSymbolDimension(data, { symbolDimension: option });
|
|
71
|
+
if (R.isNil(dimension)) {
|
|
72
|
+
return ({});
|
|
73
|
+
}
|
|
74
|
+
return ({
|
|
75
|
+
...toSymbolState(dimension),
|
|
76
|
+
highlight: [],
|
|
77
|
+
baseline: [],
|
|
78
|
+
});
|
|
79
|
+
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import {
|
|
2
|
+
equals,
|
|
3
|
+
find,
|
|
4
|
+
groupBy,
|
|
5
|
+
has,
|
|
6
|
+
head,
|
|
7
|
+
is,
|
|
8
|
+
isNil,
|
|
9
|
+
length,
|
|
10
|
+
map,
|
|
11
|
+
not,
|
|
12
|
+
omit,
|
|
13
|
+
pipe,
|
|
14
|
+
prop,
|
|
15
|
+
propEq,
|
|
16
|
+
} from 'ramda';
|
|
17
|
+
import { isRefAreaDimension, isTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
18
|
+
import { extractSdmxArtefacts, parseDisplay, splitDimensions } from '../';
|
|
19
|
+
import { CHORO, STACKED_BAR, STACKED_ROW, TYPES } from '../constants';
|
|
20
|
+
import { dimensionValueDisplay } from '../dimension-utils';
|
|
21
|
+
|
|
22
|
+
export const isNumber = (input) => {
|
|
23
|
+
const value = Number(input);
|
|
24
|
+
return not(isNil(value) || isNaN(value));
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const isPositiveNumber = (input) => {
|
|
28
|
+
return (isNumber(input) && Number(input) >= 0);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const isNaturalInt = value => isNil(value) || /^\d+$/.test(String(value));
|
|
32
|
+
|
|
33
|
+
export const isInt = value => isNil(value) || /^-?\d+$/.test(String(value));
|
|
34
|
+
|
|
35
|
+
export const isChart = (type) => has(type, TYPES);
|
|
36
|
+
|
|
37
|
+
export const hasFocus = (type) => has(type, omit([CHORO], TYPES));
|
|
38
|
+
|
|
39
|
+
export const getDimensionsWithValues = (data) => pipe(
|
|
40
|
+
splitDimensions,
|
|
41
|
+
prop('values'),
|
|
42
|
+
)(data);
|
|
43
|
+
|
|
44
|
+
export const toState = (artefact) => prop('id', artefact);
|
|
45
|
+
|
|
46
|
+
export const getPropertyDimension = (property) => (data, state) => {
|
|
47
|
+
const statePropertyDimensionId = prop(property, state);
|
|
48
|
+
const { dimensions } = extractSdmxArtefacts(data);
|
|
49
|
+
return find(
|
|
50
|
+
propEq('id', statePropertyDimensionId),
|
|
51
|
+
dimensions
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const getGroupedDimensions = pipe(
|
|
56
|
+
getDimensionsWithValues,
|
|
57
|
+
groupBy(
|
|
58
|
+
dimension => {
|
|
59
|
+
if (isRefAreaDimension(dimension)) {
|
|
60
|
+
return 'area';
|
|
61
|
+
}
|
|
62
|
+
if (isTimePeriodDimension(dimension)) {
|
|
63
|
+
return 'time';
|
|
64
|
+
}
|
|
65
|
+
return 'other';
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
export const optionParser = option => pipe(
|
|
71
|
+
option => is(Array, option) ? head(option) : option,
|
|
72
|
+
option => is(Object, option) ? prop('value', option) : option,
|
|
73
|
+
option => is(String, option) ? option : undefined
|
|
74
|
+
)(option);
|
|
75
|
+
|
|
76
|
+
export const optionsParser = selection => pipe(
|
|
77
|
+
selection => is(Array, selection) ? selection : [selection],
|
|
78
|
+
selection => map(optionParser, selection)
|
|
79
|
+
)(selection);
|
|
80
|
+
|
|
81
|
+
export const artefactToOption = (display) => (artefact) => isNil(artefact)
|
|
82
|
+
? undefined
|
|
83
|
+
: {
|
|
84
|
+
label: dimensionValueDisplay(parseDisplay(display))(artefact),
|
|
85
|
+
value: prop('id', artefact)
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const dimensionWithValuesToOptions = ({ data, display }) => pipe(
|
|
89
|
+
getDimensionsWithValues,
|
|
90
|
+
map(artefactToOption(display))
|
|
91
|
+
)(data);
|
|
92
|
+
|
|
93
|
+
export const chartDimensionToOption = (property) => ({ data, display }, state) => pipe(
|
|
94
|
+
getPropertyDimension(property),
|
|
95
|
+
artefactToOption(display)
|
|
96
|
+
)(data, state);
|
|
97
|
+
|
|
98
|
+
export const chartDimensionOptions = ({ data, type, display }, typeValidator) => {
|
|
99
|
+
if (!typeValidator(type)) {
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
const dimensions = prop('values', splitDimensions(data));
|
|
103
|
+
if ((equals(type, STACKED_BAR) || equals(type, STACKED_ROW)) && length(dimensions) === 1) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
return map(
|
|
107
|
+
artefactToOption(display),
|
|
108
|
+
dimensions
|
|
109
|
+
);
|
|
110
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export const LAYOUT_ROW = 'LAYOUT_ROW';
|
|
4
|
+
export const LAYOUT_COLUMN = 'LAYOUT_COLUMN';
|
|
5
|
+
export const LAYOUT_ROW_SECTION = 'LAYOUT_ROW_SECTION';
|
|
6
|
+
|
|
7
|
+
const ROWS = 'rows';
|
|
8
|
+
const HEADER = 'header';
|
|
9
|
+
const SECTIONS = 'sections';
|
|
10
|
+
|
|
11
|
+
const ORDER = 'ORDER';
|
|
12
|
+
const NOT_DISPLAYED = 'NOT_DISPLAYED';
|
|
13
|
+
|
|
14
|
+
const getType = R.propOr({}, 'type');
|
|
15
|
+
const getIds = (stringIds = '') => R.pipe(
|
|
16
|
+
R.append(R.split(',', stringIds)),
|
|
17
|
+
R.flatten
|
|
18
|
+
);
|
|
19
|
+
const getPivot = (key, stringIds) => R.over(R.lensProp(key), getIds(stringIds));
|
|
20
|
+
|
|
21
|
+
export const setAnnotationsLayout = (stringIds, layout) => R.reduce((acc, annotation) => {
|
|
22
|
+
if (R.equals(getType(annotation), LAYOUT_ROW)) return getPivot(ROWS, stringIds)(acc);
|
|
23
|
+
if (R.equals(getType(annotation), LAYOUT_COLUMN)) return getPivot(HEADER, stringIds)(acc);
|
|
24
|
+
if (R.equals(getType(annotation), LAYOUT_ROW_SECTION)) return getPivot(SECTIONS, stringIds)(acc);
|
|
25
|
+
return acc;
|
|
26
|
+
}, layout);
|
|
27
|
+
|
|
28
|
+
export const getRelationnalAnnotations = annotationIndexes => annotations => R.map(annotationIndex =>
|
|
29
|
+
R.propOr({}, annotationIndex)(annotations)
|
|
30
|
+
)(annotationIndexes);
|
|
31
|
+
|
|
32
|
+
export const hiddenFormat = { isHidden: true }
|
|
33
|
+
|
|
34
|
+
export const getIsHidden = annotations => R.pipe(
|
|
35
|
+
R.find(R.propEq('type', NOT_DISPLAYED)),
|
|
36
|
+
R.complement(R.isNil)
|
|
37
|
+
)(annotations);
|
|
38
|
+
|
|
39
|
+
export const getFullName = R.identity;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import numeral from 'numeral';
|
|
3
|
+
|
|
4
|
+
const isValidNumber = R.both(R.is(Number), R.complement(R.equals(NaN)));
|
|
5
|
+
|
|
6
|
+
export const getCellValue = (observation) => {
|
|
7
|
+
const value = R.prop('value', observation);
|
|
8
|
+
if (R.is(Boolean, value)) {
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
if (R.is(String, value)) {
|
|
12
|
+
const monthMatch = value.match(/^\-\-([\d]{2})$/);
|
|
13
|
+
if (R.is(Array, monthMatch)) {
|
|
14
|
+
return R.nth(1, monthMatch);
|
|
15
|
+
}
|
|
16
|
+
const monthDayMatch = value.match(/^\-\-([\d]{2}\-[\d]{2})$/);
|
|
17
|
+
if (R.is(Array, monthDayMatch)) {
|
|
18
|
+
return R.nth(1, monthDayMatch);
|
|
19
|
+
}
|
|
20
|
+
const dayMatch = value.match(/^\-\-\-([\d]{2})$/);
|
|
21
|
+
if (R.is(Array, dayMatch)) {
|
|
22
|
+
return R.nth(1, dayMatch);
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
const scale = Number(observation.prefscale);
|
|
27
|
+
const formatScale = R.ifElse(
|
|
28
|
+
R.always(isValidNumber(scale)),
|
|
29
|
+
value => numeral(value).multiply(Math.pow(10, -1 * Number(scale))).value(),
|
|
30
|
+
R.identity
|
|
31
|
+
);
|
|
32
|
+
const formatSeparator = value => numeral(value).format(`0,0.[0000000]`);
|
|
33
|
+
const decimals = Number(observation.decimals);
|
|
34
|
+
const formatDecimals = R.ifElse(
|
|
35
|
+
R.always(isValidNumber(decimals)),
|
|
36
|
+
value => numeral(value).format(
|
|
37
|
+
R.ifElse(R.equals(0), R.always('0,0'), d => `0,0.${R.join('', R.times(R.always('0'), d))}`)(decimals)
|
|
38
|
+
),
|
|
39
|
+
formatSeparator
|
|
40
|
+
);
|
|
41
|
+
const res = R.ifElse(
|
|
42
|
+
isValidNumber,
|
|
43
|
+
R.pipe(
|
|
44
|
+
formatScale,
|
|
45
|
+
formatDecimals,
|
|
46
|
+
),
|
|
47
|
+
R.always('..')
|
|
48
|
+
)(observation.value);
|
|
49
|
+
return res;
|
|
50
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getCellValue } from './factories/getCellValue';
|