@lightdash/common 0.2434.2 → 0.2434.3

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.
@@ -33,4 +33,35 @@ export declare function getUnusedDimensions(input: UnusedDimensionsInput): {
33
33
  * This is a convenience wrapper around getUnusedDimensions.
34
34
  */
35
35
  export declare function hasUnusedDimensions(input: UnusedDimensionsInput): boolean;
36
+ /**
37
+ * Input for detecting unused table calculations in a cartesian chart.
38
+ */
39
+ export type UnusedTableCalculationsInput = {
40
+ /** The chart configuration */
41
+ chartType: ChartType;
42
+ /** The chart config object (contains layout for cartesian charts) */
43
+ chartConfig: ChartConfig['config'] | undefined;
44
+ /** All table calculation names in the metric query */
45
+ queryTableCalculations: string[];
46
+ };
47
+ /**
48
+ * Detects table calculations in the query that are not used in the chart configuration.
49
+ *
50
+ * For cartesian charts, table calculations should be used in one of:
51
+ * - x-axis (xField)
52
+ * - y-axis (yField)
53
+ *
54
+ * If a table calculation is in the query but not used in any of these places,
55
+ * it may cause incorrect results (extra rows that don't aggregate properly).
56
+ *
57
+ * @returns Array of unused table calculation names, or empty array if none
58
+ */
59
+ export declare function getUnusedTableCalculations(input: UnusedTableCalculationsInput): {
60
+ unusedTableCalculations: string[];
61
+ };
62
+ /**
63
+ * Checks if a chart has unused table calculations that may cause incorrect results.
64
+ * This is a convenience wrapper around getUnusedTableCalculations.
65
+ */
66
+ export declare function hasUnusedTableCalculations(input: UnusedTableCalculationsInput): boolean;
36
67
  //# sourceMappingURL=chartValidation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartValidation.d.ts","sourceRoot":"","sources":["../../../src/utils/chartValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EAET,KAAK,WAAW,EACnB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,8BAA8B;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,qEAAqE;IACrE,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC/C,yCAAyC;IACzC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG;IAC/D,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC9B,CA2CA;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAEzE"}
1
+ {"version":3,"file":"chartValidation.d.ts","sourceRoot":"","sources":["../../../src/utils/chartValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EAET,KAAK,WAAW,EACnB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,8BAA8B;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,qEAAqE;IACrE,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC/C,yCAAyC;IACzC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG;IAC/D,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC9B,CA2CA;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACvC,8BAA8B;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,qEAAqE;IACrE,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC/C,sDAAsD;IACtD,sBAAsB,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACtC,KAAK,EAAE,4BAA4B,GACpC;IACC,uBAAuB,EAAE,MAAM,EAAE,CAAC;CACrC,CAqCA;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACtC,KAAK,EAAE,4BAA4B,GACpC,OAAO,CAET"}
@@ -52,4 +52,51 @@ export function getUnusedDimensions(input) {
52
52
  export function hasUnusedDimensions(input) {
53
53
  return getUnusedDimensions(input).unusedDimensions.length > 0;
54
54
  }
55
+ /**
56
+ * Detects table calculations in the query that are not used in the chart configuration.
57
+ *
58
+ * For cartesian charts, table calculations should be used in one of:
59
+ * - x-axis (xField)
60
+ * - y-axis (yField)
61
+ *
62
+ * If a table calculation is in the query but not used in any of these places,
63
+ * it may cause incorrect results (extra rows that don't aggregate properly).
64
+ *
65
+ * @returns Array of unused table calculation names, or empty array if none
66
+ */
67
+ export function getUnusedTableCalculations(input) {
68
+ const { chartType, chartConfig, queryTableCalculations } = input;
69
+ if (chartType !== ChartType.CARTESIAN) {
70
+ return { unusedTableCalculations: [] };
71
+ }
72
+ if (queryTableCalculations.length === 0) {
73
+ return { unusedTableCalculations: [] };
74
+ }
75
+ const usedTableCalculations = new Set();
76
+ // Get layout from cartesian chart config
77
+ const cartesianConfig = chartConfig;
78
+ const layout = cartesianConfig?.layout;
79
+ // Add xField if it's a table calculation
80
+ if (layout?.xField && queryTableCalculations.includes(layout.xField)) {
81
+ usedTableCalculations.add(layout.xField);
82
+ }
83
+ // Add yField items if they're table calculations
84
+ if (layout?.yField) {
85
+ for (const field of layout.yField) {
86
+ if (queryTableCalculations.includes(field)) {
87
+ usedTableCalculations.add(field);
88
+ }
89
+ }
90
+ }
91
+ // Find query table calculations that are not used anywhere
92
+ const unusedTableCalculations = queryTableCalculations.filter((tc) => !usedTableCalculations.has(tc));
93
+ return { unusedTableCalculations };
94
+ }
95
+ /**
96
+ * Checks if a chart has unused table calculations that may cause incorrect results.
97
+ * This is a convenience wrapper around getUnusedTableCalculations.
98
+ */
99
+ export function hasUnusedTableCalculations(input) {
100
+ return getUnusedTableCalculations(input).unusedTableCalculations.length > 0;
101
+ }
55
102
  //# sourceMappingURL=chartValidation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartValidation.js","sourceRoot":"","sources":["../../../src/utils/chartValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,GAGZ,MAAM,sBAAsB,CAAC;AAgB9B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA4B;IAG5D,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAE3E,IAAI,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;QACpC,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,yCAAyC;IACzC,gFAAgF;IAChF,MAAM,eAAe,GAAG,WAAyC,CAAC;IAClE,MAAM,MAAM,GAAG,eAAe,EAAE,MAAM,CAAC;IAEvC,qEAAqE;IACrE,IAAI,MAAM,EAAE,MAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,yCAAyC;IACzC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACrC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,mDAAmD;IACnD,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAC3C,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CACpC,CAAC;IAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA4B;IAC5D,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"chartValidation.js","sourceRoot":"","sources":["../../../src/utils/chartValidation.ts"],"names":[],"mappings":"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"}