@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
|
@@ -58,12 +58,21 @@ export declare const fetchAndProcessASTFromPrompt: (aiPrompt: string, schema: Ta
|
|
|
58
58
|
ast: any;
|
|
59
59
|
pivot: Pivot | null | undefined;
|
|
60
60
|
whereAST: any;
|
|
61
|
-
error?: string
|
|
61
|
+
error?: string;
|
|
62
62
|
}>;
|
|
63
63
|
export declare const fetchASTFromQuillReport: (report: QuillReportInternal, client: QuillProviderClient, schema: Table[]) => Promise<{
|
|
64
64
|
ast: any;
|
|
65
65
|
pivot: Pivot | undefined | null;
|
|
66
|
-
schema?: Table[]
|
|
67
|
-
error?: string
|
|
66
|
+
schema?: Table[];
|
|
67
|
+
error?: string;
|
|
68
68
|
}>;
|
|
69
|
+
export declare function getTablesHelper(ast: any, allTables: Table[]): {
|
|
70
|
+
referencedTablesAndColumns: {
|
|
71
|
+
name: string;
|
|
72
|
+
columns: {
|
|
73
|
+
field: string;
|
|
74
|
+
}[];
|
|
75
|
+
}[];
|
|
76
|
+
dateFields: any;
|
|
77
|
+
};
|
|
69
78
|
//# sourceMappingURL=astProcessing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,OAQxC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAe5D;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAgBtE;AAGD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAgB1E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG;;EA4BtD;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAahD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CActE;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,GAAG,EACT,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,GAAG,EAAE,GACb,GAAG,CAYL;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAC1C,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,KAAK,EAAE,GAClB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmCvD;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,KAAK,EAAE,EACf,aAAa,EAAE,GAAG,GACjB;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAyG/B;AAED,eAAO,MAAM,UAAU,SAAU,GAAG,YAWnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,GAAG,UACJ,KAAK,EAAE,KACd,CAAC,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAmCtC,CAAC;AAEF,eAAO,MAAM,+BAA+B,YACjC,cAAc,EAAE,aACd,MAAM;;;;;;;;;;;;;;;;;;;;;;CAqBlB,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,UACR,KAAK,EAAE,UACP,mBAAmB,cACf,KAAK,iBACF,MAAM;
|
|
1
|
+
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,OAQxC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAe5D;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAgBtE;AAGD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAgB1E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG;;EA4BtD;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAahD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CActE;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,GAAG,EACT,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,GAAG,EAAE,GACb,GAAG,CAYL;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAC1C,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,KAAK,EAAE,GAClB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmCvD;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,KAAK,EAAE,EACf,aAAa,EAAE,GAAG,GACjB;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAyG/B;AAED,eAAO,MAAM,UAAU,SAAU,GAAG,YAWnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,YACvB,GAAG,UACJ,KAAK,EAAE,KACd,CAAC,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAmCtC,CAAC;AAEF,eAAO,MAAM,+BAA+B,YACjC,cAAc,EAAE,aACd,MAAM;;;;;;;;;;;;;;;;;;;;;;CAqBlB,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAC7B,MAAM,UACR,KAAK,EAAE,UACP,mBAAmB,cACf,KAAK,iBACF,MAAM,KACpB,OAAO,CAAC;IACT,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAoGA,CAAC;AAEF,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,UACnB,mBAAmB,UACnB,KAAK,EAAE,KACd,OAAO,CAAC;IACT,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAqDA,CAAC;AAUF,wBAAgB,eAAe,CAC7B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,KAAK,EAAE,GACjB;IACD,0BAA0B,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,EAAE,CAAC;IAC7E,UAAU,EAAE,GAAG,CAAC;CACjB,CAoEA"}
|
|
@@ -459,3 +459,67 @@ export const fetchASTFromQuillReport = async (report, client, schema) => {
|
|
|
459
459
|
}
|
|
460
460
|
return { ast: newAst, pivot: groupByPivot, schema: schemaInfo };
|
|
461
461
|
};
|
|
462
|
+
const POSTGRES_DATE_TYPES = [
|
|
463
|
+
'timestamp',
|
|
464
|
+
'date',
|
|
465
|
+
'timestamptz',
|
|
466
|
+
'time',
|
|
467
|
+
'timetz',
|
|
468
|
+
];
|
|
469
|
+
export function getTablesHelper(ast, allTables) {
|
|
470
|
+
const tableAliasMap = createTableNameToTableAliasMap(ast);
|
|
471
|
+
const tablesInQuery = Object.values(tableAliasMap);
|
|
472
|
+
// Remove all aliased tables (with statements and subqueries)
|
|
473
|
+
const onlyReferenceTables = allTables
|
|
474
|
+
.filter((table) => tablesInQuery.includes(table.displayName))
|
|
475
|
+
.map((table) => table.displayName);
|
|
476
|
+
// Get non with statement column references
|
|
477
|
+
let referencedColumns = getColumnsByTableFromASTAndSchema(ast, allTables, tableAliasMap);
|
|
478
|
+
referencedColumns = Object.keys(referencedColumns)
|
|
479
|
+
.filter((table) => onlyReferenceTables.includes(table))
|
|
480
|
+
.reduce((obj, key) => {
|
|
481
|
+
obj[key] = referencedColumns[key];
|
|
482
|
+
return obj;
|
|
483
|
+
}, {});
|
|
484
|
+
// With statement column references
|
|
485
|
+
if (ast.with) {
|
|
486
|
+
for (const withStmt of ast.with) {
|
|
487
|
+
const astFrom = withStmt.stmt.from ?? withStmt.stmt.ast.from;
|
|
488
|
+
if (astFrom) {
|
|
489
|
+
const withReferencedColumns = getColumnsByTableFromASTAndSchema(withStmt.stmt.ast ?? withStmt.stmt, allTables, tableAliasMap);
|
|
490
|
+
// @ts-ignore
|
|
491
|
+
Object.keys(withReferencedColumns).forEach((tableName) => {
|
|
492
|
+
if (referencedColumns[tableName]) {
|
|
493
|
+
// @ts-ignore
|
|
494
|
+
referencedColumns[tableName].push(...(withReferencedColumns[tableName] || []));
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
// @ts-ignore
|
|
498
|
+
referencedColumns[tableName] = withReferencedColumns[tableName];
|
|
499
|
+
}
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
// Make all the column strings unique
|
|
505
|
+
for (const table in referencedColumns) {
|
|
506
|
+
referencedColumns[table] = Array.from(new Set(referencedColumns[table]));
|
|
507
|
+
}
|
|
508
|
+
const referencedTablesAndColumns = Object.keys(referencedColumns).map((tableName) => {
|
|
509
|
+
return {
|
|
510
|
+
name: tableName,
|
|
511
|
+
columns: referencedColumns[tableName]?.map((column) => {
|
|
512
|
+
return { field: column };
|
|
513
|
+
}) || [],
|
|
514
|
+
};
|
|
515
|
+
});
|
|
516
|
+
const dateFields = allTables
|
|
517
|
+
.filter((table) => onlyReferenceTables.includes(table.displayName))
|
|
518
|
+
.map((table) => {
|
|
519
|
+
return {
|
|
520
|
+
name: table.displayName,
|
|
521
|
+
columns: table.columns.filter((column) => POSTGRES_DATE_TYPES.includes(column.fieldType)),
|
|
522
|
+
};
|
|
523
|
+
});
|
|
524
|
+
return { referencedTablesAndColumns, dateFields };
|
|
525
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,6CAA6C;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oCAAoC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,2BAA2B,GAC5B,6CAA6C,GAC7C,oCAAoC,CAAC;AAEzC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,2BAA2B,GACjC,cAAc,CAgJhB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AAsED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwDlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,eAAO,MAAM,cAAc,WAAY,mBAAmB,
|
|
1
|
+
{"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,6CAA6C;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oCAAoC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,2BAA2B,GAC5B,6CAA6C,GAC7C,oCAAoC,CAAC;AAEzC,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,2BAA2B,GACjC,cAAc,CAgJhB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AAsED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwDlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,eAAO,MAAM,cAAc,WAAY,mBAAmB,UAoDzD,CAAC"}
|
|
@@ -292,7 +292,7 @@ export function processColumnName(columnName) {
|
|
|
292
292
|
}
|
|
293
293
|
export const getYAxisFields = (report) => {
|
|
294
294
|
try {
|
|
295
|
-
const curDateFilter = findAndProcessDateFilter(
|
|
295
|
+
const curDateFilter = findAndProcessDateFilter(report.filtersApplied);
|
|
296
296
|
if (report.pivot && report.pivotColumns && report.pivot.columnField) {
|
|
297
297
|
return (report.pivotColumns
|
|
298
298
|
.slice(1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA6BnD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,CAAC,EAAE,mBAAmB,EAC5B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA6BnD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,CAAC,EAAE,mBAAmB,EAC5B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CA8D9B;AAwHD,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,GAAG,CAAC,CA2Bd;AAED,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,eAAe,EAAE,CAAC,CAiG5B"}
|
|
@@ -19,7 +19,7 @@ const defaultDashboardItem = {
|
|
|
19
19
|
xAxisField: '',
|
|
20
20
|
xAxisFormat: 'string',
|
|
21
21
|
order: -1,
|
|
22
|
-
filtersApplied:
|
|
22
|
+
filtersApplied: [],
|
|
23
23
|
queryString: '',
|
|
24
24
|
rowCount: 0,
|
|
25
25
|
columnInternal: [],
|
|
@@ -34,16 +34,26 @@ const defaultDashboardItem = {
|
|
|
34
34
|
export async function cleanDashboardItem(item, dashboardFilters, client, dateBucket) {
|
|
35
35
|
if (!item)
|
|
36
36
|
return defaultDashboardItem;
|
|
37
|
-
if (!item.rows)
|
|
37
|
+
if (!item.rows) {
|
|
38
38
|
return {
|
|
39
39
|
...defaultDashboardItem,
|
|
40
40
|
id: item._id,
|
|
41
41
|
name: item.name,
|
|
42
42
|
};
|
|
43
|
-
|
|
43
|
+
}
|
|
44
44
|
const processedColumns = item.columns.map((col) => {
|
|
45
45
|
return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
|
|
46
46
|
});
|
|
47
|
+
let pivotTable;
|
|
48
|
+
let pivotError;
|
|
49
|
+
try {
|
|
50
|
+
pivotTable = await getPivotTable(item, dashboardFilters, client, dateBucket);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
pivotTable = undefined;
|
|
54
|
+
console.error('Error fetching pivot table', e);
|
|
55
|
+
pivotError = 'Error fetching pivot table';
|
|
56
|
+
}
|
|
47
57
|
return {
|
|
48
58
|
id: item._id ?? item.id,
|
|
49
59
|
name: item.name,
|
|
@@ -62,7 +72,7 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
62
72
|
columnInternal: processedColumns,
|
|
63
73
|
chartType: item.chartType,
|
|
64
74
|
dateField: item.dateField,
|
|
65
|
-
pivot: item.pivot,
|
|
75
|
+
pivot: pivotError ? undefined : item.pivot,
|
|
66
76
|
yAxisFields: pivotTable
|
|
67
77
|
? extractPivotedYAxis(pivotTable, item)
|
|
68
78
|
: item.yAxisFields,
|
|
@@ -78,6 +88,7 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
78
88
|
queryString: item.queryString,
|
|
79
89
|
referencedTables: item?.referencedTables || [],
|
|
80
90
|
referencedColumns: item?.referencedColumns || {},
|
|
91
|
+
error: pivotError,
|
|
81
92
|
};
|
|
82
93
|
}
|
|
83
94
|
/**
|
|
@@ -119,7 +130,7 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
119
130
|
try {
|
|
120
131
|
let dateBucket = dateBucketInitial;
|
|
121
132
|
let filterDateRange = undefined;
|
|
122
|
-
if (dateFilter) {
|
|
133
|
+
if (dateFilter && dateFilter.startDate && dateFilter.endDate) {
|
|
123
134
|
filterDateRange = {
|
|
124
135
|
start: dateFilter.startDate,
|
|
125
136
|
end: dateFilter.endDate,
|
|
@@ -132,27 +143,19 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
132
143
|
dateBucket = getDateBucketFromRange(filterDateRange);
|
|
133
144
|
}
|
|
134
145
|
const pivotTable = await generatePivotWithSQL(pivot, report, client, dateBucket, dateFilter, report.distinctStrings);
|
|
135
|
-
|
|
136
|
-
return pivotTable;
|
|
137
|
-
}
|
|
138
|
-
throw new Error('Error generating pivot table');
|
|
146
|
+
return pivotTable;
|
|
139
147
|
}
|
|
140
148
|
catch (e) {
|
|
141
|
-
console.
|
|
142
|
-
throw
|
|
149
|
+
console.error('Error fetching pivot table', e);
|
|
150
|
+
throw e;
|
|
143
151
|
}
|
|
144
152
|
}
|
|
145
153
|
return pivot && data.rows
|
|
146
|
-
? generatePivotTable(
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
? {
|
|
152
|
-
start: dateFilter.comparisonRange.startDate,
|
|
153
|
-
end: dateFilter.comparisonRange.endDate,
|
|
154
|
-
}
|
|
155
|
-
: undefined)
|
|
154
|
+
? generatePivotTable({
|
|
155
|
+
pivot,
|
|
156
|
+
report,
|
|
157
|
+
client,
|
|
158
|
+
})
|
|
156
159
|
: undefined;
|
|
157
160
|
}
|
|
158
161
|
/**
|
|
@@ -228,8 +231,10 @@ export async function getDashboardFilters(dashboardName, client) {
|
|
|
228
231
|
return {
|
|
229
232
|
label: elem.label,
|
|
230
233
|
value: elem.value,
|
|
231
|
-
startDate: PRIMARY_RANGE[elem.value]
|
|
232
|
-
|
|
234
|
+
startDate: (PRIMARY_RANGE[elem.value] ??
|
|
235
|
+
PRIMARY_RANGE['LAST_30_DAYS']).startDate,
|
|
236
|
+
endDate: (PRIMARY_RANGE[elem.value] ??
|
|
237
|
+
PRIMARY_RANGE['LAST_30_DAYS']).endDate,
|
|
233
238
|
};
|
|
234
239
|
}
|
|
235
240
|
return {
|
|
@@ -265,10 +270,10 @@ export async function getDashboardFilters(dashboardName, client) {
|
|
|
265
270
|
if (resp.dateFilter.comparison) {
|
|
266
271
|
filter.comparison = true;
|
|
267
272
|
const compKey = resp.dateFilter.defaultComparisonRange ?? 'PREV_PERIOD';
|
|
268
|
-
const range = {
|
|
273
|
+
const range = { startDate: filter.startDate, endDate: filter.endDate };
|
|
269
274
|
filter.comparisonRange = {
|
|
270
|
-
startDate: COMPARISON_RANGE[compKey](range)?.
|
|
271
|
-
endDate: COMPARISON_RANGE[compKey](range)?.
|
|
275
|
+
startDate: COMPARISON_RANGE[compKey](range)?.startDate,
|
|
276
|
+
endDate: COMPARISON_RANGE[compKey](range)?.endDate,
|
|
272
277
|
value: compKey,
|
|
273
278
|
};
|
|
274
279
|
}
|
|
@@ -15,6 +15,9 @@ export declare function getDateBucketFromRange(dateRange: {
|
|
|
15
15
|
start: Date;
|
|
16
16
|
end: Date;
|
|
17
17
|
}): "year" | "month" | "week" | "day";
|
|
18
|
-
export declare function
|
|
18
|
+
export declare function parseQueryDateRangeByDatabaseType(minRange: any, maxRange: any, databaseType: string): {
|
|
19
|
+
start: Date;
|
|
20
|
+
end: Date;
|
|
21
|
+
};
|
|
19
22
|
export declare function getDateFormatFromBucket(dateBucket: string): string;
|
|
20
23
|
//# sourceMappingURL=dates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../../src/utils/dates.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,UAYxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,WAa/C;AAED,wBAAgB,qBAAqB,CACnC,eAAe,EAAE;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf,EACD,UAAU,CAAC,EAAE,MAAM,sBAepB;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,qCAW3E;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../../src/utils/dates.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,UAYxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,WAa/C;AAED,wBAAgB,qBAAqB,CACnC,eAAe,EAAE;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf,EACD,UAAU,CAAC,EAAE,MAAM,sBAepB;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,qCAW3E;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,EACb,YAAY,EAAE,MAAM;;;EAUrB;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,UAoBzD"}
|
package/dist/esm/utils/dates.js
CHANGED
|
@@ -64,12 +64,15 @@ export function getDateBucketFromRange(dateRange) {
|
|
|
64
64
|
return 'year';
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
export function
|
|
67
|
+
export function parseQueryDateRangeByDatabaseType(minRange, maxRange, databaseType) {
|
|
68
68
|
if (databaseType.toLowerCase() === 'bigquery') {
|
|
69
|
-
return
|
|
69
|
+
return {
|
|
70
|
+
start: new Date(minRange?.value ?? null),
|
|
71
|
+
end: new Date(maxRange?.value ?? null),
|
|
72
|
+
};
|
|
70
73
|
}
|
|
71
74
|
else {
|
|
72
|
-
return new Date(
|
|
75
|
+
return { start: new Date(minRange), end: new Date(maxRange) };
|
|
73
76
|
}
|
|
74
77
|
}
|
|
75
78
|
export function getDateFormatFromBucket(dateBucket) {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FieldType, InternalFilter } from '../models/Filter';
|
|
2
2
|
import { UniqueValuesByColumn } from '../models/Tables';
|
|
3
3
|
import { FilterTreeNode } from './astFilterProcessing';
|
|
4
4
|
export declare function findAndProcessDateFilter(filters: any[]): any;
|
|
5
5
|
export declare function processFilterFromBackend(filter: any): any;
|
|
6
6
|
export declare function updateFilter(filter: any, value: any, comparison: any, dashboardName: string): any;
|
|
7
|
-
export declare const getType: (t: string) =>
|
|
7
|
+
export declare const getType: (t: string) => FieldType.String | FieldType.Number | FieldType.Date | FieldType.Boolean;
|
|
8
8
|
/**
|
|
9
9
|
* Returns a sentence to describe a Filter
|
|
10
10
|
*/
|
|
11
|
-
export declare function filterSentence(filter:
|
|
11
|
+
export declare function filterSentence(filter: InternalFilter): string;
|
|
12
12
|
/**
|
|
13
13
|
* Function that flattens a tree of filters into an array
|
|
14
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,SAAS,EACT,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAGxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,OAkBnD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAU,EACjB,UAAU,EAAE,GAAU,EACtB,aAAa,EAAE,MAAM,OAmGtB;AAGD,eAAO,MAAM,OAAO,MAAO,MAAM,6EAwDhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwB7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,cAAc,EAAE,CAoCrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,yBAgCnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2B/D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,oBAAoB,GAAG;IAC3E,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB,CASA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { COMPARISON_RANGE, PRIMARY_RANGE, defaultOptionsV2, getRangeFromPresetOptions, } from '../DateRangePicker/dateRangePickerUtils';
|
|
2
|
-
import { DateOperator,
|
|
2
|
+
import { DateOperator, FieldType, FilterType, } from '../models/Filter';
|
|
3
3
|
import { filterTreeToAst } from './astFilterProcessing';
|
|
4
4
|
import { snakeAndCamelCaseToTitleCase } from './textProcessing';
|
|
5
5
|
export function findAndProcessDateFilter(filters) {
|
|
@@ -74,8 +74,10 @@ export function updateFilter(filter, value = null, comparison = null, dashboardN
|
|
|
74
74
|
return {
|
|
75
75
|
label: elem.label,
|
|
76
76
|
value: elem.value,
|
|
77
|
-
startDate: PRIMARY_RANGE[elem.value]
|
|
78
|
-
|
|
77
|
+
startDate: (PRIMARY_RANGE[elem.value] ??
|
|
78
|
+
PRIMARY_RANGE['LAST_30_DAYS']).startDate,
|
|
79
|
+
endDate: (PRIMARY_RANGE[elem.value] ??
|
|
80
|
+
PRIMARY_RANGE['LAST_30_DAYS']).endDate,
|
|
79
81
|
};
|
|
80
82
|
}
|
|
81
83
|
return {
|
|
@@ -90,15 +92,15 @@ export function updateFilter(filter, value = null, comparison = null, dashboardN
|
|
|
90
92
|
(filter.comparison && filter.comparisonRange.value !== 'NO_COMPARISON')) {
|
|
91
93
|
const key = comparison?.value || filter.comparisonRange.value;
|
|
92
94
|
let primaryRange = {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
+
startDate: value ? value.startDate : filter.startDate,
|
|
96
|
+
endDate: value ? value.endDate : filter.endDate,
|
|
95
97
|
};
|
|
96
98
|
if (value && value.preset) {
|
|
97
99
|
primaryRange = getRangeFromPresetOptions(value.preset, presetsOptions);
|
|
98
100
|
}
|
|
99
101
|
return {
|
|
100
|
-
startDate: primaryRange.
|
|
101
|
-
endDate: primaryRange.
|
|
102
|
+
startDate: primaryRange.startDate,
|
|
103
|
+
endDate: primaryRange.endDate,
|
|
102
104
|
filterType: 'date_range',
|
|
103
105
|
label: 'Date',
|
|
104
106
|
field: 'date_range',
|
|
@@ -106,8 +108,9 @@ export function updateFilter(filter, value = null, comparison = null, dashboardN
|
|
|
106
108
|
options: filter.options,
|
|
107
109
|
comparison: true,
|
|
108
110
|
comparisonRange: {
|
|
109
|
-
startDate: COMPARISON_RANGE[key](primaryRange)
|
|
110
|
-
|
|
111
|
+
startDate: COMPARISON_RANGE[key](primaryRange)
|
|
112
|
+
?.startDate,
|
|
113
|
+
endDate: COMPARISON_RANGE[key](primaryRange)?.endDate,
|
|
111
114
|
value: key,
|
|
112
115
|
},
|
|
113
116
|
dashboardName: name,
|
|
@@ -117,14 +120,14 @@ export function updateFilter(filter, value = null, comparison = null, dashboardN
|
|
|
117
120
|
const primaryRange = value && value.preset
|
|
118
121
|
? getRangeFromPresetOptions(value.preset, presetsOptions)
|
|
119
122
|
: {
|
|
120
|
-
|
|
121
|
-
|
|
123
|
+
startDate: value?.startDate || filter.startDate,
|
|
124
|
+
endDate: value?.endDate || filter.endDate,
|
|
122
125
|
};
|
|
123
126
|
return {
|
|
124
127
|
...filter,
|
|
125
128
|
preset: filter.preset,
|
|
126
|
-
startDate: primaryRange.
|
|
127
|
-
endDate: primaryRange.
|
|
129
|
+
startDate: primaryRange.startDate,
|
|
130
|
+
endDate: primaryRange.endDate,
|
|
128
131
|
filterType: 'date_range',
|
|
129
132
|
field: 'date_range',
|
|
130
133
|
options: filter.options,
|
|
@@ -156,7 +159,7 @@ export const getType = (t) => {
|
|
|
156
159
|
case 'longtext':
|
|
157
160
|
case 'longblob':
|
|
158
161
|
case 'text':
|
|
159
|
-
return
|
|
162
|
+
return FieldType.String;
|
|
160
163
|
case 'numeric':
|
|
161
164
|
case 'bit':
|
|
162
165
|
case 'tinybit':
|
|
@@ -174,7 +177,7 @@ export const getType = (t) => {
|
|
|
174
177
|
case 'smallmoney':
|
|
175
178
|
case 'money':
|
|
176
179
|
case 'real':
|
|
177
|
-
return
|
|
180
|
+
return FieldType.Number;
|
|
178
181
|
case 'date':
|
|
179
182
|
case 'datetime':
|
|
180
183
|
case 'datetime2':
|
|
@@ -184,12 +187,12 @@ export const getType = (t) => {
|
|
|
184
187
|
case 'timestamptz':
|
|
185
188
|
case 'time':
|
|
186
189
|
case 'year':
|
|
187
|
-
return
|
|
190
|
+
return FieldType.Date;
|
|
188
191
|
case 'bool':
|
|
189
192
|
case 'boolean':
|
|
190
|
-
return
|
|
193
|
+
return FieldType.Boolean;
|
|
191
194
|
default:
|
|
192
|
-
return
|
|
195
|
+
return FieldType.String;
|
|
193
196
|
}
|
|
194
197
|
};
|
|
195
198
|
/**
|
|
@@ -197,7 +200,7 @@ export const getType = (t) => {
|
|
|
197
200
|
*/
|
|
198
201
|
export function filterSentence(filter) {
|
|
199
202
|
let value = '';
|
|
200
|
-
if (filter.filterType ==
|
|
203
|
+
if (filter.filterType == FilterType.NullFilter) {
|
|
201
204
|
return `${snakeAndCamelCaseToTitleCase(filter.field)} ${filter.operator}`;
|
|
202
205
|
}
|
|
203
206
|
else if (filter.value === null || filter.value === undefined) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function mergeComparisonRange(resp: any):
|
|
1
|
+
export declare function mergeComparisonRange(resp: any): any;
|
|
2
2
|
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAInD"}
|
package/dist/esm/utils/merge.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
export function mergeComparisonRange(resp) {
|
|
2
2
|
if (resp.chartType === 'table')
|
|
3
|
-
return;
|
|
4
|
-
mergeForwards(resp);
|
|
3
|
+
return resp;
|
|
4
|
+
return mergeForwards(resp);
|
|
5
5
|
// mergeBackwards(resp); // uncomment to switch back and forth
|
|
6
6
|
}
|
|
7
7
|
function mergeForwards(resp) {
|
|
8
8
|
const compRows = resp.compareRows;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
if (!compRows)
|
|
10
|
+
return resp;
|
|
11
|
+
const newRows = resp.rows.map((row, i) => {
|
|
12
|
+
if (i < compRows.length) {
|
|
13
|
+
const compRow = compRows[i];
|
|
14
|
+
const newRow = { ...row };
|
|
15
|
+
for (const [key, value] of Object.entries(compRow)) {
|
|
16
|
+
newRow[`comparison_${key}`] = value;
|
|
14
17
|
}
|
|
18
|
+
return newRow;
|
|
15
19
|
}
|
|
16
|
-
|
|
17
|
-
}
|
|
20
|
+
return row;
|
|
21
|
+
});
|
|
22
|
+
return { ...resp, rows: newRows };
|
|
18
23
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { QuillProviderClient } from '../models/Client';
|
|
2
2
|
import { Pivot } from '../models/Pivot';
|
|
3
3
|
import { QuillReportInternal } from '../models/Report';
|
|
4
|
-
export declare function generatePivotWithSQL(pivot: Pivot, report: QuillReportInternal, client: QuillProviderClient, dateBucket?: string, dateFilter?: any, distinctStrings?: any): Promise<{
|
|
5
|
-
rows: any;
|
|
6
|
-
columns: any;
|
|
7
|
-
}
|
|
4
|
+
export declare function generatePivotWithSQL(pivot: Pivot, report: QuillReportInternal, client: QuillProviderClient, dateBucket?: string, dateFilter?: any, distinctStrings?: any, rowLimit?: number): Promise<{
|
|
5
|
+
rows: any[];
|
|
6
|
+
columns: any[];
|
|
7
|
+
}>;
|
|
8
8
|
//# sourceMappingURL=pivotConstructor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,GAAG,EAChB,eAAe,CAAC,EAAE,GAAG,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAoL1C"}
|