@quillsql/react 2.11.28 → 2.11.29
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/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +81 -48
- package/dist/cjs/ReportBuilder.d.ts +22 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +562 -527
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +0 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +28 -0
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -0
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +58 -0
- package/dist/cjs/utils/astProcessing.d.ts +23 -0
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +241 -1
- package/dist/cjs/utils/tableProcessing.d.ts +1 -0
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +13 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +81 -48
- package/dist/esm/ReportBuilder.d.ts +22 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +563 -528
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +0 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +28 -0
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -0
- package/dist/esm/internals/ReportBuilder/PivotForm.js +55 -0
- package/dist/esm/utils/astProcessing.d.ts +23 -0
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +231 -0
- package/dist/esm/utils/tableProcessing.d.ts +1 -0
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +11 -0
- package/package.json +1 -1
package/dist/esm/ChartBuilder.js
CHANGED
|
@@ -13,6 +13,7 @@ import { QuillSelectComponent } from './components/QuillSelect';
|
|
|
13
13
|
import { QuillCard } from './components/QuillCard';
|
|
14
14
|
import { quillFormat } from './utils/valueFormatter';
|
|
15
15
|
import { convertColumnInfoToColumnInternal } from './utils/columnProcessing';
|
|
16
|
+
import { createTableNameToTableAliasMap, getColumnsByTableFromASTAndSchema, getSelectFromAST, } from './utils/astProcessing';
|
|
16
17
|
const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
|
|
17
18
|
const POSTGRES_DATE_TYPES = [
|
|
18
19
|
'timestamp',
|
|
@@ -61,53 +62,64 @@ function getChartTypeOptions(formData) {
|
|
|
61
62
|
(elem === 'bar' || elem === 'pie')))).map((elem) => ({ label: elem, value: elem }));
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
|
-
function getTablesHelper(ast, allTables
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
65
|
+
function getTablesHelper(ast, allTables) {
|
|
66
|
+
const tableAliasMap = createTableNameToTableAliasMap(ast);
|
|
67
|
+
const tablesInQuery = Object.values(tableAliasMap);
|
|
68
|
+
// Remove all aliased tables (with statements and subqueries)
|
|
69
|
+
const onlyReferenceTables = allTables
|
|
70
|
+
.filter((table) => tablesInQuery.includes(table.displayName))
|
|
71
|
+
.map((table) => table.displayName);
|
|
72
|
+
let referencedColumns = {};
|
|
73
|
+
// Get non with statement column references
|
|
74
|
+
referencedColumns = getColumnsByTableFromASTAndSchema(ast, allTables, tableAliasMap);
|
|
75
|
+
// With statement column references
|
|
76
|
+
if (ast.with) {
|
|
77
|
+
for (const withStmt of ast.with) {
|
|
78
|
+
if (withStmt.stmt.ast.from) {
|
|
79
|
+
const withReferencedColumns = getColumnsByTableFromASTAndSchema(withStmt.stmt.ast, allTables, tableAliasMap);
|
|
80
|
+
// @ts-ignore
|
|
81
|
+
Object.keys(withReferencedColumns).forEach((tableName) => {
|
|
82
|
+
if (referencedColumns[tableName]) {
|
|
83
|
+
// @ts-ignore
|
|
84
|
+
referencedColumns[tableName].push(...(withReferencedColumns[tableName] || []));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// @ts-ignore
|
|
88
|
+
referencedColumns[tableName] = withReferencedColumns[tableName];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
77
91
|
}
|
|
78
92
|
}
|
|
79
93
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const recursiveAST = ast.from[i].expr.ast;
|
|
84
|
-
const recursiveTables = getTablesHelper(recursiveAST, allTables);
|
|
85
|
-
tables.push(...recursiveTables.map((t) => t.name));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
94
|
+
// Make all the column strings unique
|
|
95
|
+
for (const table in referencedColumns) {
|
|
96
|
+
referencedColumns[table] = Array.from(new Set(referencedColumns[table]));
|
|
88
97
|
}
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
98
|
+
const referencedTablesAndColumns = Object.keys(referencedColumns).map((tableName) => {
|
|
99
|
+
return {
|
|
100
|
+
name: tableName,
|
|
101
|
+
columns: referencedColumns[tableName]?.map((column) => {
|
|
102
|
+
return { field: column };
|
|
103
|
+
}) || [],
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
let dateFields = allTables
|
|
107
|
+
.filter((table) => onlyReferenceTables.includes(table.displayName))
|
|
94
108
|
.map((table) => {
|
|
95
109
|
return {
|
|
96
110
|
name: table.displayName,
|
|
97
111
|
columns: table.columns
|
|
98
|
-
.filter((column) =>
|
|
99
|
-
? POSTGRES_DATE_TYPES.includes(column.fieldType)
|
|
100
|
-
: column.fieldType)
|
|
112
|
+
.filter((column) => POSTGRES_DATE_TYPES.includes(column.fieldType))
|
|
101
113
|
.map((col) => {
|
|
102
114
|
return convertColumnInfoToColumnInternal(col);
|
|
103
115
|
}),
|
|
104
116
|
};
|
|
105
|
-
})
|
|
106
|
-
|
|
117
|
+
});
|
|
118
|
+
return { referencedTablesAndColumns, dateFields };
|
|
107
119
|
}
|
|
108
|
-
async function getReferencedTables(client, sqlQuery, dbTables
|
|
120
|
+
async function getReferencedTables(client, sqlQuery, dbTables) {
|
|
109
121
|
const resp = await getDataFromCloud(client, `astify`, { query: sqlQuery });
|
|
110
|
-
return getTablesHelper(resp.ast
|
|
122
|
+
return getTablesHelper(getSelectFromAST(resp.ast), dbTables);
|
|
111
123
|
}
|
|
112
124
|
export const numberFormatOptions = [
|
|
113
125
|
'whole_number',
|
|
@@ -314,6 +326,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
|
|
|
314
326
|
// initial state is the fields array passed in, but can eventually be changed to be the pivot fields
|
|
315
327
|
const [dateFieldOptions, setDateFieldOptions] = useState([]);
|
|
316
328
|
const [allTables, setAllTables] = useState([]);
|
|
329
|
+
const [referencedColumns, setReferencedColumns] = useState({});
|
|
317
330
|
const [uniqueValues, setUniqueValues] = useState(undefined);
|
|
318
331
|
const [defaultDateField, setDefaultDateField] = useState({
|
|
319
332
|
table: dateFieldOptions[0]?.name || '',
|
|
@@ -458,22 +471,25 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
|
|
|
458
471
|
if (!query) {
|
|
459
472
|
return;
|
|
460
473
|
}
|
|
461
|
-
const result = await getReferencedTables(client, query, schemaData
|
|
462
|
-
setDateFieldOptions(result);
|
|
463
|
-
if (result[0] && result[0].columns[0]) {
|
|
474
|
+
const result = await getReferencedTables(client, query, schemaData);
|
|
475
|
+
setDateFieldOptions(result.dateFields);
|
|
476
|
+
if (result.dateFields[0] && result.dateFields[0].columns[0]) {
|
|
464
477
|
setDefaultDateField({
|
|
465
|
-
table: result[0].name,
|
|
466
|
-
field: result[0].columns[0].field,
|
|
478
|
+
table: result.dateFields[0].name,
|
|
479
|
+
field: result.dateFields[0].columns[0].field,
|
|
467
480
|
});
|
|
468
481
|
}
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
482
|
+
setAllTables(result.referencedTablesAndColumns.map((table) => table.name));
|
|
483
|
+
const referencedColumns = result.referencedTablesAndColumns.reduce((acc, table) => {
|
|
484
|
+
acc[table.name] = table.columns.map((col) => col.field);
|
|
485
|
+
return acc;
|
|
486
|
+
}, {});
|
|
487
|
+
setReferencedColumns(referencedColumns);
|
|
488
|
+
setTableName(result.dateFields[0]?.name);
|
|
472
489
|
const dateField = {
|
|
473
|
-
table: result[0]?.name || '',
|
|
474
|
-
field: result[0]?.columns?.find((elem) => elem.field === dateColumn)
|
|
475
|
-
?.field ||
|
|
476
|
-
result[0]?.columns[0]?.field ||
|
|
490
|
+
table: result.dateFields[0]?.name || '',
|
|
491
|
+
field: result.dateFields[0]?.columns?.find((elem) => elem.field === dateColumn)?.field ||
|
|
492
|
+
result.dateFields[0]?.columns[0]?.field ||
|
|
477
493
|
'',
|
|
478
494
|
};
|
|
479
495
|
curFormData.dateField = dateField;
|
|
@@ -750,6 +766,12 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
|
|
|
750
766
|
if (!client) {
|
|
751
767
|
return;
|
|
752
768
|
}
|
|
769
|
+
// If the dashbaordItem is a template but the editor isn't an admin, create a new dashboardItem and set the template to false
|
|
770
|
+
const dashboardItemId = !showDateFieldOptions && dashboardItem && dashboardItem.template
|
|
771
|
+
? undefined
|
|
772
|
+
: dashboardItem
|
|
773
|
+
? dashboardItem._id
|
|
774
|
+
: undefined;
|
|
753
775
|
const cloudBody = {
|
|
754
776
|
...formData,
|
|
755
777
|
...(formData.dateField?.table
|
|
@@ -758,11 +780,14 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
|
|
|
758
780
|
...(formData.dashboardName
|
|
759
781
|
? {}
|
|
760
782
|
: { dashboardName: defaultDashboardName }),
|
|
761
|
-
|
|
783
|
+
dashboardItemId,
|
|
762
784
|
query: queryNoDateColumn || query,
|
|
763
785
|
queryString: queryNoDateColumn || query,
|
|
764
786
|
pivot: formData.pivot,
|
|
765
787
|
referencedTables: allTables,
|
|
788
|
+
referencedColumns,
|
|
789
|
+
template: !showDateFieldOptions && dashboardItem.template ? false : true,
|
|
790
|
+
customerId: customerId || '*',
|
|
766
791
|
};
|
|
767
792
|
// @ts-ignore
|
|
768
793
|
if (cloudBody['rows']) {
|
|
@@ -856,7 +881,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
|
|
|
856
881
|
...(isHorizontalView && { flexGrow: 1 }),
|
|
857
882
|
} })),
|
|
858
883
|
// Make sure to display non-pivoted table when using pivot chart
|
|
859
|
-
(isHorizontalView || windowWidth < 1200) && (_jsx("div", { style: {
|
|
884
|
+
(isHorizontalView || (!isOpen && windowWidth < 1200)) && (_jsx("div", { style: {
|
|
860
885
|
width: '100%',
|
|
861
886
|
height: isHorizontalView || !isOpen ? 'calc(50% - 10px)' : 400,
|
|
862
887
|
flexGrow: 1,
|
|
@@ -947,7 +972,15 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
|
|
|
947
972
|
: ''
|
|
948
973
|
: yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
|
|
949
974
|
? NUMBER_OPTIONS
|
|
950
|
-
: formatOptions, width: 200 }), formData.pivot === null && (_jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))), formData.pivot === null && (_jsx("div", { children: _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" }) }))] })] }))] })),
|
|
975
|
+
: formatOptions, width: 200 }), formData.pivot === null && (_jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))), formData.pivot === null && (_jsx("div", { children: _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" }) }))] })] }))] })),
|
|
976
|
+
// Make sure to display non-pivoted table when using pivot chart
|
|
977
|
+
windowWidth < 1200 && (_jsx("div", { style: {
|
|
978
|
+
width: '100%',
|
|
979
|
+
height: isHorizontalView || !isOpen ? 'calc(50% - 10px)' : 400,
|
|
980
|
+
flexGrow: 1,
|
|
981
|
+
}, children: formData.chartType !== 'table' ? (_jsx(TableComponent, { rows: formattedRows, columns: formData.columns })) : (_jsx(TableComponent, { rows: formattedRows, columns: selectedPivotTable
|
|
982
|
+
? selectedPivotTable.columns
|
|
983
|
+
: formData.columns })) })), showTableFormatOptions && (_jsxs("div", { children: [_jsxs("div", { style: {
|
|
951
984
|
display: 'flex',
|
|
952
985
|
flexDirection: 'column',
|
|
953
986
|
}, children: [_jsx(HeaderComponent, { label: "Table" }), _jsx(SubHeaderComponent, { label: "Columns" })] }), _jsxs(ChartBuilderInputColumnContainer, { children: [formData.pivot &&
|
|
@@ -48,6 +48,17 @@ export interface ReportBuilderProps {
|
|
|
48
48
|
width?: number;
|
|
49
49
|
height?: number;
|
|
50
50
|
}) => JSX.Element;
|
|
51
|
+
/**
|
|
52
|
+
* A modal component.
|
|
53
|
+
*/
|
|
54
|
+
ChartBuilderModalComponent?: (props: {
|
|
55
|
+
isOpen: boolean;
|
|
56
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
57
|
+
title?: string;
|
|
58
|
+
children: ReactNode;
|
|
59
|
+
width?: number;
|
|
60
|
+
height?: number;
|
|
61
|
+
}) => JSX.Element;
|
|
51
62
|
/** A select component. */
|
|
52
63
|
SelectComponent?: (props: {
|
|
53
64
|
value: string;
|
|
@@ -237,6 +248,16 @@ export interface ReportBuilderProps {
|
|
|
237
248
|
onSubmitCreateReport?: (item: DashboardItem) => void;
|
|
238
249
|
/** A callback function that will trigger when a chart is edited */
|
|
239
250
|
onSubmitEditReport?: (item: DashboardItem) => void;
|
|
251
|
+
/** Hide the copy SQL button. */
|
|
252
|
+
hideCopySQL?: boolean;
|
|
253
|
+
/**
|
|
254
|
+
* Whether the chart builder is in horizontal view mode.
|
|
255
|
+
*
|
|
256
|
+
* Horizontal view mode is where the chart and table are displayed on the left
|
|
257
|
+
* and the editing form is displayed on the right, rather than being stacked
|
|
258
|
+
* vertically.
|
|
259
|
+
*/
|
|
260
|
+
isChartBuilderHorizontalView?: boolean;
|
|
240
261
|
}
|
|
241
262
|
export declare const QUILL_SERVER: string;
|
|
242
263
|
/**
|
|
@@ -270,5 +291,5 @@ export declare const QUILL_SERVER: string;
|
|
|
270
291
|
* ### Report Builder API
|
|
271
292
|
* @see https://docs.quillsql.com/components/report-builder
|
|
272
293
|
*/
|
|
273
|
-
export default function ReportBuilder({ initialTableName, onSubmitEditReport, onSubmitCreateReport, destinationDashboard, organizationName, ButtonComponent, SecondaryButtonComponent, DeleteButtonComponent, ModalComponent, TextInputComponent, SelectComponent, TableComponent, PopoverComponent, TabsComponent, CheckboxComponent, SidebarComponent, ContainerComponent, SelectColumnComponent, DraggableColumnComponent, SidebarHeadingComponent, FilterPopoverComponent, SortPopoverComponent, LimitPopoverComponent, CardComponent, LabelComponent, HeaderComponent, SubHeaderComponent, TextComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, LoadingComponent, ColumnSearchEmptyState, ChartBuilderFormContainer, isAdminEnabled, isAIEnabled, showChartBuilderTableFormatOptions, containerStyle, className, pivotRecommendationsEnabled, reportId, }: ReportBuilderProps): import("react/jsx-runtime").JSX.Element;
|
|
294
|
+
export default function ReportBuilder({ initialTableName, onSubmitEditReport, onSubmitCreateReport, destinationDashboard, organizationName, ButtonComponent, SecondaryButtonComponent, DeleteButtonComponent, ModalComponent, TextInputComponent, SelectComponent, TableComponent, PopoverComponent, TabsComponent, CheckboxComponent, SidebarComponent, ContainerComponent, SelectColumnComponent, DraggableColumnComponent, SidebarHeadingComponent, FilterPopoverComponent, SortPopoverComponent, LimitPopoverComponent, CardComponent, LabelComponent, HeaderComponent, SubHeaderComponent, TextComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, LoadingComponent, ColumnSearchEmptyState, ChartBuilderFormContainer, ChartBuilderModalComponent, isAdminEnabled, isAIEnabled, showChartBuilderTableFormatOptions, containerStyle, className, pivotRecommendationsEnabled, reportId, hideCopySQL, isChartBuilderHorizontalView, }: ReportBuilderProps): import("react/jsx-runtime").JSX.Element;
|
|
274
295
|
//# sourceMappingURL=ReportBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportBuilder.d.ts","sourceRoot":"","sources":["../../src/ReportBuilder.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,aAAa,EAEb,SAAS,EAKV,MAAM,OAAO,CAAC;AA2Jf,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ReportBuilder.d.ts","sourceRoot":"","sources":["../../src/ReportBuilder.tsx"],"names":[],"mappings":"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"}
|