@quillsql/react 2.12.40 → 2.12.41
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 -6
- package/dist/cjs/Dashboard.js +5 -5
- package/dist/cjs/ReportBuilder.d.ts +1 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +111 -1588
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +0 -9
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +1 -11
- package/dist/cjs/components/Dashboard/DataLoader.js +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +32 -32
- package/dist/cjs/components/ReportBuilder/convert.d.ts +5 -31
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +1 -1
- package/dist/cjs/hooks/useAskQuill.d.ts +27 -0
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -0
- package/dist/cjs/hooks/useAskQuill.js +177 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +3 -3
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +4 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +1 -15
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +24 -24
- package/dist/cjs/models/Filter.d.ts +25 -19
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Filter.js +2 -2
- package/dist/cjs/{components/ReportBuilder/pivot.d.ts → models/Pivot.d.ts} +13 -4
- package/dist/cjs/models/Pivot.d.ts.map +1 -0
- package/dist/cjs/models/Report.d.ts +1 -1
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/models/Tables.d.ts +16 -0
- package/dist/cjs/models/Tables.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +27 -27
- package/dist/cjs/utils/astProcessing.d.ts +42 -0
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +210 -1
- package/dist/cjs/utils/constants.d.ts +1 -0
- package/dist/cjs/utils/constants.d.ts.map +1 -1
- package/dist/cjs/utils/constants.js +2 -1
- package/dist/cjs/utils/dataFetcher.d.ts +4 -0
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +24 -1
- package/dist/cjs/utils/dates.d.ts +1 -1
- package/dist/cjs/utils/filterProcessing.d.ts +2 -2
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +6 -6
- package/dist/cjs/utils/pivotConstructor.d.ts +1 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +7 -4
- package/dist/cjs/utils/pivotProcessing.d.ts +4 -4
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +21 -2
- package/dist/cjs/utils/queryConstructor.d.ts +1 -1
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +3 -3
- package/dist/cjs/utils/report.d.ts +25 -0
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +114 -2
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +1 -1
- package/dist/cjs/utils/tableProcessing.d.ts +18 -0
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +94 -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 -6
- package/dist/esm/Dashboard.js +5 -5
- package/dist/esm/ReportBuilder.d.ts +1 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +121 -1598
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +0 -9
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +1 -11
- package/dist/esm/components/Dashboard/DataLoader.js +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +32 -32
- package/dist/esm/components/ReportBuilder/convert.d.ts +5 -31
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +1 -1
- package/dist/esm/hooks/useAskQuill.d.ts +27 -0
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -0
- package/dist/esm/hooks/useAskQuill.js +173 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +3 -3
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +4 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +1 -15
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +24 -24
- package/dist/esm/models/Filter.d.ts +25 -19
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Filter.js +2 -2
- package/dist/esm/{components/ReportBuilder/pivot.d.ts → models/Pivot.d.ts} +13 -4
- package/dist/esm/models/Pivot.d.ts.map +1 -0
- package/dist/esm/models/Report.d.ts +1 -1
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/models/Tables.d.ts +16 -0
- package/dist/esm/models/Tables.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +27 -27
- package/dist/esm/utils/astProcessing.d.ts +42 -0
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +204 -0
- package/dist/esm/utils/constants.d.ts +1 -0
- package/dist/esm/utils/constants.d.ts.map +1 -1
- package/dist/esm/utils/constants.js +1 -0
- package/dist/esm/utils/dataFetcher.d.ts +4 -0
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +22 -0
- package/dist/esm/utils/dates.d.ts +1 -1
- package/dist/esm/utils/filterProcessing.d.ts +2 -2
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +7 -7
- package/dist/esm/utils/pivotConstructor.d.ts +1 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +7 -4
- package/dist/esm/utils/pivotProcessing.d.ts +4 -4
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +19 -1
- package/dist/esm/utils/queryConstructor.d.ts +1 -1
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +3 -3
- package/dist/esm/utils/report.d.ts +25 -0
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +114 -3
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +1 -1
- package/dist/esm/utils/tableProcessing.d.ts +18 -0
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +91 -1
- package/package.json +1 -1
- package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +0 -1
- package/dist/cjs/models/Pivots.d.ts +0 -2
- package/dist/cjs/models/Pivots.d.ts.map +0 -1
- package/dist/cjs/models/Pivots.js +0 -2
- package/dist/esm/components/ReportBuilder/pivot.d.ts.map +0 -1
- package/dist/esm/models/Pivots.d.ts +0 -2
- package/dist/esm/models/Pivots.d.ts.map +0 -1
- package/dist/esm/models/Pivots.js +0 -1
- /package/dist/cjs/{components/ReportBuilder/pivot.js → models/Pivot.js} +0 -0
- /package/dist/esm/{components/ReportBuilder/pivot.js → models/Pivot.js} +0 -0
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getColumnsByTableFromASTAndSchema = exports.getColumnAndTableInfo = exports.recursiveSearchByKeysFindAllOccurances = exports.processApostrophe = exports.getColumnsByTableName = exports.createTableNameToTableAliasMap = exports.recursiveSearchByKeys = exports.recursiveSearchByKey = exports.processStarColumn = exports.getSelectFromAST = void 0;
|
|
3
|
+
exports.fetchASTFromQuillReport = exports.fetchAndProcessASTFromPrompt = exports.createBasicSelectASTFromColumns = exports.getAllPossibleColumns = exports.isSubquery = exports.getColumnsByTableFromASTAndSchema = exports.getColumnAndTableInfo = exports.recursiveSearchByKeysFindAllOccurances = exports.processApostrophe = exports.getColumnsByTableName = exports.createTableNameToTableAliasMap = exports.recursiveSearchByKeys = exports.recursiveSearchByKey = exports.processStarColumn = exports.getSelectFromAST = void 0;
|
|
4
|
+
const ast_1 = require("../components/ReportBuilder/ast");
|
|
5
|
+
const convert_1 = require("../components/ReportBuilder/convert");
|
|
6
|
+
const util_1 = require("../components/ReportBuilder/util");
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
const schema_1 = require("./schema");
|
|
4
9
|
function getSelectFromAST(ast) {
|
|
5
10
|
if (Array.isArray(ast)) {
|
|
6
11
|
return ast[0];
|
|
@@ -265,3 +270,207 @@ function getColumnsByTableFromASTAndSchema(ast, tables, tableAliasMap) {
|
|
|
265
270
|
return referencedColumns;
|
|
266
271
|
}
|
|
267
272
|
exports.getColumnsByTableFromASTAndSchema = getColumnsByTableFromASTAndSchema;
|
|
273
|
+
const isSubquery = (node) => {
|
|
274
|
+
if (!node)
|
|
275
|
+
return false;
|
|
276
|
+
if (node.ast)
|
|
277
|
+
return true;
|
|
278
|
+
if (node.left && (0, exports.isSubquery)(node.left))
|
|
279
|
+
return true;
|
|
280
|
+
if (node.right && (0, exports.isSubquery)(node.right))
|
|
281
|
+
return true;
|
|
282
|
+
if (node.value && Array.isArray(node.value)) {
|
|
283
|
+
for (const value of node.value) {
|
|
284
|
+
if ((0, exports.isSubquery)(value))
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return false;
|
|
289
|
+
};
|
|
290
|
+
exports.isSubquery = isSubquery;
|
|
291
|
+
const getAllPossibleColumns = (baseAst, schema) => {
|
|
292
|
+
if (!baseAst || !baseAst.from) {
|
|
293
|
+
return schema.flatMap((table) => table.columns.map((c) => ({
|
|
294
|
+
...c,
|
|
295
|
+
table: table.displayName,
|
|
296
|
+
})));
|
|
297
|
+
}
|
|
298
|
+
// TODO: support infinitely nested FROM table lookups.
|
|
299
|
+
// This currently only supports top-level table names in the FROM section
|
|
300
|
+
// of queries (eg. FROM "table_name", not "FROM (SELECT * FROM other) AS table_name")
|
|
301
|
+
const tableNamesInQuery = baseAst.from.map((tbl) => tbl.table);
|
|
302
|
+
return schema
|
|
303
|
+
.filter((t) => tableNamesInQuery.includes(t.displayName))
|
|
304
|
+
.flatMap((table) => table.columns
|
|
305
|
+
.map((c) => ({
|
|
306
|
+
...c,
|
|
307
|
+
table: table.displayName,
|
|
308
|
+
}))
|
|
309
|
+
.sort((a, b) => {
|
|
310
|
+
const aIsId = a.name.toLowerCase() === 'id' ||
|
|
311
|
+
a.name.toLowerCase().endsWith('_id') ||
|
|
312
|
+
a.name.endsWith('Id');
|
|
313
|
+
const bIsId = b.name.toLowerCase() === 'id' ||
|
|
314
|
+
b.name.toLowerCase().endsWith('_id') ||
|
|
315
|
+
b.name.endsWith('Id');
|
|
316
|
+
if (aIsId && !bIsId)
|
|
317
|
+
return 1;
|
|
318
|
+
if (bIsId && !aIsId)
|
|
319
|
+
return -1;
|
|
320
|
+
return 0;
|
|
321
|
+
}));
|
|
322
|
+
};
|
|
323
|
+
exports.getAllPossibleColumns = getAllPossibleColumns;
|
|
324
|
+
const createBasicSelectASTFromColumns = (columns, tableName) => {
|
|
325
|
+
return {
|
|
326
|
+
type: 'select',
|
|
327
|
+
options: null,
|
|
328
|
+
distinct: null,
|
|
329
|
+
columns: columns.map((column) => ({
|
|
330
|
+
expr: {
|
|
331
|
+
type: 'column_ref',
|
|
332
|
+
table: tableName,
|
|
333
|
+
// @ts-ignore
|
|
334
|
+
column: column.field || column.name,
|
|
335
|
+
},
|
|
336
|
+
as: null,
|
|
337
|
+
})),
|
|
338
|
+
from: [{ db: null, table: tableName, as: null }],
|
|
339
|
+
where: null,
|
|
340
|
+
groupby: null,
|
|
341
|
+
having: null,
|
|
342
|
+
orderby: null,
|
|
343
|
+
limit: null,
|
|
344
|
+
};
|
|
345
|
+
};
|
|
346
|
+
exports.createBasicSelectASTFromColumns = createBasicSelectASTFromColumns;
|
|
347
|
+
const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot, currentQuery) => {
|
|
348
|
+
let res, data, ast, newAst, pivot;
|
|
349
|
+
let numRetries = 0;
|
|
350
|
+
let whereAST;
|
|
351
|
+
const MAX_RETRIES = 3;
|
|
352
|
+
try {
|
|
353
|
+
console.log(`[Prompt]: ${aiPrompt}`);
|
|
354
|
+
let isTableJoin = !ast || !ast.from || ast.from.length !== 1;
|
|
355
|
+
while (isTableJoin || (0, exports.isSubquery)(ast?.where)) {
|
|
356
|
+
if (numRetries === MAX_RETRIES)
|
|
357
|
+
break;
|
|
358
|
+
if (!currentQuery || (ast && (isTableJoin || (0, exports.isSubquery)(ast?.where)))) {
|
|
359
|
+
res = await fetch(`${constants_1.QUILL_SERVER}/magic`, {
|
|
360
|
+
method: 'POST',
|
|
361
|
+
headers: { 'Content-Type': 'application/json' },
|
|
362
|
+
body: JSON.stringify({
|
|
363
|
+
initialQuestion: aiPrompt,
|
|
364
|
+
publicKey: client.publicKey,
|
|
365
|
+
useNewNodeSql: true, // new flag
|
|
366
|
+
}),
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
res = await fetch(`${constants_1.QUILL_SERVER}/magic/edit`, {
|
|
371
|
+
method: 'POST',
|
|
372
|
+
headers: { 'Content-Type': 'application/json' },
|
|
373
|
+
body: JSON.stringify({
|
|
374
|
+
sqlQuery: currentQuery,
|
|
375
|
+
initialQuestion: aiPrompt,
|
|
376
|
+
publicKey: client.publicKey,
|
|
377
|
+
useNewNodeSql: true, // new flag
|
|
378
|
+
}),
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
data = await res.json();
|
|
382
|
+
ast = data?.ast?.length ? data?.ast[0] : data?.ast;
|
|
383
|
+
// TODO: Debug invalid table joins in handleAsk
|
|
384
|
+
isTableJoin =
|
|
385
|
+
ast?.type !== 'bigquery' &&
|
|
386
|
+
(!ast || !ast.from || ast.from.length !== 1);
|
|
387
|
+
numRetries += 1;
|
|
388
|
+
}
|
|
389
|
+
if (numRetries === MAX_RETRIES) {
|
|
390
|
+
console.error('[Error]: Max retries exceeded.');
|
|
391
|
+
console.info(`%c[Prompt]: ${aiPrompt}`, 'color: dimgray');
|
|
392
|
+
throw new Error("Error: Couldn't process your request, please re-word your prompt.");
|
|
393
|
+
}
|
|
394
|
+
ast = ast.length ? ast[0] : ast;
|
|
395
|
+
newAst = (0, convert_1.convertBigQuery)(ast);
|
|
396
|
+
newAst = (0, convert_1.convertWildcardColumns)(newAst, schema); // must go before groupby
|
|
397
|
+
({ ast: newAst, pivot } = (0, convert_1.convertGroupBy)(newAst, schema, prevPivot));
|
|
398
|
+
newAst = (0, convert_1.convertStringComparison)(newAst, client.databaseType);
|
|
399
|
+
newAst = (0, convert_1.convertRemoveSimpleParentheses)(newAst);
|
|
400
|
+
const table = (0, ast_1.getTableNames)(newAst)[0];
|
|
401
|
+
if (!table) {
|
|
402
|
+
throw new Error('Table or table alias not found');
|
|
403
|
+
}
|
|
404
|
+
const processedName = table || '';
|
|
405
|
+
const tableInfo = schema.find((t) => t.name === processedName);
|
|
406
|
+
if (!tableInfo) {
|
|
407
|
+
throw new Error('Table info not found');
|
|
408
|
+
}
|
|
409
|
+
newAst = (0, convert_1.convertUnaryToBinary)(newAst);
|
|
410
|
+
newAst = (0, util_1.removeNonSelectedTableReferences)(newAst, processedName, tableInfo.columns.map((col) => col.name));
|
|
411
|
+
if (pivot) {
|
|
412
|
+
newAst = (0, util_1.deepCopy)({ ...newAst, orderby: null, limit: null });
|
|
413
|
+
}
|
|
414
|
+
whereAST = (0, util_1.deepCopy)(newAst.where);
|
|
415
|
+
}
|
|
416
|
+
catch (e) {
|
|
417
|
+
console.log(e);
|
|
418
|
+
if (e instanceof Error) {
|
|
419
|
+
return {
|
|
420
|
+
ast: null,
|
|
421
|
+
pivot: null,
|
|
422
|
+
whereAST: null,
|
|
423
|
+
error: "Error: Couldn't process your request, please re-word your prompt.",
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return { ast: newAst, pivot, whereAST };
|
|
428
|
+
};
|
|
429
|
+
exports.fetchAndProcessASTFromPrompt = fetchAndProcessASTFromPrompt;
|
|
430
|
+
const fetchASTFromQuillReport = async (report, client, schema) => {
|
|
431
|
+
let newAst;
|
|
432
|
+
let groupByPivot = null;
|
|
433
|
+
let schemaInfo = [];
|
|
434
|
+
try {
|
|
435
|
+
if (!report || report.referencedTables?.length !== 1) {
|
|
436
|
+
throw new Error('Report not found');
|
|
437
|
+
}
|
|
438
|
+
const url = `${constants_1.QUILL_SERVER}/astify`;
|
|
439
|
+
const result = await fetch(url, {
|
|
440
|
+
method: 'POST',
|
|
441
|
+
headers: {
|
|
442
|
+
'Content-Type': 'application/json',
|
|
443
|
+
},
|
|
444
|
+
body: JSON.stringify({ query: report.queryString, useNewNodeSql: true }),
|
|
445
|
+
});
|
|
446
|
+
const resp = await result.json();
|
|
447
|
+
if (resp.success === false) {
|
|
448
|
+
throw new Error("Couldn't process report query.");
|
|
449
|
+
}
|
|
450
|
+
const ast = getSelectFromAST(resp.ast);
|
|
451
|
+
let convertedAst = processStarColumn(ast, report.columns);
|
|
452
|
+
convertedAst = (0, convert_1.convertWildcardColumns)(convertedAst, schema); // must go before groupby
|
|
453
|
+
convertedAst = (0, convert_1.convertBigQuery)(convertedAst);
|
|
454
|
+
schemaInfo = schema;
|
|
455
|
+
if (!schemaInfo) {
|
|
456
|
+
const { schemaData } = await (0, schema_1.getSchemaInfoWithCustomFields)(client, 'rb');
|
|
457
|
+
schemaInfo = schemaData;
|
|
458
|
+
}
|
|
459
|
+
processApostrophe(convertedAst, ['type', 'value']);
|
|
460
|
+
convertedAst = (0, convert_1.convertBigQuery)(convertedAst);
|
|
461
|
+
({ ast: newAst, pivot: groupByPivot } = (0, convert_1.convertGroupBy)(convertedAst, schemaInfo, report.pivot ? report.pivot : undefined));
|
|
462
|
+
newAst = groupByPivot ? newAst : convertedAst;
|
|
463
|
+
}
|
|
464
|
+
catch (e) {
|
|
465
|
+
console.log(e);
|
|
466
|
+
if (e instanceof Error) {
|
|
467
|
+
return {
|
|
468
|
+
error: e.message,
|
|
469
|
+
ast: null,
|
|
470
|
+
pivot: null,
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
return { ast: newAst, pivot: groupByPivot, schema: schemaInfo };
|
|
475
|
+
};
|
|
476
|
+
exports.fetchASTFromQuillReport = fetchASTFromQuillReport;
|
|
@@ -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,uBAAuB,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,YAAY,0CAA0C,CAAC;AACpE,eAAO,MAAM,uBAAuB,MAAM,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MAX_PIVOT_UNIQUE_VALUES = exports.MAX_COLUMN_ROWS_LIMIT = void 0;
|
|
3
|
+
exports.MAX_PIVOT_UNIQUE_VALUES = exports.QUILL_SERVER = exports.MAX_COLUMN_ROWS_LIMIT = void 0;
|
|
4
4
|
exports.MAX_COLUMN_ROWS_LIMIT = 500;
|
|
5
|
+
exports.QUILL_SERVER = 'https://quill-344421.uc.r.appspot.com';
|
|
5
6
|
exports.MAX_PIVOT_UNIQUE_VALUES = 250;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export declare function getData(client: any, cloudQueryEndpoint: string, noCred: RequestCredentials, hostedRequestBody: any, cloudRequestBody: any, method?: string, queryParam?: string): Promise<any>;
|
|
2
2
|
export declare function getDataFromCloud(client: any, cloudQueryEndpoint: string, cloudRequestBody: any, method?: string): Promise<any>;
|
|
3
|
+
export declare function fetchSqlQuery(ast: any, client: any, formData?: any): Promise<{
|
|
4
|
+
query: string;
|
|
5
|
+
error?: string;
|
|
6
|
+
}>;
|
|
3
7
|
//# sourceMappingURL=dataFetcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AA6EA,wBAAsB,OAAO,CAC3B,MAAM,EAAE,GAAG,EACX,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,UAAU,CAAC,EAAE,MAAM,gBA6IpB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,GAAG,EACX,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,gBAgChB;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,GAAG,EACX,QAAQ,CAAC,EAAE,GAAG,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB5C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDataFromCloud = exports.getData = void 0;
|
|
3
|
+
exports.fetchSqlQuery = exports.getDataFromCloud = exports.getData = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
4
5
|
function fetchQuillData(responseData) {
|
|
5
6
|
if (!responseData) {
|
|
6
7
|
return null;
|
|
@@ -208,3 +209,25 @@ async function getDataFromCloud(client, cloudQueryEndpoint, cloudRequestBody, me
|
|
|
208
209
|
}
|
|
209
210
|
}
|
|
210
211
|
exports.getDataFromCloud = getDataFromCloud;
|
|
212
|
+
async function fetchSqlQuery(ast, client, formData) {
|
|
213
|
+
try {
|
|
214
|
+
const where = formData ? formData : ast?.where || null;
|
|
215
|
+
const response = await fetch(`${constants_1.QUILL_SERVER}/sqlify`, {
|
|
216
|
+
method: 'POST',
|
|
217
|
+
headers: {
|
|
218
|
+
'Content-Type': 'application/json',
|
|
219
|
+
},
|
|
220
|
+
body: JSON.stringify({
|
|
221
|
+
ast: { ...ast, where },
|
|
222
|
+
publicKey: client.publicKey,
|
|
223
|
+
useNewNodeSql: true, // new flag
|
|
224
|
+
}),
|
|
225
|
+
});
|
|
226
|
+
const data = await response.json();
|
|
227
|
+
return { query: data.query };
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
return { query: '', error: 'Failed to fetch query' };
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
exports.fetchSqlQuery = fetchSqlQuery;
|
|
@@ -14,7 +14,7 @@ export declare function getComparisonInterval(comparisonRange: {
|
|
|
14
14
|
export declare function getDateBucketFromRange(dateRange: {
|
|
15
15
|
start: Date;
|
|
16
16
|
end: Date;
|
|
17
|
-
}): "month" | "week" | "
|
|
17
|
+
}): "month" | "week" | "day" | "year";
|
|
18
18
|
export declare function parseDateByDatabaseType(date: any, databaseType: string): Date;
|
|
19
19
|
export declare function getDateFormatFromBucket(dateBucket: string): string;
|
|
20
20
|
//# sourceMappingURL=dates.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Filter } from '../models/Filter';
|
|
1
|
+
import { FieldTypes, Filter } from '../models/Filter';
|
|
2
2
|
export declare function findAndProcessDateFilter(filters: any[]): any;
|
|
3
3
|
export declare function processFilterFromBackend(filter: any): any;
|
|
4
4
|
export declare function updateFilter(filter: any, value?: any, comparison?: any): any;
|
|
5
|
-
export declare const getType: (t: string) =>
|
|
5
|
+
export declare const getType: (t: string) => FieldTypes.String | FieldTypes.Number | FieldTypes.Date | FieldTypes.Boolean;
|
|
6
6
|
/**
|
|
7
7
|
* Returns a sentence to describe a Filter
|
|
8
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,UAAU,EACV,MAAM,EAEP,MAAM,kBAAkB,CAAC;AAG1B,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,GAAE,GAAU,EACjB,UAAU,GAAE,GAAU,OAuGvB;AAGD,eAAO,MAAM,OAAO,MAAO,MAAM,iFAwDhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAwBrD"}
|
|
@@ -167,7 +167,7 @@ const getType = (t) => {
|
|
|
167
167
|
case 'longtext':
|
|
168
168
|
case 'longblob':
|
|
169
169
|
case 'text':
|
|
170
|
-
return
|
|
170
|
+
return Filter_1.FieldTypes.String;
|
|
171
171
|
case 'numeric':
|
|
172
172
|
case 'bit':
|
|
173
173
|
case 'tinybit':
|
|
@@ -185,7 +185,7 @@ const getType = (t) => {
|
|
|
185
185
|
case 'smallmoney':
|
|
186
186
|
case 'money':
|
|
187
187
|
case 'real':
|
|
188
|
-
return
|
|
188
|
+
return Filter_1.FieldTypes.Number;
|
|
189
189
|
case 'date':
|
|
190
190
|
case 'datetime':
|
|
191
191
|
case 'datetime2':
|
|
@@ -195,12 +195,12 @@ const getType = (t) => {
|
|
|
195
195
|
case 'timestamptz':
|
|
196
196
|
case 'time':
|
|
197
197
|
case 'year':
|
|
198
|
-
return
|
|
198
|
+
return Filter_1.FieldTypes.Date;
|
|
199
199
|
case 'bool':
|
|
200
200
|
case 'boolean':
|
|
201
|
-
return
|
|
201
|
+
return Filter_1.FieldTypes.Boolean;
|
|
202
202
|
default:
|
|
203
|
-
return
|
|
203
|
+
return Filter_1.FieldTypes.String;
|
|
204
204
|
}
|
|
205
205
|
};
|
|
206
206
|
exports.getType = getType;
|
|
@@ -209,7 +209,7 @@ exports.getType = getType;
|
|
|
209
209
|
*/
|
|
210
210
|
function filterSentence(filter) {
|
|
211
211
|
let value = '';
|
|
212
|
-
if (filter.
|
|
212
|
+
if (filter.filterType == Filter_1.FilterNames.NullFilter) {
|
|
213
213
|
return `${(0, textProcessing_1.snakeAndCamelCaseToTitleCase)(filter.field)} ${filter.operator}`;
|
|
214
214
|
}
|
|
215
215
|
else if (filter.value === null || filter.value === undefined) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Pivot } from '../
|
|
1
|
+
import { Pivot } from '../models/Pivot';
|
|
2
2
|
import { QuillReportInternal } from '../models/Report';
|
|
3
3
|
export declare function generatePivotWithSQL(pivot: Pivot, report: QuillReportInternal, client: any, dateBucket?: string, dateFilter?: any, distinctStrings?: any): Promise<{
|
|
4
4
|
rows: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,GAAG,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,GAAG,EAChB,eAAe,CAAC,EAAE,GAAG;;;eAgMtB"}
|
|
@@ -87,15 +87,17 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
|
|
|
87
87
|
}
|
|
88
88
|
return 0;
|
|
89
89
|
});
|
|
90
|
-
if (pivot.rowField &&
|
|
90
|
+
if (pivot.rowField &&
|
|
91
|
+
!['string', 'varchar'].includes(pivot.rowFieldType || '')) {
|
|
91
92
|
rows.forEach((row) => {
|
|
92
|
-
row[pivot.rowField] = (0, PivotModal_1.getDateString)(row[pivot.rowField], undefined, dateBucket);
|
|
93
|
+
row[pivot.rowField || ''] = (0, PivotModal_1.getDateString)(row[pivot.rowField || ''], undefined, dateBucket);
|
|
93
94
|
});
|
|
94
95
|
// add a row for each date in the range that doesn't have a value
|
|
95
96
|
if (pivot.rowField &&
|
|
97
|
+
pivot.rowFieldType &&
|
|
96
98
|
!['string', 'varchar'].includes(pivot.rowFieldType) &&
|
|
97
99
|
dateFilter) {
|
|
98
|
-
const dateSet = new Set(rows.map((row) => row[pivot.rowField]));
|
|
100
|
+
const dateSet = new Set(rows.map((row) => row[pivot.rowField || '']));
|
|
99
101
|
// create a loop that will go through each formatted date and add a row if it doesn't exist going to the current date
|
|
100
102
|
for (let date = dateFilter.start ?? dateFilter.startDate; date <= dateFilter.end; date = new Date(date.getTime() + 24 * 60 * 60 * 1000)) {
|
|
101
103
|
const formattedDate = (0, PivotModal_1.getDateString)(date.toDateString(), undefined, dateBucket);
|
|
@@ -107,7 +109,8 @@ async function generatePivotWithSQL(pivot, report, client, dateBucket, dateFilte
|
|
|
107
109
|
}
|
|
108
110
|
// order the rows by the date field
|
|
109
111
|
rows.sort((a, b) => {
|
|
110
|
-
return new Date(a[pivot.rowField]) <
|
|
112
|
+
return new Date(a[pivot.rowField || '']) <
|
|
113
|
+
new Date(b[pivot.rowField || ''])
|
|
111
114
|
? -1
|
|
112
115
|
: 1;
|
|
113
116
|
});
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { Pivot } from '../internals/ReportBuilder/PivotModal';
|
|
2
1
|
import { ColumnInternal } from '../models/Columns';
|
|
2
|
+
import { Pivot } from '../models/Pivot';
|
|
3
|
+
import { UniqueValuesByColumn } from '../models/Tables';
|
|
3
4
|
export declare function pivotToSql(pivot: Pivot, query: string, columns: ColumnInternal[]): string;
|
|
4
5
|
export declare function isValidPivot(pivot: Pivot): boolean;
|
|
5
|
-
export declare function getPossiblePivotFieldOptions(columns: ColumnInternal[], uniqueValues: {
|
|
6
|
-
[field: string]: any;
|
|
7
|
-
}): {
|
|
6
|
+
export declare function getPossiblePivotFieldOptions(columns: ColumnInternal[], uniqueValues: UniqueValuesByColumn): {
|
|
8
7
|
rowFields: string[];
|
|
9
8
|
columnFields: string[];
|
|
10
9
|
valueFields: string[];
|
|
@@ -14,4 +13,5 @@ export declare function cleanPivot(pivot: Pivot, possibleColumns: {
|
|
|
14
13
|
columnFields: any;
|
|
15
14
|
valueFields: any;
|
|
16
15
|
}): Pivot;
|
|
16
|
+
export declare const isPivotPossible: (fields: any, pivot: Pivot) => boolean;
|
|
17
17
|
//# sourceMappingURL=pivotProcessing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxD,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EAAE,GACxB,MAAM,CAuCR;AAkBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,WA0BxC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,EAAE,oBAAoB;;;;EA4CnC;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CAqCP;AAED,eAAO,MAAM,eAAe,WAAY,GAAG,SAAS,KAAK,YA8BxD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cleanPivot = exports.getPossiblePivotFieldOptions = exports.isValidPivot = exports.pivotToSql = void 0;
|
|
3
|
+
exports.isPivotPossible = exports.cleanPivot = exports.getPossiblePivotFieldOptions = exports.isValidPivot = exports.pivotToSql = void 0;
|
|
4
4
|
const util_1 = require("../components/ReportBuilder/util");
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
6
|
const valueFormatter_1 = require("./valueFormatter");
|
|
@@ -29,7 +29,9 @@ function pivotToSql(pivot, query, columns) {
|
|
|
29
29
|
pivot.valueField &&
|
|
30
30
|
processedAggType) {
|
|
31
31
|
// 2-d pivot
|
|
32
|
-
const sqlQuery = generateTwoDPivotQuery(
|
|
32
|
+
const sqlQuery = generateTwoDPivotQuery(
|
|
33
|
+
// @ts-ignore
|
|
34
|
+
{ ...pivot, aggregationType: processedAggType }, query, columns);
|
|
33
35
|
return sqlQuery;
|
|
34
36
|
}
|
|
35
37
|
return query;
|
|
@@ -140,3 +142,20 @@ function cleanPivot(pivot, possibleColumns) {
|
|
|
140
142
|
return pivot;
|
|
141
143
|
}
|
|
142
144
|
exports.cleanPivot = cleanPivot;
|
|
145
|
+
const isPivotPossible = (fields, pivot) => {
|
|
146
|
+
let validPivot = true;
|
|
147
|
+
if (pivot.rowField &&
|
|
148
|
+
!fields.find((field) => field.name === pivot.rowField || field.field === pivot.rowField)) {
|
|
149
|
+
validPivot = false;
|
|
150
|
+
}
|
|
151
|
+
if (pivot.valueField &&
|
|
152
|
+
!fields.find((field) => field.name === pivot.valueField || field.field === pivot.valueField)) {
|
|
153
|
+
validPivot = false;
|
|
154
|
+
}
|
|
155
|
+
if (pivot.columnField &&
|
|
156
|
+
!fields.find((field) => field.name === pivot.columnField || field.field === pivot.columnField)) {
|
|
157
|
+
validPivot = false;
|
|
158
|
+
}
|
|
159
|
+
return validPivot;
|
|
160
|
+
};
|
|
161
|
+
exports.isPivotPossible = isPivotPossible;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Pivot } from '../
|
|
1
|
+
import { Pivot } from '../models/Pivot';
|
|
2
2
|
export declare function processColumnReference(column: string, databaseType: string, fallbackOnNull?: string): string;
|
|
3
3
|
export declare function generateCountQuery(fields: string[], query: string, databaseType: string): string;
|
|
4
4
|
export declare function generateDistinctQuery(stringFields: string[], query: string, databaseType: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,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;AAmBxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,UAiBxB;AAgDD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAUrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UASrB;AAED,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,GAClB,MAAM,GAAG,SAAS,CAwBpB"}
|
|
@@ -110,7 +110,7 @@ function create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, compar
|
|
|
110
110
|
if (!columnFieldValues) {
|
|
111
111
|
return undefined;
|
|
112
112
|
}
|
|
113
|
-
if (['string', 'varchar'].includes(pivot.rowFieldType) ||
|
|
113
|
+
if (['string', 'varchar'].includes(pivot.rowFieldType || '') ||
|
|
114
114
|
!pivot.rowFieldType) {
|
|
115
115
|
return create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType);
|
|
116
116
|
}
|
|
@@ -172,7 +172,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
|
|
|
172
172
|
${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}`;
|
|
173
173
|
}
|
|
174
174
|
function create1DPivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval) {
|
|
175
|
-
if (['string', 'varchar'].includes(pivot.rowFieldType) ||
|
|
175
|
+
if (['string', 'varchar'].includes(pivot.rowFieldType || '') ||
|
|
176
176
|
!pivot.rowFieldType) {
|
|
177
177
|
return create1DStringPivotQuery(pivot, itemQueries, databaseType);
|
|
178
178
|
}
|
|
@@ -197,7 +197,7 @@ function create1DStringPivotQuery(pivot, itemQueries, databaseType) {
|
|
|
197
197
|
${joinQuery}`;
|
|
198
198
|
}
|
|
199
199
|
function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval) {
|
|
200
|
-
const rowField = pivot.rowField;
|
|
200
|
+
const rowField = pivot.rowField || '';
|
|
201
201
|
const valueField = pivot.valueField;
|
|
202
202
|
const compareCTE = itemQueries[1] && comparisonInterval
|
|
203
203
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
@@ -1,5 +1,26 @@
|
|
|
1
|
+
import { TableInfo } from '../components/ReportBuilder/schema';
|
|
2
|
+
import { ColumnInternal } from '../models/Columns';
|
|
3
|
+
import { Pivot } from '../models/Pivot';
|
|
1
4
|
import { QuillReport, QuillReportInternal } from '../models/Report';
|
|
5
|
+
import { DateRangesByColumn, UniqueValuesByTable } from '../models/Tables';
|
|
2
6
|
import { AdditionalProcessing } from './tableProcessing';
|
|
7
|
+
export type ReportBuilderInfo = {
|
|
8
|
+
rows: any[];
|
|
9
|
+
columns: ColumnInternal[];
|
|
10
|
+
rowCount: number;
|
|
11
|
+
pivot: Pivot | null;
|
|
12
|
+
pivotData: {
|
|
13
|
+
rows: any[];
|
|
14
|
+
columns: ColumnInternal[];
|
|
15
|
+
} | null;
|
|
16
|
+
formattedRows: any[];
|
|
17
|
+
report: QuillReportInternal;
|
|
18
|
+
table: string;
|
|
19
|
+
uniqueValues: UniqueValuesByTable;
|
|
20
|
+
dateRanges: DateRangesByColumn;
|
|
21
|
+
query: string;
|
|
22
|
+
error?: string;
|
|
23
|
+
};
|
|
3
24
|
export declare const EMPTY_REPORT: QuillReport;
|
|
4
25
|
export declare function fetchReport(reportId: string, client: any, useReportTask?: boolean, filters?: any[], additionalProcessing?: AdditionalProcessing, dateBucket?: string, customFields?: any): Promise<{
|
|
5
26
|
report: QuillReportInternal;
|
|
@@ -7,4 +28,8 @@ export declare function fetchReport(reportId: string, client: any, useReportTask
|
|
|
7
28
|
}>;
|
|
8
29
|
export declare const formatRowsFromReport: (report: any) => any;
|
|
9
30
|
export declare function convertInternalReportToReport(report: QuillReportInternal): QuillReport;
|
|
31
|
+
export declare const fetchReportBuilderDataFromAST: (baseAst: any, formData: any, schema: TableInfo[], client: any, pivot?: Pivot, previousFormData?: any, currentTable?: string, previousRelevant?: {
|
|
32
|
+
uniqueStrings: UniqueValuesByTable;
|
|
33
|
+
dateRanges: DateRangesByColumn;
|
|
34
|
+
}, report?: QuillReportInternal, customFields?: any) => Promise<ReportBuilderInfo>;
|
|
10
35
|
//# sourceMappingURL=report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAa3E,OAAO,EACL,oBAAoB,EAGrB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,aAAa,EAAE,GAAG,EAAE,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,mBAAmB,CAAC;IAClC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,WAkB1B,CAAC;AAEF,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,EACX,aAAa,UAAO,EACpB,OAAO,GAAE,GAAG,EAAO,EACnB,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,GAAG,GACjB,OAAO,CAAC;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0G1D;AAED,eAAO,MAAM,oBAAoB,WAAY,GAAG,QAkB/C,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,mBAAmB,GAC1B,WAAW,CAsDb;AAED,eAAO,MAAM,6BAA6B,YAC/B,GAAG,YACF,GAAG,UACL,SAAS,EAAE,UACX,GAAG,UACH,KAAK,qBACM,GAAG,iBACP,MAAM,qBACF;IACjB,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,kBAAkB,CAAC;CAChC,WACQ,mBAAmB,iBACb,GAAG,KACjB,QAAQ,iBAAiB,CAmI3B,CAAC"}
|