@quillsql/react 2.13.35 → 2.13.37
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 +1 -0
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +178 -96
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +6 -8
- package/dist/cjs/Dashboard.d.ts +2 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +18 -8
- package/dist/cjs/ReportBuilder.d.ts +2 -0
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +398 -271
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +33 -11
- 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/Dashboard/MetricComponent.d.ts +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +98 -106
- 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 +1 -0
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +179 -97
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +7 -9
- package/dist/esm/Dashboard.d.ts +2 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +1 -1
- package/dist/esm/ReportBuilder.d.ts +2 -0
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +399 -272
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +33 -11
- 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/Dashboard/MetricComponent.d.ts +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +98 -106
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { QuillProviderClient } from '../models/Client';
|
|
2
2
|
import { ColumnInternal } from '../models/Columns';
|
|
3
3
|
import { DashboardFilter, InternalFilter } from '../models/Filter';
|
|
4
|
-
import { Pivot } from '../models/Pivot';
|
|
4
|
+
import { Pivot, PivotData } from '../models/Pivot';
|
|
5
5
|
import { QuillReport, QuillReportInternal } from '../models/Report';
|
|
6
6
|
import { DateRangesByColumn, Table, UniqueValuesByTable } from '../models/Tables';
|
|
7
7
|
import { AdditionalProcessing } from './tableProcessing';
|
|
@@ -10,10 +10,7 @@ export type ReportBuilderInfo = {
|
|
|
10
10
|
columns: ColumnInternal[];
|
|
11
11
|
rowCount: number;
|
|
12
12
|
pivot: Pivot | null;
|
|
13
|
-
pivotData:
|
|
14
|
-
rows: any[];
|
|
15
|
-
columns: ColumnInternal[];
|
|
16
|
-
} | null;
|
|
13
|
+
pivotData: PivotData | null;
|
|
17
14
|
formattedRows: any[];
|
|
18
15
|
report: QuillReportInternal;
|
|
19
16
|
table: string;
|
|
@@ -57,11 +54,27 @@ export declare function saveReport({ report, dashboardItemId, client, }: {
|
|
|
57
54
|
}): Promise<any>;
|
|
58
55
|
export declare const formatRowsFromReport: (report: any, xAxisField?: string, xAxisFormat?: string) => any;
|
|
59
56
|
export declare function convertInternalReportToReport(report: QuillReportInternal, dashboardFilters: DashboardFilter[], initiator?: string): QuillReport;
|
|
60
|
-
export declare const fetchReportBuilderDataFromAST: (baseAst
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
export declare const fetchReportBuilderDataFromAST: ({ baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }: {
|
|
58
|
+
baseAst: any;
|
|
59
|
+
formData: any;
|
|
60
|
+
schema: Table[];
|
|
61
|
+
client: QuillProviderClient;
|
|
62
|
+
tenants?: {
|
|
63
|
+
tenantField: string;
|
|
64
|
+
tenantIds: (string | number)[];
|
|
65
|
+
}[] | (string | number)[];
|
|
66
|
+
pivot?: Pivot;
|
|
67
|
+
previousFormData?: any;
|
|
68
|
+
currentTable?: string;
|
|
69
|
+
previousRelevant?: {
|
|
70
|
+
uniqueStrings: UniqueValuesByTable;
|
|
71
|
+
dateRanges: DateRangesByColumn;
|
|
72
|
+
};
|
|
73
|
+
report?: QuillReportInternal;
|
|
74
|
+
customFields?: any;
|
|
75
|
+
skipUniqueValues?: boolean;
|
|
76
|
+
skipRowCount?: boolean;
|
|
77
|
+
processing?: AdditionalProcessing;
|
|
78
|
+
dashboardName?: string;
|
|
79
|
+
}) => Promise<ReportBuilderInfo>;
|
|
67
80
|
//# sourceMappingURL=report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/utils/report.js
CHANGED
|
@@ -143,7 +143,7 @@ export async function processReportResponse({ resp, client, filters, dateBucket,
|
|
|
143
143
|
parseValueFromBigQueryDates(dashboardItem.compareRows, resp.fields);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
const reportInfo = await cleanDashboardItem(dashboardItem, filters, client, dateBucket);
|
|
146
|
+
const reportInfo = await cleanDashboardItem(dashboardItem, filters, client, dateBucket, additionalProcessing);
|
|
147
147
|
if (additionalProcessing) {
|
|
148
148
|
reportInfo.pagination = additionalProcessing.page;
|
|
149
149
|
reportInfo.sort = additionalProcessing.sort;
|
|
@@ -283,7 +283,7 @@ export function convertInternalReportToReport(report, dashboardFilters, initiato
|
|
|
283
283
|
}
|
|
284
284
|
return {
|
|
285
285
|
...col,
|
|
286
|
-
format: report.pivot?.valueFieldType || 'whole_number',
|
|
286
|
+
format: report.pivot?.valueFieldType || col.format || 'whole_number',
|
|
287
287
|
};
|
|
288
288
|
}) ?? report.columns;
|
|
289
289
|
rows = formatRowsFromReport({ rows, columns });
|
|
@@ -300,7 +300,11 @@ export function convertInternalReportToReport(report, dashboardFilters, initiato
|
|
|
300
300
|
rows: rows,
|
|
301
301
|
yAxisFields: getYAxisFields(report, dashboardFilters),
|
|
302
302
|
columns: columns,
|
|
303
|
-
rowCount:
|
|
303
|
+
rowCount: report.chartType === 'table'
|
|
304
|
+
? (report.pivotRowCount ?? report.rowCount)
|
|
305
|
+
: rows
|
|
306
|
+
? rows.length
|
|
307
|
+
: 0,
|
|
304
308
|
};
|
|
305
309
|
}
|
|
306
310
|
let rows = report.rows;
|
|
@@ -320,7 +324,7 @@ export function convertInternalReportToReport(report, dashboardFilters, initiato
|
|
|
320
324
|
return EMPTY_REPORT;
|
|
321
325
|
}
|
|
322
326
|
}
|
|
323
|
-
export const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName) => {
|
|
327
|
+
export const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }) => {
|
|
324
328
|
let newRows = [];
|
|
325
329
|
let newColumns = [];
|
|
326
330
|
let newRowCount = 0;
|
|
@@ -337,7 +341,7 @@ export const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, c
|
|
|
337
341
|
table = tables[0] ? tables[0] : '';
|
|
338
342
|
const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
|
|
339
343
|
if (!table || !tableInfo) {
|
|
340
|
-
throw new Error('No table found
|
|
344
|
+
throw new Error('No table found');
|
|
341
345
|
}
|
|
342
346
|
const tableData = await fetchTableByAST({ ...baseAst, where: formData }, client, tenants, processing ?? { page: DEFAULT_PAGINATION }, undefined, skipRowCount, undefined, dashboardName);
|
|
343
347
|
if (tableData.error) {
|
|
@@ -405,8 +409,9 @@ export const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, c
|
|
|
405
409
|
if (rowFieldDateRange) {
|
|
406
410
|
dateBucket = getDateBucketFromRange(rowFieldDateRange.dateRange);
|
|
407
411
|
}
|
|
408
|
-
if (!Object.values(relevantInfo.uniqueStrings[table] ?? {}).length ||
|
|
409
|
-
|
|
412
|
+
if (!Object.values(relevantInfo.uniqueStrings[table] ?? {}).length ||
|
|
413
|
+
!equal(formData, previousFormData)) {
|
|
414
|
+
relevantInfo.uniqueStrings[table] = await getUniqueStringValues(tableInfo.columns.filter((column) => column.field === pivot?.columnField), table, client, tenants, customFields, undefined, undefined, query ? query : (report?.queryString ?? ''));
|
|
410
415
|
}
|
|
411
416
|
newPivotData = await generatePivotTable({
|
|
412
417
|
pivot,
|
|
@@ -416,6 +421,7 @@ export const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, c
|
|
|
416
421
|
uniqueValues: relevantInfo.uniqueStrings[table],
|
|
417
422
|
dashboardName,
|
|
418
423
|
tenants,
|
|
424
|
+
additionalProcessing: processing,
|
|
419
425
|
});
|
|
420
426
|
newPivot = pivot;
|
|
421
427
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { QuillProviderClient } from '../models/Client';
|
|
2
2
|
import { Table } from '../models/Tables';
|
|
3
3
|
export declare const getCustomFieldInfo: (client: QuillProviderClient, caller?: string) => Promise<any[]>;
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const getSchemaInfo: (client: QuillProviderClient, caller?: string, tableIds?: string[]) => Promise<{
|
|
5
5
|
schemaData: Table[];
|
|
6
6
|
customFieldsByTable: any;
|
|
7
7
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AA0BzC,eAAO,MAAM,kBAAkB,WACrB,mBAAmB,oCAmF5B,CAAC;AAEF,eAAO,MAAM,aAAa,WAChB,mBAAmB,8BAEhB,MAAM,EAAE,KAClB,OAAO,CAAC;IAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAAC,mBAAmB,EAAE,GAAG,CAAA;CAAE,CAqD3D,CAAC"}
|
package/dist/esm/utils/schema.js
CHANGED
|
@@ -1,33 +1,4 @@
|
|
|
1
1
|
import { convertColumnInfoToColumnInternal } from './columnProcessing';
|
|
2
|
-
// const triggerSoftUpdate = async (
|
|
3
|
-
// client: QuillProviderClient,
|
|
4
|
-
// tables: Table[],
|
|
5
|
-
// ) => {
|
|
6
|
-
// const { queryEndpoint, queryHeaders, publicKey, withCredentials } = client;
|
|
7
|
-
// tables.forEach(async (table: Table) => {
|
|
8
|
-
// // if (table.isSelectStar) {
|
|
9
|
-
// fetch(`${queryEndpoint}?update-view`, {
|
|
10
|
-
// method: 'POST',
|
|
11
|
-
// headers: {
|
|
12
|
-
// ...queryHeaders,
|
|
13
|
-
// 'Content-Type': 'application/json',
|
|
14
|
-
// },
|
|
15
|
-
// credentials: withCredentials ? 'include' : 'omit',
|
|
16
|
-
// body: JSON.stringify({
|
|
17
|
-
// metadata: {
|
|
18
|
-
// preQueries: [table.viewQuery.replace(/;/, '')],
|
|
19
|
-
// clientId: publicKey,
|
|
20
|
-
// publicKey: publicKey,
|
|
21
|
-
// task: 'update-view',
|
|
22
|
-
// name: table.name,
|
|
23
|
-
// id: table._id,
|
|
24
|
-
// runQueryConfig: { getColumns: true },
|
|
25
|
-
// },
|
|
26
|
-
// }),
|
|
27
|
-
// });
|
|
28
|
-
// // }
|
|
29
|
-
// });
|
|
30
|
-
// };
|
|
31
2
|
const parseResponse = (results) => {
|
|
32
3
|
if (results.data?.data) {
|
|
33
4
|
if (results.data.data.queries &&
|
|
@@ -113,7 +84,7 @@ export const getCustomFieldInfo = async (client, caller = 'se') => {
|
|
|
113
84
|
}
|
|
114
85
|
return customFieldsByTableUnique;
|
|
115
86
|
};
|
|
116
|
-
export const
|
|
87
|
+
export const getSchemaInfo = async (client, caller = 'se', tableIds) => {
|
|
117
88
|
const { queryEndpoint, queryHeaders, publicKey, withCredentials, } = client;
|
|
118
89
|
// TODO: Make custom fields work
|
|
119
90
|
// let customFieldsByTableUnique: any[] = [];
|
|
@@ -3,6 +3,7 @@ import { QuillProviderClient } from '../models/Client';
|
|
|
3
3
|
import { Column, ColumnInternal } from '../models/Columns';
|
|
4
4
|
import { DashboardFilter } from '../models/Filter';
|
|
5
5
|
import { Pagination } from '../models/Pagination';
|
|
6
|
+
import { Pivot } from '../models/Pivot';
|
|
6
7
|
import { DateRangesByColumn } from '../models/Tables';
|
|
7
8
|
export interface AdditionalProcessing {
|
|
8
9
|
sort?: {
|
|
@@ -64,28 +65,57 @@ export declare const getPaginatedRows: (client: QuillProviderClient, tenants: {
|
|
|
64
65
|
rowCount?: number;
|
|
65
66
|
error?: string;
|
|
66
67
|
}>;
|
|
67
|
-
export declare const fetchResultsByQuery: (query
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
} |
|
|
74
|
-
|
|
68
|
+
export declare const fetchResultsByQuery: ({ query, client, tenants, processing, customFields, filters, dateField, rowsOnly, rowCountOnly, filterMap, dashboardName, pivot, getPivotRowCount, comparisonQuery, }: {
|
|
69
|
+
query: string;
|
|
70
|
+
client: QuillProviderClient;
|
|
71
|
+
tenants: {
|
|
72
|
+
tenantField: string;
|
|
73
|
+
tenantIds: (string | number)[];
|
|
74
|
+
}[] | (string | number)[] | undefined;
|
|
75
|
+
processing?: AdditionalProcessing;
|
|
76
|
+
customFields?: any;
|
|
77
|
+
filters?: DashboardFilter[];
|
|
78
|
+
dateField?: {
|
|
75
79
|
field: string;
|
|
76
80
|
table: string;
|
|
81
|
+
} | null;
|
|
82
|
+
rowsOnly?: boolean;
|
|
83
|
+
rowCountOnly?: boolean;
|
|
84
|
+
filterMap?: {
|
|
85
|
+
[key: string]: {
|
|
86
|
+
field: string;
|
|
87
|
+
table: string;
|
|
88
|
+
};
|
|
77
89
|
};
|
|
78
|
-
|
|
90
|
+
dashboardName?: string;
|
|
91
|
+
pivot?: Pivot | null;
|
|
92
|
+
getPivotRowCount?: boolean;
|
|
93
|
+
comparisonQuery?: string;
|
|
94
|
+
}) => Promise<{
|
|
79
95
|
columns: ColumnInternal[];
|
|
80
96
|
rows: any[];
|
|
81
97
|
rowCount?: number;
|
|
82
98
|
error?: string;
|
|
83
99
|
itemQuery?: string[];
|
|
84
100
|
}>;
|
|
85
|
-
export declare const fetchResultsByReport: (reportId
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
101
|
+
export declare const fetchResultsByReport: ({ reportId, client, tenants, processing, filters, customFields, rowsOnly, rowCountOnly, abortSignal, pivot, pivotQuery, comparisonPivotQuery, getPivotRowCount, }: {
|
|
102
|
+
reportId: string;
|
|
103
|
+
client: QuillProviderClient;
|
|
104
|
+
tenants: {
|
|
105
|
+
tenantField: string;
|
|
106
|
+
tenantIds: (string | number)[];
|
|
107
|
+
}[] | (string | number)[] | undefined;
|
|
108
|
+
processing?: AdditionalProcessing;
|
|
109
|
+
filters?: any;
|
|
110
|
+
customFields?: any;
|
|
111
|
+
rowsOnly?: boolean;
|
|
112
|
+
rowCountOnly?: boolean;
|
|
113
|
+
abortSignal?: AbortSignal;
|
|
114
|
+
pivot?: Pivot | null;
|
|
115
|
+
pivotQuery?: string;
|
|
116
|
+
comparisonPivotQuery?: string;
|
|
117
|
+
getPivotRowCount?: boolean;
|
|
118
|
+
}) => Promise<{
|
|
89
119
|
columns: Column[];
|
|
90
120
|
rows: any[];
|
|
91
121
|
rowCount?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { parseValueFromBigQueryDates } from './dataProcessing';
|
|
|
6
6
|
import { parseQueryDateRangeByDatabaseType } from './dates';
|
|
7
7
|
import { processFilterErrorList } from './errorProcessing';
|
|
8
8
|
import { DEFAULT_PAGINATION } from './paginationProcessing';
|
|
9
|
+
import { generatePivotWithSQL } from './pivotConstructor';
|
|
9
10
|
import { generateCountQuery, generateDistinctQuery, generateMinMaxDateRangeQueries, processColumnReference, } from './queryConstructor';
|
|
10
11
|
export const hasColumnAlias = (columns, referencedColumns) => {
|
|
11
12
|
if (!referencedColumns) {
|
|
@@ -58,6 +59,9 @@ export const getUniqueValuesByColumns = async (columns, query, rows, client, ten
|
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
61
|
else {
|
|
62
|
+
if (stringNames.length === 0) {
|
|
63
|
+
return {};
|
|
64
|
+
}
|
|
61
65
|
const distinctValueQuery = generateDistinctQuery(stringNames, query, client.databaseType);
|
|
62
66
|
const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client, tenants, customFields, filters, dashboardName);
|
|
63
67
|
if (!distinctStrings) {
|
|
@@ -74,7 +78,7 @@ export const getUniqueStringValues = async (columns, tableName, client, tenants,
|
|
|
74
78
|
return isStringType(column.fieldType);
|
|
75
79
|
});
|
|
76
80
|
const stringNames = convertedStringColumns.map((column) => processColumnReference(column.field, client.databaseType));
|
|
77
|
-
const { filteredColumns: smallStringColumns, exceededColumns } =
|
|
81
|
+
const { filteredColumns: smallStringColumns, exceededColumns } = stringNames.length > 0
|
|
78
82
|
? await getCountsByColumns(convertedStringColumns, query || `Select ${stringNames.join(', ')} from ${tableName}`, client, tenants, customFields ?? [], dashboardName)
|
|
79
83
|
: { filteredColumns: [], exceededColumns: undefined };
|
|
80
84
|
const smallStringNames = smallStringColumns.map((column) => processColumnReference(column.field, client.databaseType));
|
|
@@ -208,13 +212,24 @@ const fetchDistinctStrings = async (query, client, tenants, customFields, filter
|
|
|
208
212
|
// This function is used in ReportBuilder and PivotModal to fetch distinct values. However, neither PivotModal or FilterModal
|
|
209
213
|
// are currently built to handle null values (FilterModal uses SQL IN, which doesn't handle null values). For now, filtering
|
|
210
214
|
// out null values.
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
215
|
+
// as of 1/15, we are getting mssql distinct values as a delimited string due to node-sql-parser limitations
|
|
216
|
+
const values = typeof columnInfo.string_values === 'string'
|
|
217
|
+
? columnInfo.string_values
|
|
218
|
+
.split(',')
|
|
219
|
+
.reduce((result, value) => {
|
|
220
|
+
if (value !== null && value !== undefined) {
|
|
221
|
+
// TODO: handle null values rather than filtering out
|
|
222
|
+
result[value] = false;
|
|
223
|
+
}
|
|
224
|
+
return result;
|
|
225
|
+
}, {})
|
|
226
|
+
: columnInfo.string_values.reduce((result, value) => {
|
|
227
|
+
if (value !== null && value !== undefined) {
|
|
228
|
+
// TODO: handle null values rather than filtering out
|
|
229
|
+
result[value] = false;
|
|
230
|
+
}
|
|
231
|
+
return result;
|
|
232
|
+
}, {});
|
|
218
233
|
return { column, values };
|
|
219
234
|
});
|
|
220
235
|
return results;
|
|
@@ -264,102 +279,152 @@ const fetchQueryDateRanges = async (query, client, tenants, customFields, dashbo
|
|
|
264
279
|
};
|
|
265
280
|
export const getPaginatedRows = async (client, tenants, query, reportId, processing, filters, customFields, dashboardName) => {
|
|
266
281
|
if (query) {
|
|
267
|
-
return await fetchResultsByQuery(
|
|
282
|
+
return await fetchResultsByQuery({
|
|
283
|
+
query,
|
|
284
|
+
client,
|
|
285
|
+
tenants,
|
|
286
|
+
processing,
|
|
287
|
+
customFields,
|
|
288
|
+
filters,
|
|
289
|
+
dashboardName,
|
|
290
|
+
});
|
|
268
291
|
}
|
|
269
292
|
else if (reportId) {
|
|
270
|
-
return await fetchResultsByReport(
|
|
293
|
+
return await fetchResultsByReport({
|
|
294
|
+
reportId,
|
|
295
|
+
client,
|
|
296
|
+
tenants,
|
|
297
|
+
processing,
|
|
298
|
+
filters,
|
|
299
|
+
customFields,
|
|
300
|
+
});
|
|
271
301
|
}
|
|
272
302
|
return { rows: [], columns: [] };
|
|
273
303
|
};
|
|
274
304
|
// TODO: Move these to call through the sdk
|
|
275
|
-
export const fetchResultsByQuery = async (query, client, tenants, processing, customFields, filters, dateField, rowsOnly, rowCountOnly, filterMap, dashboardName) => {
|
|
305
|
+
export const fetchResultsByQuery = async ({ query, client, tenants, processing, customFields, filters, dateField, rowsOnly, rowCountOnly, filterMap, dashboardName, pivot, getPivotRowCount = true, comparisonQuery, }) => {
|
|
276
306
|
let rows = [];
|
|
277
307
|
let columns = [];
|
|
278
308
|
let error = undefined;
|
|
279
309
|
let rowCount = undefined;
|
|
280
310
|
let itemQuery = undefined;
|
|
281
311
|
try {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
databaseType: client?.databaseType,
|
|
289
|
-
getCustomFields: !!tenants?.length,
|
|
290
|
-
customFieldsByTable: customFields,
|
|
312
|
+
if (pivot) {
|
|
313
|
+
const pivotData = await generatePivotWithSQL({
|
|
314
|
+
pivot,
|
|
315
|
+
client,
|
|
316
|
+
pivotQuery: query,
|
|
317
|
+
comparisonPivotQuery: comparisonQuery,
|
|
291
318
|
additionalProcessing: processing,
|
|
292
|
-
|
|
293
|
-
useNewNodeSql: true,
|
|
294
|
-
filters: filters?.map((filter) => ({ ...filter, options: undefined })),
|
|
295
|
-
dateField: dateField ?? undefined,
|
|
296
|
-
rowsOnly,
|
|
297
|
-
rowCountOnly,
|
|
298
|
-
dashboardName: dashboardName && tenants ? dashboardName : undefined,
|
|
299
|
-
tenants: dashboardName && tenants ? tenants : undefined,
|
|
300
|
-
},
|
|
301
|
-
};
|
|
302
|
-
const cloudBody = { query };
|
|
303
|
-
let parsedSuccessfully = true;
|
|
304
|
-
let parsingError = '';
|
|
305
|
-
if (!rowCountOnly) {
|
|
306
|
-
const localURL = `${QUILL_SERVER}/astify`;
|
|
307
|
-
const response = await fetch(localURL, {
|
|
308
|
-
method: 'POST',
|
|
309
|
-
headers: {
|
|
310
|
-
'Content-Type': 'application/json',
|
|
311
|
-
},
|
|
312
|
-
body: JSON.stringify({
|
|
313
|
-
query,
|
|
314
|
-
publicKey: client.publicKey,
|
|
315
|
-
useNewNodeSql: true,
|
|
316
|
-
}),
|
|
319
|
+
getPivotRowCount,
|
|
317
320
|
});
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
const resp = await getData(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
|
|
325
|
-
if (resp && resp.errorMessage) {
|
|
326
|
-
throw new Error(resp.errorMessage);
|
|
327
|
-
}
|
|
328
|
-
if (resp.rowCount !== undefined) {
|
|
329
|
-
rowCount = resp.rowCount;
|
|
321
|
+
rows = pivotData.rows;
|
|
322
|
+
columns = pivotData.columns;
|
|
323
|
+
rowCount = pivotData.rowCount;
|
|
324
|
+
itemQuery = pivotData.comparisonPivotQuery
|
|
325
|
+
? [pivotData.pivotQuery, pivotData.comparisonPivotQuery]
|
|
326
|
+
: [pivotData.pivotQuery];
|
|
330
327
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
328
|
+
else {
|
|
329
|
+
const hostedBody = {
|
|
330
|
+
metadata: {
|
|
331
|
+
query,
|
|
332
|
+
task: 'query',
|
|
333
|
+
filterMap,
|
|
334
|
+
clientId: client.publicKey,
|
|
335
|
+
databaseType: client?.databaseType,
|
|
336
|
+
getCustomFields: !!tenants?.length,
|
|
337
|
+
customFieldsByTable: customFields,
|
|
338
|
+
additionalProcessing: processing,
|
|
339
|
+
useUpdatedDataGathering: processing ? true : false,
|
|
340
|
+
useNewNodeSql: true,
|
|
341
|
+
filters: filters?.map((filter) => ({
|
|
342
|
+
...filter,
|
|
343
|
+
options: undefined,
|
|
344
|
+
})),
|
|
345
|
+
dateField: dateField ?? undefined,
|
|
346
|
+
rowsOnly,
|
|
347
|
+
rowCountOnly,
|
|
348
|
+
dashboardName: dashboardName && tenants ? dashboardName : undefined,
|
|
349
|
+
tenants: dashboardName && tenants ? tenants : undefined,
|
|
336
350
|
},
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
351
|
+
};
|
|
352
|
+
const cloudBody = { query };
|
|
353
|
+
let parsedSuccessfully = true;
|
|
354
|
+
let parsingError = '';
|
|
355
|
+
if (!rowCountOnly) {
|
|
356
|
+
const localURL = `${QUILL_SERVER}/astify`;
|
|
357
|
+
const response = await fetch(localURL, {
|
|
358
|
+
method: 'POST',
|
|
359
|
+
headers: {
|
|
360
|
+
'Content-Type': 'application/json',
|
|
361
|
+
},
|
|
362
|
+
body: JSON.stringify({
|
|
340
363
|
query,
|
|
341
|
-
|
|
342
|
-
|
|
364
|
+
publicKey: client.publicKey,
|
|
365
|
+
useNewNodeSql: true,
|
|
366
|
+
}),
|
|
367
|
+
});
|
|
368
|
+
const results = await response.json();
|
|
369
|
+
if (results.success == false) {
|
|
370
|
+
parsedSuccessfully = false;
|
|
371
|
+
parsingError = results.message;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
const resp = await getData(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
|
|
375
|
+
if (resp && resp.errorMessage) {
|
|
376
|
+
throw new Error(resp.errorMessage);
|
|
377
|
+
}
|
|
378
|
+
if (resp.rowCount !== undefined) {
|
|
379
|
+
rowCount = resp.rowCount;
|
|
380
|
+
}
|
|
381
|
+
if (!resp.error && !parsedSuccessfully) {
|
|
382
|
+
fetch(`${QUILL_SERVER}${QUILL_QUERY_ENDPOINT}`, {
|
|
383
|
+
method: 'POST',
|
|
384
|
+
headers: {
|
|
385
|
+
'Content-Type': 'application/json',
|
|
343
386
|
},
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
387
|
+
body: JSON.stringify({
|
|
388
|
+
metadata: {
|
|
389
|
+
task: 'log-broken-query',
|
|
390
|
+
query,
|
|
391
|
+
clientId: client.clientId,
|
|
392
|
+
error: parsingError,
|
|
393
|
+
},
|
|
394
|
+
}),
|
|
395
|
+
});
|
|
396
|
+
throw new Error('Quill parsing error' +
|
|
397
|
+
parsingError.replace(`Error parsing query`, ''));
|
|
398
|
+
}
|
|
399
|
+
columns = resp.fields.map((elem) => convertPostgresColumn(elem));
|
|
400
|
+
rows = resp.rows;
|
|
401
|
+
itemQuery = resp.itemQuery;
|
|
347
402
|
}
|
|
348
|
-
columns = resp.fields.map((elem) => convertPostgresColumn(elem));
|
|
349
|
-
rows = resp.rows;
|
|
350
|
-
itemQuery = resp.itemQuery;
|
|
351
403
|
}
|
|
352
404
|
catch (e) {
|
|
353
405
|
rows = [];
|
|
354
406
|
columns = [];
|
|
355
|
-
error = e.message;
|
|
407
|
+
error = e.message || e;
|
|
356
408
|
}
|
|
357
409
|
if (client.databaseType && client.databaseType.toLowerCase() === 'bigquery') {
|
|
358
410
|
parseValueFromBigQueryDates(rows, columns);
|
|
359
411
|
}
|
|
360
412
|
return { rows, columns, rowCount, error, itemQuery };
|
|
361
413
|
};
|
|
362
|
-
export const fetchResultsByReport = async (reportId, client, tenants, processing, filters, customFields, rowsOnly, rowCountOnly, abortSignal) => {
|
|
414
|
+
export const fetchResultsByReport = async ({ reportId, client, tenants, processing, filters, customFields, rowsOnly, rowCountOnly, abortSignal, pivot, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, }) => {
|
|
415
|
+
if (pivot && pivotQuery) {
|
|
416
|
+
return fetchResultsByQuery({
|
|
417
|
+
query: pivotQuery,
|
|
418
|
+
comparisonQuery: comparisonPivotQuery,
|
|
419
|
+
client,
|
|
420
|
+
tenants,
|
|
421
|
+
processing,
|
|
422
|
+
customFields,
|
|
423
|
+
filters,
|
|
424
|
+
pivot,
|
|
425
|
+
getPivotRowCount,
|
|
426
|
+
});
|
|
427
|
+
}
|
|
363
428
|
const updatedProcessing = { ...processing };
|
|
364
429
|
let rows = [];
|
|
365
430
|
let columns = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/textProcessing.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"textProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/textProcessing.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmElE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAa/C;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,UAkBvD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAK7C"}
|
|
@@ -23,6 +23,8 @@ export function matchCasing(text, template) {
|
|
|
23
23
|
const isAllUpperCase = (str) => /^[A-Z]+$/.test(str);
|
|
24
24
|
// Detect capitalized (first letter uppercase, rest lowercase)
|
|
25
25
|
const isCapitalized = (str) => /^[A-Z][a-z]*$/.test(str);
|
|
26
|
+
// Detect SCREAMING_SNAKE_CASE (Snowflake)
|
|
27
|
+
const isScreamingSnakeCase = (str) => /^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$/.test(str);
|
|
26
28
|
// Function to convert to TitleCase
|
|
27
29
|
const toTitleCase = (str) => str.toLowerCase().replace(/\b\w/g, (char) => char.toUpperCase());
|
|
28
30
|
// Function to convert to camelCase
|
|
@@ -35,6 +37,9 @@ export function matchCasing(text, template) {
|
|
|
35
37
|
const toUpperCase = (str) => str.toUpperCase();
|
|
36
38
|
// Function to convert to capitalized (first letter uppercase, rest lowercase)
|
|
37
39
|
const toCapitalized = (str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
|
|
40
|
+
const toScreamingSnakeCase = (str) => str.replace(/([A-Z])/g, '_$1') // Add underscore before capitals
|
|
41
|
+
.replace(/^_/, '') // Remove leading underscore if present
|
|
42
|
+
.toUpperCase(); // Convert everything to uppercase
|
|
38
43
|
// Match casing of the template and apply to the text
|
|
39
44
|
if (isTitleCase(template)) {
|
|
40
45
|
return toTitleCase(text);
|
|
@@ -54,6 +59,9 @@ export function matchCasing(text, template) {
|
|
|
54
59
|
else if (isCapitalized(template)) {
|
|
55
60
|
return toCapitalized(text);
|
|
56
61
|
}
|
|
62
|
+
else if (isScreamingSnakeCase(template)) {
|
|
63
|
+
return toScreamingSnakeCase(text);
|
|
64
|
+
}
|
|
57
65
|
else {
|
|
58
66
|
return text; // Default case if no specific pattern is detected
|
|
59
67
|
}
|
|
@@ -71,7 +79,8 @@ export function snakeCaseToTitleCase(str) {
|
|
|
71
79
|
.join(' ');
|
|
72
80
|
}
|
|
73
81
|
export function snakeAndCamelCaseToTitleCase(str) {
|
|
74
|
-
if (!str) {
|
|
82
|
+
if (!str || typeof str !== 'string') {
|
|
83
|
+
console.log('str', str, typeof str);
|
|
75
84
|
return str;
|
|
76
85
|
}
|
|
77
86
|
if (str.includes('_')) {
|
|
@@ -11,13 +11,14 @@ type Props = {
|
|
|
11
11
|
start: Date;
|
|
12
12
|
end: Date;
|
|
13
13
|
};
|
|
14
|
+
databaseType?: string;
|
|
14
15
|
};
|
|
15
16
|
export declare const DATE_FORMAT_TYPES: string[];
|
|
16
17
|
export declare const NUMBER_FORMAT_TYPES: string[];
|
|
17
18
|
/**
|
|
18
19
|
* Pretty-prints the given values to their nice-looking string form.
|
|
19
20
|
*/
|
|
20
|
-
export declare const valueFormatter: ({ value, field, fields, dateRange, }: Props) => string;
|
|
21
|
+
export declare const valueFormatter: ({ value, field, fields, dateRange, databaseType, }: Props) => string;
|
|
21
22
|
export declare const quillFormat: ({ value, format, }: {
|
|
22
23
|
value: any;
|
|
23
24
|
format: string;
|