@sis-cc/dotstatsuite-components 15.0.21 → 16.0.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 (161) hide show
  1. package/lib/rules/src/index.js +1 -145
  2. package/lib/rules/src/table/index.js +0 -42
  3. package/lib/rules2/src/constants.js +3 -1
  4. package/lib/rules2/src/enhanceObservations.js +98 -0
  5. package/lib/rules2/src/getAttributesSeries.js +33 -0
  6. package/lib/rules2/src/getCombinationDefinitions.js +48 -0
  7. package/lib/rules2/src/getHeaderCombinations.js +42 -0
  8. package/lib/rules2/src/getHeaderSubtitle.js +41 -0
  9. package/lib/rules2/src/getManyValuesDimensions.js +39 -0
  10. package/lib/rules2/src/getOneValueDimensions.js +46 -0
  11. package/lib/rules2/src/hasCellMetadata.js +1 -1
  12. package/lib/rules2/src/index.js +186 -18
  13. package/lib/rules2/src/parseAttributes.js +50 -0
  14. package/lib/rules2/src/parseCombinations.js +54 -0
  15. package/lib/rules2/src/prepareData.js +74 -0
  16. package/lib/{rules/src/table/preparators/getAttributeValue.js → rules2/src/refineAttributes.js} +13 -11
  17. package/lib/rules2/src/table/getCells.js +74 -0
  18. package/lib/rules2/src/table/getCellsAttributesIds.js +63 -0
  19. package/lib/rules2/src/table/getCombinationDimensionsData.js +47 -0
  20. package/lib/rules2/src/table/getCuratedCells.js +28 -0
  21. package/lib/rules2/src/table/getFlagsAndNotes.js +28 -0
  22. package/lib/rules2/src/table/getIndexedCombinationsByDisplay.js +31 -0
  23. package/lib/rules2/src/table/getLayout.js +93 -0
  24. package/lib/rules2/src/table/getLayoutData.js +202 -0
  25. package/lib/{rules/src/table/factories → rules2/src/table}/getSortedLayoutIndexes.js +55 -40
  26. package/lib/rules2/src/table/getTableProps.js +64 -0
  27. package/lib/rules2/src/table/parseValueHierarchy.js +55 -0
  28. package/lib/{rules/src/table/factories → rules2/src/table}/refineLayoutSize.js +17 -8
  29. package/lib/rules2/src/{hasLayoutEntryMetadata.js → utils.js} +9 -6
  30. package/package.json +1 -1
  31. package/src/rules/src/index.js +1 -19
  32. package/src/rules/src/table/index.js +0 -4
  33. package/src/rules2/src/constants.js +2 -0
  34. package/src/rules2/src/enhanceObservations.js +88 -0
  35. package/src/rules2/src/getAttributesSeries.js +29 -0
  36. package/src/rules2/src/getCombinationDefinitions.js +29 -0
  37. package/src/rules2/src/getHeaderCombinations.js +39 -0
  38. package/src/rules2/src/getHeaderSubtitle.js +34 -0
  39. package/src/rules2/src/getManyValuesDimensions.js +34 -0
  40. package/src/rules2/src/getOneValueDimensions.js +33 -0
  41. package/src/rules2/src/hasCellMetadata.js +1 -1
  42. package/src/rules2/src/index.js +21 -6
  43. package/src/rules2/src/parseAttributes.js +36 -0
  44. package/src/rules2/src/parseCombinations.js +36 -0
  45. package/src/rules2/src/prepareData.js +50 -0
  46. package/src/rules2/src/refineAttributes.js +16 -0
  47. package/src/rules2/src/table/getCells.js +72 -0
  48. package/src/rules2/src/table/getCellsAttributesIds.js +38 -0
  49. package/src/rules2/src/table/getCombinationDimensionsData.js +38 -0
  50. package/src/rules2/src/table/getCuratedCells.js +33 -0
  51. package/src/rules2/src/table/getFlagsAndNotes.js +21 -0
  52. package/src/rules2/src/table/getIndexedCombinationsByDisplay.js +16 -0
  53. package/src/rules2/src/table/getLayout.js +80 -0
  54. package/src/rules2/src/table/getLayoutData.js +183 -0
  55. package/src/rules2/src/table/getSortedLayoutIndexes.js +119 -0
  56. package/src/rules2/src/table/getTableProps.js +36 -0
  57. package/src/rules2/src/table/parseValueHierarchy.js +27 -0
  58. package/src/{rules/src/table/factories → rules2/src/table}/refineLayoutSize.js +24 -8
  59. package/src/rules2/src/utils.js +12 -0
  60. package/test/enhanceObservations2.test.js +219 -0
  61. package/test/getAttributesSeries.test.js +58 -0
  62. package/test/getCells.test.js +6 -40
  63. package/test/getCombinationDimensionsData.test.js +48 -0
  64. package/test/getSortedLayoutIndexes.test.js +1025 -3
  65. package/test/parseAttributes.test.js +17 -62
  66. package/test/parseValueHierarchy.test.js +88 -0
  67. package/test/refineLayoutSize.test.js +2621 -1
  68. package/lib/rules/src/table/factories/getCells.js +0 -97
  69. package/lib/rules/src/table/factories/getConfirmedSeriesAttributesIds.js +0 -26
  70. package/lib/rules/src/table/factories/getCuratedCells.js +0 -45
  71. package/lib/rules/src/table/factories/getLayoutData.js +0 -168
  72. package/lib/rules/src/table/factories/getLayoutWithFlags.js +0 -133
  73. package/lib/rules/src/table/factories/getTableCells.js +0 -24
  74. package/lib/rules/src/table/factories/getTableData.js +0 -98
  75. package/lib/rules/src/table/preparators/getDimensionsAttributesRegisters.js +0 -43
  76. package/lib/rules/src/table/preparators/getManyValuesDimensions.js +0 -33
  77. package/lib/rules/src/table/preparators/getOneValueDimensions.js +0 -24
  78. package/lib/rules/src/table/preparators/getUniqValuesAttributes.js +0 -36
  79. package/lib/rules/src/table/preparators/parseAttributes.js +0 -84
  80. package/lib/rules/src/table/preparators/parseAttributesValuesFromObservations.js +0 -22
  81. package/lib/rules/src/table/preparators/parseDimensionsIds.js +0 -22
  82. package/lib/rules/src/table/preparators/prepareData.js +0 -191
  83. package/lib/rules/src/table/preparators/refineObservationsAttributesValues.js +0 -31
  84. package/lib/rules/src/table/preparators/refineSeriesAttributesValues.js +0 -23
  85. package/lib/rules/src/table/units/appendUnitsInLayoutData.js +0 -82
  86. package/lib/rules/src/table/units/appendUnitsInLayoutDataEntry.js +0 -45
  87. package/lib/rules/src/table/units/cleanUnitsInLayoutData.js +0 -66
  88. package/lib/rules/src/table/units/getAttachmentSeriesIndexes.js +0 -25
  89. package/lib/rules/src/table/units/getHeaderUnits.js +0 -35
  90. package/lib/rules/src/table/units/getUnitsArtefacts.js +0 -85
  91. package/lib/rules/src/table/units/getUnitsCodes.js +0 -23
  92. package/lib/rules/src/table/units/getUnitsDefinition.js +0 -33
  93. package/lib/rules/src/table/units/getUnitsDisplay.js +0 -33
  94. package/lib/rules/src/table/units/getUnitsSerieIndexes.js +0 -23
  95. package/lib/rules/src/table/units/getUnitsSeries.js +0 -49
  96. package/lib/rules/src/table/units/getUnitsinLayout.js +0 -74
  97. package/lib/rules/src/table/units/refineDimSeriesUnits.js +0 -44
  98. package/lib/rules2/src/getAdvancedAttributes.js +0 -124
  99. package/lib/rules2/src/invertTime.js +0 -33
  100. package/src/rules/src/table/factories/getCells.js +0 -102
  101. package/src/rules/src/table/factories/getConfirmedSeriesAttributesIds.js +0 -27
  102. package/src/rules/src/table/factories/getCuratedCells.js +0 -40
  103. package/src/rules/src/table/factories/getLayoutData.js +0 -171
  104. package/src/rules/src/table/factories/getLayoutWithFlags.js +0 -137
  105. package/src/rules/src/table/factories/getSortedLayoutIndexes.js +0 -108
  106. package/src/rules/src/table/factories/getTableCells.js +0 -16
  107. package/src/rules/src/table/factories/getTableData.js +0 -86
  108. package/src/rules/src/table/preparators/getAttributeValue.js +0 -17
  109. package/src/rules/src/table/preparators/getDimensionsAttributesRegisters.js +0 -51
  110. package/src/rules/src/table/preparators/getManyValuesDimensions.js +0 -19
  111. package/src/rules/src/table/preparators/getOneValueDimensions.js +0 -17
  112. package/src/rules/src/table/preparators/getUniqValuesAttributes.js +0 -24
  113. package/src/rules/src/table/preparators/parseAttributes.js +0 -113
  114. package/src/rules/src/table/preparators/parseAttributesValuesFromObservations.js +0 -16
  115. package/src/rules/src/table/preparators/parseDimensionsIds.js +0 -17
  116. package/src/rules/src/table/preparators/prepareData.js +0 -197
  117. package/src/rules/src/table/preparators/refineObservationsAttributesValues.js +0 -22
  118. package/src/rules/src/table/preparators/refineSeriesAttributesValues.js +0 -11
  119. package/src/rules/src/table/units/appendUnitsInLayoutData.js +0 -56
  120. package/src/rules/src/table/units/appendUnitsInLayoutDataEntry.js +0 -38
  121. package/src/rules/src/table/units/cleanUnitsInLayoutData.js +0 -65
  122. package/src/rules/src/table/units/getAttachmentSeriesIndexes.js +0 -27
  123. package/src/rules/src/table/units/getHeaderUnits.js +0 -32
  124. package/src/rules/src/table/units/getUnitsArtefacts.js +0 -90
  125. package/src/rules/src/table/units/getUnitsCodes.js +0 -22
  126. package/src/rules/src/table/units/getUnitsDefinition.js +0 -34
  127. package/src/rules/src/table/units/getUnitsDisplay.js +0 -19
  128. package/src/rules/src/table/units/getUnitsSerieIndexes.js +0 -12
  129. package/src/rules/src/table/units/getUnitsSeries.js +0 -41
  130. package/src/rules/src/table/units/getUnitsinLayout.js +0 -71
  131. package/src/rules/src/table/units/refineDimSeriesUnits.js +0 -26
  132. package/src/rules2/src/getAdvancedAttributes.js +0 -111
  133. package/src/rules2/src/hasLayoutEntryMetadata.js +0 -9
  134. package/src/rules2/src/invertTime.js +0 -22
  135. package/test/advanced-attributes-parsing-perf.test.js +0 -16
  136. package/test/appendUnitsInLayoutDataEntry.test.js +0 -65
  137. package/test/cleanUnitsInLayoutData.test.js +0 -85
  138. package/test/enhanceObservations.test.js +0 -340
  139. package/test/getAttachmentSeriesIndexes.test.js +0 -35
  140. package/test/getConfirmedSeriesAttributesIds.test.js +0 -27
  141. package/test/getDataflowAdvancedAttributes.test.js +0 -32
  142. package/test/getHeaderUnits.test.js +0 -51
  143. package/test/getLayoutData.test.js +0 -206
  144. package/test/getLayoutDataWithFlags.test.js +0 -142
  145. package/test/getOneValueDimensions.test.js +0 -26
  146. package/test/getSeriesAdvancedAttributes.test.js +0 -32
  147. package/test/getSubtitleFlags.test.js +0 -42
  148. package/test/getTableData.test.js +0 -1317
  149. package/test/getUnitsArtefacts.test.js +0 -117
  150. package/test/getUnitsDefinition.test.js +0 -37
  151. package/test/getUnitsInLayout.test.js +0 -77
  152. package/test/getUnitsSeries.test.js +0 -154
  153. package/test/invertTime.test.js +0 -77
  154. package/test/parseAttributesValuesFromObservations.test.js +0 -45
  155. package/test/parseDimensionsIds.test.js +0 -20
  156. package/test/prepareData.test.js +0 -29
  157. package/test/refineObservationsAttributesValues.test.js +0 -33
  158. package/test/table-invert-time-perf.test.js +0 -11
  159. package/test/table-layout-perf.test.js +0 -74
  160. package/test/table-prep-duplicate-perf.test.js +0 -15
  161. package/test/table-prep-perf.test.js +0 -61
@@ -1,340 +0,0 @@
1
- import { expect } from 'chai';
2
- import { enhanceObservations } from '../src/rules/src/preparators/enhanceObservations';
3
- import numeral from 'numeral';
4
-
5
- numeral.register('locale', 'eObs', { delimiters: { thousands: ",", decimal: "." } });
6
- describe('enhanceObservations tests', () => {
7
- it('blank test', () => {
8
- expect(enhanceObservations([], {}, [], {})).to.deep.equal({});
9
- });
10
- it('formatValue test', () => {
11
- numeral.locale('eObs');
12
- const attributes = [
13
- { id: 'A1', values: [] },
14
- { id: 'A2', values: [{ id: '-1' }, { id: '0' }, { id: '1' }, { id: '3' }, { id: 'Z' }] },
15
- { id: 'A3', values: [{ id: '0' }, { id: '2' }, { id: '3' }, { id: '5' }, { id: 'A' }] }
16
- ];
17
-
18
- const customAttributes = { prefscale: 'A2', decimals: 'A3' };
19
-
20
- const observations = {
21
- a: { value: 2, attrValuesIndexes: [null, null, null], dimValuesIndexes: [] },
22
- c: { value: 10, attrValuesIndexes: [null, 4, null], dimValuesIndexes: [] },
23
- d: { value: 5, attrValuesIndexes: [null, 1, null], dimValuesIndexes: [] },
24
- e: { value: 8.3, attrValuesIndexes: [null, 0, null], dimValuesIndexes: [] },
25
- f: { value: 25.62, attrValuesIndexes: [null, 3, null], dimValuesIndexes: [] },
26
- g: { value: 3.7, attrValuesIndexes: [null, null, 4], dimValuesIndexes: [] },
27
- h: { value: 21.1234567, attrValuesIndexes: [null, null, 2], dimValuesIndexes: [] },
28
- i: { value: 20.1, attrValuesIndexes: [null, null, 3], dimValuesIndexes: [] },
29
- j: { value: 19.9, attrValuesIndexes: [null, null, 0], dimValuesIndexes: [] },
30
- k: { value: 16.35, attrValuesIndexes: [null, 2, 1], dimValuesIndexes: [] },
31
- l: { value: 155062.56, attrValuesIndexes: [null, null, 2], dimValuesIndexes: [] },
32
- m: { value: 155062.56, attrValuesIndexes: [null, null, 0], dimValuesIndexes: [] },
33
- n: { value: null, attrValuesIndexes: [null, null, 1], dimValuesIndexes: [] },
34
- };
35
-
36
- expect(enhanceObservations([], observations, attributes, { customAttributes })).to.deep.equal({
37
- a: { attributes: {}, units: { serieKey: '' }, value: 2, formattedValue: '2', attrValuesIndexes: [null, null, null], dimValuesIndexes: [], indexedDimValIds: {} },
38
- c: { attributes: {}, units: { serieKey: '' }, value: 10, formattedValue: '10', attrValuesIndexes: [null, 4, null], dimValuesIndexes: [], indexedDimValIds: {} },
39
- d: { attributes: {}, units: { serieKey: '' }, value: 5, formattedValue: '5', attrValuesIndexes: [null, 1, null], dimValuesIndexes: [], indexedDimValIds: {} },
40
- e: { attributes: {}, units: { serieKey: '' }, value: 8.3, formattedValue: '83', attrValuesIndexes: [null, 0, null], dimValuesIndexes: [], indexedDimValIds: {} },
41
- f: { attributes: {}, units: { serieKey: '' }, value: 25.62, formattedValue: '0.02562', attrValuesIndexes: [null, 3, null], dimValuesIndexes: [], indexedDimValIds: {} },
42
- g: { attributes: {}, units: { serieKey: '' }, value: 3.7, formattedValue: '3.7', attrValuesIndexes: [null, null, 4], dimValuesIndexes: [], indexedDimValIds: {} },
43
- h: { attributes: {}, units: { serieKey: '' }, value: 21.1234567, formattedValue: '21.123', attrValuesIndexes: [null, null, 2], dimValuesIndexes: [], indexedDimValIds: {} },
44
- i: { attributes: {}, units: { serieKey: '' }, value: 20.1, formattedValue: '20.10000', attrValuesIndexes: [null, null, 3], dimValuesIndexes: [], indexedDimValIds: {} },
45
- j: { attributes: {}, units: { serieKey: '' }, value: 19.9, formattedValue: '20', attrValuesIndexes: [null, null, 0], dimValuesIndexes: [], indexedDimValIds: {} },
46
- k: { attributes: {}, units: { serieKey: '' }, value: 16.35, formattedValue: '1.64', attrValuesIndexes: [null, 2, 1], dimValuesIndexes: [], indexedDimValIds: {} },
47
- l: { attributes: {}, units: { serieKey: '' }, value: 155062.56, formattedValue: '155,062.560', attrValuesIndexes: [null, null, 2], dimValuesIndexes: [], indexedDimValIds: {} },
48
- m: { attributes: {}, units: { serieKey: '' }, value: 155062.56, formattedValue: '155,063', attrValuesIndexes: [null, null, 0], dimValuesIndexes: [], indexedDimValIds: {} },
49
- n: { attributes: {}, units: { serieKey: '' }, value: null, formattedValue: '..', attrValuesIndexes: [null, null, 1], dimValuesIndexes: [], indexedDimValIds: {} },
50
- });
51
- });
52
-
53
- it('attributes and units test', () => {
54
- const attributes = [
55
- {
56
- id: 'a0',
57
- values: [{ id: 'v0' }, { id: 'v1' }, { id: 'v2' }],
58
- },
59
- {
60
- id: 'a1',
61
- values: [{ id: 'v0' }],
62
- },
63
- {
64
- id: 'a2',
65
- values: [{ id: 'v0' }, { id: 'v1' }],
66
- },
67
- {
68
- id: 'a3',
69
- values: [{ id: 'v0' }, { id: 'v1' }],
70
- },
71
- {
72
- id: 'a4',
73
- values: [{ id: 'v0' }, { id: 'v1', display: false }],
74
- },
75
- ];
76
-
77
- const dimensions = [
78
- {
79
- id: 'd0',
80
- __index: 0,
81
- values: [
82
- { id: 'v0', __index: 0, __indexPosition: 0 },
83
- { id: 'v1', __index: 1, __indexPosition: 1 },
84
- { id: 'v2', __index: 2, __indexPosition: 2 },
85
- { id: 'v3', __index: 3, __indexPosition: 3, display: false }
86
- ]
87
- },
88
- {
89
- id: 'd1',
90
- __index: 1,
91
- values: [
92
- { id: 'v0', __index: 0, __indexPosition: 0 }
93
- ]
94
- },
95
- {
96
- id: 'd2',
97
- __index: 2,
98
- values: [
99
- { id: 'v0', __index: 0, __indexPosition: 0 }
100
- ]
101
- },
102
- {
103
- id: 'd3',
104
- __index: 3,
105
- values: [
106
- { id: 'v0', __index: 0, __indexPosition: 0 },
107
- { id: 'v1', __index: 1, __indexPosition: 1 }
108
- ]
109
- },
110
- {
111
- id: 'd4',
112
- __index: 4,
113
- values: [
114
- { id: 'v0', __index: 0, __indexPosition: 0 }
115
- ]
116
- }
117
- ];
118
-
119
-
120
- const observations = {
121
- a: {
122
- attrValuesIndexes: [0, 0, 0, 0, 0],
123
- dimValuesIndexes: [0, 0, 0, 0, 0],
124
- value: 22,
125
- },
126
- b: {
127
- attrValuesIndexes: [1, 0, 1, 1, 0],
128
- dimValuesIndexes: [0, 0, 0, 1, 0],
129
- value: 17,
130
- },
131
- c: {
132
- attrValuesIndexes: [2, 0, null, null, 0],
133
- dimValuesIndexes: [1, 0, 0, 0, 0],
134
- value: 55,
135
- },
136
- d: {
137
- attrValuesIndexes: [2, 0, null, null, 1],
138
- dimValuesIndexes: [2, 0, 0, 0, 0],
139
- value: 35,
140
- },
141
- e: {
142
- attrValuesIndexes: [2, null, null, null, null],
143
- dimValuesIndexes: [3, 0, 0, 0, 0],
144
- value: 35,
145
- }
146
- };
147
-
148
- const options = {
149
- noDisplayIndexes: [],
150
- notDisplayedCodes: {
151
- d0: { values: { v3: 'v3' } },
152
- a4: { values: { v1: 'v1' } }
153
- },
154
- attributesIds: ['a0', 'a1'],
155
- unitsIds: ['d0', 'a4'],
156
- };
157
-
158
- expect(enhanceObservations(dimensions, observations, attributes, options)).to.deep.equal({
159
- a: {
160
- attrValuesIndexes: [0, 0, 0, 0, 0],
161
- dimValuesIndexes: [0, 0, 0, 0, 0],
162
- value: 22,
163
- formattedValue: '22',
164
- units: {
165
- d0: { id: 'd0', __index: 0, value: { id: 'v0', index: 0, __index: 0, __indexPosition: 0 } },
166
- a4: { id: 'a4', __index: 4, value: { id: 'v0', index: 0 } },
167
- serieKey: 'x:x:x:x:x'
168
- },
169
- attributes: {
170
- a0: { id: 'a0', value: { id: 'v0' } },
171
- a1: { id: 'a1', value: { id: 'v0' } }
172
- },
173
- indexedDimValIds: { d0: 'v0', d1: 'v0', d2: 'v0', d3: 'v0', d4: 'v0' }
174
- },
175
- b: {
176
- attrValuesIndexes: [1, 0, 1, 1, 0],
177
- dimValuesIndexes: [0, 0, 0, 1, 0],
178
- value: 17,
179
- formattedValue: '17',
180
- units: {
181
- d0: { id: 'd0', __index: 0, value: { id: 'v0', index: 0, __index: 0, __indexPosition: 0 } },
182
- a4: { id: 'a4', __index: 4, value: { id: 'v0', index: 0 } },
183
- serieKey: 'x:x:x:x:x'
184
- },
185
- attributes: {
186
- a0: { id: 'a0', value: { id: 'v1' } },
187
- a1: { id: 'a1', value: { id: 'v0' } }
188
- },
189
- indexedDimValIds: { d0: 'v0', d1: 'v0', d2: 'v0', d3: 'v1', d4: 'v0' }
190
- },
191
- c: {
192
- attrValuesIndexes: [2, 0, null, null, 0],
193
- dimValuesIndexes: [1, 0, 0, 0, 0],
194
- value: 55,
195
- formattedValue: '55',
196
- units: {
197
- d0: { id: 'd0', __index: 0, value: { id: 'v1', index: 1, __index: 1, __indexPosition: 1 } },
198
- a4: { id: 'a4', __index: 4, value: { id: 'v0', index: 0 } },
199
- serieKey: 'x:x:x:x:x'
200
- },
201
- attributes: {
202
- a0: { id: 'a0', value: { id: 'v2' } },
203
- a1: { id: 'a1', value: { id: 'v0' } }
204
- },
205
- indexedDimValIds: { d0: 'v1', d1: 'v0', d2: 'v0', d3: 'v0', d4: 'v0' }
206
- },
207
- d: {
208
- attrValuesIndexes: [2, 0, null, null, 1],
209
- dimValuesIndexes: [2, 0, 0, 0, 0],
210
- value: 35,
211
- formattedValue: '35',
212
- units: {
213
- d0: { id: 'd0', __index: 0, value: { id: 'v2', index: 2, __index: 2, __indexPosition: 2 } },
214
- serieKey: 'x:x:x:x:x'
215
- },
216
- attributes: {
217
- a0: { id: 'a0', value: { id: 'v2' } },
218
- a1: { id: 'a1', value: { id: 'v0' } }
219
- },
220
- indexedDimValIds: { d0: 'v2', d1: 'v0', d2: 'v0', d3: 'v0', d4: 'v0' }
221
- },
222
- e: {
223
- attrValuesIndexes: [2, null, null, null, null],
224
- dimValuesIndexes: [3, 0, 0, 0, 0],
225
- value: 35,
226
- formattedValue: '35',
227
- units: { serieKey: 'x:x:x:x:x' },
228
- attributes: {
229
- a0: { id: 'a0', value: { id: 'v2' } }
230
- },
231
- indexedDimValIds: { d0: 'v3', d1: 'v0', d2: 'v0', d3: 'v0', d4: 'v0' }
232
- }
233
- });
234
- });
235
- it('should not return attributes with rejectedValueIds [v0,v1]',()=> {
236
- const attributes = [
237
- {
238
- id: 'a0',
239
- values: [{ id: 'v0' }, { id: 'v1' }, { id: 'v2' }],
240
- },
241
- {
242
- id: 'a1',
243
- values: [{ id: 'v0' }],
244
- },
245
- ];
246
-
247
- const dimensions = [
248
- {
249
- id: 'd0',
250
- __index: 0,
251
- values: [
252
- { id: 'v0', __index: 0, __indexPosition: 0 },
253
- { id: 'v1', __index: 1, __indexPosition: 1 },
254
- { id: 'v2', __index: 2, __indexPosition: 2 },
255
- { id: 'v3', __index: 3, __indexPosition: 3, display: false }
256
- ]
257
- },
258
- {
259
- id: 'd1',
260
- __index: 1,
261
- values: [
262
- { id: 'v0', __index: 0, __indexPosition: 0 }
263
- ]
264
- }
265
- ];
266
-
267
-
268
- const observations = {
269
- a: {
270
- attrValuesIndexes: [0, 0, 0, 0, 0],
271
- dimValuesIndexes: [0, 0, 0, 0, 0],
272
- value: 22,
273
- },
274
- b: {
275
- attrValuesIndexes: [1, 0, 1, 1, 0],
276
- dimValuesIndexes: [0, 0, 0, 1, 0],
277
- value: 17,
278
- },
279
- };
280
-
281
- const options = {
282
- noDisplayIndexes: [],
283
- notDisplayedCodes: {
284
- d0: { values: { v3: 'v3' } },
285
- },
286
- attributesIds: ['a0', 'a1'],
287
- unitsIds: ['d0'],
288
- rejectedValueIds: ['v0','v1']
289
- };
290
- expect(enhanceObservations(dimensions, observations, attributes, options)).to.deep.equal({
291
- a: {
292
- attrValuesIndexes: [0, 0, 0, 0, 0],
293
- dimValuesIndexes: [0, 0, 0, 0, 0],
294
- value: 22,
295
- formattedValue: '22',
296
- units: {
297
- serieKey: 'x:x:x:x:x'
298
- },
299
- attributes: {},
300
- indexedDimValIds: { d0: 'v0', d1: 'v0'}
301
- },
302
- b: {
303
- attrValuesIndexes: [1, 0, 1, 1, 0],
304
- dimValuesIndexes: [0, 0, 0, 1, 0],
305
- value: 17,
306
- formattedValue: '17',
307
- units: {
308
- serieKey: 'x:x:x:x:x'
309
- },
310
- attributes: {},
311
- indexedDimValIds: { d0: 'v0', d1: 'v0'}
312
- },
313
- })
314
- })
315
- it('apply format attrs from dataflow level', () => {
316
- const observations = {
317
- a: { value: 2.358, attrValuesIndexes: [], dimValuesIndexes: [] },
318
- b: { value: 10.578, attrValuesIndexes: [], dimValuesIndexes: [] },
319
- };
320
-
321
- const attributes = [
322
- { id: 'PREF', relationship: { none: {} }, values: [{ id: '-1' }] },
323
- { id: 'DEC', relationship: { dataflow: {} }, values: [{ id: '1' }] }
324
- ];
325
-
326
- const options = {
327
- noDisplayIndexes: [],
328
- notDisplayedCodes: {},
329
- attributesIds: [],
330
- unitsIds: [],
331
- rejectedValueIds: [],
332
- customAttributes: { prefscale: 'PREF', decimals: 'DEC' }
333
- };
334
- expect(enhanceObservations([], observations, attributes, options)).to.deep.equal({
335
- a: { attributes: {}, units: { serieKey: '' }, value: 2.358, formattedValue: '23.6', attrValuesIndexes: [], dimValuesIndexes: [], indexedDimValIds: {} },
336
- b: { attributes: {}, units: { serieKey: '' }, value: 10.578, formattedValue: '105.8', attrValuesIndexes: [], dimValuesIndexes: [], indexedDimValIds: {} },
337
- });
338
- });
339
- });
340
-
@@ -1,35 +0,0 @@
1
- import { expect } from 'chai';
2
- import { getAttachmentSeriesIndexes } from '../src/rules/src/table/units/getAttachmentSeriesIndexes';
3
-
4
- const dimensions = {
5
- D0: { id: 'D0', __index: 0 },
6
- D1: { id: 'D1', __index: 1 },
7
- D2: { id: 'D2', __index: 2 },
8
- D3: { id: 'D3', __index: 3 },
9
- D4: { id: 'D4', __index: 4 },
10
- D5: { id: 'D5', __index: 5 },
11
- };
12
-
13
- const unitsArtefacts = {
14
- dimensions: { series: { D0: { id: 'D0' }, D1: { id: 'D1', header: true }, D6: { id: 'D6' } } },
15
- attributes: { series: {
16
- A1: { id: 'A1', relationship: { dimensions: ['D3', 'D2'] } },
17
- A2: { id: 'A2' }, A3: { id: 'A3', relationship: { primaryMeasure: 'OBS_VALUE' } }
18
- } }
19
- };
20
-
21
- describe('getAttachmentSeriesIndexes test', () => {
22
- it('blank test', () => {
23
- expect(getAttachmentSeriesIndexes({
24
- dimensions: {},
25
- unitsArtefacts: {
26
- dimensions: { series: {} },
27
- attributes: { series: {} }
28
- }
29
- })).to.deep.equal([]);
30
- });
31
- it('basic test', () => {
32
- expect(getAttachmentSeriesIndexes({ dimensions, unitsArtefacts }))
33
- .to.deep.equal([0, 2, 3]);
34
- });
35
- });
@@ -1,27 +0,0 @@
1
- import { expect } from 'chai';
2
- import { getConfirmedSeriesAttributesIds } from '../src/rules/src/table/factories/getConfirmedSeriesAttributesIds';
3
-
4
- const layoutIds = {
5
- header: ['d1', 'd2', 'd3'],
6
- sections: ['d4', 'd5', 'd6'],
7
- rows: ['d7', 'd8', 'd9']
8
- };
9
-
10
- const attributes = [
11
- { id: 'a1' }, // no target dimensions
12
- { id: 'a2', relationship: { dimensions: ['toto', 'africa'] } }, // non valid dimensions
13
- { id: 'a3', relationship: { dimensions: [] } }, // empty dimensions
14
- { id: 'a4', relationship: { dimensions: ['d2', 'd3'] } }, // header dimensions
15
- { id: 'a5', relationship: { dimensions: ['d4', 'd6'] } }, // sections dimensions
16
- { id: 'a6', relationship: { dimensions: ['d7', 'd8', 'd9'] } }, // rows dimensions
17
- { id: 'a7', relationship: { dimensions: ['d1', 'd4'] } }, // header and sections
18
- { id: 'a8', relationship: { dimensions: ['d2', 'd9'] } }, // header and rows
19
- { id: 'a9', relationship: { dimensions: ['d5', 'd8'] } }, // sections and rows
20
- { id: 'a10', relationship: { dimensions: ['d3', 'd4', 'd8'] } }, // header sections and rows
21
- ];
22
-
23
- describe('getConfirmedSeriesAttributesIds test', () => {
24
- it('complete case', () => {
25
- expect(getConfirmedSeriesAttributesIds(attributes, layoutIds)).to.deep.equal(['a4', 'a5', 'a6', 'a9']);
26
- });
27
- });
@@ -1,32 +0,0 @@
1
- import { expect } from 'chai';
2
- import { getDataflowAdvancedAttributes } from '../src/rules2/src/getAdvancedAttributes';
3
-
4
- describe('getDataflowAdvancedAttributes tests', () => {
5
- it('complete test', () => {
6
- const advancedAttributesIds = ['a0', 'a2', 'a4', 'a6'];
7
- const attributes = {
8
- a0: { id: 'a0', relationship: { none: {} }, values: [{ id: 'v0' }] },
9
- a1: { id: 'a1', relationship: { none: {} }, values: [{ id: 'v0' }] },
10
- a2: { id: 'a2', relationship: { dimensions: ['d0'] }, values: [{ id: 'v0' }] },
11
- a3: { id: 'a3', relationship: { dimensions: ['d0'] }, values: [{ id: 'v0' }] },
12
- a4: { id: 'a4', relationship: { dimensions: ['d0', 'd1'] }, values: [{ id: 'v0' }] },
13
- a5: { id: 'a5', relationship: { dimensions: ['d0', 'd1'] }, values: [{ id: 'v0' }] },
14
- a6: { id: 'a6', relationship: { dimensions: ['d0', 'd1', 'd2'] }, values: [{ id: 'v0' }] },
15
- };
16
- const dimLength = 4;
17
- const dimensions = {
18
- d0: { id: 'd0', __index: 1, values: [{ id: 'v0' }] },
19
- d1: { id: 'd1', __index: 2, values: [{ id: 'v0' }] },
20
- d2: { id: 'd2', __index: 3, values: [{ id: 'v0' }] },
21
- };
22
-
23
- const expected = {
24
- ':::': { attributes: { a0: { id: 'a0', value: { id: 'v0' } } }, coordinates: {} },
25
- ':0::': { attributes: { a2: { id: 'a2', value: { id: 'v0' } } }, coordinates: { d0: 'v0' } },
26
- ':0:0:': { attributes: { a4: { id: 'a4', value: { id: 'v0' } } }, coordinates: { d0: 'v0', d1: 'v0' } },
27
- ':0:0:0': { attributes: { a6: { id: 'a6', value: { id: 'v0' } } }, coordinates: { d0: 'v0', d1: 'v0', d2: 'v0' } },
28
- }
29
-
30
- expect(getDataflowAdvancedAttributes(attributes, dimensions, advancedAttributesIds, dimLength)).to.deep.equal(expected);
31
- });
32
- });
@@ -1,51 +0,0 @@
1
- import { expect } from 'chai';
2
- import { getHeaderUnits } from '../src/rules/src/table/units/getHeaderUnits';
3
-
4
- describe('getHeaderUnits tests', () => {
5
- it('blank test', () => {
6
- expect(getHeaderUnits({
7
- unitsArtefacts: {
8
- attributes: { header: {} },
9
- dimensions: { header: {} }
10
- },
11
- unitsDefinitionCodes: ['D1', 'C8', 'A2']
12
- })).to.deep.equal([]);
13
- });
14
- it('basic test', () => {
15
- expect(getHeaderUnits({
16
- unitsArtefacts: {
17
- attributes: { header: {
18
- A1: { id: 'A1', values: [{ id: 'V1' }] },
19
- A2: { id: 'A2', values: [{ id: 'V1' }] },
20
- A3: { id: 'A3', values: [{ id: 'RA' }] },
21
- } },
22
- dimensions: { header: {
23
- D1: { id: 'D1', values: [{ id: 'V1' }] },
24
- D2: { id: 'D2', values: [{ id: 'RD' }] }
25
- } }
26
- },
27
- rejectedValues: ['RA', 'RD'],
28
- unitsDefinitionCodes: ['D1', 'C8', 'A2']
29
- })).to.deep.equal([
30
- { id: 'D1', value: { id: 'V1' } },
31
- { id: 'A2', value: { id: 'V1' } }
32
- ]);
33
- });
34
- it('no display', () => {
35
- expect(getHeaderUnits({
36
- unitsArtefacts: {
37
- attributes: { header: {
38
- A1: { id: 'A1', values: [{ id: 'V1' }] },
39
- A2: { id: 'A2', display: false, values: [{ id: 'V1' }] },
40
- A3: { id: 'A3', values: [{ id: 'RA' }] },
41
- } },
42
- dimensions: { header: {
43
- D1: { id: 'D1', values: [{ id: 'V1', display: false }] },
44
- D2: { id: 'D2', values: [{ id: 'RD' }] }
45
- } }
46
- },
47
- rejectedValues: ['RA', 'RD'],
48
- unitsDefinitionCodes: ['D1', 'C8', 'A2']
49
- })).to.deep.equal([]);
50
- })
51
- });