@quillsql/react 2.13.35 → 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 +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.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 +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/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/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/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/cjs/utils/report.js
CHANGED
|
@@ -155,7 +155,7 @@ async function processReportResponse({ resp, client, filters, dateBucket, additi
|
|
|
155
155
|
(0, dataProcessing_1.parseValueFromBigQueryDates)(dashboardItem.compareRows, resp.fields);
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
|
-
const reportInfo = await (0, dashboard_1.cleanDashboardItem)(dashboardItem, filters, client, dateBucket);
|
|
158
|
+
const reportInfo = await (0, dashboard_1.cleanDashboardItem)(dashboardItem, filters, client, dateBucket, additionalProcessing);
|
|
159
159
|
if (additionalProcessing) {
|
|
160
160
|
reportInfo.pagination = additionalProcessing.page;
|
|
161
161
|
reportInfo.sort = additionalProcessing.sort;
|
|
@@ -296,7 +296,7 @@ function convertInternalReportToReport(report, dashboardFilters, initiator) {
|
|
|
296
296
|
}
|
|
297
297
|
return {
|
|
298
298
|
...col,
|
|
299
|
-
format: report.pivot?.valueFieldType || 'whole_number',
|
|
299
|
+
format: report.pivot?.valueFieldType || col.format || 'whole_number',
|
|
300
300
|
};
|
|
301
301
|
}) ?? report.columns;
|
|
302
302
|
rows = (0, exports.formatRowsFromReport)({ rows, columns });
|
|
@@ -313,7 +313,11 @@ function convertInternalReportToReport(report, dashboardFilters, initiator) {
|
|
|
313
313
|
rows: rows,
|
|
314
314
|
yAxisFields: (0, columnProcessing_1.getYAxisFields)(report, dashboardFilters),
|
|
315
315
|
columns: columns,
|
|
316
|
-
rowCount:
|
|
316
|
+
rowCount: report.chartType === 'table'
|
|
317
|
+
? (report.pivotRowCount ?? report.rowCount)
|
|
318
|
+
: rows
|
|
319
|
+
? rows.length
|
|
320
|
+
: 0,
|
|
317
321
|
};
|
|
318
322
|
}
|
|
319
323
|
let rows = report.rows;
|
|
@@ -333,7 +337,7 @@ function convertInternalReportToReport(report, dashboardFilters, initiator) {
|
|
|
333
337
|
return exports.EMPTY_REPORT;
|
|
334
338
|
}
|
|
335
339
|
}
|
|
336
|
-
const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName) => {
|
|
340
|
+
const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }) => {
|
|
337
341
|
let newRows = [];
|
|
338
342
|
let newColumns = [];
|
|
339
343
|
let newRowCount = 0;
|
|
@@ -350,7 +354,7 @@ const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, client,
|
|
|
350
354
|
table = tables[0] ? tables[0] : '';
|
|
351
355
|
const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
|
|
352
356
|
if (!table || !tableInfo) {
|
|
353
|
-
throw new Error('No table found
|
|
357
|
+
throw new Error('No table found');
|
|
354
358
|
}
|
|
355
359
|
const tableData = await (0, tableProcessing_1.fetchTableByAST)({ ...baseAst, where: formData }, client, tenants, processing ?? { page: paginationProcessing_1.DEFAULT_PAGINATION }, undefined, skipRowCount, undefined, dashboardName);
|
|
356
360
|
if (tableData.error) {
|
|
@@ -418,8 +422,9 @@ const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, client,
|
|
|
418
422
|
if (rowFieldDateRange) {
|
|
419
423
|
dateBucket = (0, dates_1.getDateBucketFromRange)(rowFieldDateRange.dateRange);
|
|
420
424
|
}
|
|
421
|
-
if (!Object.values(relevantInfo.uniqueStrings[table] ?? {}).length ||
|
|
422
|
-
|
|
425
|
+
if (!Object.values(relevantInfo.uniqueStrings[table] ?? {}).length ||
|
|
426
|
+
!(0, fast_deep_equal_1.default)(formData, previousFormData)) {
|
|
427
|
+
relevantInfo.uniqueStrings[table] = await (0, tableProcessing_1.getUniqueStringValues)(tableInfo.columns.filter((column) => column.field === pivot?.columnField), table, client, tenants, customFields, undefined, undefined, query ? query : (report?.queryString ?? ''));
|
|
423
428
|
}
|
|
424
429
|
newPivotData = await (0, PivotModal_1.generatePivotTable)({
|
|
425
430
|
pivot,
|
|
@@ -429,6 +434,7 @@ const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, client,
|
|
|
429
434
|
uniqueValues: relevantInfo.uniqueStrings[table],
|
|
430
435
|
dashboardName,
|
|
431
436
|
tenants,
|
|
437
|
+
additionalProcessing: processing,
|
|
432
438
|
});
|
|
433
439
|
newPivot = pivot;
|
|
434
440
|
}
|
|
@@ -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/cjs/utils/schema.js
CHANGED
|
@@ -1,36 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getSchemaInfo = exports.getCustomFieldInfo = void 0;
|
|
4
4
|
const columnProcessing_1 = require("./columnProcessing");
|
|
5
|
-
// const triggerSoftUpdate = async (
|
|
6
|
-
// client: QuillProviderClient,
|
|
7
|
-
// tables: Table[],
|
|
8
|
-
// ) => {
|
|
9
|
-
// const { queryEndpoint, queryHeaders, publicKey, withCredentials } = client;
|
|
10
|
-
// tables.forEach(async (table: Table) => {
|
|
11
|
-
// // if (table.isSelectStar) {
|
|
12
|
-
// fetch(`${queryEndpoint}?update-view`, {
|
|
13
|
-
// method: 'POST',
|
|
14
|
-
// headers: {
|
|
15
|
-
// ...queryHeaders,
|
|
16
|
-
// 'Content-Type': 'application/json',
|
|
17
|
-
// },
|
|
18
|
-
// credentials: withCredentials ? 'include' : 'omit',
|
|
19
|
-
// body: JSON.stringify({
|
|
20
|
-
// metadata: {
|
|
21
|
-
// preQueries: [table.viewQuery.replace(/;/, '')],
|
|
22
|
-
// clientId: publicKey,
|
|
23
|
-
// publicKey: publicKey,
|
|
24
|
-
// task: 'update-view',
|
|
25
|
-
// name: table.name,
|
|
26
|
-
// id: table._id,
|
|
27
|
-
// runQueryConfig: { getColumns: true },
|
|
28
|
-
// },
|
|
29
|
-
// }),
|
|
30
|
-
// });
|
|
31
|
-
// // }
|
|
32
|
-
// });
|
|
33
|
-
// };
|
|
34
5
|
const parseResponse = (results) => {
|
|
35
6
|
if (results.data?.data) {
|
|
36
7
|
if (results.data.data.queries &&
|
|
@@ -117,7 +88,7 @@ const getCustomFieldInfo = async (client, caller = 'se') => {
|
|
|
117
88
|
return customFieldsByTableUnique;
|
|
118
89
|
};
|
|
119
90
|
exports.getCustomFieldInfo = getCustomFieldInfo;
|
|
120
|
-
const
|
|
91
|
+
const getSchemaInfo = async (client, caller = 'se', tableIds) => {
|
|
121
92
|
const { queryEndpoint, queryHeaders, publicKey, withCredentials, } = client;
|
|
122
93
|
// TODO: Make custom fields work
|
|
123
94
|
// let customFieldsByTableUnique: any[] = [];
|
|
@@ -164,7 +135,7 @@ const getSchemaInfoWithCustomFields = async (client, caller = 'se', tableIds) =>
|
|
|
164
135
|
customFieldsByTable: [],
|
|
165
136
|
};
|
|
166
137
|
};
|
|
167
|
-
exports.
|
|
138
|
+
exports.getSchemaInfo = getSchemaInfo;
|
|
168
139
|
// Used to convert backend data to front end data
|
|
169
140
|
function convertSchemaInfoToTable(schemaData) {
|
|
170
141
|
const tables = [];
|
|
@@ -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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"}
|
|
@@ -9,6 +9,7 @@ const dataProcessing_1 = require("./dataProcessing");
|
|
|
9
9
|
const dates_1 = require("./dates");
|
|
10
10
|
const errorProcessing_1 = require("./errorProcessing");
|
|
11
11
|
const paginationProcessing_1 = require("./paginationProcessing");
|
|
12
|
+
const pivotConstructor_1 = require("./pivotConstructor");
|
|
12
13
|
const queryConstructor_1 = require("./queryConstructor");
|
|
13
14
|
const hasColumnAlias = (columns, referencedColumns) => {
|
|
14
15
|
if (!referencedColumns) {
|
|
@@ -62,6 +63,9 @@ const getUniqueValuesByColumns = async (columns, query, rows, client, tenants, c
|
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
else {
|
|
66
|
+
if (stringNames.length === 0) {
|
|
67
|
+
return {};
|
|
68
|
+
}
|
|
65
69
|
const distinctValueQuery = (0, queryConstructor_1.generateDistinctQuery)(stringNames, query, client.databaseType);
|
|
66
70
|
const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client, tenants, customFields, filters, dashboardName);
|
|
67
71
|
if (!distinctStrings) {
|
|
@@ -79,7 +83,7 @@ const getUniqueStringValues = async (columns, tableName, client, tenants, custom
|
|
|
79
83
|
return (0, columnProcessing_1.isStringType)(column.fieldType);
|
|
80
84
|
});
|
|
81
85
|
const stringNames = convertedStringColumns.map((column) => (0, queryConstructor_1.processColumnReference)(column.field, client.databaseType));
|
|
82
|
-
const { filteredColumns: smallStringColumns, exceededColumns } =
|
|
86
|
+
const { filteredColumns: smallStringColumns, exceededColumns } = stringNames.length > 0
|
|
83
87
|
? await (0, exports.getCountsByColumns)(convertedStringColumns, query || `Select ${stringNames.join(', ')} from ${tableName}`, client, tenants, customFields ?? [], dashboardName)
|
|
84
88
|
: { filteredColumns: [], exceededColumns: undefined };
|
|
85
89
|
const smallStringNames = smallStringColumns.map((column) => (0, queryConstructor_1.processColumnReference)(column.field, client.databaseType));
|
|
@@ -216,13 +220,24 @@ const fetchDistinctStrings = async (query, client, tenants, customFields, filter
|
|
|
216
220
|
// This function is used in ReportBuilder and PivotModal to fetch distinct values. However, neither PivotModal or FilterModal
|
|
217
221
|
// are currently built to handle null values (FilterModal uses SQL IN, which doesn't handle null values). For now, filtering
|
|
218
222
|
// out null values.
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
223
|
+
// as of 1/15, we are getting mssql distinct values as a delimited string due to node-sql-parser limitations
|
|
224
|
+
const values = typeof columnInfo.string_values === 'string'
|
|
225
|
+
? columnInfo.string_values
|
|
226
|
+
.split(',')
|
|
227
|
+
.reduce((result, value) => {
|
|
228
|
+
if (value !== null && value !== undefined) {
|
|
229
|
+
// TODO: handle null values rather than filtering out
|
|
230
|
+
result[value] = false;
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}, {})
|
|
234
|
+
: columnInfo.string_values.reduce((result, value) => {
|
|
235
|
+
if (value !== null && value !== undefined) {
|
|
236
|
+
// TODO: handle null values rather than filtering out
|
|
237
|
+
result[value] = false;
|
|
238
|
+
}
|
|
239
|
+
return result;
|
|
240
|
+
}, {});
|
|
226
241
|
return { column, values };
|
|
227
242
|
});
|
|
228
243
|
return results;
|
|
@@ -273,96 +288,133 @@ const fetchQueryDateRanges = async (query, client, tenants, customFields, dashbo
|
|
|
273
288
|
};
|
|
274
289
|
const getPaginatedRows = async (client, tenants, query, reportId, processing, filters, customFields, dashboardName) => {
|
|
275
290
|
if (query) {
|
|
276
|
-
return await (0, exports.fetchResultsByQuery)(
|
|
291
|
+
return await (0, exports.fetchResultsByQuery)({
|
|
292
|
+
query,
|
|
293
|
+
client,
|
|
294
|
+
tenants,
|
|
295
|
+
processing,
|
|
296
|
+
customFields,
|
|
297
|
+
filters,
|
|
298
|
+
dashboardName,
|
|
299
|
+
});
|
|
277
300
|
}
|
|
278
301
|
else if (reportId) {
|
|
279
|
-
return await (0, exports.fetchResultsByReport)(
|
|
302
|
+
return await (0, exports.fetchResultsByReport)({
|
|
303
|
+
reportId,
|
|
304
|
+
client,
|
|
305
|
+
tenants,
|
|
306
|
+
processing,
|
|
307
|
+
filters,
|
|
308
|
+
customFields,
|
|
309
|
+
});
|
|
280
310
|
}
|
|
281
311
|
return { rows: [], columns: [] };
|
|
282
312
|
};
|
|
283
313
|
exports.getPaginatedRows = getPaginatedRows;
|
|
284
314
|
// TODO: Move these to call through the sdk
|
|
285
|
-
const fetchResultsByQuery = async (query, client, tenants, processing, customFields, filters, dateField, rowsOnly, rowCountOnly, filterMap, dashboardName) => {
|
|
315
|
+
const fetchResultsByQuery = async ({ query, client, tenants, processing, customFields, filters, dateField, rowsOnly, rowCountOnly, filterMap, dashboardName, pivot, getPivotRowCount = true, comparisonQuery, }) => {
|
|
286
316
|
let rows = [];
|
|
287
317
|
let columns = [];
|
|
288
318
|
let error = undefined;
|
|
289
319
|
let rowCount = undefined;
|
|
290
320
|
let itemQuery = undefined;
|
|
291
321
|
try {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
databaseType: client?.databaseType,
|
|
299
|
-
getCustomFields: !!tenants?.length,
|
|
300
|
-
customFieldsByTable: customFields,
|
|
322
|
+
if (pivot) {
|
|
323
|
+
const pivotData = await (0, pivotConstructor_1.generatePivotWithSQL)({
|
|
324
|
+
pivot,
|
|
325
|
+
client,
|
|
326
|
+
pivotQuery: query,
|
|
327
|
+
comparisonPivotQuery: comparisonQuery,
|
|
301
328
|
additionalProcessing: processing,
|
|
302
|
-
|
|
303
|
-
useNewNodeSql: true,
|
|
304
|
-
filters: filters?.map((filter) => ({ ...filter, options: undefined })),
|
|
305
|
-
dateField: dateField ?? undefined,
|
|
306
|
-
rowsOnly,
|
|
307
|
-
rowCountOnly,
|
|
308
|
-
dashboardName: dashboardName && tenants ? dashboardName : undefined,
|
|
309
|
-
tenants: dashboardName && tenants ? tenants : undefined,
|
|
310
|
-
},
|
|
311
|
-
};
|
|
312
|
-
const cloudBody = { query };
|
|
313
|
-
let parsedSuccessfully = true;
|
|
314
|
-
let parsingError = '';
|
|
315
|
-
if (!rowCountOnly) {
|
|
316
|
-
const localURL = `${constants_1.QUILL_SERVER}/astify`;
|
|
317
|
-
const response = await fetch(localURL, {
|
|
318
|
-
method: 'POST',
|
|
319
|
-
headers: {
|
|
320
|
-
'Content-Type': 'application/json',
|
|
321
|
-
},
|
|
322
|
-
body: JSON.stringify({
|
|
323
|
-
query,
|
|
324
|
-
publicKey: client.publicKey,
|
|
325
|
-
useNewNodeSql: true,
|
|
326
|
-
}),
|
|
329
|
+
getPivotRowCount,
|
|
327
330
|
});
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
const resp = await (0, dataFetcher_1.getData)(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
|
|
335
|
-
if (resp && resp.errorMessage) {
|
|
336
|
-
throw new Error(resp.errorMessage);
|
|
337
|
-
}
|
|
338
|
-
if (resp.rowCount !== undefined) {
|
|
339
|
-
rowCount = resp.rowCount;
|
|
331
|
+
rows = pivotData.rows;
|
|
332
|
+
columns = pivotData.columns;
|
|
333
|
+
rowCount = pivotData.rowCount;
|
|
334
|
+
itemQuery = pivotData.comparisonPivotQuery
|
|
335
|
+
? [pivotData.pivotQuery, pivotData.comparisonPivotQuery]
|
|
336
|
+
: [pivotData.pivotQuery];
|
|
340
337
|
}
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
338
|
+
else {
|
|
339
|
+
const hostedBody = {
|
|
340
|
+
metadata: {
|
|
341
|
+
query,
|
|
342
|
+
task: 'query',
|
|
343
|
+
filterMap,
|
|
344
|
+
clientId: client.publicKey,
|
|
345
|
+
databaseType: client?.databaseType,
|
|
346
|
+
getCustomFields: !!tenants?.length,
|
|
347
|
+
customFieldsByTable: customFields,
|
|
348
|
+
additionalProcessing: processing,
|
|
349
|
+
useUpdatedDataGathering: processing ? true : false,
|
|
350
|
+
useNewNodeSql: true,
|
|
351
|
+
filters: filters?.map((filter) => ({
|
|
352
|
+
...filter,
|
|
353
|
+
options: undefined,
|
|
354
|
+
})),
|
|
355
|
+
dateField: dateField ?? undefined,
|
|
356
|
+
rowsOnly,
|
|
357
|
+
rowCountOnly,
|
|
358
|
+
dashboardName: dashboardName && tenants ? dashboardName : undefined,
|
|
359
|
+
tenants: dashboardName && tenants ? tenants : undefined,
|
|
346
360
|
},
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
361
|
+
};
|
|
362
|
+
const cloudBody = { query };
|
|
363
|
+
let parsedSuccessfully = true;
|
|
364
|
+
let parsingError = '';
|
|
365
|
+
if (!rowCountOnly) {
|
|
366
|
+
const localURL = `${constants_1.QUILL_SERVER}/astify`;
|
|
367
|
+
const response = await fetch(localURL, {
|
|
368
|
+
method: 'POST',
|
|
369
|
+
headers: {
|
|
370
|
+
'Content-Type': 'application/json',
|
|
371
|
+
},
|
|
372
|
+
body: JSON.stringify({
|
|
350
373
|
query,
|
|
351
|
-
|
|
352
|
-
|
|
374
|
+
publicKey: client.publicKey,
|
|
375
|
+
useNewNodeSql: true,
|
|
376
|
+
}),
|
|
377
|
+
});
|
|
378
|
+
const results = await response.json();
|
|
379
|
+
if (results.success == false) {
|
|
380
|
+
parsedSuccessfully = false;
|
|
381
|
+
parsingError = results.message;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
const resp = await (0, dataFetcher_1.getData)(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
|
|
385
|
+
if (resp && resp.errorMessage) {
|
|
386
|
+
throw new Error(resp.errorMessage);
|
|
387
|
+
}
|
|
388
|
+
if (resp.rowCount !== undefined) {
|
|
389
|
+
rowCount = resp.rowCount;
|
|
390
|
+
}
|
|
391
|
+
if (!resp.error && !parsedSuccessfully) {
|
|
392
|
+
fetch(`${constants_1.QUILL_SERVER}${constants_1.QUILL_QUERY_ENDPOINT}`, {
|
|
393
|
+
method: 'POST',
|
|
394
|
+
headers: {
|
|
395
|
+
'Content-Type': 'application/json',
|
|
353
396
|
},
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
397
|
+
body: JSON.stringify({
|
|
398
|
+
metadata: {
|
|
399
|
+
task: 'log-broken-query',
|
|
400
|
+
query,
|
|
401
|
+
clientId: client.clientId,
|
|
402
|
+
error: parsingError,
|
|
403
|
+
},
|
|
404
|
+
}),
|
|
405
|
+
});
|
|
406
|
+
throw new Error('Quill parsing error' +
|
|
407
|
+
parsingError.replace(`Error parsing query`, ''));
|
|
408
|
+
}
|
|
409
|
+
columns = resp.fields.map((elem) => (0, columnProcessing_1.convertPostgresColumn)(elem));
|
|
410
|
+
rows = resp.rows;
|
|
411
|
+
itemQuery = resp.itemQuery;
|
|
357
412
|
}
|
|
358
|
-
columns = resp.fields.map((elem) => (0, columnProcessing_1.convertPostgresColumn)(elem));
|
|
359
|
-
rows = resp.rows;
|
|
360
|
-
itemQuery = resp.itemQuery;
|
|
361
413
|
}
|
|
362
414
|
catch (e) {
|
|
363
415
|
rows = [];
|
|
364
416
|
columns = [];
|
|
365
|
-
error = e.message;
|
|
417
|
+
error = e.message || e;
|
|
366
418
|
}
|
|
367
419
|
if (client.databaseType && client.databaseType.toLowerCase() === 'bigquery') {
|
|
368
420
|
(0, dataProcessing_1.parseValueFromBigQueryDates)(rows, columns);
|
|
@@ -370,7 +422,20 @@ const fetchResultsByQuery = async (query, client, tenants, processing, customFie
|
|
|
370
422
|
return { rows, columns, rowCount, error, itemQuery };
|
|
371
423
|
};
|
|
372
424
|
exports.fetchResultsByQuery = fetchResultsByQuery;
|
|
373
|
-
const fetchResultsByReport = async (reportId, client, tenants, processing, filters, customFields, rowsOnly, rowCountOnly, abortSignal) => {
|
|
425
|
+
const fetchResultsByReport = async ({ reportId, client, tenants, processing, filters, customFields, rowsOnly, rowCountOnly, abortSignal, pivot, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, }) => {
|
|
426
|
+
if (pivot && pivotQuery) {
|
|
427
|
+
return (0, exports.fetchResultsByQuery)({
|
|
428
|
+
query: pivotQuery,
|
|
429
|
+
comparisonQuery: comparisonPivotQuery,
|
|
430
|
+
client,
|
|
431
|
+
tenants,
|
|
432
|
+
processing,
|
|
433
|
+
customFields,
|
|
434
|
+
filters,
|
|
435
|
+
pivot,
|
|
436
|
+
getPivotRowCount,
|
|
437
|
+
});
|
|
438
|
+
}
|
|
374
439
|
const updatedProcessing = { ...processing };
|
|
375
440
|
let rows = [];
|
|
376
441
|
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"}
|
|
@@ -31,6 +31,8 @@ function matchCasing(text, template) {
|
|
|
31
31
|
const isAllUpperCase = (str) => /^[A-Z]+$/.test(str);
|
|
32
32
|
// Detect capitalized (first letter uppercase, rest lowercase)
|
|
33
33
|
const isCapitalized = (str) => /^[A-Z][a-z]*$/.test(str);
|
|
34
|
+
// Detect SCREAMING_SNAKE_CASE (Snowflake)
|
|
35
|
+
const isScreamingSnakeCase = (str) => /^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$/.test(str);
|
|
34
36
|
// Function to convert to TitleCase
|
|
35
37
|
const toTitleCase = (str) => str.toLowerCase().replace(/\b\w/g, (char) => char.toUpperCase());
|
|
36
38
|
// Function to convert to camelCase
|
|
@@ -43,6 +45,9 @@ function matchCasing(text, template) {
|
|
|
43
45
|
const toUpperCase = (str) => str.toUpperCase();
|
|
44
46
|
// Function to convert to capitalized (first letter uppercase, rest lowercase)
|
|
45
47
|
const toCapitalized = (str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
|
|
48
|
+
const toScreamingSnakeCase = (str) => str.replace(/([A-Z])/g, '_$1') // Add underscore before capitals
|
|
49
|
+
.replace(/^_/, '') // Remove leading underscore if present
|
|
50
|
+
.toUpperCase(); // Convert everything to uppercase
|
|
46
51
|
// Match casing of the template and apply to the text
|
|
47
52
|
if (isTitleCase(template)) {
|
|
48
53
|
return toTitleCase(text);
|
|
@@ -62,6 +67,9 @@ function matchCasing(text, template) {
|
|
|
62
67
|
else if (isCapitalized(template)) {
|
|
63
68
|
return toCapitalized(text);
|
|
64
69
|
}
|
|
70
|
+
else if (isScreamingSnakeCase(template)) {
|
|
71
|
+
return toScreamingSnakeCase(text);
|
|
72
|
+
}
|
|
65
73
|
else {
|
|
66
74
|
return text; // Default case if no specific pattern is detected
|
|
67
75
|
}
|
|
@@ -79,7 +87,8 @@ function snakeCaseToTitleCase(str) {
|
|
|
79
87
|
.join(' ');
|
|
80
88
|
}
|
|
81
89
|
function snakeAndCamelCaseToTitleCase(str) {
|
|
82
|
-
if (!str) {
|
|
90
|
+
if (!str || typeof str !== 'string') {
|
|
91
|
+
console.log('str', str, typeof str);
|
|
83
92
|
return str;
|
|
84
93
|
}
|
|
85
94
|
if (str.includes('_')) {
|