@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.
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +208 -40
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +15 -10
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +58 -13
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +12 -22
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +19 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +26 -15
- package/dist/cjs/hooks/useDashboard.d.ts +1 -4
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +1 -22
- package/dist/cjs/hooks/useExport.d.ts +1 -8
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +105 -72
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +23 -21
- package/dist/cjs/hooks/useReport.d.ts +12 -0
- package/dist/cjs/hooks/useReport.d.ts.map +1 -0
- package/dist/cjs/hooks/useReport.js +56 -0
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +1 -0
- package/dist/cjs/utils/dataProcessing.js +2 -2
- package/dist/cjs/utils/filterProcessing.d.ts +2 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +168 -22
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +47 -10
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +3 -2
- package/dist/cjs/utils/report.d.ts +1 -1
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +4 -2
- package/dist/cjs/utils/valueFormatter.d.ts +5 -1
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +32 -12
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +211 -43
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +15 -10
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +61 -16
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +15 -25
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +20 -2
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +26 -15
- package/dist/esm/hooks/useDashboard.d.ts +1 -4
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +1 -21
- package/dist/esm/hooks/useExport.d.ts +1 -8
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +106 -73
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +23 -21
- package/dist/esm/hooks/useReport.d.ts +12 -0
- package/dist/esm/hooks/useReport.d.ts.map +1 -0
- package/dist/esm/hooks/useReport.js +51 -0
- 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/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +1 -0
- package/dist/esm/utils/dataProcessing.js +2 -2
- package/dist/esm/utils/filterProcessing.d.ts +2 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +168 -23
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +47 -10
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +3 -2
- package/dist/esm/utils/report.d.ts +1 -1
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +4 -2
- package/dist/esm/utils/valueFormatter.d.ts +5 -1
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +33 -13
- 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
|
-
|
|
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;
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -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,
|
|
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';
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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.
|
|
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":"AAAA,OAAO,KAAK,EAAE,EAOZ,SAAS,EACV,MAAM,OAAO,CAAC;AAuBf,OAAO,EACL,oBAAoB,EAKrB,MAAM,+BAA+B,CAAC;AAcvC,OAAO,EAAU,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM1D,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,GAAG,CAAC;IACnB,gBAAgB,EAAE,GAAG,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC;IACtB,mBAAmB,EAAE,GAAG,CAAC;IACzB,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,gBAAgB,EAAE,GAAG,CAAC;IACtB,mBAAmB,EAAE,GAAG,CAAC;IACzB,gBAAgB,EAAE,GAAG,CAAC;IACtB,mBAAmB,EAAE,GAAG,CAAC;IACzB,UAAU,EAAE,GAAG,CAAC;IAChB,aAAa,EAAE,GAAG,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC;IACnB,eAAe,EAAE,GAAG,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC;IACrB,aAAa,EAAE,GAAG,CAAC;IACnB,wBAAwB,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACvE,gBAAgB,EAAE,CAAC,KAAK,EAAE;QACxB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,eAAe,EAAE,SAAS,CAAC;QAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;KACtC,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAC3D,cAAc,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAC1D,aAAa,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IACzD,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IACzE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IACpE,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IACvE,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,GAAG,CAAC;IAC3B,WAAW,EAAE,GAAG,CAAC;IACjB,WAAW,EAAE,GAAG,CAAC;IACjB,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,aAAa,EAAE,GAAG,CAAC;IACnB,gBAAgB,EAAE,GAAG,CAAC;IACtB,iBAAiB,EAAE,GAAG,CAAC;IACvB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,GAAG,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,yBAAyB,CAAC,EAAE,GAAG,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,eAAO,MAAM,UAAU,+4BAsDpB,eAAe,4CAklCjB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,EAAE,EACH,UAAU,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE;;;YAQ7B,UAAU;IAa9C;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAiBvD;AA8BD,wBAAgB,YAAY,CAC1B,SAAS,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,SAAS,EACjD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,GAAG,GACR;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CA8D5B;AAoCD,wBAAgB,cAAc,CAC5B,SAAS,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,SAAS,EACjD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,GAAG,EACT,UAAU,CAAC,EAAE,MAAM,UAgBpB;AA+BD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,EACtC,UAAU,CAAC,EAAE,MAAM,UAgDpB;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,8IAY5C;AAgCD,wBAAsB,kBAAkB,CAAC,EACvC,KAAK,EACL,QAAa,EACb,UAAU,EACV,MAAM,EACN,MAAM,EACN,YAAY,GACb,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;;;GAwBA;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,GAAG,EAAE,EACX,SAAS,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,SAAS,EACjD,YAAY,EAAE,OAAO,EACrB,QAAQ,SAAK,EACb,SAAS,GAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,SAAqB,EAC7D,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,GAAG;;;;;;EA8enB"}
|
|
@@ -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()
|
|
102
|
-
const maxDateBucket = (0, PivotModal_1.getDateString)(maxDate.toISOString()
|
|
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,
|
|
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,
|
|
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
|
|
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
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
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,
|
|
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 ?? '
|
|
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
|
|
93
|
+
row.__quillRawDate = typeof row[pivot.rowField || ''] === 'object' // BigQuery
|
|
92
94
|
? row[pivot.rowField || ''].value
|
|
93
|
-
: row[pivot.rowField || '']
|
|
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().
|
|
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,
|
|
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,
|
|
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;
|