@sis-cc/dotstatsuite-components 22.6.0 → 23.1.0

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 (199) hide show
  1. package/LICENSE +1 -1
  2. package/dist/bridge-d3-react/src/index.js +1 -2
  3. package/dist/bridge-d3-react/src/index.js.map +1 -1
  4. package/dist/node_modules/@mui/styles/StylesProvider/StylesProvider.js +2 -2
  5. package/dist/node_modules/css-vendor/dist/css-vendor.esm.js +1 -1
  6. package/dist/node_modules/jss/dist/jss.esm.js +1 -1
  7. package/dist/rules/src/chart/getChartOptions.js +1 -1
  8. package/dist/rules/src/chart/getChartOptions.js.map +1 -1
  9. package/dist/rules/src/constants.js +1 -35
  10. package/dist/rules/src/constants.js.map +1 -1
  11. package/dist/rules/src/dimension-utils.js +26 -24
  12. package/dist/rules/src/dimension-utils.js.map +1 -1
  13. package/dist/rules/src/factories/choro-series.js +43 -32
  14. package/dist/rules/src/factories/choro-series.js.map +1 -1
  15. package/dist/rules/src/factories/focus.js +20 -0
  16. package/dist/rules/src/factories/focus.js.map +1 -0
  17. package/dist/rules/src/factories/getChartSeries.js +11 -0
  18. package/dist/rules/src/factories/getChartSeries.js.map +1 -0
  19. package/dist/rules/src/factories/sample-focus.js +14 -18
  20. package/dist/rules/src/factories/sample-focus.js.map +1 -1
  21. package/dist/rules/src/factories/sample-series.js +20 -20
  22. package/dist/rules/src/factories/sample-series.js.map +1 -1
  23. package/dist/rules/src/factories/scatter-focus.js +21 -35
  24. package/dist/rules/src/factories/scatter-focus.js.map +1 -1
  25. package/dist/rules/src/factories/scatter-series.js +5 -5
  26. package/dist/rules/src/factories/scatter-series.js.map +1 -1
  27. package/dist/rules/src/factories/series.js +48 -0
  28. package/dist/rules/src/factories/series.js.map +1 -0
  29. package/dist/rules/src/factories/stacked-series.js +6 -7
  30. package/dist/rules/src/factories/stacked-series.js.map +1 -1
  31. package/dist/rules/src/factories/symbol-series.js +39 -46
  32. package/dist/rules/src/factories/symbol-series.js.map +1 -1
  33. package/dist/rules/src/factories/timeline-focus.js +10 -14
  34. package/dist/rules/src/factories/timeline-focus.js.map +1 -1
  35. package/dist/rules/src/factories/timeline-series.js +37 -41
  36. package/dist/rules/src/factories/timeline-series.js.map +1 -1
  37. package/dist/rules/src/get-values-enhanced.js +6 -0
  38. package/dist/rules/src/get-values-enhanced.js.map +1 -1
  39. package/dist/rules/src/index.js +6 -371
  40. package/dist/rules/src/index.js.map +1 -1
  41. package/dist/rules/src/layout.js +4 -2
  42. package/dist/rules/src/layout.js.map +1 -1
  43. package/dist/rules/src/observation-formater.js +8 -14
  44. package/dist/rules/src/observation-formater.js.map +1 -1
  45. package/dist/rules/src/properties/focus.js +51 -3
  46. package/dist/rules/src/properties/focus.js.map +1 -1
  47. package/dist/rules/src/properties/getHeaderProps.js +2 -53
  48. package/dist/rules/src/properties/getHeaderProps.js.map +1 -1
  49. package/dist/rules/src/properties/index.js +7 -98
  50. package/dist/rules/src/properties/index.js.map +1 -1
  51. package/dist/rules/src/properties/linear.js +5 -5
  52. package/dist/rules/src/properties/linear.js.map +1 -1
  53. package/dist/rules/src/properties/scatter.js +5 -5
  54. package/dist/rules/src/properties/scatter.js.map +1 -1
  55. package/dist/rules/src/properties/stacked.js +5 -7
  56. package/dist/rules/src/properties/stacked.js.map +1 -1
  57. package/dist/rules/src/properties/symbol.js +1 -1
  58. package/dist/rules/src/properties/symbol.js.map +1 -1
  59. package/dist/rules/src/properties/utils.js +11 -12
  60. package/dist/rules/src/properties/utils.js.map +1 -1
  61. package/dist/rules/src/sdmx-data/index.js +2 -27
  62. package/dist/rules/src/sdmx-data/index.js.map +1 -1
  63. package/dist/rules2/src/combinedValuesDisplay.js +2 -2
  64. package/dist/rules2/src/combinedValuesDisplay.js.map +1 -1
  65. package/dist/rules2/src/getAttributes.js +37 -0
  66. package/dist/rules2/src/getAttributes.js.map +1 -0
  67. package/dist/rules2/src/getDataflowTooltipAttributesIds.js +2 -2
  68. package/dist/rules2/src/getDataflowTooltipAttributesIds.js.map +1 -1
  69. package/dist/rules2/src/getHeaderCombinations.js +1 -1
  70. package/dist/rules2/src/getHeaderCombinations.js.map +1 -1
  71. package/dist/rules2/src/getHeaderSubtitle.js +1 -1
  72. package/dist/rules2/src/getHeaderSubtitle.js.map +1 -1
  73. package/dist/rules2/src/getHeaderTitle.js +1 -1
  74. package/dist/rules2/src/getHeaderTitle.js.map +1 -1
  75. package/dist/rules2/src/getMetadataCoordinates.js +1 -1
  76. package/dist/rules2/src/getMetadataCoordinates.js.map +1 -1
  77. package/dist/rules2/src/getNotDisplayedIds.js +1 -1
  78. package/dist/rules2/src/getNotDisplayedIds.js.map +1 -1
  79. package/dist/rules2/src/index.js +1 -0
  80. package/dist/rules2/src/index.js.map +1 -1
  81. package/dist/rules2/src/parseAttributes.js +2 -2
  82. package/dist/rules2/src/parseAttributes.js.map +1 -1
  83. package/dist/rules2/src/parseHierarchicalCodelist.js +1 -1
  84. package/dist/rules2/src/parseHierarchicalCodelist.js.map +1 -1
  85. package/dist/rules2/src/parseMetadataSeries.js +1 -1
  86. package/dist/rules2/src/parseMetadataSeries.js.map +1 -1
  87. package/dist/rules2/src/prepareData.js +10 -3
  88. package/dist/rules2/src/prepareData.js.map +1 -1
  89. package/dist/rules2/src/refineDimensions.js +53 -8
  90. package/dist/rules2/src/refineDimensions.js.map +1 -1
  91. package/dist/rules2/src/table/getCells.js +1 -1
  92. package/dist/rules2/src/table/getCells.js.map +1 -1
  93. package/dist/rules2/src/table/getLayout.js +1 -1
  94. package/dist/rules2/src/table/getLayout.js.map +1 -1
  95. package/dist/rules2/src/table/getTableLayoutIds.js +1 -1
  96. package/dist/rules2/src/table/getTableLayoutIds.js.map +1 -1
  97. package/dist/rules2/src/table/getTableProps.js +0 -1
  98. package/dist/rules2/src/table/getTableProps.js.map +1 -1
  99. package/dist/rules2/src/table/parseValueHierarchy.js.map +1 -1
  100. package/dist/rules2/src/table/refineLayoutSize2.js +1 -1
  101. package/dist/rules2/src/table/refineLayoutSize2.js.map +1 -1
  102. package/dist/rules2/src/utils.js.map +1 -1
  103. package/dist/viewer/src/chart.js +13 -2
  104. package/dist/viewer/src/chart.js.map +1 -1
  105. package/dist/viewer/src/legends/FocusLegend.js +1 -1
  106. package/dist/viewer/src/legends/FocusLegend.js.map +1 -1
  107. package/package.json +6 -5
  108. package/src/bridge-d3-react/src/index.js +0 -1
  109. package/src/rules/src/chart/getChartOptions.js +2 -2
  110. package/src/rules/src/constants.js +0 -35
  111. package/src/rules/src/dimension-utils.js +25 -23
  112. package/src/rules/src/factories/choro-series.js +41 -30
  113. package/src/rules/src/factories/focus.js +17 -0
  114. package/src/rules/src/factories/getChartSeries.js +8 -0
  115. package/src/rules/src/factories/sample-focus.js +14 -18
  116. package/src/rules/src/factories/sample-series.js +20 -20
  117. package/src/rules/src/factories/scatter-focus.js +22 -36
  118. package/src/rules/src/factories/scatter-series.js +8 -8
  119. package/src/rules/src/factories/series.js +45 -0
  120. package/src/rules/src/factories/stacked-series.js +4 -5
  121. package/src/rules/src/factories/symbol-series.js +37 -44
  122. package/src/rules/src/factories/timeline-focus.js +10 -14
  123. package/src/rules/src/factories/timeline-series.js +35 -39
  124. package/src/rules/src/get-values-enhanced.js +6 -0
  125. package/src/rules/src/index.js +7 -384
  126. package/src/rules/src/layout.js +4 -2
  127. package/src/rules/src/observation-formater.js +14 -20
  128. package/src/rules/src/properties/focus.js +50 -2
  129. package/src/rules/src/properties/getHeaderProps.js +1 -53
  130. package/src/rules/src/properties/index.js +2 -93
  131. package/src/rules/src/properties/linear.js +2 -2
  132. package/src/rules/src/properties/scatter.js +4 -4
  133. package/src/rules/src/properties/stacked.js +4 -6
  134. package/src/rules/src/properties/symbol.js +0 -1
  135. package/src/rules/src/properties/utils.js +11 -21
  136. package/src/rules/src/sdmx-data/index.js +2 -31
  137. package/src/rules2/src/combinedValuesDisplay.js +2 -2
  138. package/src/rules2/src/getAttributes.js +34 -0
  139. package/src/rules2/src/getDataflowTooltipAttributesIds.js +2 -2
  140. package/src/rules2/src/getHeaderCombinations.js +1 -1
  141. package/src/rules2/src/getHeaderSubtitle.js +2 -2
  142. package/src/rules2/src/getHeaderTitle.js +1 -1
  143. package/src/rules2/src/getMetadataCoordinates.js +1 -1
  144. package/src/rules2/src/getNotDisplayedIds.js +1 -1
  145. package/src/rules2/src/index.js +1 -0
  146. package/src/rules2/src/parseAttributes.js +2 -2
  147. package/src/rules2/src/parseHierarchicalCodelist.js +1 -1
  148. package/src/rules2/src/parseMetadataSeries.js +1 -1
  149. package/src/rules2/src/prepareData.js +10 -3
  150. package/src/rules2/src/refineDimensions.js +53 -8
  151. package/src/rules2/src/table/getCells.js +2 -2
  152. package/src/rules2/src/table/getLayout.js +2 -2
  153. package/src/rules2/src/table/getTableLayoutIds.js +9 -9
  154. package/src/rules2/src/table/getTableProps.js +0 -1
  155. package/src/rules2/src/table/parseValueHierarchy.js +0 -7
  156. package/src/rules2/src/table/refineLayoutSize2.js +5 -5
  157. package/src/rules2/src/utils.js +0 -11
  158. package/src/viewer/src/app/leg.js +0 -1
  159. package/src/viewer/src/chart.jsx +23 -1
  160. package/src/viewer/src/legends/FocusLegend.jsx +1 -1
  161. package/dist/rules/src/factories/scatter-dimension.js +0 -35
  162. package/dist/rules/src/factories/scatter-dimension.js.map +0 -1
  163. package/dist/rules/src/factories/stacked-dimension.js +0 -32
  164. package/dist/rules/src/factories/stacked-dimension.js.map +0 -1
  165. package/dist/rules/src/factories/symbol-dimension.js +0 -32
  166. package/dist/rules/src/factories/symbol-dimension.js.map +0 -1
  167. package/dist/rules/src/header/getDefaultSubtitle.js +0 -44
  168. package/dist/rules/src/header/getDefaultSubtitle.js.map +0 -1
  169. package/dist/rules/src/header/getHeaderUnits.js +0 -21
  170. package/dist/rules/src/header/getHeaderUnits.js.map +0 -1
  171. package/dist/rules/src/header/getSubtitleFlags.js +0 -47
  172. package/dist/rules/src/header/getSubtitleFlags.js.map +0 -1
  173. package/dist/rules/src/header/getTitleFlags.js +0 -12
  174. package/dist/rules/src/header/getTitleFlags.js.map +0 -1
  175. package/dist/rules/src/properties/errors.js +0 -22
  176. package/dist/rules/src/properties/errors.js.map +0 -1
  177. package/dist/rules/src/properties/getInformationsStateFromNewProps.js +0 -50
  178. package/dist/rules/src/properties/getInformationsStateFromNewProps.js.map +0 -1
  179. package/dist/rules/src/v8-transformer.js +0 -174
  180. package/dist/rules/src/v8-transformer.js.map +0 -1
  181. package/src/bridge-d3-react/src/app.js +0 -64
  182. package/src/bridge-d3-react/src/mock-choro.js +0 -394
  183. package/src/rules/src/factories/scatter-dimension.js +0 -32
  184. package/src/rules/src/factories/stacked-dimension.js +0 -29
  185. package/src/rules/src/factories/symbol-dimension.js +0 -29
  186. package/src/rules/src/header/getDefaultSubtitle.js +0 -40
  187. package/src/rules/src/header/getHeaderUnits.js +0 -17
  188. package/src/rules/src/header/getSubtitleFlags.js +0 -43
  189. package/src/rules/src/header/getTitleFlags.js +0 -8
  190. package/src/rules/src/header/index.js +0 -4
  191. package/src/rules/src/preparators/enhanceObservations.js +0 -152
  192. package/src/rules/src/properties/errors.js +0 -19
  193. package/src/rules/src/properties/getInformationsStateFromNewProps.js +0 -47
  194. package/src/rules/src/properties/information.js +0 -84
  195. package/src/rules/src/v8-transformer.js +0 -177
  196. package/src/rules2/src/getAdvAttrSeriesAtCoordinates.js +0 -29
  197. package/src/rules2/src/getMetadataStructureFromData.js +0 -17
  198. package/src/rules2/src/refineMetadataCoordinates.js +0 -28
  199. package/src/rules2/src/table/getCombinationDimensionsData.js +0 -39
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/rules/src/index.js"],"sourcesContent":["import {\n get, partition, reject, isEmpty, map, compact, size, keyBy, pick, omit, isNil, flatten, reduce,\n filter, find, includes, isArray, findIndex, isEqual\n} from 'lodash';\nimport * as R from 'ramda';\nimport memoizee from 'memoizee';\nimport __sampleSeries from './factories/sample-series';\nimport __sampleFocus from './factories/sample-focus';\nimport __scatterSeries from './factories/scatter-series';\nimport __scatterFocus from './factories/scatter-focus';\nimport __scatterDimension from './factories/scatter-dimension';\nimport __symbolSeries from './factories/symbol-series';\nimport __symbolDimension from './factories/symbol-dimension';\nimport __timelineSeries from './factories/timeline-series';\nimport __timelineFocus from './factories/timeline-focus';\nimport __stackedSeries from './factories/stacked-series';\nimport __stackedDimension from './factories/stacked-dimension';\nimport __choroSeries from './factories/choro-series';\nimport {\n DEFAULT_UPR_IDS, DEFAULT_REJECTED_UPR_VALUES_IDS, DEFAULT_REJECTED_SUBTITLE_IDS,\n FREQ_A, FREQ_Q, FREQ_M\n} from './constants';\nimport { dimensionValueDisplay } from './dimension-utils';\nimport { getObservationsFormaterAttributes } from './observation-formater';\n\nexport const freqA = FREQ_A;\nexport const freqQ = FREQ_Q;\nexport const freqM = FREQ_M;\n\n// --------------------------------------------------------------------------------extractSdmxErrors\nconst _extractSdmxErrors = (data) => R.compose(\n (errors) => map(errors, (error) => ({ label: error.code, description: error.message })),\n (data) => get(data, 'errors', [])\n);\nexport const extractSdmxErrors = memoizee(_extractSdmxErrors);\n\nexport const extractDataName = (data) => R.pathOr(null, ['structure', 'name'], data);\n\n// -----------------------------------------------------------------------------extractSdmxArtefacts\nconst _extractSdmxArtefacts = (data) => {\n const parseStructure = (data) => get(data, 'structure', {});\n const parseItem = (item) => parseComponents(get(item, 'observation', []));\n const parseDimensions = (structure) => parseItem(get(structure, 'dimensions', {}));\n const parseAttributes = (structure) => parseItem(get(structure, 'attributes', {}));\n const parseComponents = (components) => map(components, parseComponent);\n const parseComponent = (component, index) => {\n let parsed = { ...pick(component, 'id', 'name', 'values', 'role', 'isHidden'), index };\n if (isEmpty(parsed))\n return parsed;\n if (isNil(parsed.role))\n parsed.role = parsed.id;\n parsed.values = R.sortBy(R.prop('__index'))(parsed.values);\n return parsed;\n };\n const parseDatasetItem = (item) => parseComponents(get(item, 'dataSet', []));\n const parseDatasetAttributes = (structure) => parseDatasetItem(get(structure, 'attributes', {}));\n\n return {\n attributes: parseAttributes(parseStructure(data)),\n datasetAttributes: parseDatasetAttributes(parseStructure(data)),\n dimensions: parseDimensions(parseStructure(data)),\n id: get(data, 'header.id', null),\n name: extractDataName(data),\n observations: R.pipe(\n R.pathOr({}, ['dataSets', 0, 'observations']),\n R.mapObjIndexed(obs => R.over(R.lensIndex(0), val => R.isNil(val) ? null : Number(val))(obs)),\n R.reject(R.pipe(R.head, R.anyPass([R.isNil, isNaN]))),\n )(data),\n source: get(data, 'header.links[0].href', null),\n };\n};\nexport const extractSdmxArtefacts = memoizee(_extractSdmxArtefacts);\n\nconst _getRelevantsDatasetAttributes = (data) => {\n const { datasetAttributes } = extractSdmxArtefacts(data);\n return filter(datasetAttributes, attr => size(attr.values) === 1);\n};\nexport const getRelevantsDatasetAttributes = memoizee(_getRelevantsDatasetAttributes);\n\n// -------------------------------------------------------------------------------getDimensionValues\nexport const getDimensionValues = (dimension) => get(dimension, 'values', []);\n\n// ----------------------------------------------------------------------------------splitDimensions\nconst _splitDimensions = (data) => {\n const { dimensions } = extractSdmxArtefacts(data);\n const [value, values] = partition(\n reject(dimensions, R.compose(isEmpty, getDimensionValues)),\n R.compose((values) => size(values) === 1, getDimensionValues)\n );\n return { value, values };\n}\nexport const splitDimensions = memoizee(_splitDimensions);\n\n// ------------------------------------------------------------------dimensionsWithValuesIndexedById\nconst _dimensionsWithValuesIndexedById = (data) => R.compose(\n (dimensionsWithValues) => keyBy(dimensionsWithValues, 'id'),\n (split) => split.values,\n splitDimensions\n)(data);\nexport const dimensionsWithValuesIndexedById = memoizee(_dimensionsWithValuesIndexedById);\n\n// -------------------------------------------------------------------------------------parseDisplay\nconst _parseDisplay = (display) =>\n (isNil(display) || !(includes(['both', 'code'], display)))\n ? 'label' : display;\nexport const parseDisplay = memoizee(_parseDisplay);\n\n// -------------------------------------------------------------------------------------sampleSeries\nconst _sampleSeries = (data, type, display, formaterIds) => __sampleSeries(\n type,\n extractSdmxArtefacts(data),\n dimensionsWithValuesIndexedById(data),\n parseDisplay(display),\n getObservationsFormaterAttributes(data, formaterIds)\n);\nexport const sampleSeries = memoizee(_sampleSeries);\n\n// ---------------------------------------------------------------------------------scatterDimension\nconst _scatterDimension = (data, ids) => {\n const { values } = splitDimensions(data);\n return __scatterDimension(values, ids);\n};\nexport const scatterDimension = memoizee(_scatterDimension);\n\n// ----------------------------------------------------------------------------------symbolDimension\nconst _symbolDimension = (data, ids) => {\n const { values } = splitDimensions(data);\n return __symbolDimension(values, ids);\n};\nexport const symbolDimension = memoizee(_symbolDimension);\n\nconst _stackedDimension = (data, singularity) => {\n return __stackedDimension(splitDimensions(data), singularity);\n}\nexport const stackedDimension = memoizee(_stackedDimension);\n\n// ------------------------------------------------------------------------------------scatterSeries\nconst _scatterSeries = (data, ids, display, formaterIds) => __scatterSeries(\n extractSdmxArtefacts(data),\n dimensionsWithValuesIndexedById(data),\n scatterDimension(data, ids),\n parseDisplay(display),\n getObservationsFormaterAttributes(data, formaterIds)\n);\nexport const scatterSeries = memoizee(_scatterSeries);\n\n// -------------------------------------------------------------------------------------symbolSeries\nconst _symbolSeries = (data, type, ids, display, formaterIds) => __symbolSeries(\n extractSdmxArtefacts(data),\n type,\n dimensionsWithValuesIndexedById(data),\n symbolDimension(data, ids),\n parseDisplay(display),\n getObservationsFormaterAttributes(data, formaterIds)\n);\nexport const symbolSeries = memoizee(_symbolSeries);\n\n// -----------------------------------------------------------------------------------timelineSeries\nconst _timelineSeries = (data, display, formaterIds) => __timelineSeries(\n extractSdmxArtefacts(data),\n dimensionsWithValuesIndexedById(data),\n parseDisplay(display),\n getObservationsFormaterAttributes(data, formaterIds)\n);\nexport const timelineSeries = memoizee(_timelineSeries);\n\nconst _stackedSeries = (data, singularity, display, formaterIds, [stackKey, categoryKey]) => __stackedSeries(\n extractSdmxArtefacts(data),\n dimensionsWithValuesIndexedById(data),\n stackedDimension(data, singularity),\n parseDisplay(display),\n getObservationsFormaterAttributes(data, formaterIds),\n [stackKey, categoryKey]\n);\nexport const stackedSeries = memoizee(_stackedSeries);\n\n// --------------------------------------------------------------------------------------choroSeries\nconst _choroSeries = (data, map, display) => __choroSeries(\n extractSdmxArtefacts(data),\n dimensionsWithValuesIndexedById(data),\n map,\n parseDisplay(display)\n);\nexport const choroSeries = memoizee(_choroSeries);\n\n// -------------------------------------------------------------------------------------------series\nconst _series = (data, type, focus, singularity, map, display, formaterIds) => {\n switch(type) {\n case 'RowChart': case 'BarChart':\n return __sampleFocus(sampleSeries(data, type, display, formaterIds), focus);\n case 'ScatterChart':\n return __scatterFocus(scatterSeries(data, singularity, display, formaterIds), focus);\n case 'HorizontalSymbolChart': case 'VerticalSymbolChart':\n return __sampleFocus(symbolSeries(data, type, singularity, display, formaterIds), focus);\n case 'TimelineChart':\n return __timelineFocus(timelineSeries(data, display, formaterIds), focus);\n case 'StackedBarChart':\n return __sampleFocus(stackedSeries(data, singularity, display, formaterIds, ['y', 'x']), focus);\n case 'StackedRowChart':\n return __sampleFocus(stackedSeries(data, singularity, display, formaterIds, ['x', 'y']), focus);\n case 'ChoroplethChart':\n return choroSeries(data, map, display);\n }\n};\nexport const series = memoizee(_series);\n\n// -------------------------------------------------------------------------------------------source\nconst _source = (data, config, meta) => {\n const hasSource = get(meta, 'hasSource', true);\n if (!hasSource)\n return null;\n const source = get(config, 'source', null);\n if (source && !(isEmpty(source)))\n return source;\n const artefacts = extractSdmxArtefacts(data);\n const uri = get(artefacts, 'source');\n if (!uri)\n return get(config, 'defaultSource', null);\n const match = uri.match(/(^http.*)\\/SDMX-JSON\\/data\\/([^\\/]+)\\//);\n if (size(match) !== 3)\n return null;\n const [m, domain, dataset] = match;\n return `${domain}/Index.aspx?DataSetCode=${dataset}`; //tmp\n};\nexport const source = memoizee(_source);\n\n// --------------------------------------------------------------------------------------------focus\nconst _focus = (data, type, dimension, _display) => {\n const display = parseDisplay(_display);\n switch(type) {\n case 'RowChart': case 'BarChart':\n case 'HorizontalSymbolChart': case 'VerticalSymbolChart':\n case 'StackedBarChart': case 'StackedRowChart':\n return R.compose(\n (datapoints) => map(datapoints, (dp) => ({ label: dp.category, value: dp.key })),\n (series) => series[0].datapoints,\n series\n )(data, type, null, dimension, null, display);\n case 'TimelineChart':\n return R.compose(\n (series) => map(series, (serie) => ({ label: serie.category, value: serie.key })),\n series\n )(data, type, null, dimension, null, display)\n case 'ScatterChart':\n const id = get(dimension, 'id');\n if (isNil(id)) return [];\n const dimensions = R.compose(\n (dimensions) => omit(dimensions, id),\n dimensionsWithValuesIndexedById\n )(data);\n return flatten(map(\n dimensions,\n (dimension) => {\n return map(\n get(dimension, 'values'),\n (value) => ({\n label: `${dimensionValueDisplay(display)(dimension)} - ${dimensionValueDisplay(display)(value)}`,\n options: { dimensionId: dimension.id, dimensionValueId: value.id },\n value: `${dimension.id}-${value.id}`\n })\n )\n }\n ));\n }\n};\nexport const focus = memoizee(_focus);\n\nconst _parseFocus = (data, type, dimension, display, { baseline, highlight }) => {\n const options = focus(data, type, dimension, display);\n\n const parseSelection = selection => compact(map(selection, ({ value }) => find(options, option => isEqual(option.value, value))));\n return ({ baseline: parseSelection(baseline), highlight: parseSelection(highlight) });\n};\nexport const parseFocus = memoizee(_parseFocus);\n\nconst _defaultSubtitle = (data, display, REJECTED_SUBTITLE_IDS = DEFAULT_REJECTED_SUBTITLE_IDS) => {\n const { value } = splitDimensions(data);\n const values = reduce(\n R.reject(R.prop('isHidden'))(value),\n (memo, d) => {\n const dvId = get(d, 'values[0].id');\n if (!includes(REJECTED_SUBTITLE_IDS, dvId)) {\n memo.push(`${dimensionValueDisplay(display)(d)}: ${dimensionValueDisplay(display)(get(d, 'values[0]'))}`);\n }\n return memo;\n },\n []\n );\n return values;\n}\nexport const defaultSubtitle = memoizee(_defaultSubtitle);\n\nconst _uprAttributes = (attributes, UPR_IDS = DEFAULT_UPR_IDS) => (\n reduce(\n UPR_IDS,\n (memo, ids, uprKey) => {\n const attr = find(attributes, attribute => includes(ids, get(attribute, 'id')));\n if (attr) {\n memo[uprKey] = attr;\n }\n return memo;\n },\n {}\n )\n);\nexport const uprAttributes = memoizee(_uprAttributes);\n\nconst _uprAttributesWithOneRelevantValue = (uprAttributes, UPR_IDS = DEFAULT_UPR_IDS, REJECTED_UPR_VALUES_IDS = DEFAULT_REJECTED_UPR_VALUES_IDS) => reduce(\n uprAttributes,\n (memo, attr, key) => {\n if (size(get(attr, 'values', [])) === 1 && !(includes(REJECTED_UPR_VALUES_IDS[key], get(attr, 'values[0].id', ''))))\n memo[key] = attr;\n return memo;\n },\n {}\n);\nexport const uprAttributesWithOneRelevantValue = memoizee(_uprAttributesWithOneRelevantValue);\n\nexport const headerUprsLabel = display => uprAttributes => {\n return map(\n uprAttributes,\n attr => dimensionValueDisplay(display)(get(attr, 'values[0]'))\n ).join(', ');\n}\n\nexport const getUprs = (data, display) => R.compose(\n headerUprsLabel(parseDisplay(display)),\n uprAttributesWithOneRelevantValue,\n ({ attributes }) => uprAttributes(attributes),\n extractSdmxArtefacts\n)(data);\n\nconst _header = (data, _title, _subtitle, _display) => {\n const display = parseDisplay(_display);\n const title = (isNil(_title) || isEmpty(_title)) ? get(data, 'structure.name') : _title;\n const subtitle = (isNil(_subtitle) || isEmpty(_subtitle)) ? defaultSubtitle(data, display) : _subtitle;\n return ({\n title,\n subtitle: isArray(subtitle) ? subtitle : [subtitle],\n uprs: R.compose(\n headerUprsLabel(display),\n uprAttributesWithOneRelevantValue,\n ({ attributes }) => uprAttributes(attributes),\n extractSdmxArtefacts\n )(data)\n });\n};\nexport const header = memoizee(_header);\n\nconst _sourceLabel = (data, label) => (\n (isNil(label) || isEmpty(label)) ? extractSdmxArtefacts(data).name : label\n);\nexport const sourceLabel = memoizee(_sourceLabel);\n\nconst _getTopologyAreasCollections = (topology) => map(topology.objects, (entry, key) => key);\nexport const getTopologyAreasCollections = memoizee(_getTopologyAreasCollections);\n\nconst _isNonIdealState = (data, type, map) => {\n const defaultSeries = series(data, type, null, null, map);\n if (type === 'ChoroplethChart')\n {\n return findIndex(get(defaultSeries, 'objects.areas.geometries', []), geometry => get(geometry, 'properties.value', null)) === -1;\n }\n return isEmpty(get(defaultSeries, '[0].datapoints', []));\n}\nexport const isNonIdealState = memoizee(_isNonIdealState);\n\nexport { dimensionValueDisplay } from './dimension-utils';\nexport { DEFAULT_UPR_IDS, DIMENSION_DISPLAY_PARTS, DEFAULT_MAJOR_ATTRIBUTES, V8_SDMX_JSON,\n TYPES as chartTypes } from './constants';\nexport {\n initialState,\n stateFromNewProps,\n onChangeProperties,\n toChartData,\n toChartOptions,\n toProperties,\n getErrors,\n toSingularity\n} from './properties';\nexport { dataTransformer as v8Transformer } from './v8-transformer';\nexport {\n getCellValue,\n} from './table';\nexport {\n getFullName,\n} from './sdmx-data';\nexport { getTimePeriodLabel } from './date';\nexport { getHeaderProps, getFooterProps, } from './properties/getHeaderProps';\nexport { getInformationsStateFromNewProps } from './properties/getInformationsStateFromNewProps';\nexport { getObservationsType } from './properties/getObservationsType';\nexport { getAvailableChartTypes } from './properties/getAvailableChartTypes';\nexport { isSharedLayoutCompatible } from './layout';\n\nexport { getObservations } from './preparators/getObservations';\n\nexport const getFlags = R.identity;\nexport const prepareData = R.identity;\n\nexport { getChartOptions } from './chart/getChartOptions';"],"names":["__sampleFocus","__scatterFocus","__timelineFocus"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,13 +1,15 @@
1
1
  import * as R from 'ramda';
2
2
  import { SCATTER, H_SYMBOL, V_SYMBOL, STACKED_BAR, STACKED_ROW } from './constants.js';
3
+ import { getReportingYearStart } from './preparators/getReportingYearStart.js';
3
4
  import { parseCombinationDefinition, getCombinationDefinitions } from '../../rules2/src/getCombinationDefinitions.js';
4
5
  import { refineDimensions } from '../../rules2/src/refineDimensions.js';
5
6
 
6
7
  const isTableLayoutCompatible = (data, layout, combinationsDefinitions = [], dataquery = '') => {
7
8
  const indexedCombinations = R.indexBy(R.prop('id'), combinationsDefinitions);
9
+ const reportYearStart = getReportingYearStart(data);
8
10
  const indexedManyValuesDimensions = R.pipe(
9
11
  R.pathOr([], ['structure', 'dimensions', 'observation']),
10
- dimensions => refineDimensions(dimensions, dataquery),
12
+ dimensions => refineDimensions({ dimensions, options: { dataquery, reportYearStart } }),
11
13
  R.reject(d => R.prop('header', d) || !R.length(d.values || [])),
12
14
  R.indexBy(R.prop('id'))
13
15
  )(data);
@@ -34,7 +36,7 @@ const isScatterLayoutCompatible = (data, chartDimension) => {
34
36
 
35
37
  const dimensions = R.pathOr([], ['structure', 'dimensions', 'observation'], data);
36
38
 
37
- const dimension = R.find(R.propEq('id', id), dimensions);
39
+ const dimension = R.find(R.propEq(id, 'id'), dimensions);
38
40
  if (R.isNil(dimension)) {
39
41
  return false;
40
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sources":["../../../src/rules/src/layout.js"],"sourcesContent":["import * as R from 'ramda';\nimport {\n H_SYMBOL,\n SCATTER,\n STACKED_BAR,\n STACKED_ROW,\n V_SYMBOL\n} from './constants';\nimport {\n getCombinationDefinitions,\n refineDimensions,\n parseCombinationDefinition\n} from '../../rules2/src';\n\nconst isTableLayoutCompatible = (data, layout, combinationsDefinitions = [], dataquery = '') => {\n const indexedCombinations = R.indexBy(R.prop('id'), combinationsDefinitions);\n const indexedManyValuesDimensions = R.pipe(\n R.pathOr([], ['structure', 'dimensions', 'observation']),\n dimensions => refineDimensions(dimensions, dataquery),\n R.reject(d => R.prop('header', d) || !R.length(d.values || [])),\n R.indexBy(R.prop('id'))\n )(data);\n let remainings = indexedManyValuesDimensions;\n const layoutIds = R.pipe(R.values, R.unnest)(layout);\n let hasFoundIrrelevant = false;\n R.forEach(id => {\n if (R.has(id, indexedManyValuesDimensions)) {\n remainings = R.dissoc(id, remainings);\n }\n else if (R.has(id, indexedCombinations)) {\n remainings = R.omit(R.pathOr([], [id, 'concepts'], indexedCombinations), remainings);\n }\n else if (id !== 'OBS_ATTRIBUTES') {\n hasFoundIrrelevant = true;\n }\n }, layoutIds);\n return R.isEmpty(remainings) && !hasFoundIrrelevant;\n};\n\n\nconst isScatterLayoutCompatible = (data, chartDimension) => {\n const { id, xId, yId } = chartDimension;\n\n const dimensions = R.pathOr([], ['structure', 'dimensions', 'observation'], data);\n\n const dimension = R.find(R.propEq('id', id), dimensions);\n if (R.isNil(dimension)) {\n return false;\n }\n return R.pipe(\n R.propOr([], 'values'),\n R.indexBy(R.prop('id')),\n R.pick([xId, yId]),\n R.values,\n R.length,\n R.equals(2)\n )(dimension);\n};\n\nconst isSymbolLayoutCompatible = (data, chartDimension) => {\n const { id, serie } = chartDimension;\n const serieIds = R.pluck('id',serie);\n\n return R.pipe(\n R.pathOr([], ['structure', 'dimensions', 'observation']),\n R.indexBy(R.prop('id')),\n R.pathOr([], [id, 'values']),\n R.indexBy(R.prop('id')),\n R.pick(serieIds),\n R.values,\n R.length,\n R.equals(R.length(serieIds))\n )(data);\n};\n\nconst isStackedLayoutCompatible = (data, chartDimension) => {\n const { id } = chartDimension;\n\n return R.pipe(\n R.pathOr([], ['structure', 'dimensions', 'observation']),\n R.filter(R.pipe(R.propOr([], 'values'), R.length, R.lt(1))),\n R.indexBy(R.prop('id')),\n R.has(id)\n )(data);\n};\n\nconst isChartLayoutCompatible = (data, type, chartDimension) => {\n return R.cond([\n [R.always(R.equals(SCATTER, type)), isScatterLayoutCompatible],\n [R.always(R.equals(H_SYMBOL, type) || R.equals(V_SYMBOL, type)), isSymbolLayoutCompatible],\n [R.always(R.anyPass([R.equals(STACKED_BAR), R.equals(STACKED_ROW)])(type)), isStackedLayoutCompatible],\n [R.T, R.T]\n ])(data, chartDimension);\n};\n\nexport const isSharedLayoutCompatible = (sdmxData, sharedData) => {\n const type = R.prop('type', sharedData);\n if (type === 'table') {\n const layoutIds = R.pathOr({}, ['config', 'table', 'layoutIds'], sharedData);\n const dataquery = R.path(['config', 'sdmxSource', 'dataquery'], sharedData);\n const annotations = R.pathOr({}, ['structure', 'annotations'], sdmxData)\n const locale = R.pathOr({}, ['config', 'table', 'locale'], sharedData);\n const rawDefaultCombinationsDefinition = R.pathOr({}, ['config', 'defaultCombinations'], sharedData);\n const { concepts='', names='' } = rawDefaultCombinationsDefinition;\n const defaultCombinationsDefinition = parseCombinationDefinition(locale)(concepts, names);\n const customCombinationsDefinitions = getCombinationDefinitions(annotations, locale);\n const combinationsDefinitions = R.isNil(customCombinationsDefinitions) || R.isEmpty(customCombinationsDefinitions)\n ? defaultCombinationsDefinition : customCombinationsDefinitions;\n return isTableLayoutCompatible(sdmxData, layoutIds, combinationsDefinitions, dataquery);\n }\n const chartDimension = R.pathOr({}, ['config', 'chart', 'chartDimension'], sharedData);\n return isChartLayoutCompatible(sdmxData, type, chartDimension);\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sources":["../../../src/rules/src/layout.js"],"sourcesContent":["import * as R from 'ramda';\nimport {\n H_SYMBOL,\n SCATTER,\n STACKED_BAR,\n STACKED_ROW,\n V_SYMBOL\n} from './constants';\nimport {\n getCombinationDefinitions,\n refineDimensions,\n parseCombinationDefinition\n} from '../../rules2/src';\nimport { getReportingYearStart } from './/preparators/getReportingYearStart';\n\nconst isTableLayoutCompatible = (data, layout, combinationsDefinitions = [], dataquery = '') => {\n const indexedCombinations = R.indexBy(R.prop('id'), combinationsDefinitions);\n const reportYearStart = getReportingYearStart(data);\n const indexedManyValuesDimensions = R.pipe(\n R.pathOr([], ['structure', 'dimensions', 'observation']),\n dimensions => refineDimensions({ dimensions, options: { dataquery, reportYearStart } }),\n R.reject(d => R.prop('header', d) || !R.length(d.values || [])),\n R.indexBy(R.prop('id'))\n )(data);\n let remainings = indexedManyValuesDimensions;\n const layoutIds = R.pipe(R.values, R.unnest)(layout);\n let hasFoundIrrelevant = false;\n R.forEach(id => {\n if (R.has(id, indexedManyValuesDimensions)) {\n remainings = R.dissoc(id, remainings);\n }\n else if (R.has(id, indexedCombinations)) {\n remainings = R.omit(R.pathOr([], [id, 'concepts'], indexedCombinations), remainings);\n }\n else if (id !== 'OBS_ATTRIBUTES') {\n hasFoundIrrelevant = true;\n }\n }, layoutIds);\n return R.isEmpty(remainings) && !hasFoundIrrelevant;\n};\n\n\nconst isScatterLayoutCompatible = (data, chartDimension) => {\n const { id, xId, yId } = chartDimension;\n\n const dimensions = R.pathOr([], ['structure', 'dimensions', 'observation'], data);\n\n const dimension = R.find(R.propEq(id, 'id'), dimensions);\n if (R.isNil(dimension)) {\n return false;\n }\n return R.pipe(\n R.propOr([], 'values'),\n R.indexBy(R.prop('id')),\n R.pick([xId, yId]),\n R.values,\n R.length,\n R.equals(2)\n )(dimension);\n};\n\nconst isSymbolLayoutCompatible = (data, chartDimension) => {\n const { id, serie } = chartDimension;\n const serieIds = R.pluck('id',serie);\n\n return R.pipe(\n R.pathOr([], ['structure', 'dimensions', 'observation']),\n R.indexBy(R.prop('id')),\n R.pathOr([], [id, 'values']),\n R.indexBy(R.prop('id')),\n R.pick(serieIds),\n R.values,\n R.length,\n R.equals(R.length(serieIds))\n )(data);\n};\n\nconst isStackedLayoutCompatible = (data, chartDimension) => {\n const { id } = chartDimension;\n\n return R.pipe(\n R.pathOr([], ['structure', 'dimensions', 'observation']),\n R.filter(R.pipe(R.propOr([], 'values'), R.length, R.lt(1))),\n R.indexBy(R.prop('id')),\n R.has(id)\n )(data);\n};\n\nconst isChartLayoutCompatible = (data, type, chartDimension) => {\n return R.cond([\n [R.always(R.equals(SCATTER, type)), isScatterLayoutCompatible],\n [R.always(R.equals(H_SYMBOL, type) || R.equals(V_SYMBOL, type)), isSymbolLayoutCompatible],\n [R.always(R.anyPass([R.equals(STACKED_BAR), R.equals(STACKED_ROW)])(type)), isStackedLayoutCompatible],\n [R.T, R.T]\n ])(data, chartDimension);\n};\n\nexport const isSharedLayoutCompatible = (sdmxData, sharedData) => {\n const type = R.prop('type', sharedData);\n if (type === 'table') {\n const layoutIds = R.pathOr({}, ['config', 'table', 'layoutIds'], sharedData);\n const dataquery = R.path(['config', 'sdmxSource', 'dataquery'], sharedData);\n const annotations = R.pathOr({}, ['structure', 'annotations'], sdmxData)\n const locale = R.pathOr({}, ['config', 'table', 'locale'], sharedData);\n const rawDefaultCombinationsDefinition = R.pathOr({}, ['config', 'defaultCombinations'], sharedData);\n const { concepts='', names='' } = rawDefaultCombinationsDefinition;\n const defaultCombinationsDefinition = parseCombinationDefinition(locale)(concepts, names);\n const customCombinationsDefinitions = getCombinationDefinitions(annotations, locale);\n const combinationsDefinitions = R.isNil(customCombinationsDefinitions) || R.isEmpty(customCombinationsDefinitions)\n ? defaultCombinationsDefinition : customCombinationsDefinitions;\n return isTableLayoutCompatible(sdmxData, layoutIds, combinationsDefinitions, dataquery);\n }\n const chartDimension = R.pathOr({}, ['config', 'chart', 'chartDimension'], sharedData);\n return isChartLayoutCompatible(sdmxData, type, chartDimension);\n};\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,5 @@
1
- import memoizee from 'memoizee';
2
1
  import numeral from 'numeral';
3
2
  import * as R from 'ramda';
4
- import { extractSdmxArtefacts } from './index.js';
5
3
 
6
4
  const DEFAULT_PREFSCALE_ATTR_IDS = ["PREF_SCALE"];
7
5
 
@@ -23,17 +21,13 @@ const parseAttributeFormaterIds = (ids = {}) => {
23
21
  });
24
22
  };
25
23
 
26
- const _getObservationsFormaterAttributes = (data, ids) => R.pipe(
27
- extractSdmxArtefacts,
28
- ({ attributes }) => {
29
- const { decimals, prefscale } = parseAttributeFormaterIds(ids);
30
- return ({
31
- decimals: getFormaterAttribute(decimals, attributes),
32
- prefscale: getFormaterAttribute(prefscale, attributes)
33
- });
34
- }
35
- )(data);
36
- const getObservationsFormaterAttributes = memoizee(_getObservationsFormaterAttributes);
24
+ const getObservationsFormaterAttributes = (attributes = [], ids = {}) => {
25
+ const { decimals, prefscale } = parseAttributeFormaterIds(ids);
26
+ return ({
27
+ decimals: getFormaterAttribute(decimals, attributes),
28
+ prefscale: getFormaterAttribute(prefscale, attributes)
29
+ });
30
+ };
37
31
 
38
32
  const getObservationFormaterValue = (observation, attribute) => {
39
33
  const attributeIndex = R.prop('index', attribute);
@@ -82,5 +76,5 @@ const getFormatedObservation = (observation, formaterAttributes) => {
82
76
  return formater(R.head(observation));
83
77
  };
84
78
 
85
- export { DEFAULT_DECIMALS_ATTR_IDS, DEFAULT_PREFSCALE_ATTR_IDS, _getObservationsFormaterAttributes, getFormatedObservation, getFormaterAttribute, getObservationFormater, getObservationFormaterValue, getObservationFormaterValues, getObservationsFormaterAttributes, makeObservationFormater, parseAttributeFormaterIds };
79
+ export { getFormatedObservation, getObservationFormater, getObservationsFormaterAttributes };
86
80
  //# sourceMappingURL=observation-formater.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observation-formater.js","sources":["../../../src/rules/src/observation-formater.js"],"sourcesContent":["import memoizee from 'memoizee';\nimport numeral from 'numeral';\nimport * as R from 'ramda';\nimport { extractSdmxArtefacts } from './';\n\nexport const DEFAULT_PREFSCALE_ATTR_IDS = [\"PREF_SCALE\"];\n\nexport const DEFAULT_DECIMALS_ATTR_IDS = [\"DECIMALS\"];\n\nexport const getFormaterAttribute = (ids, attributes) => R.find(\n (attr) => R.includes(attr.id, ids),\n attributes\n);\n\nexport const parseAttributeFormaterIds = (ids = {}) => {\n let prefscale = R.prop('prefscale', ids);\n let decimals = R.prop('decimals', ids);\n decimals = R.isNil(decimals) ? DEFAULT_DECIMALS_ATTR_IDS : decimals;\n prefscale = R.isNil(prefscale) ? DEFAULT_PREFSCALE_ATTR_IDS : prefscale;\n return ({\n decimals: R.is(Array, decimals) ? decimals : [decimals],\n prefscale: R.is(Array, prefscale) ? prefscale : [prefscale],\n });\n}\n\nexport const _getObservationsFormaterAttributes = (data, ids) => R.pipe(\n extractSdmxArtefacts,\n ({ attributes }) => {\n const { decimals, prefscale } = parseAttributeFormaterIds(ids);\n return ({\n decimals: getFormaterAttribute(decimals, attributes),\n prefscale: getFormaterAttribute(prefscale, attributes)\n });\n }\n)(data);\nexport const getObservationsFormaterAttributes = memoizee(_getObservationsFormaterAttributes);\n\nexport const getObservationFormaterValue = (observation, attribute) => {\n const attributeIndex = R.prop('index', attribute);\n const attributeValueIndex = R.nth(attributeIndex, observation);\n return R.nth(attributeValueIndex, R.propOr([], 'values', attribute));\n}\n\nexport const getObservationFormaterValues = (formaterAttributes) => (observation) => ({\n decimals: getObservationFormaterValue(observation, R.prop('decimals', formaterAttributes)),\n prefscale: getObservationFormaterValue(observation, R.prop('prefscale', formaterAttributes)),\n});\n\nexport const makeObservationFormater = (formaterValues) => {\n let prefscale = 0;\n if (!R.isNil(R.prop('prefscale', formaterValues))) {\n prefscale = Number(R.propOr('0', 'id', formaterValues.prefscale));\n }\n let decimals = null;\n if (!R.isNil(R.prop('decimals', formaterValues))) {\n let _decimals = Number(R.prop('id', formaterValues.decimals));\n decimals = R.is(Number, _decimals) && !Number.isNaN(_decimals)\n ? _decimals : null;\n }\n let format = '0,0';\n if (R.isNil(decimals)) {\n format = R.concat(format, '.[0000000]');\n }\n else if (decimals > 0) {\n format = R.concat(format, `.[${'0'.repeat(decimals)}]`);\n }\n return value => numeral(Number(value))\n .multiply(Math.pow(10, R.negate(prefscale)))\n .format(format);\n};\n\nexport const getObservationFormater = (observation, formaterAttributes) => {\n return R.pipe(\n R.tail,\n getObservationFormaterValues(formaterAttributes),\n makeObservationFormater\n )(observation);\n}\n\nexport const getFormatedObservation = (observation, formaterAttributes) => {\n const formater = getObservationFormater(observation, formaterAttributes);\n return formater(R.head(observation));\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observation-formater.js","sources":["../../../src/rules/src/observation-formater.js"],"sourcesContent":["import numeral from 'numeral';\nimport * as R from 'ramda';\n\nconst DEFAULT_PREFSCALE_ATTR_IDS = [\"PREF_SCALE\"];\n\nconst DEFAULT_DECIMALS_ATTR_IDS = [\"DECIMALS\"];\n\nconst getFormaterAttribute = (ids, attributes) => R.find(\n (attr) => R.includes(attr.id, ids),\n attributes\n);\n\nconst parseAttributeFormaterIds = (ids = {}) => {\n let prefscale = R.prop('prefscale', ids);\n let decimals = R.prop('decimals', ids);\n decimals = R.isNil(decimals) ? DEFAULT_DECIMALS_ATTR_IDS : decimals;\n prefscale = R.isNil(prefscale) ? DEFAULT_PREFSCALE_ATTR_IDS : prefscale;\n return ({\n decimals: R.is(Array, decimals) ? decimals : [decimals],\n prefscale: R.is(Array, prefscale) ? prefscale : [prefscale],\n });\n}\n\nexport const getObservationsFormaterAttributes = (attributes = [], ids = {}) => {\n const { decimals, prefscale } = parseAttributeFormaterIds(ids);\n return ({\n decimals: getFormaterAttribute(decimals, attributes),\n prefscale: getFormaterAttribute(prefscale, attributes)\n });\n};\n\nconst getObservationFormaterValue = (observation, attribute) => {\n const attributeIndex = R.prop('index', attribute);\n const attributeValueIndex = R.nth(attributeIndex, observation);\n return R.nth(attributeValueIndex, R.propOr([], 'values', attribute));\n}\n\nconst getObservationFormaterValues = (formaterAttributes) => (observation) => ({\n decimals: getObservationFormaterValue(observation, R.prop('decimals', formaterAttributes)),\n prefscale: getObservationFormaterValue(observation, R.prop('prefscale', formaterAttributes)),\n});\n\nconst makeObservationFormater = (formaterValues) => {\n let prefscale = 0;\n if (!R.isNil(R.prop('prefscale', formaterValues))) {\n prefscale = Number(R.propOr('0', 'id', formaterValues.prefscale));\n }\n let decimals = null;\n if (!R.isNil(R.prop('decimals', formaterValues))) {\n let _decimals = Number(R.prop('id', formaterValues.decimals));\n decimals = R.is(Number, _decimals) && !Number.isNaN(_decimals)\n ? _decimals : null;\n }\n let format = '0,0';\n if (R.isNil(decimals)) {\n format = R.concat(format, '.[0000000]');\n }\n else if (decimals > 0) {\n format = R.concat(format, `.[${'0'.repeat(decimals)}]`);\n }\n return value => numeral(Number(value))\n .multiply(Math.pow(10, R.negate(prefscale)))\n .format(format);\n};\n\nexport const getObservationFormater = (observation, formaterAttributes) => {\n return R.pipe(\n R.tail,\n getObservationFormaterValues(formaterAttributes),\n makeObservationFormater\n )(observation);\n}\n\nexport const getFormatedObservation = (observation, formaterAttributes) => {\n const formater = getObservationFormater(observation, formaterAttributes);\n return formater(R.head(observation));\n};\n"],"names":[],"mappings":"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"}
@@ -1,12 +1,61 @@
1
1
  import * as R from 'ramda';
2
- import { focus, extractSdmxArtefacts } from '../index.js';
2
+ import getSeries from '../factories/series.js';
3
3
  import { TIMELINE, ROW, BAR } from '../constants.js';
4
4
  import { hasFocus } from './utils.js';
5
+ import { parseDisplay, dimensionValueDisplay } from '../dimension-utils.js';
5
6
 
6
7
  const sampleFocusTypes = { [BAR]: BAR, [ROW]: ROW, [TIMELINE]: TIMELINE };
7
8
 
8
9
  const focusComparator = (op1, op2) => op1.value === op2.value;
9
10
 
11
+ const focus = (data, type, dimension, _display) => {
12
+ const display = parseDisplay(_display);
13
+ switch(type) {
14
+ case 'RowChart': case 'BarChart':
15
+ case 'HorizontalSymbolChart': case 'VerticalSymbolChart':
16
+ case 'StackedBarChart': case 'StackedRowChart':
17
+ return R.pipe(
18
+ getSeries,
19
+ R.pathOr([], [0, 'datapoints']),
20
+ R.map(dp => ({ label: dp.category, value: dp.key })),
21
+ )({ data, type, options: { display }, singularity: dimension });
22
+ case 'TimelineChart':
23
+ return R.pipe(
24
+ getSeries,
25
+ R.map(serie => ({ label: serie.category, value: serie.key })),
26
+ )({ data, type, options: { display }, singularity: dimension });
27
+ case 'ScatterChart':
28
+ const id = R.prop('id', dimension);
29
+ if (R.isNil(id))
30
+ return [];
31
+ return R.pipe(
32
+ R.propOr([], 'dimensions'),
33
+ R.reduce((acc, dim) => {
34
+ if (dim.header || dim.id === id) {
35
+ return acc;
36
+ }
37
+ const dimOptions = R.map(val => ({
38
+ label: `${dimensionValueDisplay(display)(dim)} - ${dimensionValueDisplay(display)(val)}`,
39
+ options: { dimensionId: dim.id, dimensionValueId: val.id },
40
+ value: `${dim.id}-${val.id}`
41
+ }), R.propOr([], 'values', dim));
42
+ return R.concat(acc, dimOptions);
43
+ }, []),
44
+ )(data);
45
+ default:
46
+ return [];
47
+ }
48
+ };
49
+
50
+ const parseFocus = (data, type, dimension, display, { baseline, highlight }) => {
51
+ const options = focus(data, type, dimension, display);
52
+ const optionsSet = new Set(R.pluck('value', options));
53
+
54
+ const parseSelection = R.reject(({ value }) => !optionsSet.has(value));
55
+
56
+ return ({ baseline: parseSelection(baseline), highlight: parseSelection(highlight) });
57
+ };
58
+
10
59
  const focusOptions = (props, state, otherFocus, singularity) => {
11
60
  if (!hasFocus(props.type)) {
12
61
  return [];
@@ -44,7 +93,6 @@ const filterFocus = (focus, keyedOptions, type) => R.reduce(
44
93
  );
45
94
 
46
95
  const focusStateFromNewProps = ({ data, display, type }, singularity, state) => {
47
- const { id } = extractSdmxArtefacts(data);
48
96
  const highlightState = R.propOr([], 'highlight', state);
49
97
  const baselineState = R.propOr([], 'baseline', state);
50
98
  const options = focus(data, type, singularity, display);
@@ -68,5 +116,5 @@ const sampleFocusStateFromNewProps = (props, state) => {
68
116
  return focusStateFromNewProps(props, null, state);
69
117
  };
70
118
 
71
- export { focusOptions, focusStateFromNewProps, onChangeFocusSelection, sampleFocusStateFromNewProps };
119
+ export { focusOptions, focusStateFromNewProps, onChangeFocusSelection, parseFocus, sampleFocusStateFromNewProps };
72
120
  //# sourceMappingURL=focus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"focus.js","sources":["../../../../src/rules/src/properties/focus.js"],"sourcesContent":["import * as R from 'ramda';\nimport { extractSdmxArtefacts, focus } from '../';\nimport { BAR, ROW, TIMELINE } from '../constants';\nimport { hasFocus } from './utils';\n\nconst sampleFocusTypes = { [BAR]: BAR, [ROW]: ROW, [TIMELINE]: TIMELINE };\n\nconst focusComparator = (op1, op2) => op1.value === op2.value;\n\nexport const focusOptions = (props, state, otherFocus, singularity) => {\n if (!hasFocus(props.type)) {\n return [];\n }\n const options = focus(\n props.data,\n props.type,\n singularity,\n props.display\n );\n return R.differenceWith(\n focusComparator,\n options,\n R.prop(otherFocus, state)\n );\n};\n\nexport const onChangeFocusSelection = (_value) => {\n const value = R.isNil(_value) ? [] : _value;\n return (R.is(Array, value) ? value : [value]);\n};\n\nconst toKey = () => R.prop('value');\n\nconst filterFocus = (focus, keyedOptions, type) => R.reduce(\n (acc, entry) => {\n const entryKey = toKey(type)(entry);\n if (R.has(entryKey, keyedOptions)) {\n return R.append(R.prop(entryKey, keyedOptions), acc);\n }\n return acc;\n },\n [],\n focus\n)\n\nexport const focusStateFromNewProps = ({ data, display, type }, singularity, state) => {\n const { id } = extractSdmxArtefacts(data);\n const highlightState = R.propOr([], 'highlight', state);\n const baselineState = R.propOr([], 'baseline', state);\n const options = focus(data, type, singularity, display);\n const keyedOptions = R.indexBy(toKey(type), options);\n return ({\n baseline: filterFocus(baselineState, keyedOptions, R.prop('type', state)),\n highlight: filterFocus(highlightState, keyedOptions, R.prop('type', state)),\n });\n};\n\n/*\n This props/state parser which will be exposed in highlight/baseline properties,\n only deals for Bar and Row Chart (no chart dimension singularity involved).\n For other chart types, their own chart dimension singularity parser will handle focus management.\n*/\n\nexport const sampleFocusStateFromNewProps = (props, state) => {\n if (!R.has(props.type, sampleFocusTypes) || R.isNil(props.data)) {\n return ({}); //no changes\n }\n return focusStateFromNewProps(props, null, state);\n};"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus.js","sources":["../../../../src/rules/src/properties/focus.js"],"sourcesContent":["import * as R from 'ramda';\nimport getSeries from '../factories/series';\nimport { BAR, ROW, TIMELINE } from '../constants';\nimport { hasFocus } from './utils';\nimport { dimensionValueDisplay, parseDisplay } from '../dimension-utils';\n\nconst sampleFocusTypes = { [BAR]: BAR, [ROW]: ROW, [TIMELINE]: TIMELINE };\n\nconst focusComparator = (op1, op2) => op1.value === op2.value;\n\nconst focus = (data, type, dimension, _display) => {\n const display = parseDisplay(_display);\n switch(type) {\n case 'RowChart': case 'BarChart':\n case 'HorizontalSymbolChart': case 'VerticalSymbolChart':\n case 'StackedBarChart': case 'StackedRowChart':\n return R.pipe(\n getSeries,\n R.pathOr([], [0, 'datapoints']),\n R.map(dp => ({ label: dp.category, value: dp.key })),\n )({ data, type, options: { display }, singularity: dimension });\n case 'TimelineChart':\n return R.pipe(\n getSeries,\n R.map(serie => ({ label: serie.category, value: serie.key })),\n )({ data, type, options: { display }, singularity: dimension });\n case 'ScatterChart':\n const id = R.prop('id', dimension);\n if (R.isNil(id))\n return [];\n return R.pipe(\n R.propOr([], 'dimensions'),\n R.reduce((acc, dim) => {\n if (dim.header || dim.id === id) {\n return acc;\n }\n const dimOptions = R.map(val => ({\n label: `${dimensionValueDisplay(display)(dim)} - ${dimensionValueDisplay(display)(val)}`,\n options: { dimensionId: dim.id, dimensionValueId: val.id },\n value: `${dim.id}-${val.id}`\n }), R.propOr([], 'values', dim));\n return R.concat(acc, dimOptions);\n }, []),\n )(data);\n default:\n return [];\n }\n};\n\nexport const parseFocus = (data, type, dimension, display, { baseline, highlight }) => {\n const options = focus(data, type, dimension, display);\n const optionsSet = new Set(R.pluck('value', options));\n\n const parseSelection = R.reject(({ value }) => !optionsSet.has(value));\n\n return ({ baseline: parseSelection(baseline), highlight: parseSelection(highlight) });\n};\n\nexport const focusOptions = (props, state, otherFocus, singularity) => {\n if (!hasFocus(props.type)) {\n return [];\n }\n const options = focus(\n props.data,\n props.type,\n singularity,\n props.display\n );\n return R.differenceWith(\n focusComparator,\n options,\n R.prop(otherFocus, state)\n );\n};\n\nexport const onChangeFocusSelection = (_value) => {\n const value = R.isNil(_value) ? [] : _value;\n return (R.is(Array, value) ? value : [value]);\n};\n\nconst toKey = () => R.prop('value');\n\nconst filterFocus = (focus, keyedOptions, type) => R.reduce(\n (acc, entry) => {\n const entryKey = toKey(type)(entry);\n if (R.has(entryKey, keyedOptions)) {\n return R.append(R.prop(entryKey, keyedOptions), acc);\n }\n return acc;\n },\n [],\n focus\n)\n\nexport const focusStateFromNewProps = ({ data, display, type }, singularity, state) => {\n const highlightState = R.propOr([], 'highlight', state);\n const baselineState = R.propOr([], 'baseline', state);\n const options = focus(data, type, singularity, display);\n const keyedOptions = R.indexBy(toKey(type), options);\n return ({\n baseline: filterFocus(baselineState, keyedOptions, R.prop('type', state)),\n highlight: filterFocus(highlightState, keyedOptions, R.prop('type', state)),\n });\n};\n\n/*\n This props/state parser which will be exposed in highlight/baseline properties,\n only deals for Bar and Row Chart (no chart dimension singularity involved).\n For other chart types, their own chart dimension singularity parser will handle focus management.\n*/\n\nexport const sampleFocusStateFromNewProps = (props, state) => {\n if (!R.has(props.type, sampleFocusTypes) || R.isNil(props.data)) {\n return ({}); //no changes\n }\n return focusStateFromNewProps(props, null, state);\n};"],"names":[],"mappings":"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"}
@@ -1,11 +1,6 @@
1
1
  import * as R from 'ramda';
2
- import { parseDisplay } from '../index.js';
2
+ import { parseDisplay, dimensionValueDisplay } from '../dimension-utils.js';
3
3
  import { isChart } from './utils.js';
4
- import { getTitleFlags } from '../header/getTitleFlags.js';
5
- import { getHeaderUnits } from '../header/getHeaderUnits.js';
6
- import { dimensionValueDisplay } from '../dimension-utils.js';
7
- import { getDefaultSubtitle } from '../header/getDefaultSubtitle.js';
8
- import { getSubtitleFlags } from '../header/getSubtitleFlags.js';
9
4
 
10
5
  const isCustomInvalid = ({ type }) => (value) => R.isNil(value) || !isChart(type);
11
6
 
@@ -15,62 +10,16 @@ const getDataflowName = (props) => {
15
10
  return dimensionValueDisplay(display)(dataflow);
16
11
  };
17
12
 
18
- const getTitleLabel = (props, state) => R.when(
19
- isCustomInvalid({ type: props.type }),
20
- R.always(getDataflowName(props))
21
- )(state.title);
22
-
23
- const getSubtitle = (props, state) => R.ifElse(
24
- isCustomInvalid({type: props.type }),
25
- R.always(getDefaultSubtitle({
26
- customAttributes: props.customAttributes,
27
- dimensions: state.dimensions,
28
- display: props.display,
29
- units: state.units
30
- })),
31
- (label) => {
32
- const flags = getSubtitleFlags({
33
- customAttributes: props.customAttributes,
34
- dimensions: state.dimensions,
35
- display: props.display,
36
- units: state.units
37
- });
38
- return ([{ label, flags }]);
39
- }
40
- )(state.subtitle);
41
-
42
13
  const getSourceLabel = (props, state) => R.when(
43
14
  isCustomInvalid({ type: props.type }),
44
15
  R.always(getDataflowName(props))
45
16
  )(state.sourceLabel);
46
17
 
47
- const getHeaderProps = (props, state) => {
48
- const title = {
49
- label: getTitleLabel(props, state),
50
- flags: getTitleFlags({
51
- customAttributes: props.customAttributes,
52
- dataflowAttributes: state.dataflowAttributes,
53
- display: props.display,
54
- })
55
- };
56
-
57
- const subtitle = getSubtitle(props, state);
58
-
59
- const uprs = getHeaderUnits({
60
- display: props.display,
61
- units: R.assoc(
62
- 'values',
63
- R.pathOr([], ['units', 'headerUnits'], state)
64
- )(R.pathOr({}, ['units', 'unitDimension'], props))
65
- });
66
- return ({ subtitle, title, uprs });
67
- };
68
-
69
18
  const getFooterProps = (props, state) => ({
70
19
  withCopyright: isChart(props.type) ? state.withCopyright : true,
71
20
  withLogo: isChart(props.type) ? state.withLogo : true,
72
21
  sourceLabel: getSourceLabel(props, state)
73
22
  });
74
23
 
75
- export { getFooterProps, getHeaderProps, getSourceLabel, getSubtitle, getTitleLabel };
24
+ export { getFooterProps, getSourceLabel };
76
25
  //# sourceMappingURL=getHeaderProps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getHeaderProps.js","sources":["../../../../src/rules/src/properties/getHeaderProps.js"],"sourcesContent":["import * as R from 'ramda';\nimport {\n getDefaultSubtitle,\n getHeaderUnits,\n getSubtitleFlags,\n getTitleFlags\n} from '../header';\nimport { dimensionValueDisplay, parseDisplay } from '../';\nimport { isChart } from './utils';\n\nconst isCustomInvalid = ({ type }) => (value) => R.isNil(value) || !isChart(type);\n\nconst getDataflowName = (props) => {\n const dataflow = R.propOr({}, 'dataflow', props);\n const display = parseDisplay(props.display);\n return dimensionValueDisplay(display)(dataflow);\n};\n\nexport const getTitleLabel = (props, state) => R.when(\n isCustomInvalid({ type: props.type }),\n R.always(getDataflowName(props))\n)(state.title);\n\nexport const getSubtitle = (props, state) => R.ifElse(\n isCustomInvalid({type: props.type }),\n R.always(getDefaultSubtitle({\n customAttributes: props.customAttributes,\n dimensions: state.dimensions,\n display: props.display,\n units: state.units\n })),\n (label) => {\n const flags = getSubtitleFlags({\n customAttributes: props.customAttributes,\n dimensions: state.dimensions,\n display: props.display,\n units: state.units\n });\n return ([{ label, flags }]);\n }\n)(state.subtitle);\n\nexport const getSourceLabel = (props, state) => R.when(\n isCustomInvalid({ type: props.type }),\n R.always(getDataflowName(props))\n)(state.sourceLabel);\n\nexport const getHeaderProps = (props, state) => {\n const title = {\n label: getTitleLabel(props, state),\n flags: getTitleFlags({\n customAttributes: props.customAttributes,\n dataflowAttributes: state.dataflowAttributes,\n display: props.display,\n })\n };\n\n const subtitle = getSubtitle(props, state);\n\n const uprs = getHeaderUnits({\n display: props.display,\n units: R.assoc(\n 'values',\n R.pathOr([], ['units', 'headerUnits'], state)\n )(R.pathOr({}, ['units', 'unitDimension'], props))\n });\n return ({ subtitle, title, uprs });\n};\n\nexport const getFooterProps = (props, state) => ({\n withCopyright: isChart(props.type) ? state.withCopyright : true,\n withLogo: isChart(props.type) ? state.withLogo : true,\n sourceLabel: getSourceLabel(props, state)\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getHeaderProps.js","sources":["../../../../src/rules/src/properties/getHeaderProps.js"],"sourcesContent":["import * as R from 'ramda';\nimport { dimensionValueDisplay, parseDisplay } from '../dimension-utils';\nimport { isChart } from './utils';\n\nconst isCustomInvalid = ({ type }) => (value) => R.isNil(value) || !isChart(type);\n\nconst getDataflowName = (props) => {\n const dataflow = R.propOr({}, 'dataflow', props);\n const display = parseDisplay(props.display);\n return dimensionValueDisplay(display)(dataflow);\n};\n\nexport const getSourceLabel = (props, state) => R.when(\n isCustomInvalid({ type: props.type }),\n R.always(getDataflowName(props))\n)(state.sourceLabel);\n\nexport const getFooterProps = (props, state) => ({\n withCopyright: isChart(props.type) ? state.withCopyright : true,\n withLogo: isChart(props.type) ? state.withLogo : true,\n sourceLabel: getSourceLabel(props, state)\n});\n"],"names":[],"mappings":";;;;AAIA,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;;AAEjF,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK;AACnC,EAAE,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC;AAClD,EAAE,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;AAC7C,EAAE,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;AACjD,CAAC;;AAEW,MAAC,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,IAAI;AACtD,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AACvC,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;AACjC,CAAC,CAAC,KAAK,CAAC,WAAW;;AAEP,MAAC,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,MAAM;AACjD,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,GAAG,IAAI;AACjE,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI;AACvD,EAAE,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK;AAC1C,CAAC;;;;"}
@@ -1,16 +1,13 @@
1
1
  import * as R from 'ramda';
2
- import { getDataFrequency } from '@sis-cc/dotstatsuite-sdmxjs';
3
- import { series } from '../index.js';
4
2
  import { TIMELINE, STACKED_ROW, STACKED_BAR, V_SYMBOL, H_SYMBOL, SCATTER } from '../constants.js';
5
- import { focusOptions, sampleFocusStateFromNewProps, onChangeFocusSelection } from './focus.js';
6
- import { scatterStateValueToOption, scatterValueOptions, isScatter, scatterStateFromNewProps, onChangeScatterVal, onChangeScatterDim, toScatterSingularity } from './scatter.js';
7
- import { isSymbol, symbolStateFromNewProps, onChangeSymbolDim, toSymbolSingularity } from './symbol.js';
8
- import { stackedModeOptions, isStacked, isStackedDimActive, stackedStateFromNewProps, onChangeStackedMode, onChangeStackedDimension, toStackedSingularity } from './stacked.js';
9
- import { initialState as initialState$1, toProperties as toProperties$1, linearStateFromNewProps } from './linear.js';
10
- import { isChart, chartDimensionToOption, chartDimensionOptions, hasFocus, optionParser, isNaturalInt, isNumber } from './utils.js';
3
+ import { sampleFocusStateFromNewProps, focusOptions, onChangeFocusSelection } from './focus.js';
4
+ import { scatterStateFromNewProps, scatterStateValueToOption, scatterValueOptions, onChangeScatterVal, isScatter, onChangeScatterDim, toScatterSingularity } from './scatter.js';
5
+ import { symbolStateFromNewProps, onChangeSymbolDim, isSymbol, toSymbolSingularity } from './symbol.js';
6
+ import { stackedModeOptions, stackedStateFromNewProps, onChangeStackedMode, isStacked, onChangeStackedDimension, isStackedDimActive, toStackedSingularity } from './stacked.js';
7
+ import { linearStateFromNewProps, toProperties as toProperties$1 } from './linear.js';
8
+ import { isChart, optionParser, chartDimensionToOption, chartDimensionOptions, isNaturalInt, hasFocus } from './utils.js';
11
9
  import { getSourceLabel } from './getHeaderProps.js';
12
10
  import { stringifySubtitle } from './getStringifiedSubtitle.js';
13
- import { getHasNoTimePeriodError } from './errors.js';
14
11
 
15
12
  /*
16
13
  - width/height -> initial undefined, if undefined or blank, replaced by options.base
@@ -29,32 +26,6 @@ const toSingularity = ({ data, type }, state) => {
29
26
  }
30
27
  };
31
28
 
32
- const toChartData = (props, state) => {
33
- const dimensions = R.pathOr([], ['data', 'structure', 'dimensions', 'observation'], props);
34
- const attributes = R.pathOr([], ['data', 'structure', 'attributes', 'observation'], props);
35
- const frequency = props.type === TIMELINE ? getDataFrequency({ dimensions, attributes }) : null;
36
- return ({
37
- frequency,
38
- series: series(
39
- props.data,
40
- props.type,
41
- R.pick(['highlight', 'baseline'], state),
42
- toSingularity(props, state),
43
- props.map,
44
- props.display,
45
- props.formaterIds
46
- ),
47
- share: {
48
- focused: R.pick(['highlight', 'baseline'], state),
49
- chartDimension: toSingularity(props, state),
50
- }
51
- });
52
- };
53
-
54
- const getErrors = (props, state) => ({
55
- noTime: getHasNoTimePeriodError(props),
56
- });
57
-
58
29
  const toFloat = (value) => {
59
30
  const float = parseFloat(value);
60
31
  return isNaN(float) ? undefined : float;
@@ -128,25 +99,6 @@ const toChartOptions = (props, state) => {
128
99
  });
129
100
  };
130
101
 
131
- const initialState = {
132
- highlight: [],
133
- baseline: [],
134
- fixedWidth: undefined,
135
- fixedHeight: undefined,
136
- freqStep: undefined,
137
- responsiveWidth: undefined,
138
- responsiveHeight: undefined,
139
- scatterDimension: undefined,
140
- scatterX: undefined,
141
- scatterY: undefined,
142
- symbolDimension: undefined,
143
- stackedDimension: undefined,
144
- stackedMode: undefined,
145
- id: undefined,
146
- type: undefined,
147
- ...initialState$1,
148
- };
149
-
150
102
  const stateFromNewProps = (props, state) => {
151
103
  const focusState = sampleFocusStateFromNewProps(props, state);
152
104
  const scatterState = scatterStateFromNewProps(props, state);
@@ -169,49 +121,6 @@ const stateFromNewProps = (props, state) => {
169
121
  });
170
122
  };
171
123
 
172
- const propertiesParsers = {
173
- highlight: onChangeFocusSelection,
174
- baseline: onChangeFocusSelection,
175
- fixedWidth: (value) => isNaturalInt(value) ? value : undefined,
176
- fixedHeight: (value) => isNaturalInt(value) ? value : undefined,
177
- responsiveWidth: (value) => isNumber(value) ? value : undefined,
178
- responsiveHeight: (value) => isNumber(value) ? value : undefined,
179
- freqStep: (value) => isNaturalInt(value) ? value : undefined,
180
- title: R.identity,
181
- subtitle: R.identity,
182
- sourceLabel: R.identity,
183
- scatterDimension: optionParser,
184
- scatterX: optionParser,
185
- scatterY: optionParser,
186
- symbolDimension: optionParser,
187
- stackedDimension: optionParser,
188
- stackedMode: optionParser,
189
- maxX: (value) => isNumber(value) ? value : undefined,
190
- maxY: (value) => isNumber(value) ? value : undefined,
191
- minX: (value) => isNumber(value) ? value : undefined,
192
- minY: (value) => isNumber(value) ? value : undefined,
193
- pivotX: (value) => isNumber(value) ? value : undefined,
194
- pivotY: (value) => isNumber(value) ? value : undefined,
195
- stepX: (value) => isNaturalInt(value) ? value : undefined,
196
- stepY: (value) => isNaturalInt(value) ? value : undefined,
197
- };
198
-
199
- const onChangeProperties = (state, onChange) => (newProperties) => {
200
- const apply = R.is(Function, onChange) ? onChange : R.identity;
201
- const refined = R.pipe(
202
- R.mapObjIndexed((value, key) => {
203
- const _parser = R.prop(key, propertiesParsers);
204
- const parser = R.is(Function, _parser) ? _parser : R.identity;
205
- return parser(value);
206
- }),
207
- R.pickBy((value, key) => value !== R.prop(key, state))
208
- )(newProperties);
209
- if (R.isEmpty(refined)) {
210
- return ;
211
- }
212
- apply(refined);
213
- };
214
-
215
124
  const toProperties = (props, state, onChange) => ({
216
125
  ...toProperties$1(props, state, onChange),
217
126
  highlight: {
@@ -380,5 +289,5 @@ const toProperties = (props, state, onChange) => ({
380
289
  }
381
290
  });
382
291
 
383
- export { getErrors, initialState, onChangeProperties, stateFromNewProps, toChartData, toChartOptions, toProperties, toSingularity };
292
+ export { stateFromNewProps, toChartOptions, toProperties, toSingularity };
384
293
  //# sourceMappingURL=index.js.map