@quillsql/react 2.13.40 → 2.13.42
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 +5 -1
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +51 -28
- package/dist/cjs/ChartBuilder.d.ts +30 -3
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +483 -182
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +11 -1
- package/dist/cjs/Context.d.ts +16 -4
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +95 -46
- package/dist/cjs/Dashboard.d.ts +6 -3
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +69 -28
- package/dist/cjs/QuillProvider.d.ts +4 -8
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.d.ts +2 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +190 -48
- package/dist/cjs/SQLEditor.d.ts +8 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +94 -10
- package/dist/cjs/Table.d.ts +21 -1
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +30 -192
- package/dist/cjs/components/Chart/BarChart.d.ts +5 -1
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +4 -3
- package/dist/cjs/components/Chart/CustomReferenceLine.d.ts +2 -0
- package/dist/cjs/components/Chart/CustomReferenceLine.d.ts.map +1 -0
- package/dist/cjs/components/Chart/CustomReferenceLine.js +26 -0
- package/dist/cjs/components/Chart/GaugeChart.d.ts +11 -0
- package/dist/cjs/components/Chart/GaugeChart.d.ts.map +1 -0
- package/dist/cjs/components/Chart/GaugeChart.js +198 -0
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +14 -11
- package/dist/cjs/components/Chart/LineChart.d.ts +5 -1
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +4 -3
- package/dist/cjs/components/Chart/MapChart.d.ts +36 -0
- package/dist/cjs/components/Chart/MapChart.d.ts.map +1 -0
- package/dist/cjs/components/Chart/MapChart.js +548 -0
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +114 -42
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +57 -54
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +5 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +5 -4
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +12 -11
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +2 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +13 -13
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.js +4 -4
- package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -0
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +28 -7
- package/dist/cjs/components/ReportBuilder/util.d.ts +1 -1
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +15 -2
- package/dist/cjs/components/UiComponents.d.ts +5 -2
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +34 -7
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +11 -9
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +18 -4
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +16 -3
- package/dist/cjs/hooks/useReport.d.ts.map +1 -1
- package/dist/cjs/hooks/useReport.js +1 -7
- package/dist/cjs/hooks/useVirtualTables.d.ts +6 -2
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.js +5 -2
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +7 -8
- package/dist/cjs/models/Columns.d.ts +1 -0
- package/dist/cjs/models/Columns.d.ts.map +1 -1
- package/dist/cjs/models/Filter.d.ts +20 -13
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Filter.js +161 -87
- package/dist/cjs/models/Report.d.ts +12 -1
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/models/Schema.d.ts +12 -1
- package/dist/cjs/models/Schema.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +22 -22
- package/dist/cjs/utils/astProcessing.d.ts +2 -2
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +25 -6
- package/dist/cjs/utils/axisFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/axisFormatter.js +25 -0
- package/dist/cjs/utils/color.d.ts +159 -0
- package/dist/cjs/utils/color.d.ts.map +1 -1
- package/dist/cjs/utils/color.js +14 -5
- package/dist/cjs/utils/columnProcessing.js +3 -3
- 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/dashboard.d.ts +14 -3
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +79 -16
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +3 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +9 -9
- package/dist/cjs/utils/getDomain.d.ts +4 -1
- package/dist/cjs/utils/getDomain.d.ts.map +1 -1
- package/dist/cjs/utils/getDomain.js +11 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +9 -6
- 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 +83 -49
- package/dist/cjs/utils/report.d.ts +23 -5
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +36 -14
- package/dist/cjs/utils/schema.d.ts +28 -3
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +79 -43
- package/dist/cjs/utils/tableProcessing.d.ts +12 -3
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +36 -8
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +0 -1
- package/dist/cjs/utils/valueFormatter.d.ts +1 -0
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +55 -1
- package/dist/esm/Chart.d.ts +5 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +52 -29
- package/dist/esm/ChartBuilder.d.ts +30 -3
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +487 -187
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +11 -1
- package/dist/esm/Context.d.ts +16 -4
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +97 -48
- package/dist/esm/Dashboard.d.ts +6 -3
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +70 -29
- package/dist/esm/QuillProvider.d.ts +4 -8
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.d.ts +2 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +192 -50
- package/dist/esm/SQLEditor.d.ts +8 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +95 -11
- package/dist/esm/Table.d.ts +21 -1
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +34 -196
- package/dist/esm/components/Chart/BarChart.d.ts +5 -1
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +5 -4
- package/dist/esm/components/Chart/CustomReferenceLine.d.ts +2 -0
- package/dist/esm/components/Chart/CustomReferenceLine.d.ts.map +1 -0
- package/dist/esm/components/Chart/CustomReferenceLine.js +23 -0
- package/dist/esm/components/Chart/GaugeChart.d.ts +11 -0
- package/dist/esm/components/Chart/GaugeChart.d.ts.map +1 -0
- package/dist/esm/components/Chart/GaugeChart.js +195 -0
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +14 -11
- package/dist/esm/components/Chart/LineChart.d.ts +5 -1
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +5 -4
- package/dist/esm/components/Chart/MapChart.d.ts +36 -0
- package/dist/esm/components/Chart/MapChart.d.ts.map +1 -0
- package/dist/esm/components/Chart/MapChart.js +541 -0
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +114 -42
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +57 -54
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +5 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +5 -4
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +12 -11
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +2 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +14 -14
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterStack.js +4 -4
- package/dist/esm/components/ReportBuilder/convert.d.ts +2 -0
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +26 -7
- package/dist/esm/components/ReportBuilder/util.d.ts +1 -1
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +15 -2
- package/dist/esm/components/UiComponents.d.ts +5 -2
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +32 -6
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +11 -9
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +19 -5
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +16 -3
- package/dist/esm/hooks/useReport.d.ts.map +1 -1
- package/dist/esm/hooks/useReport.js +1 -7
- package/dist/esm/hooks/useVirtualTables.d.ts +6 -2
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/esm/hooks/useVirtualTables.js +6 -3
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +7 -8
- package/dist/esm/models/Columns.d.ts +1 -0
- package/dist/esm/models/Columns.d.ts.map +1 -1
- package/dist/esm/models/Filter.d.ts +20 -13
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Filter.js +160 -86
- package/dist/esm/models/Report.d.ts +12 -1
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/models/Schema.d.ts +12 -1
- package/dist/esm/models/Schema.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +23 -23
- package/dist/esm/utils/astProcessing.d.ts +2 -2
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +25 -6
- package/dist/esm/utils/axisFormatter.d.ts.map +1 -1
- package/dist/esm/utils/axisFormatter.js +25 -0
- package/dist/esm/utils/color.d.ts +159 -0
- package/dist/esm/utils/color.d.ts.map +1 -1
- package/dist/esm/utils/color.js +8 -2
- package/dist/esm/utils/columnProcessing.js +3 -3
- 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/dashboard.d.ts +14 -3
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +80 -17
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +3 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +10 -10
- package/dist/esm/utils/getDomain.d.ts +4 -1
- package/dist/esm/utils/getDomain.d.ts.map +1 -1
- package/dist/esm/utils/getDomain.js +11 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +9 -6
- 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 +83 -49
- package/dist/esm/utils/report.d.ts +23 -5
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +38 -16
- package/dist/esm/utils/schema.d.ts +28 -3
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +78 -43
- package/dist/esm/utils/tableProcessing.d.ts +12 -3
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +36 -8
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +0 -1
- package/dist/esm/utils/valueFormatter.d.ts +1 -0
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +53 -0
- package/package.json +10 -3
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getTableNames } from '../components/ReportBuilder/ast';
|
|
2
2
|
import { convertBigQuery, convertGroupBy, convertOrderBy, convertRemoveSimpleParentheses, convertStringComparison, convertUnaryToBinary, convertWildcardColumns, } from '../components/ReportBuilder/convert';
|
|
3
3
|
import { deepCopy, removeNonSelectedTableReferences, removeTableNameAlias, } from '../components/ReportBuilder/util';
|
|
4
|
+
import { getFieldFromExpression } from './astFilterProcessing';
|
|
4
5
|
import { QUILL_SERVER } from './constants';
|
|
5
6
|
import { getUniqueStringValues } from './tableProcessing';
|
|
6
7
|
export function getSelectFromAST(ast) {
|
|
@@ -169,9 +170,10 @@ export function getColumnAndTableInfo(tableAliasMap, column, schemaInfo) {
|
|
|
169
170
|
}
|
|
170
171
|
return { tableName, columnName };
|
|
171
172
|
}
|
|
172
|
-
export function getColumnsByTableFromASTAndSchema(ast, tables, tableAliasMap) {
|
|
173
|
+
export function getColumnsByTableFromASTAndSchema(ast, tables, tableAliasMap, skipStar = false) {
|
|
173
174
|
const referencedColumns = {};
|
|
174
|
-
if (
|
|
175
|
+
if (!skipStar &&
|
|
176
|
+
(ast?.columns === '*' || ast?.columns?.[0]?.expr?.column === '*')) {
|
|
175
177
|
// Be sure to select everything from stars
|
|
176
178
|
const tableList = ast.from.map((table) => recursiveSearchByKey(table, 'table'));
|
|
177
179
|
tableList.forEach((table) => {
|
|
@@ -251,6 +253,23 @@ export function getColumnsByTableFromASTAndSchema(ast, tables, tableAliasMap) {
|
|
|
251
253
|
}
|
|
252
254
|
});
|
|
253
255
|
}
|
|
256
|
+
// Look through the orderby's
|
|
257
|
+
if (ast.orderby) {
|
|
258
|
+
const allColumnReferencesInOrderBy = ast.orderby.map((orderby) => ({
|
|
259
|
+
field: getFieldFromExpression(orderby.expr ?? orderby),
|
|
260
|
+
table: orderby.expr?.table,
|
|
261
|
+
}));
|
|
262
|
+
allColumnReferencesInOrderBy.forEach((column) => {
|
|
263
|
+
const table = column.table || ast.from?.length === 1 ? ast.from[0].table : '';
|
|
264
|
+
if (!table) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (!referencedColumns[table]) {
|
|
268
|
+
referencedColumns[table] = [];
|
|
269
|
+
}
|
|
270
|
+
referencedColumns[table].push(column.field);
|
|
271
|
+
});
|
|
272
|
+
}
|
|
254
273
|
for (const table in referencedColumns) {
|
|
255
274
|
referencedColumns[table] = Array.from(new Set(referencedColumns[table]));
|
|
256
275
|
}
|
|
@@ -377,7 +396,7 @@ export const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, pre
|
|
|
377
396
|
}
|
|
378
397
|
ast = ast.length ? ast[0] : ast;
|
|
379
398
|
newAst = convertBigQuery(ast);
|
|
380
|
-
newAst = removeTableNameAlias(newAst);
|
|
399
|
+
newAst = removeTableNameAlias(newAst, schema);
|
|
381
400
|
newAst = convertWildcardColumns(newAst, schema); // must go before groupby
|
|
382
401
|
({ ast: newAst, pivot } = convertGroupBy(newAst, schema, prevPivot, prevTable));
|
|
383
402
|
newAst = convertOrderBy(newAst, schema);
|
|
@@ -471,7 +490,7 @@ const POSTGRES_DATE_TYPES = [
|
|
|
471
490
|
'time',
|
|
472
491
|
'timetz',
|
|
473
492
|
];
|
|
474
|
-
export function getTablesHelper(ast, allTables) {
|
|
493
|
+
export function getTablesHelper(ast, allTables, skipStar) {
|
|
475
494
|
const tableAliasMap = createTableNameToTableAliasMap(ast);
|
|
476
495
|
const tablesInQuery = Object.values(tableAliasMap);
|
|
477
496
|
// Remove all aliased tables (with statements and subqueries)
|
|
@@ -479,7 +498,7 @@ export function getTablesHelper(ast, allTables) {
|
|
|
479
498
|
.filter((table) => tablesInQuery.includes(table.displayName))
|
|
480
499
|
.map((table) => table.displayName);
|
|
481
500
|
// Get non with statement column references
|
|
482
|
-
let referencedColumns = getColumnsByTableFromASTAndSchema(ast, allTables, tableAliasMap);
|
|
501
|
+
let referencedColumns = getColumnsByTableFromASTAndSchema(ast, allTables, tableAliasMap, skipStar);
|
|
483
502
|
referencedColumns = Object.keys(referencedColumns)
|
|
484
503
|
.filter((table) => onlyReferenceTables.includes(table))
|
|
485
504
|
.reduce((obj, key) => {
|
|
@@ -491,7 +510,7 @@ export function getTablesHelper(ast, allTables) {
|
|
|
491
510
|
for (const withStmt of ast.with) {
|
|
492
511
|
const astFrom = withStmt.stmt.from ?? withStmt.stmt.ast.from;
|
|
493
512
|
if (astFrom) {
|
|
494
|
-
const withReferencedColumns = getColumnsByTableFromASTAndSchema(withStmt.stmt.ast ?? withStmt.stmt, allTables, tableAliasMap);
|
|
513
|
+
const withReferencedColumns = getColumnsByTableFromASTAndSchema(withStmt.stmt.ast ?? withStmt.stmt, allTables, tableAliasMap, skipStar);
|
|
495
514
|
// @ts-ignore
|
|
496
515
|
Object.keys(withReferencedColumns).forEach((tableName) => {
|
|
497
516
|
if (referencedColumns[tableName]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,6BAA8B,KAAK,KAAG,
|
|
1
|
+
{"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,6BAA8B,KAAK,KAAG,MA4C/D,CAAC"}
|
|
@@ -23,6 +23,10 @@ export const axisFormatter = ({ value, field, fields }) => {
|
|
|
23
23
|
return formatDollarAmount(value);
|
|
24
24
|
case 'whole_number':
|
|
25
25
|
return formatWholeNumber(value);
|
|
26
|
+
case 'two_decimal_places':
|
|
27
|
+
return formatDecimal2(value);
|
|
28
|
+
case 'one_decimal_place':
|
|
29
|
+
return formatDecimal1(value);
|
|
26
30
|
case 'string':
|
|
27
31
|
return formatString(value);
|
|
28
32
|
case 'yyyy':
|
|
@@ -60,6 +64,26 @@ const formatString = (value) => {
|
|
|
60
64
|
}
|
|
61
65
|
return value.toString();
|
|
62
66
|
};
|
|
67
|
+
const formatterDecimal2 = new Intl.NumberFormat('en-US', {
|
|
68
|
+
style: 'decimal',
|
|
69
|
+
maximumFractionDigits: 2,
|
|
70
|
+
});
|
|
71
|
+
/**
|
|
72
|
+
* Formats the value as a number with two decimal places.
|
|
73
|
+
*/
|
|
74
|
+
const formatDecimal2 = (value) => {
|
|
75
|
+
return formatterDecimal2.format(Number(value));
|
|
76
|
+
};
|
|
77
|
+
const formatterDecimal1 = new Intl.NumberFormat('en-US', {
|
|
78
|
+
style: 'decimal',
|
|
79
|
+
maximumFractionDigits: 1,
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* Formats the value as a number with one decimal place.
|
|
83
|
+
*/
|
|
84
|
+
const formatDecimal1 = (value) => {
|
|
85
|
+
return formatterDecimal1.format(Number(value));
|
|
86
|
+
};
|
|
63
87
|
// Formats large numbers like 12345.67 -> $12K
|
|
64
88
|
const formatterBigDollars = new Intl.NumberFormat('en-US', {
|
|
65
89
|
style: 'currency',
|
|
@@ -99,6 +123,7 @@ const formatDollarAmount = (value) => {
|
|
|
99
123
|
const formatterBigWholeNumber = new Intl.NumberFormat('en-US', {
|
|
100
124
|
minimumSignificantDigits: 1,
|
|
101
125
|
maximumSignificantDigits: 2,
|
|
126
|
+
maximumFractionDigits: 0,
|
|
102
127
|
notation: 'compact',
|
|
103
128
|
compactDisplay: 'short',
|
|
104
129
|
});
|
|
@@ -15,7 +15,166 @@ export type Color = (typeof colorValues)[number];
|
|
|
15
15
|
* @param index the index of this element in colors
|
|
16
16
|
*/
|
|
17
17
|
export declare function selectColor(element: any, colors: string[], index: number): string;
|
|
18
|
+
/**
|
|
19
|
+
* Transform a hex string to an RGB array.
|
|
20
|
+
*
|
|
21
|
+
* Examples:
|
|
22
|
+
* - #8661f2 -> [134, 97, 242]
|
|
23
|
+
* - #1661ea2e -> [22, 97, 234, 46]
|
|
24
|
+
*
|
|
25
|
+
* TODO: Add support for triplet-style hex codes like this:
|
|
26
|
+
* - #123 -> #112233 -> [17, 34, 51]
|
|
27
|
+
*/
|
|
28
|
+
export declare function hexToRGB(hex: string): number[];
|
|
29
|
+
export declare function RGBToHex(rgb: number[]): string;
|
|
18
30
|
export declare function namedColorToHex(color: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* A comprehensive map of all the CSS named-colors that modern browsers will
|
|
33
|
+
* recognize, and converts them into their hex values.
|
|
34
|
+
*/
|
|
35
|
+
export declare const COLOR_TO_HEX: {
|
|
36
|
+
aliceblue: string;
|
|
37
|
+
antiquewhite: string;
|
|
38
|
+
aqua: string;
|
|
39
|
+
aquamarine: string;
|
|
40
|
+
azure: string;
|
|
41
|
+
beige: string;
|
|
42
|
+
bisque: string;
|
|
43
|
+
black: string;
|
|
44
|
+
blanchedalmond: string;
|
|
45
|
+
blue: string;
|
|
46
|
+
blueviolet: string;
|
|
47
|
+
brown: string;
|
|
48
|
+
burlywood: string;
|
|
49
|
+
cadetblue: string;
|
|
50
|
+
chartreuse: string;
|
|
51
|
+
chocolate: string;
|
|
52
|
+
coral: string;
|
|
53
|
+
cornflowerblue: string;
|
|
54
|
+
cornsilk: string;
|
|
55
|
+
crimson: string;
|
|
56
|
+
cyan: string;
|
|
57
|
+
darkblue: string;
|
|
58
|
+
darkcyan: string;
|
|
59
|
+
darkgoldenrod: string;
|
|
60
|
+
darkgray: string;
|
|
61
|
+
darkgreen: string;
|
|
62
|
+
darkkhaki: string;
|
|
63
|
+
darkmagenta: string;
|
|
64
|
+
darkolivegreen: string;
|
|
65
|
+
darkorange: string;
|
|
66
|
+
darkorchid: string;
|
|
67
|
+
darkred: string;
|
|
68
|
+
darksalmon: string;
|
|
69
|
+
darkseagreen: string;
|
|
70
|
+
darkslateblue: string;
|
|
71
|
+
darkslategray: string;
|
|
72
|
+
darkturquoise: string;
|
|
73
|
+
darkviolet: string;
|
|
74
|
+
deeppink: string;
|
|
75
|
+
deepskyblue: string;
|
|
76
|
+
dimgray: string;
|
|
77
|
+
dodgerblue: string;
|
|
78
|
+
firebrick: string;
|
|
79
|
+
floralwhite: string;
|
|
80
|
+
forestgreen: string;
|
|
81
|
+
fuchsia: string;
|
|
82
|
+
gainsboro: string;
|
|
83
|
+
ghostwhite: string;
|
|
84
|
+
gold: string;
|
|
85
|
+
goldenrod: string;
|
|
86
|
+
gray: string;
|
|
87
|
+
green: string;
|
|
88
|
+
greenyellow: string;
|
|
89
|
+
honeydew: string;
|
|
90
|
+
hotpink: string;
|
|
91
|
+
indianred: string;
|
|
92
|
+
indigo: string;
|
|
93
|
+
ivory: string;
|
|
94
|
+
khaki: string;
|
|
95
|
+
lavender: string;
|
|
96
|
+
lavenderblush: string;
|
|
97
|
+
lawngreen: string;
|
|
98
|
+
lemonchiffon: string;
|
|
99
|
+
lightblue: string;
|
|
100
|
+
lightcoral: string;
|
|
101
|
+
lightcyan: string;
|
|
102
|
+
lightgoldenrodyellow: string;
|
|
103
|
+
lightgrey: string;
|
|
104
|
+
lightgreen: string;
|
|
105
|
+
lightpink: string;
|
|
106
|
+
lightsalmon: string;
|
|
107
|
+
lightseagreen: string;
|
|
108
|
+
lightskyblue: string;
|
|
109
|
+
lightslategray: string;
|
|
110
|
+
lightsteelblue: string;
|
|
111
|
+
lightyellow: string;
|
|
112
|
+
lime: string;
|
|
113
|
+
limegreen: string;
|
|
114
|
+
linen: string;
|
|
115
|
+
magenta: string;
|
|
116
|
+
maroon: string;
|
|
117
|
+
mediumaquamarine: string;
|
|
118
|
+
mediumblue: string;
|
|
119
|
+
mediumorchid: string;
|
|
120
|
+
mediumpurple: string;
|
|
121
|
+
mediumseagreen: string;
|
|
122
|
+
mediumslateblue: string;
|
|
123
|
+
mediumspringgreen: string;
|
|
124
|
+
mediumturquoise: string;
|
|
125
|
+
mediumvioletred: string;
|
|
126
|
+
midnightblue: string;
|
|
127
|
+
mintcream: string;
|
|
128
|
+
mistyrose: string;
|
|
129
|
+
moccasin: string;
|
|
130
|
+
navajowhite: string;
|
|
131
|
+
navy: string;
|
|
132
|
+
oldlace: string;
|
|
133
|
+
olive: string;
|
|
134
|
+
olivedrab: string;
|
|
135
|
+
orange: string;
|
|
136
|
+
orangered: string;
|
|
137
|
+
orchid: string;
|
|
138
|
+
palegoldenrod: string;
|
|
139
|
+
palegreen: string;
|
|
140
|
+
paleturquoise: string;
|
|
141
|
+
palevioletred: string;
|
|
142
|
+
papayawhip: string;
|
|
143
|
+
peachpuff: string;
|
|
144
|
+
peru: string;
|
|
145
|
+
pink: string;
|
|
146
|
+
plum: string;
|
|
147
|
+
powderblue: string;
|
|
148
|
+
purple: string;
|
|
149
|
+
rebeccapurple: string;
|
|
150
|
+
red: string;
|
|
151
|
+
rosybrown: string;
|
|
152
|
+
royalblue: string;
|
|
153
|
+
saddlebrown: string;
|
|
154
|
+
salmon: string;
|
|
155
|
+
sandybrown: string;
|
|
156
|
+
seagreen: string;
|
|
157
|
+
seashell: string;
|
|
158
|
+
sienna: string;
|
|
159
|
+
silver: string;
|
|
160
|
+
skyblue: string;
|
|
161
|
+
slateblue: string;
|
|
162
|
+
slategray: string;
|
|
163
|
+
snow: string;
|
|
164
|
+
springgreen: string;
|
|
165
|
+
steelblue: string;
|
|
166
|
+
tan: string;
|
|
167
|
+
teal: string;
|
|
168
|
+
thistle: string;
|
|
169
|
+
tomato: string;
|
|
170
|
+
turquoise: string;
|
|
171
|
+
violet: string;
|
|
172
|
+
wheat: string;
|
|
173
|
+
white: string;
|
|
174
|
+
whitesmoke: string;
|
|
175
|
+
yellow: string;
|
|
176
|
+
yellowgreen: string;
|
|
177
|
+
};
|
|
19
178
|
/**
|
|
20
179
|
* Converts an RGB color value to HSL. Conversion formula
|
|
21
180
|
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/utils/color.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAwBV;AA6ED,QAAA,MAAM,WAAW,mKAkBP,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,UAuBxE;
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/utils/color.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAwBV;AA6ED,QAAA,MAAM,WAAW,mKAkBP,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,UAuBxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAyB9C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAK9C;AAoBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,UAK5C;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8IxB,CAAC;AAIF;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,YA4B9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,YAuB9C"}
|
package/dist/esm/utils/color.js
CHANGED
|
@@ -152,7 +152,7 @@ export function selectColor(element, colors, index) {
|
|
|
152
152
|
* TODO: Add support for triplet-style hex codes like this:
|
|
153
153
|
* - #123 -> #112233 -> [17, 34, 51]
|
|
154
154
|
*/
|
|
155
|
-
function hexToRGB(hex) {
|
|
155
|
+
export function hexToRGB(hex) {
|
|
156
156
|
// Matches 3-4 pairs of hex digits with an optional leading `#` character
|
|
157
157
|
const regex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i;
|
|
158
158
|
const result = regex.exec(hex);
|
|
@@ -176,6 +176,12 @@ function hexToRGB(hex) {
|
|
|
176
176
|
}
|
|
177
177
|
return [128, 128, 128]; // unknown color, return 'gray'
|
|
178
178
|
}
|
|
179
|
+
export function RGBToHex(rgb) {
|
|
180
|
+
return `#${rgb
|
|
181
|
+
.map((c) => Math.round(c).toString(16).padStart(2, '0'))
|
|
182
|
+
.join('')
|
|
183
|
+
.toUpperCase()}`;
|
|
184
|
+
}
|
|
179
185
|
/**
|
|
180
186
|
* Converts an RGB object to grayscale.
|
|
181
187
|
*
|
|
@@ -204,7 +210,7 @@ export function namedColorToHex(color) {
|
|
|
204
210
|
* A comprehensive map of all the CSS named-colors that modern browsers will
|
|
205
211
|
* recognize, and converts them into their hex values.
|
|
206
212
|
*/
|
|
207
|
-
const COLOR_TO_HEX = {
|
|
213
|
+
export const COLOR_TO_HEX = {
|
|
208
214
|
aliceblue: '#f0f8ff',
|
|
209
215
|
antiquewhite: '#faebd7',
|
|
210
216
|
aqua: '#00ffff',
|
|
@@ -294,7 +294,7 @@ export function processColumnName(columnName) {
|
|
|
294
294
|
return removeBigQuerySpecialChars(columnName);
|
|
295
295
|
}
|
|
296
296
|
export function isStringType(fieldType) {
|
|
297
|
-
return ['string', 'varchar', 'text', 'char', 'bpchar', 'citext'].includes(fieldType);
|
|
297
|
+
return ['string', 'varchar', 'text', 'char', 'bpchar', 'citext'].includes(fieldType?.toLowerCase());
|
|
298
298
|
}
|
|
299
299
|
export function isDateType(fieldType) {
|
|
300
300
|
return [
|
|
@@ -304,7 +304,7 @@ export function isDateType(fieldType) {
|
|
|
304
304
|
'timestamptz',
|
|
305
305
|
'timestamp',
|
|
306
306
|
'interval',
|
|
307
|
-
].includes(fieldType);
|
|
307
|
+
].includes(fieldType?.toLowerCase());
|
|
308
308
|
}
|
|
309
309
|
export function isNumberType(fieldType) {
|
|
310
310
|
return [
|
|
@@ -318,7 +318,7 @@ export function isNumberType(fieldType) {
|
|
|
318
318
|
'smallint',
|
|
319
319
|
'float2',
|
|
320
320
|
'float16',
|
|
321
|
-
].includes(fieldType);
|
|
321
|
+
].includes(fieldType?.toLowerCase());
|
|
322
322
|
}
|
|
323
323
|
export function isBoolType(fieldType) {
|
|
324
324
|
return ['bool', 'boolean'].includes(fieldType);
|
|
@@ -4,4 +4,5 @@ export declare const QUILL_SERVER: string;
|
|
|
4
4
|
export declare const QUILL_QUERY_ENDPOINT: string;
|
|
5
5
|
export declare const ALL_TENANTS = "QUILL_ALL_TENANTS";
|
|
6
6
|
export declare const SINGLE_TENANT = "QUILL_SINGLE_TENANT";
|
|
7
|
+
export declare const REFERENCE_LINE = "QUILL_REFERENCE_LINE";
|
|
7
8
|
//# 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,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,YAAY,QAGoB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,QAGnB,CAAC;AACf,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,aAAa,wBAAwB,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,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,YAAY,QAGoB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,QAGnB,CAAC;AACf,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,cAAc,yBAAyB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { QuillReportInternal } from '../models/Report';
|
|
2
2
|
import { QuillProviderClient } from '../models/Client';
|
|
3
3
|
import { AdditionalProcessing } from './tableProcessing';
|
|
4
|
+
import { CustomField } from '../models/Schema';
|
|
4
5
|
/**
|
|
5
6
|
* Returns a cleaned version of the dashboard item we store in state. We clean
|
|
6
7
|
* the dashboard item so that we aren't exposing unnecessary details to the
|
|
@@ -8,9 +9,19 @@ import { AdditionalProcessing } from './tableProcessing';
|
|
|
8
9
|
* interface to build amazing dashboards on top of.
|
|
9
10
|
* @param item
|
|
10
11
|
*/
|
|
11
|
-
export declare function cleanDashboardItem(item: {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
export declare function cleanDashboardItem({ item, dashboardFilters, client, dateBucket, additionalProcessing, customFields, skipPivotFetch, }: {
|
|
13
|
+
item: {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
} | undefined;
|
|
16
|
+
dashboardFilters: any;
|
|
17
|
+
client: QuillProviderClient;
|
|
18
|
+
dateBucket?: string;
|
|
19
|
+
additionalProcessing?: AdditionalProcessing;
|
|
20
|
+
customFields?: {
|
|
21
|
+
[tableName: string]: CustomField[];
|
|
22
|
+
} | null;
|
|
23
|
+
skipPivotFetch?: boolean;
|
|
24
|
+
}): Promise<QuillReportInternal>;
|
|
14
25
|
export declare function getDashboard(dashboardName: string, client: QuillProviderClient, tenants?: {
|
|
15
26
|
tenantField: string;
|
|
16
27
|
tenantIds: (string | number)[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAOzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAsB/C;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,EAAE;IACD,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,GAAG,CAAC;IACtB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,YAAY,CAAC,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqK/B;AA2ID,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACvB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,CA6Bd"}
|
|
@@ -3,7 +3,7 @@ import { snakeAndCamelCaseToTitleCase, snakeCaseToTitleCase, } from './textProce
|
|
|
3
3
|
import { getData } from './dataFetcher';
|
|
4
4
|
import { getDateBucketFromRange } from './dates';
|
|
5
5
|
import { generatePivotWithSQL } from './pivotConstructor';
|
|
6
|
-
import { convertFieldTypeToJSType, fieldTypeToDataTypeID, processColumnName, } from './columnProcessing';
|
|
6
|
+
import { convertFieldTypeToJSType, convertPostgresColumn, fieldTypeToDataTypeID, processColumnName, } from './columnProcessing';
|
|
7
7
|
const defaultDashboardItem = {
|
|
8
8
|
id: '',
|
|
9
9
|
name: '',
|
|
@@ -30,7 +30,7 @@ const defaultDashboardItem = {
|
|
|
30
30
|
* interface to build amazing dashboards on top of.
|
|
31
31
|
* @param item
|
|
32
32
|
*/
|
|
33
|
-
export async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, additionalProcessing) {
|
|
33
|
+
export async function cleanDashboardItem({ item, dashboardFilters, client, dateBucket, additionalProcessing, customFields, skipPivotFetch, }) {
|
|
34
34
|
if (!item)
|
|
35
35
|
return defaultDashboardItem;
|
|
36
36
|
if (!item.rows) {
|
|
@@ -40,24 +40,56 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
40
40
|
name: item.name,
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
+
const fields = item.fields || [];
|
|
44
|
+
const columnsWithCustomFields = [...(item.columns ?? [])];
|
|
45
|
+
if (item.includeCustomFields && item.rows?.length > 0) {
|
|
46
|
+
const tables = item.referencedTables ?? [];
|
|
47
|
+
tables.forEach((table) => {
|
|
48
|
+
const _customFields = customFields?.[table] ?? [];
|
|
49
|
+
_customFields.forEach((field) => {
|
|
50
|
+
const isJsonCustomField = !!field.refColumn;
|
|
51
|
+
if (item.rows[0][field.field] !== undefined &&
|
|
52
|
+
!item.columns.some((col) => col.field === field.field)) {
|
|
53
|
+
const result_field = fields.find((f) => f.name === field.field);
|
|
54
|
+
const converted_field = convertPostgresColumn(result_field ?? {});
|
|
55
|
+
columnsWithCustomFields.push({
|
|
56
|
+
field: field.field,
|
|
57
|
+
format: converted_field.format,
|
|
58
|
+
label: snakeAndCamelCaseToTitleCase(field.field),
|
|
59
|
+
fieldType: converted_field.fieldType,
|
|
60
|
+
dataTypeID: converted_field.dataTypeID,
|
|
61
|
+
jsType: converted_field.jsType,
|
|
62
|
+
inferFormat: isJsonCustomField,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
43
68
|
const processedColumns = item.columns.map((col) => {
|
|
44
69
|
return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
|
|
45
70
|
});
|
|
71
|
+
const columnInternal = (item.includeCustomFields ? columnsWithCustomFields : item.columns).map((col) => {
|
|
72
|
+
return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
|
|
73
|
+
});
|
|
46
74
|
let pivotTable;
|
|
47
75
|
let pivotError;
|
|
48
76
|
try {
|
|
49
77
|
pivotTable = await getPivotTable({
|
|
50
78
|
...item,
|
|
51
|
-
pivot: item.pivot
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
79
|
+
pivot: item.pivot && !skipPivotFetch
|
|
80
|
+
? {
|
|
81
|
+
...item.pivot,
|
|
82
|
+
aggregations: item.pivot.aggregations ?? [
|
|
83
|
+
{
|
|
84
|
+
valueField: item.pivot.valueField,
|
|
85
|
+
valueFieldType: item.pivot.valueFieldType,
|
|
86
|
+
valueField2: item.pivot.valueField2,
|
|
87
|
+
valueField2Type: item.pivot.valueField2Type,
|
|
88
|
+
aggregationType: item.pivot.aggregationType,
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
}
|
|
92
|
+
: undefined,
|
|
61
93
|
}, dashboardFilters, client, dateBucket, additionalProcessing, item.dashboardName);
|
|
62
94
|
}
|
|
63
95
|
catch (e) {
|
|
@@ -65,6 +97,29 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
65
97
|
console.error('Error fetching pivot table', e);
|
|
66
98
|
pivotError = 'Error fetching pivot table';
|
|
67
99
|
}
|
|
100
|
+
// For each key on item that starts with "referenceLine_{field}", we want to
|
|
101
|
+
// add it to referenceLineYValues as [field]: [value, value] (we only support horizontal lines)
|
|
102
|
+
// Then for each number value in the referenceLines map, we also want to add [key]: [value, value]
|
|
103
|
+
const referenceLineYValues = [];
|
|
104
|
+
for (const key in item) {
|
|
105
|
+
if (key.startsWith('referenceLine_')) {
|
|
106
|
+
const field = key.slice(14);
|
|
107
|
+
if (!item[key] || !item[key][0])
|
|
108
|
+
continue;
|
|
109
|
+
const value = Object.values(item[key][0])[0];
|
|
110
|
+
referenceLineYValues.push({ label: field, query: [value, value] });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (item.referenceLines) {
|
|
114
|
+
for (const referenceLine of item.referenceLines) {
|
|
115
|
+
if (Array.isArray(referenceLine.query)) {
|
|
116
|
+
referenceLineYValues.push({ label: referenceLine.label, query: referenceLine.query });
|
|
117
|
+
}
|
|
118
|
+
else if (referenceLine.query === '') {
|
|
119
|
+
referenceLineYValues.push({ label: referenceLine.label, query: (pivotTable?.rows ? pivotTable.rows : item.rows).map((row) => Number(row[referenceLine.label]) || 0) });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
68
123
|
return {
|
|
69
124
|
id: item._id ?? item.id,
|
|
70
125
|
name: item.name,
|
|
@@ -78,9 +133,12 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
78
133
|
field: column.field,
|
|
79
134
|
format: column.format,
|
|
80
135
|
label: column.label,
|
|
136
|
+
inferFormat: column.inferFormat,
|
|
81
137
|
};
|
|
82
138
|
}),
|
|
83
|
-
|
|
139
|
+
includeCustomFields: item.includeCustomFields,
|
|
140
|
+
columnInternal,
|
|
141
|
+
columnsWithCustomFields,
|
|
84
142
|
chartType: item.chartType,
|
|
85
143
|
dateField: item.dateField,
|
|
86
144
|
pivot: pivotError
|
|
@@ -88,14 +146,16 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
88
146
|
: item.pivot
|
|
89
147
|
? {
|
|
90
148
|
...item.pivot,
|
|
91
|
-
aggregations: item.pivot.aggregations ?? [
|
|
149
|
+
aggregations: item.pivot.aggregations ?? [
|
|
150
|
+
{
|
|
92
151
|
valueField: item.pivot.valueField,
|
|
93
152
|
valueFieldType: item.pivot.valueFieldType,
|
|
94
153
|
valueField2: item.pivot.valueField2,
|
|
95
154
|
valueField2Type: item.pivot.valueField2Type,
|
|
96
155
|
aggregationType: item.pivot.aggregationType,
|
|
97
|
-
}
|
|
98
|
-
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
columnValues: item.distinctStrings,
|
|
99
159
|
}
|
|
100
160
|
: undefined,
|
|
101
161
|
yAxisFields: pivotTable
|
|
@@ -119,6 +179,8 @@ export async function cleanDashboardItem(item, dashboardFilters, client, dateBuc
|
|
|
119
179
|
referencedTables: item?.referencedTables || [],
|
|
120
180
|
referencedColumns: item?.referencedColumns || {},
|
|
121
181
|
error: item.error ?? pivotError,
|
|
182
|
+
referenceLineYValues: referenceLineYValues,
|
|
183
|
+
referenceLines: item.referenceLines,
|
|
122
184
|
};
|
|
123
185
|
}
|
|
124
186
|
/**
|
|
@@ -153,7 +215,8 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
|
|
|
153
215
|
field: agg.valueField,
|
|
154
216
|
label: snakeCaseToTitleCase(processColumnName(agg.valueField)),
|
|
155
217
|
//FIXME: valueFieldType is not always the same as the format
|
|
156
|
-
format: agg.valueFieldType ??
|
|
218
|
+
format: agg.valueFieldType ??
|
|
219
|
+
'whole_number',
|
|
157
220
|
jsType: agg.valueFieldType ?? 'number',
|
|
158
221
|
fieldType: agg.valueFieldType ?? 'number',
|
|
159
222
|
dataTypeID: fieldTypeToDataTypeID(agg.valueFieldType ?? 'number'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgFvD,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,
|
|
1
|
+
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgFvD,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,gBA4K1B;AAED,wBAAgB,aAAa;+BAGjB,mBAAmB,sBACP,MAAM,oBACR,GAAG,iCAEP,WAAW;EAoC5B;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"}
|
|
@@ -90,7 +90,9 @@ export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestB
|
|
|
90
90
|
let errorMessage = 'Failed to fetch report: ' + responseJson.error;
|
|
91
91
|
if (hostedRequestBody.metadata.task === 'query' ||
|
|
92
92
|
hostedRequestBody.metadata.task === 'patterns') {
|
|
93
|
-
errorPrefix = '
|
|
93
|
+
errorPrefix = responseJson.error?.includes('Query Parsing Error')
|
|
94
|
+
? ''
|
|
95
|
+
: 'SQL Error: ';
|
|
94
96
|
errorMessage = errorPrefix + responseJson.error;
|
|
95
97
|
}
|
|
96
98
|
else if (responseJson.error?.includes('Virtual Table Error')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,
|
|
1
|
+
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAGxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,OAkBnD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAG,YAAO,EACjB,UAAU,EAAE,GAAG,YAAO,EACtB,aAAa,EAAE,MAAM,OAmGtB;AAGD,eAAO,MAAM,OAAO,MAAO,MAAM,cA0DhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwB7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,cAAc,EAAE,CAoCrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,yBAgCnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/D;AAED,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,mBAAmB,GACvC,mBAAmB,CAkKrB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,cAAc,EAAE,GAC9B,GAAG,EAAE,CA+CP;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CA+BT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE;IACpD,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD,GAAG;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB,CASA;AAED,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,WAClB,WAAW,EAAE,iBACP,MAAM,KACpB,CAAC,mBAAmB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,SAqDpD,CAAC"}
|