@quillsql/react 2.13.7 → 2.13.9
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 +5 -5
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +19 -8
- package/dist/cjs/ChartBuilder.d.ts +1 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +58 -93
- package/dist/cjs/ChartEditor.js +1 -1
- package/dist/cjs/Context.d.ts +9 -8
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +119 -34
- package/dist/cjs/Dashboard.d.ts +20 -8
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +68 -58
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +2 -2
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +1 -2
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +20 -20
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +64 -52
- package/dist/cjs/ReportBuilder.d.ts +2 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +339 -339
- package/dist/cjs/SQLEditor.d.ts +1 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +30 -18
- package/dist/cjs/components/Banner/index.d.ts +0 -1
- package/dist/cjs/components/Banner/index.d.ts.map +1 -1
- package/dist/cjs/components/Banner/index.js +1 -1
- package/dist/cjs/components/Chart/BarChart.d.ts +0 -1
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +1 -1
- package/dist/cjs/components/Chart/BarList.js +1 -2
- package/dist/cjs/components/Chart/ChartError.js +2 -3
- package/dist/cjs/components/Chart/ChartSkeleton.js +1 -1
- package/dist/cjs/components/Chart/ChartTooltip.js +1 -1
- package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts +0 -1
- package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts.map +1 -1
- package/dist/cjs/components/Chart/ChartTooltipFrame.js +1 -1
- package/dist/cjs/components/Chart/ChartTooltipGroup.js +1 -1
- package/dist/cjs/components/Chart/ChartTooltipRow.js +1 -1
- package/dist/cjs/components/Chart/LineChart.d.ts +0 -1
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +1 -1
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/PieChart.js +18 -9
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.js +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +10 -2
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +9 -23
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts +0 -1
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSection.js +1 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts +0 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.js +1 -1
- package/dist/cjs/components/Dashboard/DashboardTemplate.js +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +9 -7
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +104 -61
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +3 -3
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +1 -1
- package/dist/cjs/components/Dashboard/TemplateChartComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/TemplateChartComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TemplateChartComponent.js +1 -1
- package/dist/cjs/components/Dashboard/TemplateMetricComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/TemplateMetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TemplateMetricComponent.js +1 -1
- package/dist/cjs/components/Dashboard/TemplateTableComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/TemplateTableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TemplateTableComponent.js +1 -1
- package/dist/cjs/components/Dashboard/util.js +2 -3
- package/dist/cjs/components/QuillCard.js +1 -2
- package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelect.js +21 -20
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +172 -70
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +9 -8
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +26 -12
- package/dist/cjs/components/QuillTable.d.ts +5 -1
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +5 -3
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -3
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +5 -6
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +3 -4
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +45 -39
- package/dist/cjs/components/ReportBuilder/FilterStack.js +1 -1
- package/dist/cjs/components/ReportBuilder/ast.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ast.js +2 -2
- package/dist/cjs/components/ReportBuilder/convert.js +11 -12
- package/dist/cjs/components/ReportBuilder/postgres.js +4 -4
- package/dist/cjs/components/ReportBuilder/ui.d.ts +3 -3
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +21 -23
- package/dist/cjs/components/UiComponents.d.ts +14 -12
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +41 -17
- package/dist/cjs/components/selectUtils.js +3 -3
- package/dist/cjs/contexts/BaseColorContext.d.ts +0 -1
- package/dist/cjs/contexts/BaseColorContext.d.ts.map +1 -1
- package/dist/cjs/contexts/RootStylesContext.d.ts +0 -1
- package/dist/cjs/contexts/RootStylesContext.d.ts.map +1 -1
- package/dist/cjs/contexts/SelectedValueContext.d.ts +0 -1
- package/dist/cjs/contexts/SelectedValueContext.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.d.ts +2 -2
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +11 -11
- package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.d.ts +8 -7
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +47 -31
- package/dist/cjs/hooks/useExport.d.ts +3 -4
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +6 -2
- package/dist/cjs/hooks/useInternalState.d.ts +1 -2
- package/dist/cjs/hooks/useInternalState.d.ts.map +1 -1
- package/dist/cjs/hooks/useOnClickOutside.d.ts +3 -1
- package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.d.ts +0 -14
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +17 -55
- package/dist/cjs/hooks/useSelectOnKeyDown.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -2
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +4 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +32 -7
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +17 -13
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +368 -162
- package/dist/cjs/lib/utils.d.ts +0 -1
- package/dist/cjs/lib/utils.d.ts.map +1 -1
- package/dist/cjs/lib/utils.js +2 -2
- package/dist/cjs/models/Filter.d.ts +49 -30
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Filter.js +125 -52
- package/dist/cjs/models/Pivot.d.ts +3 -1
- package/dist/cjs/models/Pivot.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +2 -2
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +4 -4
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +3839 -3427
- package/dist/cjs/utils/astProcessing.d.ts +12 -3
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +76 -11
- package/dist/cjs/utils/client.js +2 -2
- package/dist/cjs/utils/color.js +5 -6
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +7 -7
- package/dist/cjs/utils/crypto.js +1 -2
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +34 -30
- package/dist/cjs/utils/dataFetcher.js +3 -4
- package/dist/cjs/utils/dataProcessing.js +2 -2
- package/dist/cjs/utils/dates.d.ts +4 -1
- package/dist/cjs/utils/dates.d.ts.map +1 -1
- package/dist/cjs/utils/dates.js +12 -10
- package/dist/cjs/utils/errorProcessing.js +1 -2
- package/dist/cjs/utils/filterProcessing.d.ts +3 -3
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +30 -27
- package/dist/cjs/utils/getDomain.js +1 -1
- package/dist/cjs/utils/logging.js +1 -2
- package/dist/cjs/utils/merge.d.ts +1 -1
- package/dist/cjs/utils/merge.d.ts.map +1 -1
- package/dist/cjs/utils/merge.js +15 -11
- package/dist/cjs/utils/monacoConfig.js +3 -3
- package/dist/cjs/utils/paginationProcessing.js +3 -3
- package/dist/cjs/utils/pivotConstructor.d.ts +4 -4
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +104 -127
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +14 -16
- package/dist/cjs/utils/queryConstructor.d.ts +2 -2
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +344 -78
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +22 -12
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/styles.js +1 -2
- package/dist/cjs/utils/tableProcessing.d.ts +12 -12
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +69 -26
- package/dist/cjs/utils/textProcessing.js +5 -6
- package/dist/cjs/utils/validation.d.ts.map +1 -1
- package/dist/cjs/utils/validation.js +3 -1
- package/dist/cjs/utils/valueFormatter.d.ts +1 -0
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +2 -0
- package/dist/cjs/utils/width.d.ts.map +1 -1
- package/dist/esm/Chart.d.ts +5 -5
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +15 -4
- package/dist/esm/ChartBuilder.d.ts +1 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +52 -87
- package/dist/esm/Context.d.ts +9 -8
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +119 -34
- package/dist/esm/Dashboard.d.ts +20 -8
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +68 -58
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +2 -2
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +20 -20
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.js +64 -52
- package/dist/esm/ReportBuilder.d.ts +2 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +343 -343
- package/dist/esm/SQLEditor.d.ts +1 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +29 -17
- package/dist/esm/components/Banner/index.d.ts +0 -1
- package/dist/esm/components/Banner/index.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.d.ts +0 -1
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/ChartTooltipFrame.d.ts +0 -1
- package/dist/esm/components/Chart/ChartTooltipFrame.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.d.ts +0 -1
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.js +18 -9
- package/dist/esm/components/Dashboard/ChartComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +10 -2
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +8 -21
- package/dist/esm/components/Dashboard/DashboardSection.d.ts +0 -1
- package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts +0 -1
- package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +9 -7
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +102 -62
- package/dist/esm/components/Dashboard/MetricComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +2 -2
- package/dist/esm/components/Dashboard/TableComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TemplateChartComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/TemplateChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TemplateMetricComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/TemplateMetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TemplateTableComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/TemplateTableComponent.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelect.js +19 -18
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +171 -69
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +8 -6
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +25 -10
- package/dist/esm/components/QuillTable.d.ts +5 -1
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +4 -2
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -3
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +5 -6
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts +3 -4
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +46 -40
- package/dist/esm/components/ReportBuilder/ast.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.d.ts +3 -3
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +0 -2
- package/dist/esm/components/UiComponents.d.ts +14 -12
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +37 -14
- package/dist/esm/contexts/BaseColorContext.d.ts +0 -1
- package/dist/esm/contexts/BaseColorContext.d.ts.map +1 -1
- package/dist/esm/contexts/RootStylesContext.d.ts +0 -1
- package/dist/esm/contexts/RootStylesContext.d.ts.map +1 -1
- package/dist/esm/contexts/SelectedValueContext.d.ts +0 -1
- package/dist/esm/contexts/SelectedValueContext.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.d.ts +2 -2
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +12 -12
- package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.d.ts +8 -7
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +48 -32
- package/dist/esm/hooks/useExport.d.ts +3 -4
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +6 -2
- package/dist/esm/hooks/useInternalState.d.ts +1 -2
- package/dist/esm/hooks/useInternalState.d.ts.map +1 -1
- package/dist/esm/hooks/useOnClickOutside.d.ts +3 -1
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.d.ts +0 -14
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +16 -53
- package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +4 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +32 -7
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +17 -13
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +364 -158
- package/dist/esm/lib/utils.d.ts +0 -1
- package/dist/esm/lib/utils.d.ts.map +1 -1
- package/dist/esm/models/Filter.d.ts +49 -30
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Filter.js +123 -50
- package/dist/esm/models/Pivot.d.ts +3 -1
- package/dist/esm/models/Pivot.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +2 -2
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +4 -4
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +3835 -3423
- package/dist/esm/utils/astProcessing.d.ts +12 -3
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +64 -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.map +1 -1
- package/dist/esm/utils/dashboard.js +31 -26
- package/dist/esm/utils/dates.d.ts +4 -1
- package/dist/esm/utils/dates.d.ts.map +1 -1
- package/dist/esm/utils/dates.js +6 -3
- package/dist/esm/utils/filterProcessing.d.ts +3 -3
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +22 -19
- package/dist/esm/utils/merge.d.ts +1 -1
- package/dist/esm/utils/merge.d.ts.map +1 -1
- package/dist/esm/utils/merge.js +14 -9
- package/dist/esm/utils/pivotConstructor.d.ts +4 -4
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +103 -125
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +9 -11
- package/dist/esm/utils/queryConstructor.d.ts +2 -2
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +338 -71
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +18 -8
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.d.ts +12 -12
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +69 -26
- package/dist/esm/utils/validation.d.ts.map +1 -1
- package/dist/esm/utils/validation.js +3 -1
- package/dist/esm/utils/valueFormatter.d.ts +1 -0
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +2 -1
- package/dist/esm/utils/width.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = ReportBuilder;
|
|
6
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
8
|
const react_1 = require("react");
|
|
8
9
|
const UiComponents_1 = require("./components/UiComponents");
|
|
@@ -72,7 +73,7 @@ const constants_2 = require("./utils/constants");
|
|
|
72
73
|
* ### Report Builder API
|
|
73
74
|
* @see https://docs.quillsql.com/components/report-builder
|
|
74
75
|
*/
|
|
75
|
-
function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void null, onSubmitCreateReport = () => void null, onDiscardChanges = undefined, onSaveChanges = undefined, onCloseChartBuilder = undefined, destinationDashboard = undefined, organizationName = '', ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, ModalComponent = UiComponents_1.MemoizedModal, TextInputComponent = UiComponents_2.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, MultiSelectComponent = QuillMultiSelectWithCombo_1.QuillMultiSelectComponentWithCombo, TableComponent = UiComponents_1.
|
|
76
|
+
function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void null, onSubmitCreateReport = () => void null, onDiscardChanges = undefined, onSaveChanges = undefined, onCloseChartBuilder = undefined, destinationDashboard = undefined, organizationName = '', ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, ModalComponent = UiComponents_1.MemoizedModal, TextInputComponent = UiComponents_2.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, MultiSelectComponent = QuillMultiSelectWithCombo_1.QuillMultiSelectComponentWithCombo, TableComponent = UiComponents_1.QuillTableReportBuilderComponent, PopoverComponent = UiComponents_1.MemoizedPopover, TabsComponent = UiComponents_1.QuillTabs,
|
|
76
77
|
// CheckboxComponent = MemoizedCheckbox,
|
|
77
78
|
SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer, SelectColumnComponent = ui_1.QuillSelectColumn, DraggableColumnComponent = ui_1.QuillDraggableColumn, SidebarHeadingComponent = ui_1.QuillSidebarHeading, FilterPopoverComponent = ui_1.QuillFilterPopover, SortPopoverComponent = ui_1.QuillSortPopover, LimitPopoverComponent = ui_1.QuillLimitPopover, CardComponent = QuillCard_1.QuillCard, LabelComponent = UiComponents_1.MemoizedLabel, HeaderComponent = UiComponents_1.MemoizedHeader, SubHeaderComponent = UiComponents_1.MemoizedSubHeader, TextComponent = UiComponents_1.MemoizedText, ErrorMessageComponent = UiComponents_1.QuillErrorMessageComponent, ChartBuilderInputRowContainer = UiComponents_1.QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = UiComponents_1.QuillChartBuilderInputColumnContainer, PivotRowContainer = UiComponents_1.QuillPivotRowContainer, PivotColumnContainer = UiComponents_1.QuillPivotColumnContainer, LoadingComponent = UiComponents_1.QuillLoadingComponent, ColumnSearchEmptyState = UiComponents_1.QuillColumnSearchEmptyState, ChartBuilderFormContainer = UiComponents_1.QuillChartBuilderFormContainer, ChartBuilderModalComponent = UiComponents_1.MemoizedModal, isAdminEnabled = false, isAIEnabled = true, showChartBuilderTableFormatOptions = true, containerStyle, className, pivotRecommendationsEnabled = true, reportId, hideCopySQL = true, isChartBuilderHorizontalView = true, onClickChartElement, }) {
|
|
78
79
|
const [dashboard] = (0, react_1.useContext)(Context_1.DashboardContext);
|
|
@@ -100,10 +101,11 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
100
101
|
const [openPopover, setOpenPopover] = (0, react_1.useState)(null);
|
|
101
102
|
const [loading, setLoading] = (0, react_1.useState)(!!initialTableName);
|
|
102
103
|
const [isChartBuilderOpen, setIsChartBuilderOpen] = (0, react_1.useState)(false);
|
|
103
|
-
const [isAddLoading, setIsAddLoading] = (0, react_1.useState)(false);
|
|
104
104
|
const [isCopying, setIsCopying] = (0, react_1.useState)(false);
|
|
105
105
|
const [dataDisplayed, setDataDisplayed] = (0, react_1.useState)(false);
|
|
106
106
|
const [rows, setRows] = (0, react_1.useState)([]);
|
|
107
|
+
const [filteredRows, setFilteredRows] = (0, react_1.useState)([]);
|
|
108
|
+
const [chartBuilderInFilteredPreview, setChartBuilderInFilteredPreview] = (0, react_1.useState)(true);
|
|
107
109
|
const [formattedRows, setFormattedRows] = (0, react_1.useState)([]);
|
|
108
110
|
const [columns, setColumns] = (0, react_1.useState)([]);
|
|
109
111
|
const [tempReport, setTempReport] = (0, react_1.useState)(report_1.EMPTY_INTERNAL_REPORT);
|
|
@@ -116,8 +118,8 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
116
118
|
const [pivotPopUpTitle, setPivotPopUpTitle] = (0, react_1.useState)('Add pivot');
|
|
117
119
|
const [showPivotPopover, setShowPivotPopover] = (0, react_1.useState)(false);
|
|
118
120
|
const [isEditingPivot, setIsEditingPivot] = (0, react_1.useState)(false);
|
|
119
|
-
const [initialChartLoad, setInitialChartLoad] = (0, react_1.useState)(false);
|
|
120
121
|
const [askedAQuestion, setAskedAQuestion] = (0, react_1.useState)(false);
|
|
122
|
+
const [askAILoading, setAskAILoading] = (0, react_1.useState)(false);
|
|
121
123
|
const [selectedPivotIndex, setSelectedPivotIndex] = (0, react_1.useState)(-1);
|
|
122
124
|
const [initialLoad, setInitialLoad] = (0, react_1.useState)(!!initialTableName || !!reportId);
|
|
123
125
|
const [currentTable, setCurrentTable] = (0, react_1.useState)(initialTableName || '');
|
|
@@ -130,9 +132,14 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
130
132
|
const [pivotRowField, setPivotRowField] = (0, react_1.useState)(undefined);
|
|
131
133
|
const [pivotColumnField, setPivotColumnField] = (0, react_1.useState)(undefined);
|
|
132
134
|
const [pivotValueField, setPivotValueField] = (0, react_1.useState)(undefined);
|
|
135
|
+
const [pivotValueField2, setPivotValueField2] = (0, react_1.useState)(undefined);
|
|
133
136
|
const [pivotAggregation, setPivotAggregation] = (0, react_1.useState)(undefined);
|
|
137
|
+
const [pivotHint, setPivotHint] = (0, react_1.useState)('');
|
|
138
|
+
/* eslint-disable-next-line */
|
|
139
|
+
const [pivotError, setPivotError] = (0, react_1.useState)(undefined);
|
|
134
140
|
const [dateRanges, setDateRanges] = (0, react_1.useState)(null);
|
|
135
141
|
const [client] = (0, react_1.useContext)(Context_1.ClientContext);
|
|
142
|
+
const [currentOrganizationId, setCurrentOrganizationId] = (0, react_1.useState)(client.organizationId);
|
|
136
143
|
const [fieldValuesMap, setFieldValuesMap] = (0, react_1.useState)({}); // Mapping of unique values per field, used in string filter 'in' and 'not in'
|
|
137
144
|
const [globalUniqueValues, setGlobalUniqueValues] = (0, react_1.useState)({});
|
|
138
145
|
const [globalUniqueValuesIsLoading, setGlobalUniqueValuesIsLoading] = (0, react_1.useState)(false);
|
|
@@ -144,6 +151,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
144
151
|
rowsPerPage: 20,
|
|
145
152
|
rowsPerRequest: 1000,
|
|
146
153
|
};
|
|
154
|
+
const [unresolvedReportMessage, setUnresolvedReportMessage] = (0, react_1.useState)('');
|
|
147
155
|
(0, react_1.useEffect)(() => {
|
|
148
156
|
if (!client) {
|
|
149
157
|
return;
|
|
@@ -217,6 +225,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
217
225
|
}
|
|
218
226
|
let distinctValuesForQuery = {};
|
|
219
227
|
setPivot(newPivot);
|
|
228
|
+
setPivotHint('');
|
|
220
229
|
if (newPivot.columnField) {
|
|
221
230
|
distinctValuesForQuery = await (0, tableProcessing_1.getUniqueValuesByColumns)([
|
|
222
231
|
{
|
|
@@ -226,11 +235,25 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
226
235
|
},
|
|
227
236
|
], activeQuery, [], client, schemaData.customFields ?? []);
|
|
228
237
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
238
|
+
try {
|
|
239
|
+
const pivotedData = await (0, PivotModal_1.generatePivotTable)({
|
|
240
|
+
pivot: newPivot,
|
|
241
|
+
dateBucket,
|
|
242
|
+
report: tempReport,
|
|
243
|
+
client,
|
|
244
|
+
uniqueValues: distinctValuesForQuery,
|
|
245
|
+
});
|
|
246
|
+
setPivotData(pivotedData || []);
|
|
247
|
+
const formattedRows = formatRows(pivotedData.rows, columns, true, newPivot.aggregationType);
|
|
248
|
+
setFormattedRows(formattedRows);
|
|
249
|
+
}
|
|
250
|
+
catch (e) {
|
|
251
|
+
if (e instanceof Error)
|
|
252
|
+
setPivotError(e.message);
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
setTableLoading(false);
|
|
256
|
+
}
|
|
234
257
|
};
|
|
235
258
|
const enforceOrderOnColumns = (columnNames) => {
|
|
236
259
|
if (pivot) {
|
|
@@ -262,11 +285,13 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
262
285
|
setLoading(false);
|
|
263
286
|
setDataDisplayed(false);
|
|
264
287
|
setRows([]);
|
|
288
|
+
setFilteredRows([]);
|
|
265
289
|
setColumns([]);
|
|
266
290
|
setErrorMessage('');
|
|
267
291
|
setFormattedRows([]);
|
|
268
292
|
// setUniqueValues({});
|
|
269
293
|
setPivot(null);
|
|
294
|
+
setPivotHint('');
|
|
270
295
|
setPivotData(null);
|
|
271
296
|
setRecommendedPivots([]);
|
|
272
297
|
}, 0);
|
|
@@ -286,7 +311,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
286
311
|
uniqueValuesDependenciesRef.current = { client, columns, currentTable };
|
|
287
312
|
}
|
|
288
313
|
}, [client, columns, currentTable, memoizedFetchGlobalUniqueValues]);
|
|
289
|
-
const formatRows = (rows, columns, pivot, aggregationType) => {
|
|
314
|
+
const formatRows = (rows, columns, pivot, aggregationType, dateBucket) => {
|
|
290
315
|
const copiedRows = (0, util_1.deepCopy)(rows);
|
|
291
316
|
if (pivot) {
|
|
292
317
|
const formattedRows = copiedRows.map((row) => {
|
|
@@ -302,7 +327,9 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
302
327
|
}
|
|
303
328
|
else {
|
|
304
329
|
format = valueFormatter_1.DATE_FORMAT_TYPES.includes(column.format)
|
|
305
|
-
?
|
|
330
|
+
? dateBucket
|
|
331
|
+
? (0, dates_1.getDateFormatFromBucket)(dateBucket)
|
|
332
|
+
: 'MMM_yyyy'
|
|
306
333
|
: 'string';
|
|
307
334
|
}
|
|
308
335
|
const formattedValue = (0, valueFormatter_1.quillFormat)({
|
|
@@ -374,6 +401,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
374
401
|
});
|
|
375
402
|
const data = await response.json();
|
|
376
403
|
setActiveQuery(data.query);
|
|
404
|
+
fetchFilteredRows(data.query);
|
|
377
405
|
if (fetchData) {
|
|
378
406
|
fetchReportFromASTHelper(ast, formData);
|
|
379
407
|
}
|
|
@@ -394,7 +422,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
394
422
|
const dateColumnNames = dateColumns.map((column) => {
|
|
395
423
|
return column.field;
|
|
396
424
|
});
|
|
397
|
-
const dateRanges = await (0, tableProcessing_1.
|
|
425
|
+
const dateRanges = await (0, tableProcessing_1.getQueryDateRangeByColumns)(dateColumns, `Select ${dateColumnNames.join(', ')} from ${tableName}`, client, schemaData.customFields ?? []);
|
|
398
426
|
return dateRanges;
|
|
399
427
|
};
|
|
400
428
|
// It's just like getColumnsInPivot but we expand the columnField
|
|
@@ -502,10 +530,13 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
502
530
|
setActiveQuery(query);
|
|
503
531
|
}
|
|
504
532
|
catch (err) {
|
|
505
|
-
|
|
533
|
+
console.error(err);
|
|
534
|
+
setErrorMessage('Error when loading chart');
|
|
506
535
|
}
|
|
507
536
|
};
|
|
508
|
-
|
|
537
|
+
if (reportId) {
|
|
538
|
+
loadChart();
|
|
539
|
+
}
|
|
509
540
|
}, [dashboard[reportId || '']]);
|
|
510
541
|
(0, react_1.useEffect)(() => {
|
|
511
542
|
onSchemaChange();
|
|
@@ -737,7 +768,8 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
737
768
|
setPreviousPage(0);
|
|
738
769
|
};
|
|
739
770
|
const onFilterPreviewChange = (preview) => {
|
|
740
|
-
|
|
771
|
+
setChartBuilderInFilteredPreview(preview);
|
|
772
|
+
// handleRunQuery(currentProcessing, true, preview);
|
|
741
773
|
};
|
|
742
774
|
const fetchRowCount = async (processing, includeFilters) => {
|
|
743
775
|
if (!client || !activeQuery) {
|
|
@@ -749,6 +781,11 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
749
781
|
: undefined, false, true);
|
|
750
782
|
if (tableInfo.rowCount) {
|
|
751
783
|
setNumberOfRows(tableInfo.rowCount);
|
|
784
|
+
// @ts-ignore
|
|
785
|
+
setTempReport((tempReport) => ({
|
|
786
|
+
...tempReport,
|
|
787
|
+
rowCount: tableInfo.rowCount,
|
|
788
|
+
}));
|
|
752
789
|
}
|
|
753
790
|
setRowCountIsLoading(false);
|
|
754
791
|
};
|
|
@@ -757,33 +794,52 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
757
794
|
const tableData = await (0, tableProcessing_1.fetchTableByAST)({ ...ast, where }, client, { page: REPORT_BUILDER_PAGINATION }, undefined, false, true);
|
|
758
795
|
if (tableData.rowCount) {
|
|
759
796
|
setNumberOfRows(tableData.rowCount);
|
|
797
|
+
// @ts-ignore
|
|
798
|
+
setTempReport((tempReport) => ({
|
|
799
|
+
...tempReport,
|
|
800
|
+
rowCount: tableData.rowCount,
|
|
801
|
+
}));
|
|
760
802
|
}
|
|
761
803
|
setRowCountIsLoading(false);
|
|
762
804
|
};
|
|
805
|
+
const fetchFilteredRows = async (query) => {
|
|
806
|
+
const filteredTableInfo = await (0, tableProcessing_1.fetchResultsByQuery)(query, client, currentProcessing, schemaData.customFields, specificDashboardFilters, tempReport.dateField, true);
|
|
807
|
+
if (filteredTableInfo.error) {
|
|
808
|
+
throw new Error(filteredTableInfo.error);
|
|
809
|
+
}
|
|
810
|
+
setFilteredRows([...filteredRows, ...filteredTableInfo.rows]);
|
|
811
|
+
};
|
|
763
812
|
const handleRunQuery = async (processing, resetRows = false, includeFilters = false) => {
|
|
764
813
|
try {
|
|
765
814
|
setErrorMessage('');
|
|
766
815
|
setTableLoading(true);
|
|
767
|
-
const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)(activeQuery, client, processing, schemaData.customFields,
|
|
816
|
+
const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)(activeQuery, client, processing, schemaData.customFields, undefined, undefined, true);
|
|
817
|
+
const filteredTableInfo = await (0, tableProcessing_1.fetchResultsByQuery)(activeQuery, client, processing, schemaData.customFields, specificDashboardFilters, tempReport.dateField, true);
|
|
768
818
|
if (tableInfo.error) {
|
|
769
819
|
throw new Error(tableInfo.error);
|
|
770
820
|
}
|
|
821
|
+
else if (filteredTableInfo.error) {
|
|
822
|
+
throw new Error(filteredTableInfo.error);
|
|
823
|
+
}
|
|
771
824
|
else if (tableInfo.rows.length === 0) {
|
|
772
825
|
throw new Error('No data found');
|
|
773
826
|
}
|
|
774
827
|
fetchRowCount(processing, includeFilters);
|
|
775
828
|
setCurrentProcessing(processing);
|
|
776
829
|
let tempRows = [...rows, ...tableInfo.rows];
|
|
830
|
+
let tempFilteredRows = [...filteredRows, ...filteredTableInfo.rows];
|
|
777
831
|
if (resetRows) {
|
|
778
832
|
tempRows = tableInfo.rows;
|
|
833
|
+
tempFilteredRows = filteredTableInfo.rows;
|
|
779
834
|
}
|
|
780
835
|
setRows(tempRows);
|
|
836
|
+
setFilteredRows(tempFilteredRows);
|
|
781
837
|
setFormattedRows((0, report_1.formatRowsFromReport)({ rows: tempRows, columns: tableInfo.columns }));
|
|
782
|
-
setTempReport({
|
|
838
|
+
setTempReport((tempReport) => ({
|
|
783
839
|
...tempReport,
|
|
784
840
|
rows: tempRows,
|
|
785
841
|
rowCount: tableInfo.rowCount ?? tempReport.rowCount,
|
|
786
|
-
});
|
|
842
|
+
}));
|
|
787
843
|
setColumns(tableInfo.columns);
|
|
788
844
|
setTableLoading(false);
|
|
789
845
|
}
|
|
@@ -791,6 +847,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
791
847
|
setTableLoading(false);
|
|
792
848
|
setErrorMessage('Failed to run SQL query: ' + e.message);
|
|
793
849
|
setRows([]);
|
|
850
|
+
setFilteredRows([]);
|
|
794
851
|
setColumns([]);
|
|
795
852
|
return;
|
|
796
853
|
}
|
|
@@ -819,12 +876,13 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
819
876
|
as: null,
|
|
820
877
|
});
|
|
821
878
|
const updateUniqueValue = (uniqueStrings, table) => {
|
|
822
|
-
const uniqueStringsObj = {};
|
|
879
|
+
const uniqueStringsObj = uniqueValues ?? {};
|
|
823
880
|
uniqueStringsObj[table] = uniqueStrings ?? {};
|
|
824
881
|
setUniqueValues(uniqueStringsObj);
|
|
825
882
|
updateFieldValuesMap(uniqueStringsObj, table);
|
|
883
|
+
return uniqueStringsObj;
|
|
826
884
|
};
|
|
827
|
-
const fetchReportFromASTHelper = async (baseAst, newFormData, curPivot, curSchema, previousReport) => {
|
|
885
|
+
const fetchReportFromASTHelper = async (baseAst, newFormData, curPivot, curSchema, previousReport, keepPivotHint = false) => {
|
|
828
886
|
const curFormData = newFormData !== undefined ? newFormData : formData;
|
|
829
887
|
let reportBuilderInfo = undefined;
|
|
830
888
|
try {
|
|
@@ -848,6 +906,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
848
906
|
setErrorMessage('Failed to fetch');
|
|
849
907
|
return;
|
|
850
908
|
}
|
|
909
|
+
setTempReport(reportBuilderInfo.report);
|
|
851
910
|
fetchRowCountFromAST(baseAst, curFormData);
|
|
852
911
|
const reportTable = reportBuilderInfo.table;
|
|
853
912
|
const reportBuilderInfoColumns = reportBuilderInfo.columns.map((column) => {
|
|
@@ -855,39 +914,105 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
855
914
|
});
|
|
856
915
|
const prevFormData = formData;
|
|
857
916
|
const prevTable = currentTable;
|
|
917
|
+
const prevOrganization = currentOrganizationId;
|
|
858
918
|
setRows(reportBuilderInfo.rows);
|
|
859
|
-
|
|
860
|
-
|
|
919
|
+
setFilteredRows(reportBuilderInfo.rows);
|
|
920
|
+
if (!(client.databaseType.toLowerCase() === 'bigquery') ||
|
|
921
|
+
(reportBuilderInfo.rows && reportBuilderInfo.rows.length > 0)) {
|
|
922
|
+
setColumns(reportBuilderInfo.columns);
|
|
923
|
+
setSelectedColumns(reportBuilderInfoColumns);
|
|
924
|
+
}
|
|
925
|
+
setNumberOfRows(reportBuilderInfo.rowCount);
|
|
861
926
|
setPivot(reportBuilderInfo.pivot);
|
|
927
|
+
if (!keepPivotHint) {
|
|
928
|
+
setPivotHint('');
|
|
929
|
+
}
|
|
862
930
|
setPivotData(reportBuilderInfo.pivotData);
|
|
863
931
|
setDateRanges(reportBuilderInfo.dateRanges);
|
|
864
932
|
setFormattedRows(reportBuilderInfo.formattedRows);
|
|
865
|
-
setTempReport(reportBuilderInfo.report);
|
|
866
|
-
setSelectedColumns(reportBuilderInfoColumns);
|
|
867
|
-
setLoading(false);
|
|
868
933
|
setDataDisplayed(true);
|
|
869
934
|
setCurrentTable(reportBuilderInfo.table);
|
|
935
|
+
setCurrentOrganizationId(client.organizationId);
|
|
870
936
|
setFormData(curFormData);
|
|
871
937
|
if (reportBuilderInfo.pivot) {
|
|
872
938
|
setPivotRowField(reportBuilderInfo.pivot.rowField);
|
|
873
939
|
setPivotAggregation(reportBuilderInfo.pivot.aggregationType);
|
|
874
940
|
setPivotColumnField(reportBuilderInfo.pivot.columnField);
|
|
875
941
|
setPivotValueField(reportBuilderInfo.pivot.valueField);
|
|
942
|
+
setPivotValueField2(reportBuilderInfo.pivot.valueField2);
|
|
943
|
+
}
|
|
944
|
+
else {
|
|
945
|
+
setLoading(false);
|
|
876
946
|
}
|
|
877
947
|
setReportInfo(reportBuilderInfo.report);
|
|
878
948
|
// fetch unique values after everything else since it is the most expensive
|
|
879
949
|
if (prevTable !== reportBuilderInfo.table ||
|
|
880
|
-
!(0, fast_deep_equal_1.default)(prevFormData, curFormData)
|
|
950
|
+
!(0, fast_deep_equal_1.default)(prevFormData, curFormData) ||
|
|
951
|
+
prevOrganization !== client.organizationId) {
|
|
881
952
|
try {
|
|
882
953
|
setUniqueValuesIsLoading(true);
|
|
954
|
+
if (reportBuilderInfo.pivot) {
|
|
955
|
+
setUnresolvedReportMessage('Processing pivot selection options...');
|
|
956
|
+
}
|
|
883
957
|
const schema = curSchema ?? schemaData.schema;
|
|
884
958
|
const tableInfo = schema.find((tableInfo) => tableInfo.name === reportBuilderInfo?.table);
|
|
885
959
|
if (!reportBuilderInfo.table || !tableInfo) {
|
|
886
960
|
throw new Error('No table found;');
|
|
887
961
|
}
|
|
888
|
-
|
|
889
|
-
|
|
962
|
+
let query = reportBuilderInfo.query;
|
|
963
|
+
if (!query) {
|
|
964
|
+
const queryResult = await fetchSqlQuery({
|
|
965
|
+
...(0, astProcessing_1.createBasicSelectASTFromColumns)(tableInfo.columns, reportBuilderInfo.table),
|
|
966
|
+
where: curFormData,
|
|
967
|
+
}, curFormData, false);
|
|
968
|
+
if (queryResult.error) {
|
|
969
|
+
console.error(queryResult.error);
|
|
970
|
+
}
|
|
971
|
+
else {
|
|
972
|
+
query = queryResult.query;
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
const uniqueStrings = await (0, tableProcessing_1.getUniqueStringValues)(tableInfo.columns, reportBuilderInfo.table, client, schemaData.customFields, undefined, true, query);
|
|
976
|
+
const newUnique = updateUniqueValue(uniqueStrings, reportBuilderInfo.table);
|
|
977
|
+
let pivotChanged = false;
|
|
978
|
+
let newPivot;
|
|
979
|
+
if (reportBuilderInfo.pivot &&
|
|
980
|
+
!isValidPivotForReport(reportBuilderInfo.pivot, newUnique)) {
|
|
981
|
+
// try flipping row and column field
|
|
982
|
+
newPivot = {
|
|
983
|
+
...reportBuilderInfo.pivot,
|
|
984
|
+
rowField: reportBuilderInfo.pivot.columnField,
|
|
985
|
+
columnField: reportBuilderInfo.pivot.rowField,
|
|
986
|
+
};
|
|
987
|
+
if (isValidPivotForReport(newPivot, newUnique)) {
|
|
988
|
+
setPivot(newPivot);
|
|
989
|
+
pivotChanged = true;
|
|
990
|
+
setPivotHint('Flipped pivot row and column fields to maintain validity');
|
|
991
|
+
}
|
|
992
|
+
else if (isValidPivotForReport({ ...reportBuilderInfo.pivot, columnField: undefined }, newUnique)) {
|
|
993
|
+
// try removing column field
|
|
994
|
+
newPivot = {
|
|
995
|
+
...reportBuilderInfo.pivot,
|
|
996
|
+
columnField: undefined,
|
|
997
|
+
};
|
|
998
|
+
setPivot(newPivot);
|
|
999
|
+
pivotChanged = true;
|
|
1000
|
+
setPivotHint('Removed column field to maintain validity');
|
|
1001
|
+
}
|
|
1002
|
+
else {
|
|
1003
|
+
setUnresolvedReportMessage('Not a valid pivot');
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
else {
|
|
1007
|
+
setUnresolvedReportMessage('');
|
|
1008
|
+
}
|
|
890
1009
|
setUniqueValuesIsLoading(false);
|
|
1010
|
+
if (pivotChanged) {
|
|
1011
|
+
fetchReportFromASTHelper(baseAst, curFormData, newPivot, curSchema, previousReport, true);
|
|
1012
|
+
}
|
|
1013
|
+
else {
|
|
1014
|
+
setLoading(false);
|
|
1015
|
+
}
|
|
891
1016
|
}
|
|
892
1017
|
catch (err) {
|
|
893
1018
|
if (err instanceof Error) {
|
|
@@ -910,6 +1035,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
910
1035
|
}
|
|
911
1036
|
try {
|
|
912
1037
|
setLoading(true);
|
|
1038
|
+
setAskAILoading(true);
|
|
913
1039
|
astInfo = await (0, astProcessing_1.fetchAndProcessASTFromPrompt)(prompt, schemaData.schema, client, pivot, activeQuery);
|
|
914
1040
|
if (astInfo.error) {
|
|
915
1041
|
throw new Error(astInfo.error);
|
|
@@ -918,10 +1044,16 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
918
1044
|
catch (err) {
|
|
919
1045
|
if (err instanceof Error) {
|
|
920
1046
|
setErrorMessage(err.message);
|
|
921
|
-
setLoading(false);
|
|
922
1047
|
}
|
|
1048
|
+
setLoading(false);
|
|
1049
|
+
setAskAILoading(false);
|
|
923
1050
|
return;
|
|
924
1051
|
}
|
|
1052
|
+
// check if pivot works with ReportBuilder constraints
|
|
1053
|
+
if (astInfo.pivot && !isValidPivotForReport(astInfo.pivot)) {
|
|
1054
|
+
astInfo.pivot = null;
|
|
1055
|
+
astInfo.ast.groupby = null;
|
|
1056
|
+
}
|
|
925
1057
|
// parse the whereAst first
|
|
926
1058
|
const filterTree = (0, astFilterProcessing_1.astToFilterTree)(astInfo.whereAST, client.databaseType?.toLowerCase());
|
|
927
1059
|
const cleanAst = filterTree
|
|
@@ -931,8 +1063,34 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
931
1063
|
astInfo.ast.where = cleanAst;
|
|
932
1064
|
setBaseAst(astInfo.ast);
|
|
933
1065
|
fetchSqlQuery(astInfo.ast, cleanAst, false);
|
|
1066
|
+
setAskAILoading(false);
|
|
934
1067
|
await fetchReportFromASTHelper(astInfo.ast, cleanAst, astInfo.pivot);
|
|
935
1068
|
};
|
|
1069
|
+
const isValidPivotForReport = (pivot, uniqueValuesForPivot) => {
|
|
1070
|
+
if (!pivotProcessing_1.isValidPivot) {
|
|
1071
|
+
return false;
|
|
1072
|
+
}
|
|
1073
|
+
const uniqueValuesToCheck = uniqueValuesForPivot ?? uniqueValues;
|
|
1074
|
+
// check that pivot rows and columns
|
|
1075
|
+
const possibleOptions = (0, pivotProcessing_1.getPossiblePivotFieldOptions)(columns, uniqueValuesToCheck[currentTable] ?? {});
|
|
1076
|
+
if (pivot.rowField &&
|
|
1077
|
+
pivot.columnField &&
|
|
1078
|
+
pivot.rowField === pivot.columnField) {
|
|
1079
|
+
return false;
|
|
1080
|
+
}
|
|
1081
|
+
if (pivot.rowField && !possibleOptions.rowFields.includes(pivot.rowField)) {
|
|
1082
|
+
return false;
|
|
1083
|
+
}
|
|
1084
|
+
if (pivot.columnField &&
|
|
1085
|
+
!possibleOptions.columnFields.includes(pivot.columnField)) {
|
|
1086
|
+
return false;
|
|
1087
|
+
}
|
|
1088
|
+
if (pivot.valueField &&
|
|
1089
|
+
!possibleOptions.valueFields.includes(pivot.valueField)) {
|
|
1090
|
+
return false;
|
|
1091
|
+
}
|
|
1092
|
+
return true;
|
|
1093
|
+
};
|
|
936
1094
|
const handleDeleteColumn = (name) => {
|
|
937
1095
|
if (!baseAst || !baseAst.columns.length || selectedColumns.length === 1) {
|
|
938
1096
|
clearAllState();
|
|
@@ -965,7 +1123,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
965
1123
|
};
|
|
966
1124
|
return ((0, jsx_runtime_1.jsx)("div", { style: { ...style }, ref: setNodeRef, children: (0, jsx_runtime_1.jsx)(DraggableColumnComponent, { label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(label), onDelete: onDelete, DragHandle: (props) => ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
967
1125
|
cursor: 'grab',
|
|
968
|
-
}, ...attributes, ...listeners, children: (0, jsx_runtime_1.jsx)(props.dragIcon, {}) })), deleteDisabled: loading }) }));
|
|
1126
|
+
}, ...attributes, ...listeners, children: (0, jsx_runtime_1.jsx)(props.dragIcon, {}) })), deleteDisabled: loading || tableLoading }) }));
|
|
969
1127
|
};
|
|
970
1128
|
function DraggableColumns() {
|
|
971
1129
|
const sensors = (0, core_1.useSensors)((0, core_1.useSensor)(core_1.PointerSensor), (0, core_1.useSensor)(core_1.KeyboardSensor, {
|
|
@@ -1042,240 +1200,6 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1042
1200
|
gap: 8,
|
|
1043
1201
|
}, children: [columnNamesInAst.map((name) => ((0, jsx_runtime_1.jsx)(DraggableItem, { id: name, label: name, onDelete: () => !loading && handleDeleteColumn(name) }, name))), columnNamesInAst?.length > 0 && (0, jsx_runtime_1.jsx)("div", { style: { height: 6 } })] }) }) }));
|
|
1044
1202
|
}
|
|
1045
|
-
// TODO: Refactor this part
|
|
1046
|
-
if (loading || initialChartLoad) {
|
|
1047
|
-
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1048
|
-
display: 'flex',
|
|
1049
|
-
flexDirection: 'row',
|
|
1050
|
-
height: '100%',
|
|
1051
|
-
...containerStyle,
|
|
1052
|
-
}, className: className, ref: parentRef, children: [(0, jsx_runtime_1.jsxs)(SidebarComponent, { children: [(0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Columns" }), (0, jsx_runtime_1.jsx)(DraggableColumns, {}), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
|
|
1053
|
-
if (!openPopover) {
|
|
1054
|
-
setOpenPopover('AddColumnModal');
|
|
1055
|
-
}
|
|
1056
|
-
}, label: 'Select columns', disabled: true }), (0, jsx_runtime_1.jsx)(ModalComponent, { isOpen: openPopover === 'AddColumnModal', setIsOpen: (isOpen) => {
|
|
1057
|
-
if (!isOpen) {
|
|
1058
|
-
// delay onClose callback so onClick no-ops
|
|
1059
|
-
setTimeout(() => {
|
|
1060
|
-
setActiveEditItem(null);
|
|
1061
|
-
setActivePath(null);
|
|
1062
|
-
setOpenPopover(null);
|
|
1063
|
-
}, 100);
|
|
1064
|
-
}
|
|
1065
|
-
}, title: "Select columns", children: (0, jsx_runtime_1.jsx)(AddColumnModal_1.default, { onSave: () => {
|
|
1066
|
-
setActiveEditItem(null);
|
|
1067
|
-
setActivePath(null);
|
|
1068
|
-
setOpenPopover(null);
|
|
1069
|
-
}, orderedColumnNames: orderedColumnNames, setOrderedColumnNames: setOrderedColumnNames, selectedColumns: selectedColumns, setSelectedColumns: setSelectedColumns, isSelectedAllColumns: isSelectedAllColumns, clearAllState: clearAllState, nameToColumn: nameToColumn, baseAst: baseAst, setBaseAst: (ast) => {
|
|
1070
|
-
setBaseAst(ast);
|
|
1071
|
-
fetchSqlQuery(ast);
|
|
1072
|
-
}, pivot: pivot, initialTableName: initialTableName, defaultAST: constants_1.defaultAST, defaultTable: constants_1.defaultTable, setPivot: setPivot, TextInputComponent: TextInputComponent, SelectColumn: SelectColumnComponent, SecondaryButton: SecondaryButtonComponent, Button: ButtonComponent, ColumnSearchEmptyState: ColumnSearchEmptyState, LoadingComponent: LoadingComponent }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Filters" }), formData && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1073
|
-
display: 'flex',
|
|
1074
|
-
flexDirection: 'column',
|
|
1075
|
-
gap: 8,
|
|
1076
|
-
marginBottom: 12,
|
|
1077
|
-
}, children: (0, jsx_runtime_1.jsx)(FilterStack_1.default, { client: client, filterStack: filterStack, filterTree: filterTree, defaultAST: constants_1.defaultAST, baseAst: baseAst, setBaseAst: setBaseAst, setFormData: setFormData, fetchSqlQuery: fetchSqlQuery, schemaData: schemaData, defaultColumn: constants_1.defaultColumn, defaultTable: constants_1.defaultTable, currentTable: currentTable, initialTableName: initialTableName, globalUniqueValues: globalUniqueValues, globalUniqueValuesIsLoading: globalUniqueValuesIsLoading, columns: columns, removingFilter: removingFilter, setRemovingFilter: setRemovingFilter, TabsComponent: TabsComponent, FilterPopoverComponent: FilterPopoverComponent, FilterModal: FilterModal_1.default, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent, actionsEnabled: false }) })), (0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1078
|
-
display: 'flex',
|
|
1079
|
-
flexDirection: 'column',
|
|
1080
|
-
alignItems: 'flex-start',
|
|
1081
|
-
}, children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
|
|
1082
|
-
if (!selectedColumns ||
|
|
1083
|
-
selectedColumns.length === 0 ||
|
|
1084
|
-
loading) {
|
|
1085
|
-
return;
|
|
1086
|
-
}
|
|
1087
|
-
if (!openPopover) {
|
|
1088
|
-
const value = orderedColumnNames[0];
|
|
1089
|
-
const column = value.split('.')[1];
|
|
1090
|
-
const columnType = getColumnTypeByName(column);
|
|
1091
|
-
if ((0, ast_1.isNumericColumnType)(columnType)) {
|
|
1092
|
-
const newSubtree = (0, util_1.deepCopy)(constants_1.defaultNumericComparison);
|
|
1093
|
-
newSubtree.left.column = column;
|
|
1094
|
-
setActiveEditItem(newSubtree);
|
|
1095
|
-
}
|
|
1096
|
-
else {
|
|
1097
|
-
const newSubtree = (0, util_1.deepCopy)(constants_1.defaultEntry);
|
|
1098
|
-
newSubtree.left.args.value[0].column = column;
|
|
1099
|
-
setActiveEditItem(newSubtree);
|
|
1100
|
-
}
|
|
1101
|
-
setOpenPopover('AddFilterPopover');
|
|
1102
|
-
setActivePath('');
|
|
1103
|
-
}
|
|
1104
|
-
}, label: 'Add filter', disabled: true }), (0, jsx_runtime_1.jsx)("div", { style: {
|
|
1105
|
-
position: 'relative',
|
|
1106
|
-
...(openPopover === 'AddFilterPopover' && { top: 12 }),
|
|
1107
|
-
}, children: (0, jsx_runtime_1.jsx)(PopoverComponent, { isOpen: openPopover === 'AddFilterPopover', setIsOpen: (isOpen) => {
|
|
1108
|
-
if (!isOpen) {
|
|
1109
|
-
setActivePath(null);
|
|
1110
|
-
setOpenPopover(null);
|
|
1111
|
-
setTimeout(() => {
|
|
1112
|
-
clearCheckboxes();
|
|
1113
|
-
setActiveEditItem(null);
|
|
1114
|
-
}, 300);
|
|
1115
|
-
}
|
|
1116
|
-
}, popoverTitle: 'Add filter', popoverChildren: (0, jsx_runtime_1.jsx)(FilterModal_1.default, { schema: schemaData.schema.find((s) => s.name === currentTable ||
|
|
1117
|
-
s.displayName === currentTable) ?? schemaData.schema[0], fieldValuesMap: uniqueValues[(0, ast_1.getTableNames)(baseAst).length === 1
|
|
1118
|
-
? (0, ast_1.getTableNames)(baseAst)[0]
|
|
1119
|
-
: initialTableName], fieldValuesMapIsLoading: uniqueValuesIsLoading, onSubmitFilter: (filter) => {
|
|
1120
|
-
setOpenPopover(null);
|
|
1121
|
-
const item = (0, astFilterProcessing_1.filterToAst)(filter, client.databaseType.toLowerCase());
|
|
1122
|
-
handleInsertion(item, 'AND', false);
|
|
1123
|
-
}, onDeleteFilter: () => { }, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, SecondaryButtonComponent: SecondaryButtonComponent, MultiSelectComponent: MultiSelectComponent }) }) })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Pivot" }), (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: initialTableName, CardComponent: CardComponent, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, PopoverComponent: PopoverComponent, TextComponent: TextComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEditingPivot, setShowUpdatePivot: setIsEditingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: () => {
|
|
1124
|
-
setPivot(null);
|
|
1125
|
-
setPivotData(null);
|
|
1126
|
-
const formattedRows = formatRows(rows, columns, false);
|
|
1127
|
-
setFormattedRows(formattedRows);
|
|
1128
|
-
},
|
|
1129
|
-
// TODOs
|
|
1130
|
-
selectPivot: () => {
|
|
1131
|
-
return;
|
|
1132
|
-
}, selectPivotOnEdit: true, showTrigger: !pivot, theme: theme, LabelComponent: LabelComponent, HeaderComponent: HeaderComponent, dateRange: undefined, pivotCountRequest: 4, SecondaryButtonComponent: SecondaryButtonComponent, query: activeQuery, initialUniqueValues: uniqueValues[currentTable], disabled: true, pivotRecommendationsEnabled: pivotRecommendationsEnabledState, report: tempReport ?? reportInfo }), pivot && ((0, jsx_runtime_1.jsx)(PivotForm_1.default, { columns: columns, uniqueValues: uniqueValues[currentTable], uniqueValuesIsLoading: uniqueValuesIsLoading, setPivotRowField: (value) => {
|
|
1133
|
-
setPivotRowField(value);
|
|
1134
|
-
}, setPivotColumnField: setPivotColumnField, setPivotValueField: setPivotValueField, setPivotAggregation: setPivotAggregation, pivotRowField: pivotRowField, pivotColumnField: pivotColumnField, pivotValueField: pivotValueField, pivotAggregation: pivotAggregation, onDelete: () => {
|
|
1135
|
-
setPivot(null);
|
|
1136
|
-
setPivotData([]);
|
|
1137
|
-
const formattedRows = formatRows(rows, columns, false);
|
|
1138
|
-
setFormattedRows(formattedRows);
|
|
1139
|
-
}, isLoading: tableLoading, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, PivotColumnContainer: PivotColumnContainer }))] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Sort" }), pivot && pivot.sort && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1140
|
-
display: 'flex',
|
|
1141
|
-
flexDirection: 'column',
|
|
1142
|
-
gap: 8,
|
|
1143
|
-
marginBottom: 12,
|
|
1144
|
-
}, children: (0, jsx_runtime_1.jsx)(AddSortPopover_1.SortSentence, { sortData: {
|
|
1145
|
-
type: pivot.sortDirection,
|
|
1146
|
-
expr: { type: 'column_ref', column: pivot.sortField },
|
|
1147
|
-
}, columns: selectedColumns, setIsPending: () => { }, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover_1.AddSortPopover, handleDelete: () => {
|
|
1148
|
-
setPivot({ ...pivot, sort: false });
|
|
1149
|
-
setBaseAst((0, util_1.deepCopy)(baseAst));
|
|
1150
|
-
if (!pivot) {
|
|
1151
|
-
fetchSqlQuery(baseAst);
|
|
1152
|
-
}
|
|
1153
|
-
}, onSave: (column, direction) => {
|
|
1154
|
-
const sortFieldType = column === (pivot.valueField || 'count')
|
|
1155
|
-
? 'number'
|
|
1156
|
-
: pivot.rowFieldType;
|
|
1157
|
-
setPivot({
|
|
1158
|
-
...pivot,
|
|
1159
|
-
sort: true,
|
|
1160
|
-
sortDirection: direction,
|
|
1161
|
-
sortField: column,
|
|
1162
|
-
sortFieldType: sortFieldType,
|
|
1163
|
-
});
|
|
1164
|
-
setOpenPopover(null);
|
|
1165
|
-
setBaseAst((0, util_1.deepCopy)(baseAst));
|
|
1166
|
-
if (!pivot) {
|
|
1167
|
-
fetchSqlQuery(baseAst);
|
|
1168
|
-
}
|
|
1169
|
-
}, Select: SelectComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent }, `sort-sentence-pivot`) })), baseAst && baseAst.orderby && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1170
|
-
display: 'flex',
|
|
1171
|
-
flexDirection: 'column',
|
|
1172
|
-
gap: 8,
|
|
1173
|
-
marginBottom: 12,
|
|
1174
|
-
}, children: baseAst.orderby.map((sortData, id) => ((0, jsx_runtime_1.jsx)(AddSortPopover_1.SortSentence, { sortData: sortData, columns: selectedColumns, onSave: (column, direction) => {
|
|
1175
|
-
setActiveEditItem(null);
|
|
1176
|
-
setOpenPopover(null);
|
|
1177
|
-
if (column === '')
|
|
1178
|
-
return;
|
|
1179
|
-
const newAst = { ...baseAst };
|
|
1180
|
-
newAst.orderby[id] = {
|
|
1181
|
-
expr: {
|
|
1182
|
-
type: 'column_ref',
|
|
1183
|
-
table: null,
|
|
1184
|
-
column: column,
|
|
1185
|
-
},
|
|
1186
|
-
type: direction,
|
|
1187
|
-
};
|
|
1188
|
-
// look through the columns
|
|
1189
|
-
setActivePath(null);
|
|
1190
|
-
setOpenPopover(null);
|
|
1191
|
-
setBaseAst((0, util_1.deepCopy)(newAst));
|
|
1192
|
-
if (!pivot) {
|
|
1193
|
-
fetchSqlQuery(newAst);
|
|
1194
|
-
}
|
|
1195
|
-
}, setIsPending: () => { }, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover_1.AddSortPopover, handleDelete: () => {
|
|
1196
|
-
const newAst = { ...baseAst };
|
|
1197
|
-
newAst.orderby.splice(id, 1);
|
|
1198
|
-
setBaseAst((0, util_1.deepCopy)(newAst));
|
|
1199
|
-
if (!pivot) {
|
|
1200
|
-
fetchSqlQuery(newAst);
|
|
1201
|
-
}
|
|
1202
|
-
}, Select: SelectComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent, disabled: true }, `sort-sentence-${id}`))) })), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
|
|
1203
|
-
if (!selectedColumns ||
|
|
1204
|
-
selectedColumns.length === 0 ||
|
|
1205
|
-
loading) {
|
|
1206
|
-
return;
|
|
1207
|
-
}
|
|
1208
|
-
if (!openPopover) {
|
|
1209
|
-
setOpenPopover('AddSortPopover');
|
|
1210
|
-
}
|
|
1211
|
-
}, label: "Add sort", disabled: true }), (0, jsx_runtime_1.jsx)(PopoverComponent, { isOpen: openPopover === 'AddSortPopover', setIsOpen: (isOpen) => {
|
|
1212
|
-
if (!isOpen) {
|
|
1213
|
-
setActiveEditItem(null);
|
|
1214
|
-
setActivePath(null);
|
|
1215
|
-
setOpenPopover(null);
|
|
1216
|
-
}
|
|
1217
|
-
}, popoverTitle: "Sort by", popoverChildren: (0, jsx_runtime_1.jsx)(AddSortPopover_1.AddSortPopover, { columns: selectedColumns, Select: SelectComponent, Button: ButtonComponent, onSave: () => { } }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Limit" }), baseAst && baseAst.limit && baseAst.limit.value?.length > 0 ? ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1218
|
-
display: 'flex',
|
|
1219
|
-
flexDirection: 'column',
|
|
1220
|
-
gap: 8,
|
|
1221
|
-
marginBottom: 12,
|
|
1222
|
-
}, children: (0, jsx_runtime_1.jsx)(AddLimitPopover_1.LimitSentence, { limit: baseAst.limit, setOpenPopover: setOpenPopover, LimitPopover: LimitPopoverComponent, EditPopover: AddLimitPopover_1.AddLimitPopover, handleDelete: () => {
|
|
1223
|
-
const newAst = { ...baseAst };
|
|
1224
|
-
newAst.limit = null;
|
|
1225
|
-
setBaseAst((0, util_1.deepCopy)(newAst));
|
|
1226
|
-
fetchSqlQuery(newAst);
|
|
1227
|
-
}, onSave: (limit) => {
|
|
1228
|
-
const newAst = { ...baseAst };
|
|
1229
|
-
newAst.limit = {
|
|
1230
|
-
seperator: '',
|
|
1231
|
-
value: [
|
|
1232
|
-
{
|
|
1233
|
-
type: 'number',
|
|
1234
|
-
value: limit,
|
|
1235
|
-
},
|
|
1236
|
-
],
|
|
1237
|
-
};
|
|
1238
|
-
setOpenPopover(null);
|
|
1239
|
-
setBaseAst((0, util_1.deepCopy)(newAst));
|
|
1240
|
-
fetchSqlQuery(newAst);
|
|
1241
|
-
}, TextInput: TextInputComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent, disabled: true }) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
|
|
1242
|
-
if (!selectedColumns ||
|
|
1243
|
-
selectedColumns.length === 0 ||
|
|
1244
|
-
loading) {
|
|
1245
|
-
return;
|
|
1246
|
-
}
|
|
1247
|
-
if (!openPopover) {
|
|
1248
|
-
setOpenPopover('AddLimitPopover');
|
|
1249
|
-
}
|
|
1250
|
-
}, label: 'Add limit', disabled: true }), (0, jsx_runtime_1.jsx)(PopoverComponent, { isOpen: openPopover === 'AddLimitPopover', setIsOpen: (isOpen) => {
|
|
1251
|
-
if (!isOpen) {
|
|
1252
|
-
setActiveEditItem(null);
|
|
1253
|
-
setActivePath(null);
|
|
1254
|
-
setOpenPopover(null);
|
|
1255
|
-
}
|
|
1256
|
-
}, popoverTitle: "Add limit", popoverChildren: (0, jsx_runtime_1.jsx)(AddLimitPopover_1.AddLimitPopover, { TextInputComponent: TextInputComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent, onSave: () => { } }) })] }))] })] }), (0, jsx_runtime_1.jsxs)(ContainerComponent, { children: [isAIEnabled && ((0, jsx_runtime_1.jsx)("form", { ref: askAILoadingContainerRef, onSubmit: (event) => {
|
|
1257
|
-
event.preventDefault();
|
|
1258
|
-
}, style: {
|
|
1259
|
-
display: 'flex',
|
|
1260
|
-
flexDirection: 'row',
|
|
1261
|
-
gap: 12,
|
|
1262
|
-
visibility: askAIInputWidth === -1 && askAILoadingContainerWidth === -1
|
|
1263
|
-
? 'hidden'
|
|
1264
|
-
: 'visible',
|
|
1265
|
-
}, children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(TextInputComponent, { id: "ask_ai_loading_bar", placeholder: askedAQuestion
|
|
1266
|
-
? 'Ask a follow-up question...'
|
|
1267
|
-
: 'Ask a question...', width: askAIInputWidth !== -1
|
|
1268
|
-
? askAIInputWidth
|
|
1269
|
-
: askAILoadingContainerWidth, value: aiPrompt, onChange: () => { } }), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => { }, label: "Ask AI" }), ((baseAst && dataDisplayed) ||
|
|
1270
|
-
initialLoad ||
|
|
1271
|
-
initialChartLoad) &&
|
|
1272
|
-
!reportId && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => { }, label: "New report" }))] }) })), (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(TableComponent, { isLoading: true, rows: [], columns: [] }), baseAst && dataDisplayed && !initialChartLoad && ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1273
|
-
display: 'flex',
|
|
1274
|
-
flexDirection: 'row',
|
|
1275
|
-
gap: '12px',
|
|
1276
|
-
marginTop: 'auto',
|
|
1277
|
-
}, children: [(0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } }), onDiscardChanges && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), !hideCopySQL && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => copySQLToClipboard(), label: isCopying ? 'Copied' : 'Copy SQL' })), (0, jsx_runtime_1.jsx)(ButtonComponent, { label: reportInfo ? 'Save changes' : 'Add to dashboard', onClick: () => { } })] }))] })] }), (0, jsx_runtime_1.jsx)("style", { children: `body{margin:0;}` })] }));
|
|
1278
|
-
}
|
|
1279
1203
|
return ((0, jsx_runtime_1.jsxs)("div", { style: { backgroundColor: theme?.backgroundColor, ...containerStyle }, className: className, children: [(!isChartBuilderHorizontalView ||
|
|
1280
1204
|
(isChartBuilderHorizontalView && !isChartBuilderOpen)) && ((0, jsx_runtime_1.jsxs)("div", { ref: parentRef, style: {
|
|
1281
1205
|
display: 'flex',
|
|
@@ -1291,7 +1215,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1291
1215
|
if (!openPopover) {
|
|
1292
1216
|
setOpenPopover('AddColumnModal');
|
|
1293
1217
|
}
|
|
1294
|
-
}, label: "Select columns" }), (0, jsx_runtime_1.jsx)(ModalComponent, { isOpen: openPopover === 'AddColumnModal', setIsOpen: (isOpen) => {
|
|
1218
|
+
}, label: "Select columns", disabled: tableLoading || loading }), (0, jsx_runtime_1.jsx)(ModalComponent, { isOpen: openPopover === 'AddColumnModal', setIsOpen: (isOpen) => {
|
|
1295
1219
|
if (!isOpen) {
|
|
1296
1220
|
// delay onClose callback so onClick no-ops
|
|
1297
1221
|
setTimeout(() => {
|
|
@@ -1305,18 +1229,32 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1305
1229
|
setActivePath(null);
|
|
1306
1230
|
setOpenPopover(null);
|
|
1307
1231
|
}, orderedColumnNames: orderedColumnNames, setOrderedColumnNames: setOrderedColumnNames, selectedColumns: selectedColumns, setSelectedColumns: setSelectedColumns, isSelectedAllColumns: isSelectedAllColumns, clearAllState: clearAllState, nameToColumn: nameToColumn, baseAst: baseAst, setBaseAst: (ast) => {
|
|
1308
|
-
|
|
1309
|
-
|
|
1232
|
+
if (baseAst &&
|
|
1233
|
+
ast?.from?.[0]?.table !== baseAst?.from?.[0]?.table) {
|
|
1234
|
+
// table changed, past presets no longer valid
|
|
1235
|
+
setFormData(null);
|
|
1236
|
+
setRecommendedPivots([]);
|
|
1237
|
+
setCreatedPivots([]);
|
|
1238
|
+
ast.where = null;
|
|
1239
|
+
ast.orderby = null;
|
|
1240
|
+
ast.limit = null;
|
|
1241
|
+
setBaseAst(ast);
|
|
1242
|
+
fetchSqlQuery(ast, null);
|
|
1243
|
+
}
|
|
1244
|
+
else {
|
|
1245
|
+
setBaseAst(ast);
|
|
1246
|
+
fetchSqlQuery(ast);
|
|
1247
|
+
}
|
|
1310
1248
|
}, pivot: pivot, initialTableName: initialTableName, defaultAST: constants_1.defaultAST, defaultTable: constants_1.defaultTable, schemaLoading: schemaData.isSchemaLoading, setPivot: setPivot, TextInputComponent: TextInputComponent, SelectColumn: SelectColumnComponent, SecondaryButton: SecondaryButtonComponent, Button: ButtonComponent, ColumnSearchEmptyState: ColumnSearchEmptyState, LoadingComponent: LoadingComponent }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Filters" }), formData && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1311
1249
|
display: 'flex',
|
|
1312
1250
|
flexDirection: 'column',
|
|
1313
1251
|
gap: 8,
|
|
1314
1252
|
marginBottom: 12,
|
|
1315
|
-
}, children: (0, jsx_runtime_1.jsx)(FilterStack_1.default, { client: client, filterStack: filterStack, filterTree: filterTree, defaultAST: constants_1.defaultAST, baseAst: baseAst, setBaseAst: setBaseAst, setFormData: setFormData, fetchSqlQuery: fetchSqlQuery, schemaData: schemaData, defaultColumn: constants_1.defaultColumn, defaultTable: constants_1.defaultTable, currentTable: currentTable, initialTableName: initialTableName, globalUniqueValues: globalUniqueValues, globalUniqueValuesIsLoading: globalUniqueValuesIsLoading, columns: columns, removingFilter: removingFilter, setRemovingFilter: setRemovingFilter, TabsComponent: TabsComponent, FilterPopoverComponent: FilterPopoverComponent, FilterModal: FilterModal_1.default, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent, actionsEnabled:
|
|
1253
|
+
}, children: (0, jsx_runtime_1.jsx)(FilterStack_1.default, { client: client, filterStack: filterStack, filterTree: filterTree, defaultAST: constants_1.defaultAST, baseAst: baseAst, setBaseAst: setBaseAst, setFormData: setFormData, fetchSqlQuery: fetchSqlQuery, schemaData: schemaData, defaultColumn: constants_1.defaultColumn, defaultTable: constants_1.defaultTable, currentTable: currentTable, initialTableName: initialTableName, globalUniqueValues: globalUniqueValues, globalUniqueValuesIsLoading: globalUniqueValuesIsLoading, columns: columns, removingFilter: removingFilter, setRemovingFilter: setRemovingFilter, TabsComponent: TabsComponent, FilterPopoverComponent: FilterPopoverComponent, FilterModal: FilterModal_1.default, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent, actionsEnabled: !tableLoading && !loading }) })), (0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1316
1254
|
display: 'flex',
|
|
1317
1255
|
flexDirection: 'column',
|
|
1318
1256
|
alignItems: 'flex-start',
|
|
1319
|
-
}, children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { disabled: !baseAst || !dataDisplayed, onClick: () => {
|
|
1257
|
+
}, children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { disabled: !baseAst || !dataDisplayed || loading || tableLoading, onClick: () => {
|
|
1320
1258
|
if (!selectedColumns ||
|
|
1321
1259
|
selectedColumns.length === 0 ||
|
|
1322
1260
|
loading) {
|
|
@@ -1357,8 +1295,9 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1357
1295
|
setOpenPopover(null);
|
|
1358
1296
|
const item = (0, astFilterProcessing_1.filterToAst)(filter, client.databaseType.toLowerCase());
|
|
1359
1297
|
handleInsertion(item, 'AND', false);
|
|
1360
|
-
}, onDeleteFilter: () => { }, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent }) }) })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Pivot" }), (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: initialTableName, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, TextComponent: TextComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEditingPivot, setShowUpdatePivot: setIsEditingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: () => {
|
|
1298
|
+
}, onDeleteFilter: () => { }, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent }) }) })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Pivot" }), (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, pivotValueField2: pivotValueField2, setPivotValueField: setPivotValueField, setPivotValueField2: setPivotValueField2, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: initialTableName, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, TextComponent: TextComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEditingPivot, setShowUpdatePivot: setIsEditingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: () => {
|
|
1361
1299
|
setPivot(null);
|
|
1300
|
+
setPivotHint('');
|
|
1362
1301
|
setPivotData(null);
|
|
1363
1302
|
const formattedRows = formatRows(rows, columns, false);
|
|
1364
1303
|
setFormattedRows(formattedRows);
|
|
@@ -1377,17 +1316,32 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1377
1316
|
dateBucket = (0, dates_1.getDateBucketFromRange)(dateRange);
|
|
1378
1317
|
}
|
|
1379
1318
|
setPivot(selectedPivot);
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1319
|
+
setPivotHint('');
|
|
1320
|
+
try {
|
|
1321
|
+
if (!pivotTable) {
|
|
1322
|
+
setTableLoading(true);
|
|
1323
|
+
pivotTable = await (0, PivotModal_1.generatePivotTable)({
|
|
1324
|
+
pivot: selectedPivot,
|
|
1325
|
+
dateBucket,
|
|
1326
|
+
report: tempReport,
|
|
1327
|
+
client,
|
|
1328
|
+
uniqueValues,
|
|
1329
|
+
});
|
|
1330
|
+
}
|
|
1331
|
+
setPivotData(pivotTable || []);
|
|
1332
|
+
const formattedRows = formatRows(pivotTable.rows, columns, true, selectedPivot.aggregationType, dateBucket);
|
|
1333
|
+
setFormattedRows(formattedRows);
|
|
1334
|
+
setErrorMessage('');
|
|
1335
|
+
setPivotError(undefined);
|
|
1383
1336
|
}
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1337
|
+
catch (e) {
|
|
1338
|
+
if (e instanceof Error)
|
|
1339
|
+
setPivotError(e.message);
|
|
1340
|
+
}
|
|
1341
|
+
finally {
|
|
1342
|
+
setTableLoading(false);
|
|
1343
|
+
}
|
|
1344
|
+
}, selectPivotOnEdit: true, showTrigger: !pivot, theme: theme, LabelComponent: LabelComponent, HeaderComponent: HeaderComponent, dateRange: undefined, pivotCountRequest: 4, query: activeQuery, initialUniqueValues: uniqueValues[currentTable], uniqueValuesIsLoading: uniqueValuesIsLoading, disabled: !baseAst || !dataDisplayed || tableLoading || loading, pivotRecommendationsEnabled: pivotRecommendationsEnabledState, report: tempReport }), pivot && ((0, jsx_runtime_1.jsx)(PivotForm_1.default, { columns: columns, uniqueValues: uniqueValues[currentTable], uniqueValuesIsLoading: uniqueValuesIsLoading, setPivotRowField: (value) => {
|
|
1391
1345
|
setPivotRowField(value);
|
|
1392
1346
|
updatePivot(value, 'rowField');
|
|
1393
1347
|
}, setPivotColumnField: (value) => {
|
|
@@ -1396,15 +1350,19 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1396
1350
|
}, setPivotValueField: (value) => {
|
|
1397
1351
|
setPivotValueField(value);
|
|
1398
1352
|
updatePivot(value, 'valueField');
|
|
1353
|
+
}, setPivotValueField2: (value) => {
|
|
1354
|
+
setPivotValueField2(value);
|
|
1355
|
+
updatePivot(value, 'valueField2');
|
|
1399
1356
|
}, setPivotAggregation: (value) => {
|
|
1400
1357
|
setPivotAggregation(value);
|
|
1401
1358
|
updatePivot(value, 'aggregationType');
|
|
1402
1359
|
}, onDelete: () => {
|
|
1403
1360
|
setPivot(null);
|
|
1361
|
+
setPivotHint('');
|
|
1404
1362
|
setPivotData([]);
|
|
1405
1363
|
const formattedRows = formatRows(rows, columns, false);
|
|
1406
1364
|
setFormattedRows(formattedRows);
|
|
1407
|
-
}, isLoading: tableLoading, pivotRowField: pivotRowField, pivotColumnField: pivotColumnField, pivotValueField: pivotValueField, pivotAggregation: pivotAggregation, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, PivotColumnContainer: PivotColumnContainer }))] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Sort" }), pivot && pivot.sort && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1365
|
+
}, isLoading: tableLoading || loading, pivotRowField: pivotRowField, pivotColumnField: pivotColumnField, pivotValueField: pivotValueField, pivotValueField2: pivotValueField2, pivotAggregation: pivotAggregation, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, PivotColumnContainer: PivotColumnContainer, pivotHint: pivotHint }))] }), (0, jsx_runtime_1.jsxs)("div", { style: { width: '100%' }, children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Sort" }), pivot && pivot.sort && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1408
1366
|
display: 'flex',
|
|
1409
1367
|
flexDirection: 'column',
|
|
1410
1368
|
gap: 8,
|
|
@@ -1420,56 +1378,87 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1420
1378
|
`.${pivot.valueField || 'count'}`,
|
|
1421
1379
|
]
|
|
1422
1380
|
: selectedColumns, setIsPending: () => { }, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover_1.AddSortPopover, handleDelete: async () => {
|
|
1423
|
-
if (pivot) {
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1381
|
+
if (!pivot) {
|
|
1382
|
+
setBaseAst((0, util_1.deepCopy)(baseAst));
|
|
1383
|
+
fetchSqlQuery((0, util_1.deepCopy)(baseAst));
|
|
1384
|
+
return;
|
|
1385
|
+
}
|
|
1386
|
+
const tempPivot = { ...pivot, sort: false };
|
|
1387
|
+
let dateBucket = undefined;
|
|
1388
|
+
const tempDateRange = dateRanges &&
|
|
1389
|
+
pivot.rowField &&
|
|
1390
|
+
dateRanges[pivot.rowField];
|
|
1391
|
+
if (tempDateRange) {
|
|
1392
|
+
dateBucket = (0, dates_1.getDateBucketFromRange)(tempDateRange.dateRange);
|
|
1393
|
+
}
|
|
1394
|
+
setPivot(tempPivot);
|
|
1395
|
+
setPivotHint('');
|
|
1396
|
+
try {
|
|
1397
|
+
const pivotedData = await (0, PivotModal_1.generatePivotTable)({
|
|
1398
|
+
pivot: tempPivot,
|
|
1399
|
+
rowLimit: -1,
|
|
1400
|
+
dateBucket,
|
|
1401
|
+
report: tempReport,
|
|
1402
|
+
client,
|
|
1403
|
+
uniqueValues: uniqueValues[currentTable],
|
|
1404
|
+
});
|
|
1434
1405
|
setPivotData(pivotedData || []);
|
|
1435
|
-
const formattedRows = formatRows(pivotedData.rows, columns, true, pivot.aggregationType);
|
|
1406
|
+
const formattedRows = formatRows(pivotedData.rows, columns, true, pivot.aggregationType, dateBucket);
|
|
1436
1407
|
setFormattedRows(formattedRows);
|
|
1437
1408
|
setErrorMessage('');
|
|
1438
|
-
return;
|
|
1439
1409
|
}
|
|
1440
|
-
|
|
1441
|
-
|
|
1410
|
+
catch (e) {
|
|
1411
|
+
if (e instanceof Error)
|
|
1412
|
+
setPivotError(e.message);
|
|
1413
|
+
}
|
|
1414
|
+
finally {
|
|
1415
|
+
setTableLoading(false);
|
|
1416
|
+
}
|
|
1442
1417
|
}, onSave: async (column, direction) => {
|
|
1443
|
-
if (pivot) {
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1418
|
+
if (!pivot) {
|
|
1419
|
+
setOpenPopover(null);
|
|
1420
|
+
setBaseAst((0, util_1.deepCopy)(baseAst));
|
|
1421
|
+
fetchSqlQuery((0, util_1.deepCopy)(baseAst));
|
|
1422
|
+
return;
|
|
1423
|
+
}
|
|
1424
|
+
const sortFieldType = column === (pivot.valueField || 'count')
|
|
1425
|
+
? 'number'
|
|
1426
|
+
: pivot.rowFieldType;
|
|
1427
|
+
const tempPivot = {
|
|
1428
|
+
...pivot,
|
|
1429
|
+
sort: true,
|
|
1430
|
+
sortDirection: direction,
|
|
1431
|
+
sortField: column,
|
|
1432
|
+
sortFieldType: sortFieldType,
|
|
1433
|
+
};
|
|
1434
|
+
setPivot(tempPivot);
|
|
1435
|
+
setPivotHint('');
|
|
1436
|
+
let dateBucket = undefined;
|
|
1437
|
+
const tempDateRange = dateRanges &&
|
|
1438
|
+
pivot.rowField &&
|
|
1439
|
+
dateRanges[pivot.rowField];
|
|
1440
|
+
if (tempDateRange) {
|
|
1441
|
+
dateBucket = (0, dates_1.getDateBucketFromRange)(tempDateRange.dateRange);
|
|
1442
|
+
}
|
|
1443
|
+
try {
|
|
1444
|
+
const pivotedData = await (0, PivotModal_1.generatePivotTable)({
|
|
1445
|
+
pivot: tempPivot,
|
|
1446
|
+
rowLimit: -1,
|
|
1447
|
+
dateBucket,
|
|
1448
|
+
report: tempReport,
|
|
1449
|
+
client,
|
|
1450
|
+
uniqueValues: uniqueValues[currentTable],
|
|
1451
|
+
});
|
|
1463
1452
|
setPivotData(pivotedData || []);
|
|
1464
|
-
const formattedRows = formatRows(pivotedData.rows, columns, true, pivot.aggregationType);
|
|
1453
|
+
const formattedRows = formatRows(pivotedData.rows, columns, true, pivot.aggregationType, dateBucket);
|
|
1465
1454
|
setFormattedRows(formattedRows);
|
|
1466
1455
|
setErrorMessage('');
|
|
1467
|
-
return;
|
|
1468
1456
|
}
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1457
|
+
catch (e) {
|
|
1458
|
+
if (e instanceof Error)
|
|
1459
|
+
setPivotError(e.message);
|
|
1460
|
+
}
|
|
1461
|
+
}, Select: SelectComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent, disabled: tableLoading || loading }, `sort-sentence-pivot`) })), baseAst && baseAst.orderby && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1473
1462
|
display: 'flex',
|
|
1474
1463
|
flexDirection: 'column',
|
|
1475
1464
|
gap: 8,
|
|
@@ -1477,6 +1466,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1477
1466
|
}, children: baseAst.orderby.map((sortData, id) => ((0, jsx_runtime_1.jsx)(AddSortPopover_1.SortSentence, { sortData: sortData, columns: selectedColumns, setIsPending: () => { }, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover_1.AddSortPopover, handleDelete: () => {
|
|
1478
1467
|
if (pivot) {
|
|
1479
1468
|
setPivot({ ...pivot, sort: false });
|
|
1469
|
+
setPivotHint('');
|
|
1480
1470
|
return;
|
|
1481
1471
|
}
|
|
1482
1472
|
const newAst = { ...baseAst };
|
|
@@ -1495,6 +1485,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1495
1485
|
sortField: column,
|
|
1496
1486
|
sortFieldType: sortFieldType,
|
|
1497
1487
|
});
|
|
1488
|
+
setPivotHint('');
|
|
1498
1489
|
return;
|
|
1499
1490
|
}
|
|
1500
1491
|
setActiveEditItem(null);
|
|
@@ -1515,7 +1506,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1515
1506
|
setOpenPopover(null);
|
|
1516
1507
|
setBaseAst((0, util_1.deepCopy)(newAst));
|
|
1517
1508
|
fetchSqlQuery((0, util_1.deepCopy)(newAst));
|
|
1518
|
-
}, Select: SelectComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent }, `sort-sentence-${id}`))) })), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { disabled: !baseAst || !dataDisplayed, onClick: () => {
|
|
1509
|
+
}, Select: SelectComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent, disabled: tableLoading || loading }, `sort-sentence-${id}`))) })), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { disabled: !baseAst || !dataDisplayed || loading || tableLoading, onClick: () => {
|
|
1519
1510
|
if (!selectedColumns || selectedColumns.length === 0) {
|
|
1520
1511
|
return;
|
|
1521
1512
|
}
|
|
@@ -1553,6 +1544,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1553
1544
|
sortFieldType: sortFieldType,
|
|
1554
1545
|
};
|
|
1555
1546
|
setPivot(tempPivot);
|
|
1547
|
+
setPivotHint('');
|
|
1556
1548
|
let dateBucket = undefined;
|
|
1557
1549
|
const tempDateRange = dateRanges &&
|
|
1558
1550
|
pivot.rowField &&
|
|
@@ -1560,11 +1552,23 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1560
1552
|
if (tempDateRange) {
|
|
1561
1553
|
dateBucket = (0, dates_1.getDateBucketFromRange)(tempDateRange.dateRange);
|
|
1562
1554
|
}
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1555
|
+
try {
|
|
1556
|
+
const pivotedData = await (0, PivotModal_1.generatePivotTable)({
|
|
1557
|
+
pivot: tempPivot,
|
|
1558
|
+
dateBucket,
|
|
1559
|
+
report: tempReport,
|
|
1560
|
+
client,
|
|
1561
|
+
uniqueValues: uniqueValues[currentTable],
|
|
1562
|
+
});
|
|
1563
|
+
setErrorMessage('');
|
|
1564
|
+
setPivotData(pivotedData || []);
|
|
1565
|
+
const formattedRows = formatRows(pivotedData.rows, columns, true, pivot.aggregationType, dateBucket);
|
|
1566
|
+
setFormattedRows(formattedRows);
|
|
1567
|
+
}
|
|
1568
|
+
catch (e) {
|
|
1569
|
+
if (e instanceof Error)
|
|
1570
|
+
setPivotError(e.message);
|
|
1571
|
+
}
|
|
1568
1572
|
setActivePath(null);
|
|
1569
1573
|
setOpenPopover(null);
|
|
1570
1574
|
setBaseAst((0, util_1.deepCopy)(baseAst));
|
|
@@ -1606,7 +1610,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1606
1610
|
setOpenPopover(null);
|
|
1607
1611
|
setBaseAst((0, util_1.deepCopy)(newAst));
|
|
1608
1612
|
fetchSqlQuery((0, util_1.deepCopy)(newAst));
|
|
1609
|
-
}, TextInput: TextInputComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent }) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { disabled: !baseAst || !dataDisplayed, onClick: () => {
|
|
1613
|
+
}, TextInput: TextInputComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent, disabled: tableLoading || loading }) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { disabled: !baseAst || !dataDisplayed || loading || tableLoading, onClick: () => {
|
|
1610
1614
|
if (!selectedColumns || selectedColumns.length === 0) {
|
|
1611
1615
|
return;
|
|
1612
1616
|
}
|
|
@@ -1654,10 +1658,7 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1654
1658
|
? 'Ask a follow-up question...'
|
|
1655
1659
|
: 'Ask a question...' }), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => {
|
|
1656
1660
|
fetchAstFromPromptHelper();
|
|
1657
|
-
}, label: 'Ask AI' }), ((baseAst && dataDisplayed) || initialLoad) && !reportId && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: 'New report', onClick: clearAllState }))] }) })), baseAst && ((0, jsx_runtime_1.jsx)(TableComponent, { isLoading:
|
|
1658
|
-
(tableLoading ||
|
|
1659
|
-
(loading && errorMessage.length === 0) ||
|
|
1660
|
-
initialChartLoad), rows: formattedRows, rowCount: pivot ? undefined : numberOfRows, rowCountIsLoading: rowCountIsLoading, rowsPerPage: 20, columns: pivot
|
|
1661
|
+
}, isLoading: askAILoading && !baseAst, label: 'Ask AI' }), ((baseAst && dataDisplayed) || initialLoad) && !reportId && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: 'New report', onClick: clearAllState }))] }) })), baseAst && ((0, jsx_runtime_1.jsx)(TableComponent, { isLoading: tableLoading || (loading && errorMessage.length === 0), rows: formattedRows, rowCount: pivot ? undefined : numberOfRows, rowCountIsLoading: rowCountIsLoading, rowsPerPage: 20, columns: pivot
|
|
1661
1662
|
? pivotData?.columns || emptyPivotColumns()
|
|
1662
1663
|
: enforceOrderOnColumns(Object.keys(rows[0] ?? {})).map((c) => {
|
|
1663
1664
|
return {
|
|
@@ -1681,13 +1682,13 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1681
1682
|
alignItems: 'center',
|
|
1682
1683
|
}, children: [(0, jsx_runtime_1.jsx)(ErrorMessageComponent, { errorMessage: errorMessage }), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
|
|
1683
1684
|
fetchAstFromPromptHelper();
|
|
1684
|
-
}, label: 'Retry' })] })) : ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } })), baseAst && dataDisplayed &&
|
|
1685
|
-
setIsAddLoading(true);
|
|
1686
|
-
await handleRunQuery(currentProcessing, true);
|
|
1687
|
-
setIsAddLoading(false);
|
|
1685
|
+
}, label: 'Retry' })] })) : ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } })), baseAst && dataDisplayed && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [onDiscardChanges && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), !hideCopySQL && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: isCopying ? 'Copied' : 'Copy SQL', onClick: () => copySQLToClipboard() })), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: async () => {
|
|
1688
1686
|
onSaveChanges && onSaveChanges();
|
|
1689
1687
|
setIsChartBuilderOpen(true);
|
|
1690
|
-
}, disabled: !!errorMessage
|
|
1688
|
+
}, disabled: !!errorMessage ||
|
|
1689
|
+
tableLoading ||
|
|
1690
|
+
loading ||
|
|
1691
|
+
unresolvedReportMessage, label: reportId ? 'Save changes' : 'Add to dashboard', tooltipText: unresolvedReportMessage })] }))] })] }), (0, jsx_runtime_1.jsx)("style", { children: `body{margin:0;}` })] })), (!isChartBuilderHorizontalView || isChartBuilderOpen) && ((0, jsx_runtime_1.jsx)(ChartBuilder_1.ChartBuilderWithModal, { report: reportInfo
|
|
1691
1692
|
? {
|
|
1692
1693
|
...reportInfo,
|
|
1693
1694
|
...tempReport,
|
|
@@ -1705,6 +1706,5 @@ SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer,
|
|
|
1705
1706
|
: {
|
|
1706
1707
|
...tempReport,
|
|
1707
1708
|
filtersApplied: specificDashboardFilters,
|
|
1708
|
-
}, rows: rows, columns: columns, pivot: pivot, query: activeQuery, showTableFormatOptions: showChartBuilderTableFormatOptions, showDateFieldOptions: isAdminEnabled, showAccessControlOptions: isAdminEnabled, isAdmin: isAdminEnabled, title: reportId ? 'Save changes' : 'Add to dashboard', isHorizontalView: true, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: reportId ? onSubmitEditReport : onSubmitCreateReport, destinationDashboard: destinationDashboard, organizationName: organizationName, pivotData: pivotData, initialUniqueValues: uniqueValues[currentTable], initialUniqueValuesIsLoading: uniqueValuesIsLoading, pivotRecommendationsEnabled: pivotRecommendationsEnabledState, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, SubHeaderComponent: SubHeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, CardComponent: CardComponent, ModalComponent: ChartBuilderModalComponent, PopoverComponent: PopoverComponent, TableComponent: TableComponent, DeleteButtonComponent: DeleteButtonComponent, LoadingComponent: LoadingComponent, ChartBuilderInputRowContainer: ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer: ChartBuilderInputColumnContainer, FormContainer: ChartBuilderFormContainer, hideDateRangeFilter: true, buttonLabel: !!reportId ? 'Save changes' : 'Add to dashboard', onClickChartElement: onClickChartElement, rowCount: numberOfRows, onPageChange: onPageChange, onSortChange: onSortChange, onFilterPreviewChange: onFilterPreviewChange, isLoading: tableLoading
|
|
1709
|
+
}, rows: chartBuilderInFilteredPreview ? filteredRows : rows, columns: columns, pivot: pivot, query: activeQuery, showTableFormatOptions: showChartBuilderTableFormatOptions, showDateFieldOptions: isAdminEnabled, showAccessControlOptions: isAdminEnabled, isAdmin: isAdminEnabled, title: reportId ? 'Save changes' : 'Add to dashboard', isHorizontalView: true, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: reportId ? onSubmitEditReport : onSubmitCreateReport, destinationDashboard: destinationDashboard, organizationName: organizationName, pivotData: pivotData, initialUniqueValues: uniqueValues[currentTable], initialUniqueValuesIsLoading: uniqueValuesIsLoading, pivotRecommendationsEnabled: pivotRecommendationsEnabledState, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, SubHeaderComponent: SubHeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, CardComponent: CardComponent, ModalComponent: ChartBuilderModalComponent, PopoverComponent: PopoverComponent, TableComponent: TableComponent, DeleteButtonComponent: DeleteButtonComponent, LoadingComponent: LoadingComponent, ChartBuilderInputRowContainer: ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer: ChartBuilderInputColumnContainer, FormContainer: ChartBuilderFormContainer, hideDateRangeFilter: true, buttonLabel: !!reportId ? 'Save changes' : 'Add to dashboard', onClickChartElement: onClickChartElement, rowCount: numberOfRows, onPageChange: onPageChange, onSortChange: onSortChange, onFilterPreviewChange: onFilterPreviewChange, isLoading: tableLoading, isEditingMode: true }))] }));
|
|
1709
1710
|
}
|
|
1710
|
-
exports.default = ReportBuilder;
|