@quillsql/react 2.13.4 → 2.13.6
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.js +1 -1
- package/dist/cjs/ChartBuilder.d.ts +1 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +6 -22
- package/dist/cjs/ChartEditor.d.ts +1 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/Context.d.ts +21 -6
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +196 -18
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +9 -9
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +7 -7
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +0 -1
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +0 -22
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +2 -1
- package/dist/cjs/ReportBuilder.d.ts +0 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +4 -182
- package/dist/cjs/SQLEditor.d.ts +1 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +12 -8
- package/dist/cjs/components/Dashboard/DashboardTemplate.js +2 -2
- package/dist/cjs/components/Dashboard/DataLoader.js +1 -1
- package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelect.js +4 -3
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +4 -3
- package/dist/cjs/components/QuillSelect.js +3 -3
- package/dist/cjs/components/QuillSelectWithCombo.js +4 -4
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +46 -44
- package/dist/cjs/components/ReportBuilder/FilterModal.js +10 -10
- package/dist/cjs/components/ReportBuilder/FilterStack.js +2 -2
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +4 -3
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +19 -5
- package/dist/cjs/hooks/useDashboard.d.ts +22 -3
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +201 -127
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +12 -5
- package/dist/cjs/hooks/useOnClickOutside.d.ts +1 -1
- package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/cjs/hooks/useOnClickOutside.js +10 -6
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +3 -3
- package/dist/cjs/lib/utils.d.ts +1 -0
- package/dist/cjs/lib/utils.d.ts.map +1 -1
- package/dist/cjs/lib/utils.js +9 -1
- package/dist/cjs/models/Dashboard.d.ts +6 -1
- package/dist/cjs/models/Dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +3 -3
- package/dist/cjs/utils/columnProcessing.js +4 -4
- package/dist/cjs/utils/constants.d.ts +2 -1
- package/dist/cjs/utils/constants.d.ts.map +1 -1
- package/dist/cjs/utils/constants.js +3 -2
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +1 -2
- package/dist/cjs/utils/pivotConstructor.js +1 -1
- package/dist/esm/Chart.js +1 -1
- package/dist/esm/ChartBuilder.d.ts +1 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +6 -22
- package/dist/esm/ChartEditor.d.ts +1 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/Context.d.ts +21 -6
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +193 -18
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +9 -9
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/QuillDateRangePicker.js +7 -7
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +0 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.js +0 -22
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +2 -1
- package/dist/esm/ReportBuilder.d.ts +0 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +3 -180
- package/dist/esm/SQLEditor.d.ts +1 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +13 -9
- package/dist/esm/components/Dashboard/DashboardTemplate.js +2 -2
- package/dist/esm/components/Dashboard/DataLoader.js +1 -1
- package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelect.js +4 -3
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +4 -3
- package/dist/esm/components/QuillSelect.js +3 -3
- package/dist/esm/components/QuillSelectWithCombo.js +4 -4
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +46 -44
- package/dist/esm/components/ReportBuilder/FilterModal.js +10 -10
- package/dist/esm/components/ReportBuilder/FilterStack.js +1 -1
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +4 -3
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +19 -5
- package/dist/esm/hooks/useDashboard.d.ts +22 -3
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +200 -124
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +12 -5
- package/dist/esm/hooks/useOnClickOutside.d.ts +1 -1
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/esm/hooks/useOnClickOutside.js +10 -6
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +3 -3
- package/dist/esm/lib/utils.d.ts +1 -0
- package/dist/esm/lib/utils.d.ts.map +1 -1
- package/dist/esm/lib/utils.js +7 -0
- package/dist/esm/models/Dashboard.d.ts +6 -1
- package/dist/esm/models/Dashboard.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +3 -3
- package/dist/esm/utils/columnProcessing.js +4 -4
- package/dist/esm/utils/constants.d.ts +2 -1
- package/dist/esm/utils/constants.d.ts.map +1 -1
- package/dist/esm/utils/constants.js +2 -1
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +1 -2
- package/dist/esm/utils/pivotConstructor.js +1 -1
- package/package.json +20 -7
- package/dist/cjs/components/BigModal/BigModal.d.ts +0 -15
- package/dist/cjs/components/BigModal/BigModal.d.ts.map +0 -1
- package/dist/cjs/components/BigModal/BigModal.js +0 -81
- package/dist/esm/components/BigModal/BigModal.d.ts +0 -15
- package/dist/esm/components/BigModal/BigModal.d.ts.map +0 -1
- package/dist/esm/components/BigModal/BigModal.js +0 -56
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { useContext, useMemo
|
|
1
|
+
import { useContext, useMemo } from 'react';
|
|
2
2
|
import { ClientContext, DashboardConfigContext, DashboardContext, DashboardFiltersContext, } from '../Context';
|
|
3
|
-
import { getDashboard } from '../utils/dashboard';
|
|
4
3
|
import { COMPARISON_RANGE, PRIMARY_RANGE, } from '../DateRangePicker/dateRangePickerUtils';
|
|
5
|
-
import
|
|
4
|
+
import { DashboardFilterType } from '../models/Filter';
|
|
6
5
|
export const useReports = () => {
|
|
7
6
|
const [dashboard, dispatch] = useContext(DashboardContext);
|
|
8
7
|
const reloadReport = (id) => {
|
|
@@ -24,17 +23,19 @@ export const useReports = () => {
|
|
|
24
23
|
};
|
|
25
24
|
};
|
|
26
25
|
export const useDashboard = (dashboardName) => {
|
|
27
|
-
const
|
|
26
|
+
const { dashboardConfig, loadDashboard } = useContext(DashboardConfigContext);
|
|
28
27
|
const { dashboardFilters, loadFiltersForDashboard } = useContext(DashboardFiltersContext);
|
|
29
|
-
|
|
30
|
-
const [
|
|
31
|
-
const [
|
|
32
|
-
const
|
|
33
|
-
const loading = useMemo(() => isLoading ||
|
|
28
|
+
//TODO: handle error states
|
|
29
|
+
// const [error, setError] = useState<any>(null);
|
|
30
|
+
const [, isClientLoading] = useContext(ClientContext);
|
|
31
|
+
const loading = useMemo(() => !dashboardName ||
|
|
34
32
|
isClientLoading ||
|
|
33
|
+
dashboardConfig[dashboardName]?.loading ||
|
|
35
34
|
(dashboardConfig[dashboardName] &&
|
|
36
|
-
!dashboardConfig[dashboardName]?.sections), [
|
|
35
|
+
!dashboardConfig[dashboardName]?.config.sections), [isClientLoading, dashboardConfig, dashboardName]);
|
|
37
36
|
const handleReload = async (overrideDashboardName, fetchFromServer = false, reportAction, overrideFilters) => {
|
|
37
|
+
if (!dashboardName)
|
|
38
|
+
return;
|
|
38
39
|
if (overrideFilters) {
|
|
39
40
|
// Pull the date filter out of the override filters, process it, and append it to the filters
|
|
40
41
|
const dateFilter = overrideFilters.filters.find((f) => f.filterType === 'date_range');
|
|
@@ -45,7 +46,7 @@ export const useDashboard = (dashboardName) => {
|
|
|
45
46
|
...dateFilter,
|
|
46
47
|
dateField: [
|
|
47
48
|
...new Map(Object.values(dashboardConfig[overrideDashboardName ?? dashboardName]
|
|
48
|
-
?.sections ?? {})
|
|
49
|
+
?.config.sections ?? {})
|
|
49
50
|
.flat()
|
|
50
51
|
.map((report) => {
|
|
51
52
|
const key = JSON.stringify(report.dateField);
|
|
@@ -59,16 +60,29 @@ export const useDashboard = (dashboardName) => {
|
|
|
59
60
|
], overrideFilters.editedFilterLabel);
|
|
60
61
|
return;
|
|
61
62
|
}
|
|
62
|
-
const dashboard = await
|
|
63
|
+
const dashboard = await loadDashboard(overrideDashboardName ?? dashboardName, fetchFromServer, reportAction);
|
|
63
64
|
if (!fetchFromServer &&
|
|
64
|
-
Object.keys(dashboardFilters[dashboardName] ?? {}).length)
|
|
65
|
+
Object.keys(dashboardFilters[dashboardName] ?? {}).length) {
|
|
65
66
|
return;
|
|
67
|
+
}
|
|
68
|
+
const comparisonRangeStart = dashboard?.dateFilter?.comparisonRange?.startDate ??
|
|
69
|
+
COMPARISON_RANGE[dashboard?.dateFilter?.defaultComparisonRange ??
|
|
70
|
+
'NO_COMPARISON']({
|
|
71
|
+
start: PRIMARY_RANGE[dashboard?.dateFilter?.primaryRange?.value ?? 'LAST_30_DAYS']?.start,
|
|
72
|
+
end: PRIMARY_RANGE[dashboard?.dateFilter?.primaryRange?.value ?? 'LAST_30_DAYS']?.end,
|
|
73
|
+
})?.start;
|
|
74
|
+
const comparisonRangeEnd = dashboard?.dateFilter?.comparisonRange?.endDate ??
|
|
75
|
+
COMPARISON_RANGE[dashboard?.dateFilter?.defaultComparisonRange ??
|
|
76
|
+
'NO_COMPARISON']({
|
|
77
|
+
start: PRIMARY_RANGE[dashboard?.dateFilter?.primaryRange?.value ?? 'LAST_30_DAYS']?.start,
|
|
78
|
+
end: PRIMARY_RANGE[dashboard?.dateFilter?.primaryRange?.value ?? 'LAST_30_DAYS']?.end,
|
|
79
|
+
})?.end;
|
|
66
80
|
const dateFilter = dashboard?.dateFilter
|
|
67
81
|
? {
|
|
68
82
|
...dashboard?.dateFilter,
|
|
69
|
-
startDate: PRIMARY_RANGE[dashboard?.dateFilter.primaryRange?.value ?? 'LAST_30_DAYS']
|
|
70
|
-
endDate: PRIMARY_RANGE[dashboard?.dateFilter.primaryRange?.value ?? 'LAST_30_DAYS']
|
|
71
|
-
filterType:
|
|
83
|
+
startDate: PRIMARY_RANGE[dashboard?.dateFilter.primaryRange?.value ?? 'LAST_30_DAYS'].start,
|
|
84
|
+
endDate: PRIMARY_RANGE[dashboard?.dateFilter.primaryRange?.value ?? 'LAST_30_DAYS'].end,
|
|
85
|
+
filterType: DashboardFilterType.Date,
|
|
72
86
|
dateField: [
|
|
73
87
|
...new Map(Object.values(dashboard?.sections ?? {})
|
|
74
88
|
.flat()
|
|
@@ -79,28 +93,15 @@ export const useDashboard = (dashboardName) => {
|
|
|
79
93
|
],
|
|
80
94
|
preset: dashboard?.dateFilter.primaryRange,
|
|
81
95
|
dashboardName: overrideDashboardName ?? dashboardName,
|
|
82
|
-
comparisonRange: dashboard?.dateFilter.comparison
|
|
96
|
+
comparisonRange: dashboard?.dateFilter.comparison &&
|
|
97
|
+
comparisonRangeStart &&
|
|
98
|
+
comparisonRangeEnd
|
|
83
99
|
? {
|
|
84
|
-
startDate:
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
'LAST_30_DAYS']?.start,
|
|
90
|
-
end: PRIMARY_RANGE[dashboard?.dateFilter.primaryRange?.value ??
|
|
91
|
-
'LAST_30_DAYS']?.end,
|
|
92
|
-
})?.start,
|
|
93
|
-
endDate: dashboard?.dateFilter.comparsionRange?.endDate ??
|
|
94
|
-
COMPARISON_RANGE[dashboard?.dateFilter
|
|
95
|
-
.defaultComparisonRange ??
|
|
96
|
-
'NO_COMPARISON']({
|
|
97
|
-
start: PRIMARY_RANGE[dashboard?.dateFilter.primaryRange?.value ??
|
|
98
|
-
'LAST_30_DAYS']?.start,
|
|
99
|
-
end: PRIMARY_RANGE[dashboard?.dateFilter.primaryRange?.value ??
|
|
100
|
-
'LAST_30_DAYS']?.end,
|
|
101
|
-
})?.end,
|
|
102
|
-
value: dashboard?.dateFilter.comparsionRange?.value ??
|
|
103
|
-
dashboard.dateFilter?.defaultComparisonRange,
|
|
100
|
+
startDate: comparisonRangeStart,
|
|
101
|
+
endDate: comparisonRangeEnd,
|
|
102
|
+
value: dashboard?.dateFilter.comparisonRange?.value ??
|
|
103
|
+
dashboard.dateFilter?.defaultComparisonRange ??
|
|
104
|
+
'NO_COMPARISON',
|
|
104
105
|
}
|
|
105
106
|
: undefined,
|
|
106
107
|
}
|
|
@@ -111,101 +112,176 @@ export const useDashboard = (dashboardName) => {
|
|
|
111
112
|
...(dashboard?.filters ?? []),
|
|
112
113
|
]);
|
|
113
114
|
};
|
|
114
|
-
async function getDashboards(dashboardName, fetchFromServer = false, reportAction) {
|
|
115
|
-
let curDashboardConfig = dashboardConfig[dashboardName];
|
|
116
|
-
if (!fetchFromServer && curDashboardConfig?.sections) {
|
|
117
|
-
if (reportAction?.action === 'delete') {
|
|
118
|
-
curDashboardConfig = {
|
|
119
|
-
...curDashboardConfig,
|
|
120
|
-
sections: Object.fromEntries(Object.entries(curDashboardConfig?.sections ?? {}).map(([sectionKey, reports]) => [
|
|
121
|
-
sectionKey,
|
|
122
|
-
reports.filter((report) => report.id !== reportAction.report.id),
|
|
123
|
-
])),
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
else if (reportAction?.action === 'upsert') {
|
|
127
|
-
const containsReport = Object.values(curDashboardConfig?.sections ?? {})
|
|
128
|
-
.flat()
|
|
129
|
-
.some((report) => report.id === reportAction?.report.id);
|
|
130
|
-
curDashboardConfig = {
|
|
131
|
-
...curDashboardConfig,
|
|
132
|
-
sections: Object.fromEntries(Object.entries(curDashboardConfig?.sections ?? {}).map(([sectionKey, reports]) => [
|
|
133
|
-
sectionKey,
|
|
134
|
-
containsReport
|
|
135
|
-
? reports.map((report) => {
|
|
136
|
-
return {
|
|
137
|
-
report,
|
|
138
|
-
...(reportAction?.report.id === report.id
|
|
139
|
-
? reportAction?.report
|
|
140
|
-
: dashboard[report.id]),
|
|
141
|
-
_id: report.id,
|
|
142
|
-
id: report.id,
|
|
143
|
-
};
|
|
144
|
-
})
|
|
145
|
-
: [
|
|
146
|
-
...(reports ?? []),
|
|
147
|
-
{
|
|
148
|
-
report: reportAction?.report,
|
|
149
|
-
...dashboard[reportAction?.report.id],
|
|
150
|
-
id: reportAction?.report.id,
|
|
151
|
-
_id: reportAction?.report.id,
|
|
152
|
-
},
|
|
153
|
-
],
|
|
154
|
-
])),
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
dashboardConfigContext({
|
|
158
|
-
type: 'UPDATE_DASHBOARD',
|
|
159
|
-
id: dashboardName,
|
|
160
|
-
data: curDashboardConfig,
|
|
161
|
-
});
|
|
162
|
-
setIsLoading(false);
|
|
163
|
-
return curDashboardConfig;
|
|
164
|
-
}
|
|
165
|
-
if (!fetchFromServer &&
|
|
166
|
-
curDashboardConfig &&
|
|
167
|
-
curDashboardConfig.newQueries) {
|
|
168
|
-
setIsLoading(false);
|
|
169
|
-
return curDashboardConfig;
|
|
170
|
-
}
|
|
171
|
-
if (!client || !client.publicKey || !client.organizationId) {
|
|
172
|
-
return curDashboardConfig;
|
|
173
|
-
}
|
|
174
|
-
if (dashboardName === null || dashboardName === undefined)
|
|
175
|
-
return curDashboardConfig;
|
|
176
|
-
try {
|
|
177
|
-
setIsLoading(true);
|
|
178
|
-
const resp = await getDashboard(dashboardName, client);
|
|
179
|
-
// if dashboard has changed
|
|
180
|
-
if (!equal(resp, curDashboardConfig)) {
|
|
181
|
-
dashboardConfigContext({
|
|
182
|
-
type: 'ADD_DASHBOARD',
|
|
183
|
-
id: dashboardName,
|
|
184
|
-
data: { ...resp },
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
setError(null);
|
|
188
|
-
return resp;
|
|
189
|
-
}
|
|
190
|
-
catch (error) {
|
|
191
|
-
setError(error);
|
|
192
|
-
console.error('Error fetching data:', error);
|
|
193
|
-
}
|
|
194
|
-
finally {
|
|
195
|
-
setIsLoading(false);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
115
|
function isDashboardFilterLoading(filterName) {
|
|
116
|
+
if (!dashboardName)
|
|
117
|
+
return true;
|
|
199
118
|
return dashboardFilters[dashboardName]?.[filterName]?.loading;
|
|
200
119
|
}
|
|
201
120
|
return {
|
|
202
|
-
data: loading
|
|
203
|
-
|
|
121
|
+
data: loading || !dashboardName
|
|
122
|
+
? null
|
|
123
|
+
: (dashboardConfig[dashboardName]?.config ?? null),
|
|
124
|
+
dashboardFilters: dashboardName && dashboardFilters[dashboardName] !== undefined
|
|
204
125
|
? Object.values(dashboardFilters[dashboardName] ?? {}).map((f) => f.filter)
|
|
205
126
|
: null,
|
|
206
127
|
isLoading: loading,
|
|
207
128
|
isDashboardFilterLoading,
|
|
208
|
-
error,
|
|
209
129
|
reload: handleReload,
|
|
210
130
|
};
|
|
211
131
|
};
|
|
132
|
+
export const useDashboards = () => {
|
|
133
|
+
const { dashboardConfig, dashboardConfigDispatch } = useContext(DashboardConfigContext);
|
|
134
|
+
const { loadFiltersForDashboard, dispatch: dashboardFiltersDispatch } = useContext(DashboardFiltersContext);
|
|
135
|
+
const [client, isLoading] = useContext(ClientContext);
|
|
136
|
+
const dashboards = useMemo(() => {
|
|
137
|
+
return Object.values(dashboardConfig).map((dashboard) => {
|
|
138
|
+
return {
|
|
139
|
+
name: dashboard.config.name,
|
|
140
|
+
id: dashboard.config.dashboardId,
|
|
141
|
+
reports: Object.values(dashboard.config.sections ?? {}).flat(),
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
}, [dashboardConfig]);
|
|
145
|
+
const createDashboard = async ({ name, filters, dateFilter, }) => {
|
|
146
|
+
if (!client)
|
|
147
|
+
return;
|
|
148
|
+
dashboardConfigDispatch({
|
|
149
|
+
type: 'UPDATE_DASHBOARD',
|
|
150
|
+
id: name,
|
|
151
|
+
data: {
|
|
152
|
+
config: {
|
|
153
|
+
dashboardId: name,
|
|
154
|
+
name,
|
|
155
|
+
filters,
|
|
156
|
+
dateFilter,
|
|
157
|
+
},
|
|
158
|
+
loading: true,
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
const body = {
|
|
162
|
+
newDashboardName: name.trim(),
|
|
163
|
+
filters,
|
|
164
|
+
dateFilter,
|
|
165
|
+
name: name.trim(),
|
|
166
|
+
task: 'edit-dashboard',
|
|
167
|
+
clientId: client.clientId,
|
|
168
|
+
};
|
|
169
|
+
try {
|
|
170
|
+
const response = await fetch(client.queryEndpoint, {
|
|
171
|
+
method: 'POST',
|
|
172
|
+
headers: {
|
|
173
|
+
...client.queryHeaders,
|
|
174
|
+
'Content-Type': 'application/json',
|
|
175
|
+
},
|
|
176
|
+
body: JSON.stringify({ metadata: body }),
|
|
177
|
+
});
|
|
178
|
+
const updated = await response.json();
|
|
179
|
+
dashboardConfigDispatch({
|
|
180
|
+
type: 'UPDATE_DASHBOARD',
|
|
181
|
+
id: name,
|
|
182
|
+
data: { config: updated.data.dashboard, loading: false },
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
console.error(e);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
const updateDashboard = async (name, { newName, filters, dateFilter, }) => {
|
|
190
|
+
if (!client)
|
|
191
|
+
return;
|
|
192
|
+
const dashboard = dashboardConfig[name]?.config;
|
|
193
|
+
dashboardConfigDispatch({
|
|
194
|
+
type: 'DELETE_DASHBOARD',
|
|
195
|
+
id: name,
|
|
196
|
+
});
|
|
197
|
+
dashboardFiltersDispatch({
|
|
198
|
+
type: 'DELETE_DASHBOARD_FILTERS',
|
|
199
|
+
dashboardName: name,
|
|
200
|
+
});
|
|
201
|
+
const body = {
|
|
202
|
+
newDashboardName: newName.trim(),
|
|
203
|
+
filters,
|
|
204
|
+
dateFilter,
|
|
205
|
+
name: name.trim(),
|
|
206
|
+
task: 'edit-dashboard',
|
|
207
|
+
clientId: client.clientId,
|
|
208
|
+
};
|
|
209
|
+
try {
|
|
210
|
+
const response = await fetch(client.queryEndpoint, {
|
|
211
|
+
method: 'POST',
|
|
212
|
+
headers: {
|
|
213
|
+
...client.queryHeaders,
|
|
214
|
+
'Content-Type': 'application/json',
|
|
215
|
+
},
|
|
216
|
+
body: JSON.stringify({ metadata: body }),
|
|
217
|
+
});
|
|
218
|
+
const updated = await response.json();
|
|
219
|
+
dashboardConfigDispatch({
|
|
220
|
+
type: 'ADD_DASHBOARD',
|
|
221
|
+
id: updated.data.dashboard.name,
|
|
222
|
+
data: {
|
|
223
|
+
...dashboard,
|
|
224
|
+
...updated.data.dashboard,
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
const updatedDateFilter = updated.data.dashboard.dateFilter
|
|
228
|
+
? {
|
|
229
|
+
...updated.data.dashboard.dateFilter,
|
|
230
|
+
dashboardName: updated.data.dashboard.name,
|
|
231
|
+
preset: updated.data.dashboard.dateFilter.primaryRange,
|
|
232
|
+
filterType: DashboardFilterType.Date,
|
|
233
|
+
dateField: [
|
|
234
|
+
...new Map(Object.values(dashboardConfig[updated.data.dashboard.name]?.config
|
|
235
|
+
.sections ?? {})
|
|
236
|
+
.flat()
|
|
237
|
+
.map((report) => {
|
|
238
|
+
const key = JSON.stringify(report.dateField);
|
|
239
|
+
return [key, report.dateField];
|
|
240
|
+
})).values(),
|
|
241
|
+
],
|
|
242
|
+
startDate: PRIMARY_RANGE[updated.data.dashboard.dateFilter.primaryRange?.value ??
|
|
243
|
+
'LAST_30_DAYS'].start,
|
|
244
|
+
endDate: PRIMARY_RANGE[updated.data.dashboard.dateFilter.primaryRange?.value ??
|
|
245
|
+
'LAST_30_DAYS'].end,
|
|
246
|
+
}
|
|
247
|
+
: undefined;
|
|
248
|
+
loadFiltersForDashboard(updated.data.dashboard.name, [
|
|
249
|
+
...(updatedDateFilter ? [updatedDateFilter] : []),
|
|
250
|
+
...(updated.data.dashboard.filters ?? []),
|
|
251
|
+
]);
|
|
252
|
+
}
|
|
253
|
+
catch (e) {
|
|
254
|
+
console.error(e);
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
const deleteDashboard = async (name) => {
|
|
258
|
+
if (!client)
|
|
259
|
+
return;
|
|
260
|
+
await fetch(client.queryEndpoint, {
|
|
261
|
+
method: 'POST',
|
|
262
|
+
headers: {
|
|
263
|
+
...client.queryHeaders,
|
|
264
|
+
'Content-Type': 'application/json',
|
|
265
|
+
},
|
|
266
|
+
body: JSON.stringify({
|
|
267
|
+
metadata: {
|
|
268
|
+
task: 'delete-dashboard',
|
|
269
|
+
clientId: client.clientId,
|
|
270
|
+
databaseType: client.databaseType,
|
|
271
|
+
name,
|
|
272
|
+
},
|
|
273
|
+
}),
|
|
274
|
+
});
|
|
275
|
+
dashboardConfigDispatch({
|
|
276
|
+
type: 'DELETE_DASHBOARD',
|
|
277
|
+
id: name,
|
|
278
|
+
});
|
|
279
|
+
};
|
|
280
|
+
return {
|
|
281
|
+
dashboards: isLoading ? null : dashboards,
|
|
282
|
+
isLoading,
|
|
283
|
+
createDashboard,
|
|
284
|
+
updateDashboard,
|
|
285
|
+
deleteDashboard,
|
|
286
|
+
};
|
|
287
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAwD/C,eAAO,MAAM,SAAS,cACT,MAAM;uCAOmB,aAAa,KAAK,WAAW;;;;;;;
|
|
1
|
+
{"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAwD/C,eAAO,MAAM,SAAS,cACT,MAAM;uCAOmB,aAAa,KAAK,WAAW;;;;;;;CAqMlE,CAAC;AAEF,UAAU,aAAa;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -51,11 +51,18 @@ sectionField, } = {}) => {
|
|
|
51
51
|
const { dashboardFilters } = useContext(DashboardFiltersContext);
|
|
52
52
|
const [dashboard] = useContext(DashboardContext);
|
|
53
53
|
const specificDashboardFilters = useMemo(() => {
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
if (!reportId) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
const dashboardName = dashboard[reportId]?.dashboardName;
|
|
58
|
+
if (!dashboardName || !dashboardFilters[dashboardName]) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
// @ts-ignore
|
|
62
|
+
return Object.values(dashboardFilters[dashboardName]).map((dashboardFilter) => {
|
|
56
63
|
return dashboardFilter.filter;
|
|
57
64
|
});
|
|
58
|
-
}, [dashboardFilters]);
|
|
65
|
+
}, [dashboardFilters, dashboard, reportId]);
|
|
59
66
|
// const [theme] = useContext(ThemeContext);
|
|
60
67
|
const [client] = useContext(ClientContext);
|
|
61
68
|
const [isLoading, setIsLoading] = useState(false);
|
|
@@ -70,8 +77,8 @@ sectionField, } = {}) => {
|
|
|
70
77
|
setIsLoading(true);
|
|
71
78
|
const resp = await getExportData(client, specificDashboardFilters, reportId);
|
|
72
79
|
downloadCSV({
|
|
73
|
-
rows: resp.rows,
|
|
74
|
-
fields: resp.columns,
|
|
80
|
+
rows: resp.pivot && resp.pivotRows ? resp.pivotRows : resp.rows,
|
|
81
|
+
fields: resp.pivot && resp.pivotColumns ? resp.pivotColumns : resp.columns,
|
|
75
82
|
name: resp.name,
|
|
76
83
|
});
|
|
77
84
|
setIsLoading(false);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const useOnClickOutside: (ref: React.RefObject<HTMLDivElement>, handler: (event: any) => void) => void;
|
|
1
|
+
declare const useOnClickOutside: (ref: React.RefObject<HTMLDivElement>, handler: (event: any) => void, listening?: boolean) => void;
|
|
2
2
|
export default useOnClickOutside;
|
|
3
3
|
//# sourceMappingURL=useOnClickOutside.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnClickOutside.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOnClickOutside.tsx"],"names":[],"mappings":"AAEA,QAAA,MAAM,iBAAiB,QAChB,MAAM,SAAS,CAAC,cAAc,CAAC,mBACjB,GAAG,KAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"useOnClickOutside.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOnClickOutside.tsx"],"names":[],"mappings":"AAEA,QAAA,MAAM,iBAAiB,QAChB,MAAM,SAAS,CAAC,cAAc,CAAC,mBACjB,GAAG,KAAG,IAAI,cACjB,OAAO,SAqBpB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
const useOnClickOutside = (ref, handler) => {
|
|
2
|
+
const useOnClickOutside = (ref, handler, listening) => {
|
|
3
3
|
useEffect(() => {
|
|
4
4
|
const listener = (event) => {
|
|
5
5
|
if (!ref.current || ref.current.contains(event.target)) {
|
|
@@ -7,14 +7,18 @@ const useOnClickOutside = (ref, handler) => {
|
|
|
7
7
|
}
|
|
8
8
|
handler(event);
|
|
9
9
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
if (listening !== false) {
|
|
11
|
+
document.addEventListener('mousedown', listener);
|
|
12
|
+
document.addEventListener('touchstart', listener);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
document.removeEventListener('mousedown', listener);
|
|
16
|
+
document.removeEventListener('touchstart', listener);
|
|
17
|
+
}
|
|
13
18
|
return () => {
|
|
14
|
-
// document.removeEventListener('click', listener);
|
|
15
19
|
document.removeEventListener('mousedown', listener);
|
|
16
20
|
document.removeEventListener('touchstart', listener);
|
|
17
21
|
};
|
|
18
|
-
}, [ref, handler]);
|
|
22
|
+
}, [ref, handler, listening]);
|
|
19
23
|
};
|
|
20
24
|
export default useOnClickOutside;
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ 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 } from './hooks/useDashboard';
|
|
17
|
+
export { useDashboard, useReports, useDashboards } from './hooks/useDashboard';
|
|
18
18
|
export { useQuill, usePivot } from './hooks/useQuill';
|
|
19
19
|
export { useExport } from './hooks/useExport';
|
|
20
20
|
export { useMemoizedRows } from './hooks/useFormat';
|
package/dist/esm/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,UAAU,EAAE,MAAM,sBAAsB,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,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -7,7 +7,7 @@ export { default as SQLEditor, SchemaListComponent } from './SQLEditor';
|
|
|
7
7
|
export { default as ReportBuilder } from './ReportBuilder';
|
|
8
8
|
export { default as ChartEditor } from './ChartEditor';
|
|
9
9
|
export { quillFormat as format } from './utils/valueFormatter';
|
|
10
|
-
export { useDashboard, useReports } from './hooks/useDashboard';
|
|
10
|
+
export { useDashboard, useReports, useDashboards } from './hooks/useDashboard';
|
|
11
11
|
export { useQuill, usePivot } from './hooks/useQuill';
|
|
12
12
|
export { useExport } from './hooks/useExport';
|
|
13
13
|
export { useMemoizedRows } from './hooks/useFormat';
|
|
@@ -914,11 +914,11 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
|
|
|
914
914
|
let value;
|
|
915
915
|
const nextRowValue = isDateField(pivot.rowFieldType || '')
|
|
916
916
|
? // @ts-ignore
|
|
917
|
-
uniqueRows[rowIndex + 1] ?? endOfDay(rowDateRange.end)
|
|
917
|
+
(uniqueRows[rowIndex + 1] ?? endOfDay(rowDateRange.end))
|
|
918
918
|
: null;
|
|
919
919
|
const compRowValue = compUniqueRows[rowIndex];
|
|
920
920
|
const compNextRowValue = isDateField(pivot.rowFieldType || '')
|
|
921
|
-
? compUniqueRows[rowIndex + 1] ?? endOfDay(compRowDateRange.end)
|
|
921
|
+
? (compUniqueRows[rowIndex + 1] ?? endOfDay(compRowDateRange.end))
|
|
922
922
|
: null;
|
|
923
923
|
if (pivot.columnField) {
|
|
924
924
|
const columnDateRange = getDateRange(dateRange, pivot.columnField, data);
|
|
@@ -1136,7 +1136,7 @@ export function generatePivotTableInMemory(pivot, data, dateRange, isComparison,
|
|
|
1136
1136
|
index === 1
|
|
1137
1137
|
? `comparison Count`
|
|
1138
1138
|
: isDateField(pivot.columnFieldType || '')
|
|
1139
|
-
? COL_DATE_MAP[getDateString(column, dateRange, dateBucket)] ?? 'comparison'
|
|
1139
|
+
? (COL_DATE_MAP[getDateString(column, dateRange, dateBucket)] ?? 'comparison')
|
|
1140
1140
|
: `comparison ${snakeAndCamelCaseToTitleCase(columnName)}`,
|
|
1141
1141
|
field: `comparison_${columnName}`,
|
|
1142
1142
|
};
|
package/dist/esm/lib/utils.d.ts
CHANGED
|
@@ -7,4 +7,5 @@ export declare const isValueInArray: (value: any, array: any[]) => boolean;
|
|
|
7
7
|
export declare const stringIsNumeric: (str: string | undefined) => boolean;
|
|
8
8
|
export declare const stringEndsWithNumber: (str: string) => boolean;
|
|
9
9
|
export declare function mergeRefs<T = any>(refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>): React.RefCallback<T>;
|
|
10
|
+
export declare const createDebounce: (func: any, delay: number) => (...args: any) => void;
|
|
10
11
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAO,MAAM,qBAAqB,EAAE,cAClB,CAAC;AAEnB,eAAO,MAAM,eAAe,QAAS,MAAM,EAAE,WACO,CAAC;AAErD,eAAO,MAAM,oBAAoB,UAAW,GAAG,SAAS,GAAG,EAAE,KAAG,GAAG,EAMlE,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,GAAG,SAAS,GAAG,EAAE,KAAG,OAOzD,CAAC;AAEF,eAAO,MAAM,eAAe,QAAS,MAAM,GAAG,SAAS,KAAG,OAEzD,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAS,MAAM,KAAG,OAElD,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAC/B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAC1D,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAUtB"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAO,MAAM,qBAAqB,EAAE,cAClB,CAAC;AAEnB,eAAO,MAAM,eAAe,QAAS,MAAM,EAAE,WACO,CAAC;AAErD,eAAO,MAAM,oBAAoB,UAAW,GAAG,SAAS,GAAG,EAAE,KAAG,GAAG,EAMlE,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,GAAG,SAAS,GAAG,EAAE,KAAG,OAOzD,CAAC;AAEF,eAAO,MAAM,eAAe,QAAS,MAAM,GAAG,SAAS,KAAG,OAEzD,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAS,MAAM,KAAG,OAElD,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAC/B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAC1D,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAUtB;AAED,eAAO,MAAM,cAAc,SAAU,GAAG,SAAS,MAAM,eAEpC,GAAG,SAIrB,CAAC"}
|
package/dist/esm/lib/utils.js
CHANGED
|
@@ -4,11 +4,16 @@ export type DashboardConfig = {
|
|
|
4
4
|
dashboardId: string;
|
|
5
5
|
name: string;
|
|
6
6
|
filters: DashboardStringFilter[];
|
|
7
|
-
dateFilter
|
|
7
|
+
dateFilter?: DashboardDateFilter;
|
|
8
8
|
customFiltersEnabled?: boolean;
|
|
9
9
|
sections?: {
|
|
10
10
|
[key: string]: QuillReport[];
|
|
11
11
|
};
|
|
12
12
|
newQueries?: QuillReport[];
|
|
13
13
|
};
|
|
14
|
+
export type Dashboard = {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
reports: QuillReport[];
|
|
18
|
+
};
|
|
14
19
|
//# sourceMappingURL=Dashboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../../src/models/Dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,UAAU,EAAE,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../../src/models/Dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;KAC9B,CAAC;IACF,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC"}
|
|
@@ -281,7 +281,7 @@ const queryPatterns = [
|
|
|
281
281
|
WHERE transaction_date >= DATEADD(day, -90, GETDATE())
|
|
282
282
|
`,
|
|
283
283
|
value: function (astWhere) {
|
|
284
|
-
return -astWhere.right?.args?.value[1]?.value
|
|
284
|
+
return -astWhere.right?.args?.value[1]?.value;
|
|
285
285
|
},
|
|
286
286
|
unit: function (astWhere) {
|
|
287
287
|
return astWhere.right?.args?.value[0]?.column?.expr?.value ?? null;
|
|
@@ -390,7 +390,7 @@ const queryPatterns = [
|
|
|
390
390
|
WHERE transaction_date >= DATEADD(day, -90, CURRENT_DATE)
|
|
391
391
|
`,
|
|
392
392
|
value: function (astWhere) {
|
|
393
|
-
return -astWhere.right?.args?.value[1]?.value
|
|
393
|
+
return -astWhere.right?.args?.value[1]?.value;
|
|
394
394
|
},
|
|
395
395
|
unit: function (astWhere) {
|
|
396
396
|
return astWhere.right?.args?.value[0]?.column?.expr?.value ?? null;
|
|
@@ -597,7 +597,7 @@ const queryPatterns = [
|
|
|
597
597
|
WHERE transaction_date >= DATEADD(DAY, -90, CURRENT_DATE())
|
|
598
598
|
`,
|
|
599
599
|
value: function (astWhere) {
|
|
600
|
-
return -astWhere.right?.args?.value[1]?.value
|
|
600
|
+
return -astWhere.right?.args?.value[1]?.value;
|
|
601
601
|
},
|
|
602
602
|
unit: function (astWhere) {
|
|
603
603
|
return astWhere.right?.args?.value[0]?.column.toLowerCase() ?? null;
|
|
@@ -133,10 +133,10 @@ export function convertPostgresColumn(field) {
|
|
|
133
133
|
jsType = 'string';
|
|
134
134
|
}
|
|
135
135
|
return {
|
|
136
|
-
label: 'field' in field
|
|
136
|
+
label: ('field' in field
|
|
137
137
|
? snakeAndCamelCaseToTitleCase(field.field)
|
|
138
|
-
: snakeAndCamelCaseToTitleCase(field.name),
|
|
139
|
-
field: 'field' in field ? field.field : field.name,
|
|
138
|
+
: snakeAndCamelCaseToTitleCase(field.name)) ?? '',
|
|
139
|
+
field: ('field' in field ? field.field : field.name) ?? '',
|
|
140
140
|
format,
|
|
141
141
|
fieldType,
|
|
142
142
|
dataTypeID: field.dataTypeID,
|
|
@@ -316,7 +316,7 @@ export const getYAxisFields = (report) => {
|
|
|
316
316
|
}
|
|
317
317
|
else {
|
|
318
318
|
if (curDateFilter?.comparison &&
|
|
319
|
-
curDateFilter.comparisonRange
|
|
319
|
+
curDateFilter.comparisonRange?.value !== 'NO_COMPARISON') {
|
|
320
320
|
const comparisonYAxisFields = report.yAxisFields?.map((field) => {
|
|
321
321
|
return {
|
|
322
322
|
...field,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const MAX_COLUMN_ROWS_LIMIT = 500;
|
|
2
|
-
export declare const QUILL_SERVER = "https://quill-344421.uc.r.appspot.com";
|
|
3
2
|
export declare const MAX_PIVOT_UNIQUE_VALUES = 250;
|
|
3
|
+
export declare const QUILL_SERVER: string;
|
|
4
|
+
export declare const QUILL_QUERY_ENDPOINT: string;
|
|
4
5
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,YAAY,QACiD,CAAC;AAC3E,eAAO,MAAM,oBAAoB,QACa,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export const MAX_COLUMN_ROWS_LIMIT = 500;
|
|
2
|
-
export const QUILL_SERVER = 'https://quill-344421.uc.r.appspot.com';
|
|
3
2
|
export const MAX_PIVOT_UNIQUE_VALUES = 250;
|
|
3
|
+
export const QUILL_SERVER = process.env.QUILL_SERVER_HOST ?? 'https://quill-344421.uc.r.appspot.com';
|
|
4
|
+
export const QUILL_QUERY_ENDPOINT = process.env.QUILL_QUERY_ENDPOINT ?? '/cloud';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA8EvD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,gBAqJ1B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,WAAW,CAAC,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA8EvD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,gBAqJ1B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,WAAW,CAAC,EAAE,WAAW,gBA+B1B;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,GAAG,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB5C"}
|