@quillsql/react 2.10.27 → 2.10.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Chart.js +5 -4
- package/dist/cjs/Dashboard.d.ts +3 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +3 -10
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +1 -5
- package/dist/cjs/SQLEditor.d.ts +1 -5
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +5 -10
- package/dist/cjs/components/Chart/ChartSkeleton.d.ts +4 -1
- package/dist/cjs/components/Chart/ChartSkeleton.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +7 -2
- 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 +28 -57
- package/dist/cjs/components/QuillTable.d.ts +3 -0
- package/dist/cjs/components/QuillTable.d.ts.map +1 -0
- package/dist/cjs/{Table.js → components/QuillTable.js} +53 -224
- package/dist/cjs/components/UiComponents.d.ts +8 -2
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +3 -1
- package/dist/cjs/hooks/useFormat.d.ts +3 -1
- package/dist/cjs/hooks/useFormat.d.ts.map +1 -1
- package/dist/cjs/hooks/useFormat.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 +3 -3
- package/dist/cjs/utils/valueFormatter.d.ts +5 -0
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +59 -30
- package/dist/esm/Chart.js +5 -4
- package/dist/esm/Dashboard.d.ts +3 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +3 -10
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +1 -5
- package/dist/esm/SQLEditor.d.ts +1 -5
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +5 -10
- package/dist/esm/components/Chart/ChartSkeleton.d.ts +4 -1
- package/dist/esm/components/Chart/ChartSkeleton.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +9 -4
- 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 +25 -57
- package/dist/esm/components/QuillTable.d.ts +3 -0
- package/dist/esm/components/QuillTable.d.ts.map +1 -0
- package/dist/esm/{Table.js → components/QuillTable.js} +52 -222
- package/dist/esm/components/UiComponents.d.ts +8 -2
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +1 -0
- package/dist/esm/hooks/useFormat.d.ts +3 -1
- package/dist/esm/hooks/useFormat.d.ts.map +1 -1
- package/dist/esm/hooks/useFormat.js +13 -12
- 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/utils/valueFormatter.d.ts +5 -0
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +57 -29
- package/package.json +1 -1
- package/dist/cjs/Table.d.ts +0 -39
- package/dist/cjs/Table.d.ts.map +0 -1
- package/dist/esm/Table.d.ts +0 -39
- package/dist/esm/Table.d.ts.map +0 -1
|
@@ -1,62 +1,38 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
import { mergeComparisonRange } from './utils/merge';
|
|
9
|
-
import { useExport } from './hooks/useExport';
|
|
10
|
-
const Table = ({ chartId, columns, rows, containerStyle, csvFilename, showDownloadCsvButton, LoadingComponent, loading, height, }) => {
|
|
11
|
-
const { dispatch, dashboard } = useContext(DashboardContext);
|
|
12
|
-
const { dashboardFilters } = useContext(DashboardFiltersContext);
|
|
13
|
-
const [client, _] = useContext(ClientContext);
|
|
14
|
-
const [theme] = useContext(ThemeContext);
|
|
15
|
-
if (!chartId && rows && columns) {
|
|
16
|
-
return (_jsx(SpecialTable, { showDownloadCsvButton: showDownloadCsvButton, csvFilename: csvFilename || 'table', columns: columns, rows: rows ?? [], height: containerStyle?.height || height || '100%', theme: theme, containerStyle: containerStyle, LoadingComponent: LoadingComponent, loading: loading }));
|
|
17
|
-
}
|
|
18
|
-
return (_jsx(ChartUpdater, { showDownloadCsvButton: showDownloadCsvButton, dispatch: dispatch, dashboard: dashboard, chartId: chartId, containerStyle: containerStyle, dashboardFilters: dashboardFilters, client: client, theme: theme, csvFilename: csvFilename, LoadingComponent: LoadingComponent }));
|
|
19
|
-
};
|
|
20
|
-
const compareValues = (a, b, column) => {
|
|
21
|
-
const valueA = a[column];
|
|
22
|
-
const valueB = b[column];
|
|
23
|
-
// Null checks
|
|
24
|
-
if (valueA === null && valueB === null) {
|
|
25
|
-
return 0; // Both values are null, consider them equal
|
|
26
|
-
}
|
|
27
|
-
else if (valueA === null) {
|
|
28
|
-
return -1; // ValueA is null, consider it smaller
|
|
29
|
-
}
|
|
30
|
-
else if (valueB === null) {
|
|
31
|
-
return 1; // ValueB is null, consider it smaller
|
|
32
|
-
}
|
|
33
|
-
// For numbers
|
|
34
|
-
if (!isNaN(valueA) && !isNaN(valueB)) {
|
|
35
|
-
return valueA - valueB;
|
|
36
|
-
}
|
|
37
|
-
// For dates
|
|
38
|
-
if (new Date(valueA) !== 'Invalid Date' &&
|
|
39
|
-
!isNaN(new Date(valueA)) &&
|
|
40
|
-
new Date(valueB) !== 'Invalid Date' &&
|
|
41
|
-
!isNaN(new Date(valueB))) {
|
|
42
|
-
return new Date(valueA) - new Date(valueB);
|
|
43
|
-
}
|
|
44
|
-
// For strings
|
|
45
|
-
return valueA.localeCompare(valueB);
|
|
46
|
-
};
|
|
47
|
-
export function SpecialTable({ columns, rows, height, containerStyle, loading, LoadingComponent, theme, showDownloadCsvButton = true, csvFilename, DownloadCSVButtonComponent, AddToDashboardButtonComponent, }) {
|
|
2
|
+
import { useContext, useEffect, useState, useMemo } from 'react';
|
|
3
|
+
import { LoadingSpinner } from './UiComponents';
|
|
4
|
+
import { useExport } from '../hooks/useExport';
|
|
5
|
+
import { compareValues, quillFormat } from '../utils/valueFormatter';
|
|
6
|
+
import { ThemeContext } from '../Context';
|
|
7
|
+
export default function QuillTable({ rows, columns, loading, showDownloadCSVButton, downloadFileName, containerStyle, LoadingComponent = () => _jsx(LoadingSpinner, {}), }) {
|
|
48
8
|
const [activeRows, setActiveRows] = useState([]);
|
|
49
9
|
const [page, setPage] = useState(1);
|
|
50
10
|
const [maxPage, setMaxPage] = useState(1);
|
|
51
11
|
const [sortColumn, setSortColumn] = useState(null);
|
|
52
12
|
const [sortDirection, setSortDirection] = useState('desc');
|
|
13
|
+
const [theme] = useContext(ThemeContext);
|
|
14
|
+
const [isFormatting, setIsFormatting] = useState(false);
|
|
15
|
+
const formattedRows = useMemo(() => {
|
|
16
|
+
setIsFormatting(true);
|
|
17
|
+
return rows.map((row) => {
|
|
18
|
+
return columns.reduce((formattedRow, column) => {
|
|
19
|
+
// Apply the format function to each field in the row
|
|
20
|
+
const formattedValue = quillFormat({
|
|
21
|
+
value: row[column.field],
|
|
22
|
+
format: column.format,
|
|
23
|
+
});
|
|
24
|
+
formattedRow[column.field] = formattedValue;
|
|
25
|
+
return formattedRow;
|
|
26
|
+
}, {});
|
|
27
|
+
});
|
|
28
|
+
}, [rows]);
|
|
53
29
|
const { downloadCSV } = useExport({
|
|
54
|
-
rows,
|
|
30
|
+
rows: formattedRows,
|
|
55
31
|
fields: columns,
|
|
56
|
-
name:
|
|
32
|
+
name: downloadFileName,
|
|
57
33
|
});
|
|
58
34
|
useEffect(() => {
|
|
59
|
-
const sortedRows = [...
|
|
35
|
+
const sortedRows = [...formattedRows];
|
|
60
36
|
if (sortColumn) {
|
|
61
37
|
sortedRows.sort((a, b) => {
|
|
62
38
|
const result = compareValues(a, b, sortColumn);
|
|
@@ -69,7 +45,8 @@ export function SpecialTable({ columns, rows, height, containerStyle, loading, L
|
|
|
69
45
|
setMaxPage(Math.ceil(sortedRows.length / 10));
|
|
70
46
|
}
|
|
71
47
|
setActiveRows(sortedRows.slice(start, end));
|
|
72
|
-
|
|
48
|
+
setIsFormatting(false);
|
|
49
|
+
}, [page, formattedRows, sortColumn, sortDirection]);
|
|
73
50
|
const increasePage = () => {
|
|
74
51
|
if (page === maxPage) {
|
|
75
52
|
return;
|
|
@@ -91,88 +68,40 @@ export function SpecialTable({ columns, rows, height, containerStyle, loading, L
|
|
|
91
68
|
setSortDirection('desc');
|
|
92
69
|
}
|
|
93
70
|
};
|
|
94
|
-
if (loading) {
|
|
71
|
+
if (loading || isFormatting) {
|
|
95
72
|
return (_jsx("div", { style: {
|
|
96
|
-
|
|
97
|
-
// paddingLeft: 25,
|
|
98
|
-
// paddingRight: 25,
|
|
99
|
-
// borderRadius: 8,
|
|
100
|
-
// marginTop: 25,
|
|
101
|
-
// overflow: 'visible',
|
|
73
|
+
height: '100%',
|
|
102
74
|
width: '100%',
|
|
103
|
-
height: height || '100%',
|
|
104
75
|
display: 'flex',
|
|
105
76
|
flexDirection: 'column',
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}, children:
|
|
110
|
-
height: '100%',
|
|
111
|
-
overflow: 'auto',
|
|
112
|
-
borderRadius: 6,
|
|
113
|
-
border: '1px solid rgb(229, 231, 235)',
|
|
114
|
-
padding: 0,
|
|
115
|
-
margin: 0,
|
|
116
|
-
// border: 'none',
|
|
117
|
-
boxSizing: 'border-box',
|
|
118
|
-
outline: 'none',
|
|
119
|
-
display: 'flex',
|
|
120
|
-
flexDirection: 'column',
|
|
121
|
-
justifyContent: 'center',
|
|
122
|
-
alignItems: 'center',
|
|
123
|
-
// maxHeight: 600,
|
|
124
|
-
}, children: [LoadingComponent && _jsx(LoadingComponent, {}), !LoadingComponent && (_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: theme?.primaryTextColor || '#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" }) })] }))] }) }));
|
|
125
|
-
}
|
|
126
|
-
if (!columns || !columns.length || !activeRows) {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
// since setting the rows and columns of a table are separate actions,
|
|
130
|
-
// there will be a brief moment when the rows and columns don't match up
|
|
131
|
-
// when you are changing them. this guards against that case.
|
|
132
|
-
// TODO: make code below this check more resilient so that this check isn't needed
|
|
133
|
-
if (activeRows.length > 0) {
|
|
134
|
-
let allColumnsPresent = true;
|
|
135
|
-
columns.forEach((column) => {
|
|
136
|
-
if (!(column.field in activeRows[0])) {
|
|
137
|
-
allColumnsPresent = false;
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
if (!allColumnsPresent) {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
77
|
+
justifyContent: 'center',
|
|
78
|
+
alignItems: 'center',
|
|
79
|
+
...containerStyle,
|
|
80
|
+
}, children: _jsx(LoadingComponent, {}) }));
|
|
143
81
|
}
|
|
144
82
|
return (_jsxs("div", { style: {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
// paddingRight: 25,
|
|
148
|
-
// borderRadius: 8,
|
|
149
|
-
// marginTop: 25,
|
|
83
|
+
width: '100%',
|
|
84
|
+
height: '100%',
|
|
150
85
|
overflow: 'visible',
|
|
151
|
-
height: height,
|
|
152
86
|
display: 'flex',
|
|
153
87
|
flexDirection: 'column',
|
|
154
|
-
|
|
155
|
-
// @ts-ignore
|
|
156
|
-
// boxShadow: 'rgba(231, 231, 231, 0.5) 0px 1px 2px 0px',
|
|
88
|
+
...containerStyle,
|
|
157
89
|
}, children: [_jsx("div", { style: {
|
|
158
90
|
height: '100%',
|
|
91
|
+
width: '100%',
|
|
159
92
|
overflow: 'auto',
|
|
160
93
|
borderRadius: 6,
|
|
161
94
|
border: '1px solid rgb(229, 231, 235)',
|
|
162
95
|
padding: 0,
|
|
163
96
|
margin: 0,
|
|
164
|
-
// border: 'none',
|
|
165
97
|
boxSizing: 'border-box',
|
|
166
98
|
outline: 'none',
|
|
167
|
-
// maxHeight: 600,
|
|
168
99
|
}, children: _jsxs("div", { role: "table", className: "table", style: { minWidth: '0px', width: '100%', height: '100%' }, children: [_jsx("div", { className: "thead", children: _jsx("div", { role: "row", className: "tr", style: {
|
|
169
100
|
display: 'flex',
|
|
170
101
|
flex: '1 0 auto',
|
|
171
102
|
minWidth: '100px',
|
|
172
103
|
boxSizing: 'border-box',
|
|
173
|
-
}, children: columns.map((column, index) => (_jsxs("div", { onClick: () => toggleSort(column),
|
|
174
|
-
// @ts-ignore
|
|
175
|
-
style: {
|
|
104
|
+
}, children: columns.map((column, index) => (_jsxs("div", { onClick: () => toggleSort(column), style: {
|
|
176
105
|
boxSizing: 'border-box',
|
|
177
106
|
flex: '150 0 auto',
|
|
178
107
|
minWidth: '50px',
|
|
@@ -196,9 +125,7 @@ export function SpecialTable({ columns, rows, height, containerStyle, loading, L
|
|
|
196
125
|
display: 'flex',
|
|
197
126
|
flexDirection: 'row',
|
|
198
127
|
justifyContent: 'space-between',
|
|
199
|
-
}, children: [_jsx("div", { "aria-haspopup": "dialog", "aria-expanded": "false", "aria-controls": "mantine-r6-dropdown",
|
|
200
|
-
// @ts-ignore
|
|
201
|
-
style: {
|
|
128
|
+
}, children: [_jsx("div", { "aria-haspopup": "dialog", "aria-expanded": "false", "aria-controls": "mantine-r6-dropdown", style: {
|
|
202
129
|
// fontFamily:
|
|
203
130
|
// 'Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"',
|
|
204
131
|
WebkitTapHighlightColor: 'transparent',
|
|
@@ -216,7 +143,16 @@ export function SpecialTable({ columns, rows, height, containerStyle, loading, L
|
|
|
216
143
|
transform: sortDirection === 'desc'
|
|
217
144
|
? 'rotate(180deg)'
|
|
218
145
|
: undefined,
|
|
219
|
-
}, children: _jsx("path", { fillRule: "evenodd", d: "M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z", clipRule: "evenodd" }) }))] }, 'sqlcol' + index))) }) }),
|
|
146
|
+
}, children: _jsx("path", { fillRule: "evenodd", d: "M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z", clipRule: "evenodd" }) }))] }, 'sqlcol' + index))) }) }), activeRows.length === 0 || columns.length === 0 ? (_jsx("div", { style: {
|
|
147
|
+
paddingTop: '60px',
|
|
148
|
+
display: 'flex',
|
|
149
|
+
flex: '1 0 auto',
|
|
150
|
+
margin: 'auto',
|
|
151
|
+
justifyContent: 'center',
|
|
152
|
+
alignItems: 'center',
|
|
153
|
+
fontSize: 13,
|
|
154
|
+
color: theme?.secondaryTextColor || 'rgb(55, 65, 81)',
|
|
155
|
+
}, children: "No results returned." })) : (_jsx("div", { role: "rowgroup", className: "tbody", children: activeRows.map((row, rowIndex) => (_jsx("div", { role: "row", className: "tr", style: {
|
|
220
156
|
display: 'flex',
|
|
221
157
|
flex: '1 0 auto',
|
|
222
158
|
minWidth: '100px',
|
|
@@ -263,28 +199,7 @@ export function SpecialTable({ columns, rows, height, containerStyle, loading, L
|
|
|
263
199
|
overflow: 'hidden',
|
|
264
200
|
padding: '8px 16px',
|
|
265
201
|
userSelect: 'none',
|
|
266
|
-
}, children: column.
|
|
267
|
-
? valueFormatter({
|
|
268
|
-
value: row[column.field],
|
|
269
|
-
field: column.field,
|
|
270
|
-
fields: columns,
|
|
271
|
-
})
|
|
272
|
-
: typeof row[column.field] === 'object'
|
|
273
|
-
? JSON.stringify(row[column.field]).length > 55
|
|
274
|
-
? JSON.stringify(row[column.field]).substring(0, 52) + '...'
|
|
275
|
-
: JSON.stringify(row[column.field])
|
|
276
|
-
: row[column.field].length > 55
|
|
277
|
-
? row[column.field].substring(0, 52) + '...'
|
|
278
|
-
: row[column.field] }) }) }, 'sqlcell' + columnIndex))) }, 'sqlrow' + rowIndex))) }), activeRows.length === 0 && (_jsx("div", { style: {
|
|
279
|
-
paddingTop: '60px',
|
|
280
|
-
display: 'flex',
|
|
281
|
-
flex: '1 0 auto',
|
|
282
|
-
margin: 'auto',
|
|
283
|
-
justifyContent: 'center',
|
|
284
|
-
alignItems: 'center',
|
|
285
|
-
fontSize: 13,
|
|
286
|
-
color: theme?.secondaryTextColor || 'rgb(55, 65, 81)',
|
|
287
|
-
}, children: "No results found for specified time period." }))] }) }), _jsx("div", { style: { position: 'relative' }, children: _jsx("div", { style: {
|
|
202
|
+
}, children: row[column.field] }) }) }, 'sqlcell' + columnIndex))) }, 'sqlrow' + rowIndex))) }))] }) }), _jsx("div", { style: { position: 'relative' }, children: _jsx("div", { style: {
|
|
288
203
|
display: 'flex',
|
|
289
204
|
flex: '1 0 auto',
|
|
290
205
|
minWidth: '100px',
|
|
@@ -308,7 +223,7 @@ export function SpecialTable({ columns, rows, height, containerStyle, loading, L
|
|
|
308
223
|
alignItems: 'center',
|
|
309
224
|
justifyContent: 'space-between',
|
|
310
225
|
width: '100%',
|
|
311
|
-
}, children: [_jsx("button", { onClick:
|
|
226
|
+
}, children: [showDownloadCSVButton ? (_jsx("button", { onClick: downloadCSV, style: {
|
|
312
227
|
fontSize: 14,
|
|
313
228
|
paddingLeft: 12,
|
|
314
229
|
fontFamily: theme?.fontFamily,
|
|
@@ -317,7 +232,7 @@ export function SpecialTable({ columns, rows, height, containerStyle, loading, L
|
|
|
317
232
|
fontWeight: 500,
|
|
318
233
|
cursor: 'pointer',
|
|
319
234
|
border: 'none',
|
|
320
|
-
}, children:
|
|
235
|
+
}, children: "Download CSV" })) : (_jsx("div", {})), _jsxs("div", { style: {
|
|
321
236
|
display: 'flex',
|
|
322
237
|
flexDirection: 'row',
|
|
323
238
|
alignItems: 'center',
|
|
@@ -335,88 +250,3 @@ export function SpecialTable({ columns, rows, height, containerStyle, loading, L
|
|
|
335
250
|
background: 'transparent',
|
|
336
251
|
}, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: theme?.chartLabelFontFamily || theme?.fontFamily, height: "16px", width: "16px", children: _jsx("path", { fillRule: "evenodd", d: "M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z", clipRule: "evenodd" }) }) }), _jsx("div", { style: { width: 12 } })] })] }) }) })] }));
|
|
337
252
|
}
|
|
338
|
-
const ChartUpdater = ({ chartId, containerStyle, dashboard, dispatch, client, dashboardFilters, theme, downloadCSV, csvFilename, showDownloadCsvButton = true, LoadingComponent, }) => {
|
|
339
|
-
const [chartConfig, setChartConfig] = useState(null);
|
|
340
|
-
const [loading, setLoading] = useState(true);
|
|
341
|
-
useEffect(() => {
|
|
342
|
-
let isSubscribed = true;
|
|
343
|
-
async function getChartOptions() {
|
|
344
|
-
if (isSubscribed) {
|
|
345
|
-
setLoading(true);
|
|
346
|
-
try {
|
|
347
|
-
const hostedBody = { metadata: {
|
|
348
|
-
dashboardItemId: chartId,
|
|
349
|
-
orgId: client.customerId || '*',
|
|
350
|
-
task: 'item',
|
|
351
|
-
filters: [...Object.values(dashboardFilters)],
|
|
352
|
-
clientId: client.publicKey,
|
|
353
|
-
databaseType: client?.databaseType,
|
|
354
|
-
} };
|
|
355
|
-
const cloudBody = {
|
|
356
|
-
id: chartId,
|
|
357
|
-
filters: [...Object.values(dashboardFilters)],
|
|
358
|
-
};
|
|
359
|
-
const resp = await getData(client, 'itempost', 'omit', hostedBody, cloudBody);
|
|
360
|
-
if (resp && resp.name !== 'error') {
|
|
361
|
-
if (resp.compareRows) {
|
|
362
|
-
mergeComparisonRange(resp);
|
|
363
|
-
}
|
|
364
|
-
dispatch({
|
|
365
|
-
type: 'UPDATE_DASHBOARD_ITEM',
|
|
366
|
-
id: chartId,
|
|
367
|
-
data: {
|
|
368
|
-
...resp,
|
|
369
|
-
filtersApplied: dashboardFilters,
|
|
370
|
-
},
|
|
371
|
-
});
|
|
372
|
-
}
|
|
373
|
-
setLoading(false);
|
|
374
|
-
}
|
|
375
|
-
catch (e) {
|
|
376
|
-
console.log('Error fetching chart: ', e);
|
|
377
|
-
setLoading(false);
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
getChartOptions();
|
|
382
|
-
return () => {
|
|
383
|
-
isSubscribed = false;
|
|
384
|
-
};
|
|
385
|
-
}, [dashboardFilters, client.customerId, chartId]);
|
|
386
|
-
// const dateFilter = Object.values(dashboardFilters).find(
|
|
387
|
-
// (filter) => filter.filterType == 'date_range',
|
|
388
|
-
// );
|
|
389
|
-
// const pivotTable = useMemo(() => {
|
|
390
|
-
// const pivot = dashboard[chartId]?.pivot;
|
|
391
|
-
// const data = dashboard[chartId];
|
|
392
|
-
// return pivot && data?.rows
|
|
393
|
-
// ? generatePivotTable(
|
|
394
|
-
// pivot,
|
|
395
|
-
// data.rows,
|
|
396
|
-
// dateFilter?.startDate
|
|
397
|
-
// ? [dateFilter?.startDate, dateFilter?.endDate, null]
|
|
398
|
-
// : [null, null, null],
|
|
399
|
-
// )
|
|
400
|
-
// : null;
|
|
401
|
-
// }, [dashboard, chartId, dateFilter]);
|
|
402
|
-
if (!dashboard[chartId] || loading) {
|
|
403
|
-
return (_jsx("div", {
|
|
404
|
-
// className="flex flex-col flex-1 h-[100%]"
|
|
405
|
-
style: {
|
|
406
|
-
...containerStyle,
|
|
407
|
-
// marginLeft: 25,
|
|
408
|
-
// marginRight: 25,
|
|
409
|
-
boxSizing: 'content-box',
|
|
410
|
-
height: '100%',
|
|
411
|
-
display: 'flex',
|
|
412
|
-
flexDirection: 'column',
|
|
413
|
-
flex: 1,
|
|
414
|
-
}, children: _jsx("div", { style: {
|
|
415
|
-
height: containerStyle?.height || 300,
|
|
416
|
-
width: '100%',
|
|
417
|
-
boxSizing: 'content-box',
|
|
418
|
-
}, children: _jsxs("svg", { width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", children: [_jsx("rect", { width: "100%", height: "100%", fill: "#F9F9FA" }), _jsx("defs", { fill: "#F9F9FA", children: _jsxs("linearGradient", { id: "skeletonGradient", x1: "0%", y1: "0%", x2: "10%", y2: "0%", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0%", stopColor: "rgba(255,255,255,0)" }), _jsx("stop", { offset: "50%", stopColor: "#FEFEFE" }), _jsx("stop", { offset: "100%", stopColor: "rgba(255,255,255,0)" }), _jsx("animate", { attributeName: "x1", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }), _jsx("animate", { attributeName: "x2", from: "-50%", to: "150%", dur: "2s", repeatCount: "indefinite" })] }) }), _jsx("rect", { width: "50%", height: "100%", fill: "url(#skeletonGradient)", children: _jsx("animate", { attributeName: "x", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }) })] }) }) }));
|
|
419
|
-
}
|
|
420
|
-
return (_jsx(SpecialTable, { showDownloadCsvButton: showDownloadCsvButton, csvFilename: csvFilename || dashboard[chartId].name, columns: dashboard[chartId].columns, rows: dashboard[chartId].rows ?? [], height: containerStyle?.height || '100%', theme: theme, containerStyle: containerStyle, LoadingComponent: LoadingComponent }));
|
|
421
|
-
};
|
|
422
|
-
export default Table;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
export interface Option {
|
|
3
3
|
value: string;
|
|
4
4
|
label: string;
|
|
@@ -27,9 +27,12 @@ export interface ButtonComponentProps {
|
|
|
27
27
|
export interface TableComponentProps {
|
|
28
28
|
rows: any[];
|
|
29
29
|
columns: any[];
|
|
30
|
-
|
|
30
|
+
containerStyle?: React.CSSProperties;
|
|
31
31
|
loading?: boolean;
|
|
32
|
+
showDownloadCSVButton?: boolean;
|
|
33
|
+
downloadFileName?: string;
|
|
32
34
|
LoadingComponent?: () => JSX.Element;
|
|
35
|
+
DownloadCSVButtonComponent?: (props: ButtonComponentProps) => JSX.Element;
|
|
33
36
|
}
|
|
34
37
|
export interface TextInputComponentProps {
|
|
35
38
|
onChange: (e: any) => void;
|
|
@@ -121,4 +124,7 @@ export declare const MemoizedDeleteButton: ({ onClick, style }: {
|
|
|
121
124
|
onClick: any;
|
|
122
125
|
style: any;
|
|
123
126
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
127
|
+
export declare const LoadingSpinner: ({ ...props }: {
|
|
128
|
+
[x: string]: any;
|
|
129
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
124
130
|
//# sourceMappingURL=UiComponents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components/UiComponents.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components/UiComponents.tsx"],"names":[],"mappings":"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"}
|
|
@@ -245,3 +245,4 @@ export const MemoizedDeleteButton = ({ onClick, style }) => (_jsxs("button", { c
|
|
|
245
245
|
.quill-delete-button:hover {
|
|
246
246
|
background-color: rgba(56, 65, 81, 0.03);
|
|
247
247
|
}` }), _jsx(XIcon, { height: "20", width: "20", fill: "#6C727F" })] }));
|
|
248
|
+
export const LoadingSpinner = ({ ...props }) => (_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" }) })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormat.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFormat.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,YAAa,MAAM
|
|
1
|
+
{"version":3,"file":"useFormat.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFormat.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,YAAa,MAAM;;;;CAwB9C,CAAC"}
|
|
@@ -3,18 +3,19 @@ import { useQuill } from './useQuill';
|
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
4
|
export const useMemoizedRows = (chartId) => {
|
|
5
5
|
const { data } = useQuill(chartId);
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
});
|
|
6
|
+
if (!data)
|
|
7
|
+
return { formattedRows: [] };
|
|
8
|
+
const { rows, columns } = data;
|
|
9
|
+
const formattedRows = useMemo(() => rows.map((row) => {
|
|
10
|
+
return columns.reduce((formattedRow, column) => {
|
|
11
|
+
// Apply the format function to each field in the row
|
|
12
|
+
const formattedValue = quillFormat({
|
|
13
|
+
value: row[column.field],
|
|
14
|
+
format: column.format,
|
|
16
15
|
});
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
formattedRow[column.field] = formattedValue;
|
|
17
|
+
return formattedRow;
|
|
18
|
+
}, {});
|
|
19
|
+
}), [rows]);
|
|
19
20
|
return { formattedRows };
|
|
20
21
|
};
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { default as Dashboard, type DashboardProps, type DashboardItemProps, type DashboardItem, type AxisFormat, } from './Dashboard';
|
|
2
2
|
export { default as QuillProvider } from './QuillProvider';
|
|
3
3
|
export { default as Chart } from './Chart';
|
|
4
|
-
export { default as
|
|
4
|
+
export { default as QuillTable } from './components/QuillTable';
|
|
5
5
|
export { default as SQLEditor, SchemaListComponent } from './SQLEditor';
|
|
6
6
|
export { default as ReportBuilder } from './ReportBuilder';
|
|
7
7
|
export { default as ChartBuilder } from './ChartBuilder';
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,EACN,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,GACV,MAAM,mCAAmC,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export { default as Dashboard, } from './Dashboard';
|
|
3
3
|
export { default as QuillProvider } from './QuillProvider';
|
|
4
4
|
export { default as Chart } from './Chart';
|
|
5
|
-
export { default as
|
|
5
|
+
export { default as QuillTable } from './components/QuillTable';
|
|
6
6
|
export { default as SQLEditor, SchemaListComponent } from './SQLEditor';
|
|
7
7
|
export { default as ReportBuilder } from './ReportBuilder';
|
|
8
8
|
export { default as ChartBuilder } from './ChartBuilder';
|
|
@@ -18,5 +18,10 @@ export declare const quillFormat: ({ value, format, }: {
|
|
|
18
18
|
value: any;
|
|
19
19
|
format: string;
|
|
20
20
|
}) => string;
|
|
21
|
+
export declare const compareValues: (a: {
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}, b: {
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}, column: string) => number;
|
|
21
26
|
export {};
|
|
22
27
|
//# sourceMappingURL=valueFormatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatter.ts"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA8B,KAAK,KAAG,MAwChE,CAAC;AAEF,eAAO,MAAM,WAAW;WAIf,GAAG;YACF,MAAM;MACZ,
|
|
1
|
+
{"version":3,"file":"valueFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatter.ts"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA8B,KAAK,KAAG,MAwChE,CAAC;AAEF,eAAO,MAAM,WAAW;WAIf,GAAG;YACF,MAAM;MACZ,MAoCH,CAAC;AAmJF,eAAO,MAAM,aAAa;;;;WAGhB,MAAM,KACb,MA2BF,CAAC"}
|