@quillsql/react 2.12.29 → 2.12.31
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 +29 -46
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +187 -468
- package/dist/cjs/ChartBuilder.d.ts +30 -61
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +190 -131
- package/dist/cjs/ChartEditor.d.ts +14 -2
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +70 -125
- package/dist/cjs/Context.d.ts +4 -1
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +52 -6
- package/dist/cjs/Dashboard.d.ts +74 -118
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +273 -47
- package/dist/cjs/DateRangePicker/Calendar.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/Calendar.js +3 -6
- package/dist/cjs/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/DateRangePicker.js +2 -29
- package/dist/cjs/DateRangePicker/DateRangePickerButton.d.ts +1 -2
- package/dist/cjs/DateRangePicker/DateRangePickerButton.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/DateRangePickerButton.js +2 -4
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +2 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +4 -4
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +1 -1
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -15
- package/dist/cjs/ReportBuilder.d.ts +18 -6
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +477 -489
- package/dist/cjs/SQLEditor.d.ts +4 -11
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +76 -88
- package/dist/cjs/Table.d.ts +19 -3
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +130 -114
- package/dist/cjs/TableChart.d.ts.map +1 -1
- package/dist/cjs/TableChart.js +0 -1
- package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/cjs/assets/ArrowDownIcon.d.ts.map +1 -1
- package/dist/cjs/assets/ArrowDownRightIcon.d.ts.map +1 -1
- package/dist/cjs/assets/ArrowLeftHeadIcon.d.ts.map +1 -1
- package/dist/cjs/assets/ArrowRightHeadIcon.d.ts.map +1 -1
- package/dist/cjs/assets/ArrowRightIcon.d.ts.map +1 -1
- package/dist/cjs/assets/ArrowUpHeadIcon.d.ts.map +1 -1
- package/dist/cjs/assets/ArrowUpIcon.d.ts.map +1 -1
- package/dist/cjs/assets/ArrowUpRightIcon.d.ts.map +1 -1
- package/dist/cjs/assets/CalendarIcon.d.ts.map +1 -1
- package/dist/cjs/assets/DoubleArrowLeftHeadIcon.d.ts.map +1 -1
- package/dist/cjs/assets/DoubleArrowRightHeadIcon.d.ts.map +1 -1
- package/dist/cjs/assets/ExclamationFilledIcon.d.ts.map +1 -1
- package/dist/cjs/assets/LoadingSpinner.d.ts.map +1 -1
- package/dist/cjs/assets/SearchIcon.d.ts.map +1 -1
- package/dist/cjs/assets/XCircleIcon.d.ts.map +1 -1
- package/dist/cjs/components/Banner/index.d.ts +1 -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/BigModal/BigModal.d.ts.map +1 -1
- package/dist/cjs/components/BigModal/BigModal.js +6 -12
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +12 -1
- package/dist/cjs/components/Chart/BarList.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarList.js +21 -14
- package/dist/cjs/components/Chart/ChartError.d.ts +8 -1
- package/dist/cjs/components/Chart/ChartError.d.ts.map +1 -1
- package/dist/cjs/components/Chart/ChartError.js +40 -5
- package/dist/cjs/components/Chart/ChartTooltip.d.ts.map +1 -1
- package/dist/cjs/components/Chart/ChartTooltip.js +8 -2
- package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +27 -3
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/PieChart.js +1 -3
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts +1 -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 +5 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +10 -5
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +8 -12
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +137 -194
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +11 -45
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -5
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +3 -32
- package/dist/cjs/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/cjs/components/Dropdown/Dropdown.js +1 -3
- package/dist/cjs/components/Dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/cjs/components/Dropdown/DropdownItem.js +3 -8
- package/dist/cjs/components/Dropdown/index.d.ts +2 -2
- package/dist/cjs/components/Modal/Modal.d.ts.map +1 -1
- package/dist/cjs/components/Modal/Modal.js +2 -3
- package/dist/cjs/components/Modal/index.d.ts +1 -1
- package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelect.js +18 -3
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +18 -3
- package/dist/cjs/components/QuillSelect.js +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +6 -3
- package/dist/cjs/components/QuillTable.d.ts +1 -4
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +5 -11
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +3 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +5 -8
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +1 -3
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +12 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +30 -0
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/FilterModal.js +579 -0
- package/dist/cjs/components/ReportBuilder/ast.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/ast.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ast.js +33 -6
- package/dist/cjs/components/ReportBuilder/constants.d.ts +18 -3
- package/dist/cjs/components/ReportBuilder/constants.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/constants.js +24 -3
- package/dist/cjs/components/ReportBuilder/convert.d.ts +18 -16
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +378 -494
- package/dist/cjs/components/ReportBuilder/operators.d.ts +24 -4
- package/dist/cjs/components/ReportBuilder/operators.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/operators.js +32 -4
- package/dist/cjs/components/ReportBuilder/ui.d.ts +20 -0
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +15 -5
- package/dist/cjs/components/ReportBuilder/util.d.ts +3 -11
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +15 -18
- package/dist/cjs/components/UiComponents.d.ts +36 -8
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +106 -12
- package/dist/cjs/components/selectUtils.d.ts +0 -1
- package/dist/cjs/components/selectUtils.d.ts.map +1 -1
- package/dist/cjs/components/selectUtils.js +1 -22
- package/dist/cjs/hooks/index.d.ts +4 -4
- package/dist/cjs/hooks/useAstToFilterTree.d.ts +11 -0
- package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -0
- package/dist/cjs/hooks/useAstToFilterTree.js +26 -0
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +5 -1
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +3 -1
- package/dist/cjs/hooks/useOnClickOutside.js +4 -4
- package/dist/cjs/hooks/useOnWindowResize.d.ts.map +1 -1
- package/dist/cjs/hooks/useOnWindowResize.js +2 -2
- package/dist/cjs/hooks/useQuill.d.ts +10 -27
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +133 -85
- package/dist/cjs/hooks/useSelectOnKeyDown.d.ts.map +1 -1
- package/dist/cjs/hooks/useSelectOnKeyDown.js +4 -4
- package/dist/cjs/hooks/useTheme.js +1 -1
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +8 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +2 -2
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.js +2 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +2 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +8 -21
- package/dist/cjs/lib/utils.js +2 -2
- package/dist/cjs/models/Columns.d.ts +2 -1
- package/dist/cjs/models/Columns.d.ts.map +1 -1
- package/dist/cjs/models/Filter.d.ts +115 -4
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Filter.js +99 -0
- package/dist/cjs/models/Pagination.d.ts +10 -0
- package/dist/cjs/models/Pagination.d.ts.map +1 -0
- package/dist/cjs/models/Pagination.js +2 -0
- package/dist/cjs/models/Report.d.ts +103 -0
- package/dist/cjs/models/Report.d.ts.map +1 -0
- package/dist/cjs/models/Report.js +2 -0
- package/dist/cjs/utils/aggregate.js +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +36 -0
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -0
- package/dist/cjs/utils/astFilterProcessing.js +8091 -0
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +4 -3
- package/dist/cjs/utils/axisFormatter.js +0 -71
- package/dist/cjs/utils/color.js +9 -87
- package/dist/cjs/utils/columnProcessing.d.ts +2 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +54 -1
- package/dist/cjs/utils/csv.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.d.ts +1 -1
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +6 -59
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +63 -1
- package/dist/cjs/utils/dataProcessing.d.ts +10 -0
- package/dist/cjs/utils/dataProcessing.d.ts.map +1 -0
- package/dist/cjs/utils/dataProcessing.js +144 -0
- package/dist/cjs/utils/dates.d.ts +2 -1
- package/dist/cjs/utils/dates.d.ts.map +1 -1
- package/dist/cjs/utils/dates.js +23 -1
- package/dist/cjs/utils/error.d.ts +5 -0
- package/dist/cjs/utils/error.d.ts.map +1 -0
- package/dist/cjs/utils/error.js +12 -0
- package/dist/cjs/utils/filterConstants.d.ts +34 -0
- package/dist/cjs/utils/filterConstants.d.ts.map +1 -0
- package/dist/cjs/utils/filterConstants.js +36 -0
- package/dist/cjs/utils/filterProcessing.d.ts +7 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +104 -17
- package/dist/cjs/utils/logging.d.ts.map +1 -1
- package/dist/cjs/utils/logging.js +1 -0
- package/dist/cjs/utils/merge.js +0 -21
- package/dist/cjs/utils/{monacoAutocomplete.d.ts → monacoConfig.d.ts} +3 -2
- package/dist/cjs/utils/monacoConfig.d.ts.map +1 -0
- package/dist/cjs/utils/monacoConfig.js +324 -0
- package/dist/cjs/utils/paginationProcessing.d.ts +5 -0
- package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -0
- package/dist/cjs/utils/paginationProcessing.js +30 -0
- package/dist/cjs/utils/pivotConstructor.d.ts +2 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +16 -1
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +12 -6
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +4 -3
- package/dist/cjs/utils/report.d.ts +10 -0
- package/dist/cjs/utils/report.d.ts.map +1 -0
- package/dist/cjs/utils/report.js +180 -0
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +35 -6
- package/dist/cjs/utils/styles.d.ts +1 -1
- package/dist/cjs/utils/styles.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.d.ts +22 -8
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +116 -35
- package/dist/cjs/utils/textProcessing.js +3 -3
- package/dist/cjs/utils/validation.d.ts +9 -0
- package/dist/cjs/utils/validation.d.ts.map +1 -0
- package/dist/cjs/utils/validation.js +24 -0
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +8 -4
- package/dist/esm/Chart.d.ts +29 -46
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +189 -471
- package/dist/esm/ChartBuilder.d.ts +30 -61
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +191 -129
- package/dist/esm/ChartEditor.d.ts +14 -2
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +71 -126
- package/dist/esm/Context.d.ts +4 -1
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +51 -5
- package/dist/esm/Dashboard.d.ts +74 -118
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +275 -49
- package/dist/esm/DateRangePicker/Calendar.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/Calendar.js +5 -8
- package/dist/esm/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/DateRangePicker.js +2 -29
- package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts +1 -2
- package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/DateRangePickerButton.js +2 -4
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +2 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +4 -4
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -15
- package/dist/esm/ReportBuilder.d.ts +18 -6
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +484 -496
- package/dist/esm/SQLEditor.d.ts +4 -11
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +75 -87
- package/dist/esm/Table.d.ts +19 -3
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +132 -116
- package/dist/esm/TableChart.d.ts.map +1 -1
- package/dist/esm/TableChart.js +0 -1
- package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/esm/assets/ArrowDownIcon.d.ts.map +1 -1
- package/dist/esm/assets/ArrowDownRightIcon.d.ts.map +1 -1
- package/dist/esm/assets/ArrowLeftHeadIcon.d.ts.map +1 -1
- package/dist/esm/assets/ArrowRightHeadIcon.d.ts.map +1 -1
- package/dist/esm/assets/ArrowRightIcon.d.ts.map +1 -1
- package/dist/esm/assets/ArrowUpHeadIcon.d.ts.map +1 -1
- package/dist/esm/assets/ArrowUpIcon.d.ts.map +1 -1
- package/dist/esm/assets/ArrowUpRightIcon.d.ts.map +1 -1
- package/dist/esm/assets/CalendarIcon.d.ts.map +1 -1
- package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts.map +1 -1
- package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts.map +1 -1
- package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +1 -1
- package/dist/esm/assets/LoadingSpinner.d.ts.map +1 -1
- package/dist/esm/assets/SearchIcon.d.ts.map +1 -1
- package/dist/esm/assets/XCircleIcon.d.ts.map +1 -1
- package/dist/esm/components/Banner/index.d.ts +1 -1
- package/dist/esm/components/Banner/index.d.ts.map +1 -1
- package/dist/esm/components/Banner/index.js +1 -1
- package/dist/esm/components/BigModal/BigModal.d.ts.map +1 -1
- package/dist/esm/components/BigModal/BigModal.js +7 -13
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +13 -2
- package/dist/esm/components/Chart/BarList.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarList.js +21 -14
- package/dist/esm/components/Chart/ChartError.d.ts +8 -1
- package/dist/esm/components/Chart/ChartError.d.ts.map +1 -1
- package/dist/esm/components/Chart/ChartError.js +39 -6
- package/dist/esm/components/Chart/ChartTooltip.d.ts.map +1 -1
- package/dist/esm/components/Chart/ChartTooltip.js +8 -2
- package/dist/esm/components/Chart/LineChart.d.ts +2 -1
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +28 -4
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.js +1 -3
- package/dist/esm/components/Dashboard/ChartComponent.d.ts +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.js +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +5 -1
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +10 -5
- package/dist/esm/components/Dashboard/DataLoader.d.ts +8 -12
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +137 -194
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +11 -45
- package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -5
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +3 -32
- package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js +2 -4
- package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/DropdownItem.js +4 -9
- package/dist/esm/components/Dropdown/index.d.ts +2 -2
- package/dist/esm/components/Dropdown/index.js +2 -2
- package/dist/esm/components/Modal/Modal.d.ts.map +1 -1
- package/dist/esm/components/Modal/Modal.js +2 -3
- package/dist/esm/components/Modal/index.d.ts +1 -1
- package/dist/esm/components/Modal/index.js +1 -1
- package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelect.js +18 -3
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +18 -3
- package/dist/esm/components/QuillSelect.js +1 -1
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +7 -4
- package/dist/esm/components/QuillTable.d.ts +1 -4
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +5 -11
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +3 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +8 -11
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -4
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +12 -1
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts +30 -0
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/FilterModal.js +576 -0
- package/dist/esm/components/ReportBuilder/ast.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/ast.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ast.js +31 -5
- package/dist/esm/components/ReportBuilder/constants.d.ts +18 -3
- package/dist/esm/components/ReportBuilder/constants.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/constants.js +24 -3
- package/dist/esm/components/ReportBuilder/convert.d.ts +18 -16
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +375 -493
- package/dist/esm/components/ReportBuilder/convert.uspec.d.ts +2 -0
- package/dist/esm/components/ReportBuilder/convert.uspec.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/convert.uspec.js +1419 -0
- package/dist/esm/components/ReportBuilder/operators.d.ts +24 -4
- package/dist/esm/components/ReportBuilder/operators.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/operators.js +32 -4
- package/dist/esm/components/ReportBuilder/ui.d.ts +20 -0
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +13 -4
- package/dist/esm/components/ReportBuilder/util.d.ts +3 -11
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +16 -19
- package/dist/esm/components/UiComponents.d.ts +36 -8
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +104 -11
- package/dist/esm/components/selectUtils.d.ts +0 -1
- package/dist/esm/components/selectUtils.d.ts.map +1 -1
- package/dist/esm/components/selectUtils.js +0 -20
- package/dist/esm/hooks/index.d.ts +4 -4
- package/dist/esm/hooks/index.js +4 -4
- package/dist/esm/hooks/useAstToFilterTree.d.ts +11 -0
- package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -0
- package/dist/esm/hooks/useAstToFilterTree.js +24 -0
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +5 -1
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +4 -2
- package/dist/esm/hooks/useOnClickOutside.js +5 -5
- package/dist/esm/hooks/useOnWindowResize.d.ts.map +1 -1
- package/dist/esm/hooks/useOnWindowResize.js +3 -3
- package/dist/esm/hooks/useQuill.d.ts +10 -27
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +133 -85
- package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +1 -1
- package/dist/esm/hooks/useSelectOnKeyDown.js +5 -5
- package/dist/esm/hooks/useTheme.js +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +9 -2
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts +2 -2
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotList.js +3 -3
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +2 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +11 -24
- package/dist/esm/lib/utils.js +2 -2
- package/dist/esm/models/Columns.d.ts +2 -1
- package/dist/esm/models/Columns.d.ts.map +1 -1
- package/dist/esm/models/Filter.d.ts +115 -4
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Filter.js +98 -1
- package/dist/esm/models/Pagination.d.ts +10 -0
- package/dist/esm/models/Pagination.d.ts.map +1 -0
- package/dist/esm/models/Pagination.js +1 -0
- package/dist/esm/models/Report.d.ts +103 -0
- package/dist/esm/models/Report.d.ts.map +1 -0
- package/dist/esm/models/Report.js +1 -0
- package/dist/esm/test-utils/constants.d.ts +56 -0
- package/dist/esm/test-utils/constants.d.ts.map +1 -0
- package/dist/esm/test-utils/constants.js +271 -0
- package/dist/esm/test-utils/generators.d.ts +4 -0
- package/dist/esm/test-utils/generators.d.ts.map +1 -0
- package/dist/esm/test-utils/generators.js +37 -0
- package/dist/esm/utils/aggregate.js +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +36 -0
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -0
- package/dist/esm/utils/astFilterProcessing.js +8084 -0
- package/dist/esm/utils/astFilterProcessing.uspec.d.ts +2 -0
- package/dist/esm/utils/astFilterProcessing.uspec.d.ts.map +1 -0
- package/dist/esm/utils/astFilterProcessing.uspec.js +2877 -0
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +4 -3
- package/dist/esm/utils/axisFormatter.js +0 -71
- package/dist/esm/utils/color.js +9 -87
- package/dist/esm/utils/columnProcessing.d.ts +2 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +52 -0
- package/dist/esm/utils/columnProcessing.uspec.d.ts +2 -0
- package/dist/esm/utils/columnProcessing.uspec.d.ts.map +1 -0
- package/dist/esm/utils/columnProcessing.uspec.js +65 -0
- package/dist/esm/utils/csv.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.d.ts +1 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +6 -59
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +63 -1
- package/dist/esm/utils/dataProcessing.d.ts +10 -0
- package/dist/esm/utils/dataProcessing.d.ts.map +1 -0
- package/dist/esm/utils/dataProcessing.js +138 -0
- package/dist/esm/utils/dataProcessing.uspec.d.ts +2 -0
- package/dist/esm/utils/dataProcessing.uspec.d.ts.map +1 -0
- package/dist/esm/utils/dataProcessing.uspec.js +205 -0
- package/dist/esm/utils/dates.d.ts +2 -1
- package/dist/esm/utils/dates.d.ts.map +1 -1
- package/dist/esm/utils/dates.js +21 -0
- package/dist/esm/utils/error.d.ts +5 -0
- package/dist/esm/utils/error.d.ts.map +1 -0
- package/dist/esm/utils/error.js +8 -0
- package/dist/esm/utils/filterConstants.d.ts +34 -0
- package/dist/esm/utils/filterConstants.d.ts.map +1 -0
- package/dist/esm/utils/filterConstants.js +33 -0
- package/dist/esm/utils/filterProcessing.d.ts +7 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +101 -16
- package/dist/esm/utils/filterProcessing.uspec.d.ts +2 -0
- package/dist/esm/utils/filterProcessing.uspec.d.ts.map +1 -0
- package/dist/esm/utils/filterProcessing.uspec.js +245 -0
- package/dist/esm/utils/logging.d.ts.map +1 -1
- package/dist/esm/utils/logging.js +1 -0
- package/dist/esm/utils/merge.js +0 -21
- package/dist/esm/utils/{monacoAutocomplete.d.ts → monacoConfig.d.ts} +3 -2
- package/dist/esm/utils/monacoConfig.d.ts.map +1 -0
- package/dist/esm/utils/monacoConfig.js +319 -0
- package/dist/esm/utils/paginationProcessing.d.ts +5 -0
- package/dist/esm/utils/paginationProcessing.d.ts.map +1 -0
- package/dist/esm/utils/paginationProcessing.js +25 -0
- package/dist/esm/utils/pivotConstructor.d.ts +2 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +16 -1
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +12 -6
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +4 -3
- package/dist/esm/utils/queryConstructor.uspec.js +21 -21
- package/dist/esm/utils/report.d.ts +10 -0
- package/dist/esm/utils/report.d.ts.map +1 -0
- package/dist/esm/utils/report.ispec.d.ts +2 -0
- package/dist/esm/utils/report.ispec.d.ts.map +1 -0
- package/dist/esm/utils/report.ispec.js +46 -0
- package/dist/esm/utils/report.js +174 -0
- package/dist/esm/utils/report.uspec.d.ts +2 -0
- package/dist/esm/utils/report.uspec.d.ts.map +1 -0
- package/dist/esm/utils/report.uspec.js +66 -0
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +35 -6
- package/dist/esm/utils/styles.d.ts +1 -1
- package/dist/esm/utils/styles.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.d.ts +22 -8
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.ispec.d.ts +2 -0
- package/dist/esm/utils/tableProcessing.ispec.d.ts.map +1 -0
- package/dist/esm/utils/tableProcessing.ispec.js +61 -0
- package/dist/esm/utils/tableProcessing.js +112 -33
- package/dist/esm/utils/textProcessing.js +3 -3
- package/dist/esm/utils/validation.d.ts +9 -0
- package/dist/esm/utils/validation.d.ts.map +1 -0
- package/dist/esm/utils/validation.js +20 -0
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +8 -4
- package/package.json +1 -1
- package/dist/cjs/utils/monacoAutocomplete.d.ts.map +0 -1
- package/dist/cjs/utils/monacoAutocomplete.js +0 -145
- package/dist/cjs/utils/queryConstructor.uspec.d.ts +0 -2
- package/dist/cjs/utils/queryConstructor.uspec.d.ts.map +0 -1
- package/dist/cjs/utils/queryConstructor.uspec.js +0 -225
- package/dist/esm/utils/monacoAutocomplete.d.ts.map +0 -1
- package/dist/esm/utils/monacoAutocomplete.js +0 -140
package/dist/cjs/ChartBuilder.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.DashboardFilterModal = exports.ChartBuilderWithModal = exports.dateFormatOptions = exports.numberFormatOptions = exports.createInitialFormData = void 0;
|
|
7
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
/* eslint-disable no-unused-vars */
|
|
9
5
|
const react_1 = require("react");
|
|
10
6
|
const Context_1 = require("./Context");
|
|
11
7
|
const dataFetcher_1 = require("./utils/dataFetcher");
|
|
12
8
|
const PivotModal_1 = require("./internals/ReportBuilder/PivotModal");
|
|
13
9
|
const PivotList_1 = require("./internals/ReportBuilder/PivotList");
|
|
14
|
-
const Chart_1 =
|
|
10
|
+
const Chart_1 = require("./Chart");
|
|
15
11
|
const UiComponents_1 = require("./components/UiComponents");
|
|
16
12
|
const merge_1 = require("./utils/merge");
|
|
17
13
|
const textProcessing_1 = require("./utils/textProcessing");
|
|
@@ -22,6 +18,9 @@ const columnProcessing_1 = require("./utils/columnProcessing");
|
|
|
22
18
|
const astProcessing_1 = require("./utils/astProcessing");
|
|
23
19
|
const schema_1 = require("./utils/schema");
|
|
24
20
|
const dates_1 = require("./utils/dates");
|
|
21
|
+
const validation_1 = require("./utils/validation");
|
|
22
|
+
const ChartError_1 = require("./components/Chart/ChartError");
|
|
23
|
+
const report_1 = require("./utils/report");
|
|
25
24
|
const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
|
|
26
25
|
const POSTGRES_DATE_TYPES = [
|
|
27
26
|
'timestamp',
|
|
@@ -64,12 +63,12 @@ function createInitialFormData(columns) {
|
|
|
64
63
|
return { ...col, label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(col.label) };
|
|
65
64
|
}),
|
|
66
65
|
xAxisField: columns?.[0]?.field || '',
|
|
67
|
-
xAxisFormat: columns?.[0]?.format || '',
|
|
66
|
+
xAxisFormat: columns?.[0]?.format || 'whole_number',
|
|
68
67
|
yAxisFields: [
|
|
69
68
|
{
|
|
70
69
|
field: firstNumberColumn?.field || columns?.[0]?.field || '',
|
|
71
70
|
label: '',
|
|
72
|
-
format: firstNumberColumn?.format || columns?.[0]?.
|
|
71
|
+
format: firstNumberColumn?.format || columns?.[0]?.format || 'string',
|
|
73
72
|
},
|
|
74
73
|
],
|
|
75
74
|
xAxisLabel: '',
|
|
@@ -81,18 +80,26 @@ function createInitialFormData(columns) {
|
|
|
81
80
|
return formEmptyState;
|
|
82
81
|
}
|
|
83
82
|
exports.createInitialFormData = createInitialFormData;
|
|
84
|
-
function getChartTypeOptions(formData) {
|
|
83
|
+
function getChartTypeOptions(formData, dashboard) {
|
|
84
|
+
let viableCharts = CHART_TYPES;
|
|
85
|
+
if (dashboard.dateFilter && dashboard.dateFilter.comparison) {
|
|
86
|
+
viableCharts = viableCharts.filter((chart) => !['table', 'metric', 'bar', 'pie'].includes(chart));
|
|
87
|
+
}
|
|
85
88
|
if (formData.pivot && !formData.pivot.rowField) {
|
|
86
|
-
return
|
|
89
|
+
return viableCharts
|
|
90
|
+
.filter((elem) => elem === 'metric' || elem === 'table')
|
|
91
|
+
.map((elem) => ({
|
|
87
92
|
label: elem,
|
|
88
93
|
value: elem,
|
|
89
94
|
}));
|
|
90
95
|
}
|
|
91
96
|
else {
|
|
92
|
-
return
|
|
97
|
+
return viableCharts
|
|
98
|
+
.filter((elem) => !((formData.pivot && elem === 'metric') ||
|
|
93
99
|
(formData.pivot &&
|
|
94
100
|
formData.pivot.columnField &&
|
|
95
|
-
(elem === 'bar' || elem === 'pie'))))
|
|
101
|
+
(elem === 'bar' || elem === 'pie'))))
|
|
102
|
+
.map((elem) => ({ label: elem, value: elem }));
|
|
96
103
|
}
|
|
97
104
|
}
|
|
98
105
|
function getTablesHelper(ast, allTables) {
|
|
@@ -108,8 +115,9 @@ function getTablesHelper(ast, allTables) {
|
|
|
108
115
|
// With statement column references
|
|
109
116
|
if (ast.with) {
|
|
110
117
|
for (const withStmt of ast.with) {
|
|
111
|
-
|
|
112
|
-
|
|
118
|
+
const astFrom = withStmt.stmt.from ?? withStmt.stmt.ast.from;
|
|
119
|
+
if (astFrom) {
|
|
120
|
+
const withReferencedColumns = (0, astProcessing_1.getColumnsByTableFromASTAndSchema)(withStmt.stmt.ast ?? withStmt.stmt, allTables, tableAliasMap);
|
|
113
121
|
// @ts-ignore
|
|
114
122
|
Object.keys(withReferencedColumns).forEach((tableName) => {
|
|
115
123
|
if (referencedColumns[tableName]) {
|
|
@@ -136,7 +144,7 @@ function getTablesHelper(ast, allTables) {
|
|
|
136
144
|
}) || [],
|
|
137
145
|
};
|
|
138
146
|
});
|
|
139
|
-
|
|
147
|
+
const dateFields = allTables
|
|
140
148
|
.filter((table) => onlyReferenceTables.includes(table.displayName))
|
|
141
149
|
.map((table) => {
|
|
142
150
|
return {
|
|
@@ -151,12 +159,32 @@ function getTablesHelper(ast, allTables) {
|
|
|
151
159
|
return { referencedTablesAndColumns, dateFields };
|
|
152
160
|
}
|
|
153
161
|
async function getReferencedTables(client, sqlQuery, dbTables) {
|
|
154
|
-
const resp = await (0, dataFetcher_1.getDataFromCloud)(client, `astify`, {
|
|
162
|
+
const resp = await (0, dataFetcher_1.getDataFromCloud)(client, `astify`, {
|
|
163
|
+
query: sqlQuery,
|
|
164
|
+
useNewNodeSql: true,
|
|
165
|
+
});
|
|
155
166
|
if (resp.success === false) {
|
|
156
167
|
return getTablesHelper((0, astProcessing_1.getSelectFromAST)({}), dbTables);
|
|
157
168
|
}
|
|
158
169
|
return getTablesHelper((0, astProcessing_1.getSelectFromAST)(resp.ast), dbTables);
|
|
159
170
|
}
|
|
171
|
+
function createReportFromForm(formData, report, selectedPivotTable, rows = []) {
|
|
172
|
+
return (0, report_1.convertInternalReportToReport)({
|
|
173
|
+
...formData,
|
|
174
|
+
dashboardName: formData.dashboardName || '',
|
|
175
|
+
pivot: formData.pivot,
|
|
176
|
+
id: '',
|
|
177
|
+
order: -1,
|
|
178
|
+
compareRows: report?.compareRows || [],
|
|
179
|
+
filtersApplied: report?.filtersApplied || [],
|
|
180
|
+
queryString: '',
|
|
181
|
+
rows: selectedPivotTable?.rows ?? rows,
|
|
182
|
+
rowCount: report?.rowCount || selectedPivotTable?.rows?.length || rows.length || 0,
|
|
183
|
+
yAxisFields: formData.yAxisFields ?? [],
|
|
184
|
+
pivotColumns: selectedPivotTable?.columns ?? undefined,
|
|
185
|
+
pivotRows: selectedPivotTable?.rows ?? undefined,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
160
188
|
exports.numberFormatOptions = [
|
|
161
189
|
'whole_number',
|
|
162
190
|
'one_decimal_place',
|
|
@@ -268,7 +296,7 @@ exports.ChartBuilderWithModal = ChartBuilderWithModal;
|
|
|
268
296
|
* ### Chart Builder API
|
|
269
297
|
* @see https://docs.quillsql.com/components/chart-builder
|
|
270
298
|
*/
|
|
271
|
-
function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, HeaderComponent = UiComponents_1.MemoizedHeader, SubHeaderComponent = UiComponents_1.MemoizedSubHeader, LabelComponent = UiComponents_1.MemoizedLabel, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, TextComponent = UiComponents_1.MemoizedText, PopoverComponent = UiComponents_1.MemoizedPopover, CardComponent = QuillCard_1.QuillCard, TableComponent = UiComponents_1.QuillTableComponent, ModalComponent, LoadingComponent = UiComponents_1.QuillLoadingComponent, ErrorMessageComponent = UiComponents_1.QuillErrorMessageComponent, ChartBuilderInputRowContainer = UiComponents_1.QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = UiComponents_1.QuillChartBuilderInputColumnContainer, PivotRowContainer = UiComponents_1.QuillPivotRowContainer, PivotColumnContainer = UiComponents_1.QuillPivotColumnContainer, FormContainer = UiComponents_1.QuillChartBuilderFormContainer, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, report = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, initialUniqueValues, pivotRecommendationsEnabled = true, onSortChange, onPageChange, rowCount, isLoading, isComparison, onClickChartElement, }) {
|
|
299
|
+
function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, HeaderComponent = UiComponents_1.MemoizedHeader, SubHeaderComponent = UiComponents_1.MemoizedSubHeader, LabelComponent = UiComponents_1.MemoizedLabel, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, TextComponent = UiComponents_1.MemoizedText, PopoverComponent = UiComponents_1.MemoizedPopover, CardComponent = QuillCard_1.QuillCard, TableComponent = UiComponents_1.QuillTableComponent, ModalComponent = UiComponents_1.MemoizedModal, LoadingComponent = UiComponents_1.QuillLoadingComponent, ErrorMessageComponent = UiComponents_1.QuillErrorMessageComponent, ChartBuilderInputRowContainer = UiComponents_1.QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = UiComponents_1.QuillChartBuilderInputColumnContainer, PivotRowContainer = UiComponents_1.QuillPivotRowContainer, PivotColumnContainer = UiComponents_1.QuillPivotColumnContainer, FormContainer = UiComponents_1.QuillChartBuilderFormContainer, ErrorComponent = ChartError_1.QuillChartErrorWithAction, onClickChartError, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, report = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, initialUniqueValues, pivotRecommendationsEnabled = true, onSortChange, onPageChange, rowCount, isLoading, isComparison, onClickChartElement, }) {
|
|
272
300
|
const dateRange = dr;
|
|
273
301
|
const [client] = (0, react_1.useContext)(Context_1.ClientContext);
|
|
274
302
|
const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
|
|
@@ -276,15 +304,27 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
276
304
|
const [windowWidth, setWindowWidth] = (0, react_1.useState)(1200);
|
|
277
305
|
const [isSubmitting, setIsSubmitting] = (0, react_1.useState)(false);
|
|
278
306
|
const [pivotCardWidth, setPivotCardWidth] = (0, react_1.useState)(665);
|
|
307
|
+
const [chartTypes, setChartTypes] = (0, react_1.useState)(CHART_TYPES.map((type) => {
|
|
308
|
+
return { label: type, value: type };
|
|
309
|
+
}));
|
|
279
310
|
const [formWidth, setFormWidth] = (0, react_1.useState)(665);
|
|
280
311
|
const inputRef = (0, react_1.useRef)(null);
|
|
281
312
|
const selectRef = (0, react_1.useRef)(null);
|
|
282
|
-
const
|
|
313
|
+
const [, dispatch] = (0, react_1.useContext)(Context_1.DashboardContext);
|
|
283
314
|
const [processedColumns, setProcessedColumns] = (0, react_1.useState)(columns);
|
|
284
315
|
const parentRef = (0, react_1.useRef)(null);
|
|
285
316
|
const deleteRef = (0, react_1.useRef)(null);
|
|
286
317
|
const modalPadding = 20;
|
|
287
318
|
const deleteButtonMargin = -12;
|
|
319
|
+
const validationHelper = (formData, dashboard, dateField, tables) => {
|
|
320
|
+
const issues = (0, validation_1.validateReport)(formData, dashboard, dateField || defaultDateField, tables || allTables);
|
|
321
|
+
if (issues.length > 0) {
|
|
322
|
+
setFilterIssues(issues);
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
setFilterIssues([]);
|
|
326
|
+
}
|
|
327
|
+
};
|
|
288
328
|
(0, react_1.useEffect)(() => {
|
|
289
329
|
if (schema) {
|
|
290
330
|
const newProcessedColumns = columns.map((col) => {
|
|
@@ -369,18 +409,14 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
369
409
|
const [dashboardOptions, setDashboardOptions] = (0, react_1.useState)([]);
|
|
370
410
|
const [defaultDashboardName, setDefaultDashboardName] = (0, react_1.useState)(destinationDashboard || report?.dashboardName || '');
|
|
371
411
|
const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
|
|
372
|
-
const
|
|
412
|
+
const { dashboardData } = (0, react_1.useContext)(Context_1.DashboardDataContext);
|
|
373
413
|
const specificDashboardFilter = (0, react_1.useMemo)(() => {
|
|
374
414
|
return dashboardFilters.filter((f) => f && defaultDashboardName === f.dashboardName);
|
|
375
415
|
}, [dashboardFilters]);
|
|
376
|
-
const [dashboardFilters2, setDashboardFilters] = (0, react_1.useState)([]);
|
|
377
|
-
const [dashboardHasDateFilter, setDashboardHasDateFilter] = (0, react_1.useState)(false);
|
|
378
|
-
const [dashboardHasDateComparison, setDashboardHasDateComparison] = (0, react_1.useState)(false);
|
|
379
416
|
const [showFilterModal, setShowFilterModal] = (0, react_1.useState)(false);
|
|
380
417
|
const [filterIssues, setFilterIssues] = (0, react_1.useState)([]);
|
|
381
418
|
const [showPivotPopover, setShowPivotPopover] = (0, react_1.useState)(false);
|
|
382
419
|
const [isEdittingPivot, setIsEdittingPivot] = (0, react_1.useState)(false);
|
|
383
|
-
const [intialLoad, setInitialLoad] = (0, react_1.useState)(true);
|
|
384
420
|
const [selectedPivotIndex, setSelectedPivotIndex] = (0, react_1.useState)(-1);
|
|
385
421
|
const [tableName, setTableName] = (0, react_1.useState)(undefined);
|
|
386
422
|
const selectedTable = schema?.find((t) => t.displayName === tableName);
|
|
@@ -410,12 +446,12 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
410
446
|
return { ...col, label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(col.label) };
|
|
411
447
|
}),
|
|
412
448
|
xAxisField: columns?.[0]?.field || '',
|
|
413
|
-
xAxisFormat: columns?.[0]?.format || '',
|
|
449
|
+
xAxisFormat: columns?.[0]?.format || 'string',
|
|
414
450
|
yAxisFields: [
|
|
415
451
|
{
|
|
416
452
|
field: firstNumberColumn?.field || columns?.[0]?.field || '',
|
|
417
453
|
label: '',
|
|
418
|
-
format: firstNumberColumn?.format || columns?.[0]?.
|
|
454
|
+
format: firstNumberColumn?.format || columns?.[0]?.format || 'string',
|
|
419
455
|
},
|
|
420
456
|
],
|
|
421
457
|
xAxisLabel: '',
|
|
@@ -425,6 +461,9 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
425
461
|
template: false,
|
|
426
462
|
};
|
|
427
463
|
const updateDashboardFilters = async (dashboardName) => {
|
|
464
|
+
if (dashboardData && dashboardData[dashboardName]) {
|
|
465
|
+
return dashboardData[dashboardName];
|
|
466
|
+
}
|
|
428
467
|
const { queryEndpoint, queryHeaders, publicKey, customerId } = client;
|
|
429
468
|
if (queryEndpoint) {
|
|
430
469
|
const response = await fetch(queryEndpoint, {
|
|
@@ -440,22 +479,22 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
440
479
|
name: dashboardName,
|
|
441
480
|
clientId: publicKey,
|
|
442
481
|
databaseType: client.databaseType,
|
|
482
|
+
useNewNodeSql: true,
|
|
443
483
|
},
|
|
444
484
|
}),
|
|
445
485
|
credentials: 'omit', // If withCredentials is true, set to 'include'. Otherwise, set to 'omit'.
|
|
446
486
|
});
|
|
447
487
|
const responseData = (await response.json()).data;
|
|
448
488
|
if (responseData) {
|
|
449
|
-
|
|
450
|
-
setDashboardHasDateFilter(!!responseData.dateFilter);
|
|
451
|
-
setDashboardHasDateComparison(responseData.dateFilter?.comparison || false);
|
|
489
|
+
return responseData;
|
|
452
490
|
}
|
|
453
491
|
}
|
|
454
492
|
};
|
|
455
493
|
const pivotFormData = (pivot) => {
|
|
456
494
|
const yAxisField = pivot.columnField || pivot.valueField;
|
|
457
|
-
const yAxisLabel = report?.yAxisFields?.length > 0
|
|
458
|
-
?
|
|
495
|
+
const yAxisLabel = report?.yAxisFields && report?.yAxisFields?.length > 0
|
|
496
|
+
? // @ts-ignore
|
|
497
|
+
report.yAxisFields[0].label
|
|
459
498
|
: pivot.valueField;
|
|
460
499
|
// date labels for pivots should be treated like strings since they are
|
|
461
500
|
const yAxisIsDate = pivot.columnField
|
|
@@ -469,6 +508,7 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
469
508
|
xAxisFormat: (0, PivotModal_1.isDateField)(pivot.rowFieldType)
|
|
470
509
|
? 'string'
|
|
471
510
|
: columns.find((col) => col.field === pivot.rowField)?.format ||
|
|
511
|
+
report?.xAxisFormat ||
|
|
472
512
|
'whole_number',
|
|
473
513
|
xAxisLabel: report?.xAxisLabel || pivot.rowField,
|
|
474
514
|
yAxisFields: [
|
|
@@ -477,22 +517,33 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
477
517
|
label: yAxisLabel,
|
|
478
518
|
format: yAxisIsDate
|
|
479
519
|
? 'string'
|
|
480
|
-
: report?.yAxisFields?.length > 0
|
|
481
|
-
?
|
|
520
|
+
: report?.yAxisFields && report?.yAxisFields?.length > 0
|
|
521
|
+
? // @ts-ignore
|
|
522
|
+
report?.yAxisFields[0].format
|
|
482
523
|
: columns.find((col) => col.field === pivot.valueField)?.format ||
|
|
483
524
|
'whole_number',
|
|
484
525
|
},
|
|
485
526
|
],
|
|
486
527
|
};
|
|
487
528
|
};
|
|
488
|
-
const
|
|
489
|
-
|
|
529
|
+
const formFormDataFromReport = (report) => {
|
|
530
|
+
let pivotData = {};
|
|
531
|
+
let dateField = defaultDateField;
|
|
532
|
+
if (pivot) {
|
|
533
|
+
pivotData = pivotFormData(pivot);
|
|
534
|
+
}
|
|
535
|
+
if (report) {
|
|
536
|
+
dateField = report.dateField || defaultDateField;
|
|
537
|
+
}
|
|
538
|
+
return {
|
|
490
539
|
...formEmptyState,
|
|
491
540
|
...report,
|
|
492
|
-
...
|
|
541
|
+
...pivotData,
|
|
493
542
|
...(destinationDashboard && { dashboardName: destinationDashboard }),
|
|
494
|
-
|
|
495
|
-
|
|
543
|
+
dateField: dateField,
|
|
544
|
+
};
|
|
545
|
+
};
|
|
546
|
+
const [formData, setFormData] = (0, react_1.useState)(formFormDataFromReport(report));
|
|
496
547
|
(0, react_1.useEffect)(() => {
|
|
497
548
|
if (!loadingFormData && triggeredEditChart) {
|
|
498
549
|
editChart();
|
|
@@ -502,8 +553,14 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
502
553
|
async function getFormData() {
|
|
503
554
|
setLoadingFormData(true);
|
|
504
555
|
const curFormData = formData;
|
|
505
|
-
|
|
506
|
-
|
|
556
|
+
let dashNames = Object.keys(dashboardData).map((dashboard) => {
|
|
557
|
+
return dashboard;
|
|
558
|
+
}) ?? [];
|
|
559
|
+
if (dashNames.length === 0) {
|
|
560
|
+
const resp = await (0, dataFetcher_1.getDataFromCloud)(client, `dashnames/${client.publicKey}/`, null, 'GET');
|
|
561
|
+
dashNames = resp.dashboardNames;
|
|
562
|
+
}
|
|
563
|
+
let dashboardOptions = dashNames
|
|
507
564
|
.filter((elem) => elem !== null)
|
|
508
565
|
.map((key) => ({ label: key, value: key }));
|
|
509
566
|
if (!dashboardOptions.length) {
|
|
@@ -516,13 +573,16 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
516
573
|
{ label: destinationDashboard, value: destinationDashboard },
|
|
517
574
|
];
|
|
518
575
|
}
|
|
519
|
-
|
|
520
|
-
|
|
576
|
+
let dashboardName = report?.dashboardName
|
|
577
|
+
? report.dashboardName
|
|
578
|
+
: dashboardOptions[0]?.label || '';
|
|
579
|
+
if (destinationDashboard) {
|
|
580
|
+
dashboardName = destinationDashboard;
|
|
581
|
+
}
|
|
582
|
+
const curDashboard = await updateDashboardFilters(dashboardName);
|
|
521
583
|
setDashboardOptions(dashboardOptions);
|
|
522
|
-
const dashboardName = destinationDashboard ??
|
|
523
|
-
(report ? report?.dashboardName : dashboardOptions[0]?.label);
|
|
524
584
|
curFormData.dashboardName = dashboardName;
|
|
525
|
-
setDefaultDashboardName(
|
|
585
|
+
setDefaultDashboardName(dashboardName ??
|
|
526
586
|
(report ? report?.dashboardName : dashboardOptions[0]?.label));
|
|
527
587
|
let curSchemaData = schema;
|
|
528
588
|
if (!curSchemaData || curSchemaData.length === 0) {
|
|
@@ -546,7 +606,7 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
546
606
|
const tableNames = result.referencedTablesAndColumns.map((table) => table.name);
|
|
547
607
|
setAllTables(tableNames);
|
|
548
608
|
let customFieldUsage = false;
|
|
549
|
-
for (
|
|
609
|
+
for (const table of tableNames) {
|
|
550
610
|
const tableInfo = curSchemaData.find((elem) => elem.name === table);
|
|
551
611
|
if (tableInfo?.customFieldInfo) {
|
|
552
612
|
customFieldUsage = true;
|
|
@@ -566,18 +626,22 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
566
626
|
result.dateFields[0]?.columns[0]?.field ||
|
|
567
627
|
'',
|
|
568
628
|
};
|
|
569
|
-
curFormData.dateField = dateField;
|
|
570
629
|
let isTemplate = curFormData.template;
|
|
571
630
|
if (customFieldUsage) {
|
|
572
631
|
isTemplate = false;
|
|
573
632
|
}
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
dashboardName: report && report.dashboardName
|
|
633
|
+
curFormData.dashboardName =
|
|
634
|
+
report && report.dashboardName
|
|
577
635
|
? report?.dashboardName
|
|
578
|
-
: dashboardOptions[0]?.label
|
|
579
|
-
|
|
580
|
-
|
|
636
|
+
: dashboardOptions[0]?.label;
|
|
637
|
+
curFormData.template = isTemplate;
|
|
638
|
+
if (!curFormData.dateField.field || !curFormData.dateField.table) {
|
|
639
|
+
if (dateField.field) {
|
|
640
|
+
curFormData.dateField = dateField;
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
setFormData(curFormData);
|
|
644
|
+
validationHelper(curFormData, curDashboard, curFormData.dateField ?? dateField, tableNames);
|
|
581
645
|
setLoadingFormData(false);
|
|
582
646
|
}
|
|
583
647
|
getFormData();
|
|
@@ -585,7 +649,6 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
585
649
|
const [selectedPivotTable, setSelectedPivotTable] = (0, react_1.useState)(pivotData || undefined);
|
|
586
650
|
const fetchPivotData = async (pivot, uniqueValues, overrideDateRange) => {
|
|
587
651
|
if (pivot && rows) {
|
|
588
|
-
setInitialLoad(false);
|
|
589
652
|
const dateFilter = report
|
|
590
653
|
? report.filtersApplied.find((filter) => {
|
|
591
654
|
return filter.filterType === 'date_range';
|
|
@@ -641,8 +704,15 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
641
704
|
}, {});
|
|
642
705
|
});
|
|
643
706
|
}
|
|
644
|
-
}, [
|
|
645
|
-
|
|
707
|
+
}, [
|
|
708
|
+
selectedPivotTable,
|
|
709
|
+
formData.columns,
|
|
710
|
+
formData.chartType,
|
|
711
|
+
rows,
|
|
712
|
+
formData.pivot,
|
|
713
|
+
]);
|
|
714
|
+
const handleChange = async (value, fieldName, index) => {
|
|
715
|
+
let updatedForm = { ...formData };
|
|
646
716
|
try {
|
|
647
717
|
// WE NEED TO REPROCESS THE PIVOT TABLE IF THE PIVOT COLUMN CHANGES
|
|
648
718
|
// WE NEED TO UPDATE BOTH VALUEFIELDTYPE AND COLUMN FIELD TYPES
|
|
@@ -656,14 +726,14 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
656
726
|
valueFieldType: value,
|
|
657
727
|
};
|
|
658
728
|
// @ts-ignore
|
|
659
|
-
|
|
660
|
-
return;
|
|
729
|
+
updatedForm.pivot = updatedPivot;
|
|
661
730
|
}
|
|
662
|
-
if (index !== undefined) {
|
|
731
|
+
else if (index !== undefined) {
|
|
663
732
|
// For dynamic array fields
|
|
664
733
|
const [field, subfield] = fieldName.split('.');
|
|
665
734
|
// @ts-ignore
|
|
666
735
|
const updatedArray = formData[field].map((item, i) => i === index ? { ...item, [subfield]: value } : item);
|
|
736
|
+
updatedForm = { ...formData, [field]: updatedArray };
|
|
667
737
|
setFormData({ ...formData, [field]: updatedArray });
|
|
668
738
|
}
|
|
669
739
|
else if (fieldName.includes('.')) {
|
|
@@ -673,19 +743,18 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
673
743
|
const subfieldTypeFieldName = subfield + 'Type';
|
|
674
744
|
if (value.length) {
|
|
675
745
|
const subFieldType = columns.find((columns) => columns.field === value).fieldType;
|
|
676
|
-
|
|
677
|
-
...
|
|
746
|
+
updatedForm = {
|
|
747
|
+
...updatedForm,
|
|
678
748
|
// @ts-ignore
|
|
679
749
|
[field]: {
|
|
680
|
-
...
|
|
750
|
+
...updatedForm[field],
|
|
681
751
|
[subfield]: value,
|
|
682
752
|
[subfieldTypeFieldName]: subFieldType,
|
|
683
753
|
},
|
|
684
|
-
}
|
|
685
|
-
return;
|
|
754
|
+
};
|
|
686
755
|
}
|
|
687
756
|
else {
|
|
688
|
-
|
|
757
|
+
updatedForm = {
|
|
689
758
|
...formData,
|
|
690
759
|
// @ts-ignore
|
|
691
760
|
[field]: {
|
|
@@ -693,36 +762,42 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
693
762
|
[subfield]: '',
|
|
694
763
|
[subfieldTypeFieldName]: '',
|
|
695
764
|
},
|
|
696
|
-
}
|
|
697
|
-
return;
|
|
765
|
+
};
|
|
698
766
|
}
|
|
699
767
|
}
|
|
700
|
-
if (field === 'dateField' &&
|
|
768
|
+
else if (field === 'dateField' &&
|
|
701
769
|
subfield === 'table' &&
|
|
702
770
|
!formData.dateField.field) {
|
|
703
771
|
const field = schema?.find((elem) => elem.name === value)
|
|
704
772
|
?.columns?.[0]?.name;
|
|
705
|
-
|
|
706
|
-
...formData,
|
|
773
|
+
updatedForm.dateField = {
|
|
707
774
|
// @ts-ignore
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
775
|
+
...updatedForm[field],
|
|
776
|
+
[subfield]: value,
|
|
777
|
+
field: field,
|
|
778
|
+
};
|
|
711
779
|
}
|
|
712
|
-
|
|
713
|
-
...
|
|
780
|
+
updatedForm = {
|
|
781
|
+
...updatedForm,
|
|
714
782
|
// @ts-ignore
|
|
715
|
-
[field]: { ...
|
|
716
|
-
}
|
|
783
|
+
[field]: { ...updatedForm[field], [subfield]: value },
|
|
784
|
+
};
|
|
717
785
|
}
|
|
718
786
|
else {
|
|
719
787
|
// For simple fields
|
|
720
|
-
|
|
788
|
+
updatedForm = { ...updatedForm, [fieldName]: value };
|
|
789
|
+
}
|
|
790
|
+
let dashboardName = updatedForm.dashboardName;
|
|
791
|
+
if (fieldName === 'dashboardName') {
|
|
792
|
+
dashboardName = value;
|
|
721
793
|
}
|
|
794
|
+
validationHelper(updatedForm, dashboardData[dashboardName || '']);
|
|
795
|
+
setChartTypes(getChartTypeOptions(updatedForm, dashboardData[dashboardName || '']));
|
|
722
796
|
}
|
|
723
797
|
catch (e) {
|
|
724
|
-
|
|
798
|
+
updatedForm = { ...updatedForm, [fieldName]: value };
|
|
725
799
|
}
|
|
800
|
+
setFormData(updatedForm);
|
|
726
801
|
};
|
|
727
802
|
const handleAddPivot = async (pivot, uniqueValues, dateRange, pivotData) => {
|
|
728
803
|
const newPivotFormData = pivotFormData(pivot);
|
|
@@ -788,7 +863,7 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
788
863
|
columnField: '',
|
|
789
864
|
columnFieldType: '',
|
|
790
865
|
valueField: '',
|
|
791
|
-
aggregationType: '',
|
|
866
|
+
aggregationType: 'sum',
|
|
792
867
|
},
|
|
793
868
|
});
|
|
794
869
|
}
|
|
@@ -809,12 +884,12 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
809
884
|
event.preventDefault();
|
|
810
885
|
};
|
|
811
886
|
const deleteChart = async () => {
|
|
812
|
-
if (!report
|
|
887
|
+
if (!report?.id || !client) {
|
|
813
888
|
return;
|
|
814
889
|
}
|
|
815
890
|
const { publicKey, customerId } = client;
|
|
816
891
|
const cloudBody = {
|
|
817
|
-
dashboardItemId: report.
|
|
892
|
+
dashboardItemId: report.id,
|
|
818
893
|
};
|
|
819
894
|
const searchParams = new URLSearchParams(customerId
|
|
820
895
|
? {
|
|
@@ -831,30 +906,7 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
831
906
|
setIsOpen(false);
|
|
832
907
|
setIsSubmitting(false);
|
|
833
908
|
};
|
|
834
|
-
const editChart = async (
|
|
835
|
-
if (!override) {
|
|
836
|
-
let dashboardDiscrepancyIssues = [];
|
|
837
|
-
if (dashboardHasDateComparison && formData.chartType === 'pie') {
|
|
838
|
-
dashboardDiscrepancyIssues.push(`The ${formData.dashboardName} dashboard is used for comparing date fields, you cannot add a pie chart to this dashboard.`);
|
|
839
|
-
}
|
|
840
|
-
if (dashboardHasDateFilter &&
|
|
841
|
-
((!defaultDateField.table && !defaultDateField.field) ||
|
|
842
|
-
(!formData.dateField.field && !formData.dateField.table))) {
|
|
843
|
-
dashboardDiscrepancyIssues.push(`The dashboard "${formData.dashboardName}" has a global date filter but this chart doesn't reference any tables with a date field.`);
|
|
844
|
-
}
|
|
845
|
-
dashboardFilters2.forEach((filter) => {
|
|
846
|
-
const table = allTables.find((elem) => elem === filter.table);
|
|
847
|
-
if (!table) {
|
|
848
|
-
dashboardDiscrepancyIssues.push(`The dashboard "${formData.dashboardName}" a global filter on "${filter.table}" "${filter.field}" but this chart doesn't reference "${filter.table}".`);
|
|
849
|
-
}
|
|
850
|
-
});
|
|
851
|
-
if (dashboardDiscrepancyIssues.length) {
|
|
852
|
-
setFilterIssues(dashboardDiscrepancyIssues);
|
|
853
|
-
setShowFilterModal(true);
|
|
854
|
-
setTriggeredEditChart(false);
|
|
855
|
-
return;
|
|
856
|
-
}
|
|
857
|
-
}
|
|
909
|
+
const editChart = async () => {
|
|
858
910
|
if (isSubmitting) {
|
|
859
911
|
setTriggeredEditChart(false);
|
|
860
912
|
return;
|
|
@@ -866,8 +918,8 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
866
918
|
return;
|
|
867
919
|
}
|
|
868
920
|
// If the dashbaordItem is a template but the editor isn't an admin, create a new dashboardItem and set the template to false
|
|
869
|
-
let dashboardItemId = report ? report.
|
|
870
|
-
if (report && !showAccessControlOptions &&
|
|
921
|
+
let dashboardItemId = report ? report.id : undefined;
|
|
922
|
+
if (report && !showAccessControlOptions && formData.template) {
|
|
871
923
|
dashboardItemId = undefined;
|
|
872
924
|
}
|
|
873
925
|
const cloudBody = {
|
|
@@ -884,10 +936,11 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
884
936
|
pivot: formData.pivot,
|
|
885
937
|
referencedTables: allTables,
|
|
886
938
|
referencedColumns,
|
|
887
|
-
template: report && !showAccessControlOptions &&
|
|
939
|
+
template: report && !showAccessControlOptions && formData.template
|
|
888
940
|
? false
|
|
889
941
|
: formData.template,
|
|
890
942
|
customerId: customerId || '*',
|
|
943
|
+
useNewNodeSql: true,
|
|
891
944
|
};
|
|
892
945
|
// @ts-ignore
|
|
893
946
|
if (cloudBody['rows']) {
|
|
@@ -905,6 +958,7 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
905
958
|
databaseType: databaseType,
|
|
906
959
|
...cloudBody,
|
|
907
960
|
orgId: customerId || '*',
|
|
961
|
+
useNewNodeSql: true,
|
|
908
962
|
},
|
|
909
963
|
};
|
|
910
964
|
const searchParams = new URLSearchParams(customerId
|
|
@@ -974,14 +1028,8 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
974
1028
|
maxWidth: !isOpen ? '100%' : `calc(100% - ${formWidth}px - 20px)`, // width of left sidebar plus gap
|
|
975
1029
|
}),
|
|
976
1030
|
...(!isHorizontalView && isOpen && { width: formWidth }),
|
|
977
|
-
}, children: [((!isHorizontalView && windowWidth >= 1200) ||
|
|
978
|
-
formData.chartType !== 'table') && ((0, jsx_runtime_1.jsx)(Chart_1.
|
|
979
|
-
...formData,
|
|
980
|
-
rows: chartRows,
|
|
981
|
-
pivotRows: selectedPivotTable?.rows || undefined,
|
|
982
|
-
pivotColumns: selectedPivotTable?.columns || undefined,
|
|
983
|
-
rowCount,
|
|
984
|
-
}, hideDateRangeFilter: hideDateRangeFilter, containerStyle: {
|
|
1031
|
+
}, children: [report?.adminError || report?.error ? ((0, jsx_runtime_1.jsx)(ErrorComponent, { label: report.adminError || report.error, onClick: onClickChartError })) : (((!isHorizontalView && windowWidth >= 1200) ||
|
|
1032
|
+
formData.chartType !== 'table') && ((0, jsx_runtime_1.jsx)(Chart_1.ChartDisplay, { reportId: report ? report.id : undefined, config: createReportFromForm(formData, report, selectedPivotTable, rows), colors: theme.chartColors, loading: isLoading ? true : false, hideDateRangeFilter: hideDateRangeFilter, containerStyle: {
|
|
985
1033
|
width: '100%',
|
|
986
1034
|
height: formData.chartType === 'metric'
|
|
987
1035
|
? 100
|
|
@@ -991,7 +1039,7 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
991
1039
|
: 'calc(100% - 10px)'
|
|
992
1040
|
: 400,
|
|
993
1041
|
...(isHorizontalView && { flexGrow: 1 }),
|
|
994
|
-
}, onClickChartElement: onClickChartElement })),
|
|
1042
|
+
}, onClickChartElement: onClickChartElement }))),
|
|
995
1043
|
// Make sure to display non-pivoted table when using pivot chart
|
|
996
1044
|
showTableFormatOptions &&
|
|
997
1045
|
(isHorizontalView || (!isOpen && windowWidth < 1200)) && ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
@@ -1032,7 +1080,7 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
1032
1080
|
})), width: 200 }) })), (0, jsx_runtime_1.jsx)("div", { ref: selectRef, style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { label: "Chart type", value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'),
|
|
1033
1081
|
// filter out metric for all pivots
|
|
1034
1082
|
// filter out bar and pie for row and column pivot
|
|
1035
|
-
options:
|
|
1083
|
+
options: chartTypes, width: 200 }) })] }), (0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1036
1084
|
display: 'flex',
|
|
1037
1085
|
flexDirection: 'column',
|
|
1038
1086
|
gap: 6,
|
|
@@ -1067,7 +1115,11 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
1067
1115
|
: formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
|
|
1068
1116
|
(0, PivotModal_1.isDateField)(formData.pivot.rowFieldType)
|
|
1069
1117
|
? [{ value: 'pivot_date', label: 'date' }]
|
|
1070
|
-
: formatOptions, width: 200 })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields
|
|
1118
|
+
: formatOptions, width: 200 })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), (0, jsx_runtime_1.jsxs)(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields
|
|
1119
|
+
.filter((yAxisField) => {
|
|
1120
|
+
return !yAxisField.field.startsWith('comparison_');
|
|
1121
|
+
})
|
|
1122
|
+
.map((yAxisField, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
|
|
1071
1123
|
? formData.pivot.valueField || 'count'
|
|
1072
1124
|
: yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
|
|
1073
1125
|
? [
|
|
@@ -1162,18 +1214,25 @@ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, Sele
|
|
|
1162
1214
|
justifyContent: 'flex-end',
|
|
1163
1215
|
marginTop: 'auto',
|
|
1164
1216
|
gap: 10,
|
|
1165
|
-
}, children: [!hideDeleteButton && !isHorizontalView && report && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && ((0, jsx_runtime_1.
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
},
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1217
|
+
}, children: [!hideDeleteButton && !isHorizontalView && report && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
1218
|
+
display: 'flex',
|
|
1219
|
+
flexDirection: 'row',
|
|
1220
|
+
width: '100%',
|
|
1221
|
+
justifyContent: 'space-between',
|
|
1222
|
+
alignItems: 'center',
|
|
1223
|
+
gap: 6,
|
|
1224
|
+
}, children: [filterIssues.length === 0 ? ((0, jsx_runtime_1.jsx)("div", {})) : ((0, jsx_runtime_1.jsx)(ErrorMessageComponent, { errorMessage: filterIssues[0] || 'Dashbord - Report issues', containerStyle: { height: '100%' } })), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => {
|
|
1225
|
+
if (loadingFormData) {
|
|
1226
|
+
setTriggeredEditChart(true);
|
|
1227
|
+
}
|
|
1228
|
+
else {
|
|
1229
|
+
editChart();
|
|
1230
|
+
}
|
|
1231
|
+
}, disabled: filterIssues.length !== 0, label: buttonLabel
|
|
1232
|
+
? buttonLabel
|
|
1233
|
+
: report
|
|
1234
|
+
? 'Save changes'
|
|
1235
|
+
: 'Add to dashboard' })] }))] })] }))] }), (0, jsx_runtime_1.jsx)(DashboardFilterModal, { isOpen: showFilterModal, setIsOpen: setShowFilterModal, issues: filterIssues, ButtonComponent: ButtonComponent, ModalComponent: ModalComponent })] }));
|
|
1177
1236
|
}
|
|
1178
1237
|
exports.default = ChartBuilder;
|
|
1179
1238
|
function SegmentedControl({ onChange, value, theme, organizationName, customFieldTableRef, }) {
|
|
@@ -1249,7 +1308,7 @@ function DashboardFilterModal({ isOpen, setIsOpen, issues, ModalComponent = UiCo
|
|
|
1249
1308
|
boxSizing: 'border-box',
|
|
1250
1309
|
overflow: 'scroll',
|
|
1251
1310
|
maxHeight: 600,
|
|
1252
|
-
}, children: [issues.map((issue
|
|
1311
|
+
}, children: [issues.map((issue) => ((0, jsx_runtime_1.jsx)("span", { style: { paddingTop: '10px' }, children: issue }, issue))), (0, jsx_runtime_1.jsx)("div", { style: {
|
|
1253
1312
|
display: 'flex',
|
|
1254
1313
|
flexDirection: 'row',
|
|
1255
1314
|
justifyContent: 'flex-end',
|