@sis-cc/dotstatsuite-components 21.0.1 → 21.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 (234) hide show
  1. package/dist/dotstatsuite-components.js +38112 -0
  2. package/package.json +4 -1
  3. package/.editorconfig +0 -19
  4. package/.gitlab-ci.yml +0 -48
  5. package/prettier.config.js +0 -13
  6. package/src/app.js +0 -13
  7. package/src/bridge-d3-react/README.md +0 -42
  8. package/src/bridge-d3-react/src/app.js +0 -64
  9. package/src/bridge-d3-react/src/index.js +0 -17
  10. package/src/bridge-d3-react/src/mock-choro.js +0 -394
  11. package/src/bridge-d3-react/src/react-chart-factory.js +0 -65
  12. package/src/index.js +0 -12
  13. package/src/rules/README.md +0 -23
  14. package/src/rules/src/chart/getAxisOptions.js +0 -258
  15. package/src/rules/src/chart/getBaseOptions.js +0 -84
  16. package/src/rules/src/chart/getChartOptions.js +0 -118
  17. package/src/rules/src/chart/getGridOptions.js +0 -52
  18. package/src/rules/src/chart/getTooltipOptions.js +0 -230
  19. package/src/rules/src/constants.js +0 -64
  20. package/src/rules/src/date.js +0 -118
  21. package/src/rules/src/dimension-utils.js +0 -54
  22. package/src/rules/src/factories/choro-series.js +0 -65
  23. package/src/rules/src/factories/sample-focus.js +0 -22
  24. package/src/rules/src/factories/sample-series.js +0 -51
  25. package/src/rules/src/factories/scatter-dimension.js +0 -31
  26. package/src/rules/src/factories/scatter-focus.js +0 -39
  27. package/src/rules/src/factories/scatter-series.js +0 -94
  28. package/src/rules/src/factories/stacked-dimension.js +0 -29
  29. package/src/rules/src/factories/stacked-series.js +0 -185
  30. package/src/rules/src/factories/symbol-dimension.js +0 -29
  31. package/src/rules/src/factories/symbol-series.js +0 -62
  32. package/src/rules/src/factories/timeline-focus.js +0 -18
  33. package/src/rules/src/factories/timeline-series.js +0 -91
  34. package/src/rules/src/get-values-enhanced.js +0 -134
  35. package/src/rules/src/header/getDefaultSubtitle.js +0 -40
  36. package/src/rules/src/header/getHeaderUnits.js +0 -17
  37. package/src/rules/src/header/getSubtitleFlags.js +0 -43
  38. package/src/rules/src/header/getTitleFlags.js +0 -8
  39. package/src/rules/src/header/index.js +0 -4
  40. package/src/rules/src/index.js +0 -398
  41. package/src/rules/src/layout.js +0 -113
  42. package/src/rules/src/observation-formater.js +0 -83
  43. package/src/rules/src/preparators/enhanceObservations.js +0 -152
  44. package/src/rules/src/preparators/formatValue.js +0 -84
  45. package/src/rules/src/preparators/getObservations.js +0 -19
  46. package/src/rules/src/preparators/getReportingYearStart.js +0 -16
  47. package/src/rules/src/properties/errors.js +0 -19
  48. package/src/rules/src/properties/focus.js +0 -69
  49. package/src/rules/src/properties/getAvailableChartTypes.js +0 -34
  50. package/src/rules/src/properties/getHeaderProps.js +0 -74
  51. package/src/rules/src/properties/getInformationsStateFromNewProps.js +0 -47
  52. package/src/rules/src/properties/getObservationsType.js +0 -29
  53. package/src/rules/src/properties/getStringifiedSubtitle.js +0 -6
  54. package/src/rules/src/properties/index.js +0 -424
  55. package/src/rules/src/properties/information.js +0 -84
  56. package/src/rules/src/properties/linear.js +0 -129
  57. package/src/rules/src/properties/scatter.js +0 -158
  58. package/src/rules/src/properties/stacked.js +0 -98
  59. package/src/rules/src/properties/symbol.js +0 -79
  60. package/src/rules/src/properties/utils.js +0 -110
  61. package/src/rules/src/sdmx-data/index.js +0 -39
  62. package/src/rules/src/table/factories/getCellValue.js +0 -50
  63. package/src/rules/src/table/index.js +0 -1
  64. package/src/rules/src/v8-transformer.js +0 -176
  65. package/src/rules/test/extractSdmxArtefacts.js +0 -26
  66. package/src/rules/test/get-values-enhanced.test.js +0 -127
  67. package/src/rules/test/oecd-HEALTH_PROT-no-freq.json +0 -2903
  68. package/src/rules/test/oecd-HEALTH_PROT-parsed.js +0 -398
  69. package/src/rules/test/oecd-HEALTH_PROT-wrong-freq.json +0 -2913
  70. package/src/rules/test/oecd-HEALTH_PROT.json +0 -2913
  71. package/src/rules/test/oecd-KEI.json +0 -372
  72. package/src/rules/test/scatter-property.js +0 -455
  73. package/src/rules/test/stacked-property.js +0 -273
  74. package/src/rules/test/symbol-property.js +0 -262
  75. package/src/rules/test/v8-transformer.test.js +0 -90
  76. package/src/rules2/src/applyHierarchicalCodesToDim.js +0 -149
  77. package/src/rules2/src/combinedValuesDisplay.js +0 -74
  78. package/src/rules2/src/constants.js +0 -6
  79. package/src/rules2/src/duplicateObservations.js +0 -35
  80. package/src/rules2/src/enhanceObservations.js +0 -95
  81. package/src/rules2/src/getAdvAttrSeriesAtCoordinates.js +0 -29
  82. package/src/rules2/src/getAttributesSeries.js +0 -36
  83. package/src/rules2/src/getCombinationDefinitions.js +0 -47
  84. package/src/rules2/src/getDataflowAttributes.js +0 -23
  85. package/src/rules2/src/getDataflowTooltipAttributesIds.js +0 -31
  86. package/src/rules2/src/getDimensionValuesIndexes.js +0 -13
  87. package/src/rules2/src/getHCodelistsRefsInData.js +0 -32
  88. package/src/rules2/src/getHeaderCombinations.js +0 -48
  89. package/src/rules2/src/getHeaderCoordinates.js +0 -7
  90. package/src/rules2/src/getHeaderSubtitle.js +0 -34
  91. package/src/rules2/src/getHeaderTitle.js +0 -15
  92. package/src/rules2/src/getMSDInformations.js +0 -23
  93. package/src/rules2/src/getManyValuesDimensions.js +0 -34
  94. package/src/rules2/src/getMetadataCoordinates.js +0 -37
  95. package/src/rules2/src/getMetadataStructureFromData.js +0 -17
  96. package/src/rules2/src/getNotDisplayedIds.js +0 -53
  97. package/src/rules2/src/getOneValueDimensions.js +0 -34
  98. package/src/rules2/src/getSeriesCombinations.js +0 -24
  99. package/src/rules2/src/hasCellMetadata.js +0 -14
  100. package/src/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js +0 -57
  101. package/src/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js +0 -35
  102. package/src/rules2/src/index.js +0 -50
  103. package/src/rules2/src/parseAttributes.js +0 -41
  104. package/src/rules2/src/parseCombinations.js +0 -102
  105. package/src/rules2/src/parseHierarchicalCodelist.js +0 -48
  106. package/src/rules2/src/parseMetadataSeries.js +0 -117
  107. package/src/rules2/src/prepareData.js +0 -73
  108. package/src/rules2/src/refineAttributes.js +0 -16
  109. package/src/rules2/src/refineDimensions.js +0 -18
  110. package/src/rules2/src/refineMetadataCoordinates.js +0 -28
  111. package/src/rules2/src/refineTimePeriod.js +0 -127
  112. package/src/rules2/src/sdmx3.0DataFormatPatch.js +0 -9
  113. package/src/rules2/src/table/declineObservationsOverAttributes.js +0 -32
  114. package/src/rules2/src/table/getCells.js +0 -93
  115. package/src/rules2/src/table/getCellsAttributesIds.js +0 -38
  116. package/src/rules2/src/table/getCellsMetadataCoordinates.js +0 -13
  117. package/src/rules2/src/table/getCombinationDimensionsData.js +0 -39
  118. package/src/rules2/src/table/getCuratedCells.js +0 -33
  119. package/src/rules2/src/table/getFlagsAndNotes.js +0 -23
  120. package/src/rules2/src/table/getIndexedCombinationsByDisplay.js +0 -16
  121. package/src/rules2/src/table/getLayout.js +0 -84
  122. package/src/rules2/src/table/getLayoutData2.js +0 -198
  123. package/src/rules2/src/table/getSortedLayoutIndexes.js +0 -124
  124. package/src/rules2/src/table/getTableLabelAccessor.js +0 -9
  125. package/src/rules2/src/table/getTableLayoutIds.js +0 -314
  126. package/src/rules2/src/table/getTableProps.js +0 -75
  127. package/src/rules2/src/table/parseSeriesIndexesHierarchies.js +0 -79
  128. package/src/rules2/src/table/parseValueHierarchy.js +0 -33
  129. package/src/rules2/src/table/refineLayoutSize2.js +0 -321
  130. package/src/rules2/src/utils.js +0 -37
  131. package/src/viewer/mocks/bar.js +0 -33
  132. package/src/viewer/mocks/gpp-symbol.js +0 -93
  133. package/src/viewer/mocks/gpp-time.js +0 -1103
  134. package/src/viewer/mocks/row.js +0 -39
  135. package/src/viewer/mocks/scatter.js +0 -93
  136. package/src/viewer/mocks/stack.js +0 -161
  137. package/src/viewer/src/app/leg.js +0 -36
  138. package/src/viewer/src/app/nodata-res.js +0 -22
  139. package/src/viewer/src/app/nodata-sized.js +0 -23
  140. package/src/viewer/src/app/one-table-cell.js +0 -70
  141. package/src/viewer/src/app/table.js +0 -423
  142. package/src/viewer/src/app/use-case-1.js +0 -33
  143. package/src/viewer/src/app/use-case-2.js +0 -38
  144. package/src/viewer/src/app/use-case-3.js +0 -18
  145. package/src/viewer/src/app.js +0 -116
  146. package/src/viewer/src/chart.js +0 -52
  147. package/src/viewer/src/chartUtils/options.js +0 -30
  148. package/src/viewer/src/chartUtils/series.js +0 -51
  149. package/src/viewer/src/footer.js +0 -24
  150. package/src/viewer/src/header.js +0 -10
  151. package/src/viewer/src/index.js +0 -158
  152. package/src/viewer/src/legends/AxisLegend.js +0 -41
  153. package/src/viewer/src/legends/ChartLegends.js +0 -66
  154. package/src/viewer/src/legends/FocusLegend.js +0 -63
  155. package/src/viewer/src/legends/Legend.js +0 -46
  156. package/src/viewer/src/legends/SeriesLegend.js +0 -78
  157. package/src/viewer/src/utils.js +0 -21
  158. package/test/applyHierarchicalCodesToDim.test.js +0 -160
  159. package/test/combinedValuesDisplay.test.js +0 -66
  160. package/test/duplicateObs.test.js +0 -118
  161. package/test/enhanceObservations2.test.js +0 -257
  162. package/test/getAttributesSeries.test.js +0 -66
  163. package/test/getAxisOptions.test.js +0 -309
  164. package/test/getBaseOptions.test.js +0 -77
  165. package/test/getCellValue.test.js +0 -32
  166. package/test/getCells.test.js +0 -178
  167. package/test/getCellsMetadataCoordinates.test.js +0 -40
  168. package/test/getCombinationDefinitions.test.js +0 -104
  169. package/test/getCombinationDimensionsData.test.js +0 -99
  170. package/test/getDataflowAttributes.test.js +0 -23
  171. package/test/getDataflowTooltipAttributesIds.test.js +0 -146
  172. package/test/getDimensionValuesIndexes.test.js +0 -33
  173. package/test/getGridOptions.test.js +0 -65
  174. package/test/getHCodelistsRefs.test.js +0 -23
  175. package/test/getHeaderCombinations.test.js +0 -62
  176. package/test/getHeaderTitle.test.js +0 -25
  177. package/test/getLayout.test.js +0 -54
  178. package/test/getLayoutData2.test.js +0 -535
  179. package/test/getMSDInformations.test.js +0 -35
  180. package/test/getMetadataCoordinates.test.js +0 -0
  181. package/test/getNotDisplayedIds.test.js +0 -47
  182. package/test/getObservationsType.test.js +0 -55
  183. package/test/getOneValueDimensions.test.js +0 -35
  184. package/test/getReportingYearStart.test.js +0 -59
  185. package/test/getSeriesCombinations.test.js +0 -29
  186. package/test/getSortedLayoutIndexes.test.js +0 -1138
  187. package/test/getTableLabelAccessor.test.js +0 -50
  188. package/test/getTableLayoutIds.test.js +0 -356
  189. package/test/hierarchiseDimensionWithNativeHierarchy2.test.js +0 -109
  190. package/test/isTableLayoutCompatible.test.js +0 -102
  191. package/test/metadata-parsing-perf.test.js +0 -509
  192. package/test/mocks/MSD_TEST.json +0 -490
  193. package/test/mocks/OECD_SNA_TABLE1_1.0_-_AUS_V_metadata.json +0 -152
  194. package/test/mocks/h-codelist.json +0 -2095
  195. package/test/mocks/large_metadata_series.json +0 -701
  196. package/test/mocks/observations-advanced-attributes.json +0 -55382
  197. package/test/mocks/table-invert-time--data.json +0 -80211
  198. package/test/mocks/table-invert-time--inverted.json +0 -80076
  199. package/test/mocks/table-layout-multi-hierarchies--layout.json +0 -621
  200. package/test/mocks/table-layout-multi-hierarchies--layoutData.json +0 -32411
  201. package/test/mocks/table-layout-multi-hierarchies--layoutIndexes.json +0 -2760
  202. package/test/mocks/table-layout-multi-hierarchies--observations.json +0 -30688
  203. package/test/mocks/table-layout-multi-hierarchies--sizedIndexes.json +0 -2762
  204. package/test/mocks/table-layout-truncation1--layout.json +0 -27469
  205. package/test/mocks/table-layout-truncation1--layoutData.json +0 -20358
  206. package/test/mocks/table-layout-truncation1--layoutIndexes.json +0 -7512
  207. package/test/mocks/table-layout-truncation1--observations.json +0 -70002
  208. package/test/mocks/table-layout-truncation1--sizedIndexes.json +0 -3011
  209. package/test/mocks/table-prep-multi-hierarchies--attributes.json +0 -46
  210. package/test/mocks/table-prep-multi-hierarchies--dimensions.json +0 -688
  211. package/test/mocks/table-prep-multi-hierarchies--enhancedObservations.json +0 -19696
  212. package/test/mocks/table-prep-multi-hierarchies--observations.json +0 -8246
  213. package/test/mocks/table-prep-multi-hierarchies--sdmxJson.json +0 -2985
  214. package/test/mocks/table-prep-simple-duplicate--dimensions2.json +0 -858
  215. package/test/mocks/table-prep-simple-duplicate--duplicated2.json +0 -77502
  216. package/test/mocks/table-prep-simple-duplicate--observations2.json +0 -60002
  217. package/test/mocks/table-prep-truncation1--dimensions.json +0 -35057
  218. package/test/mocks/table-prep-truncation1--enhancedObservations.json +0 -70002
  219. package/test/mocks/table-prep-truncation1--observations.json +0 -27502
  220. package/test/mocks/table-prep-truncation1--sdmxJson.json +0 -55103
  221. package/test/mocks/table-prep-units--observations.json +0 -284286
  222. package/test/mocks/table-prep-units--unitsSeries.json +0 -41042
  223. package/test/parseAttributes.test.js +0 -36
  224. package/test/parseCombinations.test.js +0 -172
  225. package/test/parseHierarchicalCodelist.test.js +0 -140
  226. package/test/parseMetadataSeries.test.js +0 -128
  227. package/test/parseSeriesIndexesHierarchies.test.js +0 -345
  228. package/test/parseValueHierarchy.test.js +0 -138
  229. package/test/refineAttributes.test.js +0 -29
  230. package/test/refineLayoutSize2.test.js +0 -3410
  231. package/test/refineMetadataCoordinates.test.js +0 -86
  232. package/test/refineTimePeriod.test.js +0 -580
  233. package/test/refinedDimensions.test.js +0 -35
  234. package/vite.config.mjs +0 -51
@@ -1,345 +0,0 @@
1
- import { expect } from 'chai';
2
- import { parseSeriesIndexesHierarchies } from '../src/rules2/src/table/parseSeriesIndexesHierarchies';
3
-
4
- describe('parseSeriesIndexesHierarchies tests', () => {
5
- it('simple uniq flat', () => {
6
- const dimensions = [
7
- {
8
- id: 'D0',
9
- values: [
10
- { id: 'v0' },
11
- { id: 'v1' },
12
- { id: 'v2' },
13
- { id: 'v3' },
14
- { id: 'v4' },
15
- ]
16
- },
17
- ];
18
-
19
- const seriesIndexes = [
20
- [2],
21
- [3],
22
- [4]
23
- ];
24
-
25
- expect(parseSeriesIndexesHierarchies(seriesIndexes, dimensions)).to.deep.equal([
26
- { indexes: [2], parentsIndexes: [[]], missingIndexes: [[]] },
27
- { indexes: [3], parentsIndexes: [[]], missingIndexes: [[]] },
28
- { indexes: [4], parentsIndexes: [[]], missingIndexes: [[]] },
29
- ])
30
- });
31
- it('hierarchical in second dimension, no replicate missing parents', () => {
32
- const dimensions = [
33
- {
34
- id: 'D0',
35
- values: [
36
- { id: 'v0' },
37
- { id: 'v1' },
38
- ]
39
- },
40
- {
41
- id: 'D1',
42
- values: [
43
- { id: 'v0' },
44
- { id: 'v1', parents: [0] },
45
- { id: 'v2', parents: [0, 1] },
46
- { id: 'v3', parents: [0, 1] },
47
- { id: 'v4', parents: [0, 1] },
48
- ]
49
- },
50
- ];
51
-
52
- const seriesIndexes = [
53
- [0, 0],
54
- [0, 1],
55
- [0, 2],
56
- [0, 3],
57
- [0, 4],
58
- [1, 2],
59
- [1, 3],
60
- [1, 4],
61
- ];
62
-
63
- expect(parseSeriesIndexesHierarchies(seriesIndexes, dimensions)).to.deep.equal([
64
- { indexes: [0, 0], parentsIndexes: [[], []], missingIndexes: [[], []] },
65
- { indexes: [0, 1], parentsIndexes: [[], [0]], missingIndexes: [[], []] },
66
- { indexes: [0, 2], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
67
- { indexes: [0, 3], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
68
- { indexes: [0, 4], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
69
- { indexes: [1, 2], parentsIndexes: [[], []], missingIndexes: [[], [0, 1]] },
70
- { indexes: [1, 3], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
71
- { indexes: [1, 4], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
72
- ])
73
- });
74
- it('hierarchical in second dimension, replicate missing parents', () => {
75
- const dimensions = [
76
- {
77
- id: 'D0',
78
- values: [
79
- { id: 'v0' },
80
- { id: 'v1' },
81
- ]
82
- },
83
- {
84
- id: 'D1',
85
- values: [
86
- { id: 'v0' },
87
- { id: 'v1', parents: [0] },
88
- { id: 'v2', parents: [0, 1] },
89
- { id: 'v3', parents: [0, 1] },
90
- { id: 'v4', parents: [0, 1] },
91
- ]
92
- },
93
- ];
94
-
95
- const seriesIndexes = [
96
- [0, 0],
97
- [0, 1],
98
- [0, 2],
99
- [0, 3],
100
- [0, 4],
101
- [1, 2],
102
- [1, 3],
103
- [1, 4],
104
- ];
105
-
106
- expect(parseSeriesIndexesHierarchies(seriesIndexes, dimensions, true)).to.deep.equal([
107
- { indexes: [0, 0], parentsIndexes: [[], []], missingIndexes: [[], []] },
108
- { indexes: [0, 1], parentsIndexes: [[], [0]], missingIndexes: [[], []] },
109
- { indexes: [0, 2], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
110
- { indexes: [0, 3], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
111
- { indexes: [0, 4], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
112
- { indexes: [1, 2], parentsIndexes: [[], []], missingIndexes: [[], [0, 1]] },
113
- { indexes: [1, 3], parentsIndexes: [[], []], missingIndexes: [[], [0, 1]] },
114
- { indexes: [1, 4], parentsIndexes: [[], []], missingIndexes: [[], [0, 1]] },
115
- ])
116
- });
117
- it('two hierarchical dimensions, no replicate missing parents', () => {
118
- const dimensions = [
119
- {
120
- id: 'D0',
121
- values: [
122
- { id: 'v0' },
123
- { id: 'v1', parents: [0] },
124
- { id: 'v2', parents: [0, 1] },
125
- { id: 'v3', parents: [0, 1] },
126
- ]
127
- },
128
- {
129
- id: 'D1',
130
- values: [
131
- { id: 'v0' },
132
- { id: 'v1', parents: [0] },
133
- { id: 'v2', parents: [0, 1] },
134
- { id: 'v3', parents: [0, 1] },
135
- ]
136
- },
137
- ];
138
-
139
- const seriesIndexes = [
140
- [0, 0],
141
- [0, 1],
142
- [0, 2],
143
- [0, 3],
144
- [2, 2],
145
- [2, 3],
146
- [3, 2],
147
- [3, 3],
148
- ];
149
-
150
- expect(parseSeriesIndexesHierarchies(seriesIndexes, dimensions)).to.deep.equal([
151
- { indexes: [0, 0], parentsIndexes: [[], []], missingIndexes: [[], []] },
152
- { indexes: [0, 1], parentsIndexes: [[], [0]], missingIndexes: [[], []] },
153
- { indexes: [0, 2], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
154
- { indexes: [0, 3], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
155
- { indexes: [2, 2], parentsIndexes: [[0], []], missingIndexes: [[1], [0, 1]] },
156
- { indexes: [2, 3], parentsIndexes: [[0, 1], [0, 1]], missingIndexes: [[], []] },
157
- { indexes: [3, 2], parentsIndexes: [[0, 1], []], missingIndexes: [[], [0, 1]] },
158
- { indexes: [3, 3], parentsIndexes: [[0, 1], [0, 1]], missingIndexes: [[], []] },
159
- ])
160
- });
161
- it('two hierarchical dimensions, replicate missing parents', () => {
162
- const dimensions = [
163
- {
164
- id: 'D0',
165
- values: [
166
- { id: 'v0' },
167
- { id: 'v1', parents: [0] },
168
- { id: 'v2', parents: [0, 1] },
169
- { id: 'v3', parents: [0, 1] },
170
- ]
171
- },
172
- {
173
- id: 'D1',
174
- values: [
175
- { id: 'v0' },
176
- { id: 'v1', parents: [0] },
177
- { id: 'v2', parents: [0, 1] },
178
- { id: 'v3', parents: [0, 1] },
179
- ]
180
- },
181
- ];
182
-
183
- const seriesIndexes = [
184
- [0, 0],
185
- [0, 1],
186
- [0, 2],
187
- [0, 3],
188
- [2, 2],
189
- [2, 3],
190
- [3, 2],
191
- [3, 3],
192
- ];
193
-
194
- expect(parseSeriesIndexesHierarchies(seriesIndexes, dimensions, true)).to.deep.equal([
195
- { indexes: [0, 0], parentsIndexes: [[], []], missingIndexes: [[], []] },
196
- { indexes: [0, 1], parentsIndexes: [[], [0]], missingIndexes: [[], []] },
197
- { indexes: [0, 2], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
198
- { indexes: [0, 3], parentsIndexes: [[], [0, 1]], missingIndexes: [[], []] },
199
- { indexes: [2, 2], parentsIndexes: [[0], []], missingIndexes: [[1], [0, 1]] },
200
- { indexes: [2, 3], parentsIndexes: [[0], []], missingIndexes: [[1], [0, 1]] },
201
- { indexes: [3, 2], parentsIndexes: [[0], []], missingIndexes: [[1], [0, 1]] },
202
- { indexes: [3, 3], parentsIndexes: [[0], []], missingIndexes: [[1], [0, 1]] },
203
- ])
204
- });
205
- it('two hierarchical dimensions in combination, no replicate missing parents', () => {
206
- const dimensions = [
207
- {
208
- id: 'D0',
209
- values: [
210
- { id: 'v0' },
211
- { id: 'v1', parents: [0] },
212
- { id: 'v2', parents: [0, 1] },
213
- ]
214
- },
215
- {
216
- id: 'COMB',
217
- dimensions: [{
218
- id: 'D1',
219
- values: [
220
- { id: 'v0' },
221
- { id: 'v1', parents: [0] },
222
- { id: 'v2', parents: [0, 1] },
223
- { id: 'v3', parents: [0, 1] },
224
- ]
225
- },{
226
- id: 'D2',
227
- values: [
228
- { id: 'v0' },
229
- { id: 'v1', parents: [0] },
230
- { id: 'v2', parents: [0, 1] },
231
- { id: 'v3', parents: [0, 1] },
232
- ]
233
- }]
234
- }
235
- ];
236
-
237
- const seriesIndexes = [
238
- [0, [0, 0]],
239
- [0, [0, 1]],
240
- [0, [0, 2]],
241
- [0, [0, 3]],
242
- [0, [2, 2]],
243
- [0, [2, 3]],
244
- [0, [3, 2]],
245
- [0, [3, 3]],
246
- [2, [0, 0]],
247
- [2, [0, 1]],
248
- [2, [0, 2]],
249
- [2, [0, 3]],
250
- [2, [2, 2]],
251
- [2, [2, 3]],
252
- [2, [3, 2]],
253
- [2, [3, 3]],
254
- ];
255
-
256
- expect(parseSeriesIndexesHierarchies(seriesIndexes, dimensions)).to.deep.equal([
257
- { indexes: [0, [0, 0]], parentsIndexes: [[], [[], []]], missingIndexes: [[], [[], []]] },
258
- { indexes: [0, [0, 1]], parentsIndexes: [[], [[], [0]]], missingIndexes: [[], [[], []]] },
259
- { indexes: [0, [0, 2]], parentsIndexes: [[], [[], [0, 1]]], missingIndexes: [[], [[], []]] },
260
- { indexes: [0, [0, 3]], parentsIndexes: [[], [[], [0, 1]]], missingIndexes: [[], [[], []]] },
261
- { indexes: [0, [2, 2]], parentsIndexes: [[], [[0], []]], missingIndexes: [[], [[1], [0, 1]]] },
262
- { indexes: [0, [2, 3]], parentsIndexes: [[], [[0, 1], [0, 1]]], missingIndexes: [[], [[], []]] },
263
- { indexes: [0, [3, 2]], parentsIndexes: [[], [[0, 1], []]], missingIndexes: [[], [[], [0, 1]]] },
264
- { indexes: [0, [3, 3]], parentsIndexes: [[], [[0, 1], [0, 1]]], missingIndexes: [[], [[], []]] },
265
- { indexes: [2, [0, 0]], parentsIndexes: [[0], [[], []]], missingIndexes: [[1], [[], []]] },
266
- { indexes: [2, [0, 1]], parentsIndexes: [[0, 1], [[], [0]]], missingIndexes: [[], [[], []]] },
267
- { indexes: [2, [0, 2]], parentsIndexes: [[0, 1], [[], [0, 1]]], missingIndexes: [[], [[], []]] },
268
- { indexes: [2, [0, 3]], parentsIndexes: [[0, 1], [[], [0, 1]]], missingIndexes: [[], [[], []]] },
269
- { indexes: [2, [2, 2]], parentsIndexes: [[0, 1], [[0], []]], missingIndexes: [[], [[1], [0, 1]]] },
270
- { indexes: [2, [2, 3]], parentsIndexes: [[0, 1], [[0, 1], [0, 1]]], missingIndexes: [[], [[], []]] },
271
- { indexes: [2, [3, 2]], parentsIndexes: [[0, 1], [[0, 1], []]], missingIndexes: [[], [[], [0, 1]]] },
272
- { indexes: [2, [3, 3]], parentsIndexes: [[0, 1], [[0, 1], [0, 1]]], missingIndexes: [[], [[], []]] },
273
- ])
274
- });
275
- it('two hierarchical dimensions in combination, replicate missing parents', () => {
276
- const dimensions = [
277
- {
278
- id: 'D0',
279
- values: [
280
- { id: 'v0' },
281
- { id: 'v1', parents: [0] },
282
- { id: 'v2', parents: [0, 1] },
283
- ]
284
- },
285
- {
286
- id: 'COMB',
287
- dimensions: [{
288
- id: 'D1',
289
- values: [
290
- { id: 'v0' },
291
- { id: 'v1', parents: [0] },
292
- { id: 'v2', parents: [0, 1] },
293
- { id: 'v3', parents: [0, 1] },
294
- ]
295
- },{
296
- id: 'D2',
297
- values: [
298
- { id: 'v0' },
299
- { id: 'v1', parents: [0] },
300
- { id: 'v2', parents: [0, 1] },
301
- { id: 'v3', parents: [0, 1] },
302
- ]
303
- }]
304
- }
305
- ];
306
-
307
- const seriesIndexes = [
308
- [0, [0, 0]],
309
- [0, [0, 1]],
310
- [0, [0, 2]],
311
- [0, [0, 3]],
312
- [0, [2, 2]],
313
- [0, [2, 3]],
314
- [0, [3, 2]],
315
- [0, [3, 3]],
316
- [2, [0, 0]],
317
- [2, [0, 1]],
318
- [2, [0, 2]],
319
- [2, [0, 3]],
320
- [2, [2, 2]],
321
- [2, [2, 3]],
322
- [2, [3, 2]],
323
- [2, [3, 3]],
324
- ];
325
-
326
- expect(parseSeriesIndexesHierarchies(seriesIndexes, dimensions, true)).to.deep.equal([
327
- { indexes: [0, [0, 0]], parentsIndexes: [[], [[], []]], missingIndexes: [[], [[], []]] },
328
- { indexes: [0, [0, 1]], parentsIndexes: [[], [[], [0]]], missingIndexes: [[], [[], []]] },
329
- { indexes: [0, [0, 2]], parentsIndexes: [[], [[], [0, 1]]], missingIndexes: [[], [[], []]] },
330
- { indexes: [0, [0, 3]], parentsIndexes: [[], [[], [0, 1]]], missingIndexes: [[], [[], []]] },
331
- { indexes: [0, [2, 2]], parentsIndexes: [[], [[0], []]], missingIndexes: [[], [[1], [0, 1]]] },
332
- { indexes: [0, [2, 3]], parentsIndexes: [[], [[0], []]], missingIndexes: [[], [[1], [0, 1]]] },
333
- { indexes: [0, [3, 2]], parentsIndexes: [[], [[0], []]], missingIndexes: [[], [[1], [0, 1]]] },
334
- { indexes: [0, [3, 3]], parentsIndexes: [[], [[0], []]], missingIndexes: [[], [[1], [0, 1]]] },
335
- { indexes: [2, [0, 0]], parentsIndexes: [[0], [[], []]], missingIndexes: [[1], [[], []]] },
336
- { indexes: [2, [0, 1]], parentsIndexes: [[0], [[], [0]]], missingIndexes: [[1], [[], []]] },
337
- { indexes: [2, [0, 2]], parentsIndexes: [[0], [[], [0, 1]]], missingIndexes: [[1], [[], []]] },
338
- { indexes: [2, [0, 3]], parentsIndexes: [[0], [[], [0, 1]]], missingIndexes: [[1], [[], []]] },
339
- { indexes: [2, [2, 2]], parentsIndexes: [[0], [[0], []]], missingIndexes: [[1], [[1], [0, 1]]] },
340
- { indexes: [2, [2, 3]], parentsIndexes: [[0], [[0], []]], missingIndexes: [[1], [[1], [0, 1]]] },
341
- { indexes: [2, [3, 2]], parentsIndexes: [[0], [[0], []]], missingIndexes: [[1], [[1], [0, 1]]] },
342
- { indexes: [2, [3, 3]], parentsIndexes: [[0], [[0], []]], missingIndexes: [[1], [[1], [0, 1]]] },
343
- ])
344
- });
345
- });
@@ -1,138 +0,0 @@
1
- import { expect } from 'chai';
2
- import { parseValueHierarchy } from '../src/rules2/src/table/parseValueHierarchy';
3
-
4
- const indexedValues = {
5
- OECD: { id: 'OECD' },
6
- EU: { id: 'EU' },
7
- FRA: { id: 'FRA' },
8
- GER: { id: 'GER' },
9
- IDF: { id: 'IDF' },
10
- };
11
-
12
- describe('parseValueHierarchy tests', () => {
13
- it('no hierarchy in value', () => {
14
- const value = { id: 'EU', parents: [] };
15
- const previousValue = { id: 'IDF', parents: ['OECD', 'FRA'] };
16
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal(value);
17
- });
18
- it('previous is self', () => {
19
- const value = { id: 'GER', parents: ['OECD'] };
20
- const previousValue = { id: 'GER', parentsIds: ['OECD'], missingParents: [], parents: [{ id: 'OECD' }] };
21
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
22
- id: 'GER',
23
- parents: [{ id: 'OECD' }],
24
- parentsIds: ['OECD'],
25
- missingParents: []
26
- });
27
- });
28
- it('previous is self with missing parent', () => {
29
- const value = { id: 'GER', parents: ['OECD'] };
30
- const previousValue = { id: 'GER', parentsIds: ['OECD'], missingParents: [{ id: 'OECD' }], parents: [] };
31
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
32
- id: 'GER',
33
- parents: [],
34
- parentsIds: ['OECD'],
35
- missingParents: [{ id: 'OECD' }]
36
- });
37
- });
38
- it('previous is parent', () => {
39
- const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
40
- const previousValue = { id: 'FRA', parents: [{ id: 'OECD' }], parentsIds: ['OECD'], missingParents: [] };
41
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
42
- id: 'IDF',
43
- parents: [{ id: 'OECD' }, { id: 'FRA' }],
44
- parentsIds: ['OECD', 'FRA'],
45
- missingParents: []
46
- });
47
- });
48
- it('previous is parent with missing parent', () => {
49
- const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
50
- const previousValue = { id: 'FRA', parents: [], parentsIds: ['OECD'], missingParents: [{ id: 'OECD' }] };
51
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
52
- id: 'IDF',
53
- parents: [{ id: 'FRA' }],
54
- parentsIds: ['OECD', 'FRA'],
55
- missingParents: []
56
- });
57
- });
58
- it('missing parents', () => {
59
- const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
60
- const previousValue = null;
61
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
62
- id: 'IDF',
63
- parents: [],
64
- parentsIds: ['OECD', 'FRA'],
65
- missingParents: [{ id: 'OECD' }, { id: 'FRA' }]
66
- });
67
- });
68
- it('previous is bro', () => {
69
- const value = { id: 'FRA', parents: ['OECD'] };
70
- const previousValue = { id: 'FRA', parentsIds: ['OECD'], missingParents: [], parents: [{ id: 'OECD' }] };
71
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
72
- id: 'FRA',
73
- parents: [{ id: 'OECD' }],
74
- parentsIds: ['OECD'],
75
- missingParents: []
76
- });
77
- });
78
- it('previous is bro with missing parent', () => {
79
- const value = { id: 'FRA', parents: ['OECD'] };
80
- const previousValue = { id: 'GER', parentsIds: ['OECD'], missingParents: [{ id: 'OECD' }], parents: [] };
81
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
82
- id: 'FRA',
83
- parents: [],
84
- parentsIds: ['OECD'],
85
- missingParents: [{ id: 'OECD' }]
86
- });
87
- });
88
- it('previous is parent but in different hierarchy', () => {
89
- const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
90
- const previousValue = { id: 'FRA', parentsIds: ['EU'], missingParents: [], parents: [{ id: 'EU' }] };
91
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
92
- id: 'IDF',
93
- parents: [],
94
- parentsIds: ['OECD', 'FRA'],
95
- missingParents: [{ id: 'OECD' }, { id: 'FRA' }]
96
- });
97
- });
98
- it('previous is bro but in different hierarchy', () => {
99
- const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
100
- const previousValue = { id: 'BRE', parentsIds: ['EU', 'FRA'], missingParents: [], parents: [{ id: 'EU' }, { id: 'FRA' }] };
101
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
102
- id: 'IDF',
103
- parents: [],
104
- parentsIds: ['OECD', 'FRA'],
105
- missingParents: [{ id: 'OECD' }, { id: 'FRA' }]
106
- });
107
- });
108
- it('previous is nephew but there is missing ids on top', () => {
109
- const value = { id: 'GER', parents: ['OECD'] };
110
- const previousValue = { id: 'IDF', parentsIds: ['OECD', 'FRA'], missingParents: [], parents: [{ id: 'OECD' }, { id: 'FRA' }] };
111
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
112
- id: 'GER',
113
- parents: [{ id: 'OECD' }],
114
- parentsIds: ['OECD'],
115
- missingParents: []
116
- });
117
- });
118
- it('previous is nephew but there is missing ids on top', () => {
119
- const value = { id: 'GER', parents: ['OECD'] };
120
- const previousValue = { id: 'IDF', parentsIds: ['OECD', 'FRA'], missingParents: [], parents: [{ id: 'FRA' }] };
121
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
122
- id: 'GER',
123
- parents: [],
124
- parentsIds: ['OECD'],
125
- missingParents: [{ id: 'OECD' }]
126
- });
127
- });
128
- it('previous is nephew with missing parent and missing ids on top', () => {
129
- const value = { id: 'GER', parents: ['OECD'] };
130
- const previousValue = { id: 'IDF', parentsIds: ['OECD', 'FRA'], missingParents: [{ id: 'OECD' }, { id: 'FRA' }], parents: [] };
131
- expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
132
- id: 'GER',
133
- parents: [],
134
- parentsIds: ['OECD'],
135
- missingParents: [{ id: 'OECD' }]
136
- });
137
- });
138
- });
@@ -1,29 +0,0 @@
1
- import { expect } from 'chai';
2
- import { refineAttributes } from '../src/rules2/src';
3
-
4
- describe('refineAttributes tests', () => {
5
- it('basic test', () => {
6
- const attributes = [
7
- { id: 'A1', relationship: [] },
8
- { id: 'A2', relationship: ['D1', 'D2'] },
9
- { id: 'A3', series: true, relationship: [] },
10
- { id: 'A4', series: true, relationship: ['D3', 'D4'] },
11
- { id: 'A5', header: true, relationship: [] },
12
- { id: 'A6', series: true, relationship: ['D3', 'D4'] },
13
- ];
14
-
15
- const combinations = [
16
- { id: 'COMB1', concepts: ['A1', 'A3', 'A4'], relationship: ['D5', 'D6'] },
17
- { id: 'COMB2', concepts: ['A2'], relationship: [] },
18
- ];
19
-
20
- expect(refineAttributes(attributes, combinations)).to.deep.equal([
21
- { id: 'A1', series: true, relationship: ['D5', 'D6'], combined: true },
22
- { id: 'A2', series: true, relationship: [], combined: true },
23
- { id: 'A3', series: true, relationship: ['D5', 'D6'], combined: true },
24
- { id: 'A4', series: true, relationship: ['D5', 'D6'], combined: true },
25
- { id: 'A5', header: true, relationship: [] },
26
- { id: 'A6', series: true, relationship: ['D3', 'D4'] },
27
- ]);
28
- });
29
- });