@gooddata/sdk-ui-dashboard 11.7.0 → 11.8.0-alpha.1

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 (48) hide show
  1. package/esm/__version.d.ts +1 -1
  2. package/esm/__version.d.ts.map +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/__version.js.map +1 -1
  5. package/esm/kdaDialog/composition/hooks/useAddNewAttributeHandler.js +1 -1
  6. package/esm/kdaDialog/composition/hooks/useAddNewAttributeHandler.js.map +1 -1
  7. package/esm/kdaDialog/utils.d.ts.map +1 -1
  8. package/esm/kdaDialog/utils.js +1 -0
  9. package/esm/kdaDialog/utils.js.map +1 -1
  10. package/esm/model/commandHandlers/dashboard/saveDashboardHandler.d.ts.map +1 -1
  11. package/esm/model/commandHandlers/dashboard/saveDashboardHandler.js +4 -0
  12. package/esm/model/commandHandlers/dashboard/saveDashboardHandler.js.map +1 -1
  13. package/esm/model/commandHandlers/drill/keyDriverAnalysisHandler.js +6 -6
  14. package/esm/model/commandHandlers/drill/keyDriverAnalysisHandler.js.map +1 -1
  15. package/esm/model/commandHandlers/tabs/switchDashboardTabHandler.d.ts.map +1 -1
  16. package/esm/model/commandHandlers/tabs/switchDashboardTabHandler.js +7 -3
  17. package/esm/model/commandHandlers/tabs/switchDashboardTabHandler.js.map +1 -1
  18. package/esm/model/events/drill.d.ts +3 -3
  19. package/esm/model/events/drill.d.ts.map +1 -1
  20. package/esm/model/events/drill.js.map +1 -1
  21. package/esm/model/store/config/configSelectors.d.ts +6 -0
  22. package/esm/model/store/config/configSelectors.d.ts.map +1 -1
  23. package/esm/model/store/config/configSelectors.js +8 -0
  24. package/esm/model/store/config/configSelectors.js.map +1 -1
  25. package/esm/model/store/index.d.ts +1 -1
  26. package/esm/model/store/index.d.ts.map +1 -1
  27. package/esm/model/store/index.js +1 -1
  28. package/esm/model/store/index.js.map +1 -1
  29. package/esm/model/store/meta/metaSelectors.d.ts +6 -0
  30. package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
  31. package/esm/model/store/meta/metaSelectors.js +56 -5
  32. package/esm/model/store/meta/metaSelectors.js.map +1 -1
  33. package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.d.ts +2 -3
  34. package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.d.ts.map +1 -1
  35. package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.js +3 -6
  36. package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.js.map +1 -1
  37. package/esm/presentation/drill/utils/kdaUtils.d.ts +2 -2
  38. package/esm/presentation/drill/utils/kdaUtils.d.ts.map +1 -1
  39. package/esm/presentation/drill/utils/kdaUtils.js +263 -247
  40. package/esm/presentation/drill/utils/kdaUtils.js.map +1 -1
  41. package/esm/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.d.ts.map +1 -1
  42. package/esm/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.js +3 -2
  43. package/esm/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.js.map +1 -1
  44. package/esm/presentation/widget/insight/insightToTable.d.ts.map +1 -1
  45. package/esm/presentation/widget/insight/insightToTable.js +146 -2
  46. package/esm/presentation/widget/insight/insightToTable.js.map +1 -1
  47. package/esm/sdk-ui-dashboard.d.ts +9 -3
  48. package/package.json +18 -18
@@ -1,87 +1,284 @@
1
1
  // (C) 2025 GoodData Corporation
2
- import { isEqual, isEqualWith } from "lodash-es";
3
- import { invariant } from "ts-invariant";
4
- import { areObjRefsEqual, isMeasureDescriptor, } from "@gooddata/sdk-model";
5
- import { DataViewFacade, isDrillIntersectionAttributeItem, isDrillIntersectionDateAttributeItem, } from "@gooddata/sdk-ui";
2
+ import { isAttributeDescriptor, isMeasureDescriptor, isMeasureGroupDescriptor, } from "@gooddata/sdk-model";
3
+ import { DataViewFacade, isAttributeScope, isDrillIntersectionAttributeItem, isDrillIntersectionDateAttributeItem, isMeasureScope, isTableMeasureValue, isValueColumnDefinition, isValueRowDefinition, } from "@gooddata/sdk-ui";
6
4
  /**
7
5
  * @internal
8
6
  */
9
- export function getKdaKeyDriverCombinations(dateAttributes, drillDefinition, drillEvent) {
7
+ export function getKdaKeyDriverCombinations(drillDefinition, drillEvent) {
10
8
  //TODO: Special implementation for headline
11
9
  const dv = DataViewFacade.for(drillEvent.dataView);
12
- const combinations = findHeadersCombinations(drillDefinition, drillEvent);
10
+ const combinations = findHeadersCombinations(dv, drillDefinition, drillEvent);
13
11
  // No relevant headers
14
- if (!combinations.attributeHeader || !combinations.metricHeader) {
12
+ if (!combinations.dateHeader || !combinations.metricHeader) {
15
13
  return [];
16
14
  }
17
- const dateAttribute = findDateValues(dv, dateAttributes, combinations);
18
- const metricValue = findMetricValues(dv, combinations);
15
+ const dimScopedValues = getScopeValuesByDimensions(combinations.dimensions);
16
+ const dateId = combinations.dateHeader.attributeHeader.localIdentifier;
17
+ const table = dv.data().asTable();
18
+ const filteredColumns = filterColumns(table.columnDefinitions, dimScopedValues[1], dateId);
19
+ const filteredRows = filterRows(table.rowDefinitions, dimScopedValues[0], dateId);
20
+ const exactColumn = filterExactColumn(filteredColumns, dimScopedValues[1]);
21
+ const exactRow = filterExactRow(filteredRows, dimScopedValues[0]);
22
+ const current = getCurrentValue(table.data, dateId, exactRow, exactColumn);
23
+ const previous = getDirectionValue(table.data, dateId, current, -1);
24
+ const next = getDirectionValue(table.data, dateId, current, 1);
19
25
  const res = [];
20
26
  // There is a previous value in graph
21
- const before = createBefore(combinations, dateAttribute, metricValue);
27
+ const before = createBefore(combinations, current, previous);
22
28
  res.push(...(before ? [before] : []));
23
29
  // There is a next value in graph
24
- const after = createAfter(combinations, dateAttribute, metricValue);
30
+ const after = createAfter(combinations, current, next);
25
31
  res.push(...(after ? [after] : []));
26
32
  // There is a previous year value in graph
27
- const year = createYearToYear(combinations, dateAttribute, metricValue);
33
+ const year = createYearToYear(combinations, table, filteredRows, filteredColumns, dimScopedValues, current);
28
34
  res.push(...(year ? [year] : []));
29
35
  return res;
30
36
  }
31
- function createBefore(combinations, dataValues, metricValue) {
37
+ function filterRows(rows, sv, dateId) {
38
+ return rows.filter((row) => {
39
+ if (isValueRowDefinition(row)) {
40
+ const scopedValues = getScopeRowsValues(row, dateId);
41
+ const match = areScopeValuesIntersects(sv, scopedValues);
42
+ if (match) {
43
+ return true;
44
+ }
45
+ }
46
+ return false;
47
+ });
48
+ }
49
+ function filterColumns(columns, sv, dateId) {
50
+ return columns.filter((column) => {
51
+ if (isValueColumnDefinition(column)) {
52
+ const scopedValues = getScopeColumnsValues(column, dateId);
53
+ const match = areScopeValuesIntersects(sv, scopedValues);
54
+ if (match) {
55
+ return true;
56
+ }
57
+ }
58
+ return false;
59
+ });
60
+ }
61
+ function filterExactColumn(columns, sv) {
62
+ return columns.find((column) => {
63
+ if (isValueColumnDefinition(column)) {
64
+ const scopedValues = getScopeColumnsValues(column);
65
+ const match = areScopeValuesIntersects(sv, scopedValues);
66
+ if (match) {
67
+ return true;
68
+ }
69
+ }
70
+ return false;
71
+ });
72
+ }
73
+ function filterExactRow(rows, sv) {
74
+ return rows.find((row) => {
75
+ if (isValueRowDefinition(row)) {
76
+ const scopedValues = getScopeRowsValues(row);
77
+ const match = areScopeValuesIntersects(sv, scopedValues);
78
+ if (match) {
79
+ return true;
80
+ }
81
+ }
82
+ return false;
83
+ });
84
+ }
85
+ function getScopeValuesByDimensions(dimensions) {
86
+ return dimensions.map((d) => {
87
+ const metrics = [];
88
+ const map = new Map();
89
+ d.forEach((h) => {
90
+ if (isDrillIntersectionAttributeItem(h.header)) {
91
+ map.set(h.header.attributeHeader.localIdentifier, h.header.attributeHeaderItem.uri);
92
+ }
93
+ if (isMeasureDescriptor(h.header)) {
94
+ metrics.push(h.header.measureHeaderItem.localIdentifier);
95
+ }
96
+ });
97
+ return {
98
+ metrics,
99
+ attributes: map,
100
+ };
101
+ });
102
+ }
103
+ function getScopeColumnsValues(column, dateId) {
104
+ const metrics = [];
105
+ const attributes = new Map();
106
+ column.columnScope.forEach((s) => {
107
+ if (isAttributeScope(s)) {
108
+ const localId = s.descriptor.attributeHeader.localIdentifier;
109
+ if (dateId && dateId !== localId) {
110
+ attributes.set(localId, s.header.attributeHeaderItem.uri);
111
+ }
112
+ if (!dateId) {
113
+ attributes.set(localId, s.header.attributeHeaderItem.uri);
114
+ }
115
+ }
116
+ if (isMeasureScope(s)) {
117
+ const localId = s.descriptor.measureHeaderItem.localIdentifier;
118
+ metrics.push(localId);
119
+ }
120
+ });
121
+ return {
122
+ metrics,
123
+ attributes,
124
+ };
125
+ }
126
+ function getScopeRowsValues(row, dateId) {
127
+ const metrics = [];
128
+ const attributes = new Map();
129
+ row.rowScope.forEach((s) => {
130
+ if (isAttributeScope(s)) {
131
+ const localId = s.descriptor.attributeHeader.localIdentifier;
132
+ if (dateId && dateId !== localId) {
133
+ attributes.set(localId, s.header.attributeHeaderItem.uri);
134
+ }
135
+ if (!dateId) {
136
+ attributes.set(localId, s.header.attributeHeaderItem.uri);
137
+ }
138
+ }
139
+ if (isMeasureScope(s)) {
140
+ const localId = s.descriptor.measureHeaderItem.localIdentifier;
141
+ metrics.push(localId);
142
+ }
143
+ });
144
+ return {
145
+ metrics,
146
+ attributes,
147
+ };
148
+ }
149
+ function areScopeValuesIntersects(a, b) {
150
+ const coveredMetrics = a.metrics.every((m) => b.metrics.includes(m));
151
+ const coveredAttributes = Array.from(a.attributes.entries()).every(([key, value]) => {
152
+ if (b.attributes.has(key)) {
153
+ return b.attributes.get(key) === value;
154
+ }
155
+ return true;
156
+ });
157
+ return coveredMetrics && coveredAttributes;
158
+ }
159
+ function getCurrentValue(data, dateId, row, column) {
160
+ if (!row || !column) {
161
+ return null;
162
+ }
163
+ const res = data[row.rowIndex]?.[column.columnIndex];
164
+ return mapToCurrentValue(res, dateId, row.rowIndex, column.columnIndex);
165
+ }
166
+ function getDirectionValue(data, dateId, current, direction) {
167
+ if (!current) {
168
+ return null;
169
+ }
170
+ if (current.direction === "row") {
171
+ const res = data[current.row + direction]?.[current.column];
172
+ return mapToCurrentValue(res, dateId, current.row + direction, current.column);
173
+ }
174
+ if (current.direction === "column") {
175
+ const res = data[current.row]?.[current.column + direction];
176
+ return mapToCurrentValue(res, dateId, current.row, current.column + direction);
177
+ }
178
+ return null;
179
+ }
180
+ function mapToCurrentValue(res, dateId, row, column) {
181
+ if (isTableMeasureValue(res)) {
182
+ const [value, scope, direction] = getCurrentValueInfo(res, dateId);
183
+ if (value && scope && direction) {
184
+ return {
185
+ value,
186
+ scope,
187
+ direction,
188
+ row,
189
+ column,
190
+ };
191
+ }
192
+ }
193
+ return null;
194
+ }
195
+ function getCurrentValueInfo(data, dateId) {
196
+ if (data && isTableMeasureValue(data) && isValueColumnDefinition(data.columnDefinition)) {
197
+ const dateFromColumns = data.columnDefinition.columnScope.find((c) => {
198
+ return isAttributeScope(c) && c.descriptor.attributeHeader.localIdentifier === dateId;
199
+ });
200
+ const dateFromRows = data.rowDefinition.rowScope.find((c) => {
201
+ return isAttributeScope(c) && c.descriptor.attributeHeader.localIdentifier === dateId;
202
+ });
203
+ if (dateFromColumns) {
204
+ return [data.value, dateFromColumns, "column"];
205
+ }
206
+ if (dateFromRows) {
207
+ return [data.value, dateFromRows, "row"];
208
+ }
209
+ }
210
+ return [null, null, null];
211
+ }
212
+ function createBefore(combinations, current, prev) {
32
213
  const measure = combinations.metricHeader;
33
- if (measure && dataValues.previousValue && metricValue.previousValue) {
34
- const currentValue = metricValue.currentValue.rawValue;
35
- const previousValue = metricValue.previousValue.rawValue;
214
+ if (measure && current && prev) {
215
+ const currentValue = current.value;
216
+ const previousValue = prev.value;
36
217
  return {
37
218
  measure,
38
219
  where: "before",
39
220
  difference: currentValue - previousValue,
40
221
  type: "comparative",
41
222
  values: [previousValue, currentValue],
42
- range: [dataValues.previousValue, dataValues.currentValue],
223
+ range: [prev.scope, current.scope],
43
224
  };
44
225
  }
45
226
  return undefined;
46
227
  }
47
- function createAfter(combinations, dataValues, metricValue) {
228
+ function createAfter(combinations, current, next) {
48
229
  const measure = combinations.metricHeader;
49
- if (measure && dataValues.nextValue && metricValue.nextValue) {
50
- const currentValue = metricValue.currentValue.rawValue;
51
- const nextValue = metricValue.nextValue.rawValue;
230
+ if (measure && current && next) {
231
+ const currentValue = current.value;
232
+ const nextValue = next.value;
52
233
  return {
53
234
  measure,
54
235
  where: "after",
55
236
  difference: nextValue - currentValue,
56
237
  type: "comparative",
57
238
  values: [currentValue, nextValue],
58
- range: [dataValues.currentValue, dataValues.nextValue],
239
+ range: [current.scope, next.scope],
59
240
  };
60
241
  }
61
242
  return undefined;
62
243
  }
63
- function createYearToYear(combinations, dataValues, metricValue) {
244
+ function createYearToYear(combinations, table, rows, columns, dims, current) {
64
245
  const measure = combinations.metricHeader;
65
- const attributeDefinition = dataValues.attributeDefinition;
66
- if (!attributeDefinition || !measure) {
246
+ const dateId = combinations.dateHeader?.attributeHeader.localIdentifier;
247
+ if (!current || !measure || !dateId) {
67
248
  return undefined;
68
249
  }
69
- const isYear = attributeDefinition.granularity === "GDC.time.year";
250
+ const attribute = current.scope.descriptor.attributeHeader;
251
+ const attributeItem = current.scope.header.attributeHeaderItem;
252
+ const isYear = attribute.granularity === "GDC.time.year";
70
253
  // Year to year is not available for year granularity, it not makes sense
71
254
  if (isYear) {
72
255
  return undefined;
73
256
  }
74
- const previousYearDefinition = findPreviousYearValue(combinations, dataValues, metricValue);
75
- if (previousYearDefinition && metricValue) {
76
- const previousValue = previousYearDefinition.previousYearDataPoint.rawValue;
77
- const currentValue = metricValue.currentValue.rawValue;
257
+ const previousYear = getPreviousYear(attributeItem);
258
+ const updated = dims.map((d) => {
259
+ const metrics = d.metrics.slice();
260
+ const attributes = new Map(d.attributes);
261
+ if (attributes.has(attribute.localIdentifier)) {
262
+ attributes.set(attribute.localIdentifier, previousYear);
263
+ }
264
+ return {
265
+ metrics,
266
+ attributes,
267
+ };
268
+ });
269
+ const exactColumn = filterExactColumn(columns, updated[1]);
270
+ const exactRow = filterExactRow(rows, updated[0]);
271
+ const prev = getCurrentValue(table.data, dateId, exactRow, exactColumn);
272
+ if (measure && current && prev) {
273
+ const previousValue = prev.value;
274
+ const currentValue = current.value;
78
275
  return {
79
276
  measure,
80
277
  where: "none",
81
278
  difference: previousValue - currentValue,
82
279
  type: "year-to-year",
83
280
  values: [previousValue, currentValue],
84
- range: [previousYearDefinition.previousYear, dataValues.currentValue],
281
+ range: [prev.scope, current.scope],
85
282
  };
86
283
  }
87
284
  return undefined;
@@ -99,255 +296,74 @@ export function getKeyDriverCombinationItemTitle(intl, item) {
99
296
  if (item.difference < 0) {
100
297
  return intl.formatMessage({ id: "drill.kda.drop" }, {
101
298
  where,
102
- title: date.attributeHeaderItem.formattedName,
299
+ title: date.header.attributeHeaderItem.formattedName,
103
300
  });
104
301
  }
105
302
  if (item.difference > 0) {
106
303
  return intl.formatMessage({ id: "drill.kda.increase" }, {
107
304
  where,
108
- title: date.attributeHeaderItem.formattedName,
305
+ title: date.header.attributeHeaderItem.formattedName,
109
306
  });
110
307
  }
111
308
  return intl.formatMessage({ id: "drill.kda.no_change" }, {
112
309
  where,
113
- title: date.attributeHeaderItem.formattedName,
310
+ title: date.header.attributeHeaderItem.formattedName,
114
311
  });
115
312
  }
116
313
  case "year-to-year":
117
314
  return intl.formatMessage({ id: "drill.kda.year_to_year" });
118
315
  }
119
316
  }
120
- function findHeadersCombinations(drillDefinition, drillEvent) {
317
+ function findHeadersCombinations(dv, drillDefinition, drillEvent) {
121
318
  if (drillDefinition.transition !== "in-place") {
122
319
  return {
123
- attributeHeader: undefined,
320
+ dateHeader: undefined,
124
321
  metricHeader: undefined,
322
+ attributeHeaders: [],
125
323
  };
126
324
  }
325
+ const intersections = drillEvent.drillContext.intersection || [];
127
326
  //NOTE: For now we only support 1 date and 1 metric
128
- const attributeHeader = (drillEvent.drillContext.intersection || [])
327
+ const dateHeader = intersections
129
328
  .map((intersectionElement) => intersectionElement.header)
130
329
  .filter(isDrillIntersectionDateAttributeItem)[0];
131
- const metricHeader = (drillEvent.drillContext.intersection || [])
330
+ const metricHeader = intersections
132
331
  .map((intersectionElement) => intersectionElement.header)
133
332
  .filter(isMeasureDescriptor)[0];
134
- const attributeHeaders = (drillEvent.drillContext.intersection || [])
333
+ const attributeHeaders = intersections
135
334
  .map((intersectionElement) => intersectionElement.header)
136
335
  .filter(isDrillIntersectionAttributeItem)
137
- .filter((header) => header !== attributeHeader);
138
- return {
139
- attributeHeaders,
140
- attributeHeader,
141
- metricHeader,
142
- };
143
- }
144
- function findDateValues(dv, dateAttributes, combinations) {
145
- const dimensions = calculateDimensions(dv, combinations);
146
- invariant(combinations.attributeHeader, "Primary attribute header is missing");
147
- const previousValue = getAttributeHeaders(combinations, dimensions, -1);
148
- const currentValue = combinations.attributeHeader;
149
- const nextValue = getAttributeHeaders(combinations, dimensions, 1);
150
- const attributeDefinition = dateAttributes.find((da) => {
151
- return (areObjRefsEqual(da.defaultDisplayForm, currentValue.attributeHeader.ref) ||
152
- da.attribute.displayForms.some((df) => areObjRefsEqual(df.ref, currentValue.attributeHeader.ref)));
153
- });
154
- return {
155
- dimensions,
156
- previousValue,
157
- currentValue,
158
- nextValue,
159
- attributeDefinition,
160
- };
161
- }
162
- function getAttributeHeaders(combinations, dimensions, direction) {
163
- const currentHeader = combinations.attributeHeader;
164
- invariant(currentHeader, "Primary attribute header is missing");
165
- const primaryDimension = dimensions[0];
166
- const otherDimensions = dimensions.slice(1);
167
- const grouped = groupByDimension(otherDimensions, primaryDimension);
168
- const primaryValid = primaryDimension.values.map((v, i) => {
169
- const filled = grouped.every((g) => g.values[i]);
170
- return filled ? v : null;
171
- });
172
- const dates = primaryValid.filter(Boolean);
173
- const currentHeaderIndex = dates.findIndex((d) => isEqual(d.attributeHeaderItem, primaryDimension.value.attributeHeaderItem));
174
- const directionHeaderIndex = primaryDimension.values.indexOf(dates[currentHeaderIndex + direction]);
175
- return primaryDimension.values[directionHeaderIndex] ?? undefined;
176
- }
177
- function findMetricValues(dv, combinations) {
178
- invariant(combinations.metricHeader, "Missing metric header.");
179
- const localId = combinations.metricHeader.measureHeaderItem.localIdentifier;
180
- const data = Array.from(dv.data().series().allForMeasure(localId));
181
- const titles = [
182
- combinations.attributeHeader.attributeHeaderItem.uri,
183
- ...combinations.attributeHeaders.map(asUri),
184
- ];
185
- const foundData = data.filter(dataSeriesExactMatch(titles));
186
- const scopeTitles = [...combinations.attributeHeaders.map(asUri)];
187
- const scopeDateData = data.filter(dataSeriesPartialMatch(scopeTitles));
188
- const selectedData = foundData[0] ?? scopeDateData[0] ?? data[0];
189
- const selectedDataIndex = scopeDateData.indexOf(selectedData);
190
- const selectedDataPoints = selectedData.dataPoints();
191
- const foundDataPoints = selectedDataPoints.filter(dataPointPartialMatch(scopeTitles));
192
- const foundDataPoint = selectedDataPoints.find(dataPointExactMatch(titles));
193
- const selectDataPoint = foundDataPoint ?? foundDataPoints[0] ?? selectedDataPoints[0];
194
- //only one dimensionality
195
- if (scopeDateData.length === 1) {
196
- const selectedDataPointIndex = foundDataPoints.indexOf(selectDataPoint);
197
- const previousValue = foundDataPoints[selectedDataPointIndex - 1];
198
- const currentValue = selectDataPoint;
199
- const nextValue = foundDataPoints[selectedDataPointIndex + 1];
200
- return {
201
- dataPointIndex: selectedDataPointIndex,
202
- values: scopeDateData,
203
- previousValue,
204
- currentValue,
205
- nextValue,
206
- };
207
- }
208
- //multiple dimensionality
209
- const selectedDataPointIndex = selectedDataPoints.indexOf(selectDataPoint);
210
- const previousData = scopeDateData[selectedDataIndex - 1];
211
- const nextData = scopeDateData[selectedDataIndex + 1];
212
- const previousValue = previousData?.dataPoints()[selectedDataPointIndex] ?? undefined;
213
- const currentValue = selectDataPoint;
214
- const nextValue = nextData?.dataPoints()[selectedDataPointIndex] ?? undefined;
215
- return {
216
- dataPointIndex: selectedDataPointIndex,
217
- values: scopeDateData,
218
- previousValue,
219
- currentValue,
220
- nextValue,
221
- };
222
- }
223
- function findPreviousYearValue(combinations, dataValues, metricValue) {
224
- const attributeDefinition = dataValues.attributeDefinition;
225
- const currentYear = dataValues.currentValue;
226
- const values = metricValue.values;
227
- invariant(attributeDefinition);
228
- const previousYear = getPreviousYear(currentYear);
229
- const previousYearSeries = values.find(dataSeriesPartialMatch([previousYear]));
230
- const scopeTitles = [previousYear, ...(combinations.attributeHeaders?.map(asUri) ?? [])];
231
- const allDataPoints = previousYearSeries?.dataPoints() ?? [];
232
- const prevYearDataPoint = allDataPoints.find(dataPointExactMatch(scopeTitles));
233
- if (!prevYearDataPoint) {
234
- return undefined;
235
- }
236
- const descriptors = [
237
- ...(prevYearDataPoint.seriesDesc.attributeDescriptors ?? []),
238
- ...(prevYearDataPoint.sliceDesc?.descriptors ?? []),
239
- ];
240
- const headers = [
241
- ...(prevYearDataPoint.seriesDesc.attributeHeaders ?? []),
242
- ...(prevYearDataPoint.sliceDesc?.headers ?? []),
243
- ];
244
- const index = descriptors.findIndex((ah) => {
245
- return areObjRefsEqual(ah.attributeHeader.primaryLabel, attributeDefinition.defaultDisplayForm.ref);
246
- }) ?? -1;
247
- const prevYearHeader = headers[index];
248
- const descriptor = descriptors[index];
249
- if (!prevYearHeader || !descriptor) {
336
+ .filter((header) => header !== dateHeader);
337
+ const dimensions = dv
338
+ .meta()
339
+ .dimensions()
340
+ .map((d) => d.headers
341
+ .map((h) => {
342
+ if (isAttributeDescriptor(h)) {
343
+ return intersections.find((i) => {
344
+ if (isDrillIntersectionAttributeItem(i.header)) {
345
+ return (i.header.attributeHeader.localIdentifier ===
346
+ h.attributeHeader.localIdentifier);
347
+ }
348
+ return false;
349
+ });
350
+ }
351
+ if (isMeasureGroupDescriptor(h)) {
352
+ return intersections.find((i) => isMeasureDescriptor(i.header));
353
+ }
250
354
  return undefined;
251
- }
355
+ })
356
+ .filter(Boolean));
252
357
  return {
253
- previousYear: {
254
- ...prevYearHeader,
255
- ...descriptor,
256
- },
257
- previousYearDataPoint: prevYearDataPoint,
358
+ dimensions,
359
+ dateHeader,
360
+ metricHeader,
361
+ attributeHeaders,
258
362
  };
259
363
  }
260
- function calculateDimensions(dv, combinations) {
261
- const headers = dv.meta().attributeHeaders();
262
- invariant(combinations.attributeHeader, "Primary attribute header is missing");
263
- // Find a dimension of the attribute header
264
- const primaryDimensions = getDimensions(dv, combinations.attributeHeader);
265
- const otherDimensions = combinations.attributeHeaders.map((h) => getDimensions(dv, h));
266
- const descriptor = dv.meta().attributeDescriptorsForDim(primaryDimensions[0])[primaryDimensions[1]];
267
- const values = headers[primaryDimensions[0]][primaryDimensions[1]].map((v) => ({
268
- ...v,
269
- ...descriptor,
270
- }));
271
- const items = [
272
- {
273
- dimensions: primaryDimensions,
274
- values: values,
275
- value: values[primaryDimensions[2]],
276
- },
277
- ];
278
- otherDimensions.forEach((d) => {
279
- const descriptor = dv.meta().attributeDescriptorsForDim(d[0])[d[1]];
280
- const values = headers[d[0]][d[1]].map((v) => ({
281
- ...v,
282
- ...descriptor,
283
- }));
284
- items.push({
285
- dimensions: d,
286
- values: values,
287
- value: values[d[2]],
288
- });
289
- });
290
- return items;
291
- }
292
- function getDimensions(dv, item) {
293
- const headers = dv.meta().attributeHeaders();
294
- // Find a dimension of the attribute header
295
- return (headers.flatMap((f, dim1) => f.flatMap((group, dim2) => {
296
- const dim3 = group.findIndex((a) => isEqualWith(a.attributeHeaderItem, item.attributeHeaderItem));
297
- return dim3 >= 0 ? [[dim1, dim2, dim3]] : [];
298
- }))[0] ?? [-1, -1, -1]);
299
- }
300
364
  function getPreviousYear(currentYear) {
301
- const split = currentYear.attributeHeaderItem.uri.split("-");
365
+ const split = currentYear.uri.split("-");
302
366
  split[0] = (parseInt(split[0]) - 1).toString();
303
367
  return split.join("-");
304
368
  }
305
- // Utils
306
- function asUri(ch) {
307
- return ch.attributeHeaderItem.uri;
308
- }
309
- function dataSeriesExactMatch(titles) {
310
- return (d) => {
311
- return d.scopeTitles().every((t) => (t === null ? true : titles.includes(t)));
312
- };
313
- }
314
- function dataSeriesPartialMatch(titles) {
315
- return (d) => {
316
- const scTitles = d.scopeTitles();
317
- if (scTitles.length > 0 && titles.length > 0) {
318
- return scTitles.some((t) => (t === null ? true : titles.includes(t)));
319
- }
320
- return true;
321
- };
322
- }
323
- function dataPointPartialMatch(titles) {
324
- return (d) => {
325
- if (d.sliceDesc) {
326
- const scTitles = d.sliceDesc.sliceTitles();
327
- if (scTitles.length > 0 && titles.length > 0) {
328
- return scTitles.some((t) => (t === null ? true : titles.includes(t)));
329
- }
330
- }
331
- return true;
332
- };
333
- }
334
- function dataPointExactMatch(titles) {
335
- return (d) => {
336
- if (d.sliceDesc) {
337
- const scTitles = d.sliceDesc.sliceTitles();
338
- if (scTitles.length > 0) {
339
- return scTitles.every((t) => (t === null ? true : titles.includes(t)));
340
- }
341
- }
342
- return true;
343
- };
344
- }
345
- function groupByDimension(otherDimensions, primaryDimension) {
346
- return otherDimensions
347
- .filter(({ dimensions }) => dimensions[0] === primaryDimension.dimensions[0])
348
- .map((dim) => ({
349
- ...dim,
350
- values: dim.values.map((v) => v.attributeHeaderItem.uri === dim.value.attributeHeaderItem.uri ? v : null),
351
- }));
352
- }
353
369
  //# sourceMappingURL=kdaUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kdaUtils.js","sourceRoot":"","sources":["../../../../src/presentation/drill/utils/kdaUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kdaUtils.js","sourceRoot":"","sources":["../../../../src/presentation/drill/utils/kdaUtils.ts"],"names":[],"mappings":"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"}