@quillsql/react 2.8.7 → 2.8.8
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/AddToDashboardModal.js +181 -146
- package/dist/BarList.js +44 -36
- package/dist/Chart.js +132 -99
- package/dist/ChartBuilder.js +89 -80
- package/dist/ChartEditor.js +21 -14
- package/dist/Context.js +57 -52
- package/dist/Dashboard.js +211 -178
- package/dist/Dashboard.js.map +1 -1
- package/dist/DateRangePicker/Calendar.js +46 -41
- package/dist/DateRangePicker/DateRangePicker.js +61 -32
- package/dist/DateRangePicker/DateRangePickerButton.js +17 -14
- package/dist/DateRangePicker/dateRangePickerUtils.js +90 -76
- package/dist/DateRangePicker/dateRangePickerUtils.js.map +1 -1
- package/dist/DateRangePicker/index.js +9 -1
- package/dist/PieChart.js +70 -35
- package/dist/QuillProvider.js +7 -4
- package/dist/ReportBuilder.js +129 -120
- package/dist/SQLEditor.js +65 -56
- package/dist/Table.js +64 -59
- package/dist/Table.js.map +1 -1
- package/dist/TableChart.js +45 -17
- package/dist/assets/ArrowDownHeadIcon.js +6 -3
- package/dist/assets/ArrowDownIcon.js +6 -3
- package/dist/assets/ArrowDownRightIcon.js +6 -3
- package/dist/assets/ArrowLeftHeadIcon.js +6 -3
- package/dist/assets/ArrowRightHeadIcon.js +6 -3
- package/dist/assets/ArrowRightIcon.js +6 -3
- package/dist/assets/ArrowUpHeadIcon.js +6 -3
- package/dist/assets/ArrowUpIcon.js +6 -3
- package/dist/assets/ArrowUpRightIcon.js +6 -3
- package/dist/assets/CalendarIcon.js +6 -3
- package/dist/assets/CalendarNormalIcon.js +6 -3
- package/dist/assets/DoubleArrowLeftHeadIcon.js +6 -3
- package/dist/assets/DoubleArrowRightHeadIcon.js +6 -3
- package/dist/assets/ExclamationFilledIcon.js +6 -3
- package/dist/assets/FilterIcon.js +6 -3
- package/dist/assets/LoadingSpinner.js +6 -3
- package/dist/assets/RefreshIcon.js +6 -3
- package/dist/assets/SearchIcon.js +6 -3
- package/dist/assets/UpLeftArrowsIcon.js +6 -3
- package/dist/assets/XCircleIcon.js +6 -3
- package/dist/assets/XIcon.js +6 -3
- package/dist/assets/index.js +49 -21
- package/dist/components/BigModal/BigModal.js +39 -13
- package/dist/components/Dropdown/Dropdown.js +53 -24
- package/dist/components/Dropdown/DropdownItem.js +35 -9
- package/dist/components/Dropdown/index.js +11 -2
- package/dist/components/Modal/Modal.js +39 -13
- package/dist/components/Modal/index.js +9 -1
- package/dist/components/QuillCard.js +13 -8
- package/dist/components/SqlTextEditor.js +11 -4
- package/dist/components/SqlTextEditor.js.map +1 -0
- package/dist/components/UiComponents.js +51 -37
- package/dist/components/selectUtils.js +17 -6
- package/dist/contexts/BaseColorContext.js +6 -3
- package/dist/contexts/HoveredValueContext.js +6 -3
- package/dist/contexts/RootStylesContext.js +6 -3
- package/dist/contexts/SelectedValueContext.js +6 -3
- package/dist/contexts/index.js +15 -4
- package/dist/hooks/index.js +15 -4
- package/dist/hooks/useDashboard.js +15 -10
- package/dist/hooks/useDashboard.js.map +1 -0
- package/dist/hooks/useInternalState.js +6 -3
- package/dist/hooks/useOnClickOutside.js +6 -3
- package/dist/hooks/useOnWindowResize.js +7 -4
- package/dist/hooks/useQuill.js +16 -11
- package/dist/hooks/useSelectOnKeyDown.js +7 -4
- package/dist/index.js +33 -13
- package/dist/index.js.map +1 -1
- package/dist/internals/ReportBuilder/PivotList.js +20 -14
- package/dist/internals/ReportBuilder/PivotModal.js +92 -84
- package/dist/internals/ReportBuilder/PivotModal.spec.js +73 -70
- package/dist/lib/font.js +6 -2
- package/dist/lib/index.js +20 -3
- package/dist/lib/inputTypes.js +3 -1
- package/dist/lib/utils.js +19 -8
- package/dist/utils/aggregate.js +35 -28
- package/dist/utils/colorToHex.js +5 -1
- package/dist/utils/dataFetcher.js +8 -2
- package/dist/utils/downloadCSV.js +6 -1
- package/package.json +2 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
3
|
// @ts-nocheck
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
const chai_1 = require("chai");
|
|
5
|
+
const PivotModal_1 = require("./PivotModal");
|
|
6
|
+
const date_fns_1 = require("date-fns");
|
|
5
7
|
describe('PivotModal', function () {
|
|
6
8
|
describe('generatePivotTable', function () {
|
|
7
9
|
context('non date pivots', function () {
|
|
@@ -25,36 +27,36 @@ describe('PivotModal', function () {
|
|
|
25
27
|
{ merchant: 'm2', amount: 8, user_name: 'u2' },
|
|
26
28
|
];
|
|
27
29
|
it('should return empty table with no data', function () {
|
|
28
|
-
const table = generatePivotTable(rowPivot, [], [new Date(), subMonths(new Date(), 3)]);
|
|
29
|
-
expect(table.columns.length).to.equal(2);
|
|
30
|
-
expect(table.rows.length).to.equal(0);
|
|
30
|
+
const table = (0, PivotModal_1.generatePivotTable)(rowPivot, [], [new Date(), (0, date_fns_1.subMonths)(new Date(), 3)]);
|
|
31
|
+
(0, chai_1.expect)(table.columns.length).to.equal(2);
|
|
32
|
+
(0, chai_1.expect)(table.rows.length).to.equal(0);
|
|
31
33
|
});
|
|
32
34
|
it('should combine values based on row pivot', function () {
|
|
33
|
-
const table = generatePivotTable(rowPivot, rows, [
|
|
35
|
+
const table = (0, PivotModal_1.generatePivotTable)(rowPivot, rows, [
|
|
34
36
|
new Date(),
|
|
35
|
-
subMonths(new Date(), 3),
|
|
37
|
+
(0, date_fns_1.subMonths)(new Date(), 3),
|
|
36
38
|
]);
|
|
37
|
-
expect(table.columns.length).to.equal(2);
|
|
38
|
-
expect(table.columns[0].field).to.equal('merchant');
|
|
39
|
-
expect(table.columns[1].field).to.equal('amount');
|
|
40
|
-
expect(table.rows.length).to.equal(2);
|
|
41
|
-
expect(table.rows[0].amount).to.equal(12);
|
|
42
|
-
expect(table.rows[1].amount).to.equal(21);
|
|
39
|
+
(0, chai_1.expect)(table.columns.length).to.equal(2);
|
|
40
|
+
(0, chai_1.expect)(table.columns[0].field).to.equal('merchant');
|
|
41
|
+
(0, chai_1.expect)(table.columns[1].field).to.equal('amount');
|
|
42
|
+
(0, chai_1.expect)(table.rows.length).to.equal(2);
|
|
43
|
+
(0, chai_1.expect)(table.rows[0].amount).to.equal(12);
|
|
44
|
+
(0, chai_1.expect)(table.rows[1].amount).to.equal(21);
|
|
43
45
|
});
|
|
44
46
|
it('should combine values based on row and column pivots', function () {
|
|
45
|
-
const table = generatePivotTable(rowColumnPivot, rows, [
|
|
47
|
+
const table = (0, PivotModal_1.generatePivotTable)(rowColumnPivot, rows, [
|
|
46
48
|
new Date(),
|
|
47
|
-
subMonths(new Date(), 3),
|
|
49
|
+
(0, date_fns_1.subMonths)(new Date(), 3),
|
|
48
50
|
]);
|
|
49
|
-
expect(table.columns.length).to.equal(3);
|
|
50
|
-
expect(table.columns[0].field).to.equal('merchant');
|
|
51
|
-
expect(table.columns[1].field).to.equal('u1');
|
|
52
|
-
expect(table.columns[2].field).to.equal('u2');
|
|
53
|
-
expect(table.rows.length).to.equal(2);
|
|
54
|
-
expect(table.rows[0].u1).to.equal(8);
|
|
55
|
-
expect(table.rows[0].u2).to.equal(4);
|
|
56
|
-
expect(table.rows[1].u1).to.equal(6);
|
|
57
|
-
expect(table.rows[1].u2).to.equal(15);
|
|
51
|
+
(0, chai_1.expect)(table.columns.length).to.equal(3);
|
|
52
|
+
(0, chai_1.expect)(table.columns[0].field).to.equal('merchant');
|
|
53
|
+
(0, chai_1.expect)(table.columns[1].field).to.equal('u1');
|
|
54
|
+
(0, chai_1.expect)(table.columns[2].field).to.equal('u2');
|
|
55
|
+
(0, chai_1.expect)(table.rows.length).to.equal(2);
|
|
56
|
+
(0, chai_1.expect)(table.rows[0].u1).to.equal(8);
|
|
57
|
+
(0, chai_1.expect)(table.rows[0].u2).to.equal(4);
|
|
58
|
+
(0, chai_1.expect)(table.rows[1].u1).to.equal(6);
|
|
59
|
+
(0, chai_1.expect)(table.rows[1].u2).to.equal(15);
|
|
58
60
|
});
|
|
59
61
|
});
|
|
60
62
|
context('date pivots', function () {
|
|
@@ -102,17 +104,17 @@ describe('PivotModal', function () {
|
|
|
102
104
|
valueField: 'amount',
|
|
103
105
|
aggregationType: 'sum',
|
|
104
106
|
};
|
|
105
|
-
const table = generatePivotTable(pivot, rows, [
|
|
107
|
+
const table = (0, PivotModal_1.generatePivotTable)(pivot, rows, [
|
|
106
108
|
new Date('October 10, 2023 00:00:00'),
|
|
107
109
|
new Date('October 15, 2023 00:00:00'),
|
|
108
110
|
]);
|
|
109
|
-
expect(table.columns.length).to.equal(2);
|
|
110
|
-
expect(table.columns[0].field).to.equal('date');
|
|
111
|
-
expect(table.columns[1].field).to.equal('amount');
|
|
112
|
-
expect(table.rows.length).to.equal(6);
|
|
113
|
-
expect(table.rows[3].amount).to.equal(9);
|
|
114
|
-
expect(table.rows[4].amount).to.equal(17);
|
|
115
|
-
expect(table.rows[5].amount).to.equal(0);
|
|
111
|
+
(0, chai_1.expect)(table.columns.length).to.equal(2);
|
|
112
|
+
(0, chai_1.expect)(table.columns[0].field).to.equal('date');
|
|
113
|
+
(0, chai_1.expect)(table.columns[1].field).to.equal('amount');
|
|
114
|
+
(0, chai_1.expect)(table.rows.length).to.equal(6);
|
|
115
|
+
(0, chai_1.expect)(table.rows[3].amount).to.equal(9);
|
|
116
|
+
(0, chai_1.expect)(table.rows[4].amount).to.equal(17);
|
|
117
|
+
(0, chai_1.expect)(table.rows[5].amount).to.equal(0);
|
|
116
118
|
});
|
|
117
119
|
it('should handle a row timestamp pivot', function () {
|
|
118
120
|
const pivot = {
|
|
@@ -121,17 +123,17 @@ describe('PivotModal', function () {
|
|
|
121
123
|
valueField: 'amount',
|
|
122
124
|
aggregationType: 'sum',
|
|
123
125
|
};
|
|
124
|
-
const table = generatePivotTable(pivot, rows, [
|
|
126
|
+
const table = (0, PivotModal_1.generatePivotTable)(pivot, rows, [
|
|
125
127
|
new Date('October 10, 2023 00:00:00').getTime(),
|
|
126
128
|
new Date('October 15, 2023 00:00:00').getTime(),
|
|
127
129
|
]);
|
|
128
|
-
expect(table.columns.length).to.equal(2);
|
|
129
|
-
expect(table.columns[0].field).to.equal('date');
|
|
130
|
-
expect(table.columns[1].field).to.equal('amount');
|
|
131
|
-
expect(table.rows.length).to.equal(6);
|
|
132
|
-
expect(table.rows[3].amount).to.equal(9);
|
|
133
|
-
expect(table.rows[4].amount).to.equal(17);
|
|
134
|
-
expect(table.rows[5].amount).to.equal(0);
|
|
130
|
+
(0, chai_1.expect)(table.columns.length).to.equal(2);
|
|
131
|
+
(0, chai_1.expect)(table.columns[0].field).to.equal('date');
|
|
132
|
+
(0, chai_1.expect)(table.columns[1].field).to.equal('amount');
|
|
133
|
+
(0, chai_1.expect)(table.rows.length).to.equal(6);
|
|
134
|
+
(0, chai_1.expect)(table.rows[3].amount).to.equal(9);
|
|
135
|
+
(0, chai_1.expect)(table.rows[4].amount).to.equal(17);
|
|
136
|
+
(0, chai_1.expect)(table.rows[5].amount).to.equal(0);
|
|
135
137
|
});
|
|
136
138
|
it('should handle a string row pivot with a date column pivot', function () {
|
|
137
139
|
const pivot = {
|
|
@@ -142,20 +144,20 @@ describe('PivotModal', function () {
|
|
|
142
144
|
rowField: 'user_name',
|
|
143
145
|
rowFieldType: 'varchar',
|
|
144
146
|
};
|
|
145
|
-
const table = generatePivotTable(pivot, rows, [
|
|
147
|
+
const table = (0, PivotModal_1.generatePivotTable)(pivot, rows, [
|
|
146
148
|
new Date('October 10, 2023 00:00:00'),
|
|
147
149
|
new Date('October 15, 2023 00:00:00'),
|
|
148
150
|
]);
|
|
149
|
-
expect(table.columns.length).to.equal(7);
|
|
150
|
-
expect(table.columns[0].field).to.equal('user_name');
|
|
151
|
-
expect(table.rows.length).to.equal(2);
|
|
151
|
+
(0, chai_1.expect)(table.columns.length).to.equal(7);
|
|
152
|
+
(0, chai_1.expect)(table.columns[0].field).to.equal('user_name');
|
|
153
|
+
(0, chai_1.expect)(table.rows.length).to.equal(2);
|
|
152
154
|
// u1
|
|
153
|
-
expect(table.rows[0].user_name).to.equal('u1');
|
|
154
|
-
expect(Object.values(table.rows[0])[4]).to.equal(9);
|
|
155
|
-
expect(Object.values(table.rows[0])[5]).to.equal(11);
|
|
155
|
+
(0, chai_1.expect)(table.rows[0].user_name).to.equal('u1');
|
|
156
|
+
(0, chai_1.expect)(Object.values(table.rows[0])[4]).to.equal(9);
|
|
157
|
+
(0, chai_1.expect)(Object.values(table.rows[0])[5]).to.equal(11);
|
|
156
158
|
// u2
|
|
157
|
-
expect(table.rows[1].user_name).to.equal('u2');
|
|
158
|
-
expect(Object.values(table.rows[1])[5]).to.equal(6);
|
|
159
|
+
(0, chai_1.expect)(table.rows[1].user_name).to.equal('u2');
|
|
160
|
+
(0, chai_1.expect)(Object.values(table.rows[1])[5]).to.equal(6);
|
|
159
161
|
});
|
|
160
162
|
it('should handle a date row pivot with a string column pivot', function () {
|
|
161
163
|
const pivot = {
|
|
@@ -166,23 +168,23 @@ describe('PivotModal', function () {
|
|
|
166
168
|
columnField: 'user_name',
|
|
167
169
|
columnFieldType: 'varchar',
|
|
168
170
|
};
|
|
169
|
-
const table = generatePivotTable(pivot, rows, [
|
|
171
|
+
const table = (0, PivotModal_1.generatePivotTable)(pivot, rows, [
|
|
170
172
|
new Date('October 10, 2023 00:00:00'),
|
|
171
173
|
new Date('October 15, 2023 00:00:00'),
|
|
172
174
|
]);
|
|
173
|
-
expect(table.columns.length).to.equal(3);
|
|
174
|
-
expect(table.columns[0].field).to.equal('date');
|
|
175
|
-
expect(table.columns[1].field).to.equal('u1');
|
|
176
|
-
expect(table.columns[2].field).to.equal('u2');
|
|
177
|
-
expect(table.rows.length).to.equal(6);
|
|
175
|
+
(0, chai_1.expect)(table.columns.length).to.equal(3);
|
|
176
|
+
(0, chai_1.expect)(table.columns[0].field).to.equal('date');
|
|
177
|
+
(0, chai_1.expect)(table.columns[1].field).to.equal('u1');
|
|
178
|
+
(0, chai_1.expect)(table.columns[2].field).to.equal('u2');
|
|
179
|
+
(0, chai_1.expect)(table.rows.length).to.equal(6);
|
|
178
180
|
// day without transactions
|
|
179
|
-
expect(table.rows[2].u1).to.equal(0);
|
|
180
|
-
expect(table.rows[2].u2).to.equal(0);
|
|
181
|
+
(0, chai_1.expect)(table.rows[2].u1).to.equal(0);
|
|
182
|
+
(0, chai_1.expect)(table.rows[2].u2).to.equal(0);
|
|
181
183
|
// days with transactions
|
|
182
|
-
expect(table.rows[3].u1).to.equal(9);
|
|
183
|
-
expect(table.rows[3].u2).to.equal(0);
|
|
184
|
-
expect(table.rows[4].u1).to.equal(11);
|
|
185
|
-
expect(table.rows[4].u2).to.equal(6);
|
|
184
|
+
(0, chai_1.expect)(table.rows[3].u1).to.equal(9);
|
|
185
|
+
(0, chai_1.expect)(table.rows[3].u2).to.equal(0);
|
|
186
|
+
(0, chai_1.expect)(table.rows[4].u1).to.equal(11);
|
|
187
|
+
(0, chai_1.expect)(table.rows[4].u2).to.equal(6);
|
|
186
188
|
});
|
|
187
189
|
it('should handle a date row pivot with a date column pivot', function () {
|
|
188
190
|
const pivot = {
|
|
@@ -193,19 +195,20 @@ describe('PivotModal', function () {
|
|
|
193
195
|
rowField: 'created_at',
|
|
194
196
|
rowFieldType: 'date',
|
|
195
197
|
};
|
|
196
|
-
const table = generatePivotTable(pivot, rows, [
|
|
198
|
+
const table = (0, PivotModal_1.generatePivotTable)(pivot, rows, [
|
|
197
199
|
new Date('October 10, 2023 00:00:00'),
|
|
198
200
|
new Date('October 15, 2023 00:00:00'),
|
|
199
201
|
]);
|
|
200
202
|
console.log(table);
|
|
201
|
-
expect(table.columns.length).to.equal(7);
|
|
202
|
-
expect(table.columns[0].field).to.equal('created_at');
|
|
203
|
-
expect(table.rows.length).to.equal(6);
|
|
204
|
-
expect(Object.values(table.rows[3])[4]).to.equal(1);
|
|
205
|
-
expect(Object.values(table.rows[3])[5]).to.equal(2);
|
|
206
|
-
expect(Object.values(table.rows[4])[4]).to.equal(1);
|
|
207
|
-
expect(Object.values(table.rows[4])[5]).to.equal(1);
|
|
203
|
+
(0, chai_1.expect)(table.columns.length).to.equal(7);
|
|
204
|
+
(0, chai_1.expect)(table.columns[0].field).to.equal('created_at');
|
|
205
|
+
(0, chai_1.expect)(table.rows.length).to.equal(6);
|
|
206
|
+
(0, chai_1.expect)(Object.values(table.rows[3])[4]).to.equal(1);
|
|
207
|
+
(0, chai_1.expect)(Object.values(table.rows[3])[5]).to.equal(2);
|
|
208
|
+
(0, chai_1.expect)(Object.values(table.rows[4])[4]).to.equal(1);
|
|
209
|
+
(0, chai_1.expect)(Object.values(table.rows[4])[5]).to.equal(1);
|
|
208
210
|
});
|
|
209
211
|
});
|
|
210
212
|
});
|
|
211
213
|
});
|
|
214
|
+
//# sourceMappingURL=PivotModal.spec.js.map
|
package/dist/lib/font.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fontWeight = exports.fontSize = void 0;
|
|
4
|
+
exports.fontSize = {
|
|
2
5
|
xs: 'qq-text-xs',
|
|
3
6
|
sm: 'qq-text-sm',
|
|
4
7
|
md: 'qq-text-base',
|
|
@@ -6,8 +9,9 @@ export const fontSize = {
|
|
|
6
9
|
xl: 'qq-text-xl',
|
|
7
10
|
threeXl: 'qq-text-3xl',
|
|
8
11
|
};
|
|
9
|
-
|
|
12
|
+
exports.fontWeight = {
|
|
10
13
|
sm: 'qq-font-normal',
|
|
11
14
|
md: 'qq-font-medium',
|
|
12
15
|
lg: 'qq-font-semibold',
|
|
13
16
|
};
|
|
17
|
+
//# sourceMappingURL=font.js.map
|
package/dist/lib/index.js
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./inputTypes"), exports);
|
|
18
|
+
__exportStar(require("./font"), exports);
|
|
19
|
+
__exportStar(require("./utils"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
package/dist/lib/inputTypes.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
3
|
const iconVariantValues = [
|
|
2
4
|
'simple',
|
|
3
5
|
'light',
|
|
@@ -52,4 +54,4 @@ const alignItemsValues = [
|
|
|
52
54
|
'baseline',
|
|
53
55
|
'stretch',
|
|
54
56
|
];
|
|
55
|
-
|
|
57
|
+
//# sourceMappingURL=inputTypes.js.map
|
package/dist/lib/utils.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeRefs = exports.stringEndsWithNumber = exports.stringIsNumeric = exports.isValueInArray = exports.removeValueFromArray = exports.sumNumericArray = exports.defaultValueFormatter = void 0;
|
|
4
|
+
const defaultValueFormatter = (value) => value.toString();
|
|
5
|
+
exports.defaultValueFormatter = defaultValueFormatter;
|
|
6
|
+
const sumNumericArray = (arr) => arr.reduce((prefixSum, num) => prefixSum + num, 0);
|
|
7
|
+
exports.sumNumericArray = sumNumericArray;
|
|
8
|
+
const removeValueFromArray = (value, array) => {
|
|
4
9
|
const index = array.indexOf(value);
|
|
5
10
|
if (index > -1) {
|
|
6
11
|
array.splice(index, 1);
|
|
7
12
|
}
|
|
8
13
|
return array;
|
|
9
14
|
};
|
|
10
|
-
|
|
15
|
+
exports.removeValueFromArray = removeValueFromArray;
|
|
16
|
+
const isValueInArray = (value, array) => {
|
|
11
17
|
for (let i = 0; i < array.length; i++) {
|
|
12
18
|
if (array[i] === value) {
|
|
13
19
|
return true;
|
|
@@ -15,13 +21,16 @@ export const isValueInArray = (value, array) => {
|
|
|
15
21
|
}
|
|
16
22
|
return false;
|
|
17
23
|
};
|
|
18
|
-
|
|
24
|
+
exports.isValueInArray = isValueInArray;
|
|
25
|
+
const stringIsNumeric = (str) => {
|
|
19
26
|
return !isNaN(Number(str)) && str !== undefined;
|
|
20
27
|
};
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
exports.stringIsNumeric = stringIsNumeric;
|
|
29
|
+
const stringEndsWithNumber = (str) => {
|
|
30
|
+
return (0, exports.stringIsNumeric)(str.split('-').pop());
|
|
23
31
|
};
|
|
24
|
-
|
|
32
|
+
exports.stringEndsWithNumber = stringEndsWithNumber;
|
|
33
|
+
function mergeRefs(refs) {
|
|
25
34
|
return value => {
|
|
26
35
|
refs.forEach(ref => {
|
|
27
36
|
if (typeof ref === 'function') {
|
|
@@ -33,3 +42,5 @@ export function mergeRefs(refs) {
|
|
|
33
42
|
});
|
|
34
43
|
};
|
|
35
44
|
}
|
|
45
|
+
exports.mergeRefs = mergeRefs;
|
|
46
|
+
//# sourceMappingURL=utils.js.map
|
package/dist/utils/aggregate.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.aggregate = exports.aggregate2 = exports.whatIsProbablyTheType = void 0;
|
|
1
4
|
// @ts-nocheck
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
const ReportBuilder_1 = require("../ReportBuilder");
|
|
6
|
+
const Dashboard_1 = require("../Dashboard");
|
|
7
|
+
const date_fns_1 = require("date-fns");
|
|
5
8
|
function findTimePeriod(dateFilter) {
|
|
6
9
|
if (!dateFilter) {
|
|
7
10
|
return null;
|
|
@@ -50,7 +53,7 @@ function findTimePeriod(dateFilter) {
|
|
|
50
53
|
else
|
|
51
54
|
return 'year';
|
|
52
55
|
}
|
|
53
|
-
|
|
56
|
+
function whatIsProbablyTheType(data, fieldName) {
|
|
54
57
|
const counts = {
|
|
55
58
|
date: 0,
|
|
56
59
|
number: 0,
|
|
@@ -84,14 +87,15 @@ export function whatIsProbablyTheType(data, fieldName) {
|
|
|
84
87
|
const maxType = Object.keys(counts).reduce((a, b) => counts[a] > counts[b] ? a : b);
|
|
85
88
|
return maxType;
|
|
86
89
|
}
|
|
87
|
-
|
|
90
|
+
exports.whatIsProbablyTheType = whatIsProbablyTheType;
|
|
91
|
+
function aggregate2(dashboardItem, bucketFields, dateFilter) {
|
|
88
92
|
const timePeriod = findTimePeriod(dateFilter);
|
|
89
93
|
const rows = dashboardItem.rows;
|
|
90
94
|
const xAxisLabel = timePeriod;
|
|
91
95
|
const xAxisField = timePeriod;
|
|
92
96
|
if (!bucketFields.length || !rows.length)
|
|
93
97
|
return { ...dashboardItem, bucketedRows: [] };
|
|
94
|
-
if (getPostgresBasicType(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'string') {
|
|
98
|
+
if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'string') {
|
|
95
99
|
const stringField = bucketFields[0].field;
|
|
96
100
|
const aggregation = {};
|
|
97
101
|
// let aggregatedArray;
|
|
@@ -122,7 +126,7 @@ export function aggregate2(dashboardItem, bucketFields, dateFilter) {
|
|
|
122
126
|
bucketedRows: aggregatedArray,
|
|
123
127
|
};
|
|
124
128
|
}
|
|
125
|
-
else if (getPostgresBasicType(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'date') {
|
|
129
|
+
else if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'date') {
|
|
126
130
|
const dateField = bucketFields[0].field;
|
|
127
131
|
let xAxisFormat;
|
|
128
132
|
switch (timePeriod) {
|
|
@@ -196,7 +200,8 @@ export function aggregate2(dashboardItem, bucketFields, dateFilter) {
|
|
|
196
200
|
return dashboardItem;
|
|
197
201
|
}
|
|
198
202
|
}
|
|
199
|
-
|
|
203
|
+
exports.aggregate2 = aggregate2;
|
|
204
|
+
function aggregate(dashboardItem, bucketFields, dateFilter) {
|
|
200
205
|
const timePeriod = dateFilter && Object.keys(dateFilter).length
|
|
201
206
|
? findTimePeriod(dateFilter)
|
|
202
207
|
: 'month';
|
|
@@ -211,7 +216,7 @@ export function aggregate(dashboardItem, bucketFields, dateFilter) {
|
|
|
211
216
|
//TODO: allow comparison for nonbucketed
|
|
212
217
|
return { ...dashboardItem, bucketedRows: [] };
|
|
213
218
|
}
|
|
214
|
-
if (getPostgresBasicType(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'string') {
|
|
219
|
+
if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'string') {
|
|
215
220
|
const stringField = bucketFields[0].field;
|
|
216
221
|
const aggregation = {};
|
|
217
222
|
rows.forEach(row => {
|
|
@@ -240,7 +245,7 @@ export function aggregate(dashboardItem, bucketFields, dateFilter) {
|
|
|
240
245
|
bucketedRows: aggregatedArray,
|
|
241
246
|
};
|
|
242
247
|
}
|
|
243
|
-
else if (getPostgresBasicType(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'date') {
|
|
248
|
+
else if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'date') {
|
|
244
249
|
const dateField = bucketFields[0].field;
|
|
245
250
|
let interval;
|
|
246
251
|
let xAxisFormat;
|
|
@@ -268,19 +273,19 @@ export function aggregate(dashboardItem, bucketFields, dateFilter) {
|
|
|
268
273
|
let formattedDate;
|
|
269
274
|
switch (timePeriod) {
|
|
270
275
|
case 'day': {
|
|
271
|
-
formattedDate = startOfDay(firstEntryDate);
|
|
276
|
+
formattedDate = (0, date_fns_1.startOfDay)(firstEntryDate);
|
|
272
277
|
break;
|
|
273
278
|
}
|
|
274
279
|
case 'week': {
|
|
275
|
-
formattedDate = startOfWeek(firstEntryDate, { weekStartsOn: 1 });
|
|
280
|
+
formattedDate = (0, date_fns_1.startOfWeek)(firstEntryDate, { weekStartsOn: 1 });
|
|
276
281
|
break;
|
|
277
282
|
}
|
|
278
283
|
case 'month': {
|
|
279
|
-
formattedDate = startOfMonth(firstEntryDate);
|
|
284
|
+
formattedDate = (0, date_fns_1.startOfMonth)(firstEntryDate);
|
|
280
285
|
break;
|
|
281
286
|
}
|
|
282
287
|
case 'year': {
|
|
283
|
-
formattedDate = startOfYear(firstEntryDate);
|
|
288
|
+
formattedDate = (0, date_fns_1.startOfYear)(firstEntryDate);
|
|
284
289
|
break;
|
|
285
290
|
}
|
|
286
291
|
default:
|
|
@@ -293,27 +298,27 @@ export function aggregate(dashboardItem, bucketFields, dateFilter) {
|
|
|
293
298
|
dashboardItem.yAxisFields.forEach(yAxisField => {
|
|
294
299
|
aggregation[iteratedDate][yAxisField.field] = 0;
|
|
295
300
|
});
|
|
296
|
-
iteratedDate = add(iteratedDate, interval);
|
|
301
|
+
iteratedDate = (0, date_fns_1.add)(iteratedDate, interval);
|
|
297
302
|
}
|
|
298
303
|
// TODO MAKE WORK WITH MULTIPLE Y AXIS FIELDS
|
|
299
304
|
rows.forEach(row => {
|
|
300
|
-
const date = parse(row[dateField], 'yyyy-MM-dd', new Date());
|
|
305
|
+
const date = (0, date_fns_1.parse)(row[dateField], 'yyyy-MM-dd', new Date());
|
|
301
306
|
let formattedDate;
|
|
302
307
|
switch (timePeriod) {
|
|
303
308
|
case 'day': {
|
|
304
|
-
formattedDate = startOfDay(date);
|
|
309
|
+
formattedDate = (0, date_fns_1.startOfDay)(date);
|
|
305
310
|
break;
|
|
306
311
|
}
|
|
307
312
|
case 'week': {
|
|
308
|
-
formattedDate = startOfWeek(date, { weekStartsOn: 1 });
|
|
313
|
+
formattedDate = (0, date_fns_1.startOfWeek)(date, { weekStartsOn: 1 });
|
|
309
314
|
break;
|
|
310
315
|
}
|
|
311
316
|
case 'month': {
|
|
312
|
-
formattedDate = startOfMonth(date);
|
|
317
|
+
formattedDate = (0, date_fns_1.startOfMonth)(date);
|
|
313
318
|
break;
|
|
314
319
|
}
|
|
315
320
|
case 'year': {
|
|
316
|
-
formattedDate = startOfYear(date);
|
|
321
|
+
formattedDate = (0, date_fns_1.startOfYear)(date);
|
|
317
322
|
break;
|
|
318
323
|
}
|
|
319
324
|
default:
|
|
@@ -343,35 +348,35 @@ export function aggregate(dashboardItem, bucketFields, dateFilter) {
|
|
|
343
348
|
dateFilter.comparison &&
|
|
344
349
|
dateFilter.comparisonRange.value !== 'NO_COMPARISON' &&
|
|
345
350
|
dashboardItem.compareRows) {
|
|
346
|
-
const offset = COMPARISON_OPTIONS.find(option => {
|
|
351
|
+
const offset = Dashboard_1.COMPARISON_OPTIONS.find(option => {
|
|
347
352
|
return option.value === dateFilter.comparisonRange.value;
|
|
348
353
|
})?.offset;
|
|
349
354
|
aggregatedArray.forEach(row => {
|
|
350
355
|
dashboardItem.yAxisFields.forEach(yAxisField => {
|
|
351
356
|
row[yAxisField.field + '2'] = 0;
|
|
352
357
|
});
|
|
353
|
-
row[xAxisField + '2'] = sub(new Date(row[timePeriod]), offset).toISOString();
|
|
358
|
+
row[xAxisField + '2'] = (0, date_fns_1.sub)(new Date(row[timePeriod]), offset).toISOString();
|
|
354
359
|
});
|
|
355
360
|
compareRows.sort((a, b) => new Date(a[dateField]) - new Date(b[dateField]));
|
|
356
361
|
compareRows.forEach((row, index) => {
|
|
357
|
-
let date = parse(row[dateField], 'yyyy-MM-dd', new Date());
|
|
358
|
-
date = add(date, offset);
|
|
362
|
+
let date = (0, date_fns_1.parse)(row[dateField], 'yyyy-MM-dd', new Date());
|
|
363
|
+
date = (0, date_fns_1.add)(date, offset);
|
|
359
364
|
let formattedDate;
|
|
360
365
|
switch (timePeriod) {
|
|
361
366
|
case 'day': {
|
|
362
|
-
formattedDate = startOfDay(date);
|
|
367
|
+
formattedDate = (0, date_fns_1.startOfDay)(date);
|
|
363
368
|
break;
|
|
364
369
|
}
|
|
365
370
|
case 'week': {
|
|
366
|
-
formattedDate = startOfWeek(date, { weekStartsOn: 1 });
|
|
371
|
+
formattedDate = (0, date_fns_1.startOfWeek)(date, { weekStartsOn: 1 });
|
|
367
372
|
break;
|
|
368
373
|
}
|
|
369
374
|
case 'month': {
|
|
370
|
-
formattedDate = startOfMonth(date);
|
|
375
|
+
formattedDate = (0, date_fns_1.startOfMonth)(date);
|
|
371
376
|
break;
|
|
372
377
|
}
|
|
373
378
|
case 'year': {
|
|
374
|
-
formattedDate = startOfYear(date);
|
|
379
|
+
formattedDate = (0, date_fns_1.startOfYear)(date);
|
|
375
380
|
break;
|
|
376
381
|
}
|
|
377
382
|
default:
|
|
@@ -421,3 +426,5 @@ export function aggregate(dashboardItem, bucketFields, dateFilter) {
|
|
|
421
426
|
return dashboardItem;
|
|
422
427
|
}
|
|
423
428
|
}
|
|
429
|
+
exports.aggregate = aggregate;
|
|
430
|
+
//# sourceMappingURL=aggregate.js.map
|
package/dist/utils/colorToHex.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COLOR_TO_HEX = void 0;
|
|
4
|
+
exports.COLOR_TO_HEX = {
|
|
2
5
|
aliceblue: '#f0f8ff',
|
|
3
6
|
antiquewhite: '#faebd7',
|
|
4
7
|
aqua: '#00ffff',
|
|
@@ -141,3 +144,4 @@ export const COLOR_TO_HEX = {
|
|
|
141
144
|
yellow: '#ffff00',
|
|
142
145
|
yellowgreen: '#9acd32',
|
|
143
146
|
};
|
|
147
|
+
//# sourceMappingURL=colorToHex.js.map
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDataFromCloud = exports.getData = void 0;
|
|
1
4
|
// this function gets the data either from the self hosted endpoint or
|
|
2
5
|
// our cloud server
|
|
3
|
-
|
|
6
|
+
async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cloudRequestBody, method = 'POST') {
|
|
4
7
|
if (client.queryEndpoint) {
|
|
5
8
|
// self hosted
|
|
6
9
|
const resp = await fetch(client.queryEndpoint, {
|
|
@@ -26,7 +29,8 @@ export async function getData(client, cloudQueryEndpoint, noCred, hostedRequestB
|
|
|
26
29
|
return await getDataFromCloud(client, cloudQueryEndpoint, cloudRequestBody, method);
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
|
-
|
|
32
|
+
exports.getData = getData;
|
|
33
|
+
async function getDataFromCloud(client, cloudQueryEndpoint, cloudRequestBody, method = 'POST') {
|
|
30
34
|
const environment = client?.environment;
|
|
31
35
|
const resp = await fetch(`https://quill-344421.uc.r.appspot.com/${cloudQueryEndpoint}`,
|
|
32
36
|
// `http://localhost:8080/${cloudQueryEndpoint}`,
|
|
@@ -56,3 +60,5 @@ export async function getDataFromCloud(client, cloudQueryEndpoint, cloudRequestB
|
|
|
56
60
|
return null;
|
|
57
61
|
}
|
|
58
62
|
}
|
|
63
|
+
exports.getDataFromCloud = getDataFromCloud;
|
|
64
|
+
//# sourceMappingURL=dataFetcher.js.map
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.downloadCSV = void 0;
|
|
1
4
|
// @ts-nocheck
|
|
2
|
-
|
|
5
|
+
function downloadCSV(rows, filename) {
|
|
3
6
|
const json = rows;
|
|
4
7
|
const fields = Object.keys(json[0]);
|
|
5
8
|
const csvRows = [];
|
|
@@ -22,3 +25,5 @@ export function downloadCSV(rows, filename) {
|
|
|
22
25
|
downloadLink.click();
|
|
23
26
|
document.body.removeChild(downloadLink);
|
|
24
27
|
}
|
|
28
|
+
exports.downloadCSV = downloadCSV;
|
|
29
|
+
//# sourceMappingURL=downloadCSV.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quillsql/react",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.8",
|
|
4
4
|
"description": "Quill React components for building dashboards and reporting.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"typescript": "^5.3.3"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
+
"react": "^18.0.0",
|
|
32
33
|
"react-dom": "^18.0.0"
|
|
33
34
|
},
|
|
34
35
|
"access": "public"
|