@gooddata/sdk-ui-dashboard 10.15.0-alpha.0 → 10.15.0-alpha.2

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 (70) hide show
  1. package/esm/__version.d.ts +1 -1
  2. package/esm/__version.js +1 -1
  3. package/esm/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
  4. package/esm/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +2 -2
  5. package/esm/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js.map +1 -1
  6. package/esm/presentation/alerting/DefaultAlertingManagementDialog/components/Alert.d.ts.map +1 -1
  7. package/esm/presentation/alerting/DefaultAlertingManagementDialog/components/Alert.js +2 -2
  8. package/esm/presentation/alerting/DefaultAlertingManagementDialog/components/Alert.js.map +1 -1
  9. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/{AlertAttributeSelecxt.d.ts → AlertAttributeSelect.d.ts} +5 -4
  10. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertAttributeSelect.d.ts.map +1 -0
  11. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertAttributeSelect.js +133 -0
  12. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertAttributeSelect.js.map +1 -0
  13. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertMeasureSelect.d.ts.map +1 -1
  14. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertMeasureSelect.js +1 -1
  15. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertMeasureSelect.js.map +1 -1
  16. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertsListItem.d.ts.map +1 -1
  17. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertsListItem.js +3 -3
  18. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertsListItem.js.map +1 -1
  19. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.d.ts +3 -2
  20. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.d.ts.map +1 -1
  21. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.js +2 -2
  22. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.js.map +1 -1
  23. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts +3 -2
  24. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts.map +1 -1
  25. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js +10 -10
  26. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js.map +1 -1
  27. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useAlertValidation.d.ts.map +1 -1
  28. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useAlertValidation.js +2 -1
  29. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useAlertValidation.js.map +1 -1
  30. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.d.ts +3 -2
  31. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.d.ts.map +1 -1
  32. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.js +2 -1
  33. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.js.map +1 -1
  34. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useInsightAlerting.d.ts +3 -2
  35. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useInsightAlerting.d.ts.map +1 -1
  36. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useInsightAlerting.js +16 -18
  37. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useInsightAlerting.js.map +1 -1
  38. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/convertors.d.ts +7 -0
  39. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/convertors.d.ts.map +1 -0
  40. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/convertors.js +43 -0
  41. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/convertors.js.map +1 -0
  42. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/getters.d.ts +90 -0
  43. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/getters.d.ts.map +1 -0
  44. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/getters.js +219 -0
  45. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/getters.js.map +1 -0
  46. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/guards.d.ts +22 -0
  47. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/guards.d.ts.map +1 -0
  48. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/guards.js +41 -0
  49. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/guards.js.map +1 -0
  50. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/items.d.ts +14 -0
  51. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/items.d.ts.map +1 -0
  52. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/items.js +202 -0
  53. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/items.js.map +1 -0
  54. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/transformation.d.ts +60 -0
  55. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/transformation.d.ts.map +1 -0
  56. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/transformation.js +303 -0
  57. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils/transformation.js.map +1 -0
  58. package/esm/presentation/widget/insight/configuration/InsightAlerts.d.ts.map +1 -1
  59. package/esm/presentation/widget/insight/configuration/InsightAlerts.js +3 -3
  60. package/esm/presentation/widget/insight/configuration/InsightAlerts.js.map +1 -1
  61. package/esm/presentation/widget/insight/types.d.ts +1 -0
  62. package/esm/presentation/widget/insight/types.d.ts.map +1 -1
  63. package/package.json +15 -15
  64. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertAttributeSelecxt.d.ts.map +0 -1
  65. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertAttributeSelecxt.js +0 -139
  66. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertAttributeSelecxt.js.map +0 -1
  67. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils.d.ts +0 -46
  68. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils.d.ts.map +0 -1
  69. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils.js +0 -712
  70. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/utils.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ import { ARITHMETIC_OPERATORS } from "../constants.js";
2
+ /**
3
+ * @internal
4
+ */
5
+ export function isChangeOperator(alert) {
6
+ if (alert?.condition?.type === "relative") {
7
+ return alert.condition.measure.operator === ARITHMETIC_OPERATORS.ARITHMETIC_OPERATOR_CHANGE;
8
+ }
9
+ return false;
10
+ }
11
+ /**
12
+ * @internal
13
+ */
14
+ export function isDifferenceOperator(alert) {
15
+ if (alert?.condition?.type === "relative") {
16
+ return alert.condition.measure.operator === ARITHMETIC_OPERATORS.ARITHMETIC_OPERATOR_DIFFERENCE;
17
+ }
18
+ return false;
19
+ }
20
+ /**
21
+ * @internal
22
+ */
23
+ export function isChangeOrDifferenceOperator(alert) {
24
+ return isChangeOperator(alert) || isDifferenceOperator(alert);
25
+ }
26
+ /**
27
+ * @internal
28
+ */
29
+ export function isAlertValueDefined(alert) {
30
+ if (alert?.condition?.type === "relative") {
31
+ return typeof alert.condition.threshold !== "undefined";
32
+ }
33
+ return typeof alert?.condition?.right !== "undefined";
34
+ }
35
+ /**
36
+ * @internal
37
+ */
38
+ export function isAlertRecipientsValid(alert) {
39
+ return !!alert?.recipients?.length;
40
+ }
41
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../../../../../src/presentation/widget/insight/configuration/InsightAlertConfig/utils/guards.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACrD,IAAI,KAAK,EAAE,SAAS,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,KAAK,oBAAoB,CAAC,0BAA0B,CAAC;IAChG,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAwB;IACzD,IAAI,KAAK,EAAE,SAAS,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,KAAK,oBAAoB,CAAC,8BAA8B,CAAC;IACpG,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAwB;IACjE,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAwB;IACxD,IAAI,KAAK,EAAE,SAAS,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,KAAK,WAAW,CAAC;IAC5D,CAAC;IACD,OAAO,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,KAAK,WAAW,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAiC;IACpE,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;AACvC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { ICatalogDateDataset, IInsight } from "@gooddata/sdk-model";
2
+ import { AlertAttribute, AlertMetric } from "../../../types.js";
3
+ /**
4
+ * Get supported insight measures by insight
5
+ * @param insight - insight to get supported measures for
6
+ */
7
+ export declare function getSupportedInsightMeasuresByInsight(insight: IInsight | null | undefined): AlertMetric[];
8
+ /**
9
+ * Get supported insight attributes by insight
10
+ * @param insight - insight to get supported attributes for
11
+ * @param dateDatasets - date datasets to filter out date attributes
12
+ */
13
+ export declare function getSupportedInsightAttributesByInsight(insight: IInsight | null | undefined, dateDatasets?: ICatalogDateDataset[]): AlertAttribute[];
14
+ //# sourceMappingURL=items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/widget/insight/configuration/InsightAlertConfig/utils/items.ts"],"names":[],"mappings":"AACA,OAAO,EAKH,mBAAmB,EACnB,QAAQ,EAUX,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,WAAW,EAA6B,MAAM,mBAAmB,CAAC;AA2B3F;;;GAGG;AACH,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,EAAE,CAqBxG;AAED;;;;GAIG;AACH,wBAAgB,sCAAsC,CAClD,OAAO,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACpC,YAAY,GAAE,mBAAmB,EAAO,GACzC,cAAc,EAAE,CAMlB"}
@@ -0,0 +1,202 @@
1
+ // (C) 2022-2024 GoodData Corporation
2
+ import { bucketAttributes, bucketMeasures, insightBucket, insightVisualizationType, isArithmeticMeasure, isPoPMeasure, isPreviousPeriodMeasure, isSimpleMeasure, } from "@gooddata/sdk-model";
3
+ import { BucketNames } from "@gooddata/sdk-ui";
4
+ import { AlertMetricComparatorType } from "../../../types.js";
5
+ import { getCatalogAttribute } from "./getters.js";
6
+ /**
7
+ * Get supported insight measures by insight
8
+ * @param insight - insight to get supported measures for
9
+ */
10
+ export function getSupportedInsightMeasuresByInsight(insight) {
11
+ const insightType = insight ? insightVisualizationType(insight) : null;
12
+ const { primaries, others } = collectAllMetric(insight);
13
+ const simpleMetrics = [
14
+ ...primaries.map(mapMeasure(true)).filter(Boolean),
15
+ ...others.map(mapMeasure(false)).filter(Boolean),
16
+ ];
17
+ //NOTE: For now only headline insight support previous period and same period previous year,
18
+ // if we want to support other insight types, just add the logic here or remove the condition at
19
+ // all to support all insight types
20
+ if (insightType === "headline") {
21
+ mapPreviousPeriodMeasure(primaries, simpleMetrics, true);
22
+ mapPreviousPeriodMeasure(others, simpleMetrics, false);
23
+ mapPoPMeasure(primaries, simpleMetrics, true);
24
+ mapPoPMeasure(others, simpleMetrics, false);
25
+ }
26
+ return simpleMetrics;
27
+ }
28
+ /**
29
+ * Get supported insight attributes by insight
30
+ * @param insight - insight to get supported attributes for
31
+ * @param dateDatasets - date datasets to filter out date attributes
32
+ */
33
+ export function getSupportedInsightAttributesByInsight(insight, dateDatasets = []) {
34
+ const attrs = collectAllAttributes(insight);
35
+ return attrs
36
+ .map(mapAttribute(dateDatasets))
37
+ .filter(Boolean);
38
+ }
39
+ //utils
40
+ function mapMeasure(isPrimary) {
41
+ return (measure) => {
42
+ if (isSimpleMeasure(measure) || isArithmeticMeasure(measure)) {
43
+ return {
44
+ measure,
45
+ isPrimary,
46
+ comparators: [],
47
+ };
48
+ }
49
+ return undefined;
50
+ };
51
+ }
52
+ function mapAttribute(dateDatasets) {
53
+ const dateAttributes = dateDatasets.flatMap((dataset) => dataset.dateAttributes);
54
+ return (attribute) => {
55
+ const foundDate = getCatalogAttribute(dateAttributes, attribute);
56
+ return {
57
+ type: foundDate ? "dateAttribute" : "attribute",
58
+ attribute,
59
+ };
60
+ };
61
+ }
62
+ function mapPreviousPeriodMeasure(metrics, simpleMetrics, isPrimary) {
63
+ const previousPeriodMetrics = metrics.filter((measure) => isPreviousPeriodMeasure(measure));
64
+ previousPeriodMetrics.forEach((measure) => {
65
+ const found = simpleMetrics.find((simpleMetric) => simpleMetric.measure.measure.localIdentifier ===
66
+ measure.measure.definition.previousPeriodMeasure.measureIdentifier);
67
+ if (found) {
68
+ found.comparators.push({
69
+ measure,
70
+ isPrimary,
71
+ comparator: AlertMetricComparatorType.PreviousPeriod,
72
+ });
73
+ }
74
+ });
75
+ }
76
+ function mapPoPMeasure(metrics, simpleMetrics, isPrimary) {
77
+ const popMetrics = metrics.filter((measure) => isPoPMeasure(measure));
78
+ popMetrics.forEach((measure) => {
79
+ const found = simpleMetrics.find((simpleMetric) => simpleMetric.measure.measure.localIdentifier ===
80
+ measure.measure.definition.popMeasureDefinition.measureIdentifier);
81
+ if (found) {
82
+ found.comparators.push({
83
+ measure,
84
+ isPrimary,
85
+ comparator: AlertMetricComparatorType.SamePeriodPreviousYear,
86
+ });
87
+ }
88
+ });
89
+ }
90
+ function collectAllMetric(insight) {
91
+ const insightType = insight ? insightVisualizationType(insight) : null;
92
+ if (!insight) {
93
+ return {
94
+ primaries: [],
95
+ others: [],
96
+ };
97
+ }
98
+ switch (insightType) {
99
+ case "headline":
100
+ case "bar":
101
+ case "column":
102
+ case "line":
103
+ case "area":
104
+ case "combo2":
105
+ case "scatter":
106
+ case "bubble":
107
+ case "bullet":
108
+ case "pie":
109
+ case "donut":
110
+ case "treemap":
111
+ case "funnel":
112
+ case "pyramid":
113
+ case "heatmap":
114
+ case "waterfall":
115
+ case "dependencywheel":
116
+ case "sankey":
117
+ case "table": {
118
+ return collectAllMetricsFrom(insight, [BucketNames.MEASURES], [BucketNames.SECONDARY_MEASURES, BucketNames.TERTIARY_MEASURES]);
119
+ }
120
+ case "pushpin": {
121
+ return collectAllMetricsFrom(insight, [BucketNames.SIZE, BucketNames.COLOR]);
122
+ }
123
+ case "repeater": {
124
+ return collectAllMetricsFrom(insight, [BucketNames.COLUMNS]);
125
+ }
126
+ default: {
127
+ return {
128
+ primaries: [],
129
+ others: [],
130
+ };
131
+ }
132
+ }
133
+ }
134
+ function collectAllAttributes(insight) {
135
+ const insightType = insight ? insightVisualizationType(insight) : null;
136
+ if (!insight) {
137
+ return [];
138
+ }
139
+ switch (insightType) {
140
+ case "headline":
141
+ case "bar":
142
+ case "column":
143
+ case "line":
144
+ case "area":
145
+ case "combo2":
146
+ case "scatter":
147
+ case "bubble":
148
+ case "bullet":
149
+ case "pie":
150
+ case "donut":
151
+ case "treemap":
152
+ case "funnel":
153
+ case "pyramid":
154
+ case "heatmap":
155
+ case "waterfall":
156
+ case "dependencywheel":
157
+ case "sankey":
158
+ case "table": {
159
+ return collectAllAttributesFrom(insight, [
160
+ BucketNames.ATTRIBUTE,
161
+ BucketNames.ATTRIBUTES,
162
+ BucketNames.TREND,
163
+ BucketNames.SEGMENT,
164
+ BucketNames.COLUMNS,
165
+ BucketNames.VIEW,
166
+ BucketNames.STACK,
167
+ BucketNames.ATTRIBUTE_FROM,
168
+ BucketNames.ATTRIBUTE_TO,
169
+ ]);
170
+ }
171
+ case "repeater": {
172
+ return collectAllAttributesFrom(insight, [BucketNames.ATTRIBUTE]);
173
+ }
174
+ case "pushpin": {
175
+ return collectAllAttributesFrom(insight, [BucketNames.LOCATION]);
176
+ }
177
+ default: {
178
+ return [];
179
+ }
180
+ }
181
+ }
182
+ function collectAllAttributesFrom(insight, buckets) {
183
+ return buckets.reduce((acc, bucket) => {
184
+ const items = insight ? insightBucket(insight, bucket) : undefined;
185
+ return [...acc, ...(items ? bucketAttributes(items) : [])];
186
+ }, []);
187
+ }
188
+ function collectAllMetricsFrom(insight, primaryBuckets, secondaryBuckets = []) {
189
+ const primaries = primaryBuckets.reduce((acc, bucket) => {
190
+ const items = insight ? insightBucket(insight, bucket) : undefined;
191
+ return [...acc, ...(items ? bucketMeasures(items) : [])];
192
+ }, []);
193
+ const others = secondaryBuckets.reduce((acc, bucket) => {
194
+ const items = insight ? insightBucket(insight, bucket) : undefined;
195
+ return [...acc, ...(items ? bucketMeasures(items) : [])];
196
+ }, []);
197
+ return {
198
+ primaries,
199
+ others,
200
+ };
201
+ }
202
+ //# sourceMappingURL=items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../../../../../../../src/presentation/widget/insight/configuration/InsightAlertConfig/utils/items.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { IAlertComparisonOperator, IAlertRelativeArithmeticOperator, IAlertRelativeOperator, IAutomationAlertCondition, IAutomationAlertExecutionDefinition, IAutomationMetadataObject, IAutomationRecipient, ICatalogMeasure } from "@gooddata/sdk-model";
2
+ import { AlertAttribute, AlertMetric } from "../../../types.js";
3
+ /**
4
+ * This function transforms alert by metric. It changes title, condition and execution based on selected metric.
5
+ * @param metrics - all available metrics
6
+ * @param alert - alert to transform
7
+ * @param measure - selected metric
8
+ * @param catalogMeasures - all available measures from catalog
9
+ */
10
+ export declare function transformAlertByMetric(metrics: AlertMetric[], alert: IAutomationMetadataObject, measure: AlertMetric, catalogMeasures?: ICatalogMeasure[]): IAutomationMetadataObject;
11
+ /**
12
+ * This function get selected attributed and optionally value amd added this attribute to execution.
13
+ * If value is provided, it creates positive attribute filter with this value, otherwise it creates negative attribute filter
14
+ * that is empty for now.
15
+ * @param attributes - all available attributes
16
+ * @param alert - alert to transform
17
+ * @param attr - optionally selected attribute
18
+ * @param value - optionally selected value
19
+ */
20
+ export declare function transformAlertByAttribute(attributes: AlertAttribute[], alert: IAutomationMetadataObject, attr: AlertAttribute | undefined, value: string | undefined): IAutomationMetadataObject;
21
+ /**
22
+ * This function transforms alert by comparison operator. It changes operator in condition.
23
+ * @param metrics - all available metrics
24
+ * @param alert - alert to transform
25
+ * @param measure - selected metric
26
+ * @param comparisonOperator - selected comparison operator
27
+ */
28
+ export declare function transformAlertByComparisonOperator(metrics: AlertMetric[], alert: IAutomationMetadataObject, measure: AlertMetric, comparisonOperator: IAlertComparisonOperator): IAutomationMetadataObject;
29
+ /**
30
+ * This function transforms alert by relative operator. It changes operator in condition and measure in condition.
31
+ * @param metrics - all available metrics
32
+ * @param alert - alert to transform
33
+ * @param measure - selected metric
34
+ * @param relativeOperator - selected relative operator
35
+ * @param arithmeticOperator - selected arithmetic operator
36
+ * @param catalogMeasures - all available measures from catalog
37
+ */
38
+ export declare function transformAlertByRelativeOperator(metrics: AlertMetric[], alert: IAutomationMetadataObject, measure: AlertMetric, relativeOperator: IAlertRelativeOperator, arithmeticOperator: IAlertRelativeArithmeticOperator, catalogMeasures?: ICatalogMeasure[]): IAutomationMetadataObject;
39
+ /**
40
+ * This function transforms alert by threshold value. It changes threshold in condition.
41
+ * @param alert - alert to transform
42
+ * @param value - selected threshold value
43
+ */
44
+ export declare function transformAlertByValue(alert: IAutomationMetadataObject, value: number): IAutomationMetadataObject;
45
+ /**
46
+ * This function transforms alert by notification channel. It changes notification channel in alert.
47
+ * @param alert - alert to transform
48
+ * @param notificationChannel - selected notification channel
49
+ * @param recipients - optionally selected recipients
50
+ */
51
+ export declare function transformAlertByDestination(alert: IAutomationMetadataObject, notificationChannel: string, recipients?: IAutomationRecipient[]): IAutomationMetadataObject;
52
+ /**
53
+ * This function transforms alert execution by metric. It changes measures and auxMeasures in execution based on selected metric.
54
+ * @param metrics - all available metrics
55
+ * @param condition - alert condition
56
+ * @param execution - alert execution
57
+ * @param measure - selected metric
58
+ */
59
+ export declare function transformAlertExecutionByMetric(metrics: AlertMetric[], condition: IAutomationAlertCondition, execution: IAutomationAlertExecutionDefinition, measure: AlertMetric): IAutomationAlertExecutionDefinition;
60
+ //# sourceMappingURL=transformation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformation.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/widget/insight/configuration/InsightAlertConfig/utils/transformation.ts"],"names":[],"mappings":"AACA,OAAO,EACH,wBAAwB,EACxB,gCAAgC,EAChC,sBAAsB,EAEtB,yBAAyB,EACzB,mCAAmC,EAEnC,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EAGlB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACH,cAAc,EACd,WAAW,EAGd,MAAM,mBAAmB,CAAC;AAO3B;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,yBAAyB,EAChC,OAAO,EAAE,WAAW,EACpB,eAAe,CAAC,EAAE,eAAe,EAAE,GACpC,yBAAyB,CAkD3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACrC,UAAU,EAAE,cAAc,EAAE,EAC5B,KAAK,EAAE,yBAAyB,EAChC,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,KAAK,EAAE,MAAM,GAAG,SAAS,GAC1B,yBAAyB,CA8C3B;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAC9C,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,yBAAyB,EAChC,OAAO,EAAE,WAAW,EACpB,kBAAkB,EAAE,wBAAwB,GAC7C,yBAAyB,CAc3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC5C,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,yBAAyB,EAChC,OAAO,EAAE,WAAW,EACpB,gBAAgB,EAAE,sBAAsB,EACxC,kBAAkB,EAAE,gCAAgC,EACpD,eAAe,CAAC,EAAE,eAAe,EAAE,GACpC,yBAAyB,CAyB3B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,yBAAyB,EAChC,KAAK,EAAE,MAAM,GACd,yBAAyB,CAuB3B;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACvC,KAAK,EAAE,yBAAyB,EAChC,mBAAmB,EAAE,MAAM,EAC3B,UAAU,CAAC,EAAE,oBAAoB,EAAE,GACpC,yBAAyB,CAM3B;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC3C,OAAO,EAAE,WAAW,EAAE,EACtB,SAAS,EAAE,yBAAyB,EACpC,SAAS,EAAE,mCAAmC,EAC9C,OAAO,EAAE,WAAW,GACrB,mCAAmC,CAuBrC"}
@@ -0,0 +1,303 @@
1
+ // (C) 2022-2024 GoodData Corporation
2
+ import { isArithmeticMeasure, } from "@gooddata/sdk-model";
3
+ import { AlertMetricComparatorType, } from "../../../types.js";
4
+ import { ARITHMETIC_OPERATORS, COMPARISON_OPERATORS, RELATIVE_OPERATORS } from "../constants.js";
5
+ import { getAttributeRelatedFilterInfo, getMeasureFormat, getMeasureTitle } from "./getters.js";
6
+ //alerts transformations
7
+ /**
8
+ * This function transforms alert by metric. It changes title, condition and execution based on selected metric.
9
+ * @param metrics - all available metrics
10
+ * @param alert - alert to transform
11
+ * @param measure - selected metric
12
+ * @param catalogMeasures - all available measures from catalog
13
+ */
14
+ export function transformAlertByMetric(metrics, alert, measure, catalogMeasures) {
15
+ const periodMeasure = measure.comparators.find((c) => c.comparator === AlertMetricComparatorType.PreviousPeriod ||
16
+ c.comparator === AlertMetricComparatorType.SamePeriodPreviousYear);
17
+ if (alert.alert?.condition.type === "relative" && periodMeasure) {
18
+ const cond = transformToRelativeCondition(alert.alert.condition);
19
+ const condition = {
20
+ ...cond,
21
+ measure: {
22
+ ...cond.measure,
23
+ ...transformRelativeCondition(measure, periodMeasure, catalogMeasures),
24
+ },
25
+ };
26
+ return {
27
+ ...alert,
28
+ title: getMeasureTitle(measure.measure) ?? "",
29
+ alert: {
30
+ ...alert.alert,
31
+ condition,
32
+ execution: transformAlertExecutionByMetric(metrics, condition, alert.alert.execution, measure),
33
+ },
34
+ };
35
+ }
36
+ const cond = transformToComparisonCondition(alert.alert.condition);
37
+ const condition = {
38
+ ...cond,
39
+ left: {
40
+ id: measure.measure.measure.localIdentifier,
41
+ format: getMeasureFormat(measure.measure, catalogMeasures),
42
+ title: getMeasureTitle(measure.measure),
43
+ },
44
+ };
45
+ return {
46
+ ...alert,
47
+ title: getMeasureTitle(measure.measure) ?? "",
48
+ alert: {
49
+ ...alert.alert,
50
+ condition,
51
+ execution: transformAlertExecutionByMetric(metrics, condition, alert.alert.execution, measure),
52
+ },
53
+ };
54
+ }
55
+ /**
56
+ * This function get selected attributed and optionally value amd added this attribute to execution.
57
+ * If value is provided, it creates positive attribute filter with this value, otherwise it creates negative attribute filter
58
+ * that is empty for now.
59
+ * @param attributes - all available attributes
60
+ * @param alert - alert to transform
61
+ * @param attr - optionally selected attribute
62
+ * @param value - optionally selected value
63
+ */
64
+ export function transformAlertByAttribute(attributes, alert, attr, value) {
65
+ const { filterDefinition } = getAttributeRelatedFilterInfo(attributes, alert, alert.alert?.execution.attributes[0]);
66
+ const originalFilters = alert.alert?.execution.filters.filter((f) => f !== filterDefinition) ?? [];
67
+ const customFilters = [];
68
+ if (attr) {
69
+ if (value !== undefined) {
70
+ customFilters.push({
71
+ positiveAttributeFilter: {
72
+ displayForm: {
73
+ localIdentifier: attr.attribute.attribute.localIdentifier,
74
+ },
75
+ in: {
76
+ values: [value],
77
+ },
78
+ },
79
+ });
80
+ }
81
+ else {
82
+ customFilters.push({
83
+ negativeAttributeFilter: {
84
+ displayForm: {
85
+ localIdentifier: attr.attribute.attribute.localIdentifier,
86
+ },
87
+ notIn: {
88
+ values: [],
89
+ },
90
+ },
91
+ });
92
+ }
93
+ }
94
+ return {
95
+ ...alert,
96
+ alert: {
97
+ ...alert.alert,
98
+ execution: {
99
+ ...alert.alert.execution,
100
+ attributes: attr ? [attr.attribute] : [],
101
+ filters: [...originalFilters, ...customFilters],
102
+ },
103
+ },
104
+ };
105
+ }
106
+ /**
107
+ * This function transforms alert by comparison operator. It changes operator in condition.
108
+ * @param metrics - all available metrics
109
+ * @param alert - alert to transform
110
+ * @param measure - selected metric
111
+ * @param comparisonOperator - selected comparison operator
112
+ */
113
+ export function transformAlertByComparisonOperator(metrics, alert, measure, comparisonOperator) {
114
+ const cond = transformToComparisonCondition(alert.alert.condition);
115
+ const condition = {
116
+ ...cond,
117
+ operator: comparisonOperator,
118
+ };
119
+ return {
120
+ ...alert,
121
+ alert: {
122
+ ...alert.alert,
123
+ condition,
124
+ execution: transformAlertExecutionByMetric(metrics, condition, alert.alert.execution, measure),
125
+ },
126
+ };
127
+ }
128
+ /**
129
+ * This function transforms alert by relative operator. It changes operator in condition and measure in condition.
130
+ * @param metrics - all available metrics
131
+ * @param alert - alert to transform
132
+ * @param measure - selected metric
133
+ * @param relativeOperator - selected relative operator
134
+ * @param arithmeticOperator - selected arithmetic operator
135
+ * @param catalogMeasures - all available measures from catalog
136
+ */
137
+ export function transformAlertByRelativeOperator(metrics, alert, measure, relativeOperator, arithmeticOperator, catalogMeasures) {
138
+ const periodMeasure = measure.comparators.find((c) => c.comparator === AlertMetricComparatorType.PreviousPeriod ||
139
+ c.comparator === AlertMetricComparatorType.SamePeriodPreviousYear);
140
+ const cond = transformToRelativeCondition(alert.alert.condition);
141
+ const condition = {
142
+ ...cond,
143
+ measure: {
144
+ ...cond.measure,
145
+ operator: arithmeticOperator,
146
+ ...transformRelativeCondition(measure, periodMeasure, catalogMeasures),
147
+ },
148
+ operator: relativeOperator,
149
+ };
150
+ return {
151
+ ...alert,
152
+ alert: {
153
+ ...alert.alert,
154
+ condition,
155
+ execution: transformAlertExecutionByMetric(metrics, condition, alert.alert.execution, measure),
156
+ },
157
+ };
158
+ }
159
+ /**
160
+ * This function transforms alert by threshold value. It changes threshold in condition.
161
+ * @param alert - alert to transform
162
+ * @param value - selected threshold value
163
+ */
164
+ export function transformAlertByValue(alert, value) {
165
+ if (alert.alert?.condition.type === "relative") {
166
+ return {
167
+ ...alert,
168
+ alert: {
169
+ ...alert.alert,
170
+ condition: {
171
+ ...alert.alert.condition,
172
+ threshold: value,
173
+ },
174
+ },
175
+ };
176
+ }
177
+ return {
178
+ ...alert,
179
+ alert: {
180
+ ...alert.alert,
181
+ condition: {
182
+ ...alert.alert.condition,
183
+ right: value,
184
+ },
185
+ },
186
+ };
187
+ }
188
+ /**
189
+ * This function transforms alert by notification channel. It changes notification channel in alert.
190
+ * @param alert - alert to transform
191
+ * @param notificationChannel - selected notification channel
192
+ * @param recipients - optionally selected recipients
193
+ */
194
+ export function transformAlertByDestination(alert, notificationChannel, recipients) {
195
+ return {
196
+ ...alert,
197
+ ...(recipients ? { recipients } : {}),
198
+ notificationChannel,
199
+ };
200
+ }
201
+ /**
202
+ * This function transforms alert execution by metric. It changes measures and auxMeasures in execution based on selected metric.
203
+ * @param metrics - all available metrics
204
+ * @param condition - alert condition
205
+ * @param execution - alert execution
206
+ * @param measure - selected metric
207
+ */
208
+ export function transformAlertExecutionByMetric(metrics, condition, execution, measure) {
209
+ const periodMeasure = measure.comparators.find((c) => c.comparator === AlertMetricComparatorType.PreviousPeriod ||
210
+ c.comparator === AlertMetricComparatorType.SamePeriodPreviousYear);
211
+ if (condition.type === "relative" && periodMeasure) {
212
+ return {
213
+ ...execution,
214
+ measures: [measure.measure, periodMeasure.measure],
215
+ auxMeasures: [
216
+ ...collectAllRelatedMeasures(metrics, measure.measure),
217
+ ...collectAllRelatedMeasures(metrics, periodMeasure.measure),
218
+ ],
219
+ };
220
+ }
221
+ return {
222
+ ...execution,
223
+ measures: [measure.measure],
224
+ auxMeasures: collectAllRelatedMeasures(metrics, measure.measure),
225
+ };
226
+ }
227
+ //alerts transformations utils
228
+ function transformToComparisonCondition(condition) {
229
+ if (condition.type === "relative") {
230
+ return {
231
+ type: "comparison",
232
+ operator: COMPARISON_OPERATORS.COMPARISON_OPERATOR_GREATER_THAN,
233
+ left: condition.measure.left,
234
+ right: condition.threshold,
235
+ };
236
+ }
237
+ return {
238
+ type: "comparison",
239
+ operator: condition.operator,
240
+ right: condition.right,
241
+ left: condition.left,
242
+ };
243
+ }
244
+ function transformToRelativeCondition(condition) {
245
+ if (condition.type === "comparison") {
246
+ return {
247
+ type: "relative",
248
+ operator: RELATIVE_OPERATORS.RELATIVE_OPERATOR_INCREASE_BY,
249
+ measure: {
250
+ operator: ARITHMETIC_OPERATORS.ARITHMETIC_OPERATOR_CHANGE,
251
+ left: condition.left,
252
+ right: undefined,
253
+ },
254
+ threshold: condition.right,
255
+ };
256
+ }
257
+ return {
258
+ type: "relative",
259
+ operator: condition.operator,
260
+ measure: condition.measure,
261
+ threshold: condition.threshold,
262
+ };
263
+ }
264
+ function transformRelativeCondition(measure, periodMeasure, catalogMeasures) {
265
+ return {
266
+ ...(periodMeasure?.isPrimary && {
267
+ left: {
268
+ id: periodMeasure.measure.measure.localIdentifier,
269
+ format: getMeasureFormat(periodMeasure.measure, catalogMeasures),
270
+ title: getMeasureTitle(periodMeasure.measure),
271
+ },
272
+ right: {
273
+ id: measure.measure.measure.localIdentifier,
274
+ format: getMeasureFormat(measure.measure, catalogMeasures),
275
+ title: getMeasureTitle(measure.measure),
276
+ },
277
+ }),
278
+ ...(!periodMeasure?.isPrimary && {
279
+ left: {
280
+ id: measure.measure.measure.localIdentifier,
281
+ format: getMeasureFormat(measure.measure, catalogMeasures),
282
+ title: getMeasureTitle(measure.measure),
283
+ },
284
+ right: {
285
+ id: periodMeasure?.measure.measure.localIdentifier,
286
+ format: getMeasureFormat(periodMeasure?.measure, catalogMeasures),
287
+ title: periodMeasure?.measure ? getMeasureTitle(periodMeasure?.measure) : undefined,
288
+ },
289
+ }),
290
+ };
291
+ }
292
+ //utils
293
+ function collectAllRelatedMeasures(metrics, measure) {
294
+ if (isArithmeticMeasure(measure)) {
295
+ const included = measure.measure.definition.arithmeticMeasure.measureIdentifiers;
296
+ const related = metrics.filter((m) => {
297
+ return included.includes(m.measure.measure.localIdentifier);
298
+ });
299
+ return related.map((m) => m.measure);
300
+ }
301
+ return [];
302
+ }
303
+ //# sourceMappingURL=transformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformation.js","sourceRoot":"","sources":["../../../../../../../src/presentation/widget/insight/configuration/InsightAlertConfig/utils/transformation.ts"],"names":[],"mappings":"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"}