@quillsql/react 2.12.3 → 2.12.5
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.map +1 -1
- package/dist/cjs/Chart.js +192 -72
- package/dist/cjs/ChartBuilder.d.ts +24 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +43 -36
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +97 -41
- package/dist/cjs/Context.d.ts +1 -0
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +59 -30
- package/dist/cjs/Dashboard.d.ts +22 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +2 -2
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +47 -80
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +13 -27
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +3 -3
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +9 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +146 -112
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +29 -11
- package/dist/cjs/components/QuillTable.d.ts +15 -2
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +58 -29
- package/dist/cjs/components/UiComponents.d.ts +11 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +48 -4
- package/dist/cjs/hooks/useExport.d.ts +2 -1
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +44 -9
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +2 -0
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +2 -1
- package/dist/cjs/utils/csv.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +2 -0
- package/dist/cjs/utils/pivotProcessing.d.ts +2 -6
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +31 -28
- package/dist/cjs/utils/schema.d.ts +6 -0
- package/dist/cjs/utils/schema.d.ts.map +1 -0
- package/dist/cjs/utils/schema.js +122 -0
- package/dist/cjs/utils/tableProcessing.d.ts +1 -1
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +5 -3
- package/dist/cjs/utils/valueFormatter.js +1 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +193 -73
- package/dist/esm/ChartBuilder.d.ts +24 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +43 -36
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +98 -42
- package/dist/esm/Context.d.ts +1 -0
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +58 -29
- package/dist/esm/Dashboard.d.ts +22 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +2 -2
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +50 -83
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +15 -29
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +4 -4
- package/dist/esm/components/Dashboard/DataLoader.d.ts +9 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +147 -113
- package/dist/esm/components/Dashboard/TableComponent.d.ts +1 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +30 -12
- package/dist/esm/components/QuillTable.d.ts +15 -2
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +58 -26
- package/dist/esm/components/UiComponents.d.ts +11 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +47 -4
- package/dist/esm/hooks/useExport.d.ts +2 -1
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +44 -9
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +3 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +3 -2
- package/dist/esm/utils/csv.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +2 -0
- package/dist/esm/utils/pivotProcessing.d.ts +2 -6
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +31 -28
- package/dist/esm/utils/schema.d.ts +6 -0
- package/dist/esm/utils/schema.d.ts.map +1 -0
- package/dist/esm/utils/schema.js +117 -0
- package/dist/esm/utils/tableProcessing.d.ts +1 -1
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +5 -3
- package/dist/esm/utils/valueFormatter.js +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useContext, useEffect, useRef, } from 'react';
|
|
2
|
+
import { useContext, useEffect, useRef, useState, } from 'react';
|
|
3
3
|
import { XIcon } from '../assets';
|
|
4
4
|
import { ThemeContext } from '../Context';
|
|
5
5
|
import { useTheme } from '../hooks';
|
|
6
6
|
import QuillTable from './QuillTable';
|
|
7
|
+
import ChartSkeleton from './Chart/ChartSkeleton';
|
|
7
8
|
/**
|
|
8
9
|
* The fallback TextInput element for Quill.
|
|
9
10
|
*/
|
|
@@ -330,11 +331,53 @@ export const LoadingSpinner = () => (_jsx("div", { style: {
|
|
|
330
331
|
justifyContent: 'center',
|
|
331
332
|
alignItems: 'center',
|
|
332
333
|
}, children: _jsxs("svg", { width: "24", height: "24", children: [_jsx("circle", { cx: "12", cy: "12", r: "9.375", strokeWidth: "3.75", strokeDasharray: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)", strokeDashoffset: "calc(2 * 3.14 * 9.375 / 6)", stroke: "#364153", fill: "none", transform: "rotate(-90 12 12)", children: _jsx("animateTransform", { attributeName: "transform", attributeType: "XML", type: "rotate", from: "-180 12 12", to: "180 12 12", dur: "0.8s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "12", cy: "12", r: "9.375", strokeWidth: "3.75", strokeDasharray: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 1 / 3)", strokeDashoffset: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)", stroke: '#ADB1B9', fill: "none", transform: "rotate(90 12 12)", children: _jsx("animateTransform", { attributeName: "transform", attributeType: "XML", type: "rotate", from: "0 12 12", to: "360 12 12", dur: "0.8s", repeatCount: "indefinite" }) })] }) }));
|
|
333
|
-
export const
|
|
334
|
+
export const QuillTableSQLEditorComponent = ({ rows, columns, isLoading = false, numberOfRows, onPageChange, onSortChange, }) => {
|
|
335
|
+
const [sort, setSort] = useState({ field: '', direction: '' });
|
|
336
|
+
const [page, setPage] = useState(0);
|
|
334
337
|
if (isLoading) {
|
|
335
|
-
return (_jsx("div", { style: {
|
|
338
|
+
return (_jsx("div", { style: {
|
|
339
|
+
display: 'flex',
|
|
340
|
+
flexDirection: 'column',
|
|
341
|
+
margin: 'auto',
|
|
342
|
+
width: '100%',
|
|
343
|
+
height: '100%',
|
|
344
|
+
}, children: _jsx(LoadingSpinner, {}) }));
|
|
336
345
|
}
|
|
337
|
-
return _jsx(QuillTable, { rows: rows, columns: columns, rowsPerPage: 20
|
|
346
|
+
return (_jsx(QuillTable, { rows: rows, columns: columns, rowsPerPage: 20, numberOfRows: numberOfRows, onPageChange: (page) => {
|
|
347
|
+
setPage(page.currentPage);
|
|
348
|
+
onPageChange && onPageChange(page);
|
|
349
|
+
}, onSortChange: (sort) => {
|
|
350
|
+
setSort(sort);
|
|
351
|
+
setPage(0);
|
|
352
|
+
onSortChange && onSortChange(sort);
|
|
353
|
+
}, sort: sort, currentPage: page, isLoading: isLoading }));
|
|
354
|
+
};
|
|
355
|
+
export const QuillTableComponent = ({ rows, columns, isLoading = false, numberOfRows, onPageChange, onSortChange, }) => {
|
|
356
|
+
const [sort, setSort] = useState({ field: '', direction: '' });
|
|
357
|
+
const [page, setPage] = useState(0);
|
|
358
|
+
const [initialLoad, setInitialLoad] = useState(true);
|
|
359
|
+
useEffect(() => {
|
|
360
|
+
if (initialLoad && !isLoading) {
|
|
361
|
+
setInitialLoad(false);
|
|
362
|
+
}
|
|
363
|
+
}, [isLoading]);
|
|
364
|
+
if (initialLoad) {
|
|
365
|
+
return (_jsx("div", { style: {
|
|
366
|
+
display: 'flex',
|
|
367
|
+
flexDirection: 'column',
|
|
368
|
+
margin: 'auto',
|
|
369
|
+
width: '100%',
|
|
370
|
+
height: '100%',
|
|
371
|
+
}, children: _jsx(ChartSkeleton, {}) }));
|
|
372
|
+
}
|
|
373
|
+
return (_jsx(QuillTable, { rows: rows, columns: columns, rowsPerPage: 20, numberOfRows: numberOfRows, onPageChange: (page) => {
|
|
374
|
+
setPage(page.currentPage);
|
|
375
|
+
onPageChange && onPageChange(page);
|
|
376
|
+
}, onSortChange: (sort) => {
|
|
377
|
+
setSort(sort);
|
|
378
|
+
setPage(0);
|
|
379
|
+
onSortChange && onSortChange(sort);
|
|
380
|
+
}, sort: sort, currentPage: page, isLoading: isLoading }));
|
|
338
381
|
};
|
|
339
382
|
export const QuillEmptyDashboardComponent = () => _jsx("div", {});
|
|
340
383
|
export const QuillChartBuilderInputRowContainer = ({ children, }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,SAAS,cAAe,MAAM;;;;CAmD1C,CAAC"}
|
|
@@ -1,15 +1,50 @@
|
|
|
1
1
|
import { downloadCSV } from '../utils/csv';
|
|
2
|
-
import {
|
|
2
|
+
import { useContext, useState } from 'react';
|
|
3
|
+
import { getData } from '../utils/dataFetcher';
|
|
4
|
+
import { ClientContext, DashboardFiltersContext } from '../Context';
|
|
3
5
|
export const useExport = (reportId) => {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
const { dashboardFilters } = useContext(DashboardFiltersContext);
|
|
7
|
+
const [client] = useContext(ClientContext);
|
|
8
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
9
|
+
if (!reportId) {
|
|
10
|
+
return { downloadCSV: () => { }, downloadPDF: () => { }, isLoading: false };
|
|
11
|
+
}
|
|
7
12
|
return {
|
|
8
|
-
downloadCSV: () =>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
downloadCSV: async () => {
|
|
14
|
+
setIsLoading(true);
|
|
15
|
+
const minimalFilters = Object.values(dashboardFilters).length
|
|
16
|
+
? Object.values(dashboardFilters).map((filter) => {
|
|
17
|
+
const newFilter = { ...filter };
|
|
18
|
+
if (newFilter.filterType === 'date_range') {
|
|
19
|
+
delete newFilter['field'];
|
|
20
|
+
delete newFilter['options'];
|
|
21
|
+
delete newFilter['selectedValue'];
|
|
22
|
+
}
|
|
23
|
+
return newFilter;
|
|
24
|
+
})
|
|
25
|
+
: [];
|
|
26
|
+
const hostedBody = {
|
|
27
|
+
metadata: {
|
|
28
|
+
dashboardItemId: reportId,
|
|
29
|
+
orgId: client.customerId || '*',
|
|
30
|
+
clientId: client.publicKey,
|
|
31
|
+
task: 'item',
|
|
32
|
+
databaseType: client?.databaseType,
|
|
33
|
+
filters: minimalFilters,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
const cloudBody = {
|
|
37
|
+
id: reportId,
|
|
38
|
+
};
|
|
39
|
+
const resp = await getData(client, 'itempost', 'same-origin', hostedBody, cloudBody);
|
|
40
|
+
downloadCSV({
|
|
41
|
+
rows: resp.rows,
|
|
42
|
+
fields: resp.columns,
|
|
43
|
+
name: resp.name,
|
|
44
|
+
});
|
|
45
|
+
setIsLoading(false);
|
|
46
|
+
},
|
|
13
47
|
downloadPDF: () => { },
|
|
48
|
+
isLoading,
|
|
14
49
|
};
|
|
15
50
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useQuill.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useQuill.ts"],"names":[],"mappings":"AAWA,UAAU,MAAM;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,aACT,MAAM;UAEV,WAAW,GAAG,IAAI;aACf,OAAO;WACT,MAAM,GAAG,IAAI;CAoFrB,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { useContext, useEffect, useState } from 'react';
|
|
2
|
-
import { ClientContext, DashboardContext, DashboardFiltersContext, } from '../Context';
|
|
2
|
+
import { ClientContext, CustomFieldContext, DashboardContext, DashboardFiltersContext, } from '../Context';
|
|
3
3
|
import { getData } from '../utils/dataFetcher';
|
|
4
4
|
import { mergeComparisonRange } from '../utils/merge';
|
|
5
5
|
import { processFilterErrorList } from '../utils/errorProcessing';
|
|
6
6
|
export const useQuill = (reportId) => {
|
|
7
7
|
const { dashboard, dispatch } = useContext(DashboardContext);
|
|
8
8
|
const { dashboardFilters } = useContext(DashboardFiltersContext);
|
|
9
|
+
const [customFields] = useContext(CustomFieldContext);
|
|
9
10
|
const [client] = useContext(ClientContext);
|
|
10
11
|
const [data, setData] = useState(null);
|
|
11
12
|
const [loading, setLoading] = useState(true);
|
|
@@ -32,6 +33,7 @@ export const useQuill = (reportId) => {
|
|
|
32
33
|
task: 'item',
|
|
33
34
|
filters: [...Object.values(dashboardFilters)],
|
|
34
35
|
databaseType: client?.databaseType,
|
|
36
|
+
customFields,
|
|
35
37
|
},
|
|
36
38
|
};
|
|
37
39
|
const cloudBody = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"AAAA,OAAc,EAOZ,SAAS,EACV,MAAM,OAAO,CAAC;AAoBf,OAAO,EACL,oBAAoB,EAKrB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"AAAA,OAAc,EAOZ,SAAS,EACV,MAAM,OAAO,CAAC;AAoBf,OAAO,EACL,oBAAoB,EAKrB,MAAM,+BAA+B,CAAC;AAevC,OAAO,EAAE,MAAM,EAAkB,MAAM,sBAAsB,CAAC;AAE9D,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAkBD,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,GAAG,CAAC;IACnB,gBAAgB,EAAE,GAAG,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC;IACtB,mBAAmB,EAAE,GAAG,CAAC;IACzB,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,gBAAgB,EAAE,GAAG,CAAC;IACtB,mBAAmB,EAAE,GAAG,CAAC;IACzB,UAAU,EAAE,GAAG,CAAC;IAChB,aAAa,EAAE,GAAG,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC;IACnB,eAAe,EAAE,GAAG,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC;IACrB,aAAa,EAAE,GAAG,CAAC;IACnB,wBAAwB,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACvE,gBAAgB,EAAE,CAAC,KAAK,EAAE;QACxB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,eAAe,EAAE,SAAS,CAAC;KAC5B,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAC3D,cAAc,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAC1D,aAAa,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IACzD,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IACzE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IACpE,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IACvE,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,GAAG,CAAC;IAC3B,WAAW,EAAE,GAAG,CAAC;IACjB,WAAW,EAAE,GAAG,CAAC;IACjB,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,aAAa,EAAE,GAAG,CAAC;IACnB,gBAAgB,EAAE,GAAG,CAAC;IACtB,iBAAiB,EAAE,GAAG,CAAC;IACvB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,GAAG,CAAC;IAC1B,yBAAyB,CAAC,EAAE,GAAG,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,eAAO,MAAM,UAAU,m3BAqDpB,eAAe,4CA6xBjB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,EAAE,EACH,MAAM,EAAE,MAAM;;;;IAsBf;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAiBvD;AAuJD,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,WAY5C;AAgCD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,GAAG,EACT,SAAS,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,SAAS,EACjD,YAAY,EAAE,OAAO,EACrB,QAAQ,SAAK,EACb,SAAS,GAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,SAAqB;;;;;;EA0c9D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useContext, useMemo, useState, useEffect, useRef, } from 'react';
|
|
3
|
-
import { ClientContext } from '../../Context';
|
|
3
|
+
import { ClientContext, CustomFieldContext } from '../../Context';
|
|
4
4
|
import { getDataFromCloud } from '../../utils/dataFetcher';
|
|
5
5
|
import { PivotList, PivotCard } from './PivotList';
|
|
6
6
|
import { differenceInDays, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, eachYearOfInterval, endOfDay, isWithinInterval, subMilliseconds, } from 'date-fns';
|
|
@@ -31,6 +31,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
31
31
|
const [selectedPivotType, setSelectedPivotType] = useState('recommended');
|
|
32
32
|
const [errors, setErrors] = useState([]);
|
|
33
33
|
const [client] = useContext(ClientContext);
|
|
34
|
+
const [customFields] = useContext(CustomFieldContext);
|
|
34
35
|
const rowFieldRef = useRef(null);
|
|
35
36
|
const colFieldRef = useRef(null);
|
|
36
37
|
const [pivotCardWidth, setPivotCardWidth] = useState(420);
|
|
@@ -52,7 +53,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
|
|
|
52
53
|
setAllowedValueFields(possibleColumns.valueFields);
|
|
53
54
|
return possibleColumns;
|
|
54
55
|
}
|
|
55
|
-
const newUniqueValues = await getUniqueValuesByColumns(stringColumns, query || '', data.rows || [], client);
|
|
56
|
+
const newUniqueValues = await getUniqueValuesByColumns(stringColumns, query || '', data.rows || [], client, customFields);
|
|
56
57
|
if (!uniqueValues ||
|
|
57
58
|
hashCode(uniqueValues) !== hashCode(newUniqueValues)) {
|
|
58
59
|
const possibleColumns = getPossiblePivotFieldOptions(columns, newUniqueValues || {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../src/utils/csv.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../src/utils/csv.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,SAAU;IAChC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,SA2FA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA6B3C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,GACpB,WAAW,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA6B3C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,GACpB,WAAW,CAqCb"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { Pivot } from '../internals/ReportBuilder/PivotModal';
|
|
2
|
-
import { Column } from '../models/Columns';
|
|
3
|
-
export declare function pivotToSql(pivot: Pivot, query: string,
|
|
4
|
-
query: string;
|
|
5
|
-
preQueries?: string[];
|
|
6
|
-
runQueryConfig?: any;
|
|
7
|
-
} | undefined;
|
|
2
|
+
import { Column, ColumnInternal } from '../models/Columns';
|
|
3
|
+
export declare function pivotToSql(pivot: Pivot, query: string, columns: ColumnInternal[]): string;
|
|
8
4
|
export declare function isValidPivot(pivot: Pivot): boolean;
|
|
9
5
|
export declare function getPossiblePivotFieldOptions(columns: Column[], uniqueValues: {
|
|
10
6
|
[field: string]: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG3D,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EAAE,GACxB,MAAM,CAsCR;AAmED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,WAgBxC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;;;;EAsCvC;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"}
|
|
@@ -1,53 +1,45 @@
|
|
|
1
1
|
import { isIdColumn } from '../components/ReportBuilder/util';
|
|
2
2
|
import { DATE_FORMAT_TYPES, NUMBER_FORMAT_TYPES } from './valueFormatter';
|
|
3
|
-
export function pivotToSql(pivot, query,
|
|
3
|
+
export function pivotToSql(pivot, query, columns) {
|
|
4
4
|
const processedAggType = pivot.aggregationType?.toLowerCase() === 'average'
|
|
5
5
|
? 'avg'
|
|
6
6
|
: pivot.aggregationType?.toLowerCase();
|
|
7
7
|
if ((!pivot.rowField && pivot.valueField && processedAggType) ||
|
|
8
8
|
(!pivot.valueField && pivot.rowField && processedAggType === 'count')) {
|
|
9
9
|
// table aggregation
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
SELECT ${processedAggType}(${pivot.valueField ?? pivot.rowField}) FROM prePivotQuery`,
|
|
14
|
-
};
|
|
10
|
+
return `with
|
|
11
|
+
original_query as (${query})
|
|
12
|
+
SELECT ${processedAggType}(${pivot.valueField ?? pivot.rowField}) FROM original_query`;
|
|
15
13
|
}
|
|
16
14
|
else if (!pivot.columnField &&
|
|
17
15
|
processedAggType &&
|
|
18
16
|
pivot.rowField &&
|
|
19
17
|
pivot.valueField) {
|
|
20
18
|
// 1-d pivot
|
|
21
|
-
return
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
SELECT ${pivot.rowField}, ${processedAggType}(${pivot.valueField}) FROM prePivotQuery GROUP BY ${pivot.rowField}`,
|
|
25
|
-
};
|
|
19
|
+
return `with
|
|
20
|
+
original_query as (${query})
|
|
21
|
+
SELECT ${pivot.rowField}, ${processedAggType}(${pivot.valueField}) FROM original_query GROUP BY ${pivot.rowField}`;
|
|
26
22
|
}
|
|
27
23
|
else if (pivot.columnField &&
|
|
28
24
|
pivot.rowField &&
|
|
29
25
|
pivot.valueField &&
|
|
30
26
|
processedAggType) {
|
|
31
27
|
// 2-d pivot
|
|
32
|
-
const sqlQuery =
|
|
33
|
-
return
|
|
34
|
-
preQueries: [sqlQuery],
|
|
35
|
-
query: '',
|
|
36
|
-
runQueryConfig: { getPivotQuery: true },
|
|
37
|
-
};
|
|
28
|
+
const sqlQuery = generateTwoDPivotQuery({ ...pivot, aggregationType: processedAggType }, query, columns);
|
|
29
|
+
return sqlQuery;
|
|
38
30
|
}
|
|
39
|
-
return
|
|
31
|
+
return query;
|
|
40
32
|
}
|
|
41
33
|
function createPivotSqlQuery(rowField, columnField, valueField, aggregationType, query) {
|
|
42
34
|
// const sqlAggregationType = convertToSqlAggregationType(aggregationType);
|
|
43
|
-
return `with
|
|
44
|
-
|
|
35
|
+
return `with query_table as (${query}),
|
|
36
|
+
distinct_column_fields as (
|
|
45
37
|
select distinct
|
|
46
38
|
${columnField}
|
|
47
39
|
from
|
|
48
|
-
|
|
40
|
+
query_table
|
|
49
41
|
),
|
|
50
|
-
|
|
42
|
+
case_when_query as (
|
|
51
43
|
select
|
|
52
44
|
string_agg(
|
|
53
45
|
concat(
|
|
@@ -60,25 +52,36 @@ function createPivotSqlQuery(rowField, columnField, valueField, aggregationType,
|
|
|
60
52
|
'
|
|
61
53
|
) as sql_part
|
|
62
54
|
from
|
|
63
|
-
|
|
55
|
+
distinct_column_fields
|
|
64
56
|
),
|
|
65
|
-
|
|
57
|
+
joined_queries as (
|
|
66
58
|
select
|
|
67
59
|
concat(
|
|
68
|
-
'WITH
|
|
60
|
+
'WITH query_table as (${query}) SELECT ${rowField}, ',
|
|
69
61
|
sql_part,
|
|
70
62
|
'
|
|
71
|
-
FROM
|
|
63
|
+
FROM query_table
|
|
72
64
|
GROUP BY ${rowField}
|
|
73
65
|
ORDER BY ${rowField}'
|
|
74
66
|
) as query
|
|
75
67
|
from
|
|
76
|
-
|
|
68
|
+
case_when_query
|
|
77
69
|
)
|
|
78
70
|
select
|
|
79
71
|
query
|
|
80
72
|
from
|
|
81
|
-
|
|
73
|
+
joined_queries;`;
|
|
74
|
+
}
|
|
75
|
+
function generateTwoDPivotQuery(pivot, query, columns) {
|
|
76
|
+
const caseWhens = columns.map((column) => {
|
|
77
|
+
return `${pivot.aggregationType}(
|
|
78
|
+
CASE WHEN ${pivot.columnField} = '${column.field}' THEN ${pivot.valueField} ELSE 0 END
|
|
79
|
+
) AS "${column.field}"`;
|
|
80
|
+
});
|
|
81
|
+
return `WITH
|
|
82
|
+
original_query as (${query})
|
|
83
|
+
SELECT ${pivot.rowField}, ${caseWhens.join(', ')}
|
|
84
|
+
FROM original_query GROUP BY ${pivot.rowField}`;
|
|
82
85
|
}
|
|
83
86
|
export function isValidPivot(pivot) {
|
|
84
87
|
if (pivot.rowField && pivot.aggregationType === 'count') {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const getCustomFieldInfo: (client: any, caller?: string) => Promise<any[]>;
|
|
2
|
+
export declare const getSchemaInfoWithCustomFields: (client: any, caller?: string) => Promise<{
|
|
3
|
+
schemaData: any;
|
|
4
|
+
customFieldsByTable: any[];
|
|
5
|
+
}>;
|
|
6
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,kBAAkB,WAAkB,GAAG,oCAqEnD,CAAC;AAEF,eAAO,MAAM,6BAA6B,WAChC,GAAG;;;EA2CZ,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
const parseResponse = (results) => {
|
|
2
|
+
if (results.data?.data) {
|
|
3
|
+
if (results.data.data.queries &&
|
|
4
|
+
results.data.data.queries.queryResults.length > 0) {
|
|
5
|
+
return results.data.data.queries.queryResults;
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
return results.data.data.tables;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
if (results.queries &&
|
|
13
|
+
results.queries.queryResults &&
|
|
14
|
+
results.queries.queryResults.length > 0) {
|
|
15
|
+
return results.queries.queryResults;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
return results.data.tables;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export const getCustomFieldInfo = async (client, caller = 'se') => {
|
|
23
|
+
let customFieldsByTableUnique = [];
|
|
24
|
+
try {
|
|
25
|
+
const { queryEndpoint, queryHeaders, publicKey, databaseType, customerId } = client;
|
|
26
|
+
if (databaseType.toLowerCase() !== 'postgresql' ||
|
|
27
|
+
!['65d65b57cdd8ae70a5648d9c', '665610862cf7a3000be66453'].includes(publicKey)) {
|
|
28
|
+
throw new Error('CUSTOM FIELDS IS ONLY ALLOWED FOR POSTGRESQL DATABASES');
|
|
29
|
+
}
|
|
30
|
+
let response = await fetch(`${queryEndpoint}?cfr-${caller}`, {
|
|
31
|
+
method: 'POST',
|
|
32
|
+
headers: {
|
|
33
|
+
...queryHeaders,
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
},
|
|
36
|
+
body: JSON.stringify({
|
|
37
|
+
metadata: {
|
|
38
|
+
clientId: publicKey,
|
|
39
|
+
publicKey,
|
|
40
|
+
task: 'custom-field-records',
|
|
41
|
+
databaseType: databaseType,
|
|
42
|
+
orgId: customerId,
|
|
43
|
+
},
|
|
44
|
+
}),
|
|
45
|
+
});
|
|
46
|
+
let result = await response.json();
|
|
47
|
+
const extractedData = parseResponse(result);
|
|
48
|
+
const customFieldsByTable = [];
|
|
49
|
+
extractedData.forEach((table) => {
|
|
50
|
+
if (!table.rows) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
table.rows.forEach((row) => {
|
|
54
|
+
customFieldsByTable.push({
|
|
55
|
+
ref_table: row.ref_table,
|
|
56
|
+
field: row.field,
|
|
57
|
+
ref_column: row.ref_column,
|
|
58
|
+
type: row.type,
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
// make sure the are no duplicate records in extractedData
|
|
63
|
+
const customFieldsByTableSet = new Set();
|
|
64
|
+
customFieldsByTableUnique = customFieldsByTable.filter((item) => {
|
|
65
|
+
if (customFieldsByTableSet.has(item.ref_table + item.field + item.ref_column + item.type)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
customFieldsByTableSet.add(item.ref_table + item.field + item.ref_column + item.type);
|
|
69
|
+
return true;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
console.error('CUSTOM FIELDS DISABLED');
|
|
74
|
+
}
|
|
75
|
+
return customFieldsByTableUnique;
|
|
76
|
+
};
|
|
77
|
+
export const getSchemaInfoWithCustomFields = async (client, caller = 'se') => {
|
|
78
|
+
const { queryEndpoint, queryHeaders, publicKey, databaseType, customerId } = client;
|
|
79
|
+
let customFieldsByTableUnique = [];
|
|
80
|
+
let getCustomFields = true;
|
|
81
|
+
if (!customerId || customerId !== '*') {
|
|
82
|
+
try {
|
|
83
|
+
customFieldsByTableUnique = await getCustomFieldInfo(client, caller);
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
getCustomFields = false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const response = await fetch(`${queryEndpoint}?schema-${caller}`, {
|
|
90
|
+
method: 'POST',
|
|
91
|
+
headers: {
|
|
92
|
+
...queryHeaders,
|
|
93
|
+
'Content-Type': 'application/json',
|
|
94
|
+
},
|
|
95
|
+
body: JSON.stringify({
|
|
96
|
+
metadata: {
|
|
97
|
+
clientId: publicKey,
|
|
98
|
+
publicKey: publicKey,
|
|
99
|
+
task: 'schema',
|
|
100
|
+
removeCustomerField: true,
|
|
101
|
+
getCustomFields: !client.customerId ||
|
|
102
|
+
client.customerId === '*' ||
|
|
103
|
+
(customFieldsByTableUnique.length === 0 && !getCustomFields)
|
|
104
|
+
? false
|
|
105
|
+
: true,
|
|
106
|
+
orgId: client.customerId || '*',
|
|
107
|
+
customFieldsByTable: customFieldsByTableUnique,
|
|
108
|
+
gatherSchemaData: true,
|
|
109
|
+
},
|
|
110
|
+
}),
|
|
111
|
+
});
|
|
112
|
+
const result = await response.json();
|
|
113
|
+
return {
|
|
114
|
+
schemaData: parseResponse(result),
|
|
115
|
+
customFieldsByTable: customFieldsByTableUnique,
|
|
116
|
+
};
|
|
117
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Column } from '../models/Columns';
|
|
2
2
|
export declare const hasColumnAlias: (columns: Column[], referencedColumns: string[]) => boolean;
|
|
3
|
-
export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any) => Promise<{
|
|
3
|
+
export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any, customFields: any[]) => Promise<{
|
|
4
4
|
[column: string]: {
|
|
5
5
|
[value: string]: boolean;
|
|
6
6
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,qBACE,MAAM,EAAE,KAC1B,OAUF,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG;;;;
|
|
1
|
+
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,qBACE,MAAM,EAAE,KAC1B,OAUF,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG,gBACG,GAAG,EAAE;;;;SA6DpB,CAAC"}
|
|
@@ -11,7 +11,7 @@ export const hasColumnAlias = (columns, referencedColumns) => {
|
|
|
11
11
|
}
|
|
12
12
|
return false;
|
|
13
13
|
};
|
|
14
|
-
export const getUniqueValuesByColumns = async (columns, query, rows, client) => {
|
|
14
|
+
export const getUniqueValuesByColumns = async (columns, query, rows, client, customFields) => {
|
|
15
15
|
const stringNames = columns.map((column) => column.field);
|
|
16
16
|
const uniqueValues = {};
|
|
17
17
|
if (!client.databaseType ||
|
|
@@ -24,6 +24,7 @@ export const getUniqueValuesByColumns = async (columns, query, rows, client) =>
|
|
|
24
24
|
orgId: client.customerId || '*',
|
|
25
25
|
clientId: client.publicKey,
|
|
26
26
|
databaseType: client?.databaseType,
|
|
27
|
+
customFieldsByTable: customFields,
|
|
27
28
|
},
|
|
28
29
|
};
|
|
29
30
|
const cloudBody = { query };
|
|
@@ -46,7 +47,7 @@ export const getUniqueValuesByColumns = async (columns, query, rows, client) =>
|
|
|
46
47
|
}
|
|
47
48
|
else {
|
|
48
49
|
const distinctValueQuery = generateDistinctQuery(stringNames, query);
|
|
49
|
-
const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client);
|
|
50
|
+
const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client, customFields);
|
|
50
51
|
if (!distinctStrings) {
|
|
51
52
|
return {};
|
|
52
53
|
}
|
|
@@ -56,7 +57,7 @@ export const getUniqueValuesByColumns = async (columns, query, rows, client) =>
|
|
|
56
57
|
}
|
|
57
58
|
return uniqueValues;
|
|
58
59
|
};
|
|
59
|
-
const fetchDistinctStrings = async (query, client) => {
|
|
60
|
+
const fetchDistinctStrings = async (query, client, customFields) => {
|
|
60
61
|
try {
|
|
61
62
|
const hostedBody = {
|
|
62
63
|
metadata: {
|
|
@@ -65,6 +66,7 @@ const fetchDistinctStrings = async (query, client) => {
|
|
|
65
66
|
orgId: client.customerId || '*',
|
|
66
67
|
clientId: client.publicKey,
|
|
67
68
|
databaseType: client?.databaseType,
|
|
69
|
+
customFieldsByTable: customFields,
|
|
68
70
|
},
|
|
69
71
|
};
|
|
70
72
|
const cloudBody = { query };
|
|
@@ -100,7 +100,7 @@ export const quillFormat = ({ value, format, }) => {
|
|
|
100
100
|
*/
|
|
101
101
|
const formatString = (value) => {
|
|
102
102
|
if (value === null || value === undefined) {
|
|
103
|
-
return '
|
|
103
|
+
return '-';
|
|
104
104
|
}
|
|
105
105
|
if (typeof value === 'object') {
|
|
106
106
|
return JSON.stringify(value);
|