@quillsql/react 2.13.34 → 2.13.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Chart.d.ts +0 -1
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +17 -14
- package/dist/cjs/ChartBuilder.d.ts +4 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +182 -106
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +6 -8
- package/dist/cjs/Dashboard.js +17 -7
- package/dist/cjs/ReportBuilder.d.ts +2 -0
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +399 -272
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +34 -12
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +17 -1
- package/dist/cjs/components/Chart/InternalChart.d.ts +0 -1
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +6 -7
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +75 -30
- package/dist/cjs/components/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectSectionList.js +21 -16
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +18 -8
- package/dist/cjs/components/QuillSelectWithCombo.js +17 -7
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +16 -4
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +9 -18
- package/dist/cjs/components/UiComponents.d.ts +2 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +44 -28
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +28 -4
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +9 -1
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.js +11 -35
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +14 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +12 -11
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +63 -18
- package/dist/cjs/models/Client.d.ts +4 -5
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Pivot.d.ts +10 -0
- package/dist/cjs/models/Pivot.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +13 -1
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +799 -64
- package/dist/cjs/utils/astProcessing.d.ts +4 -1
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +2 -2
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +6 -3
- package/dist/cjs/utils/columnProcessing.d.ts +1 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +1 -0
- package/dist/cjs/utils/dashboard.d.ts +2 -1
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +38 -10
- package/dist/cjs/utils/filterProcessing.d.ts +1 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/merge.d.ts +16 -0
- package/dist/cjs/utils/merge.d.ts.map +1 -1
- package/dist/cjs/utils/merge.js +210 -0
- package/dist/cjs/utils/paginationProcessing.d.ts +1 -1
- package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/paginationProcessing.js +3 -2
- package/dist/cjs/utils/pivotConstructor.d.ts +19 -9
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +90 -34
- package/dist/cjs/utils/queryConstructor.d.ts +8 -1
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +276 -310
- package/dist/cjs/utils/report.d.ts +25 -12
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +13 -7
- package/dist/cjs/utils/schema.d.ts +1 -1
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +3 -32
- package/dist/cjs/utils/tableProcessing.d.ts +43 -13
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +140 -75
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +10 -1
- package/dist/cjs/utils/valueFormatter.d.ts +2 -1
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +18 -14
- package/dist/esm/Chart.d.ts +0 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +0 -6
- package/dist/esm/ChartBuilder.d.ts +4 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +183 -107
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +7 -9
- package/dist/esm/ReportBuilder.d.ts +2 -0
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +400 -273
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +34 -12
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +17 -1
- package/dist/esm/components/Chart/InternalChart.d.ts +0 -1
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +6 -6
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +75 -30
- package/dist/esm/components/QuillMultiSelectSectionList.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectSectionList.js +5 -12
- package/dist/esm/components/QuillMultiSelectWithCombo.js +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +16 -4
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +9 -18
- package/dist/esm/components/UiComponents.d.ts +2 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +27 -21
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +28 -4
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +10 -2
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/esm/hooks/useVirtualTables.js +12 -36
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +14 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +12 -11
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +63 -18
- package/dist/esm/models/Client.d.ts +4 -5
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Pivot.d.ts +10 -0
- package/dist/esm/models/Pivot.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +13 -1
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +799 -64
- package/dist/esm/utils/astProcessing.d.ts +4 -1
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +2 -2
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +6 -3
- package/dist/esm/utils/columnProcessing.d.ts +1 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +1 -1
- package/dist/esm/utils/dashboard.d.ts +2 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +39 -11
- package/dist/esm/utils/filterProcessing.d.ts +1 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/merge.d.ts +16 -0
- package/dist/esm/utils/merge.d.ts.map +1 -1
- package/dist/esm/utils/merge.js +207 -0
- package/dist/esm/utils/paginationProcessing.d.ts +1 -1
- package/dist/esm/utils/paginationProcessing.d.ts.map +1 -1
- package/dist/esm/utils/paginationProcessing.js +3 -2
- package/dist/esm/utils/pivotConstructor.d.ts +19 -9
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +91 -35
- package/dist/esm/utils/queryConstructor.d.ts +8 -1
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +274 -314
- package/dist/esm/utils/report.d.ts +25 -12
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +13 -7
- package/dist/esm/utils/schema.d.ts +1 -1
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +1 -30
- package/dist/esm/utils/tableProcessing.d.ts +43 -13
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +140 -75
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +10 -1
- package/dist/esm/utils/valueFormatter.d.ts +2 -1
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +18 -14
- package/package.json +1 -1
package/dist/cjs/ChartBuilder.js
CHANGED
|
@@ -117,7 +117,8 @@ function createReportFromForm(formData, report, selectedPivotTable, rows = [], f
|
|
|
117
117
|
filtersApplied: report?.filtersApplied || [],
|
|
118
118
|
queryString: '',
|
|
119
119
|
rows: rows,
|
|
120
|
-
rowCount:
|
|
120
|
+
rowCount: selectedPivotTable?.rowCount ||
|
|
121
|
+
report?.rowCount ||
|
|
121
122
|
selectedPivotTable?.rows?.length ||
|
|
122
123
|
rows.length ||
|
|
123
124
|
0,
|
|
@@ -244,7 +245,7 @@ function ChartBuilderWithModal(props) {
|
|
|
244
245
|
*/
|
|
245
246
|
function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent,
|
|
246
247
|
// MultiSelectComponent = QuillMultiSelectComponentWithCombo,
|
|
247
|
-
ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, HeaderComponent = UiComponents_1.MemoizedHeader, SubHeaderComponent = UiComponents_1.MemoizedSubHeader, LabelComponent = UiComponents_1.MemoizedLabel, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, TextComponent = UiComponents_1.MemoizedText, PopoverComponent = UiComponents_1.MemoizedPopover, CardComponent = QuillCard_1.QuillCard, TableComponent = UiComponents_1.QuillTableComponent, ModalComponent = UiComponents_1.MemoizedModal, LoadingComponent = UiComponents_1.QuillLoadingComponent, ErrorMessageComponent = UiComponents_1.QuillErrorMessageComponent, ChartBuilderInputRowContainer = UiComponents_1.QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = UiComponents_1.QuillChartBuilderInputColumnContainer, PivotRowContainer = UiComponents_1.QuillPivotRowContainer, PivotColumnContainer = UiComponents_1.QuillPivotColumnContainer, FormContainer = UiComponents_1.QuillChartBuilderFormContainer, ErrorComponent = ChartError_1.QuillChartErrorWithAction, onClickChartError, isOpen, isHorizontalView = true, setIsOpen, dateRange, isAdmin = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, onDiscardChanges, reportId, tempReport, recommendedPivots: rp = [], createdPivots: cp = [], dateColumn, buttonLabel, organizationName, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, initialUniqueValues, initialUniqueValuesIsLoading, pivotRecommendationsEnabled = true, filtersEnabled, onFiltersEnabledChanged,
|
|
248
|
+
ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, HeaderComponent = UiComponents_1.MemoizedHeader, SubHeaderComponent = UiComponents_1.MemoizedSubHeader, LabelComponent = UiComponents_1.MemoizedLabel, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, TextComponent = UiComponents_1.MemoizedText, PopoverComponent = UiComponents_1.MemoizedPopover, CardComponent = QuillCard_1.QuillCard, TableComponent = UiComponents_1.QuillTableComponent, ModalComponent = UiComponents_1.MemoizedModal, LoadingComponent = UiComponents_1.QuillLoadingComponent, ErrorMessageComponent = UiComponents_1.QuillErrorMessageComponent, ChartBuilderInputRowContainer = UiComponents_1.QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = UiComponents_1.QuillChartBuilderInputColumnContainer, PivotRowContainer = UiComponents_1.QuillPivotRowContainer, PivotColumnContainer = UiComponents_1.QuillPivotColumnContainer, FormContainer = UiComponents_1.QuillChartBuilderFormContainer, ErrorComponent = ChartError_1.QuillChartErrorWithAction, onClickChartError, isOpen, isHorizontalView = true, setIsOpen, dateRange, isAdmin = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, onDiscardChanges, reportId, tempReport, recommendedPivots: rp = [], createdPivots: cp = [], dateColumn, buttonLabel, organizationName, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, showTableFormatOptions, initialUniqueValues, initialUniqueValuesIsLoading, pivotRecommendationsEnabled = true, filtersEnabled, onFiltersEnabledChanged,
|
|
248
249
|
// isLoading,
|
|
249
250
|
onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
250
251
|
const [client] = (0, react_1.useContext)(Context_1.ClientContext);
|
|
@@ -343,6 +344,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
343
344
|
}, [isOpen]);
|
|
344
345
|
const [dashboardOptions, setDashboardOptions] = (0, react_1.useState)([]);
|
|
345
346
|
const { reportFilters, reportFiltersDispatch, loadFiltersForReport } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
|
|
347
|
+
const { reportsDispatch } = (0, react_1.useContext)(Context_1.ReportsContext);
|
|
346
348
|
(0, react_1.useEffect)(() => {
|
|
347
349
|
loadFiltersForReport(report?.id ?? Report_1.TEMP_REPORT_ID, 'ChartBuilder', specificDashboardFilters, undefined, undefined, canonicalFilterMap, report?.dashboardName);
|
|
348
350
|
return () => {
|
|
@@ -350,16 +352,6 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
350
352
|
type: 'CLEAR_REPORT_FILTERS',
|
|
351
353
|
id: report?.id ?? tempReport?.id ?? Report_1.TEMP_REPORT_ID,
|
|
352
354
|
});
|
|
353
|
-
// TODO: Currently the behavior of Chart Builder is dependent on whether there is a TEMP_REPORT_ID in context or not
|
|
354
|
-
/* The Chart Builder can essentially be in three states
|
|
355
|
-
1. Creating a new report, all we have is an ephemeral temp report
|
|
356
|
-
2. Editing an existing report, we have a report id and the report is in the dashboard context
|
|
357
|
-
3. Editing the query of an existing report, we have a report id and the new-query report is in context under TEMP_REPORT_ID
|
|
358
|
-
One can imagine this going wrong: somehow the temp report gets set by SQLEditor or ReportBuilder but never cleared
|
|
359
|
-
and now its going to start popping up during state 2 rather than the real report.
|
|
360
|
-
For now we're going on faith that unmounting will always clear the temp report
|
|
361
|
-
but we may want to fiddle with the props to make this more robust
|
|
362
|
-
*/
|
|
363
355
|
};
|
|
364
356
|
}, []);
|
|
365
357
|
const currentDashboardFilters = (0, react_1.useMemo)(() => {
|
|
@@ -376,7 +368,13 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
376
368
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
377
369
|
const [pivotError, setPivotError] = (0, react_1.useState)(undefined);
|
|
378
370
|
const pivotData = report?.pivotRows && report?.pivotColumns
|
|
379
|
-
? {
|
|
371
|
+
? {
|
|
372
|
+
rows: report.pivotRows,
|
|
373
|
+
columns: report.pivotColumns,
|
|
374
|
+
rowCount: report.pivotRowCount ?? report.pivotRows.length,
|
|
375
|
+
pivotQuery: report.pivotQuery ?? '',
|
|
376
|
+
comparisonPivotQuery: report.comparisonPivotQuery,
|
|
377
|
+
}
|
|
380
378
|
: undefined;
|
|
381
379
|
const columns = report?.columnInternal ?? [];
|
|
382
380
|
const destinationDashboard = report?.dashboardName;
|
|
@@ -468,7 +466,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
468
466
|
if (!client) {
|
|
469
467
|
return;
|
|
470
468
|
}
|
|
471
|
-
const { queryEndpoint, queryHeaders, publicKey, withCredentials
|
|
469
|
+
const { queryEndpoint, queryHeaders, publicKey, withCredentials } = client;
|
|
472
470
|
if (queryEndpoint) {
|
|
473
471
|
const response = await fetch(queryEndpoint, {
|
|
474
472
|
method: 'POST',
|
|
@@ -567,7 +565,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
567
565
|
}, [dashboardConfig, formData.dashboardName, report?.dashboardName]);
|
|
568
566
|
const currentDashboardTenants = (0, react_1.useMemo)(() => {
|
|
569
567
|
return (currentDashboard?.tenantKeys?.map((tenantKey) => client?.allTenantTypes?.find((t) => t.tenantField === tenantKey)) ?? []);
|
|
570
|
-
}, [
|
|
568
|
+
}, [client?.allTenantTypes, currentDashboard?.tenantKeys]);
|
|
571
569
|
const dashboardOwner = currentDashboardTenants?.[0];
|
|
572
570
|
const invalidColumns = (0, react_1.useMemo)(() => {
|
|
573
571
|
if (!rows || !rows.length) {
|
|
@@ -679,21 +677,23 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
679
677
|
getFormData();
|
|
680
678
|
}, []);
|
|
681
679
|
const allTenantMap = (0, react_1.useMemo)(() => {
|
|
682
|
-
return client?.allTenantTypes?.reduce((acc, tenantType) => {
|
|
680
|
+
return (client?.allTenantTypes?.reduce((acc, tenantType) => {
|
|
683
681
|
if (tenantType.scope === 'database') {
|
|
684
|
-
acc[tenantType.tenantField] =
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
682
|
+
acc[tenantType.tenantField] =
|
|
683
|
+
tenantType.flags?.map((t) => ({
|
|
684
|
+
label: t,
|
|
685
|
+
value: t,
|
|
686
|
+
})) ?? [];
|
|
688
687
|
}
|
|
689
688
|
else {
|
|
690
|
-
acc[tenantType.tenantField] =
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
689
|
+
acc[tenantType.tenantField] =
|
|
690
|
+
tenantType.tenantIds?.map((t) => ({
|
|
691
|
+
label: t.label,
|
|
692
|
+
value: t.flag,
|
|
693
|
+
})) ?? [];
|
|
694
694
|
}
|
|
695
695
|
return acc;
|
|
696
|
-
}, {}) ?? {};
|
|
696
|
+
}, {}) ?? {});
|
|
697
697
|
}, [client?.allTenantTypes]);
|
|
698
698
|
const [selectedPivotTable, setSelectedPivotTable] = (0, react_1.useState)(pivotData);
|
|
699
699
|
const pivotCardTable = (0, react_1.useMemo)(() => {
|
|
@@ -716,8 +716,9 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
716
716
|
: undefined;
|
|
717
717
|
if (pivot) {
|
|
718
718
|
let dateBucket = undefined;
|
|
719
|
+
let dateFilter = undefined;
|
|
719
720
|
if (filtersEnabled) {
|
|
720
|
-
|
|
721
|
+
dateFilter = dashboardFilters?.find((f) => f.filterType === 'date_range');
|
|
721
722
|
dateBucket =
|
|
722
723
|
dateFilter?.startDate && dateFilter?.endDate
|
|
723
724
|
? (0, dates_1.getDateBucketFromRange)({
|
|
@@ -730,11 +731,15 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
730
731
|
const pivotTable = await (0, PivotModal_1.generatePivotTable)({
|
|
731
732
|
pivot,
|
|
732
733
|
dateBucket,
|
|
733
|
-
|
|
734
|
+
dateFilter,
|
|
735
|
+
report: report
|
|
736
|
+
? { ...report, ...(tableInfo ?? { itemQuery }) }
|
|
737
|
+
: undefined,
|
|
734
738
|
client,
|
|
735
739
|
uniqueValues,
|
|
736
740
|
dashboardName: destinationDashboard,
|
|
737
741
|
tenants,
|
|
742
|
+
additionalProcessing: baseProcessing,
|
|
738
743
|
});
|
|
739
744
|
setSelectedPivotTable(pivotTable);
|
|
740
745
|
}
|
|
@@ -801,7 +806,21 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
801
806
|
return;
|
|
802
807
|
}
|
|
803
808
|
setRowCountIsLoading(true);
|
|
804
|
-
const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)(
|
|
809
|
+
const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)({
|
|
810
|
+
query,
|
|
811
|
+
client,
|
|
812
|
+
tenants,
|
|
813
|
+
processing,
|
|
814
|
+
customFields: schemaData.customFields,
|
|
815
|
+
filters: filtersEnabled ? overrideFilters : undefined,
|
|
816
|
+
dateField: filtersEnabled
|
|
817
|
+
? (report?.dateField ?? formData.dateField)
|
|
818
|
+
: undefined,
|
|
819
|
+
rowsOnly: false,
|
|
820
|
+
rowCountOnly: true,
|
|
821
|
+
filterMap: canonicalFilterMap,
|
|
822
|
+
dashboardName: destinationDashboard,
|
|
823
|
+
});
|
|
805
824
|
if (tableInfo.rowCount !== undefined) {
|
|
806
825
|
setRowCount(tableInfo.rowCount);
|
|
807
826
|
}
|
|
@@ -839,7 +858,21 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
839
858
|
}
|
|
840
859
|
try {
|
|
841
860
|
setIsLoading(true);
|
|
842
|
-
const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)(
|
|
861
|
+
const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)({
|
|
862
|
+
query,
|
|
863
|
+
client,
|
|
864
|
+
tenants,
|
|
865
|
+
processing,
|
|
866
|
+
customFields: schemaData.customFields,
|
|
867
|
+
filters: filtersEnabled ? overrideFilters : undefined,
|
|
868
|
+
dateField: filtersEnabled
|
|
869
|
+
? (report?.dateField ?? formData.dateField)
|
|
870
|
+
: undefined,
|
|
871
|
+
rowsOnly: true,
|
|
872
|
+
rowCountOnly: false,
|
|
873
|
+
filterMap: canonicalFilterMap,
|
|
874
|
+
dashboardName: destinationDashboard,
|
|
875
|
+
});
|
|
843
876
|
setCurrentProcessing(processing);
|
|
844
877
|
setRows(tableInfo.rows);
|
|
845
878
|
setProcessedColumns(processColumns(tableInfo.columns));
|
|
@@ -861,7 +894,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
861
894
|
console.log(e);
|
|
862
895
|
}
|
|
863
896
|
};
|
|
864
|
-
const onPageChange = (page) => {
|
|
897
|
+
const onPageChange = (page, isPivotTable) => {
|
|
865
898
|
// only fetch if report is valid, else use query task
|
|
866
899
|
if (currentProcessing.page &&
|
|
867
900
|
(0, paginationProcessing_1.shouldFetchMore)(currentProcessing.page, page, maxPage)) {
|
|
@@ -874,23 +907,23 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
874
907
|
page: newPagination,
|
|
875
908
|
};
|
|
876
909
|
setCurrentProcessing(updatedProcessing);
|
|
877
|
-
updateTableRows(updatedProcessing);
|
|
910
|
+
updateTableRows(updatedProcessing, false, isPivotTable);
|
|
878
911
|
}
|
|
879
912
|
if (page > maxPage) {
|
|
880
913
|
setMaxPage(page);
|
|
881
914
|
}
|
|
882
915
|
};
|
|
883
|
-
const onSortChange = (sort) => {
|
|
916
|
+
const onSortChange = (sort, isPivotTable) => {
|
|
884
917
|
// if (shouldSortInMemory(baseProcessing.page, rowCount)) {
|
|
885
918
|
// return;
|
|
886
919
|
// }
|
|
887
920
|
const updatedProcessing = { ...baseProcessing, sort };
|
|
888
|
-
updateTableRows(updatedProcessing, true);
|
|
921
|
+
updateTableRows(updatedProcessing, true, isPivotTable);
|
|
889
922
|
setCurrentProcessing(updatedProcessing);
|
|
890
923
|
setCurrentPage(0);
|
|
891
924
|
setMaxPage(0);
|
|
892
925
|
};
|
|
893
|
-
const updateTableRows = async (processing, resetRows = false) => {
|
|
926
|
+
const updateTableRows = async (processing, resetRows = false, isPivotTable = false) => {
|
|
894
927
|
if (!client) {
|
|
895
928
|
return;
|
|
896
929
|
}
|
|
@@ -898,17 +931,40 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
898
931
|
setIsLoading(true);
|
|
899
932
|
try {
|
|
900
933
|
const updatedProcessing = { ...currentProcessing, ...processing };
|
|
901
|
-
const paginatedRows = await (0, tableProcessing_1.fetchResultsByQuery)(
|
|
902
|
-
?
|
|
903
|
-
:
|
|
934
|
+
const paginatedRows = await (0, tableProcessing_1.fetchResultsByQuery)({
|
|
935
|
+
query: isPivotTable && report.pivotQuery ? report.pivotQuery : query,
|
|
936
|
+
comparisonQuery: isPivotTable && report.comparisonPivotQuery
|
|
937
|
+
? report.comparisonPivotQuery
|
|
938
|
+
: undefined,
|
|
939
|
+
client,
|
|
940
|
+
tenants,
|
|
941
|
+
processing: updatedProcessing,
|
|
942
|
+
customFields: schemaData.customFields,
|
|
943
|
+
filters: filtersEnabled ? currentDashboardFilters : undefined,
|
|
944
|
+
dateField: filtersEnabled
|
|
945
|
+
? (report?.dateField ?? formData.dateField)
|
|
946
|
+
: undefined,
|
|
947
|
+
rowsOnly: false,
|
|
948
|
+
rowCountOnly: false,
|
|
949
|
+
filterMap: canonicalFilterMap,
|
|
950
|
+
dashboardName: destinationDashboard,
|
|
951
|
+
pivot: isPivotTable ? report.pivot : undefined,
|
|
952
|
+
getPivotRowCount: false,
|
|
953
|
+
});
|
|
904
954
|
if (paginatedRows.error) {
|
|
905
955
|
throw new Error('Error fetching chart');
|
|
906
956
|
}
|
|
907
|
-
|
|
957
|
+
const prevRows = isPivotTable && selectedPivotTable ? selectedPivotTable.rows : rows;
|
|
958
|
+
let updatedRows = [...prevRows, ...paginatedRows.rows];
|
|
908
959
|
if (resetRows) {
|
|
909
|
-
|
|
960
|
+
updatedRows = paginatedRows.rows;
|
|
961
|
+
}
|
|
962
|
+
if (isPivotTable && selectedPivotTable) {
|
|
963
|
+
setSelectedPivotTable({ ...selectedPivotTable, rows: updatedRows });
|
|
964
|
+
}
|
|
965
|
+
else {
|
|
966
|
+
setRows(updatedRows);
|
|
910
967
|
}
|
|
911
|
-
setRows(tempRows);
|
|
912
968
|
setCurrentProcessing(updatedProcessing);
|
|
913
969
|
}
|
|
914
970
|
catch (e) {
|
|
@@ -1021,6 +1077,9 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1021
1077
|
setSelectedPivotTable({
|
|
1022
1078
|
rows: pivotData.rows,
|
|
1023
1079
|
columns: pivotData.columns,
|
|
1080
|
+
rowCount: pivotData.rowCount,
|
|
1081
|
+
pivotQuery: pivotData.pivotQuery,
|
|
1082
|
+
comparisonPivotQuery: pivotData.comparisonPivotQuery,
|
|
1024
1083
|
});
|
|
1025
1084
|
}
|
|
1026
1085
|
else {
|
|
@@ -1062,7 +1121,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1062
1121
|
yAxisFields: [
|
|
1063
1122
|
...formData.yAxisFields,
|
|
1064
1123
|
// @ts-ignore
|
|
1065
|
-
{ label: '', field: '', chartType: '', format: '' },
|
|
1124
|
+
{ label: '', field: '', chartType: '', format: 'whole_number' },
|
|
1066
1125
|
],
|
|
1067
1126
|
});
|
|
1068
1127
|
}
|
|
@@ -1139,30 +1198,44 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1139
1198
|
: report && !isAdmin && formData.template
|
|
1140
1199
|
? false
|
|
1141
1200
|
: formData.template,
|
|
1142
|
-
reportFlags: formFlags
|
|
1143
|
-
.
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1201
|
+
reportFlags: formFlags
|
|
1202
|
+
? Object.fromEntries(Object.entries(formFlags)
|
|
1203
|
+
.filter(([, value]) => value.length > 0)
|
|
1204
|
+
.map(([key, value]) => {
|
|
1205
|
+
return [
|
|
1206
|
+
key,
|
|
1207
|
+
Object.keys(allTenantMap).length > 1 &&
|
|
1208
|
+
allTenantMap[key]?.length === value.length
|
|
1209
|
+
? constants_1.ALL_TENANTS
|
|
1210
|
+
: value,
|
|
1211
|
+
];
|
|
1212
|
+
}))
|
|
1213
|
+
: undefined,
|
|
1147
1214
|
};
|
|
1148
1215
|
const resp = await (0, report_1.saveReport)({
|
|
1149
|
-
report: newReport,
|
|
1216
|
+
report: { ...newReport, rows: undefined, pivotRows: undefined }, // stop including rows in request
|
|
1150
1217
|
dashboardItemId,
|
|
1151
1218
|
client,
|
|
1152
1219
|
});
|
|
1153
1220
|
if (resp && resp.name !== 'error') {
|
|
1221
|
+
const data = {
|
|
1222
|
+
...resp,
|
|
1223
|
+
rows,
|
|
1224
|
+
columns: formData.columns.filter((col) => !invalidColumns.includes(col)),
|
|
1225
|
+
pivotRows: selectedPivotTable?.rows || undefined,
|
|
1226
|
+
pivotColumns: selectedPivotTable?.columns || undefined,
|
|
1227
|
+
triggerReload: true,
|
|
1228
|
+
error: undefined,
|
|
1229
|
+
};
|
|
1154
1230
|
dispatch({
|
|
1155
1231
|
type: 'ADD_DASHBOARD_ITEM',
|
|
1156
1232
|
id: resp.id,
|
|
1157
|
-
data
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
triggerReload: true,
|
|
1164
|
-
error: undefined,
|
|
1165
|
-
},
|
|
1233
|
+
data,
|
|
1234
|
+
});
|
|
1235
|
+
reportsDispatch({
|
|
1236
|
+
type: 'ADD_REPORT',
|
|
1237
|
+
id: resp.id,
|
|
1238
|
+
data,
|
|
1166
1239
|
});
|
|
1167
1240
|
}
|
|
1168
1241
|
setIsOpen(false);
|
|
@@ -1207,7 +1280,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1207
1280
|
maxWidth: !isOpen ? '100%' : `calc(100% - ${formWidth}px - 20px)`, // width of left sidebar plus gap
|
|
1208
1281
|
}),
|
|
1209
1282
|
...(!isHorizontalView && isOpen && { width: formWidth }),
|
|
1210
|
-
}, children: [!isEditingMode && (report?.adminError || report?.error) ? ((0, jsx_runtime_1.jsx)(ErrorComponent, { label: report.adminError || report.error, onClick: onClickChartError })) : ((isHorizontalView || (!isOpen && windowWidth
|
|
1283
|
+
}, children: [!isEditingMode && (report?.adminError || report?.error) ? ((0, jsx_runtime_1.jsx)(ErrorComponent, { label: report.adminError || report.error, onClick: onClickChartError })) : ((isHorizontalView || (!isOpen && windowWidth > 1200)) && ((0, jsx_runtime_1.jsx)(InternalChart_1.default, { report: chartData, filtersEnabled: filtersEnabled, setFiltersEnabled: (hide) => {
|
|
1211
1284
|
onFiltersEnabledChanged(hide);
|
|
1212
1285
|
}, colors: theme?.chartColors, loading: false, hideDateRangeFilter: hideDateRangeFilter, isAdmin: isAdmin, containerStyle: {
|
|
1213
1286
|
width: '100%',
|
|
@@ -1218,8 +1291,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1218
1291
|
...(isHorizontalView && { flexGrow: 1 }),
|
|
1219
1292
|
}, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen }))),
|
|
1220
1293
|
// Make sure to display non-pivoted table when using pivot chart
|
|
1221
|
-
|
|
1222
|
-
(isHorizontalView || (!isOpen && windowWidth < 1200)) && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1294
|
+
(isHorizontalView || (!isOpen && windowWidth < 1200)) && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1223
1295
|
width: '100%',
|
|
1224
1296
|
// height:
|
|
1225
1297
|
// isHorizontalView || !isOpen
|
|
@@ -1234,11 +1306,11 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1234
1306
|
}, currentPage: currentPage, rowCount: rowCount, isLoading: isLoading, rowCountIsLoading: rowCountIsLoading, disableSort: disableSort })) : ((0, jsx_runtime_1.jsx)(TableComponent, { rows: formattedRows, columns: selectedPivotTable
|
|
1235
1307
|
? selectedPivotTable.columns
|
|
1236
1308
|
: formData.columns, onPageChange: (page) => {
|
|
1237
|
-
onPageChange(page);
|
|
1309
|
+
onPageChange(page, true);
|
|
1238
1310
|
setCurrentPage(page);
|
|
1239
1311
|
}, onSortChange: (sort) => {
|
|
1240
|
-
onSortChange && onSortChange(sort);
|
|
1241
|
-
}, currentPage: currentPage, rowCount: selectedPivotTable ?
|
|
1312
|
+
onSortChange && onSortChange(sort, true);
|
|
1313
|
+
}, currentPage: currentPage, rowCount: selectedPivotTable ? pivotData?.rowCount : rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading, disableSort: disableSort })) }))] }), isOpen && ((0, jsx_runtime_1.jsxs)("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
|
|
1242
1314
|
display: 'flex',
|
|
1243
1315
|
flexDirection: 'column',
|
|
1244
1316
|
gap: 20,
|
|
@@ -1253,15 +1325,15 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1253
1325
|
paddingTop: modalPadding,
|
|
1254
1326
|
paddingBottom: modalPadding,
|
|
1255
1327
|
}),
|
|
1256
|
-
}, children: [(0, jsx_runtime_1.jsxs)(FormContainer, { children: [(formData.pivot || formData.chartType !== 'table') &&
|
|
1257
|
-
(0, jsx_runtime_1.jsx)(InternalChart_1.default, { report: chartData, filtersEnabled: filtersEnabled, setFiltersEnabled: (hide) => {
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1328
|
+
}, children: [(0, jsx_runtime_1.jsxs)(FormContainer, { children: [(formData.pivot || formData.chartType !== 'table') &&
|
|
1329
|
+
windowWidth < 1200 && ((0, jsx_runtime_1.jsx)(InternalChart_1.default, { report: chartData, filtersEnabled: filtersEnabled, setFiltersEnabled: (hide) => {
|
|
1330
|
+
onFiltersEnabledChanged(hide);
|
|
1331
|
+
}, colors: theme?.chartColors, loading: false, hideDateRangeFilter: hideDateRangeFilter, isAdmin: isAdmin, containerStyle: {
|
|
1332
|
+
width: '100%',
|
|
1333
|
+
height: 500,
|
|
1334
|
+
flexGrow: 1,
|
|
1335
|
+
marginBottom: 20,
|
|
1336
|
+
}, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen })), (0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)("div", { ref: inputRef, style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(TextInputComponent
|
|
1265
1337
|
// {...autofocusRefProp}
|
|
1266
1338
|
, {
|
|
1267
1339
|
// {...autofocusRefProp}
|
|
@@ -1283,7 +1355,9 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1283
1355
|
// marginTop: 6,
|
|
1284
1356
|
display: 'flex',
|
|
1285
1357
|
flexDirection: 'column',
|
|
1286
|
-
}, children: (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotValueField2: pivotValueField2, setPivotValueField2: setPivotValueField2, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processedColumns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot, query: query, pivotCountRequest: 4, initialUniqueValues: initialUniqueValues, uniqueValuesIsLoading: initialUniqueValuesIsLoading, initialSelectedPivotTable: selectedPivotTable, pivotRecommendationsEnabled: pivotRecommendationsEnabled, report: report, dashboardName: destinationDashboard
|
|
1358
|
+
}, children: (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotValueField2: pivotValueField2, setPivotValueField2: setPivotValueField2, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processedColumns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot, query: query, pivotCountRequest: 4, initialUniqueValues: initialUniqueValues, uniqueValuesIsLoading: initialUniqueValuesIsLoading, initialSelectedPivotTable: selectedPivotTable, pivotRecommendationsEnabled: pivotRecommendationsEnabled, report: report, dashboardName: destinationDashboard, dateFilter: filtersEnabled
|
|
1359
|
+
? currentDashboardFilters?.find((f) => f.filterType === 'date_range')
|
|
1360
|
+
: undefined }) }), formData.pivot && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", { style: { width: pivotCardWidth }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: pivotCardTable, theme: theme, index: 0, onSelectPivot: () => {
|
|
1287
1361
|
setIsEdittingPivot(true);
|
|
1288
1362
|
setShowPivotPopover(true);
|
|
1289
1363
|
setPivotRowField(formData.pivot?.rowField);
|
|
@@ -1292,13 +1366,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1292
1366
|
setPivotValueField2(formData.pivot?.valueField2);
|
|
1293
1367
|
setPivotAggregation(formData.pivot?.aggregationType);
|
|
1294
1368
|
setPivotPopUpTitle('Edit pivot');
|
|
1295
|
-
}, selectedPivotIndex: -1, onEditPivot: () => { }, CardComponent: CardComponent, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent }) }) }))] })] }), (formData.pivot || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [
|
|
1296
|
-
onFiltersEnabledChanged(hide);
|
|
1297
|
-
}, colors: theme?.chartColors, loading: false, hideDateRangeFilter: hideDateRangeFilter, isAdmin: isAdmin, containerStyle: {
|
|
1298
|
-
width: '100%',
|
|
1299
|
-
height: 500,
|
|
1300
|
-
flexGrow: 1,
|
|
1301
|
-
}, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1369
|
+
}, selectedPivotIndex: -1, onEditPivot: () => { }, CardComponent: CardComponent, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent }) }) }))] })] }), (formData.pivot || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1302
1370
|
display: 'flex',
|
|
1303
1371
|
flexDirection: 'column',
|
|
1304
1372
|
}, children: (0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.xAxisLabel ?? '' }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.xAxisField, onChange: (e) => handleChange(e.target.value, 'xAxisField'), options: formData.pivot
|
|
@@ -1307,12 +1375,12 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1307
1375
|
label: elem.field,
|
|
1308
1376
|
value: elem.field,
|
|
1309
1377
|
})), width: 200 }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: "chart-builder-x-axis-label", width: 200, value: formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot &&
|
|
1310
|
-
(0, PivotModal_1.isDateField)(formData.pivot.rowFieldType
|
|
1378
|
+
(0, PivotModal_1.isDateField)(formData.pivot.rowFieldType ?? '')
|
|
1311
1379
|
? 'pivot_date'
|
|
1312
1380
|
: formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
|
|
1313
|
-
(0, PivotModal_1.isDateField)(formData.pivot.rowFieldType
|
|
1381
|
+
(0, PivotModal_1.isDateField)(formData.pivot.rowFieldType ?? '')
|
|
1314
1382
|
? [{ value: 'pivot_date', label: 'date' }]
|
|
1315
|
-
: formatOptions, width: 200 })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields.map((yAxisField, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
|
|
1383
|
+
: formatOptions, width: 200, hideEmptyOption: true })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields.map((yAxisField, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
|
|
1316
1384
|
? formData.pivot.valueField || 'count'
|
|
1317
1385
|
: yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
|
|
1318
1386
|
? [
|
|
@@ -1332,13 +1400,10 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1332
1400
|
})), width: 200 }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: "chart-builder-y-axis-label", width: 200, value: yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'yAxisFields.label', index) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
|
|
1333
1401
|
? NUMBER_OPTIONS.find((option) => {
|
|
1334
1402
|
return (option.value === yAxisField.format);
|
|
1335
|
-
})
|
|
1336
|
-
? // @ts-ignore
|
|
1337
|
-
NUMBER_OPTIONS.find((option) => option.value === yAxisField.format).value
|
|
1338
|
-
: ''
|
|
1403
|
+
})?.value ?? NUMBER_OPTIONS[0].value
|
|
1339
1404
|
: yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
|
|
1340
1405
|
? NUMBER_OPTIONS
|
|
1341
|
-
: formatOptions, width: 200 }), formData.pivot
|
|
1406
|
+
: formatOptions, width: 200, hideEmptyOption: true }), !formData.pivot && ((0, jsx_runtime_1.jsx)("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: (0, jsx_runtime_1.jsx)(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))), !formData.pivot && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" }) }))] })] }))] })), windowWidth < 1200 && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1342
1407
|
width: '100%',
|
|
1343
1408
|
height: isHorizontalView || !isOpen ? 'calc(50% - 10px)' : 400,
|
|
1344
1409
|
flexGrow: 1,
|
|
@@ -1350,11 +1415,11 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1350
1415
|
}, currentPage: currentPage, rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading, disableSort: disableSort })) : ((0, jsx_runtime_1.jsx)(TableComponent, { rows: formattedRows, columns: selectedPivotTable
|
|
1351
1416
|
? selectedPivotTable.columns
|
|
1352
1417
|
: formData.columns, onPageChange: (page) => {
|
|
1353
|
-
onPageChange(page);
|
|
1418
|
+
onPageChange(page, true);
|
|
1354
1419
|
setCurrentPage(page);
|
|
1355
1420
|
}, onSortChange: (sort) => {
|
|
1356
|
-
onSortChange && onSortChange(sort);
|
|
1357
|
-
}, currentPage: currentPage, rowCount: selectedPivotTable ?
|
|
1421
|
+
onSortChange && onSortChange(sort, true);
|
|
1422
|
+
}, currentPage: currentPage, rowCount: selectedPivotTable ? pivotData?.rowCount : rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading, disableSort: disableSort })) })), (showTableFormatOptions || isAdmin) && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1358
1423
|
display: 'flex',
|
|
1359
1424
|
flexDirection: 'column',
|
|
1360
1425
|
}, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Table" }), (0, jsx_runtime_1.jsx)(SubHeaderComponent, { label: "Columns" })] }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputColumnContainer, { children: [formData.pivot &&
|
|
@@ -1374,7 +1439,10 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1374
1439
|
? 'pivot_date'
|
|
1375
1440
|
: 'string'
|
|
1376
1441
|
: formData.pivot?.valueFieldType ||
|
|
1377
|
-
|
|
1442
|
+
(formData.pivot?.aggregationType ===
|
|
1443
|
+
'percentage'
|
|
1444
|
+
? 'percent'
|
|
1445
|
+
: 'two_decimal_places'), onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
|
|
1378
1446
|
? (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType || '')
|
|
1379
1447
|
? [{ label: 'date', value: 'pivot_date' }]
|
|
1380
1448
|
: [{ label: 'string', value: 'string' }]
|
|
@@ -1455,7 +1523,8 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1455
1523
|
userSelect: 'none',
|
|
1456
1524
|
}, children: "Custom" })] }), client?.allTenantTypes?.length === 1 ? ((0, jsx_runtime_1.jsx)(QuillMultiSelectWithCombo_1.QuillMultiSelectComponentWithCombo, { value: formFlags?.[dashboardOwner.tenantField] ?? [], onChange: (e) => setFormFlags({
|
|
1457
1525
|
...formFlags,
|
|
1458
|
-
[dashboardOwner.tenantField]: e.target
|
|
1526
|
+
[dashboardOwner.tenantField]: e.target
|
|
1527
|
+
.value,
|
|
1459
1528
|
}), options: dashboardOwner.scope === 'database'
|
|
1460
1529
|
? (dashboardOwner.flags?.map((f) => ({
|
|
1461
1530
|
label: f,
|
|
@@ -1468,18 +1537,26 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1468
1537
|
value: t.flag,
|
|
1469
1538
|
})) ?? []), width: 200, emptyLabel: dashboardOwner.scope === 'database'
|
|
1470
1539
|
? 'No flags supplied'
|
|
1471
|
-
: undefined, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
|
|
1540
|
+
: undefined, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
|
|
1541
|
+
display: customTenantAccess ? 'inline' : 'none',
|
|
1542
|
+
marginTop: -1,
|
|
1543
|
+
marginBottom: -4,
|
|
1544
|
+
} })) : ((0, jsx_runtime_1.jsx)(QuillMultiSelectSectionList_1.QuillMultiSelectSectionList, { value: formFlags ?? {}, onChange: (e) => setFormFlags(e.target.value), options: allTenantMap, sectionHeaderMap: client?.allTenantTypes?.reduce((acc, tenantType) => {
|
|
1472
1545
|
if (tenantType.scope === 'database') {
|
|
1473
1546
|
acc[constants_1.SINGLE_TENANT] = 'Database';
|
|
1474
1547
|
return acc;
|
|
1475
1548
|
}
|
|
1476
1549
|
acc[tenantType.tenantField] = tenantType.name;
|
|
1477
1550
|
return acc;
|
|
1478
|
-
}, {}) ?? {}, width: 200, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1551
|
+
}, {}) ?? {}, width: 200, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
|
|
1552
|
+
display: customTenantAccess ? 'inline' : 'none',
|
|
1553
|
+
marginTop: -1,
|
|
1554
|
+
marginBottom: -4,
|
|
1555
|
+
}, owner: dashboardOwner.tenantField }))] }) })] })), specificDashboardFilters.length > 0 &&
|
|
1556
|
+
isAdmin &&
|
|
1557
|
+
formData.dateField &&
|
|
1558
|
+
dashboardConfig[formData.dashboardName ?? '']?.config.dateFilter
|
|
1559
|
+
?.label && ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1483
1560
|
display: 'flex',
|
|
1484
1561
|
flexDirection: 'column',
|
|
1485
1562
|
gap: 6,
|
|
@@ -1510,14 +1587,12 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1510
1587
|
.map((filter, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(TextInputComponent, { id: 'filterMap.' + filter.label, value: filter.label, width: 200, onChange: () => { }, label: index === 0 &&
|
|
1511
1588
|
!(isAdmin &&
|
|
1512
1589
|
formData.dateField &&
|
|
1513
|
-
dashboardConfig[formData.dashboardName ?? '']
|
|
1514
|
-
?.config.dateFilter?.label)
|
|
1590
|
+
dashboardConfig[formData.dashboardName ?? '']?.config.dateFilter?.label)
|
|
1515
1591
|
? 'Filter'
|
|
1516
1592
|
: '', disabled: true }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: index === 0 &&
|
|
1517
1593
|
!(isAdmin &&
|
|
1518
1594
|
formData.dateField &&
|
|
1519
|
-
dashboardConfig[formData.dashboardName ?? '']
|
|
1520
|
-
?.config.dateFilter?.label)
|
|
1595
|
+
dashboardConfig[formData.dashboardName ?? '']?.config.dateFilter?.label)
|
|
1521
1596
|
? 'Virtual Table'
|
|
1522
1597
|
: '', value: filterMap[filter.label]?.table ?? filter.table, onChange: (e) => setFilterMap({
|
|
1523
1598
|
...filterMap,
|
|
@@ -1535,8 +1610,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1535
1610
|
})), width: 200 }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: index === 0 &&
|
|
1536
1611
|
!(isAdmin &&
|
|
1537
1612
|
formData.dateField &&
|
|
1538
|
-
dashboardConfig[formData.dashboardName ?? '']
|
|
1539
|
-
?.config.dateFilter?.label)
|
|
1613
|
+
dashboardConfig[formData.dashboardName ?? '']?.config.dateFilter?.label)
|
|
1540
1614
|
? 'Field'
|
|
1541
1615
|
: '', value: filterMap[filter.label]?.field ?? filter.field, onChange: (e) => setFilterMap({
|
|
1542
1616
|
...filterMap,
|
|
@@ -1564,8 +1638,10 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1564
1638
|
display: 'flex',
|
|
1565
1639
|
flexDirection: 'row',
|
|
1566
1640
|
justifyContent: 'flex-end',
|
|
1567
|
-
marginTop: 'auto',
|
|
1568
1641
|
gap: 10,
|
|
1642
|
+
position: 'absolute',
|
|
1643
|
+
bottom: 16,
|
|
1644
|
+
right: 16,
|
|
1569
1645
|
}, children: [!hideDeleteButton && !isHorizontalView && report && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1570
1646
|
display: 'flex',
|
|
1571
1647
|
flexDirection: 'row',
|
|
@@ -1573,7 +1649,7 @@ onClickChartElement, isEditingMode = false, disableSort = true, }) {
|
|
|
1573
1649
|
justifyContent: 'space-between',
|
|
1574
1650
|
alignItems: 'center',
|
|
1575
1651
|
gap: 6,
|
|
1576
|
-
}, children: [filterIssues.length === 0 ? ((0, jsx_runtime_1.jsx)("div", {})) : ((0, jsx_runtime_1.jsx)(ErrorMessageComponent, { errorMessage: filterIssues[0] || 'Dashbord - Report issues', containerStyle: { height: '100%' } })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'row', gap: 10 }, children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
|
|
1652
|
+
}, children: [filterIssues.length === 0 ? ((0, jsx_runtime_1.jsx)("div", {})) : ((0, jsx_runtime_1.jsx)(ErrorMessageComponent, { errorMessage: filterIssues[0] || 'Dashbord - Report issues', containerStyle: { height: '100%' } })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'row', gap: 10, backgroundColor: 'white' }, children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
|
|
1577
1653
|
setIsOpen(false);
|
|
1578
1654
|
onDiscardChanges && onDiscardChanges();
|
|
1579
1655
|
}, label: 'Discard changes' }), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => {
|