@sis-cc/dotstatsuite-components 22.0.1 → 22.0.3
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 +379 -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 +400 -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,13 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export const getDimensionValuesIndexes = (values) => R.addIndex(R.reduce)(
|
|
4
|
+
(acc, value, position) => {
|
|
5
|
+
const sdmxIndex = value.__index;
|
|
6
|
+
return R.over(
|
|
7
|
+
R.lensProp(String(sdmxIndex)),
|
|
8
|
+
R.ifElse(R.isNil, R.always([position]), R.append(position))
|
|
9
|
+
)(acc);
|
|
10
|
+
},
|
|
11
|
+
{},
|
|
12
|
+
values
|
|
13
|
+
);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export const getHCodelistsRefs = annotations => R.reduce(
|
|
4
|
+
(acc, annotation) => {
|
|
5
|
+
if (annotation.type !== 'HIER_CONTEXT') {
|
|
6
|
+
return acc;
|
|
7
|
+
}
|
|
8
|
+
const references = annotation.text || annotation.title || '';
|
|
9
|
+
const refs = R.pipe(
|
|
10
|
+
R.split(','),
|
|
11
|
+
R.reduce(
|
|
12
|
+
(acc2, ref) => {
|
|
13
|
+
const match = ref.match(/([\w@_.]+):([\w@_.]+):([\w@_.]+)\(([\d.]+)\).([\w@_.]+)$/);
|
|
14
|
+
if (R.isNil(match)) {
|
|
15
|
+
return acc2;
|
|
16
|
+
}
|
|
17
|
+
const [codelistId, agencyId, code, version, hierarchy] = R.tail(match);
|
|
18
|
+
return R.assoc(codelistId, { agencyId, code, version, hierarchy, codelistId }, acc2);
|
|
19
|
+
},
|
|
20
|
+
{}
|
|
21
|
+
)
|
|
22
|
+
)(references);
|
|
23
|
+
return R.mergeRight(acc, refs);
|
|
24
|
+
},
|
|
25
|
+
{},
|
|
26
|
+
annotations,
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
export const getHCodelistsRefsInData = sdmxJson => {
|
|
30
|
+
const annotations = R.pathOr([], ['data', 'structure', 'annotations'], sdmxJson);
|
|
31
|
+
return getHCodelistsRefs(annotations);
|
|
32
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { dimensionValueDisplay } from '../../rules/src';
|
|
3
|
+
import { combinedValuesDisplay } from './combinedValuesDisplay';
|
|
4
|
+
import { REJECTED_VALUE_IDS } from './constants';
|
|
5
|
+
|
|
6
|
+
export const getHeaderCombinations = (combinations, dimensions, attributes, display) => {
|
|
7
|
+
const indexedDimensions = R.indexBy(R.prop('id'), dimensions);
|
|
8
|
+
const indexedAttributes = R.indexBy(R.prop('id'), attributes);
|
|
9
|
+
return R.reduce(
|
|
10
|
+
(acc, comb) => {
|
|
11
|
+
if (!R.prop('header', comb) || !R.propOr(true, 'display', comb)) {
|
|
12
|
+
return acc;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const header = `${dimensionValueDisplay(display)(comb)}:`;
|
|
16
|
+
|
|
17
|
+
const label = R.pipe(
|
|
18
|
+
R.reduce(
|
|
19
|
+
(_acc, concept) => {
|
|
20
|
+
const artefact = R.has(concept, indexedDimensions)
|
|
21
|
+
? R.prop(concept, indexedDimensions)
|
|
22
|
+
: R.prop(concept, indexedAttributes);
|
|
23
|
+
if (R.isNil(artefact)) {
|
|
24
|
+
return _acc;
|
|
25
|
+
}
|
|
26
|
+
const value = R.path(['values', 0], artefact);
|
|
27
|
+
if (R.isNil(value)) {
|
|
28
|
+
return _acc;
|
|
29
|
+
}
|
|
30
|
+
if (R.has(concept, indexedAttributes) && (!R.propOr(true, 'display', value)
|
|
31
|
+
|| !R.propOr(true, 'artefact', value) || R.includes(value.id, REJECTED_VALUE_IDS))) {
|
|
32
|
+
return _acc;
|
|
33
|
+
}
|
|
34
|
+
return R.append(value, _acc);
|
|
35
|
+
},
|
|
36
|
+
[]
|
|
37
|
+
),
|
|
38
|
+
values => combinedValuesDisplay(display, values)
|
|
39
|
+
)(comb.concepts || []);
|
|
40
|
+
if (R.isEmpty(label)) {
|
|
41
|
+
return acc;
|
|
42
|
+
}
|
|
43
|
+
return R.append({ header, label }, acc);
|
|
44
|
+
},
|
|
45
|
+
[],
|
|
46
|
+
combinations,
|
|
47
|
+
);
|
|
48
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { getFlagsAndNotes } from './table/getFlagsAndNotes';
|
|
3
|
+
import { dimensionValueDisplay } from '../../rules/src/';
|
|
4
|
+
|
|
5
|
+
export const getHeaderSubtitle = (dimensions, combinations, customAttributes, display, microdataDimension) => {
|
|
6
|
+
const combinationsConepts = R.pipe(R.pluck('concepts'), R.unnest)(combinations);
|
|
7
|
+
const DEFAULT_REJECTED_SUBTITLE_IDS = ['_L', '_T', '_Z'];
|
|
8
|
+
|
|
9
|
+
return R.reduce(
|
|
10
|
+
(acc, dim) => {
|
|
11
|
+
if (!R.propOr(true, 'display', dim) || R.propEq('id', microdataDimension, dim)
|
|
12
|
+
|| R.includes(dim.id, combinationsConepts)) {
|
|
13
|
+
return acc;
|
|
14
|
+
}
|
|
15
|
+
const value = R.path(['values', 0], dim);
|
|
16
|
+
if (!R.propOr(true, 'display', value) || R.includes(value.id, DEFAULT_REJECTED_SUBTITLE_IDS)) {
|
|
17
|
+
return acc;
|
|
18
|
+
}
|
|
19
|
+
const header = `${dimensionValueDisplay(display)(dim)}:`;
|
|
20
|
+
const label = dimensionValueDisplay(display)(value);
|
|
21
|
+
const flags = R.pipe(
|
|
22
|
+
getFlagsAndNotes,
|
|
23
|
+
R.map(entry => ({
|
|
24
|
+
code: entry.code,
|
|
25
|
+
header: `${dimensionValueDisplay(display)(entry)}:`,
|
|
26
|
+
label: dimensionValueDisplay(display)(entry.value),
|
|
27
|
+
})),
|
|
28
|
+
)(dim.attrValues, customAttributes);
|
|
29
|
+
return R.append({ header, label, flags }, acc);
|
|
30
|
+
},
|
|
31
|
+
[],
|
|
32
|
+
dimensions,
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { dimensionValueDisplay } from '../../rules/src';
|
|
3
|
+
import { getFlagsAndNotes } from './table/getFlagsAndNotes';
|
|
4
|
+
|
|
5
|
+
export const getHeaderTitle = (dataflow, attributes, display, customAttributes) => ({
|
|
6
|
+
label: dimensionValueDisplay(display)(dataflow),
|
|
7
|
+
flags: R.pipe(
|
|
8
|
+
getFlagsAndNotes,
|
|
9
|
+
R.map(entry => ({
|
|
10
|
+
code: entry.code,
|
|
11
|
+
header: `${dimensionValueDisplay(display)(entry)}:`,
|
|
12
|
+
label: dimensionValueDisplay(display)(entry.value),
|
|
13
|
+
})),
|
|
14
|
+
)(attributes, customAttributes),
|
|
15
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export const getMSDInformations = msdJson => {
|
|
4
|
+
const attributesDefinitions = R.pathOr([], ['data', 'metadataStructures', 0, 'metadataStructureComponents', 'reportStructures', 0, 'metadataAttributes'], msdJson);
|
|
5
|
+
const indexedConcepts = R.pipe(R.pathOr([], ['data', 'conceptSchemes', 0, 'concepts']), R.indexBy(R.prop('id')))(msdJson);
|
|
6
|
+
|
|
7
|
+
const parseAttributes = (parent) => R.reduce(
|
|
8
|
+
(acc, attribute) => {
|
|
9
|
+
const id = attribute.id;
|
|
10
|
+
const name = R.path([id, 'name'], indexedConcepts);
|
|
11
|
+
const hierarchicalId = parent === '#ROOT' ? id : `${parent}.${id}`;
|
|
12
|
+
const format = R.path(['localRepresentation', 'textFormat', 'textType'], attribute);
|
|
13
|
+
if (R.has('metadataAttributes', attribute)) {
|
|
14
|
+
const collection = parseAttributes(hierarchicalId)(attribute.metadataAttributes);
|
|
15
|
+
return ({ ...acc, ...collection, [hierarchicalId]: { format, parent, id, name } });
|
|
16
|
+
}
|
|
17
|
+
return R.assoc(hierarchicalId, { format, parent, id, name }, acc);
|
|
18
|
+
},
|
|
19
|
+
{}
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
return ({ attributes: parseAttributes('#ROOT')(attributesDefinitions) });
|
|
23
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { getFlagsAndNotes } from './table/getFlagsAndNotes';
|
|
3
|
+
|
|
4
|
+
export const getManyValuesDimensions = (dimensions, attributesSeries, customAttributes, combinations) => {
|
|
5
|
+
const combConceptsIds = R.pipe(R.pluck('concepts'), R.unnest)(combinations);
|
|
6
|
+
return R.reduce(
|
|
7
|
+
(acc, dim) => {
|
|
8
|
+
if (dim.header || dim.rejected) {
|
|
9
|
+
return acc;
|
|
10
|
+
}
|
|
11
|
+
const enhancedValues = R.map(val => {
|
|
12
|
+
const attrSeries = R.propOr({}, `${dim.id}=${val.id}`, attributesSeries);
|
|
13
|
+
if (R.isEmpty(attrSeries)) {
|
|
14
|
+
return val;
|
|
15
|
+
}
|
|
16
|
+
const flags = getFlagsAndNotes(attrSeries, customAttributes);
|
|
17
|
+
const hasAdvancedAttributes = R.pipe(
|
|
18
|
+
R.omit(
|
|
19
|
+
R.unnest([
|
|
20
|
+
customAttributes.flags || [],
|
|
21
|
+
customAttributes.notes || [],
|
|
22
|
+
combConceptsIds,
|
|
23
|
+
]),
|
|
24
|
+
),
|
|
25
|
+
R.complement(R.isEmpty),
|
|
26
|
+
)(attrSeries);
|
|
27
|
+
return { ...val, flags, hasAdvancedAttributes };
|
|
28
|
+
}, dim.values);
|
|
29
|
+
return R.append(R.assoc('values', enhancedValues, dim), acc);
|
|
30
|
+
},
|
|
31
|
+
[],
|
|
32
|
+
dimensions,
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export const getMetadataCoordinates = (sdmxJson) => {
|
|
4
|
+
const dimensions = R.pathOr([], ['data', 'structure', 'dimensions', 'observation'], sdmxJson);
|
|
5
|
+
const annotations = R.pathOr([], ['data', 'structure', 'annotations'], sdmxJson);
|
|
6
|
+
const metadataAvailKeys = R.pipe(
|
|
7
|
+
R.pathOr([], ['data', 'dataSets', 0, 'dimensionGroupAttributes']),
|
|
8
|
+
R.map(indexes => R.props(indexes, annotations)),
|
|
9
|
+
R.filter(R.find(a => a && R.propEq('type', 'HAS_METADATA', a))),
|
|
10
|
+
R.keys
|
|
11
|
+
)(sdmxJson);
|
|
12
|
+
|
|
13
|
+
return R.map(
|
|
14
|
+
key => {
|
|
15
|
+
const indexes = R.split(':', key);
|
|
16
|
+
return R.addIndex(R.reduce)(
|
|
17
|
+
(acc, vIndex, dimIndex) => {
|
|
18
|
+
if (R.isNil(vIndex) || R.isEmpty(vIndex)) {
|
|
19
|
+
return acc;
|
|
20
|
+
}
|
|
21
|
+
const dim = R.nth(dimIndex, dimensions);
|
|
22
|
+
if (R.isNil(dim) || R.prop('rejected', dim)) {
|
|
23
|
+
return acc;
|
|
24
|
+
}
|
|
25
|
+
const val = R.path(['values', Number(vIndex)], dim);
|
|
26
|
+
if (R.isNil(val)) {
|
|
27
|
+
return acc;
|
|
28
|
+
}
|
|
29
|
+
return R.assoc(dim.id, val.id, acc);
|
|
30
|
+
},
|
|
31
|
+
{},
|
|
32
|
+
indexes
|
|
33
|
+
);
|
|
34
|
+
},
|
|
35
|
+
metadataAvailKeys
|
|
36
|
+
);
|
|
37
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export const getDataflowMetadataStructure = sdmxJson => {
|
|
4
|
+
const annotations = R.pathOr([], ['data', 'stucture', 'annotations'], sdmxJson);
|
|
5
|
+
const dataSetAnnotIndexes = R.pathOr([], ['data', 'dataSets', 0, 'annotations'], sdmxJson);
|
|
6
|
+
const dataSetAnnotations = R.props(dataSetAnnotIndexes, annotations);
|
|
7
|
+
const metadataAnnotation = R.find(R.propEq('type', 'METADATA'), dataSetAnnotations);
|
|
8
|
+
if (!metadataAnnotation) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return R.pipe(
|
|
12
|
+
R.propOr('', 'title'),
|
|
13
|
+
R.split('='),
|
|
14
|
+
R.last,
|
|
15
|
+
|
|
16
|
+
)(metadataAnnotation);
|
|
17
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { getNotDisplayedCombinations } from '@sis-cc/dotstatsuite-sdmxjs';
|
|
3
|
+
|
|
4
|
+
const getNotDisplayedValues = annot => {
|
|
5
|
+
if (R.isNil(annot)) {
|
|
6
|
+
return {};
|
|
7
|
+
}
|
|
8
|
+
const ids = R.split(',', annot.title || '');
|
|
9
|
+
return R.reduce(
|
|
10
|
+
(acc, entry) => {
|
|
11
|
+
if (R.isEmpty(entry)) {
|
|
12
|
+
return acc;
|
|
13
|
+
}
|
|
14
|
+
const parsed = R.split('=', entry);
|
|
15
|
+
const dimensionId = parsed[0];
|
|
16
|
+
if (R.length(parsed) === 1) {
|
|
17
|
+
return R.assoc(dimensionId, dimensionId, acc);
|
|
18
|
+
}
|
|
19
|
+
const values = R.split('+', parsed[1]);
|
|
20
|
+
if (R.length(values) === 1 && R.isEmpty(values[0])) {
|
|
21
|
+
return R.assoc(dimensionId, dimensionId, acc);
|
|
22
|
+
}
|
|
23
|
+
return R.reduce(
|
|
24
|
+
(_acc, val) => {
|
|
25
|
+
let _val = val
|
|
26
|
+
if (R.isEmpty(val)) {
|
|
27
|
+
return _acc;
|
|
28
|
+
}
|
|
29
|
+
if (R.test('/[()]/')) {
|
|
30
|
+
_val = R.replace(/[()]/g, '')(val)
|
|
31
|
+
}
|
|
32
|
+
const key = R.isEmpty(_val) ? dimensionId : `${dimensionId}.${_val}`;
|
|
33
|
+
return R.assoc(key, key, _acc);
|
|
34
|
+
},
|
|
35
|
+
acc,
|
|
36
|
+
values
|
|
37
|
+
);
|
|
38
|
+
},
|
|
39
|
+
{},
|
|
40
|
+
ids
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const getNotDisplayedIds = (annotations) => R.pipe(
|
|
45
|
+
R.find(R.propEq('type', 'NOT_DISPLAYED')),
|
|
46
|
+
R.converge((hiddenValues, hiddenCombinations) => ({
|
|
47
|
+
hiddenValues,
|
|
48
|
+
hiddenCombinations
|
|
49
|
+
}), [
|
|
50
|
+
getNotDisplayedValues,
|
|
51
|
+
(annot={ title: '' }) => getNotDisplayedCombinations(annot)
|
|
52
|
+
])
|
|
53
|
+
)(annotations);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { REJECTED_VALUE_IDS } from './constants';
|
|
3
|
+
|
|
4
|
+
export const getOneValueDimensions = (dimensions, attributes) => {
|
|
5
|
+
const indexedRelevantAttributes = R.reduce(
|
|
6
|
+
(acc, attr) => {
|
|
7
|
+
if (!attr.header || !R.propOr(true, 'display', attr) || R.length(attr.relationship || []) !== 1) {
|
|
8
|
+
return acc;
|
|
9
|
+
}
|
|
10
|
+
const value = R.path(['values', 0], attr);
|
|
11
|
+
if (R.isNil(value) || !R.propOr(true, 'display', value) || R.includes(R.prop('id', value), REJECTED_VALUE_IDS)) {
|
|
12
|
+
return acc;
|
|
13
|
+
}
|
|
14
|
+
const dim = R.head(attr.relationship);
|
|
15
|
+
return R.over(R.lensProp(dim), (values = {}) => ({
|
|
16
|
+
...values,
|
|
17
|
+
[attr.id]: { ...attr, value },
|
|
18
|
+
}))(acc);
|
|
19
|
+
},
|
|
20
|
+
{},
|
|
21
|
+
attributes,
|
|
22
|
+
);
|
|
23
|
+
return R.reduce(
|
|
24
|
+
(acc, dim) => {
|
|
25
|
+
if (!dim.header) {
|
|
26
|
+
return acc;
|
|
27
|
+
}
|
|
28
|
+
const attrValues = R.propOr({}, dim.id, indexedRelevantAttributes);
|
|
29
|
+
return R.append({ ...dim, attrValues }, acc);
|
|
30
|
+
},
|
|
31
|
+
[],
|
|
32
|
+
dimensions,
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export const getSeriesCombinations = (combinations, oneValuesDimensions) => {
|
|
4
|
+
const indexedValues = R.reduce(
|
|
5
|
+
(acc, dim) => {
|
|
6
|
+
const value = R.head(dim.values);
|
|
7
|
+
return R.assoc(dim.id, value, acc);
|
|
8
|
+
},
|
|
9
|
+
{},
|
|
10
|
+
oneValuesDimensions
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
return R.reduce(
|
|
14
|
+
(acc, comb) => {
|
|
15
|
+
if (!R.prop('series', comb)) {
|
|
16
|
+
return acc;
|
|
17
|
+
}
|
|
18
|
+
const fixedDimValues = R.pick(comb.concepts, indexedValues);
|
|
19
|
+
return R.append({ ...comb, fixedDimValues }, acc);
|
|
20
|
+
},
|
|
21
|
+
[],
|
|
22
|
+
combinations
|
|
23
|
+
);
|
|
24
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export const hasCellMetadata = (metadataCoordinates, cellCoordinates) => {
|
|
4
|
+
if (R.propOr('OBS_VALUE', 'OBS_ATTRIBUTES', cellCoordinates) !== 'OBS_VALUE') {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
return R.pipe(
|
|
8
|
+
R.find(coordinates => {
|
|
9
|
+
const mergedCoord = R.mergeLeft(coordinates, cellCoordinates);
|
|
10
|
+
return !R.isEmpty(coordinates) && R.equals(mergedCoord, cellCoordinates);
|
|
11
|
+
}),
|
|
12
|
+
R.complement(R.isNil)
|
|
13
|
+
)(metadataCoordinates);
|
|
14
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
const uniq = R.pipe(
|
|
4
|
+
R.reduce(
|
|
5
|
+
({ ids, list }, id) => {
|
|
6
|
+
if (R.has(id, list)) {
|
|
7
|
+
return ({ ids, list });
|
|
8
|
+
}
|
|
9
|
+
return ({ ids: R.append(id, ids), list: R.assoc(id, id, list) });
|
|
10
|
+
},
|
|
11
|
+
{ ids: [], list: {} }
|
|
12
|
+
),
|
|
13
|
+
R.prop('ids')
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export const refinePartialHierarchy = (hier, indexed) => {
|
|
17
|
+
const { intact, broken } = R.pipe(
|
|
18
|
+
R.keys,
|
|
19
|
+
R.reduce(
|
|
20
|
+
({ intact, broken }, key) => {
|
|
21
|
+
const ids = R.filter(id => R.has(id, indexed), hier[key]);
|
|
22
|
+
if (key === '#ROOT') {
|
|
23
|
+
return ({ broken, intact: R.assoc(key, ids, intact) });
|
|
24
|
+
}
|
|
25
|
+
const splitKey = R.split('.', key);
|
|
26
|
+
const filtered = R.takeLastWhile(id => R.has(id, indexed), splitKey);
|
|
27
|
+
if (R.length(filtered) === R.length(splitKey)) {
|
|
28
|
+
return ({ broken, intact: R.assoc(key, ids, intact) });
|
|
29
|
+
}
|
|
30
|
+
const refinedKey = R.isEmpty(filtered) ? '#ROOT' : R.join('.', filtered);
|
|
31
|
+
return ({
|
|
32
|
+
intact,
|
|
33
|
+
broken: R.over(R.lensProp(refinedKey), R.ifElse(R.isNil, R.always([ids]), R.append(ids)))(broken)
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
{ intact: {}, broken: {} }
|
|
37
|
+
)
|
|
38
|
+
)(hier);
|
|
39
|
+
const intactIds = R.pipe(R.values, R.unnest)(intact);
|
|
40
|
+
const refinedBroken = R.pipe(
|
|
41
|
+
R.omit(intactIds),
|
|
42
|
+
R.over(
|
|
43
|
+
R.lensProp('#ROOT'),
|
|
44
|
+
R.pipe(
|
|
45
|
+
i => R.isNil(i) ? [] : i,
|
|
46
|
+
R.unnest,
|
|
47
|
+
R.reject(R.flip(R.includes)(intactIds)))
|
|
48
|
+
),
|
|
49
|
+
R.map(R.pipe(R.unnest, uniq))
|
|
50
|
+
)(broken);
|
|
51
|
+
|
|
52
|
+
return ({
|
|
53
|
+
...refinedBroken,
|
|
54
|
+
...intact,
|
|
55
|
+
'#ROOT': R.concat(refinedBroken['#ROOT'], intact['#ROOT'])
|
|
56
|
+
})
|
|
57
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export const hierarchiseDimensionWithNativeHierarchy = (dimension) => {
|
|
4
|
+
const values = R.sortBy(R.prop('__indexPosition'), dimension.values || []);
|
|
5
|
+
const indexed = R.indexBy(R.prop('id'), values);
|
|
6
|
+
const grouped = R.groupBy(val => val.parent && R.has(val.parent, indexed) ? val.parent : '#ROOT', values);
|
|
7
|
+
|
|
8
|
+
let index = -1;
|
|
9
|
+
const getChildren = ({ parentsIndexes, parentId }) => {
|
|
10
|
+
const childs = R.propOr([], parentId, grouped);
|
|
11
|
+
return R.reduce(
|
|
12
|
+
(acc, child) => {
|
|
13
|
+
index = index + 1;
|
|
14
|
+
const refined = R.pipe(
|
|
15
|
+
R.assoc('__indexPosition', index),
|
|
16
|
+
R.assoc('parents', parentsIndexes),
|
|
17
|
+
R.assoc('parent', R.isEmpty(parentsIndexes) ? undefined : parentId),
|
|
18
|
+
)(child);
|
|
19
|
+
const children = getChildren({
|
|
20
|
+
parentsIndexes: R.propOr(false, 'isSelected', child)
|
|
21
|
+
? R.append(index, parentsIndexes) : parentsIndexes,
|
|
22
|
+
parentId: child.id
|
|
23
|
+
});
|
|
24
|
+
return R.concat(acc, R.prepend(refined, children));
|
|
25
|
+
},
|
|
26
|
+
[],
|
|
27
|
+
childs
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return R.set(
|
|
32
|
+
R.lensProp('values'),
|
|
33
|
+
getChildren({ parentsIndexes: [], parentId: '#ROOT' })
|
|
34
|
+
)(dimension);
|
|
35
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export {
|
|
2
|
+
SDMX_3_0_JSON_DATA_FORMAT,
|
|
3
|
+
SDMX_3_0_CSV_DATA_FORMAT
|
|
4
|
+
} from './constants';
|
|
5
|
+
|
|
6
|
+
export { parseMetadataSeries } from './parseMetadataSeries';
|
|
7
|
+
export { sdmx_3_0_DataFormatPatch } from './sdmx3.0DataFormatPatch';
|
|
8
|
+
export { getDataflowTooltipAttributesIds } from './getDataflowTooltipAttributesIds';
|
|
9
|
+
export { getMSDInformations } from './getMSDInformations';
|
|
10
|
+
export { getNotDisplayedIds } from './getNotDisplayedIds';
|
|
11
|
+
export { getHCodelistsRefs, getHCodelistsRefsInData } from './getHCodelistsRefsInData';
|
|
12
|
+
export { parseHierarchicalCodelist } from './parseHierarchicalCodelist';
|
|
13
|
+
export { getMetadataCoordinates } from './getMetadataCoordinates';
|
|
14
|
+
export { duplicateObs } from './duplicateObservations';
|
|
15
|
+
export { refinePartialHierarchy } from './hierarchiseDimensionWithAdvancedHierarchy2';
|
|
16
|
+
export { hierarchiseDimensionWithNativeHierarchy } from './hierarchiseDimensionWithNativeHierarchy2';
|
|
17
|
+
export { getDimensionValuesIndexes } from './getDimensionValuesIndexes';
|
|
18
|
+
export { getCombinationDefinitions, parseCombinationDefinition } from './getCombinationDefinitions';
|
|
19
|
+
export { refineDimensions } from './refineDimensions';
|
|
20
|
+
export { parseAttributes } from './parseAttributes';
|
|
21
|
+
export { parseCombinations } from './parseCombinations';
|
|
22
|
+
export { refineAttributes } from './refineAttributes';
|
|
23
|
+
export { enhanceObservations } from './enhanceObservations';
|
|
24
|
+
export { getAttributesSeries } from './getAttributesSeries';
|
|
25
|
+
export { getManyValuesDimensions } from './getManyValuesDimensions';
|
|
26
|
+
export { getOneValueDimensions } from './getOneValueDimensions';
|
|
27
|
+
export { getDataflowAttributes } from './getDataflowAttributes';
|
|
28
|
+
export { getHeaderTitle } from './getHeaderTitle';
|
|
29
|
+
export { getHeaderSubtitle } from './getHeaderSubtitle';
|
|
30
|
+
export { getSeriesCombinations } from './getSeriesCombinations';
|
|
31
|
+
export { getHeaderCombinations } from './getHeaderCombinations';
|
|
32
|
+
export { getHeaderCoordinates } from './getHeaderCoordinates';
|
|
33
|
+
export { getLayout } from './table/getLayout';
|
|
34
|
+
export { getSortedLayoutIndexes } from './table/getSortedLayoutIndexes';
|
|
35
|
+
export { refineLayoutSize } from './table/refineLayoutSize2';
|
|
36
|
+
export { getFlagsAndNotes } from './table/getFlagsAndNotes';
|
|
37
|
+
export { getLayoutData } from './table/getLayoutData2';
|
|
38
|
+
export { getCellsAttributesIds } from './table/getCellsAttributesIds';
|
|
39
|
+
export { getCellsMetadataCoordinates } from './table/getCellsMetadataCoordinates';
|
|
40
|
+
export { getIndexedCombinationsByDisplay } from './table/getIndexedCombinationsByDisplay';
|
|
41
|
+
export { getCells } from './table/getCells';
|
|
42
|
+
export { getCuratedCells } from './table/getCuratedCells';
|
|
43
|
+
export { prepareData } from './prepareData';
|
|
44
|
+
export { getTableProps } from './table/getTableProps';
|
|
45
|
+
export { getTableLabelAccessor } from './table/getTableLabelAccessor';
|
|
46
|
+
export { parseValueHierarchy } from './table/parseValueHierarchy';
|
|
47
|
+
export { parseLayoutIndexesHierarchies } from './table/parseSeriesIndexesHierarchies';
|
|
48
|
+
export { getTableLayoutIds, injectCombinationsInLayout } from './table/getTableLayoutIds';
|
|
49
|
+
export { declineObservationsOverAttributes } from './table/declineObservationsOverAttributes';
|
|
50
|
+
export { applyHierarchicalCodesToDim } from './applyHierarchicalCodesToDim';
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { REPORTING_YEAR_START_DAY, REPYEARSTART } from './constants';
|
|
3
|
+
|
|
4
|
+
export const parseAttributes = (attributes, dimensions, customAttributes) => {
|
|
5
|
+
const indexedDimensions = R.indexBy(R.prop('id'), dimensions);
|
|
6
|
+
return R.addIndex(R.map)((attr, index) => {
|
|
7
|
+
let res = R.assoc('index', index, attr);
|
|
8
|
+
const displayableValuesCount = R.pipe(
|
|
9
|
+
R.filter(R.propOr(true, 'display')),
|
|
10
|
+
R.length,
|
|
11
|
+
)(attr);
|
|
12
|
+
if (R.isEmpty(attr.values || []) || !R.propOr(true, 'display', attr)
|
|
13
|
+
|| displayableValuesCount < 1 || attr.id === REPORTING_YEAR_START_DAY
|
|
14
|
+
|| attr.id === REPYEARSTART) {
|
|
15
|
+
return R.assoc('display', false, res);
|
|
16
|
+
}
|
|
17
|
+
if (R.propEq('id', customAttributes.prefscale, attr)) {
|
|
18
|
+
return R.assoc('prefscale', true, res);
|
|
19
|
+
}
|
|
20
|
+
if (R.propEq('id', customAttributes.decimals, attr)) {
|
|
21
|
+
return R.assoc('decimals', true, res);
|
|
22
|
+
}
|
|
23
|
+
if (R.hasPath(['relationship', 'none'], attr) || R.hasPath(['relationship', 'dataflow'], attr)) {
|
|
24
|
+
return { ...res, header: true, relationship: [] };
|
|
25
|
+
}
|
|
26
|
+
if (R.hasPath(['relationship', 'primaryMeasure'], attr) || R.hasPath(['relationship', 'observation'], attr)) {
|
|
27
|
+
return { ...res, series: true, relationship: [] };
|
|
28
|
+
}
|
|
29
|
+
const seriesDimensions = R.pipe(
|
|
30
|
+
R.pathOr([], ['relationship', 'dimensions']),
|
|
31
|
+
R.filter(id => {
|
|
32
|
+
const dimension = R.prop(id, indexedDimensions);
|
|
33
|
+
return !dimension.header && R.length(dimension.values || []) > 1;
|
|
34
|
+
}),
|
|
35
|
+
)(attr);
|
|
36
|
+
if (R.length(seriesDimensions) > 0) {
|
|
37
|
+
return { ...res, series: true, relationship: seriesDimensions };
|
|
38
|
+
}
|
|
39
|
+
return { ...res, header: true, relationship: R.prop('dimensions', attr.relationship || []) };
|
|
40
|
+
}, attributes);
|
|
41
|
+
};
|