@quillsql/react 2.13.20 → 2.13.22

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.
Files changed (85) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +208 -40
  3. package/dist/cjs/Context.d.ts.map +1 -1
  4. package/dist/cjs/Context.js +15 -10
  5. package/dist/cjs/Dashboard.d.ts.map +1 -1
  6. package/dist/cjs/Dashboard.js +58 -13
  7. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  8. package/dist/cjs/components/Chart/LineChart.js +12 -22
  9. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  10. package/dist/cjs/components/Dashboard/DashboardFilter.js +19 -1
  11. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  12. package/dist/cjs/components/Dashboard/DataLoader.js +26 -15
  13. package/dist/cjs/hooks/useDashboard.d.ts +1 -4
  14. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  15. package/dist/cjs/hooks/useDashboard.js +1 -22
  16. package/dist/cjs/hooks/useExport.d.ts +1 -8
  17. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  18. package/dist/cjs/hooks/useExport.js +105 -72
  19. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  20. package/dist/cjs/hooks/useQuill.js +23 -21
  21. package/dist/cjs/hooks/useReport.d.ts +12 -0
  22. package/dist/cjs/hooks/useReport.d.ts.map +1 -0
  23. package/dist/cjs/hooks/useReport.js +56 -0
  24. package/dist/cjs/index.d.ts +2 -1
  25. package/dist/cjs/index.d.ts.map +1 -1
  26. package/dist/cjs/index.js +3 -2
  27. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  28. package/dist/cjs/internals/ReportBuilder/PivotModal.js +1 -0
  29. package/dist/cjs/utils/dataProcessing.js +2 -2
  30. package/dist/cjs/utils/filterProcessing.d.ts +2 -1
  31. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  32. package/dist/cjs/utils/filterProcessing.js +168 -22
  33. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  34. package/dist/cjs/utils/pivotConstructor.js +47 -10
  35. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  36. package/dist/cjs/utils/queryConstructor.js +3 -2
  37. package/dist/cjs/utils/report.d.ts +1 -1
  38. package/dist/cjs/utils/report.d.ts.map +1 -1
  39. package/dist/cjs/utils/report.js +4 -2
  40. package/dist/cjs/utils/valueFormatter.d.ts +5 -1
  41. package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
  42. package/dist/cjs/utils/valueFormatter.js +32 -12
  43. package/dist/esm/Chart.d.ts.map +1 -1
  44. package/dist/esm/Chart.js +211 -43
  45. package/dist/esm/Context.d.ts.map +1 -1
  46. package/dist/esm/Context.js +15 -10
  47. package/dist/esm/Dashboard.d.ts.map +1 -1
  48. package/dist/esm/Dashboard.js +61 -16
  49. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  50. package/dist/esm/components/Chart/LineChart.js +15 -25
  51. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  52. package/dist/esm/components/Dashboard/DashboardFilter.js +20 -2
  53. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  54. package/dist/esm/components/Dashboard/DataLoader.js +26 -15
  55. package/dist/esm/hooks/useDashboard.d.ts +1 -4
  56. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  57. package/dist/esm/hooks/useDashboard.js +1 -21
  58. package/dist/esm/hooks/useExport.d.ts +1 -8
  59. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  60. package/dist/esm/hooks/useExport.js +106 -73
  61. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  62. package/dist/esm/hooks/useQuill.js +23 -21
  63. package/dist/esm/hooks/useReport.d.ts +12 -0
  64. package/dist/esm/hooks/useReport.d.ts.map +1 -0
  65. package/dist/esm/hooks/useReport.js +51 -0
  66. package/dist/esm/index.d.ts +2 -1
  67. package/dist/esm/index.d.ts.map +1 -1
  68. package/dist/esm/index.js +2 -1
  69. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  70. package/dist/esm/internals/ReportBuilder/PivotModal.js +1 -0
  71. package/dist/esm/utils/dataProcessing.js +2 -2
  72. package/dist/esm/utils/filterProcessing.d.ts +2 -1
  73. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  74. package/dist/esm/utils/filterProcessing.js +168 -23
  75. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  76. package/dist/esm/utils/pivotConstructor.js +47 -10
  77. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  78. package/dist/esm/utils/queryConstructor.js +3 -2
  79. package/dist/esm/utils/report.d.ts +1 -1
  80. package/dist/esm/utils/report.d.ts.map +1 -1
  81. package/dist/esm/utils/report.js +4 -2
  82. package/dist/esm/utils/valueFormatter.d.ts +5 -1
  83. package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
  84. package/dist/esm/utils/valueFormatter.js +33 -13
  85. package/package.json +4 -4
@@ -13,17 +13,9 @@ const useQuill = (reportId, pagination) => {
13
13
  const [dashboard] = (0, react_1.useContext)(Context_1.DashboardContext);
14
14
  const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
15
15
  const { reportFilters, reportFiltersDispatch } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
16
- const specificDashboardFilters = (0, react_1.useMemo)(() => {
17
- if (!reportId)
18
- return [];
19
- const dashboardName = reports[reportId]?.dashboardName;
20
- if (!dashboardName)
21
- return [];
22
- return Object.values(dashboardFilters[dashboardName] ?? {}).map((f) => f.filter);
23
- }, [dashboardFilters, reportId, dashboard]);
24
16
  const specificReportFilters = (0, react_1.useMemo)(() => {
25
17
  if (!reportId)
26
- return [];
18
+ return null;
27
19
  return Object.values(reportFilters[reportId] ?? []).map((f) => f.filter);
28
20
  }, [reportFilters, reportId]);
29
21
  const [schemaData] = (0, react_1.useContext)(Context_1.SchemaDataContext);
@@ -33,7 +25,7 @@ const useQuill = (reportId, pagination) => {
33
25
  const [previousPage, setPreviousPage] = (0, react_1.useState)(0);
34
26
  const processedReport = (0, react_1.useMemo)(() => {
35
27
  return reportId && (reports[reportId] || dashboard[reportId])
36
- ? (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(reports[reportId] || dashboard[reportId]), specificReportFilters)
28
+ ? (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(reports[reportId] || dashboard[reportId]), specificReportFilters ?? [], 'useQuill')
37
29
  : undefined;
38
30
  }, [
39
31
  reportId,
@@ -140,16 +132,9 @@ const useQuill = (reportId, pagination) => {
140
132
  setLoading(false);
141
133
  return;
142
134
  }
143
- if (specificDashboardFilters.length && !specificReportFilters.length) {
144
- reportFiltersDispatch({
145
- type: 'ADD_REPORT_FILTERS',
146
- id: curReportId,
147
- data: Object.values(dashboardFilters[curReportId] ?? []),
148
- });
149
- }
150
135
  setLoading(true);
151
136
  try {
152
- await fetchIndividualReport(curReportId, 'useQuill', true, specificReportFilters, [], additionalProcessing);
137
+ await fetchIndividualReport(curReportId, 'useQuill', true, specificReportFilters || [], [], additionalProcessing);
153
138
  }
154
139
  catch (error) {
155
140
  setError(error.message ?? 'Error fetching report');
@@ -159,15 +144,32 @@ const useQuill = (reportId, pagination) => {
159
144
  }
160
145
  };
161
146
  (0, react_1.useEffect)(() => {
162
- if (reportId) {
147
+ if (reportId && specificReportFilters) {
163
148
  fetchReportHelper(reportId, {
164
149
  page: pagination,
165
150
  });
166
151
  }
167
- }, [reportId]);
152
+ // if we don't have report filters, we need set those
153
+ if (reportId && !specificReportFilters) {
154
+ // should always resolve to some dashboard name given that spacificDashboardFilters is not empty
155
+ const dashboardName = reportId && reports[reportId]
156
+ ? reports[reportId].dashboardName
157
+ : '';
158
+ reportFiltersDispatch({
159
+ type: 'ADD_REPORT_FILTERS',
160
+ id: reportId,
161
+ data: dashboardName
162
+ ? Object.values(dashboardFilters[dashboardName] ?? {})
163
+ : [],
164
+ });
165
+ }
166
+ }, [reportId, specificReportFilters]);
168
167
  return {
169
168
  data: processedReport ?? null,
170
- loading,
169
+ loading: !reportId
170
+ || (reports[reportId] || dashboard[reportId])?.loadingRows
171
+ || !processedReport?.rows
172
+ || loading,
171
173
  error,
172
174
  fetchMore,
173
175
  setSort,
@@ -0,0 +1,12 @@
1
+ import { QuillReportInternal } from '../models/Report';
2
+ import { DashboardFilter, Filter } from '../models/Filter';
3
+ export declare const useReports: () => {
4
+ reloadFilteredReports: (predicate: (report: QuillReportInternal) => boolean) => void;
5
+ };
6
+ export declare const useReport: (reportId: string) => {
7
+ reload: (overrideFilters: {
8
+ filters: DashboardFilter[];
9
+ editedFilterLabel?: string;
10
+ }, customFilters?: Filter[], initiator?: "Chart" | "useQuill" | "useExport") => Promise<void>;
11
+ };
12
+ //# sourceMappingURL=useReport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useReport.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAuB,eAAe,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhF,eAAO,MAAM,UAAU;uCAYR,CAAC,MAAM,EAAE,mBAAmB,KAAK,OAAO;CAYtD,CAAC;AAIF,eAAO,MAAM,SAAS,aAAc,MAAM;8BAIrB;QACf,OAAO,EAAE,eAAe,EAAE,CAAC;QAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,kBACc,MAAM,EAAE,cACZ,OAAO,GAAG,UAAU,GAAG,WAAW;CAmChD,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useReport = exports.useReports = void 0;
4
+ const react_1 = require("react");
5
+ const Context_1 = require("../Context");
6
+ const Filter_1 = require("../models/Filter");
7
+ const useReports = () => {
8
+ const [dashboard, dispatch] = (0, react_1.useContext)(Context_1.DashboardContext);
9
+ const reloadReport = (id) => {
10
+ dispatch({
11
+ type: 'UPDATE_DASHBOARD_ITEM',
12
+ id: id,
13
+ data: { triggerReload: true },
14
+ });
15
+ };
16
+ const reloadFilteredReports = (predicate) => {
17
+ for (const id in dashboard) {
18
+ if (predicate(dashboard[id])) {
19
+ reloadReport(id);
20
+ }
21
+ }
22
+ };
23
+ return {
24
+ reloadFilteredReports,
25
+ };
26
+ };
27
+ exports.useReports = useReports;
28
+ // Exposes context operations with the "Report" scope
29
+ // Not meant to be customer facing
30
+ const useReport = (reportId) => {
31
+ const { loadFiltersForReport } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
32
+ const { reports, reportsDispatch } = (0, react_1.useContext)(Context_1.ReportsContext);
33
+ const reload = async (overrideFilters, customFilters = [], initiator = 'Chart') => {
34
+ // Set loading member on the report to true
35
+ reportsDispatch({
36
+ type: 'UPDATE_REPORT',
37
+ id: reportId,
38
+ data: { loadingRows: true },
39
+ });
40
+ // Pull the date filter out of the override filters, process it, and append it to the filters
41
+ const dateFilter = overrideFilters.filters.find((f) => f.filterType === 'date_range');
42
+ loadFiltersForReport(reportId, initiator, [
43
+ ...(dateFilter
44
+ ? [
45
+ {
46
+ ...dateFilter,
47
+ dateField: [reports[reportId]?.dateField],
48
+ },
49
+ ]
50
+ : []),
51
+ ...(overrideFilters.filters.filter((f) => f.filterType !== 'date_range') ?? []),
52
+ ], overrideFilters.editedFilterLabel, customFilters.map(Filter_1.convertCustomFilter));
53
+ };
54
+ return { reload };
55
+ };
56
+ exports.useReport = useReport;
@@ -14,7 +14,8 @@ export type { ReportBuilderProps } from './ReportBuilder';
14
14
  export { default as ChartEditor } from './ChartEditor';
15
15
  export type { ChartEditorProps } from './ChartEditor';
16
16
  export { quillFormat as format } from './utils/valueFormatter';
17
- export { useDashboard, useReports, useDashboards } from './hooks/useDashboard';
17
+ export { useDashboard, useDashboards } from './hooks/useDashboard';
18
+ export { useReports } from './hooks/useReport';
18
19
  export { useQuill } from './hooks/useQuill';
19
20
  export { useExport } from './hooks/useExport';
20
21
  export { useMemoizedRows } from './hooks/useFormat';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,EACN,mBAAmB,EACnB,WAAW,GACZ,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,YAAY,EACV,6BAA6B,EAC7B,qBAAqB,EACrB,SAAS,GACV,MAAM,wCAAwC,CAAC;AAChD,YAAY,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,GACX,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,EACN,mBAAmB,EACnB,WAAW,GACZ,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,YAAY,EACV,6BAA6B,EAC7B,qBAAqB,EACrB,SAAS,GACV,MAAM,wCAAwC,CAAC;AAChD,YAAY,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,UAAU,GACX,MAAM,iBAAiB,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FilterType = exports.NumberOperator = exports.DateOperator = exports.NullOperator = exports.StringOperator = exports.Calculation = exports.ThemeContext = exports.downloadCSV = exports.useVirtualTables = exports.useAskQuill = exports.useMemoizedRows = exports.useExport = exports.useQuill = exports.useDashboards = exports.useReports = exports.useDashboard = exports.format = exports.ChartEditor = exports.ReportBuilder = exports.SchemaListComponent = exports.SQLEditor = exports.Table = exports.Chart = exports.QuillProvider = exports.Dashboard = void 0;
6
+ exports.FilterType = exports.NumberOperator = exports.DateOperator = exports.NullOperator = exports.StringOperator = exports.Calculation = exports.ThemeContext = exports.downloadCSV = exports.useVirtualTables = exports.useAskQuill = exports.useMemoizedRows = exports.useExport = exports.useQuill = exports.useReports = exports.useDashboards = exports.useDashboard = exports.format = exports.ChartEditor = exports.ReportBuilder = exports.SchemaListComponent = exports.SQLEditor = exports.Table = exports.Chart = exports.QuillProvider = exports.Dashboard = void 0;
7
7
  // src/index.ts
8
8
  var Dashboard_1 = require("./Dashboard");
9
9
  Object.defineProperty(exports, "Dashboard", { enumerable: true, get: function () { return __importDefault(Dashboard_1).default; } });
@@ -24,8 +24,9 @@ var valueFormatter_1 = require("./utils/valueFormatter");
24
24
  Object.defineProperty(exports, "format", { enumerable: true, get: function () { return valueFormatter_1.quillFormat; } });
25
25
  var useDashboard_1 = require("./hooks/useDashboard");
26
26
  Object.defineProperty(exports, "useDashboard", { enumerable: true, get: function () { return useDashboard_1.useDashboard; } });
27
- Object.defineProperty(exports, "useReports", { enumerable: true, get: function () { return useDashboard_1.useReports; } });
28
27
  Object.defineProperty(exports, "useDashboards", { enumerable: true, get: function () { return useDashboard_1.useDashboards; } });
28
+ var useReport_1 = require("./hooks/useReport");
29
+ Object.defineProperty(exports, "useReports", { enumerable: true, get: function () { return useReport_1.useReports; } });
29
30
  var useQuill_1 = require("./hooks/useQuill");
30
31
  Object.defineProperty(exports, "useQuill", { enumerable: true, get: function () { return useQuill_1.useQuill; } });
31
32
  var useExport_1 = require("./hooks/useExport");
@@ -1 +1 @@
1
- {"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"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"}
@@ -987,6 +987,7 @@ function getDateString(value, dateRange, dateBucket) {
987
987
  field: 'date',
988
988
  // @ts-ignore
989
989
  fields: [{ field: 'date', format }],
990
+ dateRange,
990
991
  });
991
992
  }
992
993
  function isDateField(fieldType) {
@@ -98,8 +98,8 @@ const getPointToPointPercentageChange = (data) => {
98
98
  start: minDate,
99
99
  end: maxDate,
100
100
  });
101
- const minDateBucket = (0, PivotModal_1.getDateString)(minDate.toISOString().split('T')[0], undefined, dateBucket);
102
- const maxDateBucket = (0, PivotModal_1.getDateString)(maxDate.toISOString().split('T')[0], undefined, dateBucket);
101
+ const minDateBucket = (0, PivotModal_1.getDateString)(minDate.toISOString(), undefined, dateBucket);
102
+ const maxDateBucket = (0, PivotModal_1.getDateString)(maxDate.toISOString(), undefined, dateBucket);
103
103
  const minDateRows = data.rows.filter((row) => {
104
104
  const rowValue = row[dateField];
105
105
  if (rowValue) {
@@ -1,4 +1,4 @@
1
- import { FieldType, InternalFilter, DashboardFilter, DashboardDateFilter } from '../models/Filter';
1
+ import { FieldType, InternalFilter, DashboardDateFilter, Filter, DashboardFilter } from '../models/Filter';
2
2
  import { QuillReport } from '../models/Report';
3
3
  import { UniqueValuesByColumn } from '../models/Tables';
4
4
  import { FilterTreeNode } from './astFilterProcessing';
@@ -27,6 +27,7 @@ export declare function buildQueryFromFilters(baseAst: any, filters: FilterTreeN
27
27
  query?: string;
28
28
  error?: string;
29
29
  }>;
30
+ export declare function applyCustomFilterToDashDateFilter(customDateFilter: Filter, dashboardDateFilter: DashboardDateFilter): DashboardDateFilter;
30
31
  export declare function mergeCustomFilters(filters: DashboardFilter[], customFilters: InternalFilter[]): any[];
31
32
  export declare function filtersAreEquivalent(filters1?: InternalFilter[], filters2?: InternalFilter[]): boolean;
32
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAEd,eAAe,EAEf,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,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,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,cAAc,EAAE,GAC9B,GAAG,EAAE,CAsCP;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CA+BT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,oBAAoB,GAAG;IAC3E,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB,CASA;AAED,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,WAClB,WAAW,EAAE,iBACP,MAAM,KACpB,CAAC,mBAAmB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,SAqDpD,CAAC"}
1
+ {"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,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,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,mBAAmB,GACvC,mBAAmB,CAoJrB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,cAAc,EAAE,GAC9B,GAAG,EAAE,CAyCP;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CA+BT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,oBAAoB,GAAG;IAC3E,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB,CASA;AAED,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,WAClB,WAAW,EAAE,iBACP,MAAM,KACpB,CAAC,mBAAmB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,SAqDpD,CAAC"}
@@ -8,11 +8,12 @@ exports.filterSentence = filterSentence;
8
8
  exports.generateFilterStack = generateFilterStack;
9
9
  exports.filterStackToFilterTree = filterStackToFilterTree;
10
10
  exports.buildQueryFromFilters = buildQueryFromFilters;
11
+ exports.applyCustomFilterToDashDateFilter = applyCustomFilterToDashDateFilter;
11
12
  exports.mergeCustomFilters = mergeCustomFilters;
12
13
  exports.filtersAreEquivalent = filtersAreEquivalent;
13
14
  exports.uniqueValuesToStringMap = uniqueValuesToStringMap;
15
+ const date_fns_1 = require("date-fns");
14
16
  const dateRangePickerUtils_1 = require("../DateRangePicker/dateRangePickerUtils");
15
- // import { Client, QuillProviderClient } from '../models/Client';
16
17
  const Filter_1 = require("../models/Filter");
17
18
  const astFilterProcessing_1 = require("./astFilterProcessing");
18
19
  const textProcessing_1 = require("./textProcessing");
@@ -345,36 +346,181 @@ async function buildQueryFromFilters(baseAst, filters, endpoint, client) {
345
346
  return { success: false, error: `error: ${error.message}` };
346
347
  }
347
348
  }
349
+ function applyCustomFilterToDashDateFilter(customDateFilter, dashboardDateFilter) {
350
+ if (customDateFilter.filterType === Filter_1.FilterType.DateCustomFilter &&
351
+ customDateFilter.value &&
352
+ typeof customDateFilter.value === 'object' &&
353
+ 'startDate' in customDateFilter.value &&
354
+ 'endDate' in customDateFilter.value) {
355
+ const startDate = customDateFilter.value.startDate;
356
+ const endDate = customDateFilter.value.endDate;
357
+ return {
358
+ ...dashboardDateFilter,
359
+ startDate: new Date(startDate),
360
+ endDate: new Date(endDate),
361
+ };
362
+ }
363
+ else if (customDateFilter.filterType === Filter_1.FilterType.DateFilter &&
364
+ customDateFilter.value &&
365
+ typeof customDateFilter.value === 'object' &&
366
+ 'value' in customDateFilter.value &&
367
+ 'unit' in customDateFilter.value) {
368
+ const { value, unit } = customDateFilter.value;
369
+ let processedUnit;
370
+ let processedValue = value;
371
+ switch (unit) {
372
+ case Filter_1.TimeUnit.Day:
373
+ processedUnit = 'days';
374
+ break;
375
+ case Filter_1.TimeUnit.Week:
376
+ processedUnit = 'weeks';
377
+ break;
378
+ case Filter_1.TimeUnit.Month:
379
+ processedUnit = 'months';
380
+ break;
381
+ case Filter_1.TimeUnit.Year:
382
+ processedUnit = 'years';
383
+ break;
384
+ case Filter_1.TimeUnit.Hour:
385
+ processedUnit = 'hours';
386
+ break;
387
+ case Filter_1.TimeUnit.Quarter:
388
+ processedUnit = 'months';
389
+ processedValue *= 3;
390
+ break;
391
+ }
392
+ switch (customDateFilter.operator) {
393
+ case Filter_1.DateOperator.InTheLast:
394
+ return {
395
+ ...dashboardDateFilter,
396
+ startDate: (0, date_fns_1.sub)(new Date(), { [processedUnit]: processedValue }),
397
+ endDate: new Date(),
398
+ };
399
+ // This represents the previous period compared to the current period.
400
+ // For instance, if the current period is the last 30 days, the previous period would be the 30 days before that.
401
+ case Filter_1.DateOperator.InThePrevious:
402
+ return {
403
+ ...dashboardDateFilter,
404
+ startDate: (0, date_fns_1.sub)(new Date(), { [processedUnit]: processedValue * 2 }),
405
+ endDate: (0, date_fns_1.sub)(new Date(), { [processedUnit]: processedValue }),
406
+ };
407
+ // This represents the current period, and value is always 0.
408
+ // For instance if today was the 5th of August, the current month would be from the 1st to the 5th of August.
409
+ case Filter_1.DateOperator.InTheCurrent:
410
+ switch (unit) {
411
+ case Filter_1.TimeUnit.Day:
412
+ return {
413
+ ...dashboardDateFilter,
414
+ startDate: (0, date_fns_1.startOfDay)(new Date()),
415
+ endDate: (0, date_fns_1.endOfDay)(new Date()),
416
+ };
417
+ case Filter_1.TimeUnit.Week:
418
+ return {
419
+ ...dashboardDateFilter,
420
+ startDate: (0, date_fns_1.sub)(new Date(), { days: new Date().getDay() }),
421
+ endDate: new Date(),
422
+ };
423
+ case Filter_1.TimeUnit.Month:
424
+ return {
425
+ ...dashboardDateFilter,
426
+ startDate: new Date(new Date().getFullYear(), new Date().getMonth(), 1),
427
+ endDate: new Date(),
428
+ };
429
+ case Filter_1.TimeUnit.Year:
430
+ return {
431
+ ...dashboardDateFilter,
432
+ startDate: new Date(new Date().getFullYear(), 0, 1),
433
+ endDate: new Date(),
434
+ };
435
+ case Filter_1.TimeUnit.Quarter:
436
+ return {
437
+ ...dashboardDateFilter,
438
+ startDate: new Date(new Date().getFullYear(), Math.floor(new Date().getMonth() / 3) * 3, 1),
439
+ endDate: new Date(),
440
+ };
441
+ case Filter_1.TimeUnit.Hour:
442
+ return {
443
+ ...dashboardDateFilter,
444
+ startDate: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate(), new Date().getHours()),
445
+ endDate: new Date(),
446
+ };
447
+ }
448
+ break;
449
+ default:
450
+ return dashboardDateFilter;
451
+ }
452
+ }
453
+ else if (customDateFilter.filterType === Filter_1.FilterType.DateComparisonFilter &&
454
+ customDateFilter.value &&
455
+ typeof customDateFilter.value === 'string') {
456
+ const parsedDate = (0, date_fns_1.parse)(customDateFilter.value, 'yyyy-mm-dd', new Date());
457
+ switch (customDateFilter.operator) {
458
+ case Filter_1.DateOperator.GreaterThanOrEqualTo:
459
+ return {
460
+ ...dashboardDateFilter,
461
+ startDate: parsedDate,
462
+ endDate: undefined,
463
+ };
464
+ case Filter_1.DateOperator.LessThanOrEqualTo:
465
+ return {
466
+ ...dashboardDateFilter,
467
+ startDate: undefined,
468
+ endDate: parsedDate,
469
+ };
470
+ case Filter_1.DateOperator.LessThan:
471
+ return {
472
+ ...dashboardDateFilter,
473
+ startDate: undefined,
474
+ endDate: (0, date_fns_1.sub)(parsedDate, { days: 1 }),
475
+ };
476
+ case Filter_1.DateOperator.GreaterThan:
477
+ return {
478
+ ...dashboardDateFilter,
479
+ startDate: (0, date_fns_1.sub)(parsedDate, { days: 1 }),
480
+ endDate: undefined,
481
+ };
482
+ case Filter_1.DateOperator.EqualTo:
483
+ return {
484
+ ...dashboardDateFilter,
485
+ startDate: parsedDate,
486
+ endDate: parsedDate,
487
+ };
488
+ default: return dashboardDateFilter;
489
+ }
490
+ }
491
+ return dashboardDateFilter;
492
+ }
348
493
  function mergeCustomFilters(filters, customFilters) {
349
- const customDateFilters = customFilters.filter((filter) => filter.filterType === Filter_1.FilterType.DateCustomFilter);
494
+ const customDateFilters = customFilters.filter((filter) => filter.filterType === Filter_1.FilterType.DateCustomFilter || filter.filterType === Filter_1.FilterType.DateFilter || filter.filterType === Filter_1.FilterType.DateComparisonFilter);
350
495
  if (customDateFilters.length === 0) {
351
496
  return filters.concat(customFilters);
352
497
  }
353
498
  const withoutDate = filters.filter((filter) => filter.filterType !== Filter_1.DashboardFilterType.Date);
354
499
  const customWithoutDate = customFilters.filter((filter) => filter.filterType !== Filter_1.FilterType.DateCustomFilter);
355
- const startDate = customDateFilters[0]?.value.startDate;
356
- const endDate = customDateFilters[0]?.value.endDate;
500
+ const withDate = filters.find((filter) => filter.filterType === Filter_1.DashboardFilterType.Date);
357
501
  return withoutDate
358
502
  .concat([
359
- {
360
- filterType: Filter_1.DashboardFilterType.Date,
361
- label: 'Date',
362
- field: customDateFilters[0].field,
363
- table: customDateFilters[0].table,
364
- options: undefined,
365
- primaryRange: {
366
- label: 'Custom',
367
- value: 'custom',
368
- },
369
- dashboardName: 'none',
370
- presetRanges: [],
371
- preset: {
372
- label: 'Custom',
373
- value: 'custom',
503
+ withDate
504
+ ? applyCustomFilterToDashDateFilter(customDateFilters[0], withDate)
505
+ : {
506
+ filterType: Filter_1.DashboardFilterType.Date,
507
+ label: 'Date',
508
+ field: customDateFilters[0].field,
509
+ table: customDateFilters[0].table,
510
+ options: dateRangePickerUtils_1.defaultOptionsV2,
511
+ primaryRange: {
512
+ label: 'Last 30 Days',
513
+ value: 'LAST_30_DAYS',
514
+ },
515
+ dashboardName: 'none',
516
+ presetRanges: dateRangePickerUtils_1.defaultOptionsV2,
517
+ preset: {
518
+ label: 'Last 30 Days',
519
+ value: 'LAST_30_DAYS',
520
+ },
521
+ startDate: new Date(customDateFilters[0].value.startDate),
522
+ endDate: new Date(customDateFilters[0].value.endDate),
374
523
  },
375
- startDate: new Date(startDate),
376
- endDate: new Date(endDate),
377
- },
378
524
  ])
379
525
  .concat(customWithoutDate);
380
526
  }
@@ -1 +1 @@
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"}
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,CAgO1C"}
@@ -73,7 +73,9 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
73
73
  label: (0, textProcessing_1.snakeCaseToTitleCase)((0, columnProcessing_1.processColumnName)(field.name.replace('comparison_', 'comparison '))),
74
74
  format: field.name === pivot.rowField
75
75
  ? 'string'
76
- : (pivot.valueFieldType ?? 'whole_number'),
76
+ : (pivot.valueFieldType ?? pivot.aggregationType === 'percentage')
77
+ ? 'percentage'
78
+ : 'whole_number',
77
79
  }))
78
80
  .filter((field, index) => field.field !== 'comparison_' + pivot.rowField || index === 0)
79
81
  .sort((a, b) => {
@@ -88,9 +90,26 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
88
90
  if (pivot.rowField &&
89
91
  !['string', 'varchar'].includes(pivot.rowFieldType || '')) {
90
92
  rows.forEach((row) => {
91
- row[pivot.rowField || ''] = (0, PivotModal_1.getDateString)(typeof row[pivot.rowField || ''] === 'object' // BigQuery
93
+ row.__quillRawDate = typeof row[pivot.rowField || ''] === 'object' // BigQuery
92
94
  ? row[pivot.rowField || ''].value
93
- : row[pivot.rowField || ''], undefined, dateBucket);
95
+ : row[pivot.rowField || ''];
96
+ let value = typeof row[pivot.rowField || ''] === 'object' // BigQuery
97
+ ? row[pivot.rowField || ''].value
98
+ : row[pivot.rowField || ''];
99
+ if (dateBucket === 'week' && dateFilter) {
100
+ const rowDate = new Date(value);
101
+ // check if row value is within dateFilter, else push it to within the date filter
102
+ if (rowDate < dateFilter.startDate) {
103
+ value = dateFilter.startDate.toISOString();
104
+ }
105
+ else if (rowDate > dateFilter.endDate) {
106
+ value = dateFilter.endDate.toISOString();
107
+ }
108
+ }
109
+ const dateString = (0, PivotModal_1.getDateString)(value, dateFilter
110
+ ? { start: dateFilter.startDate, end: dateFilter.endDate }
111
+ : undefined, dateBucket);
112
+ row[pivot.rowField || ''] = dateString;
94
113
  });
95
114
  // add a row for each date in the range that doesn't have a value
96
115
  if (pivot.rowField &&
@@ -100,27 +119,38 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
100
119
  const dateSet = new Set(rows.map((row) => row[pivot.rowField || '']));
101
120
  // create a loop that will go through each formatted date and add a row if it doesn't exist going to the current date
102
121
  for (let date = dateFilter.startDate; date <= dateFilter.endDate; date = new Date(date.getTime() + 24 * 60 * 60 * 1000)) {
103
- const formattedDate = (0, PivotModal_1.getDateString)(date.toISOString().split('T')[0], undefined, dateBucket);
122
+ const formattedDate = (0, PivotModal_1.getDateString)(date.toISOString(), { start: dateFilter.startDate, end: dateFilter.endDate }, dateBucket);
104
123
  if (!dateSet.has(formattedDate)) {
105
124
  const newRow = {};
106
125
  newRow[pivot.rowField] = formattedDate;
126
+ newRow.__quillRawDate = date.toISOString();
107
127
  rows.push(newRow);
108
128
  dateSet.add(formattedDate);
109
129
  }
110
- // order the rows by the date field
111
- // rows.sort((a: any, b: any) => {
112
- // return compareValues(a, b, pivot.rowField ?? '');
113
- // });
114
130
  }
115
131
  }
132
+ // sort the rows by date
133
+ rows.sort((a, b) => {
134
+ if (a.__quillRawDate < b.__quillRawDate) {
135
+ return -1;
136
+ }
137
+ if (a.__quillRawDate > b.__quillRawDate) {
138
+ return 1;
139
+ }
140
+ return 0;
141
+ });
142
+ // remove the raw date field
143
+ // rows.forEach((row: any) => {
144
+ // delete row.__quillRawDate;
145
+ // });
116
146
  }
117
147
  if (pivot.sort) {
118
148
  rows.sort((a, b) => {
119
149
  if (pivot.sortDirection === 'ASC') {
120
- return (0, valueFormatter_1.compareValues)(a, b, pivot.sortField ?? '');
150
+ return (0, valueFormatter_1.compareValues)(a, b, pivot.sortField || '');
121
151
  }
122
152
  else {
123
- return (0, valueFormatter_1.compareValues)(b, a, pivot.sortField ?? '');
153
+ return (0, valueFormatter_1.compareValues)(b, a, pivot.sortField || '');
124
154
  }
125
155
  });
126
156
  }
@@ -133,6 +163,13 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
133
163
  column.label = 'Count';
134
164
  }
135
165
  });
166
+ // If a numeric column field is not present add it with a value of 0
167
+ const numericColumns = columns?.filter((column) => column.format === 'whole_number' || column.format === 'percentage');
168
+ rows.forEach((row) => {
169
+ numericColumns?.forEach((column) => {
170
+ row[column.field] = row[column.field] ?? 0;
171
+ });
172
+ });
136
173
  return {
137
174
  rows: rows,
138
175
  columns: columns ?? [],
@@ -1 +1 @@
1
- {"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoBxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UAqEjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAwDD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAYrB;AAiDD,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAarB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAgCpB"}
1
+ {"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoBxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UAqEjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAwDD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAYrB;AAiDD,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAcrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAgCpB"}
@@ -191,11 +191,12 @@ function generateDistinctQuerySnowflake(stringFields, query) {
191
191
  }
192
192
  function generateMinMaxRangeQueries(columnFields, query, databaseType) {
193
193
  const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
194
+ const min = databaseType.toLowerCase() === 'snowflake' ? 'LEAST' : 'MIN';
194
195
  const distinctQueries = columnFields.map((field) => {
195
196
  const wrappedField = ['postgresql'].includes(databaseType.toLowerCase())
196
197
  ? `"${field}"`
197
198
  : field;
198
- return `SELECT '${field}' AS field, MIN(${wrappedField}) AS min_range, ${max}(${wrappedField}) AS max_range FROM querytable`;
199
+ return `SELECT '${field}' AS field, ${min}(${wrappedField}) AS min_range, ${max}(${wrappedField}) AS max_range FROM querytable`;
199
200
  });
200
201
  const distinctQuery = distinctQueries.join(' UNION ALL ');
201
202
  return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
@@ -578,5 +579,5 @@ function createAggregationValuePivot(pivot, itemQueries, databaseType, rowLimit)
578
579
  quill_qt_agg AS (SELECT ${aggregationType}(${valueAlias}) as ${processColumnReference(`${valueField}`, databaseType)} FROM quill_alias)
579
580
  ${compareCTE} ${aliasCTE} ${compareAggregation}
580
581
  SELECT * FROM quill_qt_agg qt
581
- ${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
582
+ ${joinQuery} ${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
582
583
  }
@@ -46,7 +46,7 @@ export declare function saveReport({ report, dashboardItemId, client, }: {
46
46
  client: QuillProviderClient;
47
47
  }): Promise<any>;
48
48
  export declare const formatRowsFromReport: (report: any) => any;
49
- export declare function convertInternalReportToReport(report: QuillReportInternal, dashboardFilters: DashboardFilter[]): QuillReport;
49
+ export declare function convertInternalReportToReport(report: QuillReportInternal, dashboardFilters: DashboardFilter[], initiator?: string): QuillReport;
50
50
  export declare const fetchReportBuilderDataFromAST: (baseAst: any, formData: any, schema: Table[], client: QuillProviderClient, pivot?: Pivot, previousFormData?: any, currentTable?: string, previousRelevant?: {
51
51
  uniqueStrings: UniqueValuesByTable;
52
52
  dateRanges: DateRangesByColumn;