@quillsql/react 2.13.45 → 2.13.46
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 +3 -1
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +27 -30
- package/dist/cjs/ChartBuilder.d.ts +1 -2
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +46 -26
- package/dist/cjs/ChartEditor.d.ts +1 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +6 -8
- package/dist/cjs/Context.d.ts +18 -6
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +98 -54
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +67 -17
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +201 -76
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +3 -3
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +1 -2
- package/dist/cjs/components/Chart/GaugeChart.js +1 -1
- package/dist/cjs/components/Chart/LineChart.js +1 -1
- package/dist/cjs/components/Chart/MapChart.js +1 -1
- package/dist/cjs/components/Chart/PieChart.js +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +6 -4
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSection.js +0 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.js +0 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +6 -4
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +108 -139
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +61 -59
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +4 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +59 -63
- package/dist/cjs/components/ReportBuilder/schema.d.ts +7 -0
- package/dist/cjs/components/ReportBuilder/schema.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +11 -3
- package/dist/cjs/hooks/useDashboard.d.ts +23 -2
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +133 -3
- package/dist/cjs/hooks/useExport.js +3 -3
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +8 -7
- package/dist/cjs/hooks/useReport.d.ts.map +1 -1
- package/dist/cjs/hooks/useReport.js +13 -12
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/models/Client.d.ts +1 -0
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Dashboard.d.ts +5 -1
- package/dist/cjs/models/Dashboard.d.ts.map +1 -1
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Filter.js +0 -2
- package/dist/cjs/models/Report.d.ts +1 -2
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +1 -0
- package/dist/cjs/utils/dashboard.js +1 -1
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +2 -2
- package/dist/cjs/utils/reportBuilder.d.ts +11 -2
- package/dist/cjs/utils/reportBuilder.d.ts.map +1 -1
- package/dist/cjs/utils/reportBuilder.js +127 -1
- package/dist/cjs/utils/schema.d.ts +2 -7
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +4 -0
- package/dist/esm/Chart.d.ts +3 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +28 -31
- package/dist/esm/ChartBuilder.d.ts +1 -2
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +47 -27
- package/dist/esm/ChartEditor.d.ts +1 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +7 -9
- package/dist/esm/Context.d.ts +18 -6
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +100 -56
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +67 -17
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +206 -81
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +3 -3
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +1 -2
- package/dist/esm/components/Chart/GaugeChart.js +1 -1
- package/dist/esm/components/Chart/LineChart.js +1 -1
- package/dist/esm/components/Chart/MapChart.js +1 -1
- package/dist/esm/components/Chart/PieChart.js +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +6 -4
- package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardSection.js +0 -1
- package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardSectionContainer.js +0 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +6 -4
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +109 -140
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +61 -59
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +4 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +59 -63
- package/dist/esm/components/ReportBuilder/schema.d.ts +7 -0
- package/dist/esm/components/ReportBuilder/schema.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +11 -3
- package/dist/esm/hooks/useDashboard.d.ts +23 -2
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +131 -3
- package/dist/esm/hooks/useExport.js +4 -4
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +9 -8
- package/dist/esm/hooks/useReport.d.ts.map +1 -1
- package/dist/esm/hooks/useReport.js +14 -13
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/models/Client.d.ts +1 -0
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Dashboard.d.ts +5 -1
- package/dist/esm/models/Dashboard.d.ts.map +1 -1
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Filter.js +0 -2
- package/dist/esm/models/Report.d.ts +1 -2
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +1 -0
- package/dist/esm/utils/dashboard.js +1 -1
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +2 -2
- package/dist/esm/utils/reportBuilder.d.ts +11 -2
- package/dist/esm/utils/reportBuilder.d.ts.map +1 -1
- package/dist/esm/utils/reportBuilder.js +124 -0
- package/dist/esm/utils/schema.d.ts +2 -7
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +4 -0
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { convertASTToPivotData } from '../components/ReportBuilder/convert';
|
|
2
2
|
import { deepCopy } from '../components/ReportBuilder/util';
|
|
3
|
+
import { JoinType, } from '../models/ReportBuilder';
|
|
3
4
|
import { astToFilterTree, filterTreeToAst, getFieldFromExpression, } from './astFilterProcessing';
|
|
4
5
|
import { getDateFormatFromBucket } from './dates';
|
|
5
6
|
import { filterStackToFilterTree, generateFilterStack, } from './filterProcessing';
|
|
@@ -384,3 +385,126 @@ export const setTypesOnPivot = (newPivot, searchColumns) => ({
|
|
|
384
385
|
valueFieldType: searchColumns.find((c) => c.field === newPivot.aggregations?.[0]?.valueField)?.jsType,
|
|
385
386
|
valueField2Type: searchColumns.find((c) => c.field === newPivot.aggregations?.[0]?.valueField2)?.jsType,
|
|
386
387
|
});
|
|
388
|
+
export const orderTablesByBestPrimaryTable = (tables, foreignKeyMap) => {
|
|
389
|
+
const getPrimaryTableMappings = (table) => {
|
|
390
|
+
const tablesMappedByPrimaryTable = [{ ...table }];
|
|
391
|
+
foreignKeyMap[table.name]?.forEach((mapping) => {
|
|
392
|
+
if (tables.some((t) => t.name === mapping.foreignTable)) {
|
|
393
|
+
tablesMappedByPrimaryTable.push({
|
|
394
|
+
name: mapping.foreignTable,
|
|
395
|
+
join: {
|
|
396
|
+
type: JoinType.INNER,
|
|
397
|
+
condition: {
|
|
398
|
+
operator: '=',
|
|
399
|
+
left: { field: mapping.foreignKey, table: table.name },
|
|
400
|
+
right: {
|
|
401
|
+
field: mapping.foreignTablePrimaryKey,
|
|
402
|
+
table: mapping.foreignTable,
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
});
|
|
409
|
+
return tablesMappedByPrimaryTable;
|
|
410
|
+
};
|
|
411
|
+
if (tables.length === 0) {
|
|
412
|
+
return [];
|
|
413
|
+
}
|
|
414
|
+
let primaryTableMappings = [];
|
|
415
|
+
tables.forEach((table) => {
|
|
416
|
+
const mappedByTable = getPrimaryTableMappings(table);
|
|
417
|
+
if (mappedByTable.length > primaryTableMappings.length) {
|
|
418
|
+
primaryTableMappings = mappedByTable;
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
return primaryTableMappings;
|
|
422
|
+
};
|
|
423
|
+
export const validatedReportBuilderState = (state, foreignKeyMap) => {
|
|
424
|
+
let { tables, columns, filterStack, sort } = state;
|
|
425
|
+
const { pivot, limit } = state;
|
|
426
|
+
if (columns.length === 0) {
|
|
427
|
+
return {
|
|
428
|
+
tables: [],
|
|
429
|
+
columns: [],
|
|
430
|
+
filterStack: [],
|
|
431
|
+
pivot: null,
|
|
432
|
+
sort: [],
|
|
433
|
+
limit: null,
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
const tablesReferencedInColumns = tables.filter((table) => {
|
|
437
|
+
return columns.some((col) => col.table === table.name);
|
|
438
|
+
});
|
|
439
|
+
tables = columns.some((col) => col.table === tables[0]?.name)
|
|
440
|
+
? tablesReferencedInColumns
|
|
441
|
+
: orderTablesByBestPrimaryTable(tablesReferencedInColumns, foreignKeyMap);
|
|
442
|
+
columns = columns.filter((col) => {
|
|
443
|
+
return tables.some((table) => table.name === col.table);
|
|
444
|
+
});
|
|
445
|
+
filterStack = filterStack.filter((filter, index) => {
|
|
446
|
+
if (!filter.value) {
|
|
447
|
+
let prevFilterValid = true;
|
|
448
|
+
let nextFilterValid = true;
|
|
449
|
+
if (index === 1) {
|
|
450
|
+
const prevFilter = filterStack[0];
|
|
451
|
+
prevFilterValid =
|
|
452
|
+
!!prevFilter.value &&
|
|
453
|
+
columns.some((col) => col.field === prevFilter.value?.field) &&
|
|
454
|
+
tables.some((table) => table.name === prevFilter.value?.table);
|
|
455
|
+
}
|
|
456
|
+
const nextFilter = filterStack[index + 1];
|
|
457
|
+
if (nextFilter) {
|
|
458
|
+
nextFilterValid =
|
|
459
|
+
!!nextFilter.value &&
|
|
460
|
+
columns.some((col) => col.field === nextFilter.value?.field) &&
|
|
461
|
+
tables.some((table) => table.name === nextFilter.value?.table);
|
|
462
|
+
}
|
|
463
|
+
return prevFilterValid && nextFilterValid;
|
|
464
|
+
}
|
|
465
|
+
else {
|
|
466
|
+
return (columns.some((col) => col.field === filter.value?.field) &&
|
|
467
|
+
tables.some((table) => table.name === filter.value?.table));
|
|
468
|
+
}
|
|
469
|
+
});
|
|
470
|
+
sort = sort.filter((sort) => {
|
|
471
|
+
return columns.some((col) => (col.alias ?? col.field) === sort.field);
|
|
472
|
+
});
|
|
473
|
+
// If pivot is using removed columns, remove pivot
|
|
474
|
+
let removePivot = false;
|
|
475
|
+
if (pivot) {
|
|
476
|
+
const referencedColumns = [];
|
|
477
|
+
if (pivot.rowField) {
|
|
478
|
+
referencedColumns.push(pivot.rowField);
|
|
479
|
+
}
|
|
480
|
+
if (pivot.columnField) {
|
|
481
|
+
referencedColumns.push(pivot.columnField);
|
|
482
|
+
}
|
|
483
|
+
if (pivot.aggregations) {
|
|
484
|
+
pivot.aggregations.forEach((agg) => {
|
|
485
|
+
if (agg.valueField) {
|
|
486
|
+
referencedColumns.push(agg.valueField);
|
|
487
|
+
}
|
|
488
|
+
if (agg.valueField2) {
|
|
489
|
+
referencedColumns.push(agg.valueField2);
|
|
490
|
+
}
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
const columnMapping = referencedColumns
|
|
494
|
+
.map((col) => {
|
|
495
|
+
const column = columns.find((c) => (c.alias || c.field) === col);
|
|
496
|
+
return column;
|
|
497
|
+
})
|
|
498
|
+
.filter((c) => c !== undefined);
|
|
499
|
+
removePivot = !columnMapping.every((col) => columns.some((c) => (c.alias || c.field) === (col.alias || col.field) &&
|
|
500
|
+
c.table === col.table));
|
|
501
|
+
}
|
|
502
|
+
return {
|
|
503
|
+
tables,
|
|
504
|
+
columns,
|
|
505
|
+
filterStack,
|
|
506
|
+
pivot: removePivot ? null : pivot,
|
|
507
|
+
sort,
|
|
508
|
+
limit,
|
|
509
|
+
};
|
|
510
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ForeignKeyMap } from '../components/ReportBuilder/schema';
|
|
1
2
|
import { QuillProviderClient } from '../models/Client';
|
|
2
3
|
import { ColumnInternal } from '../models/Columns';
|
|
3
4
|
import { CustomField } from '../models/Schema';
|
|
@@ -30,11 +31,5 @@ export declare const getSchemaInfo: ({ client, caller, tenants, tableIds, abortS
|
|
|
30
31
|
schemaWithCustomFields: Table[];
|
|
31
32
|
}>;
|
|
32
33
|
export declare const customFieldToColumnInternal: (customField: CustomField) => ColumnInternal;
|
|
33
|
-
export declare const getSchemaForeignKeyMapping: (schema: Table[]) =>
|
|
34
|
-
[table: string]: {
|
|
35
|
-
foreignTable: string;
|
|
36
|
-
foreignTablePrimaryKey: string;
|
|
37
|
-
foreignKey: string;
|
|
38
|
-
}[];
|
|
39
|
-
};
|
|
34
|
+
export declare const getSchemaForeignKeyMapping: (schema: Table[]) => ForeignKeyMap;
|
|
40
35
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAEd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AA8BzC,eAAO,MAAM,kBAAkB,8CAK5B;IACD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EACH;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,KAAG,OAAO,CAAC;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;CAAE,GAAG,IAAI,CAwFxD,CAAC;AAEF,eAAO,MAAM,aAAa,wDAMvB;IACD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,KAAG,OAAO,CAAC;IACV,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,mBAAmB,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACnE,sBAAsB,EAAE,KAAK,EAAE,CAAC;CACjC,CAgEA,CAAC;AA2BF,eAAO,MAAM,2BAA2B,gBACzB,WAAW,KACvB,cAaF,CAAC;AAIF,eAAO,MAAM,0BAA0B,WAAY,KAAK,EAAE,KAAG,aA8B5D,CAAC"}
|
package/dist/esm/utils/schema.js
CHANGED
|
@@ -203,6 +203,10 @@ export const getSchemaForeignKeyMapping = (schema) => {
|
|
|
203
203
|
table.columns.forEach((column) => {
|
|
204
204
|
if (column.field.toLowerCase().endsWith('_id')) {
|
|
205
205
|
const foreignTableName = `${column.field.slice(0, -3)}s`;
|
|
206
|
+
if (foreignTableName === table.name) {
|
|
207
|
+
// avoid self-referential foreign keys
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
206
210
|
const foreignTable = schema.find((t) => t.name === foreignTableName);
|
|
207
211
|
if (foreignTable &&
|
|
208
212
|
foreignTable.columns.some((c) => c.field === 'id')) {
|