@quillsql/react 2.13.34 → 2.13.36
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 +0 -1
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +17 -14
- package/dist/cjs/ChartBuilder.d.ts +4 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +182 -106
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +6 -8
- package/dist/cjs/Dashboard.js +17 -7
- package/dist/cjs/ReportBuilder.d.ts +2 -0
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +399 -272
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +34 -12
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +17 -1
- package/dist/cjs/components/Chart/InternalChart.d.ts +0 -1
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +6 -7
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +75 -30
- package/dist/cjs/components/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectSectionList.js +21 -16
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +18 -8
- package/dist/cjs/components/QuillSelectWithCombo.js +17 -7
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +16 -4
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +9 -18
- 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 +44 -28
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +28 -4
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +9 -1
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.js +11 -35
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +14 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +12 -11
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +63 -18
- package/dist/cjs/models/Client.d.ts +4 -5
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Pivot.d.ts +10 -0
- package/dist/cjs/models/Pivot.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +13 -1
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +799 -64
- package/dist/cjs/utils/astProcessing.d.ts +4 -1
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +2 -2
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +6 -3
- package/dist/cjs/utils/columnProcessing.d.ts +1 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +1 -0
- package/dist/cjs/utils/dashboard.d.ts +2 -1
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +38 -10
- package/dist/cjs/utils/filterProcessing.d.ts +1 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/merge.d.ts +16 -0
- package/dist/cjs/utils/merge.d.ts.map +1 -1
- package/dist/cjs/utils/merge.js +210 -0
- package/dist/cjs/utils/paginationProcessing.d.ts +1 -1
- package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/paginationProcessing.js +3 -2
- package/dist/cjs/utils/pivotConstructor.d.ts +19 -9
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +90 -34
- package/dist/cjs/utils/queryConstructor.d.ts +8 -1
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +276 -310
- package/dist/cjs/utils/report.d.ts +25 -12
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +13 -7
- package/dist/cjs/utils/schema.d.ts +1 -1
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +3 -32
- package/dist/cjs/utils/tableProcessing.d.ts +43 -13
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +140 -75
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +10 -1
- package/dist/cjs/utils/valueFormatter.d.ts +2 -1
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +18 -14
- package/dist/esm/Chart.d.ts +0 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +0 -6
- package/dist/esm/ChartBuilder.d.ts +4 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +183 -107
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +7 -9
- package/dist/esm/ReportBuilder.d.ts +2 -0
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +400 -273
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +34 -12
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +17 -1
- package/dist/esm/components/Chart/InternalChart.d.ts +0 -1
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +6 -6
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +75 -30
- package/dist/esm/components/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectSectionList.js +5 -12
- package/dist/esm/components/QuillMultiSelectWithCombo.js +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +16 -4
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +9 -18
- 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 +27 -21
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +28 -4
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +10 -2
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/esm/hooks/useVirtualTables.js +12 -36
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +14 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +12 -11
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +63 -18
- package/dist/esm/models/Client.d.ts +4 -5
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Pivot.d.ts +10 -0
- package/dist/esm/models/Pivot.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +13 -1
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +799 -64
- package/dist/esm/utils/astProcessing.d.ts +4 -1
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +2 -2
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +6 -3
- package/dist/esm/utils/columnProcessing.d.ts +1 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +1 -1
- package/dist/esm/utils/dashboard.d.ts +2 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +39 -11
- package/dist/esm/utils/filterProcessing.d.ts +1 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/merge.d.ts +16 -0
- package/dist/esm/utils/merge.d.ts.map +1 -1
- package/dist/esm/utils/merge.js +207 -0
- package/dist/esm/utils/paginationProcessing.d.ts +1 -1
- package/dist/esm/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/esm/utils/paginationProcessing.js +3 -2
- package/dist/esm/utils/pivotConstructor.d.ts +19 -9
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +91 -35
- package/dist/esm/utils/queryConstructor.d.ts +8 -1
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +274 -314
- package/dist/esm/utils/report.d.ts +25 -12
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +13 -7
- package/dist/esm/utils/schema.d.ts +1 -1
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +1 -30
- package/dist/esm/utils/tableProcessing.d.ts +43 -13
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +140 -75
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +10 -1
- package/dist/esm/utils/valueFormatter.d.ts +2 -1
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +18 -14
- package/package.json +1 -1
|
@@ -54,7 +54,10 @@ export declare const createBasicSelectASTFromColumns: (columns: ColumnInternal[]
|
|
|
54
54
|
orderby: null;
|
|
55
55
|
limit: null;
|
|
56
56
|
};
|
|
57
|
-
export declare const fetchAndProcessASTFromPrompt: (aiPrompt: string, schema: Table[], client: QuillProviderClient, prevPivot?: Pivot, currentQuery?: string, prevTable?: string, dashboardName?: string
|
|
57
|
+
export declare const fetchAndProcessASTFromPrompt: (aiPrompt: string, schema: Table[], client: QuillProviderClient, prevPivot?: Pivot, currentQuery?: string, prevTable?: string, dashboardName?: string, tenants?: {
|
|
58
|
+
tenantField: string;
|
|
59
|
+
tenantIds: (string | number)[];
|
|
60
|
+
}[] | (string | number)[]) => Promise<{
|
|
58
61
|
ast: any;
|
|
59
62
|
pivot: Pivot | null | undefined;
|
|
60
63
|
whereAST: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,OAQxC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAe5D;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAgBtE;AAGD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAgB1E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG;;EA4BtD;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAahD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CActE;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,GAAG,EACT,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,GAAG,EAAE,GACb,GAAG,CAYL;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAC1C,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,KAAK,EAAE,GAClB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmCvD;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,KAAK,EAAE,EACf,aAAa,EAAE,GAAG,GACjB;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAyG/B;AAED,eAAO,MAAM,UAAU,SAAU,GAAG,YAWnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,GAAG,UACJ,KAAK,EAAE,KACd,CAAC,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAmCtC,CAAC;AAEF,eAAO,MAAM,+BAA+B,YACjC,cAAc,EAAE,aACd,MAAM;;;;;;;;;;;;;;;;;;;;;;CAqBlB,CAAC;
|
|
1
|
+
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"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"}
|
|
@@ -344,7 +344,7 @@ const createBasicSelectASTFromColumns = (columns, tableName) => {
|
|
|
344
344
|
};
|
|
345
345
|
exports.createBasicSelectASTFromColumns = createBasicSelectASTFromColumns;
|
|
346
346
|
//TODO: Move all fetches to a /sdk route
|
|
347
|
-
const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot, currentQuery, prevTable, dashboardName) => {
|
|
347
|
+
const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot, currentQuery, prevTable, dashboardName, tenants) => {
|
|
348
348
|
let res, data, ast, newAst, pivot;
|
|
349
349
|
let numRetries = 0;
|
|
350
350
|
let whereAST;
|
|
@@ -409,7 +409,7 @@ const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot,
|
|
|
409
409
|
if (!tableInfo) {
|
|
410
410
|
throw new Error('Table info not found');
|
|
411
411
|
}
|
|
412
|
-
const uniqueValues = await (0, tableProcessing_1.getUniqueStringValues)(tableInfo.columns, processedName, client, undefined, undefined, undefined, undefined, dashboardName);
|
|
412
|
+
const uniqueValues = await (0, tableProcessing_1.getUniqueStringValues)(tableInfo.columns, processedName, client, tenants, undefined, undefined, undefined, undefined, dashboardName);
|
|
413
413
|
newAst = (0, convert_1.convertUnaryToBinary)(newAst);
|
|
414
414
|
newAst = (0, util_1.removeNonSelectedTableReferences)(newAst, processedName, tableInfo.columns.map((col) => col.field), uniqueValues);
|
|
415
415
|
if (pivot) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/utils/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/utils/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,YAAY,EAAE,MAK1B,CAAC;AAEF,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,eAAe,UAAQ,EACvB,YAAY,CAAC,EAAE,WAAW,GACzB,OAAO,CAAC,MAAM,GAAG;IAAE,cAAc,CAAC,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CAoDtD;AAED,wBAAsB,kBAAkB,CAAC,EACvC,aAAa,EACb,YAAY,EACZ,eAAe,EACf,MAAM,EACN,QAAQ,GACT,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,WAAW,GAAG;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB;;;GAyCA"}
|
package/dist/cjs/utils/client.js
CHANGED
|
@@ -7,7 +7,6 @@ exports.EMPTY_CLIENT = {
|
|
|
7
7
|
name: '',
|
|
8
8
|
_id: '',
|
|
9
9
|
databaseType: '',
|
|
10
|
-
adminCustomerId: '',
|
|
11
10
|
domainName: '',
|
|
12
11
|
};
|
|
13
12
|
async function fetchClient(publicKey, queryEndpoint, withCredentials = false, queryHeaders) {
|
|
@@ -31,7 +30,10 @@ async function fetchClient(publicKey, queryEndpoint, withCredentials = false, qu
|
|
|
31
30
|
});
|
|
32
31
|
const json = await response.json();
|
|
33
32
|
result = json.data?.data?.client || json.data?.client;
|
|
34
|
-
|
|
33
|
+
if (!result) {
|
|
34
|
+
throw new Error('No client found');
|
|
35
|
+
}
|
|
36
|
+
clientTenantIds = await Promise.all(result?.allTenantTypes?.map(async (tenant) => {
|
|
35
37
|
return await getClientTenantIds({
|
|
36
38
|
queryEndpoint,
|
|
37
39
|
queryHeaders,
|
|
@@ -43,10 +45,11 @@ async function fetchClient(publicKey, queryEndpoint, withCredentials = false, qu
|
|
|
43
45
|
}
|
|
44
46
|
catch (error) {
|
|
45
47
|
console.error('ERROR:', error);
|
|
48
|
+
throw error;
|
|
46
49
|
}
|
|
47
50
|
return {
|
|
48
51
|
...result,
|
|
49
|
-
allTenantTypes: result
|
|
52
|
+
allTenantTypes: result?.allTenantTypes?.map((tenant) => ({
|
|
50
53
|
...tenant,
|
|
51
54
|
tenantIds: clientTenantIds?.find((clientTenant) => clientTenant.id === tenant.id)
|
|
52
55
|
?.tenantIds || [],
|
|
@@ -13,6 +13,7 @@ interface ConvertPostgresColumnParamsWithField {
|
|
|
13
13
|
type ConvertPostgresColumnParams = ConvertPostgresColumnParamsWithColumnInternal | ConvertPostgresColumnParamsWithField;
|
|
14
14
|
export declare function convertPostgresColumn(field: ConvertPostgresColumnParams): ColumnInternal;
|
|
15
15
|
export declare function convertColumnInfoToColumnInternal(columnInfo: ColumnInfo): ColumnInternal;
|
|
16
|
+
export declare function fieldTypeToDataTypeID(fieldType: string): number;
|
|
16
17
|
export declare function convertFieldTypeToJSType(fieldType: string): string;
|
|
17
18
|
export declare function convertFormatToJsType(column: Column): string;
|
|
18
19
|
export declare function processColumnName(columnName: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,6CAA6C;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oCAAoC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,2BAA2B,GAC5B,6CAA6C,GAC7C,oCAAoC,CAAC;AAEzC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,2BAA2B,GACjC,cAAc,CAmJhB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;
|
|
1
|
+
{"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,6CAA6C;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oCAAoC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,2BAA2B,GAC5B,6CAA6C,GAC7C,oCAAoC,CAAC;AAEzC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,2BAA2B,GACjC,cAAc,CAmJhB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AA0BD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA0C/D;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwDlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CASrD;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAavD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,eAAO,MAAM,cAAc,WACjB,mBAAmB,oBACT,eAAe,EAAE,UAqDpC,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getYAxisFields = void 0;
|
|
4
4
|
exports.convertPostgresColumn = convertPostgresColumn;
|
|
5
5
|
exports.convertColumnInfoToColumnInternal = convertColumnInfoToColumnInternal;
|
|
6
|
+
exports.fieldTypeToDataTypeID = fieldTypeToDataTypeID;
|
|
6
7
|
exports.convertFieldTypeToJSType = convertFieldTypeToJSType;
|
|
7
8
|
exports.convertFormatToJsType = convertFormatToJsType;
|
|
8
9
|
exports.processColumnName = processColumnName;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { QuillReportInternal } from '../models/Report';
|
|
2
2
|
import { QuillProviderClient } from '../models/Client';
|
|
3
|
+
import { AdditionalProcessing } from './tableProcessing';
|
|
3
4
|
/**
|
|
4
5
|
* Returns a cleaned version of the dashboard item we store in state. We clean
|
|
5
6
|
* the dashboard item so that we aren't exposing unnecessary details to the
|
|
@@ -9,7 +10,7 @@ import { QuillProviderClient } from '../models/Client';
|
|
|
9
10
|
*/
|
|
10
11
|
export declare function cleanDashboardItem(item: {
|
|
11
12
|
[key: string]: any;
|
|
12
|
-
} | undefined, dashboardFilters: any, client: QuillProviderClient, dateBucket?: string): Promise<QuillReportInternal>;
|
|
13
|
+
} | undefined, dashboardFilters: any, client: QuillProviderClient, dateBucket?: string, additionalProcessing?: AdditionalProcessing): Promise<QuillReportInternal>;
|
|
13
14
|
export declare function getDashboard(dashboardName: string, client: QuillProviderClient, tenants?: {
|
|
14
15
|
tenantField: string;
|
|
15
16
|
tenantIds: (string | number)[];
|
|
@@ -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;
|
|
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,CAyE9B;AAuID,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"}
|
|
@@ -7,6 +7,7 @@ const textProcessing_1 = require("./textProcessing");
|
|
|
7
7
|
const dataFetcher_1 = require("./dataFetcher");
|
|
8
8
|
const dates_1 = require("./dates");
|
|
9
9
|
const pivotConstructor_1 = require("./pivotConstructor");
|
|
10
|
+
const columnProcessing_1 = require("./columnProcessing");
|
|
10
11
|
const defaultDashboardItem = {
|
|
11
12
|
id: '',
|
|
12
13
|
name: '',
|
|
@@ -33,7 +34,7 @@ const defaultDashboardItem = {
|
|
|
33
34
|
* interface to build amazing dashboards on top of.
|
|
34
35
|
* @param item
|
|
35
36
|
*/
|
|
36
|
-
async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
|
|
37
|
+
async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, additionalProcessing) {
|
|
37
38
|
if (!item)
|
|
38
39
|
return defaultDashboardItem;
|
|
39
40
|
if (!item.rows) {
|
|
@@ -49,7 +50,7 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
|
|
|
49
50
|
let pivotTable;
|
|
50
51
|
let pivotError;
|
|
51
52
|
try {
|
|
52
|
-
pivotTable = await getPivotTable(item, dashboardFilters, client, dateBucket, item.dashboardName);
|
|
53
|
+
pivotTable = await getPivotTable(item, dashboardFilters, client, dateBucket, additionalProcessing, item.dashboardName);
|
|
53
54
|
}
|
|
54
55
|
catch (e) {
|
|
55
56
|
pivotTable = undefined;
|
|
@@ -74,7 +75,11 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
|
|
|
74
75
|
columnInternal: processedColumns,
|
|
75
76
|
chartType: item.chartType,
|
|
76
77
|
dateField: item.dateField,
|
|
77
|
-
pivot: pivotError
|
|
78
|
+
pivot: pivotError
|
|
79
|
+
? undefined
|
|
80
|
+
: item.pivot
|
|
81
|
+
? { ...item.pivot, columnValues: item.distinctStrings }
|
|
82
|
+
: undefined,
|
|
78
83
|
yAxisFields: pivotTable
|
|
79
84
|
? extractPivotedYAxis(pivotTable, item)
|
|
80
85
|
: item.yAxisFields,
|
|
@@ -86,10 +91,13 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
|
|
|
86
91
|
filterMap: item.filterMap,
|
|
87
92
|
flags: item.flags,
|
|
88
93
|
rowCount: item.rowCount ? parseInt(item.rowCount) : item.rows.length,
|
|
94
|
+
pivotRowCount: pivotTable ? pivotTable.rowCount : undefined,
|
|
89
95
|
template: item.template,
|
|
90
96
|
sort: item.sort,
|
|
91
97
|
itemQuery: item.itemQuery,
|
|
92
98
|
queryString: item.queryString,
|
|
99
|
+
pivotQuery: pivotTable?.pivotQuery,
|
|
100
|
+
comparisonPivotQuery: pivotTable?.comparisonPivotQuery,
|
|
93
101
|
referencedTables: item?.referencedTables || [],
|
|
94
102
|
referencedColumns: item?.referencedColumns || {},
|
|
95
103
|
error: item.error ?? pivotError,
|
|
@@ -98,7 +106,7 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
|
|
|
98
106
|
/**
|
|
99
107
|
* Extract and transform the data from itemInfo.
|
|
100
108
|
*/
|
|
101
|
-
async function getPivotTable(report, dashboardFilters, client, dateBucketInitial, dashboardName, tenants) {
|
|
109
|
+
async function getPivotTable(report, dashboardFilters, client, dateBucketInitial, additionalProcessing, dashboardName, tenants) {
|
|
102
110
|
if (!report)
|
|
103
111
|
return undefined;
|
|
104
112
|
const dateFilter = Object.values(dashboardFilters ?? {}).find((filter) => filter.filterType === 'date_range' || filter.operator === 'BETWEEN');
|
|
@@ -114,20 +122,27 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
114
122
|
if (pivot.rowField) {
|
|
115
123
|
columns.push({
|
|
116
124
|
field: pivot.rowField,
|
|
117
|
-
label:
|
|
118
|
-
format: pivot.rowFieldType,
|
|
125
|
+
label: (0, textProcessing_1.snakeCaseToTitleCase)((0, columnProcessing_1.processColumnName)(pivot.rowField)),
|
|
126
|
+
format: pivot.rowFieldType || 'string',
|
|
127
|
+
jsType: (0, columnProcessing_1.convertFieldTypeToJSType)(pivot.rowFieldType || 'string'),
|
|
128
|
+
fieldType: pivot.rowFieldType || 'string',
|
|
129
|
+
dataTypeID: (0, columnProcessing_1.fieldTypeToDataTypeID)(pivot.rowFieldType || 'string'),
|
|
119
130
|
});
|
|
120
131
|
}
|
|
121
132
|
if (pivot.valueField) {
|
|
122
133
|
columns.push({
|
|
123
134
|
field: pivot.valueField,
|
|
124
|
-
label:
|
|
125
|
-
|
|
126
|
-
|
|
135
|
+
label: (0, textProcessing_1.snakeCaseToTitleCase)((0, columnProcessing_1.processColumnName)(pivot.valueField)),
|
|
136
|
+
format: pivot.valueFieldType || 'string',
|
|
137
|
+
jsType: (0, columnProcessing_1.convertFieldTypeToJSType)(pivot.valueFieldType || 'string'),
|
|
138
|
+
fieldType: pivot.valueFieldType || 'string',
|
|
139
|
+
dataTypeID: (0, columnProcessing_1.fieldTypeToDataTypeID)(pivot.valueFieldType || 'string'),
|
|
127
140
|
});
|
|
128
141
|
}
|
|
129
142
|
return {
|
|
130
143
|
rows: [],
|
|
144
|
+
rowCount: 0,
|
|
145
|
+
pivotQuery: '',
|
|
131
146
|
columns: columns,
|
|
132
147
|
};
|
|
133
148
|
}
|
|
@@ -146,7 +161,17 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
146
161
|
if (!dateBucket && filterDateRange) {
|
|
147
162
|
dateBucket = (0, dates_1.getDateBucketFromRange)(filterDateRange);
|
|
148
163
|
}
|
|
149
|
-
const pivotTable = await (0, pivotConstructor_1.generatePivotWithSQL)(
|
|
164
|
+
const pivotTable = await (0, pivotConstructor_1.generatePivotWithSQL)({
|
|
165
|
+
pivot,
|
|
166
|
+
report,
|
|
167
|
+
client,
|
|
168
|
+
dateBucket,
|
|
169
|
+
dateFilter,
|
|
170
|
+
distinctStrings: report.distinctStrings,
|
|
171
|
+
dashboardName,
|
|
172
|
+
tenants,
|
|
173
|
+
additionalProcessing,
|
|
174
|
+
});
|
|
150
175
|
return pivotTable;
|
|
151
176
|
}
|
|
152
177
|
catch (e) {
|
|
@@ -159,8 +184,11 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
159
184
|
pivot,
|
|
160
185
|
report,
|
|
161
186
|
client,
|
|
187
|
+
uniqueValues: report.distinctStrings,
|
|
162
188
|
dashboardName,
|
|
163
189
|
tenants,
|
|
190
|
+
dateFilter,
|
|
191
|
+
additionalProcessing,
|
|
164
192
|
})
|
|
165
193
|
: undefined;
|
|
166
194
|
}
|
|
@@ -3,7 +3,7 @@ import { QuillReport } from '../models/Report';
|
|
|
3
3
|
import { FilterTreeNode } from './astFilterProcessing';
|
|
4
4
|
export declare function findAndProcessDateFilter(filters: any[]): any;
|
|
5
5
|
export declare function processFilterFromBackend(filter: any): any;
|
|
6
|
-
export declare function updateFilter(filter: any, value: any, comparison: any, dashboardName: string): any;
|
|
6
|
+
export declare function updateFilter(filter: any, value: any | undefined, comparison: any | undefined, dashboardName: string): any;
|
|
7
7
|
export declare const getType: (t: string) => FieldType;
|
|
8
8
|
/**
|
|
9
9
|
* Returns a sentence to describe a Filter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAGxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,OAkBnD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAGxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,OAkBnD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAG,YAAO,EACjB,UAAU,EAAE,GAAG,YAAO,EACtB,aAAa,EAAE,MAAM,OAmGtB;AAGD,eAAO,MAAM,OAAO,MAAO,MAAM,cA0DhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwB7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,cAAc,EAAE,CAoCrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,yBAgCnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/D;AAED,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,mBAAmB,GACvC,mBAAmB,CAkKrB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,cAAc,EAAE,GAC9B,GAAG,EAAE,CA+CP;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CA+BT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE;IACpD,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD,GAAG;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB,CASA;AAED,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,WAClB,WAAW,EAAE,iBACP,MAAM,KACpB,CAAC,mBAAmB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,SAqDpD,CAAC"}
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
+
import { Pivot } from '../models/Pivot';
|
|
1
2
|
export declare function mergeComparisonRange(resp: any): any;
|
|
3
|
+
export declare function dateAdder(date: Date | string, interval: string): Date;
|
|
4
|
+
export declare function mergeComparisonPivotColumns({ pivot, rows, compRows, }: {
|
|
5
|
+
pivot: Pivot;
|
|
6
|
+
rows: any[];
|
|
7
|
+
compRows: any[];
|
|
8
|
+
}): any[];
|
|
9
|
+
export declare function mergeComparisonPivotRows({ pivot, rows, compRows, databaseType, dateBucket, comparisonInterval, columnFieldValues, }: {
|
|
10
|
+
pivot: Pivot;
|
|
11
|
+
rows: any[];
|
|
12
|
+
compRows: any[];
|
|
13
|
+
databaseType: string;
|
|
14
|
+
dateBucket?: string;
|
|
15
|
+
comparisonInterval?: string;
|
|
16
|
+
columnFieldValues?: string[];
|
|
17
|
+
}): any[];
|
|
2
18
|
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,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
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergeComparisonRange = mergeComparisonRange;
|
|
4
|
+
exports.dateAdder = dateAdder;
|
|
5
|
+
exports.mergeComparisonPivotColumns = mergeComparisonPivotColumns;
|
|
6
|
+
exports.mergeComparisonPivotRows = mergeComparisonPivotRows;
|
|
7
|
+
const date_fns_1 = require("date-fns");
|
|
8
|
+
const columnProcessing_1 = require("./columnProcessing");
|
|
9
|
+
const date_fns_tz_1 = require("date-fns-tz");
|
|
4
10
|
function mergeComparisonRange(resp) {
|
|
5
11
|
if (resp.chartType === 'table')
|
|
6
12
|
return resp;
|
|
@@ -20,3 +26,207 @@ function mergeComparisonRange(resp) {
|
|
|
20
26
|
});
|
|
21
27
|
return { ...resp, rows: newRows };
|
|
22
28
|
}
|
|
29
|
+
function dateAdder(date, interval) {
|
|
30
|
+
const match = interval.match(/^(\d+)\s+(day|month|year)$/);
|
|
31
|
+
if (!match) {
|
|
32
|
+
throw new Error(`Invalid interval format: ${interval}`);
|
|
33
|
+
}
|
|
34
|
+
const [, valueStr, unit] = match;
|
|
35
|
+
if (!valueStr || !unit) {
|
|
36
|
+
throw new Error('Could not parse interval');
|
|
37
|
+
}
|
|
38
|
+
const value = parseInt(valueStr, 10);
|
|
39
|
+
const parsedDate = typeof date === 'string' ? new Date(date) : date;
|
|
40
|
+
switch (unit) {
|
|
41
|
+
case 'day':
|
|
42
|
+
return (0, date_fns_1.add)(parsedDate, { days: value });
|
|
43
|
+
case 'month':
|
|
44
|
+
return (0, date_fns_1.add)(parsedDate, { months: value });
|
|
45
|
+
case 'year':
|
|
46
|
+
return (0, date_fns_1.add)(parsedDate, { years: value });
|
|
47
|
+
default:
|
|
48
|
+
throw new Error(`Unsupported interval unit: ${unit}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function dateTrunc(date, granularity = 'day', databaseType) {
|
|
52
|
+
const weekStartsOn = databaseType === 'mssql' ? 0 : 1;
|
|
53
|
+
const timeZone = 'UTC'; // standardize
|
|
54
|
+
const zonedDate = (0, date_fns_tz_1.utcToZonedTime)(date, timeZone);
|
|
55
|
+
switch (granularity.toLowerCase()) {
|
|
56
|
+
case 'week':
|
|
57
|
+
return (0, date_fns_1.startOfWeek)(zonedDate, { weekStartsOn });
|
|
58
|
+
case 'month':
|
|
59
|
+
return (0, date_fns_1.startOfMonth)(zonedDate);
|
|
60
|
+
case 'day':
|
|
61
|
+
return (0, date_fns_1.startOfDay)(zonedDate);
|
|
62
|
+
case 'year':
|
|
63
|
+
return (0, date_fns_1.startOfYear)(zonedDate);
|
|
64
|
+
default:
|
|
65
|
+
throw new Error(`Unsupported granularity: ${granularity}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function mergeComparisonPivotColumns({ pivot, rows, compRows, }) {
|
|
69
|
+
if (!compRows || !compRows.length)
|
|
70
|
+
return rows;
|
|
71
|
+
const mappedCompRows = compRows
|
|
72
|
+
.filter((compRow) => compRow.name !== pivot.rowField)
|
|
73
|
+
.map((compRow) => ({ ...compRow, name: `comparison_${compRow.name}` }));
|
|
74
|
+
return rows.concat(mappedCompRows);
|
|
75
|
+
}
|
|
76
|
+
function mergeComparisonPivotRows({ pivot, rows, compRows, databaseType, dateBucket, comparisonInterval, columnFieldValues, }) {
|
|
77
|
+
if (!compRows || !compRows.length)
|
|
78
|
+
return rows;
|
|
79
|
+
if (pivot.columnField && columnFieldValues && columnFieldValues.length > 0) {
|
|
80
|
+
return merge2DPivotRows(pivot, rows, compRows, columnFieldValues, databaseType, dateBucket, comparisonInterval);
|
|
81
|
+
}
|
|
82
|
+
if (pivot.rowField) {
|
|
83
|
+
return merge1DPivotRows(pivot, rows, compRows, databaseType, dateBucket, comparisonInterval);
|
|
84
|
+
}
|
|
85
|
+
return mergeAggregatedRows(pivot, rows, compRows);
|
|
86
|
+
}
|
|
87
|
+
function merge2DPivotRows(pivot, rows, compRows, columnFieldValues, databaseType, dateBucket, comparisonInterval) {
|
|
88
|
+
if (!pivot || !pivot.columnField) {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
if ((0, columnProcessing_1.isStringType)(pivot.rowFieldType || '') || !pivot.rowFieldType) {
|
|
92
|
+
return merge2DStringPivotRows(pivot, rows, compRows, columnFieldValues);
|
|
93
|
+
}
|
|
94
|
+
return merge2DDatePivotRows(pivot, rows, compRows, columnFieldValues, databaseType, dateBucket, comparisonInterval);
|
|
95
|
+
}
|
|
96
|
+
function merge2DStringPivotRows(pivot, rows, compRows, columnFieldValues) {
|
|
97
|
+
if (!pivot.rowField || !pivot.valueField) {
|
|
98
|
+
return rows;
|
|
99
|
+
}
|
|
100
|
+
return rows.map((row) => {
|
|
101
|
+
const matchingCompRow = compRows.find((compRow) => compRow[pivot.rowField] === row[pivot.rowField]);
|
|
102
|
+
const comparisonFields = columnFieldValues.reduce((acc, fieldValue) => {
|
|
103
|
+
acc[`comparison_${fieldValue}`] = matchingCompRow
|
|
104
|
+
? matchingCompRow[fieldValue] || null
|
|
105
|
+
: null;
|
|
106
|
+
return acc;
|
|
107
|
+
}, {});
|
|
108
|
+
return {
|
|
109
|
+
...row,
|
|
110
|
+
...comparisonFields,
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function merge2DDatePivotRows(pivot, rows, compRows, columnFieldValues, databaseType, dateBucket, comparisonInterval) {
|
|
115
|
+
if (!comparisonInterval || !pivot.rowField) {
|
|
116
|
+
return rows;
|
|
117
|
+
}
|
|
118
|
+
return rows.map((row) => {
|
|
119
|
+
// Truncate the row date to match the SQL behavior
|
|
120
|
+
const rowDate = typeof row[pivot.rowField] === 'string'
|
|
121
|
+
? new Date(row[pivot.rowField])
|
|
122
|
+
: row[pivot.rowField];
|
|
123
|
+
const truncatedRowDate = dateTrunc(rowDate, dateBucket, databaseType);
|
|
124
|
+
// Find a matching compRow where adding the interval matches the truncatedRowDate
|
|
125
|
+
const matchingCompRow = compRows.find((compRow) => {
|
|
126
|
+
const comparisonDateWithInterval = dateAdder(compRow[pivot.rowField], comparisonInterval);
|
|
127
|
+
const truncatedCompRowDate = dateTrunc(comparisonDateWithInterval, dateBucket, databaseType);
|
|
128
|
+
return (truncatedRowDate.toISOString() === truncatedCompRowDate.toISOString());
|
|
129
|
+
});
|
|
130
|
+
// Create comparison fields for each column value
|
|
131
|
+
const comparisonFields = columnFieldValues.reduce((acc, fieldValue) => {
|
|
132
|
+
acc[`comparison_${fieldValue}`] = matchingCompRow
|
|
133
|
+
? matchingCompRow[fieldValue] || null
|
|
134
|
+
: null;
|
|
135
|
+
return acc;
|
|
136
|
+
}, {});
|
|
137
|
+
return {
|
|
138
|
+
...row,
|
|
139
|
+
...comparisonFields,
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function merge1DPivotRows(pivot, rows, compRows, databaseType, dateBucket, comparisonInterval) {
|
|
144
|
+
if ((0, columnProcessing_1.isStringType)(pivot.rowFieldType || '') || !pivot.rowFieldType) {
|
|
145
|
+
return merge1DStringPivotRows(pivot, rows, compRows);
|
|
146
|
+
}
|
|
147
|
+
return merge1DDatePivotRows(pivot, rows, compRows, databaseType, dateBucket, comparisonInterval);
|
|
148
|
+
}
|
|
149
|
+
function merge1DStringPivotRows(pivot, rows, compRows) {
|
|
150
|
+
if (!pivot.rowField || !pivot.valueField) {
|
|
151
|
+
return rows;
|
|
152
|
+
}
|
|
153
|
+
return rows.map((row) => {
|
|
154
|
+
const matchingCompRow = compRows.find((compRow) => compRow[pivot.rowField] === row[pivot.rowField]);
|
|
155
|
+
let aggregationSuffix = '';
|
|
156
|
+
// match 'percentage' casing
|
|
157
|
+
if (matchingCompRow && pivot.aggregationType === 'percentage') {
|
|
158
|
+
if (matchingCompRow[`${pivot.valueField}_Percentage`]) {
|
|
159
|
+
aggregationSuffix = '_Percentage';
|
|
160
|
+
}
|
|
161
|
+
else if (matchingCompRow[`${pivot.valueField}_PERCENTAGE`]) {
|
|
162
|
+
aggregationSuffix = '_PERCENTAGE';
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
aggregationSuffix = '_percentage';
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Return the merged row with the value from compRows, or null if no match is found
|
|
169
|
+
return {
|
|
170
|
+
...row,
|
|
171
|
+
[`comparison_${pivot.valueField}${aggregationSuffix}`]: matchingCompRow
|
|
172
|
+
? matchingCompRow[`${pivot.valueField}${aggregationSuffix}`]
|
|
173
|
+
: null,
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
function merge1DDatePivotRows(pivot, rows, compRows, databaseType, dateBucket, comparisonInterval) {
|
|
178
|
+
if (!comparisonInterval || !pivot.rowField) {
|
|
179
|
+
return rows;
|
|
180
|
+
}
|
|
181
|
+
return rows.map((row) => {
|
|
182
|
+
// Truncate the row date to match the SQL behavior
|
|
183
|
+
const rowDate = typeof row[pivot.rowField] === 'string'
|
|
184
|
+
? new Date(row[pivot.rowField])
|
|
185
|
+
: row[pivot.rowField];
|
|
186
|
+
const truncatedRowDate = dateTrunc(rowDate, dateBucket, databaseType);
|
|
187
|
+
// Find a matching compRow where adding the interval matches the truncatedRowDate
|
|
188
|
+
const matchingCompRow = compRows.find((compRow) => {
|
|
189
|
+
const comparisonDateWithInterval = dateAdder(compRow[`${pivot.rowField}`], comparisonInterval);
|
|
190
|
+
const truncatedCompRowDate = dateTrunc(comparisonDateWithInterval, dateBucket, databaseType);
|
|
191
|
+
return (truncatedRowDate.toISOString() === truncatedCompRowDate.toISOString());
|
|
192
|
+
});
|
|
193
|
+
let aggregationSuffix = '';
|
|
194
|
+
// match 'percentage' casing
|
|
195
|
+
if (matchingCompRow && pivot.aggregationType === 'percentage') {
|
|
196
|
+
if (matchingCompRow[`${pivot.valueField}_Percentage`]) {
|
|
197
|
+
aggregationSuffix = '_Percentage';
|
|
198
|
+
}
|
|
199
|
+
else if (matchingCompRow[`${pivot.valueField}_PERCENTAGE`]) {
|
|
200
|
+
aggregationSuffix = '_PERCENTAGE';
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
aggregationSuffix = '_percentage';
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
...row,
|
|
208
|
+
[`comparison_${pivot.valueField}${aggregationSuffix}`]: matchingCompRow?.[`${pivot.valueField}${aggregationSuffix}`] || null,
|
|
209
|
+
};
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
function mergeAggregatedRows(pivot, rows, compRows) {
|
|
213
|
+
return rows.map((row, i) => {
|
|
214
|
+
let aggregationSuffix = '';
|
|
215
|
+
// match 'percentage' casing
|
|
216
|
+
if (compRows[i] && pivot.aggregationType === 'percentage') {
|
|
217
|
+
if (compRows[i][`${pivot.valueField}_Percentage`]) {
|
|
218
|
+
aggregationSuffix = '_Percentage';
|
|
219
|
+
}
|
|
220
|
+
else if (compRows[i][`${pivot.valueField}_PERCENTAGE`]) {
|
|
221
|
+
aggregationSuffix = '_PERCENTAGE';
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
aggregationSuffix = '_percentage';
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
const compRow = {
|
|
228
|
+
[`comparison_${pivot.valueField}${aggregationSuffix}`]: compRows[i]?.[`${pivot.valueField}${aggregationSuffix}`],
|
|
229
|
+
};
|
|
230
|
+
return { ...row, ...compRow };
|
|
231
|
+
});
|
|
232
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Pagination } from '../models/Pagination';
|
|
2
2
|
export declare const DEFAULT_PAGINATION: Pagination;
|
|
3
|
-
export declare function shouldFetchMore(pagination: Pagination, page: number, maxPage: number): boolean;
|
|
3
|
+
export declare function shouldFetchMore(pagination: Pagination, page: number, maxPage: number, currentRowCount?: number): boolean;
|
|
4
4
|
export declare function shouldSortInMemory(pagination: Pagination, rowCount?: number): boolean;
|
|
5
5
|
//# sourceMappingURL=paginationProcessing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginationProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/paginationProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,eAAO,MAAM,kBAAkB,EAAE,UAIhC,CAAC;AAEF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"paginationProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/paginationProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,eAAO,MAAM,kBAAkB,EAAE,UAIhC,CAAC;AAEF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,WAkBzB;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,WAK3E"}
|
|
@@ -8,8 +8,9 @@ exports.DEFAULT_PAGINATION = {
|
|
|
8
8
|
rowsPerPage: 10,
|
|
9
9
|
rowsPerRequest: 600,
|
|
10
10
|
};
|
|
11
|
-
function shouldFetchMore(pagination, page, maxPage) {
|
|
12
|
-
if (!pagination
|
|
11
|
+
function shouldFetchMore(pagination, page, maxPage, currentRowCount) {
|
|
12
|
+
if (!pagination ||
|
|
13
|
+
(currentRowCount && currentRowCount >= pagination.rowsPerPage * (page + 1))) {
|
|
13
14
|
return false;
|
|
14
15
|
}
|
|
15
16
|
const indexAdjustedPage = page;
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { QuillProviderClient } from '../models/Client';
|
|
2
|
-
import {
|
|
3
|
-
import { Pivot } from '../models/Pivot';
|
|
2
|
+
import { Pivot, PivotData } from '../models/Pivot';
|
|
4
3
|
import { QuillReportInternal } from '../models/Report';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
import { AdditionalProcessing } from './tableProcessing';
|
|
5
|
+
export declare function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount, }: {
|
|
6
|
+
pivot: Pivot;
|
|
7
|
+
report?: QuillReportInternal;
|
|
8
|
+
client: QuillProviderClient;
|
|
9
|
+
dateBucket?: string;
|
|
10
|
+
dateFilter?: any;
|
|
11
|
+
distinctStrings?: string[];
|
|
12
|
+
dashboardName?: string;
|
|
13
|
+
tenants?: {
|
|
14
|
+
tenantField: string;
|
|
15
|
+
tenantIds: (string | number)[];
|
|
16
|
+
}[] | (string | number)[];
|
|
17
|
+
additionalProcessing?: AdditionalProcessing;
|
|
18
|
+
pivotQuery?: string;
|
|
19
|
+
comparisonPivotQuery?: string;
|
|
20
|
+
getPivotRowCount?: boolean;
|
|
21
|
+
}): Promise<PivotData>;
|
|
12
22
|
//# 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,
|
|
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,CAiVrB"}
|