@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.
Files changed (103) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +192 -72
  3. package/dist/cjs/ChartBuilder.d.ts +24 -1
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +43 -36
  6. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  7. package/dist/cjs/ChartEditor.js +97 -41
  8. package/dist/cjs/Context.d.ts +1 -0
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +59 -30
  11. package/dist/cjs/Dashboard.d.ts +22 -1
  12. package/dist/cjs/Dashboard.d.ts.map +1 -1
  13. package/dist/cjs/Dashboard.js +2 -2
  14. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  15. package/dist/cjs/ReportBuilder.js +47 -80
  16. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  17. package/dist/cjs/SQLEditor.js +13 -27
  18. package/dist/cjs/Table.d.ts.map +1 -1
  19. package/dist/cjs/Table.js +3 -3
  20. package/dist/cjs/components/Dashboard/DataLoader.d.ts +9 -1
  21. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  22. package/dist/cjs/components/Dashboard/DataLoader.js +146 -112
  23. package/dist/cjs/components/Dashboard/TableComponent.d.ts +1 -1
  24. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  25. package/dist/cjs/components/Dashboard/TableComponent.js +29 -11
  26. package/dist/cjs/components/QuillTable.d.ts +15 -2
  27. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  28. package/dist/cjs/components/QuillTable.js +58 -29
  29. package/dist/cjs/components/UiComponents.d.ts +11 -1
  30. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  31. package/dist/cjs/components/UiComponents.js +48 -4
  32. package/dist/cjs/hooks/useExport.d.ts +2 -1
  33. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  34. package/dist/cjs/hooks/useExport.js +44 -9
  35. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  36. package/dist/cjs/hooks/useQuill.js +2 -0
  37. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  38. package/dist/cjs/internals/ReportBuilder/PivotModal.js +2 -1
  39. package/dist/cjs/utils/csv.d.ts.map +1 -1
  40. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  41. package/dist/cjs/utils/dashboard.js +2 -0
  42. package/dist/cjs/utils/pivotProcessing.d.ts +2 -6
  43. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  44. package/dist/cjs/utils/pivotProcessing.js +31 -28
  45. package/dist/cjs/utils/schema.d.ts +6 -0
  46. package/dist/cjs/utils/schema.d.ts.map +1 -0
  47. package/dist/cjs/utils/schema.js +122 -0
  48. package/dist/cjs/utils/tableProcessing.d.ts +1 -1
  49. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  50. package/dist/cjs/utils/tableProcessing.js +5 -3
  51. package/dist/cjs/utils/valueFormatter.js +1 -1
  52. package/dist/esm/Chart.d.ts.map +1 -1
  53. package/dist/esm/Chart.js +193 -73
  54. package/dist/esm/ChartBuilder.d.ts +24 -1
  55. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  56. package/dist/esm/ChartBuilder.js +43 -36
  57. package/dist/esm/ChartEditor.d.ts.map +1 -1
  58. package/dist/esm/ChartEditor.js +98 -42
  59. package/dist/esm/Context.d.ts +1 -0
  60. package/dist/esm/Context.d.ts.map +1 -1
  61. package/dist/esm/Context.js +58 -29
  62. package/dist/esm/Dashboard.d.ts +22 -1
  63. package/dist/esm/Dashboard.d.ts.map +1 -1
  64. package/dist/esm/Dashboard.js +2 -2
  65. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  66. package/dist/esm/ReportBuilder.js +50 -83
  67. package/dist/esm/SQLEditor.d.ts.map +1 -1
  68. package/dist/esm/SQLEditor.js +15 -29
  69. package/dist/esm/Table.d.ts.map +1 -1
  70. package/dist/esm/Table.js +4 -4
  71. package/dist/esm/components/Dashboard/DataLoader.d.ts +9 -1
  72. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  73. package/dist/esm/components/Dashboard/DataLoader.js +147 -113
  74. package/dist/esm/components/Dashboard/TableComponent.d.ts +1 -1
  75. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  76. package/dist/esm/components/Dashboard/TableComponent.js +30 -12
  77. package/dist/esm/components/QuillTable.d.ts +15 -2
  78. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  79. package/dist/esm/components/QuillTable.js +58 -26
  80. package/dist/esm/components/UiComponents.d.ts +11 -1
  81. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  82. package/dist/esm/components/UiComponents.js +47 -4
  83. package/dist/esm/hooks/useExport.d.ts +2 -1
  84. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  85. package/dist/esm/hooks/useExport.js +44 -9
  86. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  87. package/dist/esm/hooks/useQuill.js +3 -1
  88. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  89. package/dist/esm/internals/ReportBuilder/PivotModal.js +3 -2
  90. package/dist/esm/utils/csv.d.ts.map +1 -1
  91. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  92. package/dist/esm/utils/dashboard.js +2 -0
  93. package/dist/esm/utils/pivotProcessing.d.ts +2 -6
  94. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  95. package/dist/esm/utils/pivotProcessing.js +31 -28
  96. package/dist/esm/utils/schema.d.ts +6 -0
  97. package/dist/esm/utils/schema.d.ts.map +1 -0
  98. package/dist/esm/utils/schema.js +117 -0
  99. package/dist/esm/utils/tableProcessing.d.ts +1 -1
  100. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  101. package/dist/esm/utils/tableProcessing.js +5 -3
  102. package/dist/esm/utils/valueFormatter.js +1 -1
  103. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /* eslint-disable no-unused-vars */
3
3
  import { useContext, useEffect, useRef, useState, } from 'react';
4
- import { DEFAULT_TAB_OPTIONS, MemoizedButton, MemoizedCheckbox, MemoizedDeleteButton, MemoizedHeader, MemoizedLabel, MemoizedSecondaryButton, MemoizedText, MemoizedPopover, QuillTableComponent, QuillTabs, MemoizedModal, QuillChartBuilderInputRowContainer, QuillChartBuilderInputColumnContainer, MemoizedSubHeader, QuillErrorMessageComponent, QuillPivotRowContainer, QuillPivotColumnContainer, QuillColumnSearchEmptyState, QuillChartBuilderFormContainer, QuillLoadingComponent, } from './components/UiComponents';
4
+ import { DEFAULT_TAB_OPTIONS, MemoizedButton, MemoizedCheckbox, MemoizedDeleteButton, MemoizedHeader, MemoizedLabel, MemoizedSecondaryButton, MemoizedText, MemoizedPopover, QuillTabs, MemoizedModal, QuillChartBuilderInputRowContainer, QuillChartBuilderInputColumnContainer, MemoizedSubHeader, QuillErrorMessageComponent, QuillPivotRowContainer, QuillPivotColumnContainer, QuillColumnSearchEmptyState, QuillChartBuilderFormContainer, QuillLoadingComponent, QuillTableSQLEditorComponent, } from './components/UiComponents';
5
5
  import { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, } from '@dnd-kit/core';
6
6
  import { arrayMove, SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy, useSortable, } from '@dnd-kit/sortable';
7
7
  import { CSS as DND_CSS } from '@dnd-kit/utilities';
8
8
  import { getQuarter } from 'date-fns';
9
- import { ClientContext, ThemeContext } from './Context';
9
+ import { ClientContext, CustomFieldContext, SchemaContext, ThemeContext, } from './Context';
10
10
  import { getTableAliases, getTableNames, isBoolColumnType, isDateishColumnType, isNumericColumnType, isTextColumnType, } from './components/ReportBuilder/ast';
11
11
  import { ChartBuilderWithModal } from './ChartBuilder';
12
12
  import { QuillTextInput } from './components/UiComponents';
@@ -27,13 +27,14 @@ import { QuillSelectComponent } from './components/QuillSelect';
27
27
  import { QuillCard } from './components/QuillCard';
28
28
  import { getData } from './utils/dataFetcher';
29
29
  import { DATE_FORMAT_TYPES, quillFormat } from './utils/valueFormatter';
30
- import { getPossiblePivotFieldOptions } from './utils/pivotProcessing';
30
+ import { getPossiblePivotFieldOptions, pivotToSql, } from './utils/pivotProcessing';
31
31
  import { getUniqueValuesByColumns } from './utils/tableProcessing';
32
32
  import { useQuill } from './hooks/useQuill';
33
33
  import { getDataFromCloud } from './utils/dataFetcher';
34
34
  import { convertColumnInfoToColumnInternal, convertPostgresColumn, } from './utils/columnProcessing';
35
35
  import { getSelectFromAST, processApostrophe, processStarColumn, } from './utils/astProcessing';
36
36
  import PivotForm from './internals/ReportBuilder/PivotForm';
37
+ import { getSchemaInfoWithCustomFields } from './utils/schema';
37
38
  export const QUILL_SERVER = (typeof process !== 'undefined' && process?.env?.QUILL_SERVER_HOST) ||
38
39
  'https://quill-344421.uc.r.appspot.com';
39
40
  /**
@@ -67,7 +68,7 @@ export const QUILL_SERVER = (typeof process !== 'undefined' && process?.env?.QUI
67
68
  * ### Report Builder API
68
69
  * @see https://docs.quillsql.com/components/report-builder
69
70
  */
70
- export default function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void null, onSubmitCreateReport = (_) => void null, destinationDashboard = undefined, organizationName = '', ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, ModalComponent = MemoizedModal, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, TableComponent = QuillTableComponent, PopoverComponent = MemoizedPopover, TabsComponent = QuillTabs, CheckboxComponent = MemoizedCheckbox, SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectColumnComponent = QuillSelectColumn, DraggableColumnComponent = QuillDraggableColumn, SidebarHeadingComponent = QuillSidebarHeading, FilterPopoverComponent = QuillFilterPopover, SortPopoverComponent = QuillSortPopover, LimitPopoverComponent = QuillLimitPopover, CardComponent = QuillCard, LabelComponent = MemoizedLabel, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, TextComponent = MemoizedText, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, LoadingComponent = QuillLoadingComponent, ColumnSearchEmptyState = QuillColumnSearchEmptyState, ChartBuilderFormContainer = QuillChartBuilderFormContainer, ChartBuilderModalComponent = MemoizedModal, isAdminEnabled = false, isAIEnabled = true, showChartBuilderTableFormatOptions = true, containerStyle, className, pivotRecommendationsEnabled = true, reportId, hideCopySQL = true, isChartBuilderHorizontalView = true, }) {
71
+ export default function ReportBuilder({ initialTableName = '', onSubmitEditReport = (_) => void null, onSubmitCreateReport = (_) => void null, destinationDashboard = undefined, organizationName = '', ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, ModalComponent = MemoizedModal, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, TableComponent = QuillTableSQLEditorComponent, PopoverComponent = MemoizedPopover, TabsComponent = QuillTabs, CheckboxComponent = MemoizedCheckbox, SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectColumnComponent = QuillSelectColumn, DraggableColumnComponent = QuillDraggableColumn, SidebarHeadingComponent = QuillSidebarHeading, FilterPopoverComponent = QuillFilterPopover, SortPopoverComponent = QuillSortPopover, LimitPopoverComponent = QuillLimitPopover, CardComponent = QuillCard, LabelComponent = MemoizedLabel, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, TextComponent = MemoizedText, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, LoadingComponent = QuillLoadingComponent, ColumnSearchEmptyState = QuillColumnSearchEmptyState, ChartBuilderFormContainer = QuillChartBuilderFormContainer, ChartBuilderModalComponent = MemoizedModal, isAdminEnabled = false, isAIEnabled = true, showChartBuilderTableFormatOptions = true, containerStyle, className, pivotRecommendationsEnabled = true, reportId, hideCopySQL = true, isChartBuilderHorizontalView = true, }) {
71
72
  const { data: report } = useQuill(reportId || '');
72
73
  const [aiPrompt, setAiPrompt] = useState('');
73
74
  const [errorMessage, setErrorMessage] = useState('');
@@ -76,7 +77,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
76
77
  const [orderedColumnNames, setOrderedColumnNames] = useState([]);
77
78
  const [selectedColumns, setSelectedColumns] = useState([]);
78
79
  const [selectedOrderedColumns, setSelectedOrderedColumns] = useState([]);
79
- const [schemaTables, setSchemaTables] = useState([]);
80
+ const [schema, setSchema] = useContext(SchemaContext);
80
81
  const [activeQuery, setActiveQuery] = useState('');
81
82
  const [activeEditItem, setActiveEditItem] = useState(null);
82
83
  const [activePath, setActivePath] = useState(null);
@@ -119,11 +120,15 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
119
120
  const [client, _setClient] = useContext(ClientContext);
120
121
  // JANK: This is temp and stupid
121
122
  const [overrideRecommendations, setOverrideRecommendations] = useState(true);
123
+ const [customFields, setCustomFields] = useContext(CustomFieldContext);
122
124
  useEffect(() => {
123
125
  if (client.publicKey === '663416663aa9bc716e59a89d') {
124
126
  setOverrideRecommendations(false);
125
127
  }
126
- }, [client.publicKey]);
128
+ if (!loadingSchema) {
129
+ fetchSchema();
130
+ }
131
+ }, [client.publicKey, client.customerId]);
127
132
  useEffect(() => {
128
133
  updateFirstChildWidth(askAIContainerRef, setAskAIInputWidth, { gap: 12 });
129
134
  updateFirstChildWidth(askAILoadingContainerRef, setAskAILoadingContainerWidth, { gap: 12 });
@@ -189,8 +194,6 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
189
194
  setBaseAst(null);
190
195
  setFormData(null);
191
196
  setSelectedColumns([]);
192
- setSchemaTables([]);
193
- setOrderedColumnNames([]);
194
197
  setActiveQuery('');
195
198
  setActiveEditItem(null);
196
199
  setActivePath(null);
@@ -278,6 +281,15 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
278
281
  }
279
282
  return current;
280
283
  };
284
+ const copySQLToClipboard = () => {
285
+ let query = activeQuery;
286
+ if (pivot) {
287
+ query = pivotToSql(pivot, activeQuery, columns);
288
+ }
289
+ setIsCopying(true);
290
+ navigator.clipboard.writeText(query);
291
+ setTimeout(() => setIsCopying(false), 800);
292
+ };
281
293
  const copyToClipboard = (str) => {
282
294
  setIsCopying(true);
283
295
  navigator.clipboard.writeText(str);
@@ -362,40 +374,6 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
362
374
  result.push(valueField, rowField);
363
375
  return result.filter(Boolean);
364
376
  };
365
- const fetchDistinctStrings = async (query, table) => {
366
- try {
367
- const hostedBody = {
368
- metadata: {
369
- query,
370
- task: 'query',
371
- orgId: client.customerId || '*',
372
- clientId: client.publicKey,
373
- databaseType: client?.databaseType,
374
- },
375
- };
376
- const cloudBody = { query };
377
- const data = await getData(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
378
- if (data.errorMessage) {
379
- return null;
380
- }
381
- const results = data.rows.map((columnInfo) => {
382
- const column = columnInfo.field;
383
- if (!columnInfo.string_values) {
384
- return { table, column, values: {} };
385
- }
386
- const values = columnInfo.string_values.reduce((result, value) => {
387
- result[value] = false;
388
- return result;
389
- }, {});
390
- return { table, column, values };
391
- });
392
- return results;
393
- }
394
- catch (e) {
395
- console.error(e);
396
- return null;
397
- }
398
- };
399
377
  const loadTable = async (tables) => {
400
378
  if (!tables)
401
379
  return;
@@ -408,7 +386,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
408
386
  })
409
387
  .map((column) => convertColumnInfoToColumnInternal(column));
410
388
  const stringNames = convertedStringColumns.map((column) => column.field);
411
- const newUniqueValues = await getUniqueValuesByColumns(convertedStringColumns, `Select ${stringNames.join(', ')} from ${initialTableName}`, [], client);
389
+ const newUniqueValues = await getUniqueValuesByColumns(convertedStringColumns, `Select ${stringNames.join(', ')} from ${initialTableName}`, [], client, customFields);
412
390
  const joinedUniqueValues = deepCopy(uniqueValues);
413
391
  joinedUniqueValues[initialTableName] = newUniqueValues;
414
392
  if (hashCode(uniqueValues) !== hashCode(joinedUniqueValues)) {
@@ -439,26 +417,10 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
439
417
  const fetchSchema = async () => {
440
418
  try {
441
419
  setLoadingSchema(true);
442
- const response = await fetch(`${client.queryEndpoint}`, {
443
- method: 'POST',
444
- headers: {
445
- ...client.queryHeaders,
446
- 'Content-Type': 'application/json',
447
- },
448
- body: JSON.stringify({
449
- metadata: {
450
- clientId: client.publicKey,
451
- publicKey: client.publicKey,
452
- task: 'schema',
453
- removeCustomerField: true,
454
- },
455
- }),
456
- });
457
- const results = await response.json();
458
- // Filter out hidden columns on tables back from schema2.
459
- const tables = results.data.tables || results.data.data.tables;
460
- setSchemaTables(tables ?? []);
461
- setOrderedColumnNames((tables ?? []).flatMap((table) => table.columns
420
+ const { schemaData, customFieldsByTable } = await getSchemaInfoWithCustomFields(client, 'rb');
421
+ setCustomFields(customFieldsByTable);
422
+ setSchema(schemaData ?? []);
423
+ setOrderedColumnNames((schemaData ?? []).flatMap((table) => table.columns
462
424
  .map((c) => `${table.name}.${c.name}`)
463
425
  .sort((a, b) => {
464
426
  const aIsId = a.endsWith('.id') ||
@@ -476,11 +438,11 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
476
438
  return 0;
477
439
  })));
478
440
  if (initialTableName) {
479
- await loadTable(tables);
441
+ await loadTable(schemaData);
480
442
  }
481
443
  setLoadingSchema(false);
482
444
  setInitialLoad(false);
483
- return tables;
445
+ return schemaData;
484
446
  }
485
447
  catch (error) {
486
448
  console.error(error);
@@ -504,7 +466,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
504
466
  let convertedAst = processStarColumn(ast, report.columns);
505
467
  processApostrophe(convertedAst, ['type', 'value']);
506
468
  convertedAst = convertBigQuery(convertedAst);
507
- let schemaInfo = schemaTables.length !== 0 ? schemaTables : await fetchSchema();
469
+ let schemaInfo = schema.length !== 0 ? schema : await fetchSchema();
508
470
  let newAst, groupByPivot;
509
471
  ({ ast: newAst, pivot: groupByPivot } = convertGroupBy(convertedAst,
510
472
  // @ts-ignore
@@ -522,7 +484,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
522
484
  });
523
485
  if (stringColumns.length !== 0 && tableName) {
524
486
  const stringNames = stringColumns.map((column) => column.field);
525
- const newUniqueValues = await getUniqueValuesByColumns(stringColumns, `Select ${stringNames.join(', ')} from ${tableName}`, [], client);
487
+ const newUniqueValues = await getUniqueValuesByColumns(stringColumns, `Select ${stringNames.join(', ')} from ${tableName}`, [], client, customFields);
526
488
  const joinedUniqueValues = deepCopy(uniqueValues);
527
489
  joinedUniqueValues[tableName] = newUniqueValues;
528
490
  setUniqueValues(joinedUniqueValues);
@@ -561,10 +523,10 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
561
523
  }
562
524
  }, [report]);
563
525
  useEffect(() => {
564
- if (schemaTables.length === 0) {
526
+ if (schema.length === 0) {
565
527
  fetchSchema();
566
528
  }
567
- }, [schemaTables, initialTableName, reportId]);
529
+ }, [schema, initialTableName, reportId]);
568
530
  const updateFormData = (updates, { isDeletion = false, isInsertion = false, isReplaceSubtree = false, isAddVariant = false, isDeleteVariant = false, topLevelBinOp = 'OR', isCondition = undefined, }) => {
569
531
  // Function to immutably update or delete nodes based on their path
570
532
  // TODO: fix the following horible code
@@ -1374,11 +1336,11 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
1374
1336
  // grab the value of the left child of the column comparison
1375
1337
  // operator (ie. the column name)
1376
1338
  const leftChildValue = getColumnValueForColumnComparison(node);
1377
- const column = schemaTables
1378
- .flatMap((t) => t.columns)
1379
- .find((col) => col.name === leftChildValue);
1380
1339
  const tables = getTableNames(baseAst);
1381
1340
  const table = tables.length === 1 ? tables[0] : initialTableName;
1341
+ const column = schema
1342
+ .find((tableInfo) => tableInfo.name === table)
1343
+ ?.columns.find((col) => col.name === leftChildValue);
1382
1344
  const columnType = column?.fieldType;
1383
1345
  let operatorOptions = [
1384
1346
  ...(isNumericColumnType(columnType)
@@ -1472,7 +1434,9 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
1472
1434
  }
1473
1435
  else {
1474
1436
  const columnName = node.left.column;
1475
- const column = schemaTables[0]?.columns.find((col) => col.name === columnName);
1437
+ const column = schema
1438
+ .find((tableInfo) => tableInfo.name === currentTable)
1439
+ ?.columns.find((col) => col.name === columnName);
1476
1440
  const columnType = column?.fieldType;
1477
1441
  return (_jsxs("div", { style: {
1478
1442
  display: 'flex',
@@ -1728,7 +1692,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
1728
1692
  };
1729
1693
  const getAllPossibleColumns = () => {
1730
1694
  if (!baseAst || !baseAst.from) {
1731
- return schemaTables.flatMap((table) => table.columns.map((c) => ({
1695
+ return schema.flatMap((table) => table.columns.map((c) => ({
1732
1696
  ...c,
1733
1697
  table: table.displayName,
1734
1698
  })));
@@ -1737,7 +1701,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
1737
1701
  // This currently only supports top-level table names in the FROM section
1738
1702
  // of queries (eg. FROM "table_name", not "FROM (SELECT * FROM other) AS table_name")
1739
1703
  const tableNamesInQuery = baseAst.from.map((tbl) => tbl.table);
1740
- return schemaTables
1704
+ return schema
1741
1705
  .filter((t) => tableNamesInQuery.includes(t.displayName))
1742
1706
  .flatMap((table) => table.columns
1743
1707
  .map((c) => ({
@@ -1808,6 +1772,8 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
1808
1772
  publicKey: client.publicKey,
1809
1773
  orgId: client.customerId,
1810
1774
  task: 'patterns',
1775
+ getCustomFields: false,
1776
+ customFields,
1811
1777
  },
1812
1778
  };
1813
1779
  const cloudBody = {};
@@ -1816,7 +1782,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
1816
1782
  const tables = getTableNames(baseAst);
1817
1783
  const table = tables.length >= 1 ? tables[0] : initialTableName;
1818
1784
  if (table !== currentTable) {
1819
- const tableInfo = schemaTables.find((tableInfo) => tableInfo.name === table);
1785
+ const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
1820
1786
  if (tableInfo) {
1821
1787
  const convertedStringColumns = tableInfo.columns
1822
1788
  .filter((column) => {
@@ -1824,7 +1790,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
1824
1790
  })
1825
1791
  .map((column) => convertColumnInfoToColumnInternal(column));
1826
1792
  const stringNames = convertedStringColumns.map((column) => column.field);
1827
- const newUniqueValues = await getUniqueValuesByColumns(convertedStringColumns, `Select ${stringNames.join(', ')} from ${table}`, rows, client);
1793
+ const newUniqueValues = await getUniqueValuesByColumns(convertedStringColumns, `Select ${stringNames.join(', ')} from ${table}`, rows, client, customFields);
1828
1794
  const joinedUniqueValues = deepCopy(uniqueValues);
1829
1795
  joinedUniqueValues[table] = newUniqueValues;
1830
1796
  if (hashCode(uniqueValues) !== hashCode(joinedUniqueValues)) {
@@ -2059,8 +2025,8 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
2059
2025
  // Unwrap the ast object, supporting many possible types
2060
2026
  ast = ast.length ? ast[0] : ast;
2061
2027
  newAst = convertBigQuery(ast);
2062
- newAst = convertWildcardColumns(newAst, schemaTables); // must go before groupby
2063
- ({ ast: newAst, pivot: groupByPivot } = convertGroupBy(newAst, pivot, schemaTables));
2028
+ newAst = convertWildcardColumns(newAst, schema); // must go before groupby
2029
+ ({ ast: newAst, pivot: groupByPivot } = convertGroupBy(newAst, pivot, schema));
2064
2030
  if (groupByPivot && !groupByPivot?.valueField) {
2065
2031
  setErrorMessage("Error: Couldn't process your request, please re-word your prompt.");
2066
2032
  return;
@@ -2092,6 +2058,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
2092
2058
  newAst?.where ? newAst?.where?.operator : 'AND');
2093
2059
  }
2094
2060
  ast = newAst; // so we fetch data for newAst later.
2061
+ fetchSqlQuery(ast, undefined, false);
2095
2062
  const table = getTableNames(newAst)[0] ?? initialTableName;
2096
2063
  const tableAlias = getTableAliases(newAst)[0] ?? initialTableName;
2097
2064
  const hostedBody = {
@@ -2107,7 +2074,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
2107
2074
  const data2 = await getData(client, 'patterns', 'same-origin', hostedBody, cloudBody);
2108
2075
  let currentUniqueValues = uniqueValues;
2109
2076
  if (table !== currentTable) {
2110
- const tableInfo = schemaTables.find((tableInfo) => tableInfo.name === table);
2077
+ const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
2111
2078
  if (tableInfo) {
2112
2079
  const convertedStringColumns = tableInfo.columns
2113
2080
  .filter((column) => {
@@ -2115,7 +2082,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
2115
2082
  })
2116
2083
  .map((column) => convertColumnInfoToColumnInternal(column));
2117
2084
  const stringNames = convertedStringColumns.map((column) => column.field);
2118
- const newUniqueValues = await getUniqueValuesByColumns(convertedStringColumns, `Select ${stringNames.join(', ')} from ${table}`, rows, client);
2085
+ const newUniqueValues = await getUniqueValuesByColumns(convertedStringColumns, `Select ${stringNames.join(', ')} from ${table}`, rows, client, customFields);
2119
2086
  currentUniqueValues[table] = newUniqueValues;
2120
2087
  if (hashCode(uniqueValues) !== hashCode(currentUniqueValues)) {
2121
2088
  setUniqueValues(currentUniqueValues);
@@ -2609,7 +2576,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
2609
2576
  display: 'flex',
2610
2577
  flexDirection: 'row',
2611
2578
  gap: '12px',
2612
- }, children: [_jsx("div", { style: { width: '100%' } }), !hideCopySQL && (_jsx(SecondaryButtonComponent, { onClick: () => copyToClipboard(activeQuery), label: isCopying ? '✅ Copied' : 'Copy SQL' })), _jsx(ButtonComponent, { label: report ? 'Save changes' : 'Add to dashboard', onClick: () => { } })] }))] })] }), _jsx("style", { children: `body{margin:0;}` })] }));
2579
+ }, children: [_jsx("div", { style: { width: '100%' } }), !hideCopySQL && (_jsx(SecondaryButtonComponent, { onClick: () => copySQLToClipboard(), label: isCopying ? '✅ Copied' : 'Copy SQL' })), _jsx(ButtonComponent, { label: report ? 'Save changes' : 'Add to dashboard', onClick: () => { } })] }))] })] }), _jsx("style", { children: `body{margin:0;}` })] }));
2613
2580
  }
2614
2581
  return (_jsxs("div", { style: { backgroundColor: theme.backgroundColor, ...containerStyle }, className: className, children: [(!isChartBuilderHorizontalView ||
2615
2582
  (isChartBuilderHorizontalView && !isChartBuilderOpen)) && (_jsxs("div", { ref: parentRef, style: {
@@ -3045,7 +3012,7 @@ export default function ReportBuilder({ initialTableName = '', onSubmitEditRepor
3045
3012
  overflow: 'hidden',
3046
3013
  width: '100%',
3047
3014
  gap: 12,
3048
- }, children: [_jsx(ErrorMessageComponent, { errorMessage: errorMessage }), _jsx(SecondaryButtonComponent, { onClick: handleAsk, label: 'Retry' })] })) : (_jsx("div", { style: { width: '100%' } })), baseAst && dataDisplayed && !initalChartLoad && (_jsxs(_Fragment, { children: [!hideCopySQL && (_jsx(SecondaryButtonComponent, { label: isCopying ? '✅ Copied' : 'Copy SQL', onClick: () => copyToClipboard(activeQuery) })), _jsx(ButtonComponent, { onClick: () => {
3015
+ }, children: [_jsx(ErrorMessageComponent, { errorMessage: errorMessage }), _jsx(SecondaryButtonComponent, { onClick: handleAsk, label: 'Retry' })] })) : (_jsx("div", { style: { width: '100%' } })), baseAst && dataDisplayed && !initalChartLoad && (_jsxs(_Fragment, { children: [!hideCopySQL && (_jsx(SecondaryButtonComponent, { label: isCopying ? '✅ Copied' : 'Copy SQL', onClick: () => copySQLToClipboard() })), _jsx(ButtonComponent, { onClick: () => {
3049
3016
  setIsChartBuilderOpen(true);
3050
3017
  }, label: report ? 'Save changes' : 'Add to dashboard' })] }))] })] }), _jsx("style", { children: `body{margin:0;}` })] })), (!isChartBuilderHorizontalView || isChartBuilderOpen) && (_jsx(ChartBuilderWithModal, { report: report
3051
3018
  ? {
@@ -1 +1 @@
1
- {"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"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"}
@@ -3,16 +3,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
4
4
  import { useState, useContext, useEffect, useRef, } from 'react';
5
5
  import MonacoEditor from '@monaco-editor/react';
6
- import { ClientContext, SchemaContext, ThemeContext } from './Context';
6
+ import { ClientContext, CustomFieldContext, SchemaContext, ThemeContext, } from './Context';
7
7
  import { getData, getDataFromCloud } from './utils/dataFetcher';
8
8
  import { ChartBuilderWithModal } from './ChartBuilder';
9
- import { MemoizedButton, MemoizedDeleteButton, MemoizedHeader, MemoizedLabel, MemoizedModal, MemoizedPopover, MemoizedSecondaryButton, MemoizedSubHeader, MemoizedText, QuillChartBuilderFormContainer, QuillChartBuilderInputColumnContainer, QuillChartBuilderInputRowContainer, QuillErrorMessageComponent, QuillLoadingComponent, QuillPivotColumnContainer, QuillPivotRowContainer, QuillTableComponent, } from './components/UiComponents';
9
+ import { MemoizedButton, MemoizedDeleteButton, MemoizedHeader, MemoizedLabel, MemoizedModal, MemoizedPopover, MemoizedSecondaryButton, MemoizedSubHeader, MemoizedText, QuillChartBuilderFormContainer, QuillChartBuilderInputColumnContainer, QuillChartBuilderInputRowContainer, QuillErrorMessageComponent, QuillLoadingComponent, QuillPivotColumnContainer, QuillPivotRowContainer, QuillTableSQLEditorComponent, } from './components/UiComponents';
10
10
  import { QuillTextInput } from './components/UiComponents';
11
11
  import { updateFirstChildWidth } from './utils/width';
12
12
  import { QuillCard } from './components/QuillCard';
13
13
  import { QuillSelectComponent } from './components/QuillSelect';
14
14
  import { quillFormat } from './utils/valueFormatter';
15
15
  import { convertPostgresColumn } from './utils/columnProcessing';
16
+ import { getSchemaInfoWithCustomFields } from './utils/schema';
16
17
  function defineEditorTheme(monaco, theme) {
17
18
  monaco.editor.defineTheme('onedark', {
18
19
  base: theme.darkMode ? 'vs-dark' : 'vs',
@@ -63,7 +64,7 @@ function setEditorTheme(editor, monaco) {
63
64
  * ### SQLEditor API
64
65
  * @see https://docs.quillsql.com/components/sql-editor
65
66
  */
66
- export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, TableComponent = QuillTableComponent, isNewQueryEnabled = false, LoadingComponent = QuillLoadingComponent, ModalComponent = MemoizedModal, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, LabelComponent = MemoizedLabel, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, TextComponent = MemoizedText, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, ChartBuilderFormContainer = 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, }) {
67
+ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, TableComponent = QuillTableSQLEditorComponent, isNewQueryEnabled = false, LoadingComponent = QuillLoadingComponent, ModalComponent = MemoizedModal, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, LabelComponent = MemoizedLabel, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, TextComponent = MemoizedText, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, ChartBuilderFormContainer = 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, }) {
67
68
  const [sqlPrompt, setSqlPrompt] = useState('');
68
69
  const [client] = useContext(ClientContext);
69
70
  const [theme] = useContext(ThemeContext);
@@ -71,6 +72,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
71
72
  const [rows, setRows] = useState([]);
72
73
  const [columns, setColumns] = useState([]);
73
74
  const [schema, setSchema] = useContext(SchemaContext);
75
+ const [customFields, setCustomFields] = useContext(CustomFieldContext);
74
76
  const [errorMessage, setErrorMessage] = useState('');
75
77
  const [sqlResponseLoading, setSqlResponseLoading] = useState(false);
76
78
  const [sqlQueryLoading, setSqlQueryLoading] = useState(false);
@@ -93,38 +95,20 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
93
95
  };
94
96
  }, []);
95
97
  const getSchema = async () => {
96
- const { queryEndpoint, queryHeaders, publicKey } = client;
97
- const response = await fetch(`${queryEndpoint}`, {
98
- method: 'POST',
99
- headers: {
100
- ...queryHeaders,
101
- 'Content-Type': 'application/json',
102
- },
103
- body: JSON.stringify({
104
- metadata: {
105
- clientId: publicKey,
106
- publicKey: publicKey,
107
- task: 'schema',
108
- removeCustomerField: true,
109
- },
110
- }),
111
- });
112
- const results = await response.json();
113
- if (results.data?.data) {
114
- setSchema(results.data.data.tables);
115
- setSchemaLoading(false);
116
- }
117
- else {
118
- setSchema(results.data.tables);
119
- setSchemaLoading(false);
120
- }
98
+ const { schemaData, customFieldsByTable } = await getSchemaInfoWithCustomFields(client);
99
+ setSchema(schemaData);
100
+ setCustomFields(customFieldsByTable);
101
+ setSchemaLoading(false);
121
102
  };
122
103
  useEffect(() => {
123
104
  if (client && !schemaLoading) {
124
105
  setSchemaLoading(true);
125
106
  getSchema();
107
+ setRows([]);
108
+ setColumns([]);
109
+ setDisplayTable(false);
126
110
  }
127
- }, [client.publicKey]);
111
+ }, [client.publicKey, client.customerId]);
128
112
  const handleRunSqlPrompt = async () => {
129
113
  setSqlResponseLoading(true);
130
114
  const resp = await getDataFromCloud(client, `quillai`, {
@@ -148,6 +132,8 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
148
132
  orgId: client.customerId || '*',
149
133
  clientId: client.publicKey,
150
134
  databaseType: client?.databaseType,
135
+ getCustomFields: !client.customerId || client.customerId === '*' ? false : true,
136
+ customFieldsByTable: customFields,
151
137
  },
152
138
  };
153
139
  const cloudBody = { query };
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAarD,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,4CAmC/B,CAAC;AAmGF,eAAe,KAAK,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/esm/Table.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useContext, useEffect } from 'react';
3
- import { ClientContext, DashboardContext, DashboardFiltersContext, } from './Context';
3
+ import { ClientContext, CustomFieldContext, DashboardContext, DashboardFiltersContext, } from './Context';
4
4
  import { getData } from './utils/dataFetcher';
5
5
  import { mergeComparisonRange } from './utils/merge';
6
6
  import QuillTable from './components/QuillTable';
@@ -44,13 +44,14 @@ const Table = (props) => {
44
44
  const { dashboardFilters } = useContext(DashboardFiltersContext);
45
45
  const [client, _] = useContext(ClientContext);
46
46
  if ('rows' in data && 'columns' in data) {
47
- return (_jsx(QuillTable, { hideCSVDownloadButton: data.hideCSVDownloadButton, downloadFileName: data.csvFilename, columns: data.columns, rows: data.rows, className: data.className, containerStyle: data.containerStyle, LoadingComponent: data.LoadingComponent, isLoading: data.isLoading, downloadCSV: data.downloadCSV }));
47
+ return (_jsx(QuillTable, { hideCSVDownloadButton: data.hideCSVDownloadButton, columns: data.columns, rows: data.rows, className: data.className, containerStyle: data.containerStyle, LoadingComponent: data.LoadingComponent, isLoading: data.isLoading, downloadCSV: data.downloadCSV }));
48
48
  }
49
49
  return (_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 }));
50
50
  };
51
51
  const ChartUpdater = ({ reportId, containerStyle, className, dashboard, dispatch, client, dashboardFilters, csvFilename, hideCSVDownloadButton = true, LoadingComponent, }) => {
52
52
  const { rows, loading } = useMemoizedRows(reportId);
53
53
  const { downloadCSV } = useExport(reportId);
54
+ const [customFields] = useContext(CustomFieldContext);
54
55
  useEffect(() => {
55
56
  let isSubscribed = true;
56
57
  async function getChartOptions() {
@@ -64,6 +65,7 @@ const ChartUpdater = ({ reportId, containerStyle, className, dashboard, dispatch
64
65
  filters: [...Object.values(dashboardFilters)],
65
66
  clientId: client.publicKey,
66
67
  databaseType: client?.databaseType,
68
+ customFields,
67
69
  },
68
70
  };
69
71
  const cloudBody = {
@@ -97,8 +99,6 @@ const ChartUpdater = ({ reportId, containerStyle, className, dashboard, dispatch
97
99
  };
98
100
  }, [dashboardFilters, client.customerId, reportId]);
99
101
  return (_jsx(QuillTable, { hideCSVDownloadButton: hideCSVDownloadButton,
100
- // @ts-ignore
101
- downloadFileName: csvFilename || dashboard[reportId]?.name || '',
102
102
  // @ts-ignore
103
103
  columns: dashboard[reportId]?.columns || [],
104
104
  // @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":";AAOA,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;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,EAAE,EACF,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;CACvE,GAAG,GAAG,CAAC,OAAO,CAgFd;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"}
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"}