@quillsql/react 2.12.3 → 2.12.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +192 -72
- package/dist/cjs/ChartBuilder.d.ts +24 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +43 -36
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +97 -41
- package/dist/cjs/Context.d.ts +1 -0
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +59 -30
- package/dist/cjs/Dashboard.d.ts +22 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +2 -2
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +47 -80
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +13 -27
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +3 -3
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +9 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +146 -112
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +29 -11
- package/dist/cjs/components/QuillTable.d.ts +15 -2
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +58 -29
- package/dist/cjs/components/UiComponents.d.ts +11 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +48 -4
- package/dist/cjs/hooks/useExport.d.ts +2 -1
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +44 -9
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +2 -0
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +2 -1
- package/dist/cjs/utils/csv.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +2 -0
- package/dist/cjs/utils/pivotProcessing.d.ts +2 -6
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +31 -28
- package/dist/cjs/utils/schema.d.ts +6 -0
- package/dist/cjs/utils/schema.d.ts.map +1 -0
- package/dist/cjs/utils/schema.js +122 -0
- package/dist/cjs/utils/tableProcessing.d.ts +1 -1
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +5 -3
- package/dist/cjs/utils/valueFormatter.js +1 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +193 -73
- package/dist/esm/ChartBuilder.d.ts +24 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +43 -36
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +98 -42
- package/dist/esm/Context.d.ts +1 -0
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +58 -29
- package/dist/esm/Dashboard.d.ts +22 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +2 -2
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +50 -83
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +15 -29
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +4 -4
- package/dist/esm/components/Dashboard/DataLoader.d.ts +9 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +147 -113
- package/dist/esm/components/Dashboard/TableComponent.d.ts +1 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +30 -12
- package/dist/esm/components/QuillTable.d.ts +15 -2
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +58 -26
- package/dist/esm/components/UiComponents.d.ts +11 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +47 -4
- package/dist/esm/hooks/useExport.d.ts +2 -1
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +44 -9
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +3 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +3 -2
- package/dist/esm/utils/csv.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +2 -0
- package/dist/esm/utils/pivotProcessing.d.ts +2 -6
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +31 -28
- package/dist/esm/utils/schema.d.ts +6 -0
- package/dist/esm/utils/schema.d.ts.map +1 -0
- package/dist/esm/utils/schema.js +117 -0
- package/dist/esm/utils/tableProcessing.d.ts +1 -1
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +5 -3
- package/dist/esm/utils/valueFormatter.js +1 -1
- package/package.json +1 -1
|
@@ -40,6 +40,7 @@ const dataFetcher_2 = require("./utils/dataFetcher");
|
|
|
40
40
|
const columnProcessing_1 = require("./utils/columnProcessing");
|
|
41
41
|
const astProcessing_1 = require("./utils/astProcessing");
|
|
42
42
|
const PivotForm_1 = __importDefault(require("./internals/ReportBuilder/PivotForm"));
|
|
43
|
+
const schema_1 = require("./utils/schema");
|
|
43
44
|
exports.QUILL_SERVER = (typeof process !== 'undefined' && process?.env?.QUILL_SERVER_HOST) ||
|
|
44
45
|
'https://quill-344421.uc.r.appspot.com';
|
|
45
46
|
/**
|
|
@@ -73,7 +74,7 @@ exports.QUILL_SERVER = (typeof process !== 'undefined' && process?.env?.QUILL_SE
|
|
|
73
74
|
* ### Report Builder API
|
|
74
75
|
* @see https://docs.quillsql.com/components/report-builder
|
|
75
76
|
*/
|
|
76
|
-
function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void null, onSubmitCreateReport = (_) => void null, destinationDashboard = undefined, organizationName = '', ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, ModalComponent = UiComponents_1.MemoizedModal, TextInputComponent = UiComponents_2.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, TableComponent = UiComponents_1.
|
|
77
|
+
function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void null, onSubmitCreateReport = (_) => void null, destinationDashboard = undefined, organizationName = '', ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, ModalComponent = UiComponents_1.MemoizedModal, TextInputComponent = UiComponents_2.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, TableComponent = UiComponents_1.QuillTableSQLEditorComponent, PopoverComponent = UiComponents_1.MemoizedPopover, TabsComponent = UiComponents_1.QuillTabs, CheckboxComponent = UiComponents_1.MemoizedCheckbox, SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer, SelectColumnComponent = ui_1.QuillSelectColumn, DraggableColumnComponent = ui_1.QuillDraggableColumn, SidebarHeadingComponent = ui_1.QuillSidebarHeading, FilterPopoverComponent = ui_1.QuillFilterPopover, SortPopoverComponent = ui_1.QuillSortPopover, LimitPopoverComponent = ui_1.QuillLimitPopover, CardComponent = QuillCard_1.QuillCard, LabelComponent = UiComponents_1.MemoizedLabel, HeaderComponent = UiComponents_1.MemoizedHeader, SubHeaderComponent = UiComponents_1.MemoizedSubHeader, TextComponent = UiComponents_1.MemoizedText, ErrorMessageComponent = UiComponents_1.QuillErrorMessageComponent, ChartBuilderInputRowContainer = UiComponents_1.QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = UiComponents_1.QuillChartBuilderInputColumnContainer, PivotRowContainer = UiComponents_1.QuillPivotRowContainer, PivotColumnContainer = UiComponents_1.QuillPivotColumnContainer, LoadingComponent = UiComponents_1.QuillLoadingComponent, ColumnSearchEmptyState = UiComponents_1.QuillColumnSearchEmptyState, ChartBuilderFormContainer = UiComponents_1.QuillChartBuilderFormContainer, ChartBuilderModalComponent = UiComponents_1.MemoizedModal, isAdminEnabled = false, isAIEnabled = true, showChartBuilderTableFormatOptions = true, containerStyle, className, pivotRecommendationsEnabled = true, reportId, hideCopySQL = true, isChartBuilderHorizontalView = true, }) {
|
|
77
78
|
const { data: report } = (0, useQuill_1.useQuill)(reportId || '');
|
|
78
79
|
const [aiPrompt, setAiPrompt] = (0, react_1.useState)('');
|
|
79
80
|
const [errorMessage, setErrorMessage] = (0, react_1.useState)('');
|
|
@@ -82,7 +83,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
82
83
|
const [orderedColumnNames, setOrderedColumnNames] = (0, react_1.useState)([]);
|
|
83
84
|
const [selectedColumns, setSelectedColumns] = (0, react_1.useState)([]);
|
|
84
85
|
const [selectedOrderedColumns, setSelectedOrderedColumns] = (0, react_1.useState)([]);
|
|
85
|
-
const [
|
|
86
|
+
const [schema, setSchema] = (0, react_1.useContext)(Context_1.SchemaContext);
|
|
86
87
|
const [activeQuery, setActiveQuery] = (0, react_1.useState)('');
|
|
87
88
|
const [activeEditItem, setActiveEditItem] = (0, react_1.useState)(null);
|
|
88
89
|
const [activePath, setActivePath] = (0, react_1.useState)(null);
|
|
@@ -125,11 +126,15 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
125
126
|
const [client, _setClient] = (0, react_1.useContext)(Context_1.ClientContext);
|
|
126
127
|
// JANK: This is temp and stupid
|
|
127
128
|
const [overrideRecommendations, setOverrideRecommendations] = (0, react_1.useState)(true);
|
|
129
|
+
const [customFields, setCustomFields] = (0, react_1.useContext)(Context_1.CustomFieldContext);
|
|
128
130
|
(0, react_1.useEffect)(() => {
|
|
129
131
|
if (client.publicKey === '663416663aa9bc716e59a89d') {
|
|
130
132
|
setOverrideRecommendations(false);
|
|
131
133
|
}
|
|
132
|
-
|
|
134
|
+
if (!loadingSchema) {
|
|
135
|
+
fetchSchema();
|
|
136
|
+
}
|
|
137
|
+
}, [client.publicKey, client.customerId]);
|
|
133
138
|
(0, react_1.useEffect)(() => {
|
|
134
139
|
(0, width_1.updateFirstChildWidth)(askAIContainerRef, setAskAIInputWidth, { gap: 12 });
|
|
135
140
|
(0, width_1.updateFirstChildWidth)(askAILoadingContainerRef, setAskAILoadingContainerWidth, { gap: 12 });
|
|
@@ -195,8 +200,6 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
195
200
|
setBaseAst(null);
|
|
196
201
|
setFormData(null);
|
|
197
202
|
setSelectedColumns([]);
|
|
198
|
-
setSchemaTables([]);
|
|
199
|
-
setOrderedColumnNames([]);
|
|
200
203
|
setActiveQuery('');
|
|
201
204
|
setActiveEditItem(null);
|
|
202
205
|
setActivePath(null);
|
|
@@ -284,6 +287,15 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
284
287
|
}
|
|
285
288
|
return current;
|
|
286
289
|
};
|
|
290
|
+
const copySQLToClipboard = () => {
|
|
291
|
+
let query = activeQuery;
|
|
292
|
+
if (pivot) {
|
|
293
|
+
query = (0, pivotProcessing_1.pivotToSql)(pivot, activeQuery, columns);
|
|
294
|
+
}
|
|
295
|
+
setIsCopying(true);
|
|
296
|
+
navigator.clipboard.writeText(query);
|
|
297
|
+
setTimeout(() => setIsCopying(false), 800);
|
|
298
|
+
};
|
|
287
299
|
const copyToClipboard = (str) => {
|
|
288
300
|
setIsCopying(true);
|
|
289
301
|
navigator.clipboard.writeText(str);
|
|
@@ -368,40 +380,6 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
368
380
|
result.push(valueField, rowField);
|
|
369
381
|
return result.filter(Boolean);
|
|
370
382
|
};
|
|
371
|
-
const fetchDistinctStrings = async (query, table) => {
|
|
372
|
-
try {
|
|
373
|
-
const hostedBody = {
|
|
374
|
-
metadata: {
|
|
375
|
-
query,
|
|
376
|
-
task: 'query',
|
|
377
|
-
orgId: client.customerId || '*',
|
|
378
|
-
clientId: client.publicKey,
|
|
379
|
-
databaseType: client?.databaseType,
|
|
380
|
-
},
|
|
381
|
-
};
|
|
382
|
-
const cloudBody = { query };
|
|
383
|
-
const data = await (0, dataFetcher_1.getData)(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
|
|
384
|
-
if (data.errorMessage) {
|
|
385
|
-
return null;
|
|
386
|
-
}
|
|
387
|
-
const results = data.rows.map((columnInfo) => {
|
|
388
|
-
const column = columnInfo.field;
|
|
389
|
-
if (!columnInfo.string_values) {
|
|
390
|
-
return { table, column, values: {} };
|
|
391
|
-
}
|
|
392
|
-
const values = columnInfo.string_values.reduce((result, value) => {
|
|
393
|
-
result[value] = false;
|
|
394
|
-
return result;
|
|
395
|
-
}, {});
|
|
396
|
-
return { table, column, values };
|
|
397
|
-
});
|
|
398
|
-
return results;
|
|
399
|
-
}
|
|
400
|
-
catch (e) {
|
|
401
|
-
console.error(e);
|
|
402
|
-
return null;
|
|
403
|
-
}
|
|
404
|
-
};
|
|
405
383
|
const loadTable = async (tables) => {
|
|
406
384
|
if (!tables)
|
|
407
385
|
return;
|
|
@@ -414,7 +392,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
414
392
|
})
|
|
415
393
|
.map((column) => (0, columnProcessing_1.convertColumnInfoToColumnInternal)(column));
|
|
416
394
|
const stringNames = convertedStringColumns.map((column) => column.field);
|
|
417
|
-
const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(convertedStringColumns, `Select ${stringNames.join(', ')} from ${initialTableName}`, [], client);
|
|
395
|
+
const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(convertedStringColumns, `Select ${stringNames.join(', ')} from ${initialTableName}`, [], client, customFields);
|
|
418
396
|
const joinedUniqueValues = (0, util_1.deepCopy)(uniqueValues);
|
|
419
397
|
joinedUniqueValues[initialTableName] = newUniqueValues;
|
|
420
398
|
if ((0, crypto_1.hashCode)(uniqueValues) !== (0, crypto_1.hashCode)(joinedUniqueValues)) {
|
|
@@ -445,26 +423,10 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
445
423
|
const fetchSchema = async () => {
|
|
446
424
|
try {
|
|
447
425
|
setLoadingSchema(true);
|
|
448
|
-
const
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
'Content-Type': 'application/json',
|
|
453
|
-
},
|
|
454
|
-
body: JSON.stringify({
|
|
455
|
-
metadata: {
|
|
456
|
-
clientId: client.publicKey,
|
|
457
|
-
publicKey: client.publicKey,
|
|
458
|
-
task: 'schema',
|
|
459
|
-
removeCustomerField: true,
|
|
460
|
-
},
|
|
461
|
-
}),
|
|
462
|
-
});
|
|
463
|
-
const results = await response.json();
|
|
464
|
-
// Filter out hidden columns on tables back from schema2.
|
|
465
|
-
const tables = results.data.tables || results.data.data.tables;
|
|
466
|
-
setSchemaTables(tables ?? []);
|
|
467
|
-
setOrderedColumnNames((tables ?? []).flatMap((table) => table.columns
|
|
426
|
+
const { schemaData, customFieldsByTable } = await (0, schema_1.getSchemaInfoWithCustomFields)(client, 'rb');
|
|
427
|
+
setCustomFields(customFieldsByTable);
|
|
428
|
+
setSchema(schemaData ?? []);
|
|
429
|
+
setOrderedColumnNames((schemaData ?? []).flatMap((table) => table.columns
|
|
468
430
|
.map((c) => `${table.name}.${c.name}`)
|
|
469
431
|
.sort((a, b) => {
|
|
470
432
|
const aIsId = a.endsWith('.id') ||
|
|
@@ -482,11 +444,11 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
482
444
|
return 0;
|
|
483
445
|
})));
|
|
484
446
|
if (initialTableName) {
|
|
485
|
-
await loadTable(
|
|
447
|
+
await loadTable(schemaData);
|
|
486
448
|
}
|
|
487
449
|
setLoadingSchema(false);
|
|
488
450
|
setInitialLoad(false);
|
|
489
|
-
return
|
|
451
|
+
return schemaData;
|
|
490
452
|
}
|
|
491
453
|
catch (error) {
|
|
492
454
|
console.error(error);
|
|
@@ -510,7 +472,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
510
472
|
let convertedAst = (0, astProcessing_1.processStarColumn)(ast, report.columns);
|
|
511
473
|
(0, astProcessing_1.processApostrophe)(convertedAst, ['type', 'value']);
|
|
512
474
|
convertedAst = (0, convert_1.convertBigQuery)(convertedAst);
|
|
513
|
-
let schemaInfo =
|
|
475
|
+
let schemaInfo = schema.length !== 0 ? schema : await fetchSchema();
|
|
514
476
|
let newAst, groupByPivot;
|
|
515
477
|
({ ast: newAst, pivot: groupByPivot } = (0, convert_1.convertGroupBy)(convertedAst,
|
|
516
478
|
// @ts-ignore
|
|
@@ -528,7 +490,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
528
490
|
});
|
|
529
491
|
if (stringColumns.length !== 0 && tableName) {
|
|
530
492
|
const stringNames = stringColumns.map((column) => column.field);
|
|
531
|
-
const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(stringColumns, `Select ${stringNames.join(', ')} from ${tableName}`, [], client);
|
|
493
|
+
const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(stringColumns, `Select ${stringNames.join(', ')} from ${tableName}`, [], client, customFields);
|
|
532
494
|
const joinedUniqueValues = (0, util_1.deepCopy)(uniqueValues);
|
|
533
495
|
joinedUniqueValues[tableName] = newUniqueValues;
|
|
534
496
|
setUniqueValues(joinedUniqueValues);
|
|
@@ -567,10 +529,10 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
567
529
|
}
|
|
568
530
|
}, [report]);
|
|
569
531
|
(0, react_1.useEffect)(() => {
|
|
570
|
-
if (
|
|
532
|
+
if (schema.length === 0) {
|
|
571
533
|
fetchSchema();
|
|
572
534
|
}
|
|
573
|
-
}, [
|
|
535
|
+
}, [schema, initialTableName, reportId]);
|
|
574
536
|
const updateFormData = (updates, { isDeletion = false, isInsertion = false, isReplaceSubtree = false, isAddVariant = false, isDeleteVariant = false, topLevelBinOp = 'OR', isCondition = undefined, }) => {
|
|
575
537
|
// Function to immutably update or delete nodes based on their path
|
|
576
538
|
// TODO: fix the following horible code
|
|
@@ -1380,11 +1342,11 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
1380
1342
|
// grab the value of the left child of the column comparison
|
|
1381
1343
|
// operator (ie. the column name)
|
|
1382
1344
|
const leftChildValue = getColumnValueForColumnComparison(node);
|
|
1383
|
-
const column = schemaTables
|
|
1384
|
-
.flatMap((t) => t.columns)
|
|
1385
|
-
.find((col) => col.name === leftChildValue);
|
|
1386
1345
|
const tables = (0, ast_1.getTableNames)(baseAst);
|
|
1387
1346
|
const table = tables.length === 1 ? tables[0] : initialTableName;
|
|
1347
|
+
const column = schema
|
|
1348
|
+
.find((tableInfo) => tableInfo.name === table)
|
|
1349
|
+
?.columns.find((col) => col.name === leftChildValue);
|
|
1388
1350
|
const columnType = column?.fieldType;
|
|
1389
1351
|
let operatorOptions = [
|
|
1390
1352
|
...((0, ast_1.isNumericColumnType)(columnType)
|
|
@@ -1478,7 +1440,9 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
1478
1440
|
}
|
|
1479
1441
|
else {
|
|
1480
1442
|
const columnName = node.left.column;
|
|
1481
|
-
const column =
|
|
1443
|
+
const column = schema
|
|
1444
|
+
.find((tableInfo) => tableInfo.name === currentTable)
|
|
1445
|
+
?.columns.find((col) => col.name === columnName);
|
|
1482
1446
|
const columnType = column?.fieldType;
|
|
1483
1447
|
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1484
1448
|
display: 'flex',
|
|
@@ -1734,7 +1698,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
1734
1698
|
};
|
|
1735
1699
|
const getAllPossibleColumns = () => {
|
|
1736
1700
|
if (!baseAst || !baseAst.from) {
|
|
1737
|
-
return
|
|
1701
|
+
return schema.flatMap((table) => table.columns.map((c) => ({
|
|
1738
1702
|
...c,
|
|
1739
1703
|
table: table.displayName,
|
|
1740
1704
|
})));
|
|
@@ -1743,7 +1707,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
1743
1707
|
// This currently only supports top-level table names in the FROM section
|
|
1744
1708
|
// of queries (eg. FROM "table_name", not "FROM (SELECT * FROM other) AS table_name")
|
|
1745
1709
|
const tableNamesInQuery = baseAst.from.map((tbl) => tbl.table);
|
|
1746
|
-
return
|
|
1710
|
+
return schema
|
|
1747
1711
|
.filter((t) => tableNamesInQuery.includes(t.displayName))
|
|
1748
1712
|
.flatMap((table) => table.columns
|
|
1749
1713
|
.map((c) => ({
|
|
@@ -1814,6 +1778,8 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
1814
1778
|
publicKey: client.publicKey,
|
|
1815
1779
|
orgId: client.customerId,
|
|
1816
1780
|
task: 'patterns',
|
|
1781
|
+
getCustomFields: false,
|
|
1782
|
+
customFields,
|
|
1817
1783
|
},
|
|
1818
1784
|
};
|
|
1819
1785
|
const cloudBody = {};
|
|
@@ -1822,7 +1788,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
1822
1788
|
const tables = (0, ast_1.getTableNames)(baseAst);
|
|
1823
1789
|
const table = tables.length >= 1 ? tables[0] : initialTableName;
|
|
1824
1790
|
if (table !== currentTable) {
|
|
1825
|
-
const tableInfo =
|
|
1791
|
+
const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
|
|
1826
1792
|
if (tableInfo) {
|
|
1827
1793
|
const convertedStringColumns = tableInfo.columns
|
|
1828
1794
|
.filter((column) => {
|
|
@@ -1830,7 +1796,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
1830
1796
|
})
|
|
1831
1797
|
.map((column) => (0, columnProcessing_1.convertColumnInfoToColumnInternal)(column));
|
|
1832
1798
|
const stringNames = convertedStringColumns.map((column) => column.field);
|
|
1833
|
-
const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(convertedStringColumns, `Select ${stringNames.join(', ')} from ${table}`, rows, client);
|
|
1799
|
+
const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(convertedStringColumns, `Select ${stringNames.join(', ')} from ${table}`, rows, client, customFields);
|
|
1834
1800
|
const joinedUniqueValues = (0, util_1.deepCopy)(uniqueValues);
|
|
1835
1801
|
joinedUniqueValues[table] = newUniqueValues;
|
|
1836
1802
|
if ((0, crypto_1.hashCode)(uniqueValues) !== (0, crypto_1.hashCode)(joinedUniqueValues)) {
|
|
@@ -2065,8 +2031,8 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
2065
2031
|
// Unwrap the ast object, supporting many possible types
|
|
2066
2032
|
ast = ast.length ? ast[0] : ast;
|
|
2067
2033
|
newAst = (0, convert_1.convertBigQuery)(ast);
|
|
2068
|
-
newAst = (0, convert_1.convertWildcardColumns)(newAst,
|
|
2069
|
-
({ ast: newAst, pivot: groupByPivot } = (0, convert_1.convertGroupBy)(newAst, pivot,
|
|
2034
|
+
newAst = (0, convert_1.convertWildcardColumns)(newAst, schema); // must go before groupby
|
|
2035
|
+
({ ast: newAst, pivot: groupByPivot } = (0, convert_1.convertGroupBy)(newAst, pivot, schema));
|
|
2070
2036
|
if (groupByPivot && !groupByPivot?.valueField) {
|
|
2071
2037
|
setErrorMessage("Error: Couldn't process your request, please re-word your prompt.");
|
|
2072
2038
|
return;
|
|
@@ -2098,6 +2064,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
2098
2064
|
newAst?.where ? newAst?.where?.operator : 'AND');
|
|
2099
2065
|
}
|
|
2100
2066
|
ast = newAst; // so we fetch data for newAst later.
|
|
2067
|
+
fetchSqlQuery(ast, undefined, false);
|
|
2101
2068
|
const table = (0, ast_1.getTableNames)(newAst)[0] ?? initialTableName;
|
|
2102
2069
|
const tableAlias = (0, ast_1.getTableAliases)(newAst)[0] ?? initialTableName;
|
|
2103
2070
|
const hostedBody = {
|
|
@@ -2113,7 +2080,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
2113
2080
|
const data2 = await (0, dataFetcher_1.getData)(client, 'patterns', 'same-origin', hostedBody, cloudBody);
|
|
2114
2081
|
let currentUniqueValues = uniqueValues;
|
|
2115
2082
|
if (table !== currentTable) {
|
|
2116
|
-
const tableInfo =
|
|
2083
|
+
const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
|
|
2117
2084
|
if (tableInfo) {
|
|
2118
2085
|
const convertedStringColumns = tableInfo.columns
|
|
2119
2086
|
.filter((column) => {
|
|
@@ -2121,7 +2088,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
2121
2088
|
})
|
|
2122
2089
|
.map((column) => (0, columnProcessing_1.convertColumnInfoToColumnInternal)(column));
|
|
2123
2090
|
const stringNames = convertedStringColumns.map((column) => column.field);
|
|
2124
|
-
const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(convertedStringColumns, `Select ${stringNames.join(', ')} from ${table}`, rows, client);
|
|
2091
|
+
const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(convertedStringColumns, `Select ${stringNames.join(', ')} from ${table}`, rows, client, customFields);
|
|
2125
2092
|
currentUniqueValues[table] = newUniqueValues;
|
|
2126
2093
|
if ((0, crypto_1.hashCode)(uniqueValues) !== (0, crypto_1.hashCode)(currentUniqueValues)) {
|
|
2127
2094
|
setUniqueValues(currentUniqueValues);
|
|
@@ -2615,7 +2582,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
2615
2582
|
display: 'flex',
|
|
2616
2583
|
flexDirection: 'row',
|
|
2617
2584
|
gap: '12px',
|
|
2618
|
-
}, children: [(0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } }), !hideCopySQL && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () =>
|
|
2585
|
+
}, children: [(0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } }), !hideCopySQL && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => copySQLToClipboard(), label: isCopying ? '✅ Copied' : 'Copy SQL' })), (0, jsx_runtime_1.jsx)(ButtonComponent, { label: report ? 'Save changes' : 'Add to dashboard', onClick: () => { } })] }))] })] }), (0, jsx_runtime_1.jsx)("style", { children: `body{margin:0;}` })] }));
|
|
2619
2586
|
}
|
|
2620
2587
|
return ((0, jsx_runtime_1.jsxs)("div", { style: { backgroundColor: theme.backgroundColor, ...containerStyle }, className: className, children: [(!isChartBuilderHorizontalView ||
|
|
2621
2588
|
(isChartBuilderHorizontalView && !isChartBuilderOpen)) && ((0, jsx_runtime_1.jsxs)("div", { ref: parentRef, style: {
|
|
@@ -3051,7 +3018,7 @@ function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void
|
|
|
3051
3018
|
overflow: 'hidden',
|
|
3052
3019
|
width: '100%',
|
|
3053
3020
|
gap: 12,
|
|
3054
|
-
}, children: [(0, jsx_runtime_1.jsx)(ErrorMessageComponent, { errorMessage: errorMessage }), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: handleAsk, label: 'Retry' })] })) : ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } })), baseAst && dataDisplayed && !initalChartLoad && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [!hideCopySQL && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: isCopying ? '✅ Copied' : 'Copy SQL', onClick: () =>
|
|
3021
|
+
}, children: [(0, jsx_runtime_1.jsx)(ErrorMessageComponent, { errorMessage: errorMessage }), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: handleAsk, label: 'Retry' })] })) : ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } })), baseAst && dataDisplayed && !initalChartLoad && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [!hideCopySQL && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: isCopying ? '✅ Copied' : 'Copy SQL', onClick: () => copySQLToClipboard() })), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => {
|
|
3055
3022
|
setIsChartBuilderOpen(true);
|
|
3056
3023
|
}, label: report ? 'Save changes' : 'Add to dashboard' })] }))] })] }), (0, jsx_runtime_1.jsx)("style", { children: `body{margin:0;}` })] })), (!isChartBuilderHorizontalView || isChartBuilderOpen) && ((0, jsx_runtime_1.jsx)(ChartBuilder_1.ChartBuilderWithModal, { report: report
|
|
3057
3024
|
? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAMZ,SAAS,EACV,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAMZ,SAAS,EACV,MAAM,OAAO,CAAC;AAgCf,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAsC1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,SAAS,CAAC;KAClB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,SAAS,CAAC;KAClB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;KAChE,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;QACJ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,IAAI,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,EAAE,CAAC;QAC/B,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,QAAQ,EAAE,SAAS,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;KACvB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,SAAS,CAAC;KAC5B,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,yBAAyB;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE3D,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE5D,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE/D,+BAA+B;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE1D;;OAEG;IACH,6BAA6B,CAAC,EAAE,CAAC,KAAK,EAAE;QACtC,QAAQ,EAAE,SAAS,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,gCAAgC,CAAC,EAAE,CAAC,KAAK,EAAE;QACzC,QAAQ,EAAE,SAAS,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEpE;;OAEG;IACH,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEvE;;OAEG;IACH,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE5E;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEzE;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAE9C;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAEzD;;;;;;OAMG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAEvC;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,eAAgC,EAChC,wBAAkD,EAClD,qBAA4C,EAC5C,kBAAmC,EACnC,eAAsC,EACtC,cAA6C,EAC7C,iBAAyB,EACzB,gBAAwC,EACxC,cAA8B,EAC9B,gBAAkC,EAClC,aAAyB,EACzB,cAA8B,EAC9B,eAAgC,EAChC,kBAAsC,EACtC,aAA4B,EAC5B,qBAAkD,EAClD,6BAAkE,EAClE,gCAAwE,EACxE,iBAA0C,EAC1C,oBAAgD,EAChD,yBAA0D,EAC1D,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,qBAA6B,EAC7B,sBAA8B,EAC9B,oBAA4B,EAC5B,wBAAgC,EAChC,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,yBAA8C,EAC9C,MAAkB,EAClB,gBAA4B,EAC5B,4BAAmC,EACnC,cAAoC,EACpC,SAAS,GACV,EAAE,cAAc,2CA0XhB;AA+GD,eAAO,MAAM,mBAAmB;YAQtB,GAAG;WACJ,GAAG;aACD,OAAO;uBACG,GAAG;YACd,GAAG;qBACM,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI;6CA+F3D,CAAC"}
|
package/dist/cjs/SQLEditor.js
CHANGED
|
@@ -19,6 +19,7 @@ const QuillCard_1 = require("./components/QuillCard");
|
|
|
19
19
|
const QuillSelect_1 = require("./components/QuillSelect");
|
|
20
20
|
const valueFormatter_1 = require("./utils/valueFormatter");
|
|
21
21
|
const columnProcessing_1 = require("./utils/columnProcessing");
|
|
22
|
+
const schema_1 = require("./utils/schema");
|
|
22
23
|
function defineEditorTheme(monaco, theme) {
|
|
23
24
|
monaco.editor.defineTheme('onedark', {
|
|
24
25
|
base: theme.darkMode ? 'vs-dark' : 'vs',
|
|
@@ -69,7 +70,7 @@ function setEditorTheme(editor, monaco) {
|
|
|
69
70
|
* ### SQLEditor API
|
|
70
71
|
* @see https://docs.quillsql.com/components/sql-editor
|
|
71
72
|
*/
|
|
72
|
-
function SQLEditor({ ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, TextInputComponent = UiComponents_2.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, TableComponent = UiComponents_1.
|
|
73
|
+
function SQLEditor({ ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, TextInputComponent = UiComponents_2.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, TableComponent = UiComponents_1.QuillTableSQLEditorComponent, isNewQueryEnabled = false, LoadingComponent = UiComponents_1.QuillLoadingComponent, ModalComponent = UiComponents_1.MemoizedModal, PopoverComponent = UiComponents_1.MemoizedPopover, CardComponent = QuillCard_1.QuillCard, LabelComponent = UiComponents_1.MemoizedLabel, HeaderComponent = UiComponents_1.MemoizedHeader, SubHeaderComponent = UiComponents_1.MemoizedSubHeader, TextComponent = UiComponents_1.MemoizedText, ErrorMessageComponent = UiComponents_1.QuillErrorMessageComponent, ChartBuilderInputRowContainer = UiComponents_1.QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = UiComponents_1.QuillChartBuilderInputColumnContainer, PivotRowContainer = UiComponents_1.QuillPivotRowContainer, PivotColumnContainer = UiComponents_1.QuillPivotColumnContainer, ChartBuilderFormContainer = UiComponents_1.QuillChartBuilderFormContainer, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isChartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', report = undefined, organizationName = undefined, isChartBuilderHorizontalView = true, containerStyle = { height: '100vh' }, className, }) {
|
|
73
74
|
const [sqlPrompt, setSqlPrompt] = (0, react_1.useState)('');
|
|
74
75
|
const [client] = (0, react_1.useContext)(Context_1.ClientContext);
|
|
75
76
|
const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
|
|
@@ -77,6 +78,7 @@ function SQLEditor({ ButtonComponent = UiComponents_1.MemoizedButton, SecondaryB
|
|
|
77
78
|
const [rows, setRows] = (0, react_1.useState)([]);
|
|
78
79
|
const [columns, setColumns] = (0, react_1.useState)([]);
|
|
79
80
|
const [schema, setSchema] = (0, react_1.useContext)(Context_1.SchemaContext);
|
|
81
|
+
const [customFields, setCustomFields] = (0, react_1.useContext)(Context_1.CustomFieldContext);
|
|
80
82
|
const [errorMessage, setErrorMessage] = (0, react_1.useState)('');
|
|
81
83
|
const [sqlResponseLoading, setSqlResponseLoading] = (0, react_1.useState)(false);
|
|
82
84
|
const [sqlQueryLoading, setSqlQueryLoading] = (0, react_1.useState)(false);
|
|
@@ -99,38 +101,20 @@ function SQLEditor({ ButtonComponent = UiComponents_1.MemoizedButton, SecondaryB
|
|
|
99
101
|
};
|
|
100
102
|
}, []);
|
|
101
103
|
const getSchema = async () => {
|
|
102
|
-
const {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
...queryHeaders,
|
|
107
|
-
'Content-Type': 'application/json',
|
|
108
|
-
},
|
|
109
|
-
body: JSON.stringify({
|
|
110
|
-
metadata: {
|
|
111
|
-
clientId: publicKey,
|
|
112
|
-
publicKey: publicKey,
|
|
113
|
-
task: 'schema',
|
|
114
|
-
removeCustomerField: true,
|
|
115
|
-
},
|
|
116
|
-
}),
|
|
117
|
-
});
|
|
118
|
-
const results = await response.json();
|
|
119
|
-
if (results.data?.data) {
|
|
120
|
-
setSchema(results.data.data.tables);
|
|
121
|
-
setSchemaLoading(false);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
setSchema(results.data.tables);
|
|
125
|
-
setSchemaLoading(false);
|
|
126
|
-
}
|
|
104
|
+
const { schemaData, customFieldsByTable } = await (0, schema_1.getSchemaInfoWithCustomFields)(client);
|
|
105
|
+
setSchema(schemaData);
|
|
106
|
+
setCustomFields(customFieldsByTable);
|
|
107
|
+
setSchemaLoading(false);
|
|
127
108
|
};
|
|
128
109
|
(0, react_1.useEffect)(() => {
|
|
129
110
|
if (client && !schemaLoading) {
|
|
130
111
|
setSchemaLoading(true);
|
|
131
112
|
getSchema();
|
|
113
|
+
setRows([]);
|
|
114
|
+
setColumns([]);
|
|
115
|
+
setDisplayTable(false);
|
|
132
116
|
}
|
|
133
|
-
}, [client.publicKey]);
|
|
117
|
+
}, [client.publicKey, client.customerId]);
|
|
134
118
|
const handleRunSqlPrompt = async () => {
|
|
135
119
|
setSqlResponseLoading(true);
|
|
136
120
|
const resp = await (0, dataFetcher_1.getDataFromCloud)(client, `quillai`, {
|
|
@@ -154,6 +138,8 @@ function SQLEditor({ ButtonComponent = UiComponents_1.MemoizedButton, SecondaryB
|
|
|
154
138
|
orgId: client.customerId || '*',
|
|
155
139
|
clientId: client.publicKey,
|
|
156
140
|
databaseType: client?.databaseType,
|
|
141
|
+
getCustomFields: !client.customerId || client.customerId === '*' ? false : true,
|
|
142
|
+
customFieldsByTable: customFields,
|
|
157
143
|
},
|
|
158
144
|
};
|
|
159
145
|
const cloudBody = { query };
|
package/dist/cjs/Table.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAcrD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAyBD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IAEJ;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,4CAkC/B,CAAC;AAmGF,eAAe,KAAK,CAAC"}
|
package/dist/cjs/Table.js
CHANGED
|
@@ -49,13 +49,14 @@ const Table = (props) => {
|
|
|
49
49
|
const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
|
|
50
50
|
const [client, _] = (0, react_1.useContext)(Context_1.ClientContext);
|
|
51
51
|
if ('rows' in data && 'columns' in data) {
|
|
52
|
-
return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { hideCSVDownloadButton: data.hideCSVDownloadButton,
|
|
52
|
+
return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { hideCSVDownloadButton: data.hideCSVDownloadButton, columns: data.columns, rows: data.rows, className: data.className, containerStyle: data.containerStyle, LoadingComponent: data.LoadingComponent, isLoading: data.isLoading, downloadCSV: data.downloadCSV }));
|
|
53
53
|
}
|
|
54
54
|
return ((0, jsx_runtime_1.jsx)(ChartUpdater, { hideCSVDownloadButton: data.hideCSVDownloadButton, dispatch: dispatch, dashboard: dashboard, reportId: data.reportId, className: data.className, containerStyle: data.containerStyle, dashboardFilters: dashboardFilters, client: client, csvFilename: data.csvFilename, LoadingComponent: data.LoadingComponent }));
|
|
55
55
|
};
|
|
56
56
|
const ChartUpdater = ({ reportId, containerStyle, className, dashboard, dispatch, client, dashboardFilters, csvFilename, hideCSVDownloadButton = true, LoadingComponent, }) => {
|
|
57
57
|
const { rows, loading } = (0, useFormat_1.useMemoizedRows)(reportId);
|
|
58
58
|
const { downloadCSV } = (0, useExport_1.useExport)(reportId);
|
|
59
|
+
const [customFields] = (0, react_1.useContext)(Context_1.CustomFieldContext);
|
|
59
60
|
(0, react_1.useEffect)(() => {
|
|
60
61
|
let isSubscribed = true;
|
|
61
62
|
async function getChartOptions() {
|
|
@@ -69,6 +70,7 @@ const ChartUpdater = ({ reportId, containerStyle, className, dashboard, dispatch
|
|
|
69
70
|
filters: [...Object.values(dashboardFilters)],
|
|
70
71
|
clientId: client.publicKey,
|
|
71
72
|
databaseType: client?.databaseType,
|
|
73
|
+
customFields,
|
|
72
74
|
},
|
|
73
75
|
};
|
|
74
76
|
const cloudBody = {
|
|
@@ -102,8 +104,6 @@ const ChartUpdater = ({ reportId, containerStyle, className, dashboard, dispatch
|
|
|
102
104
|
};
|
|
103
105
|
}, [dashboardFilters, client.customerId, reportId]);
|
|
104
106
|
return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { hideCSVDownloadButton: hideCSVDownloadButton,
|
|
105
|
-
// @ts-ignore
|
|
106
|
-
downloadFileName: csvFilename || dashboard[reportId]?.name || '',
|
|
107
107
|
// @ts-ignore
|
|
108
108
|
columns: dashboard[reportId]?.columns || [],
|
|
109
109
|
// @ts-ignore
|
|
@@ -4,10 +4,18 @@ import { QuillTheme } from '../../QuillProvider';
|
|
|
4
4
|
export type DataLoaderChildProps = {
|
|
5
5
|
isLoading: boolean;
|
|
6
6
|
error?: string;
|
|
7
|
+
onPageChange: (page: {
|
|
8
|
+
currentPage: number;
|
|
9
|
+
rowsPerPage: number;
|
|
10
|
+
}) => void;
|
|
11
|
+
onSortChange: (sort: {
|
|
12
|
+
field: string;
|
|
13
|
+
direction: string;
|
|
14
|
+
}) => void;
|
|
7
15
|
};
|
|
8
16
|
export default function DataLoader({ id, children, }: {
|
|
9
17
|
id: string;
|
|
10
|
-
children: ({ isLoading, error }: DataLoaderChildProps) => JSX.Element;
|
|
18
|
+
children: ({ isLoading, error, onPageChange, onSortChange, }: DataLoaderChildProps) => JSX.Element;
|
|
11
19
|
}): JSX.Element;
|
|
12
20
|
type ColorMapType = {
|
|
13
21
|
[key: string]: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3E,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACpE,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,EAAE,EACF,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,YAAY,GACb,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzC,GAAG,GAAG,CAAC,OAAO,CAmHd;AAED,KAAK,YAAY,GAAG;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAIF,eAAO,MAAM,eAAe;QAKtB,MAAM;;mCAGC,WAAW,UACZ,UAAU,KACf,YAAY;4CAKd,yBAAyB,KAAK,WAAW;MAC1C,WA2FH,CAAC"}
|