@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.
Files changed (366) hide show
  1. package/dist/bridge-d3-react/src/index.js +18 -0
  2. package/dist/bridge-d3-react/src/index.js.map +1 -0
  3. package/dist/bridge-d3-react/src/react-chart-factory.js +44 -0
  4. package/dist/bridge-d3-react/src/react-chart-factory.js.map +1 -0
  5. package/dist/rules/src/chart/getAxisOptions.js +256 -0
  6. package/dist/rules/src/chart/getAxisOptions.js.map +1 -0
  7. package/dist/rules/src/chart/getBaseOptions.js +77 -0
  8. package/dist/rules/src/chart/getBaseOptions.js.map +1 -0
  9. package/dist/rules/src/chart/getChartOptions.js +120 -0
  10. package/dist/rules/src/chart/getChartOptions.js.map +1 -0
  11. package/dist/rules/src/chart/getGridOptions.js +46 -0
  12. package/dist/rules/src/chart/getGridOptions.js.map +1 -0
  13. package/dist/rules/src/chart/getTooltipOptions.js +223 -0
  14. package/dist/rules/src/chart/getTooltipOptions.js.map +1 -0
  15. package/dist/rules/src/constants.js +65 -0
  16. package/dist/rules/src/constants.js.map +1 -0
  17. package/dist/rules/src/date.js +121 -0
  18. package/dist/rules/src/date.js.map +1 -0
  19. package/dist/rules/src/dimension-utils.js +57 -0
  20. package/dist/rules/src/dimension-utils.js.map +1 -0
  21. package/dist/rules/src/factories/choro-series.js +68 -0
  22. package/dist/rules/src/factories/choro-series.js.map +1 -0
  23. package/dist/rules/src/factories/sample-focus.js +25 -0
  24. package/dist/rules/src/factories/sample-focus.js.map +1 -0
  25. package/dist/rules/src/factories/sample-series.js +53 -0
  26. package/dist/rules/src/factories/sample-series.js.map +1 -0
  27. package/dist/rules/src/factories/scatter-dimension.js +35 -0
  28. package/dist/rules/src/factories/scatter-dimension.js.map +1 -0
  29. package/dist/rules/src/factories/scatter-focus.js +42 -0
  30. package/dist/rules/src/factories/scatter-focus.js.map +1 -0
  31. package/dist/rules/src/factories/scatter-series.js +91 -0
  32. package/dist/rules/src/factories/scatter-series.js.map +1 -0
  33. package/dist/rules/src/factories/stacked-dimension.js +32 -0
  34. package/dist/rules/src/factories/stacked-dimension.js.map +1 -0
  35. package/dist/rules/src/factories/stacked-series.js +188 -0
  36. package/dist/rules/src/factories/stacked-series.js.map +1 -0
  37. package/dist/rules/src/factories/symbol-dimension.js +32 -0
  38. package/dist/rules/src/factories/symbol-dimension.js.map +1 -0
  39. package/dist/rules/src/factories/symbol-series.js +65 -0
  40. package/dist/rules/src/factories/symbol-series.js.map +1 -0
  41. package/dist/rules/src/factories/timeline-focus.js +21 -0
  42. package/dist/rules/src/factories/timeline-focus.js.map +1 -0
  43. package/dist/rules/src/factories/timeline-series.js +94 -0
  44. package/dist/rules/src/factories/timeline-series.js.map +1 -0
  45. package/dist/rules/src/get-values-enhanced.js +133 -0
  46. package/dist/rules/src/get-values-enhanced.js.map +1 -0
  47. package/dist/rules/src/header/getDefaultSubtitle.js +44 -0
  48. package/dist/rules/src/header/getDefaultSubtitle.js.map +1 -0
  49. package/dist/rules/src/header/getHeaderUnits.js +21 -0
  50. package/dist/rules/src/header/getHeaderUnits.js.map +1 -0
  51. package/dist/rules/src/header/getSubtitleFlags.js +47 -0
  52. package/dist/rules/src/header/getSubtitleFlags.js.map +1 -0
  53. package/dist/rules/src/header/getTitleFlags.js +12 -0
  54. package/dist/rules/src/header/getTitleFlags.js.map +1 -0
  55. package/dist/rules/src/index.js +378 -0
  56. package/dist/rules/src/index.js.map +1 -0
  57. package/dist/rules/src/layout.js +107 -0
  58. package/dist/rules/src/layout.js.map +1 -0
  59. package/dist/rules/src/observation-formater.js +86 -0
  60. package/dist/rules/src/observation-formater.js.map +1 -0
  61. package/dist/rules/src/preparators/formatValue.js +96 -0
  62. package/dist/rules/src/preparators/formatValue.js.map +1 -0
  63. package/dist/rules/src/preparators/getObservations.js +22 -0
  64. package/dist/rules/src/preparators/getObservations.js.map +1 -0
  65. package/dist/rules/src/preparators/getReportingYearStart.js +19 -0
  66. package/dist/rules/src/preparators/getReportingYearStart.js.map +1 -0
  67. package/dist/rules/src/properties/errors.js +22 -0
  68. package/dist/rules/src/properties/errors.js.map +1 -0
  69. package/dist/rules/src/properties/focus.js +72 -0
  70. package/dist/rules/src/properties/focus.js.map +1 -0
  71. package/dist/rules/src/properties/getAvailableChartTypes.js +31 -0
  72. package/dist/rules/src/properties/getAvailableChartTypes.js.map +1 -0
  73. package/dist/rules/src/properties/getHeaderProps.js +76 -0
  74. package/dist/rules/src/properties/getHeaderProps.js.map +1 -0
  75. package/dist/rules/src/properties/getInformationsStateFromNewProps.js +50 -0
  76. package/dist/rules/src/properties/getInformationsStateFromNewProps.js.map +1 -0
  77. package/dist/rules/src/properties/getObservationsType.js +28 -0
  78. package/dist/rules/src/properties/getObservationsType.js.map +1 -0
  79. package/dist/rules/src/properties/getStringifiedSubtitle.js +9 -0
  80. package/dist/rules/src/properties/getStringifiedSubtitle.js.map +1 -0
  81. package/dist/rules/src/properties/index.js +384 -0
  82. package/dist/rules/src/properties/index.js.map +1 -0
  83. package/dist/rules/src/properties/linear.js +123 -0
  84. package/dist/rules/src/properties/linear.js.map +1 -0
  85. package/dist/rules/src/properties/scatter.js +156 -0
  86. package/dist/rules/src/properties/scatter.js.map +1 -0
  87. package/dist/rules/src/properties/stacked.js +96 -0
  88. package/dist/rules/src/properties/stacked.js.map +1 -0
  89. package/dist/rules/src/properties/symbol.js +76 -0
  90. package/dist/rules/src/properties/symbol.js.map +1 -0
  91. package/dist/rules/src/properties/utils.js +86 -0
  92. package/dist/rules/src/properties/utils.js.map +1 -0
  93. package/dist/rules/src/sdmx-data/index.js +38 -0
  94. package/dist/rules/src/sdmx-data/index.js.map +1 -0
  95. package/dist/rules/src/table/factories/getCellValue.js +53 -0
  96. package/dist/rules/src/table/factories/getCellValue.js.map +1 -0
  97. package/dist/rules/src/v8-transformer.js +174 -0
  98. package/dist/rules/src/v8-transformer.js.map +1 -0
  99. package/dist/rules2/src/applyHierarchicalCodesToDim.js +126 -0
  100. package/dist/rules2/src/applyHierarchicalCodesToDim.js.map +1 -0
  101. package/dist/rules2/src/combinedValuesDisplay.js +77 -0
  102. package/dist/rules2/src/combinedValuesDisplay.js.map +1 -0
  103. package/dist/rules2/src/constants.js +9 -0
  104. package/dist/rules2/src/constants.js.map +1 -0
  105. package/dist/rules2/src/duplicateObservations.js +38 -0
  106. package/dist/rules2/src/duplicateObservations.js.map +1 -0
  107. package/dist/rules2/src/enhanceObservations.js +98 -0
  108. package/dist/rules2/src/enhanceObservations.js.map +1 -0
  109. package/dist/rules2/src/getAttributesSeries.js +39 -0
  110. package/dist/rules2/src/getAttributesSeries.js.map +1 -0
  111. package/dist/rules2/src/getCombinationDefinitions.js +50 -0
  112. package/dist/rules2/src/getCombinationDefinitions.js.map +1 -0
  113. package/dist/rules2/src/getDataflowAttributes.js +25 -0
  114. package/dist/rules2/src/getDataflowAttributes.js.map +1 -0
  115. package/dist/rules2/src/getDataflowTooltipAttributesIds.js +33 -0
  116. package/dist/rules2/src/getDataflowTooltipAttributesIds.js.map +1 -0
  117. package/dist/rules2/src/getDimensionValuesIndexes.js +16 -0
  118. package/dist/rules2/src/getDimensionValuesIndexes.js.map +1 -0
  119. package/dist/rules2/src/getHCodelistsRefsInData.js +35 -0
  120. package/dist/rules2/src/getHCodelistsRefsInData.js.map +1 -0
  121. package/dist/rules2/src/getHeaderCombinations.js +51 -0
  122. package/dist/rules2/src/getHeaderCombinations.js.map +1 -0
  123. package/dist/rules2/src/getHeaderCoordinates.js +10 -0
  124. package/dist/rules2/src/getHeaderCoordinates.js.map +1 -0
  125. package/dist/rules2/src/getHeaderSubtitle.js +37 -0
  126. package/dist/rules2/src/getHeaderSubtitle.js.map +1 -0
  127. package/dist/rules2/src/getHeaderTitle.js +18 -0
  128. package/dist/rules2/src/getHeaderTitle.js.map +1 -0
  129. package/dist/rules2/src/getMSDInformations.js +26 -0
  130. package/dist/rules2/src/getMSDInformations.js.map +1 -0
  131. package/dist/rules2/src/getManyValuesDimensions.js +37 -0
  132. package/dist/rules2/src/getManyValuesDimensions.js.map +1 -0
  133. package/dist/rules2/src/getMetadataCoordinates.js +40 -0
  134. package/dist/rules2/src/getMetadataCoordinates.js.map +1 -0
  135. package/dist/rules2/src/getNotDisplayedIds.js +56 -0
  136. package/dist/rules2/src/getNotDisplayedIds.js.map +1 -0
  137. package/dist/rules2/src/getOneValueDimensions.js +37 -0
  138. package/dist/rules2/src/getOneValueDimensions.js.map +1 -0
  139. package/dist/rules2/src/getSeriesCombinations.js +27 -0
  140. package/dist/rules2/src/getSeriesCombinations.js.map +1 -0
  141. package/dist/rules2/src/hasCellMetadata.js +17 -0
  142. package/dist/rules2/src/hasCellMetadata.js.map +1 -0
  143. package/dist/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js +60 -0
  144. package/dist/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js.map +1 -0
  145. package/dist/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js +38 -0
  146. package/dist/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js.map +1 -0
  147. package/dist/rules2/src/index.js +47 -0
  148. package/dist/rules2/src/index.js.map +1 -0
  149. package/dist/rules2/src/parseAttributes.js +44 -0
  150. package/dist/rules2/src/parseAttributes.js.map +1 -0
  151. package/dist/rules2/src/parseCombinations.js +105 -0
  152. package/dist/rules2/src/parseCombinations.js.map +1 -0
  153. package/dist/rules2/src/parseHierarchicalCodelist.js +34 -0
  154. package/dist/rules2/src/parseHierarchicalCodelist.js.map +1 -0
  155. package/dist/rules2/src/parseMetadataSeries.js +124 -0
  156. package/dist/rules2/src/parseMetadataSeries.js.map +1 -0
  157. package/dist/rules2/src/prepareData.js +78 -0
  158. package/dist/rules2/src/prepareData.js.map +1 -0
  159. package/dist/rules2/src/refineAttributes.js +19 -0
  160. package/dist/rules2/src/refineAttributes.js.map +1 -0
  161. package/dist/rules2/src/refineDimensions.js +21 -0
  162. package/dist/rules2/src/refineDimensions.js.map +1 -0
  163. package/dist/rules2/src/refineTimePeriod.js +130 -0
  164. package/dist/rules2/src/refineTimePeriod.js.map +1 -0
  165. package/dist/rules2/src/sdmx3.0DataFormatPatch.js +12 -0
  166. package/dist/rules2/src/sdmx3.0DataFormatPatch.js.map +1 -0
  167. package/dist/rules2/src/table/declineObservationsOverAttributes.js +35 -0
  168. package/dist/rules2/src/table/declineObservationsOverAttributes.js.map +1 -0
  169. package/dist/rules2/src/table/getCells.js +96 -0
  170. package/dist/rules2/src/table/getCells.js.map +1 -0
  171. package/dist/rules2/src/table/getCellsAttributesIds.js +41 -0
  172. package/dist/rules2/src/table/getCellsAttributesIds.js.map +1 -0
  173. package/dist/rules2/src/table/getCellsMetadataCoordinates.js +16 -0
  174. package/dist/rules2/src/table/getCellsMetadataCoordinates.js.map +1 -0
  175. package/dist/rules2/src/table/getCuratedCells.js +36 -0
  176. package/dist/rules2/src/table/getCuratedCells.js.map +1 -0
  177. package/dist/rules2/src/table/getFlagsAndNotes.js +26 -0
  178. package/dist/rules2/src/table/getFlagsAndNotes.js.map +1 -0
  179. package/dist/rules2/src/table/getIndexedCombinationsByDisplay.js +19 -0
  180. package/dist/rules2/src/table/getIndexedCombinationsByDisplay.js.map +1 -0
  181. package/dist/rules2/src/table/getLayout.js +87 -0
  182. package/dist/rules2/src/table/getLayout.js.map +1 -0
  183. package/dist/rules2/src/table/getLayoutData2.js +205 -0
  184. package/dist/rules2/src/table/getLayoutData2.js.map +1 -0
  185. package/dist/rules2/src/table/getSortedLayoutIndexes.js +141 -0
  186. package/dist/rules2/src/table/getSortedLayoutIndexes.js.map +1 -0
  187. package/dist/rules2/src/table/getTableLabelAccessor.js +11 -0
  188. package/dist/rules2/src/table/getTableLabelAccessor.js.map +1 -0
  189. package/dist/rules2/src/table/getTableLayoutIds.js +317 -0
  190. package/dist/rules2/src/table/getTableLayoutIds.js.map +1 -0
  191. package/dist/rules2/src/table/getTableProps.js +85 -0
  192. package/dist/rules2/src/table/getTableProps.js.map +1 -0
  193. package/dist/rules2/src/table/parseSeriesIndexesHierarchies.js +82 -0
  194. package/dist/rules2/src/table/parseSeriesIndexesHierarchies.js.map +1 -0
  195. package/dist/rules2/src/table/parseValueHierarchy.js +29 -0
  196. package/dist/rules2/src/table/parseValueHierarchy.js.map +1 -0
  197. package/dist/rules2/src/table/refineLayoutSize2.js +324 -0
  198. package/dist/rules2/src/table/refineLayoutSize2.js.map +1 -0
  199. package/dist/rules2/src/utils.js +29 -0
  200. package/dist/rules2/src/utils.js.map +1 -0
  201. package/dist/viewer/src/chart.js +50 -0
  202. package/dist/viewer/src/chart.js.map +1 -0
  203. package/dist/viewer/src/chartUtils/options.js +33 -0
  204. package/dist/viewer/src/chartUtils/options.js.map +1 -0
  205. package/dist/viewer/src/chartUtils/series.js +54 -0
  206. package/dist/viewer/src/chartUtils/series.js.map +1 -0
  207. package/dist/viewer/src/footer.js +39 -0
  208. package/dist/viewer/src/footer.js.map +1 -0
  209. package/dist/viewer/src/header.js +12 -0
  210. package/dist/viewer/src/header.js.map +1 -0
  211. package/dist/viewer/src/index.js +160 -0
  212. package/dist/viewer/src/index.js.map +1 -0
  213. package/dist/viewer/src/legends/AxisLegend.js +42 -0
  214. package/dist/viewer/src/legends/AxisLegend.js.map +1 -0
  215. package/dist/viewer/src/legends/ChartLegends.js +80 -0
  216. package/dist/viewer/src/legends/ChartLegends.js.map +1 -0
  217. package/dist/viewer/src/legends/FocusLegend.js +67 -0
  218. package/dist/viewer/src/legends/FocusLegend.js.map +1 -0
  219. package/dist/viewer/src/legends/Legend.js +51 -0
  220. package/dist/viewer/src/legends/Legend.js.map +1 -0
  221. package/dist/viewer/src/legends/SeriesLegend.js +77 -0
  222. package/dist/viewer/src/legends/SeriesLegend.js.map +1 -0
  223. package/dist/viewer/src/utils.js +24 -0
  224. package/dist/viewer/src/utils.js.map +1 -0
  225. package/package.json +1 -1
  226. package/src/app.js +13 -0
  227. package/src/bridge-d3-react/README.md +42 -0
  228. package/src/bridge-d3-react/src/app.js +64 -0
  229. package/src/bridge-d3-react/src/index.js +16 -0
  230. package/src/bridge-d3-react/src/mock-choro.js +394 -0
  231. package/src/bridge-d3-react/src/react-chart-factory.jsx +65 -0
  232. package/src/index.js +10 -0
  233. package/src/rules/README.md +23 -0
  234. package/src/rules/src/chart/getAxisOptions.js +263 -0
  235. package/src/rules/src/chart/getBaseOptions.js +84 -0
  236. package/src/rules/src/chart/getChartOptions.js +118 -0
  237. package/src/rules/src/chart/getGridOptions.js +52 -0
  238. package/src/rules/src/chart/getTooltipOptions.js +230 -0
  239. package/src/rules/src/constants.js +64 -0
  240. package/src/rules/src/date.js +118 -0
  241. package/src/rules/src/dimension-utils.js +54 -0
  242. package/src/rules/src/factories/choro-series.js +65 -0
  243. package/src/rules/src/factories/sample-focus.js +22 -0
  244. package/src/rules/src/factories/sample-series.js +50 -0
  245. package/src/rules/src/factories/scatter-dimension.js +32 -0
  246. package/src/rules/src/factories/scatter-focus.js +39 -0
  247. package/src/rules/src/factories/scatter-series.js +92 -0
  248. package/src/rules/src/factories/stacked-dimension.js +29 -0
  249. package/src/rules/src/factories/stacked-series.js +185 -0
  250. package/src/rules/src/factories/symbol-dimension.js +29 -0
  251. package/src/rules/src/factories/symbol-series.js +62 -0
  252. package/src/rules/src/factories/timeline-focus.js +18 -0
  253. package/src/rules/src/factories/timeline-series.js +91 -0
  254. package/src/rules/src/get-values-enhanced.js +134 -0
  255. package/src/rules/src/header/getDefaultSubtitle.js +40 -0
  256. package/src/rules/src/header/getHeaderUnits.js +17 -0
  257. package/src/rules/src/header/getSubtitleFlags.js +43 -0
  258. package/src/rules/src/header/getTitleFlags.js +8 -0
  259. package/src/rules/src/header/index.js +4 -0
  260. package/src/rules/src/index.js +398 -0
  261. package/src/rules/src/layout.js +113 -0
  262. package/src/rules/src/observation-formater.js +83 -0
  263. package/src/rules/src/preparators/enhanceObservations.js +152 -0
  264. package/src/rules/src/preparators/formatValue.js +93 -0
  265. package/src/rules/src/preparators/getObservations.js +19 -0
  266. package/src/rules/src/preparators/getReportingYearStart.js +16 -0
  267. package/src/rules/src/properties/errors.js +19 -0
  268. package/src/rules/src/properties/focus.js +69 -0
  269. package/src/rules/src/properties/getAvailableChartTypes.js +34 -0
  270. package/src/rules/src/properties/getHeaderProps.js +74 -0
  271. package/src/rules/src/properties/getInformationsStateFromNewProps.js +47 -0
  272. package/src/rules/src/properties/getObservationsType.js +29 -0
  273. package/src/rules/src/properties/getStringifiedSubtitle.js +6 -0
  274. package/src/rules/src/properties/index.js +424 -0
  275. package/src/rules/src/properties/information.js +84 -0
  276. package/src/rules/src/properties/linear.js +129 -0
  277. package/src/rules/src/properties/scatter.js +158 -0
  278. package/src/rules/src/properties/stacked.js +98 -0
  279. package/src/rules/src/properties/symbol.js +79 -0
  280. package/src/rules/src/properties/utils.js +110 -0
  281. package/src/rules/src/sdmx-data/index.js +39 -0
  282. package/src/rules/src/table/factories/getCellValue.js +50 -0
  283. package/src/rules/src/table/index.js +1 -0
  284. package/src/rules/src/v8-transformer.js +177 -0
  285. package/src/rules2/src/applyHierarchicalCodesToDim.js +123 -0
  286. package/src/rules2/src/combinedValuesDisplay.js +74 -0
  287. package/src/rules2/src/constants.js +6 -0
  288. package/src/rules2/src/duplicateObservations.js +35 -0
  289. package/src/rules2/src/enhanceObservations.js +95 -0
  290. package/src/rules2/src/getAdvAttrSeriesAtCoordinates.js +29 -0
  291. package/src/rules2/src/getAttributesSeries.js +36 -0
  292. package/src/rules2/src/getCombinationDefinitions.js +47 -0
  293. package/src/rules2/src/getDataflowAttributes.js +23 -0
  294. package/src/rules2/src/getDataflowTooltipAttributesIds.js +31 -0
  295. package/src/rules2/src/getDimensionValuesIndexes.js +13 -0
  296. package/src/rules2/src/getHCodelistsRefsInData.js +32 -0
  297. package/src/rules2/src/getHeaderCombinations.js +48 -0
  298. package/src/rules2/src/getHeaderCoordinates.js +7 -0
  299. package/src/rules2/src/getHeaderSubtitle.js +34 -0
  300. package/src/rules2/src/getHeaderTitle.js +15 -0
  301. package/src/rules2/src/getMSDInformations.js +23 -0
  302. package/src/rules2/src/getManyValuesDimensions.js +34 -0
  303. package/src/rules2/src/getMetadataCoordinates.js +37 -0
  304. package/src/rules2/src/getMetadataStructureFromData.js +17 -0
  305. package/src/rules2/src/getNotDisplayedIds.js +53 -0
  306. package/src/rules2/src/getOneValueDimensions.js +34 -0
  307. package/src/rules2/src/getSeriesCombinations.js +24 -0
  308. package/src/rules2/src/hasCellMetadata.js +14 -0
  309. package/src/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js +57 -0
  310. package/src/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js +35 -0
  311. package/src/rules2/src/index.js +50 -0
  312. package/src/rules2/src/parseAttributes.js +41 -0
  313. package/src/rules2/src/parseCombinations.js +102 -0
  314. package/src/rules2/src/parseHierarchicalCodelist.js +48 -0
  315. package/src/rules2/src/parseMetadataSeries.js +121 -0
  316. package/src/rules2/src/prepareData.js +75 -0
  317. package/src/rules2/src/refineAttributes.js +16 -0
  318. package/src/rules2/src/refineDimensions.js +18 -0
  319. package/src/rules2/src/refineMetadataCoordinates.js +28 -0
  320. package/src/rules2/src/refineTimePeriod.js +127 -0
  321. package/src/rules2/src/sdmx3.0DataFormatPatch.js +9 -0
  322. package/src/rules2/src/table/declineObservationsOverAttributes.js +32 -0
  323. package/src/rules2/src/table/getCells.js +93 -0
  324. package/src/rules2/src/table/getCellsAttributesIds.js +38 -0
  325. package/src/rules2/src/table/getCellsMetadataCoordinates.js +13 -0
  326. package/src/rules2/src/table/getCombinationDimensionsData.js +39 -0
  327. package/src/rules2/src/table/getCuratedCells.js +33 -0
  328. package/src/rules2/src/table/getFlagsAndNotes.js +23 -0
  329. package/src/rules2/src/table/getIndexedCombinationsByDisplay.js +16 -0
  330. package/src/rules2/src/table/getLayout.js +84 -0
  331. package/src/rules2/src/table/getLayoutData2.js +202 -0
  332. package/src/rules2/src/table/getSortedLayoutIndexes.js +138 -0
  333. package/src/rules2/src/table/getTableLabelAccessor.js +9 -0
  334. package/src/rules2/src/table/getTableLayoutIds.js +314 -0
  335. package/src/rules2/src/table/getTableProps.js +82 -0
  336. package/src/rules2/src/table/parseSeriesIndexesHierarchies.js +79 -0
  337. package/src/rules2/src/table/parseValueHierarchy.js +33 -0
  338. package/src/rules2/src/table/refineLayoutSize2.js +321 -0
  339. package/src/rules2/src/utils.js +37 -0
  340. package/src/viewer/mocks/bar.js +33 -0
  341. package/src/viewer/mocks/gpp-symbol.js +93 -0
  342. package/src/viewer/mocks/gpp-time.js +1103 -0
  343. package/src/viewer/mocks/row.js +39 -0
  344. package/src/viewer/mocks/scatter.js +93 -0
  345. package/src/viewer/mocks/stack.js +161 -0
  346. package/src/viewer/src/app/leg.js +36 -0
  347. package/src/viewer/src/app/nodata-res.js +22 -0
  348. package/src/viewer/src/app/nodata-sized.js +23 -0
  349. package/src/viewer/src/app/one-table-cell.js +70 -0
  350. package/src/viewer/src/app/table.js +423 -0
  351. package/src/viewer/src/app/use-case-1.js +33 -0
  352. package/src/viewer/src/app/use-case-2.js +38 -0
  353. package/src/viewer/src/app/use-case-3.js +18 -0
  354. package/src/viewer/src/app.js +116 -0
  355. package/src/viewer/src/chart.jsx +52 -0
  356. package/src/viewer/src/chartUtils/options.js +30 -0
  357. package/src/viewer/src/chartUtils/series.js +51 -0
  358. package/src/viewer/src/footer.jsx +23 -0
  359. package/src/viewer/src/header.jsx +10 -0
  360. package/src/viewer/src/index.jsx +158 -0
  361. package/src/viewer/src/legends/AxisLegend.jsx +41 -0
  362. package/src/viewer/src/legends/ChartLegends.jsx +66 -0
  363. package/src/viewer/src/legends/FocusLegend.jsx +63 -0
  364. package/src/viewer/src/legends/Legend.jsx +46 -0
  365. package/src/viewer/src/legends/SeriesLegend.jsx +78 -0
  366. 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,7 @@
1
+ import * as R from 'ramda';
2
+
3
+ export const getHeaderCoordinates = (oneValueDimensions) => R.reduce(
4
+ (acc, dim) => R.assoc(dim.id, R.path(['values', 0, 'id'], dim), acc),
5
+ {},
6
+ oneValueDimensions
7
+ );
@@ -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
+ };