@quillsql/react 2.9.8 → 2.9.91
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 +1 -1
- package/dist/cjs/ChartBuilder.js +5 -7
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +6 -0
- package/dist/cjs/Table.js +1 -1
- package/dist/cjs/utils/axisFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/axisFormatter.js +16 -0
- package/dist/cjs/utils/dataFetcher.js +18 -18
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +16 -0
- package/dist/cjs/utils/valueFormatterCSV.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatterCSV.js +13 -0
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +1 -1
- package/dist/esm/ChartBuilder.js +5 -7
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +6 -0
- package/dist/esm/Table.js +1 -1
- package/dist/esm/utils/axisFormatter.d.ts.map +1 -1
- package/dist/esm/utils/axisFormatter.js +16 -0
- package/dist/esm/utils/dataFetcher.js +18 -18
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +16 -0
- package/dist/esm/utils/valueFormatterCSV.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatterCSV.js +13 -0
- package/package.json +1 -1
package/dist/cjs/Chart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AA0HA,QAAA,MAAM,KAAK;aAcA,MAAM;aACN,GAAG;;;;;uBAKO,OAAO;eACf,OAAO;eACP,OAAO;uBACC,OAAO;6BACD,OAAO;6CAqCjC,CAAC;
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AA0HA,QAAA,MAAM,KAAK;aAcA,MAAM;aACN,GAAG;;;;;uBAKO,OAAO;eACf,OAAO;eACP,OAAO;uBACC,OAAO;6BACD,OAAO;6CAqCjC,CAAC;AA2hBF,eAAe,KAAK,CAAC"}
|
package/dist/cjs/Chart.js
CHANGED
|
@@ -265,7 +265,7 @@ const ChartUpdater = ({ colors, chartId, config, containerStyle, dashboard, disp
|
|
|
265
265
|
}
|
|
266
266
|
if (chartTypes.includes('table')) {
|
|
267
267
|
const data = dashboard[chartId] ? dashboard[chartId] : config;
|
|
268
|
-
return ((0, jsx_runtime_1.jsx)(Table_1.SpecialTable, { rows: pivotTable?.rows ?? data.rows ?? [], columns: pivotTable?.columns
|
|
268
|
+
return ((0, jsx_runtime_1.jsx)(Table_1.SpecialTable, { rows: pivotTable?.rows ?? data.rows ?? [], columns: pivotTable?.columns ?? data.yAxisFields ?? data.columns, height: '400px', containerStyle: {
|
|
269
269
|
...containerStyle,
|
|
270
270
|
}, theme: theme, isTableChart: true, name: data.name }));
|
|
271
271
|
}
|
package/dist/cjs/ChartBuilder.js
CHANGED
|
@@ -477,7 +477,7 @@ function ChartBuilderForm({ TextInput = UiComponents_1.MemoizedTextInput, Select
|
|
|
477
477
|
...resp,
|
|
478
478
|
rows,
|
|
479
479
|
fields,
|
|
480
|
-
filtersApplied: dashboardFilters
|
|
480
|
+
filtersApplied: dashboardFilters,
|
|
481
481
|
},
|
|
482
482
|
});
|
|
483
483
|
}
|
|
@@ -511,12 +511,10 @@ function ChartBuilderForm({ TextInput = UiComponents_1.MemoizedTextInput, Select
|
|
|
511
511
|
})) })] })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Chart type" }), (0, jsx_runtime_1.jsx)(Select, { label: 'Chart Type', value: formData.chartType, onChange: (e) => handleChange(e, 'chartType'),
|
|
512
512
|
// filter out metric for all pivots
|
|
513
513
|
// filter out bar and pie for row and column pivot
|
|
514
|
-
options: CHART_TYPES.filter((elem) => !
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
(
|
|
518
|
-
formData.pivot.columnField &&
|
|
519
|
-
(elem === 'bar' || elem === 'pie')))).map((elem) => ({ label: elem, value: elem })) })] })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
|
|
514
|
+
options: CHART_TYPES.filter((elem) => !((formData.pivot && elem === 'metric') ||
|
|
515
|
+
(formData.pivot &&
|
|
516
|
+
formData.pivot.columnField &&
|
|
517
|
+
(elem === 'bar' || elem === 'pie')))).map((elem) => ({ label: elem, value: elem })) })] })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
|
|
520
518
|
display: 'flex',
|
|
521
519
|
flexDirection: 'column',
|
|
522
520
|
gap: 12,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAUxE,wBAAgB,qBAAqB,CAAC,MAAM,KAAA;;;;;
|
|
1
|
+
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAUxE,wBAAgB,qBAAqB,CAAC,MAAM,KAAA;;;;;EA0E3C;AA2BD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC/D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IACrE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7D,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;CACvC;AAQD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA+ED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,cAAoC,EACpC,eAAe,EACf,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,eAAuB,EACvB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,UAAkB,EAClB,mBAA2B,EAC3B,sBAA8B,EAC9B,oBAA4B,EAC5B,wBAAgC,EAChC,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,yBAA8C,EAC9C,aAAyB,GAC1B,EAAE,cAAc,2CA2YhB"}
|
package/dist/cjs/SQLEditor.js
CHANGED
|
@@ -31,6 +31,9 @@ function convertPostgresColumn(column) {
|
|
|
31
31
|
case 1082: // date
|
|
32
32
|
case 1083: // time
|
|
33
33
|
case 1184: // timestamptz
|
|
34
|
+
case 1186: // interval
|
|
35
|
+
format = 'interval';
|
|
36
|
+
break;
|
|
34
37
|
case 1114: // timestamp
|
|
35
38
|
format = 'MMM_dd_yyyy';
|
|
36
39
|
break;
|
|
@@ -66,6 +69,9 @@ function convertPostgresColumn(column) {
|
|
|
66
69
|
case 1184: // timestamptz
|
|
67
70
|
fieldType = 'timestamptz';
|
|
68
71
|
break;
|
|
72
|
+
case 1186: // interval
|
|
73
|
+
fieldType = 'interval';
|
|
74
|
+
break;
|
|
69
75
|
case 1114: // timestamp
|
|
70
76
|
fieldType = 'timestamp';
|
|
71
77
|
break;
|
package/dist/cjs/Table.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.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,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,8BAIvB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.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,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,8BAIvB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OAgC5B,CAAC"}
|
|
@@ -25,6 +25,7 @@ const axisFormatter = ({ value, field, fields, }) => {
|
|
|
25
25
|
one_decimal_place: formatOneDecimalPlace,
|
|
26
26
|
two_decimal_places: formatTwoDecimalPlaces,
|
|
27
27
|
string: formatString,
|
|
28
|
+
interval: formatInterval,
|
|
28
29
|
yyyy: format_YYYY,
|
|
29
30
|
MMM_yyyy: format_MMM_yyyy,
|
|
30
31
|
MMM_dd_yyyy: format_MMM_dd_yyyy,
|
|
@@ -48,6 +49,21 @@ exports.axisFormatter = axisFormatter;
|
|
|
48
49
|
* Formats the value as a string using the built-in converstion.
|
|
49
50
|
*/
|
|
50
51
|
const formatString = (value) => value.toString();
|
|
52
|
+
/**
|
|
53
|
+
* Formats the value as an interval.
|
|
54
|
+
*/
|
|
55
|
+
const INTERVALS = [
|
|
56
|
+
'years',
|
|
57
|
+
'months',
|
|
58
|
+
'days',
|
|
59
|
+
'hours',
|
|
60
|
+
'minutes',
|
|
61
|
+
'seconds',
|
|
62
|
+
];
|
|
63
|
+
const formatInterval = (interval) => INTERVALS.map((component) => interval[component])
|
|
64
|
+
.filter((value) => value !== undefined && value !== null)
|
|
65
|
+
.map((value, index) => `${value} ${INTERVALS[index]}`)
|
|
66
|
+
.join(', ');
|
|
51
67
|
/**
|
|
52
68
|
* Formats the value as a (rounded) currency amount in dollars.
|
|
53
69
|
*
|
|
@@ -4,18 +4,18 @@ exports.getDataFromCloud = exports.getData = void 0;
|
|
|
4
4
|
// this function gets the data either from the self hosted endpoint or
|
|
5
5
|
// our cloud server
|
|
6
6
|
async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cloudRequestBody, method = 'POST') {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
7
|
+
try {
|
|
8
|
+
if (client.queryEndpoint) {
|
|
9
|
+
// self hosted
|
|
10
|
+
const resp = await fetch(client.queryEndpoint, {
|
|
11
|
+
method: 'POST',
|
|
12
|
+
headers: {
|
|
13
|
+
...client.queryHeaders,
|
|
14
|
+
'Content-Type': 'application/json',
|
|
15
|
+
},
|
|
16
|
+
credentials: client.withCredentials ? 'include' : noCred,
|
|
17
|
+
body: JSON.stringify(hostedRequestBody),
|
|
18
|
+
});
|
|
19
19
|
const responseJson = await resp.json();
|
|
20
20
|
const result = {
|
|
21
21
|
...responseJson.data,
|
|
@@ -24,14 +24,14 @@ async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cl
|
|
|
24
24
|
};
|
|
25
25
|
return result;
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return
|
|
27
|
+
else {
|
|
28
|
+
// cloud
|
|
29
|
+
return await getDataFromCloud(client, cloudQueryEndpoint, cloudRequestBody, method);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return
|
|
32
|
+
catch (e) {
|
|
33
|
+
console.error('Failed to parse JSON:', e);
|
|
34
|
+
return null;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
exports.getData = getData;
|
|
@@ -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,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;;GAEG;AACH,eAAO,MAAM,cAAc,8BAIxB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,
|
|
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,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;;GAEG;AACH,eAAO,MAAM,cAAc,8BAIxB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OAgC5B,CAAC"}
|
|
@@ -22,6 +22,7 @@ const valueFormatter = ({ value, field, fields, }) => {
|
|
|
22
22
|
one_decimal_place: formatOneDecimalPlace,
|
|
23
23
|
two_decimal_places: formatTwoDecimalPlaces,
|
|
24
24
|
string: formatString,
|
|
25
|
+
interval: formatInterval,
|
|
25
26
|
yyyy: format_YYYY,
|
|
26
27
|
MMM_yyyy: format_MMM_yyyy,
|
|
27
28
|
MMM_dd_yyyy: format_MMM_dd_yyyy,
|
|
@@ -45,6 +46,21 @@ exports.valueFormatter = valueFormatter;
|
|
|
45
46
|
* Formats the value as a string using the built-in converstion.
|
|
46
47
|
*/
|
|
47
48
|
const formatString = (value) => value.toString();
|
|
49
|
+
/**
|
|
50
|
+
* Formats the value as an interval.
|
|
51
|
+
*/
|
|
52
|
+
const INTERVALS = [
|
|
53
|
+
'years',
|
|
54
|
+
'months',
|
|
55
|
+
'days',
|
|
56
|
+
'hours',
|
|
57
|
+
'minutes',
|
|
58
|
+
'seconds',
|
|
59
|
+
];
|
|
60
|
+
const formatInterval = (interval) => INTERVALS.map((component) => interval[component])
|
|
61
|
+
.filter((value) => value !== undefined && value !== null)
|
|
62
|
+
.map((value, index) => `${value} ${INTERVALS[index]}`)
|
|
63
|
+
.join(', ');
|
|
48
64
|
/**
|
|
49
65
|
* Formats the value as a (rounded) currency amount in dollars.
|
|
50
66
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueFormatterCSV.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatterCSV.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,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;;GAEG;AACH,eAAO,MAAM,iBAAiB,8BAI3B,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"valueFormatterCSV.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatterCSV.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,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;;GAEG;AACH,eAAO,MAAM,iBAAiB,8BAI3B,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OAgC5B,CAAC"}
|
|
@@ -22,6 +22,7 @@ const valueFormatterCSV = ({ value, field, fields, }) => {
|
|
|
22
22
|
one_decimal_place: formatOneDecimalPlace,
|
|
23
23
|
two_decimal_places: formatTwoDecimalPlaces,
|
|
24
24
|
string: formatString,
|
|
25
|
+
interval: formatInterval,
|
|
25
26
|
yyyy: format_YYYY,
|
|
26
27
|
MMM_yyyy: format_MMM_yyyy,
|
|
27
28
|
MMM_dd_yyyy: format_MMM_dd_yyyy,
|
|
@@ -92,3 +93,15 @@ const format_wo_yyyy = (value) => {
|
|
|
92
93
|
return 'Invalid date';
|
|
93
94
|
return `${(0, date_fns_1.getWeek)(utcDate)},${utcDate.getFullYear()}`;
|
|
94
95
|
};
|
|
96
|
+
const INTERVALS = [
|
|
97
|
+
'years',
|
|
98
|
+
'months',
|
|
99
|
+
'days',
|
|
100
|
+
'hours',
|
|
101
|
+
'minutes',
|
|
102
|
+
'seconds',
|
|
103
|
+
];
|
|
104
|
+
const formatInterval = (interval) => INTERVALS.map((component) => interval[component])
|
|
105
|
+
.filter((value) => value !== undefined && value !== null)
|
|
106
|
+
.map((value, index) => `${value} ${INTERVALS[index]}`)
|
|
107
|
+
.join(', ');
|
package/dist/esm/Chart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AA0HA,QAAA,MAAM,KAAK;aAcA,MAAM;aACN,GAAG;;;;;uBAKO,OAAO;eACf,OAAO;eACP,OAAO;uBACC,OAAO;6BACD,OAAO;6CAqCjC,CAAC;
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AA0HA,QAAA,MAAM,KAAK;aAcA,MAAM;aACN,GAAG;;;;;uBAKO,OAAO;eACf,OAAO;eACP,OAAO;uBACC,OAAO;6BACD,OAAO;6CAqCjC,CAAC;AA2hBF,eAAe,KAAK,CAAC"}
|
package/dist/esm/Chart.js
CHANGED
|
@@ -260,7 +260,7 @@ const ChartUpdater = ({ colors, chartId, config, containerStyle, dashboard, disp
|
|
|
260
260
|
}
|
|
261
261
|
if (chartTypes.includes('table')) {
|
|
262
262
|
const data = dashboard[chartId] ? dashboard[chartId] : config;
|
|
263
|
-
return (_jsx(SpecialTable, { rows: pivotTable?.rows ?? data.rows ?? [], columns: pivotTable?.columns
|
|
263
|
+
return (_jsx(SpecialTable, { rows: pivotTable?.rows ?? data.rows ?? [], columns: pivotTable?.columns ?? data.yAxisFields ?? data.columns, height: '400px', containerStyle: {
|
|
264
264
|
...containerStyle,
|
|
265
265
|
}, theme: theme, isTableChart: true, name: data.name }));
|
|
266
266
|
}
|
package/dist/esm/ChartBuilder.js
CHANGED
|
@@ -469,7 +469,7 @@ function ChartBuilderForm({ TextInput = MemoizedTextInput, Select = MemoizedSele
|
|
|
469
469
|
...resp,
|
|
470
470
|
rows,
|
|
471
471
|
fields,
|
|
472
|
-
filtersApplied: dashboardFilters
|
|
472
|
+
filtersApplied: dashboardFilters,
|
|
473
473
|
},
|
|
474
474
|
});
|
|
475
475
|
}
|
|
@@ -503,12 +503,10 @@ function ChartBuilderForm({ TextInput = MemoizedTextInput, Select = MemoizedSele
|
|
|
503
503
|
})) })] })), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx(Label, { children: "Chart type" }), _jsx(Select, { label: 'Chart Type', value: formData.chartType, onChange: (e) => handleChange(e, 'chartType'),
|
|
504
504
|
// filter out metric for all pivots
|
|
505
505
|
// filter out bar and pie for row and column pivot
|
|
506
|
-
options: CHART_TYPES.filter((elem) => !
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
(
|
|
510
|
-
formData.pivot.columnField &&
|
|
511
|
-
(elem === 'bar' || elem === 'pie')))).map((elem) => ({ label: elem, value: elem })) })] })] }), _jsx("br", {}), _jsxs("div", { style: {
|
|
506
|
+
options: CHART_TYPES.filter((elem) => !((formData.pivot && elem === 'metric') ||
|
|
507
|
+
(formData.pivot &&
|
|
508
|
+
formData.pivot.columnField &&
|
|
509
|
+
(elem === 'bar' || elem === 'pie')))).map((elem) => ({ label: elem, value: elem })) })] })] }), _jsx("br", {}), _jsxs("div", { style: {
|
|
512
510
|
display: 'flex',
|
|
513
511
|
flexDirection: 'column',
|
|
514
512
|
gap: 12,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAUxE,wBAAgB,qBAAqB,CAAC,MAAM,KAAA;;;;;
|
|
1
|
+
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAUxE,wBAAgB,qBAAqB,CAAC,MAAM,KAAA;;;;;EA0E3C;AA2BD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC/D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IACrE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7D,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;CACvC;AAQD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA+ED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,cAAoC,EACpC,eAAe,EACf,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,eAAuB,EACvB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,UAAkB,EAClB,mBAA2B,EAC3B,sBAA8B,EAC9B,oBAA4B,EAC5B,wBAAgC,EAChC,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,yBAA8C,EAC9C,aAAyB,GAC1B,EAAE,cAAc,2CA2YhB"}
|
package/dist/esm/SQLEditor.js
CHANGED
|
@@ -25,6 +25,9 @@ export function convertPostgresColumn(column) {
|
|
|
25
25
|
case 1082: // date
|
|
26
26
|
case 1083: // time
|
|
27
27
|
case 1184: // timestamptz
|
|
28
|
+
case 1186: // interval
|
|
29
|
+
format = 'interval';
|
|
30
|
+
break;
|
|
28
31
|
case 1114: // timestamp
|
|
29
32
|
format = 'MMM_dd_yyyy';
|
|
30
33
|
break;
|
|
@@ -60,6 +63,9 @@ export function convertPostgresColumn(column) {
|
|
|
60
63
|
case 1184: // timestamptz
|
|
61
64
|
fieldType = 'timestamptz';
|
|
62
65
|
break;
|
|
66
|
+
case 1186: // interval
|
|
67
|
+
fieldType = 'interval';
|
|
68
|
+
break;
|
|
63
69
|
case 1114: // timestamp
|
|
64
70
|
fieldType = 'timestamp';
|
|
65
71
|
break;
|
package/dist/esm/Table.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.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,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,8BAIvB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.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,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,8BAIvB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OAgC5B,CAAC"}
|
|
@@ -22,6 +22,7 @@ export const axisFormatter = ({ value, field, fields, }) => {
|
|
|
22
22
|
one_decimal_place: formatOneDecimalPlace,
|
|
23
23
|
two_decimal_places: formatTwoDecimalPlaces,
|
|
24
24
|
string: formatString,
|
|
25
|
+
interval: formatInterval,
|
|
25
26
|
yyyy: format_YYYY,
|
|
26
27
|
MMM_yyyy: format_MMM_yyyy,
|
|
27
28
|
MMM_dd_yyyy: format_MMM_dd_yyyy,
|
|
@@ -44,6 +45,21 @@ export const axisFormatter = ({ value, field, fields, }) => {
|
|
|
44
45
|
* Formats the value as a string using the built-in converstion.
|
|
45
46
|
*/
|
|
46
47
|
const formatString = (value) => value.toString();
|
|
48
|
+
/**
|
|
49
|
+
* Formats the value as an interval.
|
|
50
|
+
*/
|
|
51
|
+
const INTERVALS = [
|
|
52
|
+
'years',
|
|
53
|
+
'months',
|
|
54
|
+
'days',
|
|
55
|
+
'hours',
|
|
56
|
+
'minutes',
|
|
57
|
+
'seconds',
|
|
58
|
+
];
|
|
59
|
+
const formatInterval = (interval) => INTERVALS.map((component) => interval[component])
|
|
60
|
+
.filter((value) => value !== undefined && value !== null)
|
|
61
|
+
.map((value, index) => `${value} ${INTERVALS[index]}`)
|
|
62
|
+
.join(', ');
|
|
47
63
|
/**
|
|
48
64
|
* Formats the value as a (rounded) currency amount in dollars.
|
|
49
65
|
*
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
// this function gets the data either from the self hosted endpoint or
|
|
2
2
|
// our cloud server
|
|
3
3
|
export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cloudRequestBody, method = 'POST') {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
4
|
+
try {
|
|
5
|
+
if (client.queryEndpoint) {
|
|
6
|
+
// self hosted
|
|
7
|
+
const resp = await fetch(client.queryEndpoint, {
|
|
8
|
+
method: 'POST',
|
|
9
|
+
headers: {
|
|
10
|
+
...client.queryHeaders,
|
|
11
|
+
'Content-Type': 'application/json',
|
|
12
|
+
},
|
|
13
|
+
credentials: client.withCredentials ? 'include' : noCred,
|
|
14
|
+
body: JSON.stringify(hostedRequestBody),
|
|
15
|
+
});
|
|
16
16
|
const responseJson = await resp.json();
|
|
17
17
|
const result = {
|
|
18
18
|
...responseJson.data,
|
|
@@ -21,14 +21,14 @@ export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestB
|
|
|
21
21
|
};
|
|
22
22
|
return result;
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return
|
|
24
|
+
else {
|
|
25
|
+
// cloud
|
|
26
|
+
return await getDataFromCloud(client, cloudQueryEndpoint, cloudRequestBody, method);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return
|
|
29
|
+
catch (e) {
|
|
30
|
+
console.error('Failed to parse JSON:', e);
|
|
31
|
+
return null;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
export async function getDataFromCloud(client, cloudQueryEndpoint, cloudRequestBody, method = 'POST') {
|
|
@@ -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,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;;GAEG;AACH,eAAO,MAAM,cAAc,8BAIxB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,
|
|
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,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;;GAEG;AACH,eAAO,MAAM,cAAc,8BAIxB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OAgC5B,CAAC"}
|
|
@@ -19,6 +19,7 @@ export const valueFormatter = ({ value, field, fields, }) => {
|
|
|
19
19
|
one_decimal_place: formatOneDecimalPlace,
|
|
20
20
|
two_decimal_places: formatTwoDecimalPlaces,
|
|
21
21
|
string: formatString,
|
|
22
|
+
interval: formatInterval,
|
|
22
23
|
yyyy: format_YYYY,
|
|
23
24
|
MMM_yyyy: format_MMM_yyyy,
|
|
24
25
|
MMM_dd_yyyy: format_MMM_dd_yyyy,
|
|
@@ -41,6 +42,21 @@ export const valueFormatter = ({ value, field, fields, }) => {
|
|
|
41
42
|
* Formats the value as a string using the built-in converstion.
|
|
42
43
|
*/
|
|
43
44
|
const formatString = (value) => value.toString();
|
|
45
|
+
/**
|
|
46
|
+
* Formats the value as an interval.
|
|
47
|
+
*/
|
|
48
|
+
const INTERVALS = [
|
|
49
|
+
'years',
|
|
50
|
+
'months',
|
|
51
|
+
'days',
|
|
52
|
+
'hours',
|
|
53
|
+
'minutes',
|
|
54
|
+
'seconds',
|
|
55
|
+
];
|
|
56
|
+
const formatInterval = (interval) => INTERVALS.map((component) => interval[component])
|
|
57
|
+
.filter((value) => value !== undefined && value !== null)
|
|
58
|
+
.map((value, index) => `${value} ${INTERVALS[index]}`)
|
|
59
|
+
.join(', ');
|
|
44
60
|
/**
|
|
45
61
|
* Formats the value as a (rounded) currency amount in dollars.
|
|
46
62
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueFormatterCSV.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatterCSV.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,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;;GAEG;AACH,eAAO,MAAM,iBAAiB,8BAI3B,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"valueFormatterCSV.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatterCSV.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,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;;GAEG;AACH,eAAO,MAAM,iBAAiB,8BAI3B,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OAgC5B,CAAC"}
|
|
@@ -19,6 +19,7 @@ export const valueFormatterCSV = ({ value, field, fields, }) => {
|
|
|
19
19
|
one_decimal_place: formatOneDecimalPlace,
|
|
20
20
|
two_decimal_places: formatTwoDecimalPlaces,
|
|
21
21
|
string: formatString,
|
|
22
|
+
interval: formatInterval,
|
|
22
23
|
yyyy: format_YYYY,
|
|
23
24
|
MMM_yyyy: format_MMM_yyyy,
|
|
24
25
|
MMM_dd_yyyy: format_MMM_dd_yyyy,
|
|
@@ -88,3 +89,15 @@ const format_wo_yyyy = (value) => {
|
|
|
88
89
|
return 'Invalid date';
|
|
89
90
|
return `${getWeek(utcDate)},${utcDate.getFullYear()}`;
|
|
90
91
|
};
|
|
92
|
+
const INTERVALS = [
|
|
93
|
+
'years',
|
|
94
|
+
'months',
|
|
95
|
+
'days',
|
|
96
|
+
'hours',
|
|
97
|
+
'minutes',
|
|
98
|
+
'seconds',
|
|
99
|
+
];
|
|
100
|
+
const formatInterval = (interval) => INTERVALS.map((component) => interval[component])
|
|
101
|
+
.filter((value) => value !== undefined && value !== null)
|
|
102
|
+
.map((value, index) => `${value} ${INTERVALS[index]}`)
|
|
103
|
+
.join(', ');
|