@quillsql/react 2.13.18 → 2.13.19
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 +2 -2
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +53 -175
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +3 -3
- package/dist/cjs/Context.d.ts +24 -3
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +323 -7
- package/dist/cjs/Dashboard.js +1 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +0 -2
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +1 -4
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +34 -32
- package/dist/cjs/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +4 -2
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +141 -57
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +2 -49
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +66 -42
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +0 -1
- package/dist/cjs/models/Report.d.ts +4 -3
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.d.ts +2 -1
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +2 -2
- package/dist/cjs/utils/dataProcessing.js +2 -2
- package/dist/cjs/utils/filterProcessing.d.ts +6 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +81 -3
- package/dist/cjs/utils/pivotConstructor.js +1 -1
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +0 -1
- package/dist/cjs/utils/report.d.ts +13 -1
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +81 -51
- package/dist/esm/Chart.d.ts +2 -2
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +66 -179
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +3 -3
- package/dist/esm/Context.d.ts +24 -3
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +322 -6
- package/dist/esm/Dashboard.js +1 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +0 -2
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +1 -4
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +34 -32
- package/dist/esm/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +4 -2
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +142 -58
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +3 -50
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +68 -44
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +0 -1
- package/dist/esm/models/Report.d.ts +4 -3
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.d.ts +2 -1
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +2 -2
- package/dist/esm/utils/dataProcessing.js +2 -2
- package/dist/esm/utils/filterProcessing.d.ts +6 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +78 -2
- package/dist/esm/utils/pivotConstructor.js +1 -1
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +0 -1
- package/dist/esm/utils/report.d.ts +13 -1
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +79 -51
- package/package.json +1 -1
package/dist/esm/utils/report.js
CHANGED
|
@@ -8,7 +8,6 @@ import { fetchSqlQuery, getData } from './dataFetcher';
|
|
|
8
8
|
import { parseValueFromBigQueryDates } from './dataProcessing';
|
|
9
9
|
import { getDateBucketFromRange } from './dates';
|
|
10
10
|
import { DataLoadError } from './error';
|
|
11
|
-
import { processFilterErrorList } from './errorProcessing';
|
|
12
11
|
import { internalLog } from './logging';
|
|
13
12
|
import { DEFAULT_PAGINATION } from './paginationProcessing';
|
|
14
13
|
import { isPivotPossible, isValidPivot } from './pivotProcessing';
|
|
@@ -89,59 +88,20 @@ export async function fetchReport(reportId, client, useReportTask = true, filter
|
|
|
89
88
|
useNewNodeSql: true,
|
|
90
89
|
};
|
|
91
90
|
const resp = await getData(client, 'itempost', 'omit', hostedBody, cloudBody, 'POST', 'fetch-data', abortSignal);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
...resp,
|
|
100
|
-
useReportTask,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
if (client.databaseType &&
|
|
104
|
-
client.databaseType.toLowerCase() === 'bigquery') {
|
|
105
|
-
parseValueFromBigQueryDates(dashboardItem.rows, resp.fields);
|
|
106
|
-
}
|
|
107
|
-
if (dashboardItem.compareRows) {
|
|
108
|
-
if (client.databaseType &&
|
|
109
|
-
client.databaseType.toLowerCase() === 'bigquery') {
|
|
110
|
-
parseValueFromBigQueryDates(dashboardItem.compareRows, resp.fields);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
reportInfo = await cleanDashboardItem(dashboardItem, filters, client, dateBucket);
|
|
114
|
-
if (additionalProcessing) {
|
|
115
|
-
reportInfo.pagination = additionalProcessing.page;
|
|
116
|
-
reportInfo.sort = additionalProcessing.sort;
|
|
117
|
-
}
|
|
118
|
-
// Ensure the report columns don't reference any columns that aren't present in the rows
|
|
119
|
-
const observedColumns = reportInfo?.rows[0]
|
|
120
|
-
? Object.keys(reportInfo.rows[0])
|
|
121
|
-
: null;
|
|
122
|
-
if (observedColumns &&
|
|
123
|
-
reportInfo &&
|
|
124
|
-
!reportInfo.pivot &&
|
|
125
|
-
!reportInfo.pivotColumns &&
|
|
126
|
-
!reportInfo.error &&
|
|
127
|
-
useReportTask &&
|
|
128
|
-
reportInfo.columns?.filter((col) => !observedColumns.includes(col.field))
|
|
129
|
-
?.length > 0) {
|
|
130
|
-
reportInfo.columns = reportInfo.columns.filter((col) => observedColumns.includes(col.field));
|
|
131
|
-
reportInfo.columnInternal = reportInfo.columnInternal.filter((col) => observedColumns.includes(col.field));
|
|
132
|
-
await saveReport({
|
|
133
|
-
report: { ...dashboardItem, query: reportInfo.queryString },
|
|
134
|
-
dashboardItemId: reportId,
|
|
135
|
-
client,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
91
|
+
reportInfo = await processReportResponse({
|
|
92
|
+
resp,
|
|
93
|
+
client,
|
|
94
|
+
filters,
|
|
95
|
+
dateBucket,
|
|
96
|
+
additionalProcessing,
|
|
97
|
+
});
|
|
138
98
|
}
|
|
139
99
|
catch (error) {
|
|
140
100
|
if (error instanceof Error && error.name === 'AbortError') {
|
|
141
101
|
throw error;
|
|
142
102
|
}
|
|
143
103
|
if (error instanceof DataLoadError) {
|
|
144
|
-
if (
|
|
104
|
+
if (useReportTask) {
|
|
145
105
|
internalLog('USING ITEM AS BACKUP');
|
|
146
106
|
const { report, error } = await fetchReport(reportId, client, false, filters, additionalProcessing, dateBucket, customFields, rowsOnly, rowCountOnly);
|
|
147
107
|
reportInfo = report;
|
|
@@ -170,6 +130,74 @@ export async function fetchReport(reportId, client, useReportTask = true, filter
|
|
|
170
130
|
}
|
|
171
131
|
return { report: reportInfo || EMPTY_INTERNAL_REPORT, error: errorMessage };
|
|
172
132
|
}
|
|
133
|
+
export async function processReportResponse({ resp, client, filters, dateBucket, additionalProcessing, }) {
|
|
134
|
+
const dashboardItem = {
|
|
135
|
+
...resp,
|
|
136
|
+
filtersApplied: filters,
|
|
137
|
+
};
|
|
138
|
+
if (resp.errorMessage) {
|
|
139
|
+
throw new DataLoadError(resp?.errorMessage, {
|
|
140
|
+
...resp,
|
|
141
|
+
useReportTask: true,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (client.databaseType && client.databaseType.toLowerCase() === 'bigquery') {
|
|
145
|
+
parseValueFromBigQueryDates(dashboardItem.rows, resp.fields);
|
|
146
|
+
}
|
|
147
|
+
if (dashboardItem.compareRows) {
|
|
148
|
+
if (client.databaseType &&
|
|
149
|
+
client.databaseType.toLowerCase() === 'bigquery') {
|
|
150
|
+
parseValueFromBigQueryDates(dashboardItem.compareRows, resp.fields);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
console.log('dashboardItem', dashboardItem);
|
|
154
|
+
console.log('filters', filters);
|
|
155
|
+
const reportInfo = await cleanDashboardItem(dashboardItem, filters, client, dateBucket);
|
|
156
|
+
console.log('reportInfo', reportInfo);
|
|
157
|
+
if (additionalProcessing) {
|
|
158
|
+
reportInfo.pagination = additionalProcessing.page;
|
|
159
|
+
reportInfo.sort = additionalProcessing.sort;
|
|
160
|
+
}
|
|
161
|
+
//TODO: Revisit this code
|
|
162
|
+
// It's purpose is to filter out columns that are not present in the rows
|
|
163
|
+
// But it appears to be confusing dashboardItem and reportInfo
|
|
164
|
+
// Ensure the report columns don't reference any columns that aren't present in the rows
|
|
165
|
+
const observedColumns = reportInfo?.rows[0]
|
|
166
|
+
? Object.keys(reportInfo.rows[0])
|
|
167
|
+
: null;
|
|
168
|
+
if (observedColumns &&
|
|
169
|
+
reportInfo &&
|
|
170
|
+
!reportInfo.pivot &&
|
|
171
|
+
!reportInfo.pivotColumns &&
|
|
172
|
+
!reportInfo.error &&
|
|
173
|
+
reportInfo.columns?.filter((col) => !observedColumns.includes(col.field))
|
|
174
|
+
?.length > 0) {
|
|
175
|
+
reportInfo.columns = reportInfo.columns.filter((col) => observedColumns.includes(col.field));
|
|
176
|
+
reportInfo.columnInternal = reportInfo.columnInternal.filter((col) => observedColumns.includes(col.field));
|
|
177
|
+
await saveReport({
|
|
178
|
+
report: { ...reportInfo, query: reportInfo.queryString },
|
|
179
|
+
dashboardItemId: reportInfo.id,
|
|
180
|
+
client,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
return reportInfo;
|
|
184
|
+
}
|
|
185
|
+
export async function fetchReportInfo(reportId, client) {
|
|
186
|
+
const hostedBody = {
|
|
187
|
+
metadata: {
|
|
188
|
+
reportId,
|
|
189
|
+
clientId: client.publicKey,
|
|
190
|
+
task: 'report-info',
|
|
191
|
+
orgId: client.organizationId || '*',
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
const cloudBody = {
|
|
195
|
+
id: reportId,
|
|
196
|
+
useNewNodeSql: true,
|
|
197
|
+
};
|
|
198
|
+
const resp = await getData(client, 'itempost', 'omit', hostedBody, cloudBody, 'POST', 'fetch-data');
|
|
199
|
+
return { report: resp.report, filters: resp.filters };
|
|
200
|
+
}
|
|
173
201
|
export async function fetchReportRowCount(reportId, client, useReportTask = true, filters = [], additionalProcessing, customFields, abortSignal) {
|
|
174
202
|
// Remove extra fields on each filter so we don't confuse the backend.
|
|
175
203
|
const hostedBody = {
|
|
@@ -246,7 +274,7 @@ export const formatRowsFromReport = (report) => {
|
|
|
246
274
|
}, {});
|
|
247
275
|
});
|
|
248
276
|
};
|
|
249
|
-
export function convertInternalReportToReport(report) {
|
|
277
|
+
export function convertInternalReportToReport(report, dashboardFilters) {
|
|
250
278
|
try {
|
|
251
279
|
if (!report) {
|
|
252
280
|
return EMPTY_REPORT;
|
|
@@ -283,7 +311,7 @@ export function convertInternalReportToReport(report) {
|
|
|
283
311
|
return {
|
|
284
312
|
...extractAllReportValuesFromQuillInternalReport(formattedReport),
|
|
285
313
|
rows: rows,
|
|
286
|
-
yAxisFields: getYAxisFields(report),
|
|
314
|
+
yAxisFields: getYAxisFields(report, dashboardFilters),
|
|
287
315
|
columns: columns,
|
|
288
316
|
rowCount: rows ? rows.length : 0,
|
|
289
317
|
};
|
|
@@ -295,7 +323,7 @@ export function convertInternalReportToReport(report) {
|
|
|
295
323
|
return {
|
|
296
324
|
...extractAllReportValuesFromQuillInternalReport(formattedReport),
|
|
297
325
|
rows: rows,
|
|
298
|
-
yAxisFields: getYAxisFields(report),
|
|
326
|
+
yAxisFields: getYAxisFields(report, dashboardFilters),
|
|
299
327
|
};
|
|
300
328
|
}
|
|
301
329
|
catch (error) {
|