@quillsql/react 1.7.0 → 1.7.1
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/lib/AddToDashboardModal.js +249 -369
- package/lib/AddToDashboardModal.js.map +1 -1
- package/lib/BarList.js +92 -109
- package/lib/BarList.js.map +1 -1
- package/lib/Chart.js +364 -414
- package/lib/Chart.js.map +1 -1
- package/lib/Context.js +92 -84
- package/lib/Context.js.map +1 -1
- package/lib/Dashboard.js +181 -209
- package/lib/Dashboard.js.map +1 -1
- package/lib/DateRangePicker/Calendar.js +87 -91
- package/lib/DateRangePicker/Calendar.js.map +1 -1
- package/lib/DateRangePicker/DateRangePicker.js +70 -68
- package/lib/DateRangePicker/DateRangePicker.js.map +1 -1
- package/lib/DateRangePicker/DateRangePickerButton.js +46 -57
- package/lib/DateRangePicker/DateRangePickerButton.js.map +1 -1
- package/lib/DateRangePicker/dateRangePickerUtils.js +105 -99
- package/lib/DateRangePicker/dateRangePickerUtils.js.map +1 -1
- package/lib/DateRangePicker/index.js +8 -1
- package/lib/DateRangePicker/index.js.map +1 -1
- package/lib/PieChart.js +221 -225
- package/lib/PieChart.js.map +1 -1
- package/lib/QuillProvider.js +8 -18
- package/lib/QuillProvider.js.map +1 -1
- package/lib/ReportBuilder.js +430 -526
- package/lib/ReportBuilder.js.map +1 -1
- package/lib/SQLEditor.js +183 -268
- package/lib/SQLEditor.js.map +1 -1
- package/lib/Table.js +213 -256
- package/lib/Table.js.map +1 -1
- package/lib/TableChart.js +76 -75
- package/lib/TableChart.js.map +1 -1
- package/lib/assets/ArrowDownHeadIcon.js +5 -28
- package/lib/assets/ArrowDownHeadIcon.js.map +1 -1
- package/lib/assets/ArrowDownIcon.js +5 -28
- package/lib/assets/ArrowDownIcon.js.map +1 -1
- package/lib/assets/ArrowDownRightIcon.js +5 -28
- package/lib/assets/ArrowDownRightIcon.js.map +1 -1
- package/lib/assets/ArrowLeftHeadIcon.js +5 -28
- package/lib/assets/ArrowLeftHeadIcon.js.map +1 -1
- package/lib/assets/ArrowRightHeadIcon.js +5 -28
- package/lib/assets/ArrowRightHeadIcon.js.map +1 -1
- package/lib/assets/ArrowRightIcon.js +5 -28
- package/lib/assets/ArrowRightIcon.js.map +1 -1
- package/lib/assets/ArrowUpHeadIcon.js +5 -28
- package/lib/assets/ArrowUpHeadIcon.js.map +1 -1
- package/lib/assets/ArrowUpIcon.js +5 -28
- package/lib/assets/ArrowUpIcon.js.map +1 -1
- package/lib/assets/ArrowUpRightIcon.js +5 -28
- package/lib/assets/ArrowUpRightIcon.js.map +1 -1
- package/lib/assets/CalendarIcon.js +5 -28
- package/lib/assets/CalendarIcon.js.map +1 -1
- package/lib/assets/DoubleArrowLeftHeadIcon.js +5 -28
- package/lib/assets/DoubleArrowLeftHeadIcon.js.map +1 -1
- package/lib/assets/DoubleArrowRightHeadIcon.js +5 -28
- package/lib/assets/DoubleArrowRightHeadIcon.js.map +1 -1
- package/lib/assets/ExclamationFilledIcon.js +5 -28
- package/lib/assets/ExclamationFilledIcon.js.map +1 -1
- package/lib/assets/LoadingSpinner.js +5 -28
- package/lib/assets/LoadingSpinner.js.map +1 -1
- package/lib/assets/SearchIcon.js +5 -28
- package/lib/assets/SearchIcon.js.map +1 -1
- package/lib/assets/XCircleIcon.js +5 -28
- package/lib/assets/XCircleIcon.js.map +1 -1
- package/lib/assets/index.js +38 -16
- package/lib/assets/index.js.map +1 -1
- package/lib/components/BigModal/BigModal.js +45 -43
- package/lib/components/BigModal/BigModal.js.map +1 -1
- package/lib/components/Dropdown/Dropdown.js +57 -53
- package/lib/components/Dropdown/Dropdown.js.map +1 -1
- package/lib/components/Dropdown/DropdownItem.js +43 -40
- package/lib/components/Dropdown/DropdownItem.js.map +1 -1
- package/lib/components/Dropdown/index.js +10 -2
- package/lib/components/Dropdown/index.js.map +1 -1
- package/lib/components/Modal/Modal.js +45 -43
- package/lib/components/Modal/Modal.js.map +1 -1
- package/lib/components/Modal/index.js +8 -1
- package/lib/components/Modal/index.js.map +1 -1
- package/lib/components/selectUtils.js +20 -15
- package/lib/components/selectUtils.js.map +1 -1
- package/lib/contexts/BaseColorContext.js +5 -3
- package/lib/contexts/BaseColorContext.js.map +1 -1
- package/lib/contexts/HoveredValueContext.js +5 -3
- package/lib/contexts/HoveredValueContext.js.map +1 -1
- package/lib/contexts/RootStylesContext.js +5 -3
- package/lib/contexts/RootStylesContext.js.map +1 -1
- package/lib/contexts/SelectedValueContext.js +5 -3
- package/lib/contexts/SelectedValueContext.js.map +1 -1
- package/lib/contexts/index.js +14 -4
- package/lib/contexts/index.js.map +1 -1
- package/lib/hooks/index.js +14 -4
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useInternalState.js +9 -7
- package/lib/hooks/useInternalState.js.map +1 -1
- package/lib/hooks/useOnClickOutside.js +8 -6
- package/lib/hooks/useOnClickOutside.js.map +1 -1
- package/lib/hooks/useOnWindowResize.js +9 -7
- package/lib/hooks/useOnWindowResize.js.map +1 -1
- package/lib/hooks/useQuill.js +60 -111
- package/lib/hooks/useQuill.js.map +1 -1
- package/lib/hooks/useSelectOnKeyDown.js +17 -15
- package/lib/hooks/useSelectOnKeyDown.js.map +1 -1
- package/lib/index.js +22 -8
- package/lib/index.js.map +1 -1
- package/package.json +2 -16
- package/src/Dashboard.tsx +2 -2
- package/src/ReportBuilder.tsx +0 -1
- package/src/SQLEditor.tsx +0 -1
package/lib/Chart.js
CHANGED
|
@@ -1,74 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
-
function step(op) {
|
|
26
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
-
switch (op[0]) {
|
|
31
|
-
case 0: case 1: t = op; break;
|
|
32
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
-
default:
|
|
36
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
-
if (t[2]) _.ops.pop();
|
|
41
|
-
_.trys.pop(); continue;
|
|
42
|
-
}
|
|
43
|
-
op = body.call(thisArg, _);
|
|
44
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
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]; } };
|
|
46
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
47
24
|
};
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
if (ar || !(i in from)) {
|
|
51
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
52
|
-
ar[i] = from[i];
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
56
27
|
};
|
|
57
|
-
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.ChartTooltipRow = exports.ChartTooltipFrame = exports.valueFormatter = void 0;
|
|
30
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
58
31
|
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
59
32
|
// @ts-nocheck
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
33
|
+
const react_1 = require("react");
|
|
34
|
+
const recharts_1 = require("recharts");
|
|
35
|
+
const date_fns_1 = require("date-fns");
|
|
36
|
+
const date_fns_tz_1 = require("date-fns-tz");
|
|
37
|
+
const BarList_1 = __importDefault(require("./BarList"));
|
|
38
|
+
const PieChart_1 = __importStar(require("./PieChart"));
|
|
39
|
+
const axios_1 = __importDefault(require("axios"));
|
|
40
|
+
const Context_1 = require("./Context");
|
|
41
|
+
const react_loading_skeleton_1 = __importDefault(require("react-loading-skeleton"));
|
|
42
|
+
require("react-loading-skeleton/dist/skeleton.css");
|
|
43
|
+
const TableChart_1 = __importDefault(require("./TableChart"));
|
|
44
|
+
const colorValues = [
|
|
72
45
|
'slate',
|
|
73
46
|
'gray',
|
|
74
47
|
'zinc',
|
|
@@ -124,21 +97,20 @@ var colorValues = [
|
|
|
124
97
|
// 'The Pragmatic Engineer': 1726,
|
|
125
98
|
// },
|
|
126
99
|
// ];
|
|
127
|
-
|
|
128
|
-
var value = _a.value, field = _a.field, fields = _a.fields;
|
|
100
|
+
const valueFormatter = ({ value, field, fields }) => {
|
|
129
101
|
if (value === undefined ||
|
|
130
102
|
value === null ||
|
|
131
103
|
field === undefined ||
|
|
132
104
|
field === null) {
|
|
133
105
|
return '';
|
|
134
106
|
}
|
|
135
|
-
|
|
107
|
+
const fieldInfo = fields.find(f => f.field === field);
|
|
136
108
|
if (!fieldInfo) {
|
|
137
109
|
return '';
|
|
138
110
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
111
|
+
const formatType = fieldInfo.format;
|
|
112
|
+
const numValue = Number(value);
|
|
113
|
+
const absNumber = isNaN(numValue) ? 0 : Math.abs(numValue);
|
|
142
114
|
if (formatType === 'percent') {
|
|
143
115
|
if (absNumber < 1) {
|
|
144
116
|
return (absNumber * 100).toFixed(0) + '%';
|
|
@@ -148,7 +120,7 @@ export var valueFormatter = function (_a) {
|
|
|
148
120
|
}
|
|
149
121
|
}
|
|
150
122
|
if (formatType === 'dollar_amount') {
|
|
151
|
-
|
|
123
|
+
const formatter = new Intl.NumberFormat('en-US', {
|
|
152
124
|
style: 'currency',
|
|
153
125
|
currency: 'USD',
|
|
154
126
|
minimumFractionDigits: 0,
|
|
@@ -175,36 +147,36 @@ export var valueFormatter = function (_a) {
|
|
|
175
147
|
formatType === 'hh_ap_pm' ||
|
|
176
148
|
formatType === 'MMM_dd-MMM_dd' ||
|
|
177
149
|
formatType === 'MMM_dd_hh:mm_ap_pm') {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
if (!isValid(utcDate)) {
|
|
150
|
+
const dateValue = new Date(value);
|
|
151
|
+
const utcDate = (0, date_fns_tz_1.utcToZonedTime)(dateValue, 'UTC');
|
|
152
|
+
if (!(0, date_fns_1.isValid)(utcDate)) {
|
|
181
153
|
return 'Invalid date';
|
|
182
154
|
}
|
|
183
155
|
if (formatType === 'MMM_yyyy') {
|
|
184
|
-
return format(utcDate, 'MMM yyyy');
|
|
156
|
+
return (0, date_fns_1.format)(utcDate, 'MMM yyyy');
|
|
185
157
|
}
|
|
186
158
|
if (formatType === 'MMM_dd_yyyy') {
|
|
187
|
-
return format(utcDate, 'dd MMM yyyy');
|
|
159
|
+
return (0, date_fns_1.format)(utcDate, 'dd MMM yyyy');
|
|
188
160
|
}
|
|
189
161
|
if (formatType === 'hh_ap_pm') {
|
|
190
|
-
return format(utcDate, 'hh:mm aa');
|
|
162
|
+
return (0, date_fns_1.format)(utcDate, 'hh:mm aa');
|
|
191
163
|
}
|
|
192
164
|
if (formatType === 'MMM_dd-MMM_dd') {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
165
|
+
const start = (0, date_fns_1.startOfWeek)(utcDate, { weekStartsOn: 1 }); // Monday
|
|
166
|
+
const end = (0, date_fns_1.endOfWeek)(utcDate, { weekStartsOn: 1 }); // Sunday
|
|
167
|
+
let formattedDate = '';
|
|
196
168
|
// Check if start and end are in the same month
|
|
197
|
-
if (format(start, 'MMM') === format(end, 'MMM')) {
|
|
198
|
-
formattedDate =
|
|
169
|
+
if ((0, date_fns_1.format)(start, 'MMM') === (0, date_fns_1.format)(end, 'MMM')) {
|
|
170
|
+
formattedDate = `${(0, date_fns_1.format)(start, 'MMM dd')} - ${(0, date_fns_1.format)(end, 'dd')}`;
|
|
199
171
|
}
|
|
200
172
|
else {
|
|
201
|
-
formattedDate =
|
|
173
|
+
formattedDate = `${(0, date_fns_1.format)(start, 'MMM dd')} - ${(0, date_fns_1.format)(end, 'MMM dd')}`;
|
|
202
174
|
}
|
|
203
175
|
return formattedDate;
|
|
204
176
|
}
|
|
205
177
|
if (formatType === 'MMM_dd_hh:mm_ap_pm') {
|
|
206
|
-
|
|
207
|
-
|
|
178
|
+
const formatStr = utcDate.getMinutes() === 0 ? 'MMM do h a' : 'MMM do h:mm a';
|
|
179
|
+
let formattedTime = (0, date_fns_1.format)(utcDate, formatStr);
|
|
208
180
|
formattedTime =
|
|
209
181
|
formattedTime.slice(0, -2) + formattedTime.slice(-2).toLowerCase();
|
|
210
182
|
return formattedTime;
|
|
@@ -215,85 +187,81 @@ export var valueFormatter = function (_a) {
|
|
|
215
187
|
}
|
|
216
188
|
return value.toString();
|
|
217
189
|
};
|
|
218
|
-
|
|
190
|
+
exports.valueFormatter = valueFormatter;
|
|
191
|
+
const yAxisFields = [
|
|
219
192
|
{ field: 'avg_days', label: 'average days' },
|
|
220
193
|
{ field: 'median_days', label: 'median days' },
|
|
221
194
|
];
|
|
222
|
-
|
|
195
|
+
const labelFormatter = (name) => {
|
|
223
196
|
// return yAxisFields.filter(elem => elem.field === name)[0].label;
|
|
224
197
|
return name;
|
|
225
198
|
};
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
fontWeight: (theme === null || theme === void 0 ? void 0 : theme.fontWeightNormal) || '400',
|
|
288
|
-
} }, { children: name }))] })));
|
|
289
|
-
};
|
|
290
|
-
var ChartTooltip = function (_a) {
|
|
291
|
-
var active = _a.active, payload = _a.payload, label = _a.label, colors = _a.colors, valueFormatter = _a.valueFormatter, dateFormatter = _a.dateFormatter, theme = _a.theme;
|
|
199
|
+
const ChartTooltipFrame = ({ children, theme, }) => ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
200
|
+
borderStyle: 'solid',
|
|
201
|
+
borderColor: theme?.borderColor || '#E5E7EB',
|
|
202
|
+
overflow: 'hidden',
|
|
203
|
+
borderWidth: 1,
|
|
204
|
+
background: theme?.backgroundColor || '#ffffff',
|
|
205
|
+
borderRadius: '6px',
|
|
206
|
+
boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
|
|
207
|
+
}, children: children }));
|
|
208
|
+
exports.ChartTooltipFrame = ChartTooltipFrame;
|
|
209
|
+
const ChartTooltipRow = ({ value, name, color, theme, }) => ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
210
|
+
marginRight: '24px',
|
|
211
|
+
display: 'flex',
|
|
212
|
+
alignItems: 'center',
|
|
213
|
+
justifyContent: 'space-between',
|
|
214
|
+
width: '100%',
|
|
215
|
+
paddingTop: 2,
|
|
216
|
+
paddingBottom: 2,
|
|
217
|
+
}, children: [(0, jsx_runtime_1.jsxs)("div", {
|
|
218
|
+
// className="qq-flex qq-items-center qq-space-x-2"
|
|
219
|
+
style: {
|
|
220
|
+
// marginLeft: '0.5rem',
|
|
221
|
+
display: 'flex',
|
|
222
|
+
alignItems: 'center',
|
|
223
|
+
}, children: [(0, jsx_runtime_1.jsx)("span", { style: {
|
|
224
|
+
background: color,
|
|
225
|
+
borderWidth: 2,
|
|
226
|
+
borderColor: 'white',
|
|
227
|
+
borderStyle: 'solid',
|
|
228
|
+
borderColor: 'white',
|
|
229
|
+
boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
|
|
230
|
+
height: '8px',
|
|
231
|
+
width: '8px',
|
|
232
|
+
borderRadius: 100,
|
|
233
|
+
marginRight: 4,
|
|
234
|
+
} }), (0, jsx_runtime_1.jsx)("p", {
|
|
235
|
+
// className={twMerge(
|
|
236
|
+
// 'font-medium tabular-nums text-right whitespace-nowrap',
|
|
237
|
+
// 'text-[#212121] !important'
|
|
238
|
+
// )}
|
|
239
|
+
style: {
|
|
240
|
+
marginTop: 0,
|
|
241
|
+
marginBottom: 0,
|
|
242
|
+
fontFamily: theme?.fontFamily,
|
|
243
|
+
color: theme?.primaryTextColor,
|
|
244
|
+
fontSize: theme?.fontSizeSmall || '14px',
|
|
245
|
+
fontWeight: theme?.fontWeightMedium || '500',
|
|
246
|
+
}, children: value })] }), (0, jsx_runtime_1.jsx)("p", { style: {
|
|
247
|
+
marginTop: 0,
|
|
248
|
+
marginBottom: 0,
|
|
249
|
+
fontFamily: theme?.fontFamily,
|
|
250
|
+
color: theme?.secondaryTextColor,
|
|
251
|
+
textAlign: 'right',
|
|
252
|
+
whiteSpace: 'nowrap',
|
|
253
|
+
overflow: 'hidden',
|
|
254
|
+
textOverflow: 'ellipsis',
|
|
255
|
+
fontSize: theme?.fontSizeSmall || '14px',
|
|
256
|
+
fontWeight: theme?.fontWeightNormal || '400',
|
|
257
|
+
}, children: name })] }));
|
|
258
|
+
exports.ChartTooltipRow = ChartTooltipRow;
|
|
259
|
+
const ChartTooltip = ({ active, payload, label, colors, valueFormatter, dateFormatter, theme, }) => {
|
|
292
260
|
if (active && payload) {
|
|
293
|
-
return (
|
|
261
|
+
return ((0, jsx_runtime_1.jsxs)(exports.ChartTooltipFrame, { theme: theme, children: [(0, jsx_runtime_1.jsx)("div", { style: {
|
|
294
262
|
borderStyle: 'solid',
|
|
295
|
-
borderBottomColor:
|
|
296
|
-
background:
|
|
263
|
+
borderBottomColor: theme?.borderColor || '#E5E7EB',
|
|
264
|
+
background: theme?.backgroundColor || 'white',
|
|
297
265
|
borderTop: 'none',
|
|
298
266
|
borderLeft: 'none',
|
|
299
267
|
borderRight: 'none',
|
|
@@ -304,21 +272,21 @@ var ChartTooltip = function (_a) {
|
|
|
304
272
|
paddingRight: '16px',
|
|
305
273
|
paddingTop: '8px',
|
|
306
274
|
paddingBottom: '8px',
|
|
307
|
-
}
|
|
275
|
+
}, children: (0, jsx_runtime_1.jsx)("p", { style: {
|
|
308
276
|
textAlign: 'left',
|
|
309
277
|
marginTop: 0,
|
|
310
278
|
marginBottom: 0,
|
|
311
|
-
fontFamily: theme
|
|
312
|
-
color: theme
|
|
313
|
-
fontSize:
|
|
314
|
-
fontWeight:
|
|
279
|
+
fontFamily: theme?.fontFamily,
|
|
280
|
+
color: theme?.primaryTextColor,
|
|
281
|
+
fontSize: theme?.fontSizeSmall || '14px',
|
|
282
|
+
fontWeight: theme?.boldFontWeight || '500',
|
|
315
283
|
paddingTop: 2,
|
|
316
284
|
paddingBottom: 2,
|
|
317
|
-
}
|
|
285
|
+
}, children: !isNaN(new Date(label)) && dateFormatter
|
|
318
286
|
? dateFormatter(label)
|
|
319
287
|
: !isNaN(new Date(label))
|
|
320
|
-
? format(new Date(label), 'MMM yyyy')
|
|
321
|
-
: label })
|
|
288
|
+
? (0, date_fns_1.format)(new Date(label), 'MMM yyyy')
|
|
289
|
+
: label }) }), (0, jsx_runtime_1.jsx)("div", {
|
|
322
290
|
// className="qq-px-4 qq-space-y-1 qq-py-2 qq-px-4"
|
|
323
291
|
style: {
|
|
324
292
|
paddingRight: '16px',
|
|
@@ -326,209 +294,201 @@ var ChartTooltip = function (_a) {
|
|
|
326
294
|
paddingTop: '8px',
|
|
327
295
|
paddingBottom: '8px',
|
|
328
296
|
// marginTop: '0.25rem',
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
// color={categoryColors.get(name) ?? BaseColors.Blue}
|
|
333
|
-
color: colors[idx], theme: theme }, "id-".concat(idx)));
|
|
334
|
-
}) }))] })));
|
|
297
|
+
}, children: payload.map(({ value, name }, idx) => ((0, jsx_runtime_1.jsx)(exports.ChartTooltipRow, { value: valueFormatter(value), name: labelFormatter(name),
|
|
298
|
+
// color={categoryColors.get(name) ?? BaseColors.Blue}
|
|
299
|
+
color: colors[idx], theme: theme }, `id-${idx}`))) })] }));
|
|
335
300
|
}
|
|
336
301
|
return null;
|
|
337
302
|
};
|
|
338
303
|
// @ts-ignore
|
|
339
304
|
function sumByKey(arr, key) {
|
|
340
305
|
// @ts-ignore
|
|
341
|
-
return arr.reduce(
|
|
342
|
-
|
|
306
|
+
return arr.reduce((acc, cur) => {
|
|
307
|
+
const val = parseInt(cur[key], 10);
|
|
343
308
|
return isNaN(val) ? acc : acc + val;
|
|
344
309
|
}, 0);
|
|
345
310
|
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
return (colors === null || colors === void 0 ? void 0 : colors.length) ? colors : ['#6269E9', '#E14F62'];
|
|
311
|
+
const Chart = ({ chartId, config, colors, containerStyle, dateFilter, query, }) => {
|
|
312
|
+
const { dispatch, dashboard } = (0, react_1.useContext)(Context_1.DashboardContext);
|
|
313
|
+
const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
|
|
314
|
+
const [client, _] = (0, react_1.useContext)(Context_1.ClientContext);
|
|
315
|
+
const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
|
|
316
|
+
const chartColors = (0, react_1.useMemo)(() => {
|
|
317
|
+
return colors?.length ? colors : ['#6269E9', '#E14F62'];
|
|
354
318
|
}, [colors]);
|
|
355
|
-
return (
|
|
319
|
+
return ((0, jsx_runtime_1.jsx)(ChartUpdater, { config: config, dispatch: dispatch, dashboard: dashboard, chartId: chartId, containerStyle: containerStyle, colors: chartColors, client: client, theme: theme, isDateFilter: dateFilter, dashboardFilters: dashboardFilters, query: query }));
|
|
356
320
|
};
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
var colors = _a.colors, chartId = _a.chartId, config = _a.config, containerStyle = _a.containerStyle, dashboard = _a.dashboard, dispatch = _a.dispatch, client = _a.client, theme = _a.theme, isDateFilter = _a.isDateFilter, dashboardFilters = _a.dashboardFilters, query = _a.query;
|
|
360
|
-
var _g = useState(true), loading = _g[0], setLoading = _g[1];
|
|
321
|
+
const ChartUpdater = ({ colors, chartId, config, containerStyle, dashboard, dispatch, client, theme, isDateFilter, dashboardFilters, query, }) => {
|
|
322
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
361
323
|
// console.log('chartConfig:', chartConfig);
|
|
362
324
|
// console.log('chartConfig.rows:', chartConfig.rows);
|
|
363
325
|
// console.log('chartConfig.xAxisField:', chartConfig.xAxisField);
|
|
364
|
-
|
|
326
|
+
(0, react_1.useEffect)(() => {
|
|
365
327
|
if (isDateFilter && !dateFilter) {
|
|
366
328
|
return;
|
|
367
329
|
}
|
|
368
|
-
|
|
369
|
-
function getChartOptions() {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
task: 'item',
|
|
402
|
-
filters: __assign(__assign({}, Object.entries(dashboardFilters)
|
|
403
|
-
.filter(function (_a) {
|
|
404
|
-
var key = _a[0];
|
|
405
|
-
return key !== 'date_range';
|
|
406
|
-
})
|
|
407
|
-
.map(function (_a) {
|
|
408
|
-
var value = _a[1];
|
|
409
|
-
return value;
|
|
410
|
-
})), { dateFilter: dateFilter }),
|
|
411
|
-
},
|
|
412
|
-
}, { headers: queryHeaders, withCredentials: withCredentials })];
|
|
413
|
-
case 2:
|
|
414
|
-
resp = _a.sent();
|
|
415
|
-
if (resp.data) {
|
|
416
|
-
setLoading(false);
|
|
417
|
-
dispatch({
|
|
418
|
-
type: 'UPDATE_DASHBOARD_ITEM',
|
|
419
|
-
id: chartId,
|
|
420
|
-
data: __assign({}, resp.data),
|
|
421
|
-
});
|
|
422
|
-
}
|
|
423
|
-
return [3 /*break*/, 5];
|
|
424
|
-
case 3: return [4 /*yield*/, axios.get('https://quill-344421.uc.r.appspot.com/item', {
|
|
425
|
-
params: {
|
|
426
|
-
id: chartId,
|
|
427
|
-
orgId: customerId,
|
|
428
|
-
publicKey: publicKey,
|
|
429
|
-
filters: Object.keys(dashboardFilters).map(function (key) { return dashboardFilters[key]; }),
|
|
430
|
-
// startDate:
|
|
431
|
-
// dateFilter &&
|
|
432
|
-
// dateFilter.startDate &&
|
|
433
|
-
// dateFilter.startDate.toISOString(),
|
|
434
|
-
// endDate:
|
|
435
|
-
// dateFilter &&
|
|
436
|
-
// dateFilter.endDate &&
|
|
437
|
-
// dateFilter.endDate.toISOString(),
|
|
330
|
+
let isSubscribed = true;
|
|
331
|
+
async function getChartOptions() {
|
|
332
|
+
if (isSubscribed) {
|
|
333
|
+
const { publicKey, customerId, environment, queryEndpoint, queryHeaders, withCredentials, } = client;
|
|
334
|
+
//queryEndpoint = undefined;
|
|
335
|
+
setLoading(true);
|
|
336
|
+
try {
|
|
337
|
+
// if self-hosting option, only get metadata and query
|
|
338
|
+
if (queryEndpoint) {
|
|
339
|
+
// const resp = await axios.get(
|
|
340
|
+
// 'https://quill-344421.uc.r.appspot.com/selfhostitem',
|
|
341
|
+
// {
|
|
342
|
+
// params: {
|
|
343
|
+
// id: chartId,
|
|
344
|
+
// orgId: customerId,
|
|
345
|
+
// publicKey: publicKey,
|
|
346
|
+
// },
|
|
347
|
+
// environment: environment || undefined,
|
|
348
|
+
// }
|
|
349
|
+
// );
|
|
350
|
+
if (dashboardFilters['date_range'] && dashboard[chartId]) {
|
|
351
|
+
const dateFilter = dashboardFilters['date_range'];
|
|
352
|
+
dateFilter.dateField = dashboard[chartId].dateField;
|
|
353
|
+
}
|
|
354
|
+
const resp = await axios_1.default.post(queryEndpoint, {
|
|
355
|
+
metadata: {
|
|
356
|
+
id: chartId,
|
|
357
|
+
task: 'item',
|
|
358
|
+
filters: {
|
|
359
|
+
...Object.entries(dashboardFilters)
|
|
360
|
+
.filter(([key]) => key !== 'date_range')
|
|
361
|
+
.map(([, value]) => value),
|
|
362
|
+
dateFilter,
|
|
438
363
|
},
|
|
439
|
-
|
|
440
|
-
|
|
364
|
+
},
|
|
365
|
+
}, { headers: queryHeaders, withCredentials });
|
|
366
|
+
if (resp.data) {
|
|
367
|
+
setLoading(false);
|
|
368
|
+
dispatch({
|
|
369
|
+
type: 'UPDATE_DASHBOARD_ITEM',
|
|
370
|
+
id: chartId,
|
|
371
|
+
data: {
|
|
372
|
+
...resp.data,
|
|
441
373
|
},
|
|
442
|
-
})
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
const resp = await axios_1.default.get('https://quill-344421.uc.r.appspot.com/item', {
|
|
379
|
+
params: {
|
|
380
|
+
id: chartId,
|
|
381
|
+
orgId: customerId,
|
|
382
|
+
publicKey: publicKey,
|
|
383
|
+
filters: Object.keys(dashboardFilters).map(key => dashboardFilters[key]),
|
|
384
|
+
// startDate:
|
|
385
|
+
// dateFilter &&
|
|
386
|
+
// dateFilter.startDate &&
|
|
387
|
+
// dateFilter.startDate.toISOString(),
|
|
388
|
+
// endDate:
|
|
389
|
+
// dateFilter &&
|
|
390
|
+
// dateFilter.endDate &&
|
|
391
|
+
// dateFilter.endDate.toISOString(),
|
|
392
|
+
},
|
|
393
|
+
headers: {
|
|
394
|
+
environment: environment || undefined,
|
|
395
|
+
},
|
|
396
|
+
});
|
|
397
|
+
// console.log('RESP: ', resp.data);
|
|
398
|
+
if (resp.data) {
|
|
459
399
|
setLoading(false);
|
|
460
|
-
|
|
461
|
-
|
|
400
|
+
dispatch({
|
|
401
|
+
type: 'UPDATE_DASHBOARD_ITEM',
|
|
402
|
+
id: chartId,
|
|
403
|
+
data: { ...resp.data },
|
|
404
|
+
});
|
|
405
|
+
}
|
|
462
406
|
}
|
|
463
|
-
}
|
|
464
|
-
|
|
407
|
+
}
|
|
408
|
+
catch (e) {
|
|
409
|
+
console.log('Error fetching chart: ', e);
|
|
410
|
+
setLoading(false);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
465
413
|
}
|
|
466
414
|
if (config) {
|
|
467
415
|
setLoading(false);
|
|
468
416
|
return;
|
|
469
417
|
}
|
|
470
418
|
getChartOptions(); //when wouldn't you run this????? saw if statements before that implied you might not run this sometimes
|
|
471
|
-
return
|
|
419
|
+
return () => {
|
|
472
420
|
isSubscribed = false;
|
|
473
421
|
};
|
|
474
422
|
}, [dashboardFilters]);
|
|
475
423
|
// console.log('DASHBOARD FILTERS: ', dashboardFilters);
|
|
476
|
-
|
|
424
|
+
(0, react_1.useEffect)(() => {
|
|
477
425
|
if (config) {
|
|
478
426
|
dispatch({
|
|
479
427
|
type: 'UPDATE_DASHBOARD_ITEM',
|
|
480
428
|
id: chartId,
|
|
481
|
-
data:
|
|
429
|
+
data: { ...config },
|
|
482
430
|
});
|
|
483
431
|
}
|
|
484
432
|
}, [config]);
|
|
485
|
-
|
|
433
|
+
const dateFilter = Object.values(dashboardFilters).find(filter => filter && filter.filterType === 'DATE_RANGE');
|
|
486
434
|
if (!dashboard[chartId] || loading) {
|
|
487
|
-
return (
|
|
435
|
+
return ((0, jsx_runtime_1.jsx)("div", {
|
|
488
436
|
// className="flex flex-col flex-1 h-[100%]"
|
|
489
|
-
style:
|
|
490
|
-
|
|
437
|
+
style: {
|
|
438
|
+
...containerStyle,
|
|
439
|
+
marginLeft: 25,
|
|
440
|
+
marginRight: 25,
|
|
441
|
+
boxSizing: 'content-box',
|
|
442
|
+
height: '100%',
|
|
443
|
+
display: 'flex',
|
|
444
|
+
flexDirection: 'column',
|
|
445
|
+
flex: 1,
|
|
446
|
+
}, children: (0, jsx_runtime_1.jsx)("div", { style: {
|
|
447
|
+
height: containerStyle?.height || 300,
|
|
491
448
|
width: '100%',
|
|
492
449
|
boxSizing: 'content-box',
|
|
493
|
-
}
|
|
450
|
+
}, children: (0, jsx_runtime_1.jsx)(react_loading_skeleton_1.default, { count: 1,
|
|
494
451
|
// height={containerStyle?.height}
|
|
495
|
-
height:
|
|
496
|
-
?
|
|
497
|
-
:
|
|
498
|
-
? containerStyle
|
|
452
|
+
height: containerStyle?.height && containerStyle?.marginTop
|
|
453
|
+
? containerStyle?.height + containerStyle?.marginTop
|
|
454
|
+
: containerStyle?.height
|
|
455
|
+
? containerStyle?.height
|
|
499
456
|
: 300, borderRadius: 8,
|
|
500
457
|
// highlightColor="#F7F7F8"
|
|
501
458
|
highlightColor: "#FDFDFD",
|
|
502
459
|
// baseColor="#F3F4F6"
|
|
503
|
-
baseColor: "#F9F9FA", width: "100%" }) })
|
|
460
|
+
baseColor: "#F9F9FA", width: "100%" }) }) }));
|
|
504
461
|
}
|
|
505
|
-
if (
|
|
506
|
-
|
|
507
|
-
return (
|
|
462
|
+
if (dashboard[chartId]?.chartType === 'pie') {
|
|
463
|
+
const { xAxisField, yAxisFields } = dashboard[chartId];
|
|
464
|
+
return ((0, jsx_runtime_1.jsx)(PieChart_1.default
|
|
508
465
|
// @ts-ignore
|
|
509
466
|
, {
|
|
510
467
|
// @ts-ignore
|
|
511
|
-
containerStyle: containerStyle, data: dashboard[chartId].rows.map(
|
|
512
|
-
return
|
|
513
|
-
|
|
514
|
-
|
|
468
|
+
containerStyle: containerStyle, data: dashboard[chartId].rows.map(row => {
|
|
469
|
+
return {
|
|
470
|
+
...row,
|
|
471
|
+
count: parseInt(row[yAxisFields[0].field]) /
|
|
472
|
+
sumByKey(dashboard[chartId].rows, yAxisFields[0].field),
|
|
473
|
+
};
|
|
474
|
+
}), category: yAxisFields[0].field, index: xAxisField, colors: colors, theme: theme }));
|
|
515
475
|
}
|
|
516
|
-
if (
|
|
517
|
-
return (
|
|
476
|
+
if (dashboard[chartId]?.chartType === 'table') {
|
|
477
|
+
return ((0, jsx_runtime_1.jsx)(TableChart_1.default, { data: dashboard[chartId].rows, yAxisFields: dashboard[chartId].yAxisFields, theme: theme, containerStyle: containerStyle }));
|
|
518
478
|
}
|
|
519
|
-
if (
|
|
520
|
-
return (
|
|
479
|
+
if (dashboard[chartId]?.chartType === 'bar') {
|
|
480
|
+
return ((0, jsx_runtime_1.jsx)(BarList_1.default, { data: dashboard[chartId].rows, theme: theme, yAxisFields: dashboard[chartId].yAxisFields, xAxisFormat: dashboard[chartId].xAxisFormat, colors: colors, xAxisField: dashboard[chartId].xAxisField, containerStyle: containerStyle }));
|
|
521
481
|
}
|
|
522
|
-
if (
|
|
523
|
-
return (
|
|
482
|
+
if (dashboard[chartId]?.chartType === 'column') {
|
|
483
|
+
return ((0, jsx_runtime_1.jsx)(BarChart, { colors: colors, theme: theme, yAxisFields: dashboard[chartId].yAxisFields,
|
|
524
484
|
// @ts-ignore
|
|
525
485
|
data: dashboard[chartId].rows, xAxisField: dashboard[chartId].xAxisField, xAxisLabel: dashboard[chartId].xAxisLabel, xAxisFormat: dashboard[chartId].xAxisFormat, containerStyle: containerStyle }));
|
|
526
486
|
}
|
|
527
|
-
if (
|
|
528
|
-
return (
|
|
529
|
-
fontFamily: theme
|
|
487
|
+
if (dashboard[chartId]?.chartType === 'metric') {
|
|
488
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
489
|
+
fontFamily: theme?.fontFamily,
|
|
530
490
|
fontSize: 32,
|
|
531
|
-
color: theme
|
|
491
|
+
color: theme?.primaryTextColor,
|
|
532
492
|
fontWeight: '600',
|
|
533
493
|
textOverflow: 'ellipsis',
|
|
534
494
|
margin: 0,
|
|
@@ -542,12 +502,12 @@ var ChartUpdater = function (_a) {
|
|
|
542
502
|
maxWidth: '100%',
|
|
543
503
|
textAlign: 'left',
|
|
544
504
|
overflow: 'hidden',
|
|
545
|
-
height:
|
|
505
|
+
height: containerStyle?.height || '100%',
|
|
546
506
|
display: 'flex',
|
|
547
507
|
flexDirection: 'column',
|
|
548
508
|
// background: 'red',
|
|
549
|
-
}
|
|
550
|
-
valueFormatter({
|
|
509
|
+
}, children: dashboard[chartId].rows.length > 0 &&
|
|
510
|
+
(0, exports.valueFormatter)({
|
|
551
511
|
value: dashboard[chartId].rows[0][dashboard[chartId].xAxisField],
|
|
552
512
|
field: dashboard[chartId].xAxisField,
|
|
553
513
|
fields: [
|
|
@@ -556,9 +516,9 @@ var ChartUpdater = function (_a) {
|
|
|
556
516
|
format: dashboard[chartId].xAxisFormat,
|
|
557
517
|
},
|
|
558
518
|
],
|
|
559
|
-
}) }))
|
|
519
|
+
}) }));
|
|
560
520
|
}
|
|
561
|
-
return (
|
|
521
|
+
return ((0, jsx_runtime_1.jsx)(LineChart, { colors: colors, yAxisFields: dashboard[chartId].yAxisFields,
|
|
562
522
|
// @ts-ignore
|
|
563
523
|
data: dashboard[chartId].rows, xAxisField: dashboard[chartId].xAxisField, xAxisLabel: dashboard[chartId].xAxisLabel, xAxisFormat: dashboard[chartId].xAxisFormat, containerStyle: containerStyle, theme: theme }));
|
|
564
524
|
};
|
|
@@ -594,13 +554,13 @@ function formatNumber(num, label) {
|
|
|
594
554
|
// return [adjustedMin, adjustedMax];
|
|
595
555
|
// }
|
|
596
556
|
function getDomain(data, fields) {
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
data.forEach(
|
|
600
|
-
fieldsArray.forEach(
|
|
601
|
-
|
|
557
|
+
const fieldsArray = fields.map(elem => elem.field);
|
|
558
|
+
const numericValues = [];
|
|
559
|
+
data.forEach(item => {
|
|
560
|
+
fieldsArray.forEach(field => {
|
|
561
|
+
let value = item[field];
|
|
602
562
|
// Try to cast the value to a number
|
|
603
|
-
|
|
563
|
+
const numericValue = parseFloat(value);
|
|
604
564
|
if (!isNaN(numericValue)) {
|
|
605
565
|
value = numericValue;
|
|
606
566
|
}
|
|
@@ -609,29 +569,36 @@ function getDomain(data, fields) {
|
|
|
609
569
|
}
|
|
610
570
|
});
|
|
611
571
|
});
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
var adjustedMin = Math.min(minValue, 0);
|
|
617
|
-
var padding = Math.round(0.2 * (maxValue - minValue));
|
|
618
|
-
var adjustedMax = maxValue + padding;
|
|
572
|
+
const [minValue, maxValue] = numericValues.reduce(([min, max], value) => [Math.min(min, value), Math.max(max, value)], [Infinity, -Infinity]);
|
|
573
|
+
const adjustedMin = Math.min(minValue, 0);
|
|
574
|
+
const padding = Math.round(0.2 * (maxValue - minValue));
|
|
575
|
+
const adjustedMax = maxValue + padding;
|
|
619
576
|
return [adjustedMin, adjustedMax];
|
|
620
577
|
}
|
|
621
|
-
|
|
622
|
-
var x = _a.x, y = _a.y, payload = _a.payload, theme = _a.theme;
|
|
578
|
+
const CustomizedTick = ({ x, y, payload, theme, }) => {
|
|
623
579
|
// const { x, y, payload } = props;
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
return (
|
|
580
|
+
const maxLength = 10;
|
|
581
|
+
const value = payload.value;
|
|
582
|
+
const truncatedValue = value.length > maxLength ? value.substring(0, maxLength) + '...' : value;
|
|
583
|
+
return ((0, jsx_runtime_1.jsx)("text", { xlinkTitle: value, fill: theme?.chartLabelColor, fontSize: 12, x: x, y: y + 15, width: 30, textAnchor: "middle", children: truncatedValue }));
|
|
628
584
|
};
|
|
629
|
-
function BarChart(
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
585
|
+
function BarChart({ colors, yAxisFields, data, containerStyle, xAxisField, xAxisLabel, xAxisFormat, theme, }) {
|
|
586
|
+
const newColors = (0, PieChart_1.findComplementaryAndAnalogousColors)(colors[0], colors[1]);
|
|
587
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
588
|
+
...containerStyle,
|
|
589
|
+
boxSizing: 'content-box',
|
|
590
|
+
// display: 'flex',
|
|
591
|
+
// flexDirection: 'column',
|
|
592
|
+
// flex: 1,
|
|
593
|
+
// height: '100%',
|
|
594
|
+
// minHeight: 400,
|
|
595
|
+
// minWidth: 400,
|
|
596
|
+
// height: 400,
|
|
597
|
+
// width: 800,
|
|
598
|
+
// width: '100%',
|
|
599
|
+
}, children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: '100%', children: (0, jsx_runtime_1.jsxs)(recharts_1.BarChart, { data: data,
|
|
633
600
|
// stackOffset={'none'}
|
|
634
|
-
layout: 'horizontal'
|
|
601
|
+
layout: 'horizontal', children: [(0, jsx_runtime_1.jsx)(recharts_1.CartesianGrid, { strokeDasharray: "3 3", horizontal: true, vertical: false }), (0, jsx_runtime_1.jsx)(recharts_1.YAxis
|
|
635
602
|
// width={56}
|
|
636
603
|
// width={30}
|
|
637
604
|
// textAnchor="start"
|
|
@@ -644,13 +611,11 @@ function BarChart(_a) {
|
|
|
644
611
|
tick: { transform: 'translate(-3, 0)' }, style: {
|
|
645
612
|
fontSize: '12px',
|
|
646
613
|
fontFamily: theme.chartLabelFontFamily,
|
|
647
|
-
}, tickFormatter:
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
});
|
|
653
|
-
} }), _jsx(XAxis, { hide: false, dataKey: xAxisField,
|
|
614
|
+
}, tickFormatter: tick => (0, exports.valueFormatter)({
|
|
615
|
+
value: tick,
|
|
616
|
+
field: yAxisFields[0].field || 'what',
|
|
617
|
+
fields: yAxisFields,
|
|
618
|
+
}) }), (0, jsx_runtime_1.jsx)(recharts_1.XAxis, { hide: false, dataKey: xAxisField,
|
|
654
619
|
// interval="preserveStartEnd"
|
|
655
620
|
tick: { transform: 'translate(0, 6)' },
|
|
656
621
|
//padding between labels and axis
|
|
@@ -659,40 +624,32 @@ function BarChart(_a) {
|
|
|
659
624
|
// TODO: generalize
|
|
660
625
|
fontFamily: theme.chartLabelFontFamily,
|
|
661
626
|
marginTop: '20px',
|
|
662
|
-
}, tickLine: false, axisLine: false, tickFormatter:
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
return valueFormatter({
|
|
678
|
-
value: value,
|
|
679
|
-
field: payload[0].dataKey,
|
|
680
|
-
fields: yAxisFields,
|
|
681
|
-
});
|
|
682
|
-
}, colors: newColors }));
|
|
683
|
-
}, position: { y: 0 } }), yAxisFields.map(function (elem, index) { return (_jsx(Bar, { name: elem.label, dataKey: elem.field, type: "linear",
|
|
627
|
+
}, tickLine: false, axisLine: false, tickFormatter: tick => (0, exports.valueFormatter)({
|
|
628
|
+
value: tick,
|
|
629
|
+
field: xAxisField,
|
|
630
|
+
fields: [{ field: xAxisField, format: xAxisFormat }],
|
|
631
|
+
}) }), (0, jsx_runtime_1.jsx)(recharts_1.Tooltip, { wrapperStyle: { outline: 'none' }, isAnimationActive: false, cursor: { fill: '#d1d5db', opacity: '0.15' }, content: ({ active, payload, label }) => {
|
|
632
|
+
return ((0, jsx_runtime_1.jsx)(ChartTooltip, { theme: theme, active: active, payload: payload, label: label, dateFormatter: value => (0, exports.valueFormatter)({
|
|
633
|
+
value,
|
|
634
|
+
field: xAxisField,
|
|
635
|
+
fields: [{ field: xAxisField, format: xAxisFormat }],
|
|
636
|
+
}), valueFormatter: value => (0, exports.valueFormatter)({
|
|
637
|
+
value,
|
|
638
|
+
field: payload[0].dataKey,
|
|
639
|
+
fields: yAxisFields,
|
|
640
|
+
}), colors: newColors }));
|
|
641
|
+
}, position: { y: 0 } }), yAxisFields.map((elem, index) => ((0, jsx_runtime_1.jsx)(recharts_1.Bar, { name: elem.label, dataKey: elem.field, type: "linear",
|
|
684
642
|
// stackId={stack || relative ? "a" : undefined}
|
|
685
643
|
fill: newColors[index],
|
|
686
644
|
// barSize={20}
|
|
687
|
-
isAnimationActive: true }, elem.field))
|
|
645
|
+
isAnimationActive: true }, elem.field)))] }) }) }));
|
|
688
646
|
}
|
|
689
|
-
function LineChart(
|
|
690
|
-
var colors = _a.colors, yAxisFields = _a.yAxisFields, data = _a.data, containerStyle = _a.containerStyle, xAxisField = _a.xAxisField, xAxisLabel = _a.xAxisLabel, xAxisFormat = _a.xAxisFormat, theme = _a.theme;
|
|
647
|
+
function LineChart({ colors, yAxisFields, data, containerStyle, xAxisField, xAxisLabel, xAxisFormat, theme, }) {
|
|
691
648
|
// console.log('CONTAINER: ', containerStyle);
|
|
692
649
|
if (!yAxisFields || !yAxisFields.length) {
|
|
693
650
|
return null;
|
|
694
651
|
}
|
|
695
|
-
return (
|
|
652
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { ...containerStyle, boxSizing: 'content-box' }, children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: '100%', children: (0, jsx_runtime_1.jsxs)(recharts_1.ComposedChart, { data: data, children: [(0, jsx_runtime_1.jsx)(recharts_1.CartesianGrid, { strokeDasharray: "3 3", horizontal: true, vertical: false }), (0, jsx_runtime_1.jsx)(recharts_1.XAxis
|
|
696
653
|
// hide={!showXAxis}
|
|
697
654
|
, {
|
|
698
655
|
// hide={!showXAxis}
|
|
@@ -704,21 +661,19 @@ function LineChart(_a) {
|
|
|
704
661
|
// }
|
|
705
662
|
style: {
|
|
706
663
|
fontSize: '12px',
|
|
707
|
-
fontFamily:
|
|
708
|
-
|
|
664
|
+
fontFamily: theme?.chartLabelFontFamily ||
|
|
665
|
+
theme?.fontFamily ||
|
|
709
666
|
'Inter; Helvetica',
|
|
710
|
-
color:
|
|
667
|
+
color: theme?.chartLabelColor || '#666666',
|
|
711
668
|
},
|
|
712
669
|
// interval="preserveStartEnd"
|
|
713
670
|
interval: "preserveStartEnd",
|
|
714
671
|
// interval={0}
|
|
715
|
-
tickLine: false, axisLine: false, padding: { left: 10, right: 10 }, minTickGap: 5, tickFormatter:
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
});
|
|
721
|
-
} }), _jsx(YAxis
|
|
672
|
+
tickLine: false, axisLine: false, padding: { left: 10, right: 10 }, minTickGap: 5, tickFormatter: tick => (0, exports.valueFormatter)({
|
|
673
|
+
value: tick,
|
|
674
|
+
field: xAxisField,
|
|
675
|
+
fields: [{ field: xAxisField, format: xAxisFormat }],
|
|
676
|
+
}) }), (0, jsx_runtime_1.jsx)(recharts_1.YAxis
|
|
722
677
|
// textAnchor="left"
|
|
723
678
|
// tickMargin={0}
|
|
724
679
|
// width={56}
|
|
@@ -734,39 +689,34 @@ function LineChart(_a) {
|
|
|
734
689
|
// domain={yAxisDomain as AxisDomain}
|
|
735
690
|
domain: getDomain(data, yAxisFields), tick: { transform: 'translate(-3, 0)' }, style: {
|
|
736
691
|
fontSize: '12px',
|
|
737
|
-
fontFamily:
|
|
738
|
-
|
|
692
|
+
fontFamily: theme?.chartLabelFontFamily ||
|
|
693
|
+
theme?.fontFamily ||
|
|
739
694
|
'Inter; Helvetica',
|
|
740
|
-
color:
|
|
741
|
-
}, tickFormatter:
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
{ field: xAxisField, format: xAxisFormat },
|
|
763
|
-
], false),
|
|
764
|
-
});
|
|
765
|
-
}, colors: colors, theme: theme }));
|
|
766
|
-
}, position: { y: 0 } }), yAxisFields.map(function (elem, index) { return (_jsx("defs", { children: _jsxs("linearGradient", __assign({ id: "gradient".concat(index), x1: "0", y1: "0", x2: "0", y2: "1" }, { children: [_jsx("stop", { offset: "5%", stopColor: colors[index], stopOpacity: 0.4 }), _jsx("stop", { offset: "95%", stopColor: 'rgba(0,0,0,0)', stopOpacity: 0 })] })) }, "defs".concat(elem.field + index))); }), yAxisFields.map(function (elem, index) { return (_jsx(Area, { name: elem.label, type: "linear", dataKey: elem.field, stroke: colors[index],
|
|
695
|
+
color: theme?.chartLabelColor || '#666666',
|
|
696
|
+
}, tickFormatter: value => (0, exports.valueFormatter)({
|
|
697
|
+
value,
|
|
698
|
+
field: yAxisFields[0].field,
|
|
699
|
+
fields: [
|
|
700
|
+
...yAxisFields,
|
|
701
|
+
{ field: xAxisField, format: xAxisFormat },
|
|
702
|
+
],
|
|
703
|
+
}) }), (0, jsx_runtime_1.jsx)(recharts_1.Tooltip, { wrapperStyle: { outline: 'none' }, isAnimationActive: false, cursor: { stroke: '#d1d5db', strokeWidth: 1 }, content: ({ active, payload, label }) => {
|
|
704
|
+
return ((0, jsx_runtime_1.jsx)(ChartTooltip, { active: active, payload: payload, label: label, dateFormatter: value => (0, exports.valueFormatter)({
|
|
705
|
+
value,
|
|
706
|
+
field: xAxisField,
|
|
707
|
+
fields: [{ field: xAxisField, format: xAxisFormat }],
|
|
708
|
+
}), valueFormatter: value => (0, exports.valueFormatter)({
|
|
709
|
+
value,
|
|
710
|
+
field: payload[0].dataKey,
|
|
711
|
+
fields: [
|
|
712
|
+
...yAxisFields,
|
|
713
|
+
{ field: xAxisField, format: xAxisFormat },
|
|
714
|
+
],
|
|
715
|
+
}), colors: colors, theme: theme }));
|
|
716
|
+
}, position: { y: 0 } }), yAxisFields.map((elem, index) => ((0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsxs)("linearGradient", { id: `gradient${index}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "5%", stopColor: colors[index], stopOpacity: 0.4 }), (0, jsx_runtime_1.jsx)("stop", { offset: "95%", stopColor: 'rgba(0,0,0,0)', stopOpacity: 0 })] }) }, `defs${elem.field + index}`))), yAxisFields.map((elem, index) => ((0, jsx_runtime_1.jsx)(recharts_1.Area, { name: elem.label, type: "linear", dataKey: elem.field, stroke: colors[index],
|
|
767
717
|
// if hide area
|
|
768
718
|
// fill="transparent"
|
|
769
|
-
fill:
|
|
719
|
+
fill: `url(#gradient${index})`, strokeWidth: 2, dot: false, isAnimationActive: true }, elem.field)))] }) }) }));
|
|
770
720
|
}
|
|
771
|
-
|
|
721
|
+
exports.default = Chart;
|
|
772
722
|
//# sourceMappingURL=Chart.js.map
|