@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.
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 +379 -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 +400 -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,156 @@
1
+ import * as R from 'ramda';
2
+ import { isRefAreaDimension } from '@sis-cc/dotstatsuite-sdmxjs';
3
+ import { SCATTER } from '../constants.js';
4
+ import { getPropertyDimension, artefactToOption, toState, getDimensionsWithValues } from './utils.js';
5
+ import { focusStateFromNewProps } from './focus.js';
6
+
7
+ const getScatterDimension = getPropertyDimension('scatterDimension');
8
+
9
+ const toScatterState = (dim, xVal, yVal) => ({
10
+ scatterDimension: toState(dim),
11
+ scatterX: toState(xVal),
12
+ scatterY: toState(yVal),
13
+ });
14
+
15
+ const toScatterSingularity = (state) => ({
16
+ id: R.prop('scatterDimension', state),
17
+ xId: R.prop('scatterX', state),
18
+ yId: R.prop('scatterY', state),
19
+ });
20
+
21
+ const isScatter = (type) => type === SCATTER;
22
+
23
+ const scatterValueOptions = ({ data, type, display }, state) => {
24
+ if (!isScatter(type)) {
25
+ return [];
26
+ }
27
+ const scatterDimension = getScatterDimension(data, state);
28
+ if (R.isNil(scatterDimension)) {
29
+ return [];
30
+ }
31
+ return R.map(
32
+ artefactToOption(display),
33
+ R.prop('values', scatterDimension)
34
+ );
35
+ };
36
+
37
+ const onChangeScatterDim = (props, state) => (value) => {
38
+ const { data } = props;
39
+ const dimension = getScatterDimension(data, { scatterDimension: value });
40
+ if (R.isNil(dimension)) {
41
+ return ({});
42
+ }
43
+
44
+ const [xVal, yVal] = R.take(2, R.prop('values', dimension));
45
+
46
+ const newScatterState = toScatterState(dimension, xVal, yVal);
47
+
48
+ return ({
49
+ ...newScatterState,
50
+ ...focusStateFromNewProps(
51
+ props,
52
+ toScatterSingularity(newScatterState),
53
+ state
54
+ )
55
+ });
56
+ };
57
+
58
+ const scatterStateValueToOption = (property, props, state) => {
59
+ const dimension = getScatterDimension(props.data, state);
60
+ if (R.isNil(dimension) || !isScatter(props.type)) {
61
+ return undefined;
62
+ }
63
+ const value = R.find(
64
+ R.propEq('id', R.prop(property, state)),
65
+ R.prop('values', dimension)
66
+ );
67
+ return artefactToOption(props.display)(value);
68
+ };
69
+
70
+ const onChangeScatterVal = ({ data, type }, state, valKey, otherValKey) => (value) => {
71
+ const options = scatterValueOptions({ data, type }, state);
72
+ const [matching, otherOptions] = R.partition(R.propEq('value', value), options);
73
+ if (R.isEmpty(matching)) {
74
+ return ({});
75
+ }
76
+ const stateOtherValue = R.prop(otherValKey, state);
77
+ return ({
78
+ [valKey]: value,
79
+ [otherValKey]: stateOtherValue === value
80
+ ? R.prop('value', R.head(otherOptions))
81
+ : stateOtherValue
82
+ });
83
+ };
84
+
85
+ //----------------------------------------------------------------------------------------------------
86
+
87
+ const scatterStateFromNewProps = (props, state) => {
88
+ const { data, type } = props;
89
+ const undefinedState = toScatterState(undefined, undefined, undefined);
90
+ if (!isScatter(type)) {
91
+ return undefinedState;
92
+ }
93
+ if (R.isNil(data)) {
94
+ return {};
95
+ }
96
+ const dimensions = getDimensionsWithValues(data);
97
+ if (R.isEmpty(dimensions)) {
98
+ return { ...undefinedState, highlight: [], baseline: [] };
99
+ }
100
+
101
+ let scatterDimension = getScatterDimension(props.data, state);
102
+ if (R.isNil(scatterDimension)) {
103
+ const refinedDimensions = R.reject(isRefAreaDimension, dimensions);
104
+ scatterDimension = R.head(R.isEmpty(refinedDimensions) ? dimensions : refinedDimensions);
105
+ }
106
+
107
+ const values = R.prop('values', scatterDimension);
108
+
109
+ const stateScatterX = R.prop('scatterX', state);
110
+ let stateScatterY = R.prop('scatterY', state);
111
+
112
+ if (stateScatterX === stateScatterY) {
113
+ stateScatterY = undefined;
114
+ }
115
+
116
+ let _scatterX = undefined;
117
+ let _scatterY = undefined;
118
+
119
+ R.forEach(
120
+ (value) => {
121
+ if (R.prop('id', value) === stateScatterX) {
122
+ _scatterX = value;
123
+ }
124
+ else if (R.prop('id', value) === stateScatterY) {
125
+ _scatterY = value;
126
+ }
127
+ },
128
+ values
129
+ );
130
+
131
+ //dirty as f
132
+ const scatterX = R.isNil(_scatterX)
133
+ ? R.head(R.reject(R.propEq('id', R.prop('id', _scatterY)), values))
134
+ : _scatterX;
135
+ const scatterY = R.isNil(_scatterY)
136
+ ? R.head(R.reject(R.propEq('id', R.prop('id', scatterX)), values))
137
+ : _scatterY;
138
+
139
+ const scatterState = toScatterState(
140
+ scatterDimension,
141
+ scatterX,
142
+ scatterY,
143
+ );
144
+
145
+ return ({
146
+ ...scatterState,
147
+ ...focusStateFromNewProps(
148
+ props,
149
+ toScatterSingularity(scatterState),
150
+ state
151
+ )
152
+ });
153
+ };
154
+
155
+ export { isScatter, onChangeScatterDim, onChangeScatterVal, scatterStateFromNewProps, scatterStateValueToOption, scatterValueOptions, toScatterSingularity };
156
+ //# sourceMappingURL=scatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scatter.js","sources":["../../../../src/rules/src/properties/scatter.js"],"sourcesContent":["import * as R from 'ramda';\nimport { isRefAreaDimension } from '@sis-cc/dotstatsuite-sdmxjs';\nimport { SCATTER } from '../constants';\nimport {\n artefactToOption,\n getDimensionsWithValues,\n getPropertyDimension,\n toState,\n} from './utils';\nimport { focusStateFromNewProps } from './focus';\n\nconst getScatterDimension = getPropertyDimension('scatterDimension');\n\nconst toScatterState = (dim, xVal, yVal) => ({\n scatterDimension: toState(dim),\n scatterX: toState(xVal),\n scatterY: toState(yVal),\n});\n\nexport const toScatterSingularity = (state) => ({\n id: R.prop('scatterDimension', state),\n xId: R.prop('scatterX', state),\n yId: R.prop('scatterY', state),\n}); \n\nexport const isScatter = (type) => type === SCATTER;\n\nexport const scatterValueOptions = ({ data, type, display }, state) => {\n if (!isScatter(type)) {\n return [];\n }\n const scatterDimension = getScatterDimension(data, state);\n if (R.isNil(scatterDimension)) {\n return [];\n }\n return R.map(\n artefactToOption(display),\n R.prop('values', scatterDimension)\n );\n};\n\nexport const onChangeScatterDim = (props, state) => (value) => {\n const { data } = props;\n const dimension = getScatterDimension(data, { scatterDimension: value });\n if (R.isNil(dimension)) {\n return ({});\n }\n\n const [xVal, yVal] = R.take(2, R.prop('values', dimension));\n\n const newScatterState = toScatterState(dimension, xVal, yVal);\n\n return ({\n ...newScatterState,\n ...focusStateFromNewProps(\n props,\n toScatterSingularity(newScatterState),\n state\n )\n });\n};\n\nexport const scatterStateValueToOption = (property, props, state) => {\n const dimension = getScatterDimension(props.data, state);\n if (R.isNil(dimension) || !isScatter(props.type)) {\n return undefined;\n }\n const value = R.find(\n R.propEq('id', R.prop(property, state)),\n R.prop('values', dimension)\n );\n return artefactToOption(props.display)(value);\n};\n\nexport const onChangeScatterVal = ({ data, type }, state, valKey, otherValKey) => (value) => {\n const options = scatterValueOptions({ data, type }, state);\n const [matching, otherOptions] = R.partition(R.propEq('value', value), options);\n if (R.isEmpty(matching)) {\n return ({});\n }\n const stateOtherValue = R.prop(otherValKey, state);\n return ({\n [valKey]: value,\n [otherValKey]: stateOtherValue === value\n ? R.prop('value', R.head(otherOptions))\n : stateOtherValue \n }); \n};\n\n//----------------------------------------------------------------------------------------------------\n\nexport const scatterStateFromNewProps = (props, state) => {\n const { data, type } = props;\n const undefinedState = toScatterState(undefined, undefined, undefined);\n if (!isScatter(type)) {\n return undefinedState;\n }\n if (R.isNil(data)) {\n return {};\n }\n const dimensions = getDimensionsWithValues(data);\n if (R.isEmpty(dimensions)) {\n return { ...undefinedState, highlight: [], baseline: [] };\n }\n\n let scatterDimension = getScatterDimension(props.data, state);\n if (R.isNil(scatterDimension)) {\n const refinedDimensions = R.reject(isRefAreaDimension, dimensions);\n scatterDimension = R.head(R.isEmpty(refinedDimensions) ? dimensions : refinedDimensions);\n }\n\n const values = R.prop('values', scatterDimension);\n\n const stateScatterX = R.prop('scatterX', state);\n let stateScatterY = R.prop('scatterY', state);\n\n if (stateScatterX === stateScatterY) {\n stateScatterY = undefined;\n }\n\n let _scatterX = undefined;\n let _scatterY = undefined;\n\n R.forEach(\n (value) => {\n if (R.prop('id', value) === stateScatterX) {\n _scatterX = value;\n }\n else if (R.prop('id', value) === stateScatterY) {\n _scatterY = value;\n }\n },\n values\n );\n\n //dirty as f\n const scatterX = R.isNil(_scatterX)\n ? R.head(R.reject(R.propEq('id', R.prop('id', _scatterY)), values))\n : _scatterX;\n const scatterY = R.isNil(_scatterY)\n ? R.head(R.reject(R.propEq('id', R.prop('id', scatterX)), values))\n : _scatterY;\n\n const scatterState = toScatterState(\n scatterDimension,\n scatterX,\n scatterY,\n );\n\n return ({\n ...scatterState,\n ...focusStateFromNewProps(\n props,\n toScatterSingularity(scatterState),\n state\n )\n });\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import * as R from 'ramda';
2
+ import { VALUES, PERCENT, STACKED_BAR, STACKED_ROW } from '../constants.js';
3
+ import { toState, getDimensionsWithValues, getPropertyDimension, getGroupedDimensions } from './utils.js';
4
+ import { splitDimensions } from '../index.js';
5
+ import { focusStateFromNewProps } from './focus.js';
6
+
7
+ const getStackedDimension = getPropertyDimension('stackedDimension');
8
+
9
+ const stackedModes = { [PERCENT]: PERCENT, [VALUES]: VALUES };
10
+
11
+ const isStacked = (type) => type === STACKED_BAR || type === STACKED_ROW;
12
+
13
+ const toStackedState = (dimension, mode) => ({
14
+ stackedDimension: toState(dimension),
15
+ stackedMode: mode,
16
+ });
17
+
18
+ const toStackedSingularity = (state) => ({
19
+ id: R.prop('stackedDimension', state),
20
+ mode: R.prop('stackedMode', state),
21
+ limit: 5
22
+ });
23
+
24
+ const onChangeStackedDimension = ({ data }, state) => (value) => {
25
+ const dimension = getStackedDimension(data, { stackedDimension: value });
26
+ if (R.isNil(dimension)) {
27
+ return ({});
28
+ }
29
+ return ({
30
+ stackedDimension: toState(dimension),
31
+ highlight: [],
32
+ baseline: [],
33
+ })
34
+ };
35
+
36
+ const stackedModeOptions = [{ value: VALUES }, { value: PERCENT }];
37
+
38
+ const isStackedDimActive = ({ data, type }) => {
39
+ const { values } = splitDimensions(data);
40
+ if (R.length(values) < 2) {
41
+ return false;
42
+ }
43
+ return isStacked(type);
44
+ };
45
+
46
+ const onChangeStackedMode = (value) => R.has(value, stackedModes)
47
+ ? ({ stackedMode: value })
48
+ : ({});
49
+
50
+ const stackedStateFromNewProps = (props, state) => {
51
+ const { data, type } = props;
52
+ if (!isStacked(type)) {
53
+ return toStackedState(undefined, undefined);
54
+ }
55
+ if (R.isNil(data)) {
56
+ return {};
57
+ }
58
+ const dimensions = getDimensionsWithValues(data);
59
+ if (R.isEmpty(dimensions)) {
60
+ return { ...toStackedState(undefined, undefined), baseline: [], highlight: [] };
61
+ }
62
+
63
+ let dimension = getStackedDimension(data, state);
64
+ if (R.isNil(dimension)) {
65
+ const { value, values } = splitDimensions(data);
66
+ if (R.length(values) === 1) {
67
+ dimension = R.head(value);
68
+ }
69
+ else {
70
+ const { area, time, other } = getGroupedDimensions(data);
71
+ if (!R.isNil(area) && !R.isEmpty(area)) {
72
+ dimension = R.head(area);
73
+ }
74
+ else if (!R.isNil(time) && !R.isEmpty(time)) {
75
+ dimension = R.head(time);
76
+ }
77
+ else {
78
+ dimension = R.head(other);
79
+ }
80
+ }
81
+ }
82
+ const _mode = R.prop('stackedMode', state);
83
+ const mode = R.has(_mode, stackedModes) ? _mode : VALUES;
84
+ const stackedState = toStackedState(dimension, mode);
85
+ return ({
86
+ ...stackedState,
87
+ ...focusStateFromNewProps(
88
+ props,
89
+ toStackedSingularity(stackedState),
90
+ state
91
+ )
92
+ });
93
+ };
94
+
95
+ export { isStacked, isStackedDimActive, onChangeStackedDimension, onChangeStackedMode, stackedModeOptions, stackedStateFromNewProps, toStackedSingularity };
96
+ //# sourceMappingURL=stacked.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stacked.js","sources":["../../../../src/rules/src/properties/stacked.js"],"sourcesContent":["import * as R from 'ramda';\nimport { PERCENT, STACKED_BAR, STACKED_ROW, VALUES } from '../constants';\nimport {\n getDimensionsWithValues,\n getGroupedDimensions,\n getPropertyDimension,\n toState\n} from './utils';\nimport { splitDimensions } from '../';\nimport { focusStateFromNewProps } from './focus';\n\nconst getStackedDimension = getPropertyDimension('stackedDimension');\n\nconst stackedModes = { [PERCENT]: PERCENT, [VALUES]: VALUES };\n\nexport const isStacked = (type) => type === STACKED_BAR || type === STACKED_ROW;\n\nconst toStackedState = (dimension, mode) => ({\n stackedDimension: toState(dimension),\n stackedMode: mode,\n});\n\nexport const toStackedSingularity = (state) => ({\n id: R.prop('stackedDimension', state),\n mode: R.prop('stackedMode', state),\n limit: 5\n});\n\nexport const onChangeStackedDimension = ({ data }, state) => (value) => {\n const dimension = getStackedDimension(data, { stackedDimension: value });\n if (R.isNil(dimension)) {\n return ({});\n }\n return ({\n stackedDimension: toState(dimension),\n highlight: [],\n baseline: [],\n })\n};\n\nexport const stackedModeOptions = [{ value: VALUES }, { value: PERCENT }];\n\nexport const isStackedDimActive = ({ data, type }) => {\n const { values } = splitDimensions(data);\n if (R.length(values) < 2) {\n return false;\n }\n return isStacked(type);\n};\n\nexport const onChangeStackedMode = (value) => R.has(value, stackedModes)\n ? ({ stackedMode: value })\n : ({});\n\nexport const stackedStateFromNewProps = (props, state) => {\n const { data, type } = props;\n if (!isStacked(type)) {\n return toStackedState(undefined, undefined);\n }\n if (R.isNil(data)) {\n return {};\n }\n const dimensions = getDimensionsWithValues(data);\n if (R.isEmpty(dimensions)) {\n return { ...toStackedState(undefined, undefined), baseline: [], highlight: [] };\n }\n\n let dimension = getStackedDimension(data, state);\n if (R.isNil(dimension)) {\n const { value, values } = splitDimensions(data);\n if (R.length(values) === 1) {\n dimension = R.head(value);\n }\n else {\n const { area, time, other } = getGroupedDimensions(data);\n if (!R.isNil(area) && !R.isEmpty(area)) {\n dimension = R.head(area);\n }\n else if (!R.isNil(time) && !R.isEmpty(time)) {\n dimension = R.head(time)\n }\n else {\n dimension = R.head(other);\n }\n }\n }\n const _mode = R.prop('stackedMode', state);\n const mode = R.has(_mode, stackedModes) ? _mode : VALUES;\n const stackedState = toStackedState(dimension, mode);\n return ({\n ...stackedState,\n ...focusStateFromNewProps(\n props,\n toStackedSingularity(stackedState), \n state\n )\n });\n}\n"],"names":[],"mappings":";;;;;;AAWA,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC;;AAEpE,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE;;AAEjD,MAAC,SAAS,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK;;AAEpE,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,IAAI,MAAM;AAC7C,EAAE,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC;AACtC,EAAE,WAAW,EAAE,IAAI;AACnB,CAAC,CAAC;;AAEU,MAAC,oBAAoB,GAAG,CAAC,KAAK,MAAM;AAChD,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;AACvC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;AACpC,EAAE,KAAK,EAAE;AACT,CAAC;;AAEW,MAAC,wBAAwB,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,KAAK,CAAC,KAAK,KAAK;AACxE,EAAE,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;AAC1E,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAC1B,IAAI,QAAQ,EAAE;AACd,EAAE;AACF,EAAE,QAAQ;AACV,IAAI,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC;AACxC,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,QAAQ,EAAE,EAAE;AAChB,GAAG;AACH;;AAEY,MAAC,kBAAkB,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;;AAE5D,MAAC,kBAAkB,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;AACtD,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC;AAC1C,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC;AACxB;;AAEY,MAAC,mBAAmB,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY;AACvE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;AAC3B,KAAK,EAAE;;AAEK,MAAC,wBAAwB,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK;AAC1D,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK;AAC9B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACxB,IAAI,OAAO,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC;AAC/C,EAAE;AACF,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACrB,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAClD,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC7B,IAAI,OAAO,EAAE,GAAG,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;AACnF,EAAE;;AAEF,EAAE,IAAI,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC;AAClD,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAC1B,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC;AACnD,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,IAAI;AACJ,SAAS;AACT,MAAM,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAC9D,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC9C,QAAQ,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,MAAM;AACN,WAAW,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACnD,QAAQ,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI;AAC/B,MAAM;AACN,WAAW;AACX,QAAQ,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;AAC5C,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,KAAK,GAAG,MAAM;AAC1D,EAAE,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC;AACtD,EAAE,QAAQ;AACV,IAAI,GAAG,YAAY;AACnB,IAAI,GAAG,sBAAsB;AAC7B,MAAM,KAAK;AACX,MAAM,oBAAoB,CAAC,YAAY,CAAC;AACxC,MAAM;AACN;AACA,GAAG;AACH;;;;"}
@@ -0,0 +1,76 @@
1
+ import * as R from 'ramda';
2
+ import { H_SYMBOL, V_SYMBOL } from '../constants.js';
3
+ import { toState, getDimensionsWithValues, getPropertyDimension, getGroupedDimensions } from './utils.js';
4
+ import { focusStateFromNewProps } from './focus.js';
5
+
6
+ const getSymbolDimension = getPropertyDimension('symbolDimension');
7
+
8
+ const isSymbol = (type) => (type === H_SYMBOL || type === V_SYMBOL);
9
+
10
+ const toSymbolState = (dimension) => ({
11
+ symbolDimension: toState(dimension)
12
+ });
13
+
14
+ const toSymbolSingularity = (data, state) => {
15
+ const symbolDimension = getSymbolDimension(data, state);
16
+ const res = ({
17
+ id: R.isNil(symbolDimension) ? undefined : R.prop('id', symbolDimension),
18
+ serie: R.pipe(
19
+ R.prop('values'),
20
+ values => R.isNil(values) ? [] : values,
21
+ R.take(5)
22
+ )(symbolDimension),
23
+ });
24
+ return res;
25
+ };
26
+
27
+ const symbolStateFromNewProps = (props, state) => {
28
+ const { data, type } = props;
29
+ if (!isSymbol(type)) {
30
+ return toSymbolState(undefined);
31
+ }
32
+ if (R.isNil(data)) {
33
+ return {};
34
+ }
35
+ const dimensions = getDimensionsWithValues(data);
36
+ if (R.isEmpty(dimensions)) {
37
+ return { ...toSymbolState(undefined), baseline: [], highlight: [] };
38
+ }
39
+ let symbolDimension = getSymbolDimension(data, state);
40
+ if (R.isNil(symbolDimension)) {
41
+ const { area, other, time } = getGroupedDimensions(data);
42
+ if (!R.isNil(other) && !R.isEmpty(other)) {
43
+ symbolDimension = R.head(other);
44
+ }
45
+ else if (!R.isNil(time) && !R.isEmpty(time)) {
46
+ symbolDimension = R.head(time);
47
+ }
48
+ else {
49
+ symbolDimension = R.head(area);
50
+ }
51
+ }
52
+ const symbolState = toSymbolState(symbolDimension);
53
+ return ({
54
+ ...symbolState,
55
+ ...focusStateFromNewProps(
56
+ props,
57
+ toSymbolSingularity(data, symbolState),
58
+ state
59
+ )
60
+ });
61
+ };
62
+
63
+ const onChangeSymbolDim = ({ data }) => (option) => {
64
+ const dimension = getSymbolDimension(data, { symbolDimension: option });
65
+ if (R.isNil(dimension)) {
66
+ return ({});
67
+ }
68
+ return ({
69
+ ...toSymbolState(dimension),
70
+ highlight: [],
71
+ baseline: [],
72
+ });
73
+ };
74
+
75
+ export { isSymbol, onChangeSymbolDim, symbolStateFromNewProps, toSymbolSingularity };
76
+ //# sourceMappingURL=symbol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol.js","sources":["../../../../src/rules/src/properties/symbol.js"],"sourcesContent":["import * as R from 'ramda';\nimport { extractSdmxArtefacts } from '../';\nimport { H_SYMBOL, V_SYMBOL } from '../constants';\nimport {\n getDimensionsWithValues,\n getGroupedDimensions,\n getPropertyDimension,\n toState\n} from './utils';\nimport { focusStateFromNewProps } from './focus';\n\nconst getSymbolDimension = getPropertyDimension('symbolDimension');\n\nexport const isSymbol = (type) => (type === H_SYMBOL || type === V_SYMBOL);\n\nconst toSymbolState = (dimension) => ({\n symbolDimension: toState(dimension)\n});\n\nexport const toSymbolSingularity = (data, state) => {\n const symbolDimension = getSymbolDimension(data, state);\n const res = ({\n id: R.isNil(symbolDimension) ? undefined : R.prop('id', symbolDimension),\n serie: R.pipe(\n R.prop('values'),\n values => R.isNil(values) ? [] : values,\n R.take(5)\n )(symbolDimension),\n });\n return res;\n};\n\nexport const symbolStateFromNewProps = (props, state) => {\n const { data, type } = props;\n if (!isSymbol(type)) {\n return toSymbolState(undefined);\n }\n if (R.isNil(data)) {\n return {};\n }\n const dimensions = getDimensionsWithValues(data);\n if (R.isEmpty(dimensions)) {\n return { ...toSymbolState(undefined), baseline: [], highlight: [] };\n }\n let symbolDimension = getSymbolDimension(data, state);\n if (R.isNil(symbolDimension)) {\n const { area, other, time } = getGroupedDimensions(data);\n if (!R.isNil(other) && !R.isEmpty(other)) {\n symbolDimension = R.head(other);\n }\n else if (!R.isNil(time) && !R.isEmpty(time)) {\n symbolDimension = R.head(time);\n }\n else {\n symbolDimension = R.head(area);\n }\n }\n const symbolState = toSymbolState(symbolDimension);\n return ({\n ...symbolState,\n ...focusStateFromNewProps(\n props,\n toSymbolSingularity(data, symbolState),\n state\n )\n });\n};\n\nexport const onChangeSymbolDim = ({ data }) => (option) => {\n const dimension = getSymbolDimension(data, { symbolDimension: option });\n if (R.isNil(dimension)) {\n return ({});\n }\n return ({\n ...toSymbolState(dimension),\n highlight: [],\n baseline: [],\n });\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { has, pipe, isNil, prop, equals, length, map, omit, head, is, find, propEq, not, groupBy } from 'ramda';
2
+ import { isRefAreaDimension, isTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';
3
+ import { splitDimensions, extractSdmxArtefacts, parseDisplay } from '../index.js';
4
+ import { TYPES, STACKED_BAR, STACKED_ROW, CHORO } from '../constants.js';
5
+ import { dimensionValueDisplay } from '../dimension-utils.js';
6
+
7
+ const isNumber = (input) => {
8
+ const value = Number(input);
9
+ return not(isNil(value) || isNaN(value));
10
+ };
11
+
12
+ const isPositiveNumber = (input) => {
13
+ return (isNumber(input) && Number(input) >= 0);
14
+ };
15
+
16
+ const isNaturalInt = value => isNil(value) || /^\d+$/.test(String(value));
17
+
18
+ const isChart = (type) => has(type, TYPES);
19
+
20
+ const hasFocus = (type) => has(type, omit([CHORO], TYPES));
21
+
22
+ const getDimensionsWithValues = (data) => pipe(
23
+ splitDimensions,
24
+ prop('values'),
25
+ )(data);
26
+
27
+ const toState = (artefact) => prop('id', artefact);
28
+
29
+ const getPropertyDimension = (property) => (data, state) => {
30
+ const statePropertyDimensionId = prop(property, state);
31
+ const { dimensions } = extractSdmxArtefacts(data);
32
+ return find(
33
+ propEq('id', statePropertyDimensionId),
34
+ dimensions
35
+ );
36
+ };
37
+
38
+ const getGroupedDimensions = pipe(
39
+ getDimensionsWithValues,
40
+ groupBy(
41
+ dimension => {
42
+ if (isRefAreaDimension(dimension)) {
43
+ return 'area';
44
+ }
45
+ if (isTimePeriodDimension(dimension)) {
46
+ return 'time';
47
+ }
48
+ return 'other';
49
+ }
50
+ )
51
+ );
52
+
53
+ const optionParser = option => pipe(
54
+ option => is(Array, option) ? head(option) : option,
55
+ option => is(Object, option) ? prop('value', option) : option,
56
+ option => is(String, option) ? option : undefined
57
+ )(option);
58
+
59
+ const artefactToOption = (display) => (artefact) => isNil(artefact)
60
+ ? undefined
61
+ : {
62
+ label: dimensionValueDisplay(parseDisplay(display))(artefact),
63
+ value: prop('id', artefact)
64
+ };
65
+
66
+ const chartDimensionToOption = (property) => ({ data, display }, state) => pipe(
67
+ getPropertyDimension(property),
68
+ artefactToOption(display)
69
+ )(data, state);
70
+
71
+ const chartDimensionOptions = ({ data, type, display }, typeValidator) => {
72
+ if (!typeValidator(type)) {
73
+ return [];
74
+ }
75
+ const dimensions = prop('values', splitDimensions(data));
76
+ if ((equals(type, STACKED_BAR) || equals(type, STACKED_ROW)) && length(dimensions) === 1) {
77
+ return [];
78
+ }
79
+ return map(
80
+ artefactToOption(display),
81
+ dimensions
82
+ );
83
+ };
84
+
85
+ export { artefactToOption, chartDimensionOptions, chartDimensionToOption, getDimensionsWithValues, getGroupedDimensions, getPropertyDimension, hasFocus, isChart, isNaturalInt, isNumber, isPositiveNumber, optionParser, toState };
86
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/rules/src/properties/utils.js"],"sourcesContent":["import {\n equals,\n find,\n groupBy,\n has,\n head,\n is,\n isNil,\n length,\n map,\n not,\n omit,\n pipe,\n prop,\n propEq,\n} from 'ramda';\nimport { isRefAreaDimension, isTimePeriodDimension } from '@sis-cc/dotstatsuite-sdmxjs';\nimport { extractSdmxArtefacts, parseDisplay, splitDimensions } from '../';\nimport { CHORO, STACKED_BAR, STACKED_ROW, TYPES } from '../constants';\nimport { dimensionValueDisplay } from '../dimension-utils';\n\nexport const isNumber = (input) => {\n const value = Number(input);\n return not(isNil(value) || isNaN(value));\n};\n\nexport const isPositiveNumber = (input) => {\n return (isNumber(input) && Number(input) >= 0);\n};\n\nexport const isNaturalInt = value => isNil(value) || /^\\d+$/.test(String(value));\n\nexport const isInt = value => isNil(value) || /^-?\\d+$/.test(String(value));\n\nexport const isChart = (type) => has(type, TYPES);\n\nexport const hasFocus = (type) => has(type, omit([CHORO], TYPES));\n\nexport const getDimensionsWithValues = (data) => pipe(\n splitDimensions,\n prop('values'),\n)(data);\n\nexport const toState = (artefact) => prop('id', artefact);\n\nexport const getPropertyDimension = (property) => (data, state) => {\n const statePropertyDimensionId = prop(property, state);\n const { dimensions } = extractSdmxArtefacts(data);\n return find(\n propEq('id', statePropertyDimensionId),\n dimensions\n );\n};\n\nexport const getGroupedDimensions = pipe(\n getDimensionsWithValues,\n groupBy(\n dimension => {\n if (isRefAreaDimension(dimension)) {\n return 'area';\n }\n if (isTimePeriodDimension(dimension)) {\n return 'time';\n }\n return 'other';\n }\n )\n);\n\nexport const optionParser = option => pipe(\n option => is(Array, option) ? head(option) : option,\n option => is(Object, option) ? prop('value', option) : option,\n option => is(String, option) ? option : undefined\n)(option);\n\nexport const optionsParser = selection => pipe(\n selection => is(Array, selection) ? selection : [selection],\n selection => map(optionParser, selection)\n)(selection);\n\nexport const artefactToOption = (display) => (artefact) => isNil(artefact)\n ? undefined\n : {\n label: dimensionValueDisplay(parseDisplay(display))(artefact),\n value: prop('id', artefact)\n };\n\nexport const dimensionWithValuesToOptions = ({ data, display }) => pipe(\n getDimensionsWithValues,\n map(artefactToOption(display))\n)(data);\n\nexport const chartDimensionToOption = (property) => ({ data, display }, state) => pipe(\n getPropertyDimension(property),\n artefactToOption(display)\n)(data, state);\n\nexport const chartDimensionOptions = ({ data, type, display }, typeValidator) => {\n if (!typeValidator(type)) {\n return [];\n }\n const dimensions = prop('values', splitDimensions(data));\n if ((equals(type, STACKED_BAR) || equals(type, STACKED_ROW)) && length(dimensions) === 1) {\n return [];\n }\n return map(\n artefactToOption(display),\n dimensions\n );\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import * as R from 'ramda';
2
+
3
+ const LAYOUT_ROW = 'LAYOUT_ROW';
4
+ const LAYOUT_COLUMN = 'LAYOUT_COLUMN';
5
+ const LAYOUT_ROW_SECTION = 'LAYOUT_ROW_SECTION';
6
+
7
+ const ROWS = 'rows';
8
+ const HEADER = 'header';
9
+ const SECTIONS = 'sections';
10
+ const NOT_DISPLAYED = 'NOT_DISPLAYED';
11
+
12
+ const getType = R.propOr({}, 'type');
13
+ const getIds = (stringIds = '') => R.pipe(
14
+ R.append(R.split(',', stringIds)),
15
+ R.flatten
16
+ );
17
+ const getPivot = (key, stringIds) => R.over(R.lensProp(key), getIds(stringIds));
18
+
19
+ const setAnnotationsLayout = (stringIds, layout) => R.reduce((acc, annotation) => {
20
+ if (R.equals(getType(annotation), LAYOUT_ROW)) return getPivot(ROWS, stringIds)(acc);
21
+ if (R.equals(getType(annotation), LAYOUT_COLUMN)) return getPivot(HEADER, stringIds)(acc);
22
+ if (R.equals(getType(annotation), LAYOUT_ROW_SECTION)) return getPivot(SECTIONS, stringIds)(acc);
23
+ return acc;
24
+ }, layout);
25
+
26
+ const getRelationnalAnnotations = annotationIndexes => annotations => R.map(annotationIndex =>
27
+ R.propOr({}, annotationIndex)(annotations)
28
+ )(annotationIndexes);
29
+
30
+ const getIsHidden = annotations => R.pipe(
31
+ R.find(R.propEq('type', NOT_DISPLAYED)),
32
+ R.complement(R.isNil)
33
+ )(annotations);
34
+
35
+ const getFullName = R.identity;
36
+
37
+ export { LAYOUT_COLUMN, LAYOUT_ROW, LAYOUT_ROW_SECTION, getFullName, getIsHidden, getRelationnalAnnotations, setAnnotationsLayout };
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/rules/src/sdmx-data/index.js"],"sourcesContent":["import * as R from 'ramda';\n\nexport const LAYOUT_ROW = 'LAYOUT_ROW';\nexport const LAYOUT_COLUMN = 'LAYOUT_COLUMN';\nexport const LAYOUT_ROW_SECTION = 'LAYOUT_ROW_SECTION';\n\nconst ROWS = 'rows';\nconst HEADER = 'header';\nconst SECTIONS = 'sections';\n\nconst ORDER = 'ORDER';\nconst NOT_DISPLAYED = 'NOT_DISPLAYED';\n\nconst getType = R.propOr({}, 'type');\nconst getIds = (stringIds = '') => R.pipe(\n R.append(R.split(',', stringIds)),\n R.flatten\n);\nconst getPivot = (key, stringIds) => R.over(R.lensProp(key), getIds(stringIds));\n\nexport const setAnnotationsLayout = (stringIds, layout) => R.reduce((acc, annotation) => {\n if (R.equals(getType(annotation), LAYOUT_ROW)) return getPivot(ROWS, stringIds)(acc);\n if (R.equals(getType(annotation), LAYOUT_COLUMN)) return getPivot(HEADER, stringIds)(acc);\n if (R.equals(getType(annotation), LAYOUT_ROW_SECTION)) return getPivot(SECTIONS, stringIds)(acc);\n return acc;\n}, layout);\n\nexport const getRelationnalAnnotations = annotationIndexes => annotations => R.map(annotationIndex =>\n R.propOr({}, annotationIndex)(annotations)\n)(annotationIndexes);\n\nexport const hiddenFormat = { isHidden: true }\n\nexport const getIsHidden = annotations => R.pipe(\n R.find(R.propEq('type', NOT_DISPLAYED)),\n R.complement(R.isNil)\n)(annotations);\n\nexport const getFullName = R.identity;"],"names":[],"mappings":";;AAEY,MAAC,UAAU,GAAG;AACd,MAAC,aAAa,GAAG;AACjB,MAAC,kBAAkB,GAAG;;AAElC,MAAM,IAAI,GAAG,MAAM;AACnB,MAAM,MAAM,GAAG,QAAQ;AACvB,MAAM,QAAQ,GAAG,UAAU;AAG3B,MAAM,aAAa,GAAG,eAAe;;AAErC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC;AACpC,MAAM,MAAM,GAAG,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI;AACzC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACnC,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;;AAEnE,MAAC,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,KAAK;AACzF,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC;AACtF,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC;AAC3F,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,EAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC;AAClG,EAAE,OAAO,GAAG;AACZ,CAAC,EAAE,MAAM;;AAEG,MAAC,yBAAyB,GAAG,iBAAiB,IAAI,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe;AAClG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,WAAW;AAC3C,CAAC,CAAC,iBAAiB;;AAIP,MAAC,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC,IAAI;AAChD,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AACzC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK;AACtB,CAAC,CAAC,WAAW;;AAED,MAAC,WAAW,GAAG,CAAC,CAAC;;;;"}
@@ -0,0 +1,53 @@
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
+ 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
+ };
51
+
52
+ export { getCellValue };
53
+ //# sourceMappingURL=getCellValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCellValue.js","sources":["../../../../../src/rules/src/table/factories/getCellValue.js"],"sourcesContent":["import * as R from 'ramda';\nimport numeral from 'numeral';\n\nconst isValidNumber = R.both(R.is(Number), R.complement(R.equals(NaN)));\n\nexport const getCellValue = (observation) => {\n const value = R.prop('value', observation);\n if (R.is(Boolean, value)) {\n return value;\n }\n if (R.is(String, value)) { \n const monthMatch = value.match(/^\\-\\-([\\d]{2})$/);\n if (R.is(Array, monthMatch)) {\n return R.nth(1, monthMatch); \n }\n const monthDayMatch = value.match(/^\\-\\-([\\d]{2}\\-[\\d]{2})$/);\n if (R.is(Array, monthDayMatch)) {\n return R.nth(1, monthDayMatch); \n }\n const dayMatch = value.match(/^\\-\\-\\-([\\d]{2})$/);\n if (R.is(Array, dayMatch)) {\n return R.nth(1, dayMatch);\n }\n return value;\n }\n const scale = Number(observation.prefscale);\n const formatScale = R.ifElse(\n R.always(isValidNumber(scale)),\n value => numeral(value).multiply(Math.pow(10, -1 * Number(scale))).value(),\n R.identity\n );\n const formatSeparator = value => numeral(value).format(`0,0.[0000000]`);\n const decimals = Number(observation.decimals);\n const formatDecimals = R.ifElse(\n R.always(isValidNumber(decimals)),\n value => numeral(value).format(\n R.ifElse(R.equals(0), R.always('0,0'), d => `0,0.${R.join('', R.times(R.always('0'), d))}`)(decimals)\n ),\n formatSeparator\n );\n const res = R.ifElse(\n isValidNumber,\n R.pipe(\n formatScale,\n formatDecimals,\n ),\n R.always('..')\n )(observation.value);\n return res;\n};\n"],"names":[],"mappings":"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"}