@quillsql/react 2.13.38 → 2.13.40
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.
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +0 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +73 -66
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +69 -51
- package/dist/cjs/components/Chart/ChartTooltip.d.ts +1 -1
- package/dist/cjs/components/Chart/ChartTooltip.d.ts.map +1 -1
- package/dist/cjs/components/Chart/ChartTooltip.js +3 -3
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +4 -4
- package/dist/cjs/components/QuillMultiSelectSectionList.js +5 -5
- package/dist/cjs/components/ReportBuilder/convert.d.ts +1 -1
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +73 -21
- package/dist/cjs/components/UiComponents.d.ts +2 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +11 -4
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +4 -5
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +19 -11
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +62 -48
- package/dist/cjs/internals/ReportBuilder/PivotList.js +5 -4
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +28 -31
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +315 -633
- package/dist/cjs/models/Pivot.d.ts +27 -7
- package/dist/cjs/models/Pivot.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +36 -11
- package/dist/cjs/utils/merge.d.ts.map +1 -1
- package/dist/cjs/utils/merge.js +2 -1
- package/dist/cjs/utils/pivotConstructor.d.ts +1 -0
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +39 -8
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +10 -14
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +421 -134
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +2 -2
- package/dist/cjs/utils/textProcessing.d.ts +1 -1
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +3 -0
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +0 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +73 -66
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +69 -51
- package/dist/esm/components/Chart/ChartTooltip.d.ts +1 -1
- package/dist/esm/components/Chart/ChartTooltip.d.ts.map +1 -1
- package/dist/esm/components/Chart/ChartTooltip.js +3 -3
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +4 -4
- package/dist/esm/components/QuillMultiSelectSectionList.js +5 -5
- package/dist/esm/components/ReportBuilder/convert.d.ts +1 -1
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +74 -22
- package/dist/esm/components/UiComponents.d.ts +2 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +11 -4
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +4 -5
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +19 -11
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +63 -49
- package/dist/esm/internals/ReportBuilder/PivotList.js +5 -4
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +28 -31
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +327 -635
- package/dist/esm/models/Pivot.d.ts +27 -7
- package/dist/esm/models/Pivot.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +36 -11
- package/dist/esm/utils/merge.d.ts.map +1 -1
- package/dist/esm/utils/merge.js +2 -1
- package/dist/esm/utils/pivotConstructor.d.ts +1 -0
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +39 -9
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +10 -14
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +421 -134
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +2 -2
- package/dist/esm/utils/textProcessing.d.ts +1 -1
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +3 -0
- package/package.json +1 -1
|
@@ -2,12 +2,8 @@ import { ColumnInternal } from './Columns';
|
|
|
2
2
|
/**
|
|
3
3
|
* Represents the metadata of a pivot table.
|
|
4
4
|
*/
|
|
5
|
-
export type Pivot =
|
|
6
|
-
|
|
7
|
-
valueField: string;
|
|
8
|
-
valueField2?: string;
|
|
9
|
-
valueField2Type?: string;
|
|
10
|
-
valueFieldType?: string;
|
|
5
|
+
export type Pivot = SingleAggregationPivot | MultiAggregationPivot;
|
|
6
|
+
interface BasePivot {
|
|
11
7
|
rowField?: string;
|
|
12
8
|
rowFieldType?: string;
|
|
13
9
|
columnField?: string;
|
|
@@ -20,7 +16,30 @@ export type Pivot = {
|
|
|
20
16
|
triggerButtonText?: string;
|
|
21
17
|
rowLimit?: number;
|
|
22
18
|
columnValues?: string[];
|
|
23
|
-
}
|
|
19
|
+
}
|
|
20
|
+
interface SingleAggregationPivot extends BasePivot {
|
|
21
|
+
aggregationType: AggregationType;
|
|
22
|
+
valueField?: string;
|
|
23
|
+
valueField2?: string;
|
|
24
|
+
valueField2Type?: string;
|
|
25
|
+
valueFieldType?: string;
|
|
26
|
+
aggregations?: never;
|
|
27
|
+
}
|
|
28
|
+
interface MultiAggregationPivot extends BasePivot {
|
|
29
|
+
aggregationType?: never;
|
|
30
|
+
valueField?: never;
|
|
31
|
+
valueField2?: never;
|
|
32
|
+
valueField2Type?: never;
|
|
33
|
+
valueFieldType?: never;
|
|
34
|
+
aggregations: {
|
|
35
|
+
valueField?: string;
|
|
36
|
+
valueFieldType?: string;
|
|
37
|
+
valueField2?: string;
|
|
38
|
+
valueField2Type?: string;
|
|
39
|
+
aggregationType: AggregationType;
|
|
40
|
+
}[];
|
|
41
|
+
}
|
|
42
|
+
export type AggregationType = 'sum' | 'average' | 'min' | 'max' | 'count' | 'avg' | 'percentage';
|
|
24
43
|
export type PivotInfo = {
|
|
25
44
|
pivot: Pivot;
|
|
26
45
|
possibleRowFields: string[];
|
|
@@ -34,4 +53,5 @@ export type PivotData = {
|
|
|
34
53
|
pivotQuery: string;
|
|
35
54
|
comparisonPivotQuery?: string;
|
|
36
55
|
};
|
|
56
|
+
export {};
|
|
37
57
|
//# sourceMappingURL=Pivot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pivot.d.ts","sourceRoot":"","sources":["../../../src/models/Pivot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,
|
|
1
|
+
{"version":3,"file":"Pivot.d.ts","sourceRoot":"","sources":["../../../src/models/Pivot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AAGnE,UAAU,SAAS;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AACD,UAAU,sBAAuB,SAAQ,SAAS;IAChD,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB;AACD,UAAU,qBAAsB,SAAQ,SAAS;IAC/C,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,YAAY,EAAE;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,eAAe,CAAC;KAClC,EAAE,CAAC;CACL;AAED,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,YAAY,CAAC;AAEjG,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA2BzD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA2BzD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C,OAAO,CAAC,mBAAmB,CAAC,CA+F9B;AA0ID,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACvB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,CA6Bd"}
|
|
@@ -50,7 +50,19 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, ad
|
|
|
50
50
|
let pivotTable;
|
|
51
51
|
let pivotError;
|
|
52
52
|
try {
|
|
53
|
-
pivotTable = await getPivotTable(
|
|
53
|
+
pivotTable = await getPivotTable({
|
|
54
|
+
...item,
|
|
55
|
+
pivot: item.pivot ? {
|
|
56
|
+
...item.pivot,
|
|
57
|
+
aggregations: item.pivot.aggregations ?? [{
|
|
58
|
+
valueField: item.pivot.valueField,
|
|
59
|
+
valueFieldType: item.pivot.valueFieldType,
|
|
60
|
+
valueField2: item.pivot.valueField2,
|
|
61
|
+
valueField2Type: item.pivot.valueField2Type,
|
|
62
|
+
aggregationType: item.pivot.aggregationType,
|
|
63
|
+
}]
|
|
64
|
+
} : undefined,
|
|
65
|
+
}, dashboardFilters, client, dateBucket, additionalProcessing, item.dashboardName);
|
|
54
66
|
}
|
|
55
67
|
catch (e) {
|
|
56
68
|
pivotTable = undefined;
|
|
@@ -78,7 +90,17 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, ad
|
|
|
78
90
|
pivot: pivotError
|
|
79
91
|
? undefined
|
|
80
92
|
: item.pivot
|
|
81
|
-
? {
|
|
93
|
+
? {
|
|
94
|
+
...item.pivot,
|
|
95
|
+
aggregations: item.pivot.aggregations ?? [{
|
|
96
|
+
valueField: item.pivot.valueField,
|
|
97
|
+
valueFieldType: item.pivot.valueFieldType,
|
|
98
|
+
valueField2: item.pivot.valueField2,
|
|
99
|
+
valueField2Type: item.pivot.valueField2Type,
|
|
100
|
+
aggregationType: item.pivot.aggregationType,
|
|
101
|
+
}],
|
|
102
|
+
columnValues: item.distinctStrings
|
|
103
|
+
}
|
|
82
104
|
: undefined,
|
|
83
105
|
yAxisFields: pivotTable
|
|
84
106
|
? extractPivotedYAxis(pivotTable, item)
|
|
@@ -129,15 +151,18 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
129
151
|
dataTypeID: (0, columnProcessing_1.fieldTypeToDataTypeID)(pivot.rowFieldType || 'string'),
|
|
130
152
|
});
|
|
131
153
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
154
|
+
for (const agg of pivot.aggregations ?? []) {
|
|
155
|
+
if (agg.valueField) {
|
|
156
|
+
columns.push({
|
|
157
|
+
field: agg.valueField,
|
|
158
|
+
label: (0, textProcessing_1.snakeCaseToTitleCase)((0, columnProcessing_1.processColumnName)(agg.valueField)),
|
|
159
|
+
//FIXME: valueFieldType is not always the same as the format
|
|
160
|
+
format: agg.valueFieldType ?? 'whole_number',
|
|
161
|
+
jsType: agg.valueFieldType ?? 'number',
|
|
162
|
+
fieldType: agg.valueFieldType ?? 'number',
|
|
163
|
+
dataTypeID: (0, columnProcessing_1.fieldTypeToDataTypeID)(agg.valueFieldType ?? 'number'),
|
|
164
|
+
});
|
|
165
|
+
}
|
|
141
166
|
}
|
|
142
167
|
return {
|
|
143
168
|
rows: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMxC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAgBnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAsBrE;AAyBD,wBAAgB,2BAA2B,CAAC,EAC1C,KAAK,EACL,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,GAAG,EAAE,CAAC;CACjB,GAAG,GAAG,EAAE,CAMR;AAED,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GAClB,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B,GAAG,GAAG,EAAE,CAyBR"}
|
package/dist/cjs/utils/merge.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.mergeComparisonPivotRows = mergeComparisonPivotRows;
|
|
|
7
7
|
const date_fns_1 = require("date-fns");
|
|
8
8
|
const columnProcessing_1 = require("./columnProcessing");
|
|
9
9
|
const date_fns_tz_1 = require("date-fns-tz");
|
|
10
|
+
// FIXME: Update all of this as part of restoring date comparisons
|
|
10
11
|
function mergeComparisonRange(resp) {
|
|
11
12
|
if (resp.chartType === 'table')
|
|
12
13
|
return resp;
|
|
@@ -94,7 +95,7 @@ function merge2DPivotRows(pivot, rows, compRows, columnFieldValues, databaseType
|
|
|
94
95
|
return merge2DDatePivotRows(pivot, rows, compRows, columnFieldValues, databaseType, dateBucket, comparisonInterval);
|
|
95
96
|
}
|
|
96
97
|
function merge2DStringPivotRows(pivot, rows, compRows, columnFieldValues) {
|
|
97
|
-
if (!pivot.rowField || !pivot.valueField) {
|
|
98
|
+
if (!pivot.rowField || !pivot.aggregations?.some((agg) => agg.valueField)) {
|
|
98
99
|
return rows;
|
|
99
100
|
}
|
|
100
101
|
return rows.map((row) => {
|
|
@@ -19,4 +19,5 @@ export declare function generatePivotWithSQL({ pivot, report, client, dateBucket
|
|
|
19
19
|
comparisonPivotQuery?: string;
|
|
20
20
|
getPivotRowCount?: boolean;
|
|
21
21
|
}): Promise<PivotData>;
|
|
22
|
+
export declare function disambiguatedValueField(pivot: Pivot): string | undefined;
|
|
22
23
|
//# sourceMappingURL=pivotConstructor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,GACxB,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,GACxB,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,SAAS,CAAC,CAkWrB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,sBAUnD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generatePivotWithSQL = generatePivotWithSQL;
|
|
4
|
+
exports.disambiguatedValueField = disambiguatedValueField;
|
|
4
5
|
const PivotModal_1 = require("../internals/ReportBuilder/PivotModal");
|
|
5
6
|
const columnProcessing_1 = require("./columnProcessing");
|
|
6
7
|
const constants_1 = require("./constants");
|
|
@@ -18,7 +19,23 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
18
19
|
pivot.columnField &&
|
|
19
20
|
!pivot.columnValues &&
|
|
20
21
|
!distinctStrings) {
|
|
21
|
-
|
|
22
|
+
if (!report?.rows) {
|
|
23
|
+
throw new Error('No distinct strings provided for column field');
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
distinctStrings = Array.from(new Set(report.rows
|
|
27
|
+
.map((row) => row[pivot.columnField])
|
|
28
|
+
.filter((value) => value !== null && value !== undefined)));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (!pivot.aggregations?.length && pivot.aggregationType) {
|
|
32
|
+
pivot.aggregations = [{
|
|
33
|
+
aggregationType: pivot.aggregationType,
|
|
34
|
+
valueField: pivot.valueField,
|
|
35
|
+
valueFieldType: pivot.valueFieldType,
|
|
36
|
+
valueField2: pivot.valueField2,
|
|
37
|
+
valueField2Type: pivot.valueField2Type,
|
|
38
|
+
}];
|
|
22
39
|
}
|
|
23
40
|
let comparisonInterval = undefined;
|
|
24
41
|
if (dateFilter && dateFilter.comparisonRange) {
|
|
@@ -31,7 +48,7 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
31
48
|
const rowColumn = report?.columns.find((column) => column.field === pivot.rowField);
|
|
32
49
|
pivot.rowFieldType = rowColumn?.format || 'string';
|
|
33
50
|
}
|
|
34
|
-
const filteredDistinctStrings = distinctStrings?.filter((value) => value !== null && value !== undefined);
|
|
51
|
+
const filteredDistinctStrings = distinctStrings?.filter((value) => value !== null && value !== undefined && value !== '');
|
|
35
52
|
const pivotColumnFields = filteredDistinctStrings?.slice(0, constants_1.MAX_PIVOT_UNIQUE_VALUES);
|
|
36
53
|
if (!pivotQuery && report) {
|
|
37
54
|
if (!report.itemQuery) {
|
|
@@ -57,7 +74,8 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
57
74
|
? (0, queryConstructor_1.additionalProcessingOnPivotQuery)(pivot, comparisonPivotSql, additionalProcessing, client.databaseType)
|
|
58
75
|
: '';
|
|
59
76
|
const preQueries = [paginatedSqlQuery];
|
|
60
|
-
|
|
77
|
+
getPivotRowCount = getPivotRowCount && report?.chartType === 'table';
|
|
78
|
+
if (getPivotRowCount) {
|
|
61
79
|
const pivotRowCountQuery = (0, queryConstructor_1.generateRowCountQuery)(sqlQuery, client.databaseType);
|
|
62
80
|
preQueries.push(pivotRowCountQuery);
|
|
63
81
|
}
|
|
@@ -124,12 +142,12 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
124
142
|
});
|
|
125
143
|
}
|
|
126
144
|
const columns = responseFields
|
|
127
|
-
?.map((field) => ({
|
|
145
|
+
?.map((field, index) => ({
|
|
128
146
|
field: (0, columnProcessing_1.processColumnName)(field.name),
|
|
129
147
|
label: (0, textProcessing_1.snakeCaseToTitleCase)((0, columnProcessing_1.processColumnName)(field.name.replace('comparison_', 'comparison '))),
|
|
130
148
|
format: field.name === pivot.rowField
|
|
131
149
|
? 'string'
|
|
132
|
-
: (pivot.
|
|
150
|
+
: (pivot.aggregations?.[index]?.aggregationType === 'percentage')
|
|
133
151
|
? 'percent'
|
|
134
152
|
: 'whole_number',
|
|
135
153
|
fieldType: field.fieldType,
|
|
@@ -217,11 +235,12 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
217
235
|
// });
|
|
218
236
|
// }
|
|
219
237
|
// for the case of count agg on no value field
|
|
220
|
-
columns?.forEach((column) => {
|
|
238
|
+
columns?.forEach((column, index) => {
|
|
221
239
|
if (column.label &&
|
|
222
240
|
['null', 'undefined'].includes(column.label.toLowerCase()) &&
|
|
223
|
-
!pivot.
|
|
224
|
-
pivot.
|
|
241
|
+
!pivot.columnField &&
|
|
242
|
+
!pivot.aggregations?.[index]?.valueField &&
|
|
243
|
+
pivot.aggregations?.[index]?.aggregationType === 'count') {
|
|
225
244
|
column.label = 'Count';
|
|
226
245
|
}
|
|
227
246
|
});
|
|
@@ -243,3 +262,15 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
243
262
|
comparisonPivotQuery: comparisonPivotSql,
|
|
244
263
|
};
|
|
245
264
|
}
|
|
265
|
+
function disambiguatedValueField(pivot) {
|
|
266
|
+
// console.log(pivot);
|
|
267
|
+
if (pivot.aggregations && pivot.aggregations.length > 0) {
|
|
268
|
+
if (pivot.aggregations.length === 1) {
|
|
269
|
+
return pivot.aggregations[0]?.valueField ?? pivot.valueField;
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
return `${pivot.aggregations[0].valueField}_${(0, textProcessing_1.matchCasing)(pivot.aggregations[0].aggregationType, pivot.aggregations[0].valueField)}`;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return pivot.valueField;
|
|
276
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EAAE,GACxB,MAAM,CAuCR;AAkBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EAAE,GACxB,MAAM,CAuCR;AAkBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAmB7E;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,EAAE;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CAAE;;;;EAsDjE;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CAoCP;AAED,eAAO,MAAM,eAAe,WAAY,GAAG,SAAS,KAAK,YA8BxD,CAAC"}
|
|
@@ -52,7 +52,7 @@ function generateTwoDPivotQuery(pivot, query, columns) {
|
|
|
52
52
|
FROM original_query GROUP BY ${pivot.rowField}`;
|
|
53
53
|
}
|
|
54
54
|
function isValidPivot(pivot) {
|
|
55
|
-
if (!pivot.rowField && !pivot.valueField) {
|
|
55
|
+
if (!pivot.rowField && !pivot.aggregations?.[0]?.valueField) {
|
|
56
56
|
return {
|
|
57
57
|
valid: false,
|
|
58
58
|
reason: 'Row field cannot be empty without a value field',
|
|
@@ -64,17 +64,7 @@ function isValidPivot(pivot) {
|
|
|
64
64
|
reason: 'Row field cannot be empty when column field is present',
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
-
else if (
|
|
68
|
-
return { valid: false, reason: 'Aggregation type cannot be empty' };
|
|
69
|
-
}
|
|
70
|
-
else if (pivot.aggregationType === 'percentage' &&
|
|
71
|
-
(!pivot.valueField2 || !pivot.valueField)) {
|
|
72
|
-
return {
|
|
73
|
-
valid: false,
|
|
74
|
-
reason: 'Percentage aggregation requires two value fields',
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
else if (!pivot.valueField && pivot.aggregationType !== 'count') {
|
|
67
|
+
else if (pivot.aggregations?.some((a) => a.aggregationType !== 'count' && !a.valueField)) {
|
|
78
68
|
return {
|
|
79
69
|
valid: false,
|
|
80
70
|
reason: 'Value field cannot be empty when aggregation is not "count"',
|
|
@@ -112,9 +102,9 @@ function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
112
102
|
rowFields.push(column.field);
|
|
113
103
|
}
|
|
114
104
|
}
|
|
115
|
-
// value fields can be numbers
|
|
105
|
+
// value fields can be numbers or bools
|
|
116
106
|
// TODO: should "format" be used as the indicator, or fieldType?
|
|
117
|
-
if (valueFormatter_1.NUMBER_FORMAT_TYPES.includes(column.format)) {
|
|
107
|
+
if (valueFormatter_1.NUMBER_FORMAT_TYPES.includes(column.format) || column.jsType === 'bool') {
|
|
118
108
|
if (!(0, util_1.isIdColumn)(column.field)) {
|
|
119
109
|
valueFields.push(column.field);
|
|
120
110
|
}
|
|
@@ -149,6 +139,12 @@ function cleanPivot(pivot, possibleColumns) {
|
|
|
149
139
|
!possibleColumns.columnFields.includes(pivot.columnField)) {
|
|
150
140
|
pivot.columnField = undefined;
|
|
151
141
|
}
|
|
142
|
+
if (pivot.aggregationType) {
|
|
143
|
+
pivot.aggregations = [{
|
|
144
|
+
valueField: pivot.valueField,
|
|
145
|
+
aggregationType: pivot.aggregationType,
|
|
146
|
+
}];
|
|
147
|
+
}
|
|
152
148
|
return pivot;
|
|
153
149
|
}
|
|
154
150
|
const isPivotPossible = (fields, pivot) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAStE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,UAAQ,UAGrE;AAMD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UAkGjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAmBD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,UA8B5B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,UAYnB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAcrB;AAmFD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAkBrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAkBpB;
|
|
1
|
+
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAStE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,UAAQ,UAGrE;AAMD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UAkGjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAmBD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,UA8B5B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,UAYnB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAcrB;AAmFD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAkBrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAkBpB;AA8uBD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,YAAY,SAAe,sBAgE5B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,sBAqB1E"}
|