@quillsql/react 2.9.1 → 2.9.3
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.d.ts +1 -0
- package/dist/AddToDashboardModal.d.ts.map +1 -1
- package/dist/AddToDashboardModal.js +152 -181
- package/dist/AddToDashboardModal.js.map +1 -1
- package/dist/BarList.d.ts +1 -0
- package/dist/BarList.js +36 -44
- package/dist/Chart.d.ts +5 -24
- package/dist/Chart.d.ts.map +1 -1
- package/dist/Chart.js +203 -802
- package/dist/Chart.js.map +1 -1
- package/dist/ChartBuilder.d.ts +1 -0
- package/dist/ChartBuilder.d.ts.map +1 -1
- package/dist/ChartBuilder.js +89 -91
- package/dist/ChartBuilder.js.map +1 -1
- package/dist/ChartEditor.d.ts +1 -0
- package/dist/ChartEditor.d.ts.map +1 -1
- package/dist/ChartEditor.js +23 -22
- package/dist/ChartEditor.js.map +1 -1
- package/dist/Context.d.ts +20 -0
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +82 -62
- package/dist/Context.js.map +1 -1
- package/dist/Dashboard.d.ts +4 -1
- package/dist/Dashboard.d.ts.map +1 -1
- package/dist/Dashboard.js +238 -336
- package/dist/Dashboard.js.map +1 -1
- package/dist/DateRangePicker/Calendar.d.ts +1 -0
- package/dist/DateRangePicker/Calendar.js +41 -46
- package/dist/DateRangePicker/DateRangePicker.d.ts +1 -0
- package/dist/DateRangePicker/DateRangePicker.js +32 -61
- package/dist/DateRangePicker/DateRangePickerButton.d.ts +1 -0
- package/dist/DateRangePicker/DateRangePickerButton.js +14 -17
- package/dist/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
- package/dist/DateRangePicker/dateRangePickerUtils.js +76 -90
- package/dist/DateRangePicker/index.d.ts +1 -0
- package/dist/DateRangePicker/index.js +1 -9
- package/dist/PieChart.d.ts +1 -0
- package/dist/PieChart.js +35 -70
- package/dist/QuillProvider.d.ts +1 -0
- package/dist/QuillProvider.js +4 -7
- package/dist/ReportBuilder.d.ts +1 -0
- package/dist/ReportBuilder.js +120 -129
- package/dist/SQLEditor.d.ts +1 -0
- package/dist/SQLEditor.js +56 -65
- package/dist/SQLEditor.js.map +1 -1
- package/dist/Table.d.ts +1 -0
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +65 -65
- package/dist/Table.js.map +1 -1
- package/dist/TableChart.d.ts +1 -0
- package/dist/TableChart.js +17 -45
- package/dist/api/ServerClient.d.ts +30 -0
- package/dist/api/ServerClient.d.ts.map +1 -0
- package/dist/api/ServerClient.js +39 -0
- package/dist/api/ServerClient.js.map +1 -0
- package/dist/assets/ArrowDownHeadIcon.d.ts +1 -0
- package/dist/assets/ArrowDownHeadIcon.js +3 -6
- package/dist/assets/ArrowDownIcon.d.ts +1 -0
- package/dist/assets/ArrowDownIcon.js +3 -6
- package/dist/assets/ArrowDownRightIcon.d.ts +1 -0
- package/dist/assets/ArrowDownRightIcon.js +3 -6
- package/dist/assets/ArrowLeftHeadIcon.d.ts +1 -0
- package/dist/assets/ArrowLeftHeadIcon.js +3 -6
- package/dist/assets/ArrowRightHeadIcon.d.ts +1 -0
- package/dist/assets/ArrowRightHeadIcon.js +3 -6
- package/dist/assets/ArrowRightIcon.d.ts +1 -0
- package/dist/assets/ArrowRightIcon.js +3 -6
- package/dist/assets/ArrowUpHeadIcon.d.ts +1 -0
- package/dist/assets/ArrowUpHeadIcon.js +3 -6
- package/dist/assets/ArrowUpIcon.d.ts +1 -0
- package/dist/assets/ArrowUpIcon.js +3 -6
- package/dist/assets/ArrowUpRightIcon.d.ts +1 -0
- package/dist/assets/ArrowUpRightIcon.js +3 -6
- package/dist/assets/CalendarIcon.d.ts +1 -0
- package/dist/assets/CalendarIcon.js +3 -6
- package/dist/assets/CalendarNormalIcon.d.ts +1 -0
- package/dist/assets/CalendarNormalIcon.js +3 -6
- package/dist/assets/DoubleArrowLeftHeadIcon.d.ts +1 -0
- package/dist/assets/DoubleArrowLeftHeadIcon.js +3 -6
- package/dist/assets/DoubleArrowRightHeadIcon.d.ts +1 -0
- package/dist/assets/DoubleArrowRightHeadIcon.js +3 -6
- package/dist/assets/ExclamationFilledIcon.d.ts +1 -0
- package/dist/assets/ExclamationFilledIcon.js +3 -6
- package/dist/assets/FilterIcon.d.ts +1 -0
- package/dist/assets/FilterIcon.js +3 -6
- package/dist/assets/LoadingSpinner.d.ts +1 -0
- package/dist/assets/LoadingSpinner.js +3 -6
- package/dist/assets/RefreshIcon.d.ts +1 -0
- package/dist/assets/RefreshIcon.js +3 -6
- package/dist/assets/SearchIcon.d.ts +1 -0
- package/dist/assets/SearchIcon.js +3 -6
- package/dist/assets/UpLeftArrowsIcon.d.ts +1 -0
- package/dist/assets/UpLeftArrowsIcon.js +3 -6
- package/dist/assets/XCircleIcon.d.ts +1 -0
- package/dist/assets/XCircleIcon.js +3 -6
- package/dist/assets/XIcon.d.ts +1 -0
- package/dist/assets/XIcon.js +3 -6
- package/dist/assets/index.d.ts +1 -0
- package/dist/assets/index.js +21 -49
- package/dist/components/Banner/index.d.ts +1 -0
- package/dist/components/Banner/index.js +6 -10
- package/dist/components/BigModal/BigModal.d.ts +1 -0
- package/dist/components/BigModal/BigModal.js +13 -39
- package/dist/components/Chart/BarChart.d.ts +15 -0
- package/dist/components/Chart/BarChart.d.ts.map +1 -0
- package/dist/components/Chart/BarChart.js +57 -0
- package/dist/components/Chart/BarChart.js.map +1 -0
- package/dist/components/Chart/ChartTooltip.d.ts +29 -0
- package/dist/components/Chart/ChartTooltip.d.ts.map +1 -0
- package/dist/components/Chart/ChartTooltip.js +229 -0
- package/dist/components/Chart/ChartTooltip.js.map +1 -0
- package/dist/components/Chart/ChartTooltipFrame.d.ts +6 -0
- package/dist/components/Chart/ChartTooltipFrame.d.ts.map +1 -0
- package/dist/components/Chart/ChartTooltipFrame.js +12 -0
- package/dist/components/Chart/ChartTooltipFrame.js.map +1 -0
- package/dist/components/Chart/ChartTooltipGroup.d.ts +11 -0
- package/dist/components/Chart/ChartTooltipGroup.d.ts.map +1 -0
- package/dist/components/Chart/ChartTooltipGroup.js +23 -0
- package/dist/components/Chart/ChartTooltipGroup.js.map +1 -0
- package/dist/components/Chart/ChartTooltipRow.d.ts +8 -0
- package/dist/components/Chart/ChartTooltipRow.d.ts.map +1 -0
- package/dist/components/Chart/ChartTooltipRow.js +41 -0
- package/dist/components/Chart/ChartTooltipRow.js.map +1 -0
- package/dist/components/Chart/LineChart.d.ts +13 -0
- package/dist/components/Chart/LineChart.d.ts.map +1 -0
- package/dist/components/Chart/LineChart.js +68 -0
- package/dist/components/Chart/LineChart.js.map +1 -0
- package/dist/components/Dropdown/Dropdown.d.ts +1 -0
- package/dist/components/Dropdown/Dropdown.js +24 -53
- package/dist/components/Dropdown/DropdownItem.d.ts +1 -0
- package/dist/components/Dropdown/DropdownItem.js +9 -35
- package/dist/components/Dropdown/index.d.ts +1 -0
- package/dist/components/Dropdown/index.js +2 -11
- package/dist/components/Modal/Modal.d.ts +1 -0
- package/dist/components/Modal/Modal.js +13 -39
- package/dist/components/Modal/index.d.ts +1 -0
- package/dist/components/Modal/index.js +1 -9
- package/dist/components/QuillCard.d.ts +1 -0
- package/dist/components/QuillCard.js +8 -13
- package/dist/components/ReportBuilder/ColumnSelector.d.ts +24 -6
- package/dist/components/ReportBuilder/ColumnSelector.d.ts.map +1 -1
- package/dist/components/ReportBuilder/ColumnSelector.js +56 -8
- package/dist/components/ReportBuilder/ColumnSelector.js.map +1 -0
- package/dist/components/ReportBuilder/FiltersModal.d.ts +40 -0
- package/dist/components/ReportBuilder/FiltersModal.d.ts.map +1 -0
- package/dist/components/ReportBuilder/FiltersModal.js +273 -0
- package/dist/components/ReportBuilder/FiltersModal.js.map +1 -0
- package/dist/components/ReportBuilder/SortModal.d.ts +28 -0
- package/dist/components/ReportBuilder/SortModal.d.ts.map +1 -0
- package/dist/components/ReportBuilder/SortModal.js +41 -0
- package/dist/components/ReportBuilder/SortModal.js.map +1 -0
- package/dist/components/SqlTextEditor.d.ts +1 -0
- package/dist/components/SqlTextEditor.js +4 -11
- package/dist/components/UiComponents.d.ts +1 -0
- package/dist/components/UiComponents.js +37 -51
- package/dist/components/selectUtils.d.ts +1 -0
- package/dist/components/selectUtils.js +6 -17
- package/dist/contexts/BaseColorContext.d.ts +1 -0
- package/dist/contexts/BaseColorContext.js +3 -6
- package/dist/contexts/HoveredValueContext.d.ts +1 -0
- package/dist/contexts/HoveredValueContext.js +3 -6
- package/dist/contexts/RootStylesContext.d.ts +1 -0
- package/dist/contexts/RootStylesContext.js +3 -6
- package/dist/contexts/SelectedValueContext.d.ts +1 -0
- package/dist/contexts/SelectedValueContext.js +3 -6
- package/dist/contexts/index.d.ts +1 -0
- package/dist/contexts/index.js +4 -15
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +4 -15
- package/dist/hooks/useDashboard.d.ts +1 -0
- package/dist/hooks/useDashboard.js +10 -15
- package/dist/hooks/useInternalState.d.ts +1 -0
- package/dist/hooks/useInternalState.js +3 -6
- package/dist/hooks/useOnClickOutside.d.ts +1 -0
- package/dist/hooks/useOnClickOutside.js +3 -6
- package/dist/hooks/useOnWindowResize.d.ts +1 -0
- package/dist/hooks/useOnWindowResize.js +4 -7
- package/dist/hooks/useQuill.d.ts +3 -2
- package/dist/hooks/useQuill.d.ts.map +1 -1
- package/dist/hooks/useQuill.js +37 -28
- package/dist/hooks/useQuill.js.map +1 -1
- package/dist/hooks/useSelectOnKeyDown.d.ts +1 -0
- package/dist/hooks/useSelectOnKeyDown.js +4 -7
- package/dist/index.d.ts +1 -0
- package/dist/index.js +13 -33
- package/dist/internals/ReportBuilder/PivotList.d.ts +1 -0
- package/dist/internals/ReportBuilder/PivotList.js +14 -20
- package/dist/internals/ReportBuilder/PivotModal.d.ts +3 -2
- package/dist/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/internals/ReportBuilder/PivotModal.js +280 -115
- package/dist/internals/ReportBuilder/PivotModal.js.map +1 -1
- package/dist/internals/ReportBuilder/PivotModal.spec.d.ts +1 -0
- package/dist/internals/ReportBuilder/PivotModal.spec.js +70 -73
- package/dist/lib/font.d.ts +1 -0
- package/dist/lib/font.js +2 -6
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +3 -20
- package/dist/lib/inputTypes.d.ts +1 -0
- package/dist/lib/inputTypes.js +1 -3
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.js +8 -19
- package/dist/test-data/tables.d.ts.map +1 -1
- package/dist/test-data/tables.js +27 -585
- package/dist/test-data/tables.js.map +1 -0
- package/dist/utils/aggregate.d.ts +1 -0
- package/dist/utils/aggregate.js +28 -35
- package/dist/utils/ast.d.ts +18 -0
- package/dist/utils/ast.d.ts.map +1 -0
- package/dist/utils/ast.js +310 -0
- package/dist/utils/ast.js.map +1 -0
- package/dist/utils/axisFormatter.d.ts +1 -0
- package/dist/utils/axisFormatter.js +19 -24
- package/dist/utils/color.d.ts +13 -0
- package/dist/utils/color.d.ts.map +1 -0
- package/dist/utils/color.js +247 -0
- package/dist/utils/color.js.map +1 -0
- package/dist/utils/colorToHex.d.ts +1 -0
- package/dist/utils/colorToHex.js +1 -5
- package/dist/utils/crypto.d.ts +2 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +6 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/dataFetcher.d.ts +1 -0
- package/dist/utils/dataFetcher.d.ts.map +1 -1
- package/dist/utils/dataFetcher.js +8 -9
- package/dist/utils/dataFetcher.js.map +1 -1
- package/dist/utils/dates.d.ts +10 -0
- package/dist/utils/dates.d.ts.map +1 -0
- package/dist/utils/dates.js +32 -0
- package/dist/utils/dates.js.map +1 -0
- package/dist/utils/downloadCSV.d.ts +1 -0
- package/dist/utils/downloadCSV.js +1 -6
- package/dist/utils/getDomain.d.ts +8 -0
- package/dist/utils/getDomain.d.ts.map +1 -0
- package/dist/utils/getDomain.js +28 -0
- package/dist/utils/getDomain.js.map +1 -0
- package/dist/utils/merge.d.ts +2 -0
- package/dist/utils/merge.d.ts.map +1 -0
- package/dist/utils/merge.js +45 -0
- package/dist/utils/merge.js.map +1 -0
- package/dist/utils/schema.d.ts +7 -2
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +13 -7
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/sorting.d.ts +5 -0
- package/dist/utils/sorting.d.ts.map +1 -0
- package/dist/utils/sorting.js +14 -0
- package/dist/utils/sorting.js.map +1 -0
- package/dist/utils/textFormatting.d.ts.map +1 -1
- package/dist/utils/textFormatting.js +0 -1
- package/dist/utils/textFormatting.js.map +1 -0
- package/dist/utils/valueFormatter.d.ts +1 -0
- package/dist/utils/valueFormatter.js +19 -24
- package/dist/utils/valueFormatterCSV.d.ts +1 -0
- package/dist/utils/valueFormatterCSV.js +19 -24
- package/package.json +2 -3
- package/dist/DateRangePicker/Calendar.js.map +0 -1
- package/dist/DateRangePicker/dateRangePickerUtils.js.map +0 -1
- package/dist/DateRangePicker/index.js.map +0 -1
- package/dist/PieChart.js.map +0 -1
- package/dist/QuillProvider.js.map +0 -1
- package/dist/assets/ArrowDownIcon.js.map +0 -1
- package/dist/assets/ArrowDownRightIcon.js.map +0 -1
- package/dist/assets/ArrowLeftHeadIcon.js.map +0 -1
- package/dist/assets/ArrowRightHeadIcon.js.map +0 -1
- package/dist/assets/ArrowRightIcon.js.map +0 -1
- package/dist/assets/ArrowUpHeadIcon.js.map +0 -1
- package/dist/assets/ArrowUpIcon.js.map +0 -1
- package/dist/assets/ArrowUpRightIcon.js.map +0 -1
- package/dist/assets/CalendarIcon.js.map +0 -1
- package/dist/assets/CalendarNormalIcon.js.map +0 -1
- package/dist/assets/DoubleArrowLeftHeadIcon.js.map +0 -1
- package/dist/assets/DoubleArrowRightHeadIcon.js.map +0 -1
- package/dist/assets/ExclamationFilledIcon.js.map +0 -1
- package/dist/assets/FilterIcon.js.map +0 -1
- package/dist/assets/LoadingSpinner.js.map +0 -1
- package/dist/assets/RefreshIcon.js.map +0 -1
- package/dist/assets/SearchIcon.js.map +0 -1
- package/dist/assets/UpLeftArrowsIcon.js.map +0 -1
- package/dist/assets/XCircleIcon.js.map +0 -1
- package/dist/assets/XIcon.js.map +0 -1
- package/dist/assets/index.js.map +0 -1
- package/dist/components/BigModal/BigModal.js.map +0 -1
- package/dist/components/Dropdown/Dropdown.js.map +0 -1
- package/dist/components/Dropdown/DropdownItem.js.map +0 -1
- package/dist/components/Dropdown/index.js.map +0 -1
- package/dist/components/Modal/Modal.js.map +0 -1
- package/dist/components/Modal/index.js.map +0 -1
- package/dist/components/QuillCard.js.map +0 -1
- package/dist/components/selectUtils.js.map +0 -1
- package/dist/contexts/BaseColorContext.js.map +0 -1
- package/dist/contexts/HoveredValueContext.js.map +0 -1
- package/dist/contexts/RootStylesContext.js.map +0 -1
- package/dist/contexts/SelectedValueContext.js.map +0 -1
- package/dist/contexts/index.js.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useDashboard.js.map +0 -1
- package/dist/hooks/useInternalState.js.map +0 -1
- package/dist/hooks/useOnClickOutside.js.map +0 -1
- package/dist/hooks/useOnWindowResize.js.map +0 -1
- package/dist/hooks/useSelectOnKeyDown.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internals/ReportBuilder/PivotModal.spec.js.map +0 -1
- package/dist/lib/font.js.map +0 -1
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/inputTypes.js.map +0 -1
- package/dist/lib/utils.js.map +0 -1
- package/dist/utils/aggregate.js.map +0 -1
- package/dist/utils/downloadCSV.js.map +0 -1
package/dist/Dashboard.js
CHANGED
|
@@ -1,48 +1,16 @@
|
|
|
1
|
-
|
|
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 __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;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.QuillDateRangePicker = exports.DashboardFilter = exports.COMPARISON_OPTIONS = void 0;
|
|
30
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
31
2
|
// @ts-nocheck
|
|
32
3
|
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const
|
|
43
|
-
const locale_1 = require("date-fns/locale");
|
|
44
|
-
const useDashboard_1 = require("./hooks/useDashboard");
|
|
45
|
-
exports.COMPARISON_OPTIONS = [
|
|
4
|
+
import React, { useContext, useEffect, useState, useRef, useCallback, } from 'react';
|
|
5
|
+
import Chart from './Chart';
|
|
6
|
+
import { capitalize, defaultOptions, getWeekdays, getRangeFromPreset, PRIMARY_RANGE, COMPARISON_RANGE, PRIMARY_CODES, } from './DateRangePicker/dateRangePickerUtils';
|
|
7
|
+
import { ClientContext, DashboardContext, ThemeContext, DashboardFiltersContext, DateFilterContext, useComparisonRange, useDateFilter, } from './Context';
|
|
8
|
+
import { addDays, eachDayOfInterval, endOfMonth, format, isAfter, isBefore, isEqual, isSaturday, isSunday, nextSaturday, previousSunday, startOfMonth, startOfToday, startOfWeek, startOfYear, sub, subDays, } from 'date-fns';
|
|
9
|
+
import { ArrowDownHeadIcon, ArrowLeftHeadIcon, ArrowRightHeadIcon, CalendarNormalIcon, } from './assets';
|
|
10
|
+
import { useOnClickOutside, } from './hooks';
|
|
11
|
+
import { enUS } from 'date-fns/locale';
|
|
12
|
+
import { useDashboard } from './hooks/useDashboard';
|
|
13
|
+
export const COMPARISON_OPTIONS = [
|
|
46
14
|
{
|
|
47
15
|
value: 'PREV_PERIOD',
|
|
48
16
|
text: 'Previous Period',
|
|
@@ -64,10 +32,31 @@ exports.COMPARISON_OPTIONS = [
|
|
|
64
32
|
text: 'No comparison',
|
|
65
33
|
},
|
|
66
34
|
];
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
35
|
+
export const PRIMARY_OPTIONS = [
|
|
36
|
+
{ value: 'THIS_WEEK', text: 'This Week' },
|
|
37
|
+
{ value: 'THIS_MONTH', text: 'This Month' },
|
|
38
|
+
{ value: 'THIS_YEAR', text: 'This year' },
|
|
39
|
+
{ value: 'LAST_7_DAYS', text: 'Last 7 days' },
|
|
40
|
+
{ value: 'LAST_30_DAYS', text: 'Last 30 days' },
|
|
41
|
+
{ value: 'LAST_90_DAYS', text: 'Last 90 days' },
|
|
42
|
+
{ value: 'LAST_6_MONTHS', text: 'Last 6 months' },
|
|
43
|
+
{ value: 'ALL_TIME', text: 'All time' },
|
|
44
|
+
];
|
|
45
|
+
const FILTER_CODE_MAP = {
|
|
46
|
+
wk: 'This week',
|
|
47
|
+
m: 'This month',
|
|
48
|
+
y: 'This year',
|
|
49
|
+
w: 'Last 7 days',
|
|
50
|
+
t: 'Last 30 days',
|
|
51
|
+
'90d': 'Last 90 days',
|
|
52
|
+
'6m': 'Last 6 months',
|
|
53
|
+
at: 'All time',
|
|
54
|
+
};
|
|
55
|
+
export function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePickerComponent, theme, }) {
|
|
56
|
+
const { comparisonRange, setComparisonRange } = useComparisonRange();
|
|
57
|
+
const { setDateFilter } = useDateFilter();
|
|
58
|
+
const [filterValue, setFilterValue] = useState(null);
|
|
59
|
+
useEffect(() => {
|
|
71
60
|
if (filter.filterType === 'date_range' &&
|
|
72
61
|
!filter.selectedValue &&
|
|
73
62
|
!filterValue) {
|
|
@@ -79,14 +68,21 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
|
|
|
79
68
|
else if (filter.filterType === 'string') {
|
|
80
69
|
setFilterValue(filter.selectedValue);
|
|
81
70
|
}
|
|
82
|
-
if (filter.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
71
|
+
if (filter.filterType == 'date_range') {
|
|
72
|
+
setDateFilter(FILTER_CODE_MAP[filter.selectedValue ? filter.selectedValue[2] : null]);
|
|
73
|
+
if (filter?.comparisonRange?.value) {
|
|
74
|
+
const newComparisonRange = COMPARISON_OPTIONS.find((option) => {
|
|
75
|
+
return option.value === filter.comparisonRange.value;
|
|
76
|
+
});
|
|
77
|
+
setComparisonRange(newComparisonRange);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
setComparisonRange(null);
|
|
81
|
+
}
|
|
86
82
|
}
|
|
87
83
|
}, [filter]);
|
|
88
84
|
if (filter.filterType === 'string') {
|
|
89
|
-
return ((
|
|
85
|
+
return (_jsx(SelectComponent, { label: filter.label, value: filterValue, onChange: (e) => {
|
|
90
86
|
onChangeFilter(filter, e);
|
|
91
87
|
}, options: [
|
|
92
88
|
...filter.options.map((elem) => {
|
|
@@ -98,11 +94,11 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
|
|
|
98
94
|
] }));
|
|
99
95
|
}
|
|
100
96
|
if (filter.filterType == 'date_range') {
|
|
101
|
-
return ((
|
|
97
|
+
return (_jsxs("div", { style: {
|
|
102
98
|
display: 'flex',
|
|
103
99
|
flexDirection: 'row',
|
|
104
100
|
alignItems: 'flex-end',
|
|
105
|
-
}, children: [(
|
|
101
|
+
}, children: [_jsx(DateRangePickerComponent, { dateRange: filterValue ? [filterValue[0], filterValue[1]] : [null, null], label: filter.label,
|
|
106
102
|
// value={filterValue}
|
|
107
103
|
onChangeDateRange: (dateRange) => {
|
|
108
104
|
onChangeFilter(filter, [dateRange[0], dateRange[1], null]);
|
|
@@ -111,7 +107,7 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
|
|
|
111
107
|
? filterValue[2]
|
|
112
108
|
: '', onChangePreset: (preset) => {
|
|
113
109
|
if (typeof preset === 'string') {
|
|
114
|
-
const fullPreset =
|
|
110
|
+
const fullPreset = getRangeFromPreset(preset);
|
|
115
111
|
onChangeFilter(filter, fullPreset);
|
|
116
112
|
setFilterValue(fullPreset);
|
|
117
113
|
return;
|
|
@@ -126,19 +122,19 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
|
|
|
126
122
|
new Date(),
|
|
127
123
|
preset?.value || '',
|
|
128
124
|
]);
|
|
129
|
-
}, presetOptions:
|
|
125
|
+
}, presetOptions: defaultOptions }), comparisonRange && (_jsx("div", { children: _jsxs("div", { style: {
|
|
130
126
|
display: 'flex',
|
|
131
127
|
flexDirection: 'row',
|
|
132
128
|
alignItems: 'center',
|
|
133
|
-
}, children: [(
|
|
129
|
+
}, children: [_jsx("div", { style: {
|
|
134
130
|
paddingLeft: 16,
|
|
135
131
|
paddingRight: 12,
|
|
136
132
|
color: theme.secondaryTextColor,
|
|
137
|
-
}, children: "compared to" }), (
|
|
138
|
-
onChangeFilter(filter, null,
|
|
133
|
+
}, children: "compared to" }), _jsx(SelectComponent, { value: comparisonRange.value, onChange: (e) => {
|
|
134
|
+
onChangeFilter(filter, null, COMPARISON_OPTIONS.find((option) => {
|
|
139
135
|
return option.value === e;
|
|
140
136
|
}));
|
|
141
|
-
}, options:
|
|
137
|
+
}, options: COMPARISON_OPTIONS.map((compareOption) => {
|
|
142
138
|
return {
|
|
143
139
|
value: compareOption.value,
|
|
144
140
|
label: compareOption.text,
|
|
@@ -147,45 +143,44 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
|
|
|
147
143
|
}
|
|
148
144
|
return null;
|
|
149
145
|
}
|
|
150
|
-
exports.DashboardFilter = DashboardFilter;
|
|
151
146
|
const options = [
|
|
152
147
|
{
|
|
153
|
-
date_range: [
|
|
148
|
+
date_range: [startOfWeek(startOfToday()), startOfToday(), 'wk'],
|
|
154
149
|
},
|
|
155
150
|
{
|
|
156
|
-
date_range: [
|
|
151
|
+
date_range: [sub(startOfToday(), { days: 90 }), startOfToday(), '90d'],
|
|
157
152
|
},
|
|
158
153
|
{
|
|
159
|
-
date_range: [
|
|
154
|
+
date_range: [sub(startOfToday(), { days: 30 }), startOfToday(), 't'],
|
|
160
155
|
},
|
|
161
156
|
{
|
|
162
|
-
date_range: [
|
|
157
|
+
date_range: [sub(startOfToday(), { years: 100 }), startOfToday(), 'at'],
|
|
163
158
|
},
|
|
164
159
|
{
|
|
165
|
-
date_range: [
|
|
160
|
+
date_range: [startOfYear(startOfToday()), startOfToday(), 'y'],
|
|
166
161
|
},
|
|
167
162
|
{
|
|
168
|
-
date_range: [
|
|
163
|
+
date_range: [startOfMonth(startOfToday()), startOfToday(), 'm'],
|
|
169
164
|
},
|
|
170
165
|
{
|
|
171
|
-
date_range: [
|
|
166
|
+
date_range: [sub(startOfToday(), { days: 7 }), startOfToday(), 'w'],
|
|
172
167
|
},
|
|
173
168
|
{
|
|
174
|
-
date_range: [
|
|
169
|
+
date_range: [sub(startOfToday(), { months: 6 }), startOfToday(), '6m'],
|
|
175
170
|
},
|
|
176
171
|
];
|
|
177
172
|
const QuillDropdownComponent = ({ onChange, value, label, options, }) => {
|
|
178
|
-
const [theme] =
|
|
179
|
-
const handleOnChange =
|
|
173
|
+
const [theme] = useContext(ThemeContext);
|
|
174
|
+
const handleOnChange = useCallback((event) => {
|
|
180
175
|
onChange(event.target.value);
|
|
181
176
|
}, [onChange]);
|
|
182
|
-
return ((
|
|
177
|
+
return (_jsxs("div", { children: [label && (_jsx("div", { style: {
|
|
183
178
|
marginBottom: 6,
|
|
184
179
|
fontWeight: theme.labelFontWeight || '600',
|
|
185
180
|
color: theme.secondaryTextColor,
|
|
186
181
|
fontFamily: theme.fontFamily,
|
|
187
182
|
fontSize: 14,
|
|
188
|
-
}, children: label })), (
|
|
183
|
+
}, children: label })), _jsxs("div", { style: { position: 'relative', height: 38 }, children: [_jsxs("select", { onChange: handleOnChange, value: value ?? '', id: 'reportbuilderdropdown',
|
|
189
184
|
// defaultValue="Select"
|
|
190
185
|
style: {
|
|
191
186
|
width: '100%',
|
|
@@ -209,7 +204,7 @@ const QuillDropdownComponent = ({ onChange, value, label, options, }) => {
|
|
|
209
204
|
fontSize: 14,
|
|
210
205
|
fontWeight: 500,
|
|
211
206
|
boxSizing: 'border-box',
|
|
212
|
-
}, children: [(
|
|
207
|
+
}, children: [_jsx("option", { value: "", children: "Select" }), options.map((option, index) => (_jsx("option", { value: option.value, children: option.label }, option.label + index)))] }), _jsx(ArrowDownHeadIcon, { style: {
|
|
213
208
|
height: '20px',
|
|
214
209
|
width: '20px',
|
|
215
210
|
flex: 'none',
|
|
@@ -220,27 +215,27 @@ const QuillDropdownComponent = ({ onChange, value, label, options, }) => {
|
|
|
220
215
|
}, "aria-hidden": "true" })] })] }));
|
|
221
216
|
};
|
|
222
217
|
const isBetween = (date, startDate, endDate) => {
|
|
223
|
-
return
|
|
218
|
+
return isAfter(date, startDate) && isBefore(date, endDate);
|
|
224
219
|
};
|
|
225
220
|
function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStartDate, localEndDate, }) {
|
|
226
|
-
const firstDayOfDisplayedMonth =
|
|
227
|
-
const lastDayOfDisplayedMonth =
|
|
228
|
-
const weekdays =
|
|
229
|
-
const displayedDates =
|
|
230
|
-
start:
|
|
221
|
+
const firstDayOfDisplayedMonth = startOfMonth(anchorDate);
|
|
222
|
+
const lastDayOfDisplayedMonth = endOfMonth(anchorDate);
|
|
223
|
+
const weekdays = getWeekdays(enUS).map((dayName) => capitalize(dayName, enUS));
|
|
224
|
+
const displayedDates = eachDayOfInterval({
|
|
225
|
+
start: isSunday(firstDayOfDisplayedMonth)
|
|
231
226
|
? firstDayOfDisplayedMonth
|
|
232
|
-
:
|
|
233
|
-
end:
|
|
227
|
+
: previousSunday(firstDayOfDisplayedMonth),
|
|
228
|
+
end: isSaturday(lastDayOfDisplayedMonth)
|
|
234
229
|
? lastDayOfDisplayedMonth
|
|
235
|
-
:
|
|
230
|
+
: nextSaturday(lastDayOfDisplayedMonth),
|
|
236
231
|
});
|
|
237
|
-
const displayedTitle =
|
|
238
|
-
return ((
|
|
232
|
+
const displayedTitle = capitalize(format(firstDayOfDisplayedMonth, 'MMMM yyyy', { locale: enUS }), enUS);
|
|
233
|
+
return (_jsxs("div", { style: {
|
|
239
234
|
display: 'flex',
|
|
240
235
|
flexDirection: 'column',
|
|
241
236
|
flex: 1,
|
|
242
237
|
// alignItems: 'center',
|
|
243
|
-
}, children: [(
|
|
238
|
+
}, children: [_jsx("h2", { style: {
|
|
244
239
|
color: theme?.textColor || '#364153',
|
|
245
240
|
fontSize: '13px',
|
|
246
241
|
fontFamily: theme?.fontFamily,
|
|
@@ -254,7 +249,7 @@ function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStar
|
|
|
254
249
|
justifyContent: 'center',
|
|
255
250
|
marginBottom: 3,
|
|
256
251
|
marginTop: 6,
|
|
257
|
-
}, children: displayedTitle }), (
|
|
252
|
+
}, children: displayedTitle }), _jsx("div", { style: {
|
|
258
253
|
color: theme?.primaryTextColor || '#364153',
|
|
259
254
|
textAlign: 'center',
|
|
260
255
|
fontSize: 12,
|
|
@@ -262,7 +257,7 @@ function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStar
|
|
|
262
257
|
display: 'grid',
|
|
263
258
|
gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',
|
|
264
259
|
paddingTop: 6,
|
|
265
|
-
}, children: weekdays.map((dayName) => ((
|
|
260
|
+
}, children: weekdays.map((dayName) => (_jsx("div", { style: { width: '100%', display: 'flex', justifyContent: 'center' }, children: _jsx("div", { style: {
|
|
266
261
|
display: 'flex',
|
|
267
262
|
alignItems: 'center',
|
|
268
263
|
justifyContent: 'center',
|
|
@@ -271,22 +266,14 @@ function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStar
|
|
|
271
266
|
fontFamily: theme?.fontFamily,
|
|
272
267
|
color: theme.secondaryTextColor,
|
|
273
268
|
paddingBottom: 4,
|
|
274
|
-
}, children: dayName }) }, dayName))) }), (
|
|
269
|
+
}, children: dayName }) }, dayName))) }), _jsx("div", { style: {
|
|
275
270
|
display: 'grid',
|
|
276
271
|
gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',
|
|
277
272
|
borderRadius: 3,
|
|
278
273
|
overflow: 'hidden',
|
|
279
274
|
rowGap: 6,
|
|
280
275
|
}, children: displayedDates.map((date, index) => {
|
|
281
|
-
|
|
282
|
-
// date,
|
|
283
|
-
// minDate,
|
|
284
|
-
// maxDate,
|
|
285
|
-
// firstDayOfDisplayedMonth,
|
|
286
|
-
// lastDayOfDisplayedMonth
|
|
287
|
-
// );
|
|
288
|
-
// console.log(localStartDate === date, localStartDate, date);
|
|
289
|
-
return ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%' }, children: (0, jsx_runtime_1.jsx)("button", { style: {
|
|
276
|
+
return (_jsx("div", { style: { width: '100%' }, children: _jsx("button", { style: {
|
|
290
277
|
border: 'none',
|
|
291
278
|
height: '34px',
|
|
292
279
|
display: 'flex',
|
|
@@ -295,22 +282,22 @@ function Calendar({ anchorDate, selectedDateRange, onClickDate, theme, localStar
|
|
|
295
282
|
justifyContent: 'center',
|
|
296
283
|
fontFamily: theme?.fontFamily,
|
|
297
284
|
fontSize: 13,
|
|
298
|
-
background:
|
|
285
|
+
background: isEqual(localStartDate, date) || isEqual(localEndDate, date)
|
|
299
286
|
? theme.primaryTextColor
|
|
300
287
|
: isBetween(date, localStartDate, localEndDate)
|
|
301
288
|
? '#F4F4F5'
|
|
302
289
|
: 'transparent',
|
|
303
|
-
color:
|
|
290
|
+
color: isEqual(localStartDate, date) || isEqual(localEndDate, date)
|
|
304
291
|
? theme.backgroundColor
|
|
305
292
|
: theme.primaryTextColor,
|
|
306
|
-
borderRadius:
|
|
293
|
+
borderRadius: isEqual(localStartDate, date) || isEqual(localEndDate, date)
|
|
307
294
|
? 3
|
|
308
295
|
: 0,
|
|
309
296
|
...isBeginningOrEndOfWeek(index),
|
|
310
297
|
}, type: "button", onClick: () => {
|
|
311
298
|
onClickDate(date);
|
|
312
|
-
}, children: (
|
|
313
|
-
}) }), (
|
|
299
|
+
}, children: _jsx("time", { dateTime: format(date, 'yyyy-MM-dd', { locale: enUS }), children: format(date, 'd', { locale: enUS }) }) }) }, date.toString()));
|
|
300
|
+
}) }), _jsx("div", { style: { height: 8 } })] }));
|
|
314
301
|
}
|
|
315
302
|
function isBeginningOrEndOfWeek(num) {
|
|
316
303
|
// Check if the number is 0
|
|
@@ -327,48 +314,48 @@ function isBeginningOrEndOfWeek(num) {
|
|
|
327
314
|
}
|
|
328
315
|
const formatDateText = (dateRange, localStartDate, localEndDate) => {
|
|
329
316
|
if (dateRange.length && dateRange[0] && dateRange[1]) {
|
|
330
|
-
return (
|
|
317
|
+
return (format(dateRange[0], 'MMM dd, yyyy') +
|
|
331
318
|
' - ' +
|
|
332
|
-
|
|
319
|
+
format(dateRange[1], 'MMM dd, yyyy'));
|
|
333
320
|
}
|
|
334
321
|
if (localStartDate && localEndDate) {
|
|
335
|
-
return (
|
|
322
|
+
return (format(localStartDate, 'MMM dd, yyyy') +
|
|
336
323
|
' - ' +
|
|
337
|
-
|
|
324
|
+
format(localEndDate, 'MMM dd, yyyy'));
|
|
338
325
|
}
|
|
339
326
|
return '';
|
|
340
327
|
};
|
|
341
328
|
function CalendarDropdown({ onChangeDateRange, dateRange }) {
|
|
342
|
-
const [theme] =
|
|
343
|
-
const [showModal, setShowModal] =
|
|
344
|
-
const modalRef =
|
|
345
|
-
const parentRef =
|
|
346
|
-
const handleOnChange =
|
|
329
|
+
const [theme] = useContext(ThemeContext);
|
|
330
|
+
const [showModal, setShowModal] = useState(false);
|
|
331
|
+
const modalRef = useRef(null);
|
|
332
|
+
const parentRef = useRef(null);
|
|
333
|
+
const handleOnChange = useCallback((event) => {
|
|
347
334
|
onChangeDateRange(event.target.value);
|
|
348
335
|
}, [onChangeDateRange]);
|
|
349
|
-
const [anchorDate, setAnchorDate] =
|
|
350
|
-
const [localStartDate, setLocalStartDate] =
|
|
351
|
-
const [localEndDate, setLocalEndDate] =
|
|
336
|
+
const [anchorDate, setAnchorDate] = useState(null);
|
|
337
|
+
const [localStartDate, setLocalStartDate] = useState(null);
|
|
338
|
+
const [localEndDate, setLocalEndDate] = useState(null);
|
|
352
339
|
// const firstDayOfFirstMonth = startOfMonth(value[0]);
|
|
353
340
|
// const lastDayOfLastMonth = endOfMonth(value[1]);
|
|
354
341
|
// const weekdays = getWeekdays(enUS).map(dayName =>
|
|
355
342
|
// capitalize(dayName, locale)
|
|
356
343
|
// );
|
|
357
|
-
const prevMonthAnchor =
|
|
344
|
+
const prevMonthAnchor = subDays(startOfMonth(anchorDate), 1);
|
|
358
345
|
const onClickDate = (date) => {
|
|
359
|
-
if (localStartDate &&
|
|
346
|
+
if (localStartDate && isBefore(date, localStartDate)) {
|
|
360
347
|
setLocalStartDate(date);
|
|
361
348
|
return;
|
|
362
349
|
}
|
|
363
|
-
if (localEndDate &&
|
|
350
|
+
if (localEndDate && isAfter(date, localEndDate)) {
|
|
364
351
|
setLocalEndDate(date);
|
|
365
352
|
return;
|
|
366
353
|
}
|
|
367
|
-
if (localEndDate &&
|
|
354
|
+
if (localEndDate && isBefore(date, localEndDate)) {
|
|
368
355
|
setLocalEndDate(date);
|
|
369
356
|
return;
|
|
370
357
|
}
|
|
371
|
-
if (
|
|
358
|
+
if (isEqual(localStartDate, date) || isEqual(localEndDate, date)) {
|
|
372
359
|
setLocalStartDate(null);
|
|
373
360
|
setLocalEndDate(null);
|
|
374
361
|
}
|
|
@@ -381,19 +368,19 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
|
|
|
381
368
|
return;
|
|
382
369
|
}
|
|
383
370
|
};
|
|
384
|
-
|
|
371
|
+
useEffect(() => {
|
|
385
372
|
if (localEndDate &&
|
|
386
373
|
localStartDate &&
|
|
387
|
-
|
|
374
|
+
isBefore(localStartDate, localEndDate)) {
|
|
388
375
|
onChangeDateRange([localStartDate, localEndDate]);
|
|
389
376
|
}
|
|
390
377
|
}, [localEndDate, localStartDate]);
|
|
391
|
-
|
|
378
|
+
useEffect(() => {
|
|
392
379
|
if (dateRange.length && !anchorDate) {
|
|
393
380
|
setAnchorDate(dateRange[1]);
|
|
394
381
|
}
|
|
395
382
|
}, [dateRange, anchorDate]);
|
|
396
|
-
|
|
383
|
+
useOnClickOutside(modalRef, (e) => {
|
|
397
384
|
// Exclude click on trigger button (e.g. Dropdown Button) from outside click handler
|
|
398
385
|
const isTriggerElem = parentRef
|
|
399
386
|
? parentRef.current?.contains(e.target)
|
|
@@ -402,7 +389,7 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
|
|
|
402
389
|
setShowModal(false);
|
|
403
390
|
}
|
|
404
391
|
});
|
|
405
|
-
return ((
|
|
392
|
+
return (_jsxs("div", { ref: parentRef, style: { position: 'relative', height: 38 }, children: [_jsx("button", {
|
|
406
393
|
// onChange={handleOnChange}
|
|
407
394
|
// value={value}
|
|
408
395
|
onClick: () => setShowModal((showModal) => !showModal), id: 'reportbuilderdropdown', defaultValue: "Select", style: {
|
|
@@ -431,7 +418,7 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
|
|
|
431
418
|
minHeight: 38,
|
|
432
419
|
marginBottom: 0,
|
|
433
420
|
paddingLeft: 14 + 15 + 3,
|
|
434
|
-
}, children: formatDateText(dateRange, localStartDate, localEndDate) }), (
|
|
421
|
+
}, children: formatDateText(dateRange, localStartDate, localEndDate) }), _jsx(CalendarNormalIcon, { style: {
|
|
435
422
|
height: '15px',
|
|
436
423
|
width: '15px',
|
|
437
424
|
flex: 'none',
|
|
@@ -439,7 +426,7 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
|
|
|
439
426
|
left: 12,
|
|
440
427
|
top: 11,
|
|
441
428
|
color: theme?.primaryTextColor,
|
|
442
|
-
} }), showModal && ((
|
|
429
|
+
} }), showModal && (_jsxs("div", { ref: modalRef, style: {
|
|
443
430
|
position: 'absolute',
|
|
444
431
|
zIndex: 1,
|
|
445
432
|
overflowY: 'auto',
|
|
@@ -469,7 +456,7 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
|
|
|
469
456
|
paddingLeft: 8,
|
|
470
457
|
paddingRight: 8,
|
|
471
458
|
paddingBottom: 1,
|
|
472
|
-
}, children: [(
|
|
459
|
+
}, children: [_jsx("button", { style: {
|
|
473
460
|
height: 32,
|
|
474
461
|
width: 32,
|
|
475
462
|
position: 'absolute',
|
|
@@ -489,11 +476,11 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
|
|
|
489
476
|
alignItems: 'center',
|
|
490
477
|
justifyContent: 'center',
|
|
491
478
|
background: 'transparent',
|
|
492
|
-
}, onClick: () => setAnchorDate((date) =>
|
|
479
|
+
}, onClick: () => setAnchorDate((date) => subDays(startOfMonth(date), 1)), children: _jsx(ArrowLeftHeadIcon, { style: {
|
|
493
480
|
height: '20px',
|
|
494
481
|
width: '20px',
|
|
495
482
|
color: theme?.secondaryTextColor,
|
|
496
|
-
}, "aria-hidden": "true" }) }), (
|
|
483
|
+
}, "aria-hidden": "true" }) }), _jsx("button", { style: {
|
|
497
484
|
height: 32,
|
|
498
485
|
width: 32,
|
|
499
486
|
borderColor: theme?.borderColor || '#E5E7EB',
|
|
@@ -513,33 +500,32 @@ function CalendarDropdown({ onChangeDateRange, dateRange }) {
|
|
|
513
500
|
alignItems: 'center',
|
|
514
501
|
justifyContent: 'center',
|
|
515
502
|
background: 'transparent',
|
|
516
|
-
}, onClick: () => setAnchorDate((date) =>
|
|
503
|
+
}, onClick: () => setAnchorDate((date) => addDays(endOfMonth(date), 1)), children: _jsx(ArrowRightHeadIcon, { style: {
|
|
517
504
|
height: '20px',
|
|
518
505
|
width: '20px',
|
|
519
506
|
color: theme?.secondaryTextColor,
|
|
520
|
-
}, "aria-hidden": "true" }) }), anchorDate && ((
|
|
507
|
+
}, "aria-hidden": "true" }) }), anchorDate && (_jsx(Calendar, { anchorDate: prevMonthAnchor, dateRange: dateRange, theme: theme, onClickDate: onClickDate, localStartDate: localStartDate, localEndDate: localEndDate })), anchorDate && (_jsx(Calendar, { anchorDate: anchorDate, dateRange: dateRange, theme: theme, onClickDate: onClickDate, localStartDate: localStartDate, localEndDate: localEndDate }))] }))] }));
|
|
521
508
|
}
|
|
522
|
-
const QuillDateRangePicker = ({ label, dateRange, onChangeDateRange, presetOptions, preset, onChangePreset, }) => {
|
|
523
|
-
const [theme] =
|
|
524
|
-
return ((
|
|
509
|
+
export const QuillDateRangePicker = ({ label, dateRange, onChangeDateRange, presetOptions, preset, onChangePreset, }) => {
|
|
510
|
+
const [theme] = useContext(ThemeContext);
|
|
511
|
+
return (_jsxs("div", { children: [label !== '' && (_jsx("div", { style: {
|
|
525
512
|
marginBottom: 6,
|
|
526
513
|
fontWeight: theme.labelFontWeight || '600',
|
|
527
514
|
color: theme.secondaryTextColor,
|
|
528
515
|
fontFamily: theme.fontFamily,
|
|
529
516
|
fontSize: 14,
|
|
530
|
-
}, children: label })), (
|
|
517
|
+
}, children: label })), _jsxs("div", { style: {
|
|
531
518
|
display: 'flex',
|
|
532
519
|
flexDirection: 'row',
|
|
533
520
|
alignItems: 'center',
|
|
534
521
|
gap: 12,
|
|
535
|
-
}, children: [(
|
|
522
|
+
}, children: [_jsx(MemoizedCalendarDropdown, { dateRange: dateRange, onChangeDateRange: onChangeDateRange, theme: theme }), _jsx(MemoizedDropdown, { options: presetOptions.map((option) => ({
|
|
536
523
|
label: option.text,
|
|
537
524
|
value: option.value,
|
|
538
525
|
})), onChange: onChangePreset, value: preset })] })] }));
|
|
539
526
|
};
|
|
540
|
-
|
|
541
|
-
const
|
|
542
|
-
const MemoizedDropdown = react_1.default.memo(QuillDropdownComponent);
|
|
527
|
+
const MemoizedCalendarDropdown = React.memo(CalendarDropdown);
|
|
528
|
+
const MemoizedDropdown = React.memo(QuillDropdownComponent);
|
|
543
529
|
const areEqual = (prevProps, nextProps) => {
|
|
544
530
|
// This function returns true if passing nextProps to render would return
|
|
545
531
|
// the same result as passing prevProps to render, otherwise it returns false
|
|
@@ -548,41 +534,48 @@ const areEqual = (prevProps, nextProps) => {
|
|
|
548
534
|
prevProps.dateRange[0] === nextProps.dateRange[0] &&
|
|
549
535
|
prevProps.dateRange[1] === nextProps.dateRange[1]);
|
|
550
536
|
};
|
|
551
|
-
const MemoizedDateRangePicker =
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
const
|
|
555
|
-
const {
|
|
556
|
-
const [
|
|
557
|
-
const
|
|
558
|
-
const [
|
|
559
|
-
const
|
|
560
|
-
const
|
|
561
|
-
|
|
537
|
+
const MemoizedDateRangePicker = React.memo(QuillDateRangePicker, areEqual);
|
|
538
|
+
const QuillEmptyDashboardComponent = () => _jsx("div", {});
|
|
539
|
+
export default function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerStyle, maxColumnWidth, rowHeight, onClickDashboardItem, hideFilters, FilterDropdownComponent, EmptyDashboardComponent = QuillEmptyDashboardComponent, DateRangePickerComponent, FilterButtonComponent, FilterModalComponent, onChangeLoading, DashboardItemComponent, }) {
|
|
540
|
+
const { dateFilter } = useDateFilter();
|
|
541
|
+
const { isLoading: isDataLoading, data, reload } = useDashboard(name);
|
|
542
|
+
const [dashboardSections, setDashboardSections] = useState(null);
|
|
543
|
+
const { dashboard } = useContext(DashboardContext);
|
|
544
|
+
const [client] = useContext(ClientContext);
|
|
545
|
+
const [isLoading, setIsLoading] = useState(isDataLoading);
|
|
546
|
+
const [theme] = useContext(ThemeContext);
|
|
547
|
+
const { dashboardFilters, dashboardFiltersDispatch } = useContext(DashboardFiltersContext);
|
|
548
|
+
const { setDateFilter } = useContext(DateFilterContext);
|
|
549
|
+
useEffect(() => {
|
|
562
550
|
setIsLoading(isDataLoading);
|
|
563
551
|
}, [isDataLoading]);
|
|
564
|
-
|
|
552
|
+
useEffect(() => {
|
|
565
553
|
if (!data)
|
|
566
554
|
return;
|
|
567
555
|
onDashboardDataChange(data);
|
|
568
556
|
}, [data]);
|
|
569
|
-
|
|
557
|
+
useEffect(() => {
|
|
570
558
|
reload();
|
|
571
559
|
}, [name, client]);
|
|
560
|
+
function hashCode(s) {
|
|
561
|
+
return s.split('').reduce(function (a, b) {
|
|
562
|
+
a = (a << 5) - a + b.charCodeAt(0);
|
|
563
|
+
return a & a;
|
|
564
|
+
}, 0);
|
|
565
|
+
}
|
|
572
566
|
const onDashboardDataChange = (resp) => {
|
|
573
567
|
setDashboardSections(resp.sections);
|
|
574
568
|
const bigFilterObj = {};
|
|
575
569
|
if (resp.dateFilter && Object.keys(resp.dateFilter).length) {
|
|
576
|
-
const key = 'LAST_6_MONTHS';
|
|
577
|
-
const code = '6m';
|
|
570
|
+
const key = resp.dateFilter.defaultPrimaryRange ?? 'LAST_6_MONTHS';
|
|
578
571
|
const filter = {
|
|
579
|
-
startDate:
|
|
580
|
-
endDate:
|
|
572
|
+
startDate: PRIMARY_RANGE[key]?.start,
|
|
573
|
+
endDate: PRIMARY_RANGE[key]?.end,
|
|
581
574
|
filterType: 'date_range',
|
|
582
575
|
selectedValue: [
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
576
|
+
PRIMARY_RANGE[key]?.start,
|
|
577
|
+
PRIMARY_RANGE[key]?.end,
|
|
578
|
+
PRIMARY_CODES[key],
|
|
586
579
|
],
|
|
587
580
|
options: options,
|
|
588
581
|
field: 'date_range',
|
|
@@ -590,25 +583,27 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
590
583
|
};
|
|
591
584
|
if (resp.dateFilter.comparison) {
|
|
592
585
|
filter.comparison = true;
|
|
586
|
+
const compKey = resp.dateFilter.defaultComparisonRange ?? 'PREV_PERIOD';
|
|
593
587
|
const range = { start: filter.startDate, end: filter.endDate };
|
|
594
588
|
filter.comparisonRange = {
|
|
595
|
-
startDate:
|
|
596
|
-
endDate:
|
|
597
|
-
value:
|
|
589
|
+
startDate: COMPARISON_RANGE[compKey](range)?.start,
|
|
590
|
+
endDate: COMPARISON_RANGE[compKey](range)?.end,
|
|
591
|
+
value: compKey,
|
|
598
592
|
};
|
|
599
593
|
}
|
|
600
594
|
else {
|
|
601
595
|
filter.comparison = false;
|
|
602
596
|
}
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
597
|
+
if (hashCode(JSON.stringify(dashboardFilters?.date_range ?? '')) !==
|
|
598
|
+
hashCode(JSON.stringify(filter))) {
|
|
599
|
+
dashboardFiltersDispatch({
|
|
600
|
+
type: 'ADD_DASHBOARD_FILTER',
|
|
601
|
+
id: 'date_range',
|
|
602
|
+
data: filter,
|
|
603
|
+
});
|
|
604
|
+
}
|
|
610
605
|
bigFilterObj[filter.field] = filter;
|
|
611
|
-
setDateFilter(resp.dateFilter);
|
|
606
|
+
setDateFilter(PRIMARY_OPTIONS.find((opt) => opt.value === resp.dateFilter.defaultPrimaryRange)?.text ?? null);
|
|
612
607
|
}
|
|
613
608
|
if (resp.filters && resp.filters.length) {
|
|
614
609
|
Object.values(resp.filters)
|
|
@@ -618,18 +613,20 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
618
613
|
bigFilterObj[filter.field] = processFilter(filter);
|
|
619
614
|
});
|
|
620
615
|
}
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
616
|
+
if (hashCode(JSON.stringify(dashboardFilters)) !==
|
|
617
|
+
hashCode(JSON.stringify(bigFilterObj))) {
|
|
618
|
+
dashboardFiltersDispatch({
|
|
619
|
+
type: 'ADD_DASHBOARD_FILTERS',
|
|
620
|
+
id: 'tons',
|
|
621
|
+
data: bigFilterObj,
|
|
622
|
+
});
|
|
623
|
+
}
|
|
627
624
|
};
|
|
628
625
|
const handleOnClickDashboardItem = (elem) => {
|
|
629
|
-
if (dashboard[elem._id]._id) {
|
|
626
|
+
if (dashboard[elem._id]._id && onClickDashboardItem) {
|
|
630
627
|
onClickDashboardItem(dashboard[elem._id]);
|
|
631
628
|
}
|
|
632
|
-
else {
|
|
629
|
+
else if (onClickDashboardItem) {
|
|
633
630
|
onClickDashboardItem({
|
|
634
631
|
...dashboard[elem._id],
|
|
635
632
|
error_id: elem._id,
|
|
@@ -678,10 +675,10 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
678
675
|
startDate: value ? value[0] : filter.startDate,
|
|
679
676
|
endDate: value ? value[1] : filter.endDate,
|
|
680
677
|
filterType: 'date_range',
|
|
678
|
+
label: 'Date',
|
|
681
679
|
...(selectedValue ? { selectedValue } : {}),
|
|
682
680
|
field: 'date_range',
|
|
683
681
|
options: options,
|
|
684
|
-
label: 'Date',
|
|
685
682
|
};
|
|
686
683
|
}
|
|
687
684
|
};
|
|
@@ -731,14 +728,14 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
731
728
|
startDate: value ? value[0] : filter.startDate,
|
|
732
729
|
endDate: value ? value[1] : filter.endDate,
|
|
733
730
|
filterType: 'date_range',
|
|
731
|
+
label: 'Date',
|
|
734
732
|
...(selectedValue ? { selectedValue } : {}),
|
|
735
733
|
field: 'date_range',
|
|
736
734
|
options: options,
|
|
737
|
-
label: 'Date',
|
|
738
735
|
comparison: true,
|
|
739
736
|
comparisonRange: {
|
|
740
|
-
startDate:
|
|
741
|
-
endDate:
|
|
737
|
+
startDate: COMPARISON_RANGE[key](primaryRange)?.start,
|
|
738
|
+
endDate: COMPARISON_RANGE[key](primaryRange)?.end,
|
|
742
739
|
value: key,
|
|
743
740
|
},
|
|
744
741
|
},
|
|
@@ -762,7 +759,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
762
759
|
}
|
|
763
760
|
}
|
|
764
761
|
};
|
|
765
|
-
|
|
762
|
+
useEffect(() => {
|
|
766
763
|
if (dashboardSections && dashboard) {
|
|
767
764
|
const totalNumberOfItems = Object.values(dashboardSections).reduce((count, arr) => count + arr.length, 0);
|
|
768
765
|
const itemsLoaded = Object.keys(dashboard).length;
|
|
@@ -771,19 +768,21 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
771
768
|
}
|
|
772
769
|
}
|
|
773
770
|
}, [dashboard, dashboardSections, isLoading]);
|
|
774
|
-
|
|
771
|
+
useEffect(() => {
|
|
775
772
|
if (onChangeLoading) {
|
|
776
773
|
onChangeLoading(isLoading);
|
|
777
774
|
}
|
|
778
775
|
}, [isLoading, onChangeLoading]);
|
|
779
|
-
if (
|
|
776
|
+
if (isLoading)
|
|
780
777
|
return null;
|
|
781
|
-
|
|
778
|
+
if (!dashboardSections || Object.keys(dashboardSections).length == 0)
|
|
779
|
+
return _jsx(EmptyDashboardComponent, {});
|
|
780
|
+
return (_jsxs("div", { style: containerStyle, children: [!hideFilters && (_jsx("div", { style: {
|
|
782
781
|
display: 'flex',
|
|
783
782
|
boxSizing: 'content-box',
|
|
784
783
|
flexDirection: 'row',
|
|
785
784
|
alignItems: 'center',
|
|
786
|
-
}, children: (
|
|
785
|
+
}, children: _jsx("div", { style: {
|
|
787
786
|
width: '100%',
|
|
788
787
|
marginBottom: 25,
|
|
789
788
|
display: 'flex',
|
|
@@ -792,18 +791,18 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
792
791
|
gap: 12,
|
|
793
792
|
}, children: Object.values(dashboardFilters)
|
|
794
793
|
.sort((filter) => (filter.filterType === 'date_range' ? -1 : 1))
|
|
795
|
-
.map((filter, index) => ((
|
|
794
|
+
.map((filter, index) => (_jsx(DashboardFilter, { filter: filter, onChangeFilter: updateFilter, theme: theme, filterValue: dashboardFilters, SelectComponent: FilterDropdownComponent
|
|
796
795
|
? FilterDropdownComponent
|
|
797
796
|
: MemoizedDropdown, DateRangePickerComponent: DateRangePickerComponent
|
|
798
797
|
? DateRangePickerComponent
|
|
799
|
-
: MemoizedDateRangePicker }, index))) }) }))
|
|
798
|
+
: MemoizedDateRangePicker }, index))) }) })), Object.keys(dashboardSections)
|
|
800
799
|
.sort(function (a, b) {
|
|
801
800
|
return a.length - b.length;
|
|
802
801
|
})
|
|
803
802
|
.map((section, sectionIndex) => {
|
|
804
|
-
return ((
|
|
803
|
+
return (_jsxs("div", { style: {
|
|
805
804
|
width: '100%',
|
|
806
|
-
}, children: [(
|
|
805
|
+
}, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx("div", { style: { height: sectionIndex > 0 ? 25 : 0 } }), section && (_jsx("h1", { style: {
|
|
807
806
|
fontSize: 22,
|
|
808
807
|
color: theme.primaryTextColor,
|
|
809
808
|
fontFamily: theme.fontFamily,
|
|
@@ -813,7 +812,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
813
812
|
// marginLeft: 25,
|
|
814
813
|
textAlign: 'left',
|
|
815
814
|
marginTop: 12,
|
|
816
|
-
}, children: section }))] }), dashboardSections[section].filter((elem) => elem.chartType === 'metric').length ? ((
|
|
815
|
+
}, children: section }))] }), dashboardSections[section].filter((elem) => elem.chartType === 'metric').length ? (_jsx("div", { style: {
|
|
817
816
|
boxSizing: 'content-box',
|
|
818
817
|
width: `100%`,
|
|
819
818
|
listStyleType: 'none',
|
|
@@ -835,21 +834,21 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
835
834
|
})
|
|
836
835
|
.map((elem, index) => {
|
|
837
836
|
if (DashboardItemComponent) {
|
|
838
|
-
return ((
|
|
837
|
+
return (_jsx("div", { onClick: onClickDashboardItem
|
|
839
838
|
? () => handleOnClickDashboardItem(elem)
|
|
840
|
-
:
|
|
839
|
+
: void null, children: _jsx(DashboardItemComponent, { dashboardItem: elem, children: _jsx("div", { style: {
|
|
841
840
|
padding: 0,
|
|
842
841
|
// height: '100%',
|
|
843
842
|
boxSizing: 'content-box',
|
|
844
|
-
}, children: (
|
|
843
|
+
}, children: _jsx(Chart, { containerStyle: {
|
|
845
844
|
display: 'flex',
|
|
846
845
|
width: '100%',
|
|
847
846
|
// height: '100%',
|
|
848
|
-
},
|
|
847
|
+
}, chartId: elem._id, colors: theme.chartColors?.length
|
|
849
848
|
? theme.chartColors
|
|
850
849
|
: undefined }) }) }) }, elem.name + '' + index));
|
|
851
850
|
}
|
|
852
|
-
return ((
|
|
851
|
+
return (_jsx("div", { onClick: onClickDashboardItem
|
|
853
852
|
? () => handleOnClickDashboardItem(elem)
|
|
854
853
|
: undefined, style: {
|
|
855
854
|
// background: theme.elevatedCardColor,
|
|
@@ -862,22 +861,22 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
862
861
|
cursor: 'pointer',
|
|
863
862
|
width: '100%',
|
|
864
863
|
...metricContainerStyle,
|
|
865
|
-
}, children: (
|
|
864
|
+
}, children: _jsx("div", {
|
|
866
865
|
// className="group-hover:bg-black"
|
|
867
866
|
style: {
|
|
868
867
|
width: '100%',
|
|
869
868
|
boxSizing: 'content-box',
|
|
870
869
|
height: '100%',
|
|
871
|
-
}, children: (
|
|
870
|
+
}, children: _jsx("div", { style: {
|
|
872
871
|
width: '100%',
|
|
873
872
|
boxSizing: 'content-box',
|
|
874
873
|
height: '100%',
|
|
875
|
-
}, children: (
|
|
874
|
+
}, children: _jsxs("div", { style: {
|
|
876
875
|
display: 'flex',
|
|
877
876
|
flexDirection: 'column',
|
|
878
877
|
justifyContent: 'space-between',
|
|
879
878
|
boxSizing: 'content-box',
|
|
880
|
-
}, children: [(
|
|
879
|
+
}, children: [_jsxs("div", {
|
|
881
880
|
// className="group-hover:bg-black"
|
|
882
881
|
style: {
|
|
883
882
|
display: 'flex',
|
|
@@ -888,7 +887,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
888
887
|
// paddingLeft: theme.padding,
|
|
889
888
|
// paddingRight: 25,
|
|
890
889
|
// paddingTop: theme.padding,
|
|
891
|
-
}, children: [(
|
|
890
|
+
}, children: [_jsx("div", { title: elem.name, style: {
|
|
892
891
|
fontFamily: theme.fontFamily,
|
|
893
892
|
color: theme.primaryTextColor,
|
|
894
893
|
boxSizing: 'content-box',
|
|
@@ -906,7 +905,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
906
905
|
display: 'block',
|
|
907
906
|
maxWidth: '100%',
|
|
908
907
|
overflow: 'hidden',
|
|
909
|
-
}, children: elem.name }), onClickDashboardItem ? ((
|
|
908
|
+
}, children: elem.name }), onClickDashboardItem ? (_jsx("div", {
|
|
910
909
|
// className="hover:bg-black"
|
|
911
910
|
style: {
|
|
912
911
|
fontFamily: theme.fontFamily,
|
|
@@ -919,16 +918,16 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
919
918
|
display: 'flex',
|
|
920
919
|
alignItems: 'center',
|
|
921
920
|
justifyContent: 'flex-end',
|
|
922
|
-
}, children: 'view report →' })) : null] }), (
|
|
921
|
+
}, children: 'view report →' })) : null] }), _jsx("div", { style: { padding: 0, paddingTop: 10 }, children: _jsx(Chart, { containerStyle: {
|
|
923
922
|
// display: 'flex',
|
|
924
923
|
// width: '100%',
|
|
925
924
|
// height: 30,
|
|
926
925
|
// marginBottom: 50,
|
|
927
926
|
// marginTop: 50,
|
|
928
|
-
},
|
|
927
|
+
},
|
|
929
928
|
// chartFilters={elem.chartFilters}
|
|
930
929
|
chartId: elem._id }) })] }) }) }) }, elem.name + '' + index));
|
|
931
|
-
}) })) : null, dashboardSections[section].filter((elem) => elem.chartType !== 'table' && elem.chartType !== 'metric').length ? ((
|
|
930
|
+
}) })) : null, dashboardSections[section].filter((elem) => elem.chartType !== 'table' && elem.chartType !== 'metric').length ? (_jsx("div", { style: {
|
|
932
931
|
listStyleType: 'none',
|
|
933
932
|
display: 'grid',
|
|
934
933
|
gridGap: 25,
|
|
@@ -949,20 +948,20 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
949
948
|
})
|
|
950
949
|
.map((elem, index) => {
|
|
951
950
|
if (DashboardItemComponent) {
|
|
952
|
-
return ((
|
|
951
|
+
return (_jsx("div", { onClick: onClickDashboardItem
|
|
953
952
|
? () => handleOnClickDashboardItem(elem)
|
|
954
|
-
: undefined, style: { height: rowHeight || 400 }, children: (
|
|
953
|
+
: undefined, style: { height: rowHeight || 400 }, children: _jsx(DashboardItemComponent, { dashboardItem: elem, children: _jsx(Chart, { containerStyle: {
|
|
955
954
|
display: 'flex',
|
|
956
955
|
width: '100%',
|
|
957
956
|
// height: '100%',
|
|
958
957
|
minHeight: 300,
|
|
959
958
|
height: 300,
|
|
960
959
|
// background: 'red',
|
|
961
|
-
},
|
|
960
|
+
}, chartId: elem._id, colors: theme.chartColors?.length
|
|
962
961
|
? theme.chartColors
|
|
963
962
|
: undefined }) }) }, elem.name + '' + index));
|
|
964
963
|
}
|
|
965
|
-
return ((
|
|
964
|
+
return (_jsx("div", { onClick: onClickDashboardItem
|
|
966
965
|
? () => handleOnClickDashboardItem(elem)
|
|
967
966
|
: undefined, style: {
|
|
968
967
|
height: '100%',
|
|
@@ -973,26 +972,26 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
973
972
|
borderRadius: 8,
|
|
974
973
|
paddingTop: 20,
|
|
975
974
|
...chartContainerStyle,
|
|
976
|
-
}, children: (
|
|
975
|
+
}, children: _jsx("div", { style: {
|
|
977
976
|
width: '100%',
|
|
978
977
|
height: '100%',
|
|
979
978
|
boxSizing: 'content-box',
|
|
980
|
-
}, children: (
|
|
979
|
+
}, children: _jsx("div", { style: {
|
|
981
980
|
width: '100%',
|
|
982
981
|
height: '100%',
|
|
983
982
|
boxSizing: 'content-box',
|
|
984
|
-
}, children: (
|
|
983
|
+
}, children: _jsxs("div", { style: {
|
|
985
984
|
display: 'flex',
|
|
986
985
|
flexDirection: 'column',
|
|
987
986
|
justifyContent: 'space-between',
|
|
988
987
|
height: '100%',
|
|
989
988
|
boxSizing: 'content-box',
|
|
990
|
-
}, children: [(
|
|
989
|
+
}, children: [_jsxs("div", { style: {
|
|
991
990
|
display: 'flex',
|
|
992
991
|
flexDirection: 'row',
|
|
993
992
|
justifyContent: 'space-between',
|
|
994
993
|
boxSizing: 'content-box',
|
|
995
|
-
}, children: [(
|
|
994
|
+
}, children: [_jsx("div", { style: {
|
|
996
995
|
fontFamily: theme.fontFamily,
|
|
997
996
|
color: theme.primaryTextColor,
|
|
998
997
|
boxSizing: 'content-box',
|
|
@@ -1005,7 +1004,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
1005
1004
|
display: 'block',
|
|
1006
1005
|
maxWidth: '100%',
|
|
1007
1006
|
overflow: 'hidden',
|
|
1008
|
-
}, children: elem.name }), onClickDashboardItem ? ((
|
|
1007
|
+
}, children: elem.name }), onClickDashboardItem ? (_jsx("div", { style: {
|
|
1009
1008
|
fontFamily: theme.fontFamily,
|
|
1010
1009
|
color: theme.primaryTextColor,
|
|
1011
1010
|
boxSizing: 'content-box',
|
|
@@ -1015,27 +1014,27 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
1015
1014
|
display: 'flex',
|
|
1016
1015
|
alignItems: 'center',
|
|
1017
1016
|
justifyContent: 'flex-end',
|
|
1018
|
-
}, children: 'view report →' })) : null] }), (
|
|
1017
|
+
}, children: 'view report →' })) : null] }), _jsx("div", { style: {
|
|
1019
1018
|
padding: 0,
|
|
1020
1019
|
height: '100%',
|
|
1021
1020
|
boxSizing: 'content-box',
|
|
1022
|
-
}, children: (
|
|
1021
|
+
}, children: _jsx(Chart, { containerStyle: {
|
|
1023
1022
|
display: 'flex',
|
|
1024
1023
|
width: '100%',
|
|
1025
1024
|
// TODO: fix fixed height
|
|
1026
1025
|
height: 300,
|
|
1027
1026
|
marginBottom: 50,
|
|
1028
1027
|
marginTop: 30,
|
|
1029
|
-
},
|
|
1028
|
+
}, chartId: elem._id, colors: theme.chartColors?.length
|
|
1030
1029
|
? theme.chartColors
|
|
1031
1030
|
: undefined }) })] }) }) }) }, elem.name + '' + index));
|
|
1032
|
-
}) })) : null, dashboardSections[section].filter((elem) => elem.chartType === 'table').length ? ((
|
|
1031
|
+
}) })) : null, dashboardSections[section].filter((elem) => elem.chartType === 'table').length ? (_jsxs("div", { style: {
|
|
1033
1032
|
boxSizing: 'content-box',
|
|
1034
1033
|
width: `100%`,
|
|
1035
1034
|
gap: 20,
|
|
1036
1035
|
display: 'flex',
|
|
1037
1036
|
flexDirection: 'column',
|
|
1038
|
-
}, children: [(
|
|
1037
|
+
}, children: [_jsx("div", { style: { height: 0 } }), dashboardSections[section]
|
|
1039
1038
|
.filter((elem) => elem.chartType === 'table')
|
|
1040
1039
|
.sort((a, b) => {
|
|
1041
1040
|
if (a.order === undefined && b.order === undefined)
|
|
@@ -1048,23 +1047,23 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
1048
1047
|
})
|
|
1049
1048
|
.map((elem, index) => {
|
|
1050
1049
|
if (DashboardItemComponent) {
|
|
1051
|
-
return ((
|
|
1050
|
+
return (_jsx("div", { onClick: onClickDashboardItem
|
|
1052
1051
|
? () => handleOnClickDashboardItem(elem)
|
|
1053
|
-
: undefined, children: (
|
|
1052
|
+
: undefined, children: _jsx(DashboardItemComponent, { dashboardItem: elem, children: _jsx("div", { style: {
|
|
1054
1053
|
padding: 0,
|
|
1055
1054
|
height: '100%',
|
|
1056
1055
|
boxSizing: 'content-box',
|
|
1057
|
-
}, children: (
|
|
1056
|
+
}, children: _jsx(Chart, { containerStyle: {
|
|
1058
1057
|
display: 'flex',
|
|
1059
1058
|
width: '100%',
|
|
1060
1059
|
height: '100%',
|
|
1061
|
-
},
|
|
1060
|
+
}, chartId: elem._id, colors: theme.chartColors?.length
|
|
1062
1061
|
? theme.chartColors
|
|
1063
1062
|
: undefined }) }) }) }, elem.name + '' + index));
|
|
1064
1063
|
}
|
|
1065
|
-
return ((
|
|
1064
|
+
return (_jsxs("div", { onClick: onClickDashboardItem
|
|
1066
1065
|
? () => handleOnClickDashboardItem(elem)
|
|
1067
|
-
: undefined, children: [(
|
|
1066
|
+
: undefined, children: [_jsx("div", { onClick: onClickDashboardItem
|
|
1068
1067
|
? () => handleOnClickDashboardItem(elem)
|
|
1069
1068
|
: undefined, style: {
|
|
1070
1069
|
// background: theme.elevatedCardColor,
|
|
@@ -1079,23 +1078,23 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
1079
1078
|
minHeight: 420,
|
|
1080
1079
|
height: 420,
|
|
1081
1080
|
// ...metricContainerStyle,
|
|
1082
|
-
}, children: (
|
|
1081
|
+
}, children: _jsx("div", {
|
|
1083
1082
|
// className="group-hover:bg-black"
|
|
1084
1083
|
style: {
|
|
1085
1084
|
width: '100%',
|
|
1086
1085
|
boxSizing: 'content-box',
|
|
1087
1086
|
height: '100%',
|
|
1088
|
-
}, children: (
|
|
1087
|
+
}, children: _jsx("div", { style: {
|
|
1089
1088
|
width: '100%',
|
|
1090
1089
|
boxSizing: 'content-box',
|
|
1091
1090
|
height: '100%',
|
|
1092
|
-
}, children: (
|
|
1091
|
+
}, children: _jsxs("div", { style: {
|
|
1093
1092
|
display: 'flex',
|
|
1094
1093
|
flexDirection: 'column',
|
|
1095
1094
|
justifyContent: 'space-between',
|
|
1096
1095
|
boxSizing: 'content-box',
|
|
1097
1096
|
height: '100%',
|
|
1098
|
-
}, children: [(
|
|
1097
|
+
}, children: [_jsxs("div", {
|
|
1099
1098
|
// className="group-hover:bg-black"
|
|
1100
1099
|
style: {
|
|
1101
1100
|
display: 'flex',
|
|
@@ -1106,7 +1105,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
1106
1105
|
// paddingLeft: theme.padding,
|
|
1107
1106
|
paddingRight: 25,
|
|
1108
1107
|
// paddingTop: theme.padding,
|
|
1109
|
-
}, children: [(
|
|
1108
|
+
}, children: [_jsx("div", { title: elem.name, style: {
|
|
1110
1109
|
fontFamily: theme.fontFamily,
|
|
1111
1110
|
color: theme.primaryTextColor,
|
|
1112
1111
|
boxSizing: 'content-box',
|
|
@@ -1125,7 +1124,7 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
1125
1124
|
display: 'block',
|
|
1126
1125
|
maxWidth: '100%',
|
|
1127
1126
|
overflow: 'hidden',
|
|
1128
|
-
}, children: elem.name }), onClickDashboardItem ? ((
|
|
1127
|
+
}, children: elem.name }), onClickDashboardItem ? (_jsx("div", {
|
|
1129
1128
|
// className="hover:bg-black"
|
|
1130
1129
|
style: {
|
|
1131
1130
|
fontFamily: theme.fontFamily,
|
|
@@ -1138,116 +1137,19 @@ function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerS
|
|
|
1138
1137
|
display: 'flex',
|
|
1139
1138
|
alignItems: 'center',
|
|
1140
1139
|
justifyContent: 'flex-end',
|
|
1141
|
-
}, children: 'view report →' })) : null] }), (
|
|
1140
|
+
}, children: 'view report →' })) : null] }), _jsxs("div", { style: {
|
|
1142
1141
|
padding: 0,
|
|
1143
1142
|
height: '400px',
|
|
1144
|
-
}, children: [(
|
|
1143
|
+
}, children: [_jsx("div", { style: { height: 20 } }), _jsx(Chart, { containerStyle: {
|
|
1145
1144
|
// display: 'flex',
|
|
1146
1145
|
// width: '100%',
|
|
1147
1146
|
// height: 30,
|
|
1148
1147
|
// marginBottom: 50,
|
|
1149
1148
|
height: '100%',
|
|
1150
1149
|
// paddingLeft: 25,
|
|
1151
|
-
},
|
|
1150
|
+
},
|
|
1152
1151
|
// chartFilters={elem.chartFilters}
|
|
1153
|
-
chartId: elem._id })] })] }) }) }) }, elem.name + '' + index), (
|
|
1154
|
-
})] })) : null, (
|
|
1152
|
+
chartId: elem._id })] })] }) }) }) }, elem.name + '' + index), _jsx("div", { style: { height: 40 } })] }, elem.name + '' + index));
|
|
1153
|
+
})] })) : null, _jsx("div", { style: { height: 40 } })] }, section + '' + sectionIndex));
|
|
1155
1154
|
})] }));
|
|
1156
1155
|
}
|
|
1157
|
-
exports.default = Dashboard;
|
|
1158
|
-
// ----------------------------------------------------------------
|
|
1159
|
-
// REST OF CODE NOT USED
|
|
1160
|
-
function Filter({ defaultValue, theme, onValueChange, filter }) {
|
|
1161
|
-
//should be date as well as strings
|
|
1162
|
-
const dropdownOptions = [
|
|
1163
|
-
{ value: 'popupbagelsmardens', text: 'popupbagelsmardens' },
|
|
1164
|
-
{ value: 'popupbagelswestport', text: 'popupbagelswestport' },
|
|
1165
|
-
{ value: 'popupbagelseasthampton', text: 'popupbagelseasthampton' },
|
|
1166
|
-
{ value: 'popupbagelsgreenwich', text: 'popupbagelsgreenwich' },
|
|
1167
|
-
{ value: 'popupbagelsredding', text: 'popupbagelsredding' },
|
|
1168
|
-
{ value: 'popupbagelsthompson', text: 'popupbagelsthompson' },
|
|
1169
|
-
];
|
|
1170
|
-
const dropdownRef = (0, react_1.useRef)(null);
|
|
1171
|
-
const [showDropdown, setShowDropdown] = (0, react_1.useState)(false);
|
|
1172
|
-
const [selectedValue, setSelectedValue] = (0, hooks_1.useInternalState)(defaultValue, undefined);
|
|
1173
|
-
const selectedDropdownValue = selectedValue ? selectedValue[2] ?? null : null;
|
|
1174
|
-
const handleDropdownOptionClick = (dropdownValue) => {
|
|
1175
|
-
setSelectedValue([undefined, undefined, dropdownValue]);
|
|
1176
|
-
onValueChange?.([undefined, undefined, dropdownValue]);
|
|
1177
|
-
setShowDropdown(false);
|
|
1178
|
-
};
|
|
1179
|
-
const [hoveredDropdownValue, handleDropdownKeyDown] = (0, hooks_1.useSelectOnKeyDown)(handleDropdownOptionClick, dropdownOptions.map((option) => option.value), showDropdown, setShowDropdown, selectedDropdownValue);
|
|
1180
|
-
return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', width: '100%' }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
|
|
1181
|
-
marginBottom: 6,
|
|
1182
|
-
fontWeight: '600',
|
|
1183
|
-
color: theme.secondaryTextColor,
|
|
1184
|
-
fontSize: 14,
|
|
1185
|
-
fontFamily: theme.fontFamily,
|
|
1186
|
-
}, children: filter.label }), (0, jsx_runtime_1.jsx)(FilterDropdown, { showDropdown: showDropdown, setShowDropdown: setShowDropdown, handleDropdownKeyDown: handleDropdownKeyDown, dropdownRef: dropdownRef, theme: theme, selectedDropdownValue: selectedDropdownValue, dropdownOptions: filter.options, field: filter.field, label: filter.labelField }), (0, jsx_runtime_1.jsx)(FilterModal, { showDropdown: showDropdown, setShowDropdown: setShowDropdown, dropdownRef: dropdownRef, theme: theme, hoveredDropdownValue: hoveredDropdownValue, selectedDropdownValue: selectedDropdownValue, dropdownOptions: filter.options, handleDropdownOptionClick: handleDropdownOptionClick, field: filter.field, label: filter.labelField })] }));
|
|
1187
|
-
}
|
|
1188
|
-
function removeQuotes(str) {
|
|
1189
|
-
if (str.startsWith('"') && str.endsWith('"')) {
|
|
1190
|
-
return str.slice(1, -1);
|
|
1191
|
-
}
|
|
1192
|
-
else {
|
|
1193
|
-
return str;
|
|
1194
|
-
}
|
|
1195
|
-
}
|
|
1196
|
-
function FilterDropdown({ setShowDropdown, dropdownRef, showDropdown, handleDropdownKeyDown, theme, dropdownPlaceholder = 'Select', selectedDropdownValue, dropdownOptions, field, label, }) {
|
|
1197
|
-
const dropdownText = selectedDropdownValue
|
|
1198
|
-
? String(dropdownOptions.find((option) => option[removeQuotes(field)] === selectedDropdownValue)[removeQuotes(label)])
|
|
1199
|
-
: dropdownPlaceholder;
|
|
1200
|
-
return ((0, jsx_runtime_1.jsx)("div", { style: {
|
|
1201
|
-
display: 'flex',
|
|
1202
|
-
alignItems: 'center',
|
|
1203
|
-
justifyContent: 'space-between',
|
|
1204
|
-
borderRadius: '0.375rem',
|
|
1205
|
-
background: theme?.backgroundColor,
|
|
1206
|
-
fontFamily: theme?.fontFamily,
|
|
1207
|
-
boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
|
|
1208
|
-
}, children: (0, jsx_runtime_1.jsxs)("button", { type: "button", style: {
|
|
1209
|
-
// fontFamily: theme?.fontFamily,
|
|
1210
|
-
borderColor: theme?.borderColor || '#E5E7EB',
|
|
1211
|
-
borderStyle: 'solid',
|
|
1212
|
-
borderWidth: 1,
|
|
1213
|
-
cursor: 'pointer',
|
|
1214
|
-
marginLeft: -1,
|
|
1215
|
-
borderRadius: '0.375rem',
|
|
1216
|
-
// width: '12rem',
|
|
1217
|
-
width: '100%',
|
|
1218
|
-
overflow: 'hidden',
|
|
1219
|
-
textOverflow: 'ellipsis',
|
|
1220
|
-
whiteSpace: 'nowrap',
|
|
1221
|
-
paddingLeft: '1rem',
|
|
1222
|
-
paddingRight: '1rem',
|
|
1223
|
-
display: 'inline-flex',
|
|
1224
|
-
minHeight: 38,
|
|
1225
|
-
justifyContent: 'space-between',
|
|
1226
|
-
alignItems: 'center',
|
|
1227
|
-
background: theme?.backgroundColor,
|
|
1228
|
-
fontSize: theme?.fontSizeSmall || '0.875rem',
|
|
1229
|
-
// fontWeight: theme?.fontWeightMedium || '800',
|
|
1230
|
-
}, ref: dropdownRef, onClick: () => setShowDropdown(!showDropdown), onKeyDown: handleDropdownKeyDown, children: [(0, jsx_runtime_1.jsx)("p", { style: {
|
|
1231
|
-
margin: 0,
|
|
1232
|
-
fontFamily: theme?.fontFamily,
|
|
1233
|
-
color: theme?.primaryTextColor || '#364153',
|
|
1234
|
-
overflow: 'hidden',
|
|
1235
|
-
textOverflow: 'ellipsis',
|
|
1236
|
-
whiteSpace: 'nowrap',
|
|
1237
|
-
fontWeight: theme?.fontWeightMedium || '500',
|
|
1238
|
-
fontSize: theme?.fontSizeSmall || '0.875rem',
|
|
1239
|
-
}, children: dropdownText }), (0, jsx_runtime_1.jsx)(assets_1.ArrowDownHeadIcon, { style: {
|
|
1240
|
-
height: '1.25rem',
|
|
1241
|
-
width: '1.25rem',
|
|
1242
|
-
flex: 'none',
|
|
1243
|
-
color: theme?.secondaryTextColor,
|
|
1244
|
-
marginRight: '-0.25rem',
|
|
1245
|
-
}, "aria-hidden": "true" })] }) }));
|
|
1246
|
-
}
|
|
1247
|
-
function FilterModal({ setShowDropdown, dropdownRef, showDropdown, theme, selectedDropdownValue, hoveredDropdownValue, dropdownOptions, handleDropdownOptionClick, field, label, }) {
|
|
1248
|
-
return ((0, jsx_runtime_1.jsx)(Modal_1.default, { showModal: showDropdown, setShowModal: setShowDropdown, parentRef: dropdownRef, theme: theme, children: (0, jsx_runtime_1.jsx)(contexts_1.SelectedValueContext.Provider, { value: {
|
|
1249
|
-
selectedValue: selectedDropdownValue,
|
|
1250
|
-
handleValueChange: handleDropdownOptionClick,
|
|
1251
|
-
}, children: (0, jsx_runtime_1.jsx)(contexts_1.HoveredValueContext.Provider, { value: { hoveredValue: hoveredDropdownValue }, children: dropdownOptions.map((row, index) => ((0, jsx_runtime_1.jsx)(Dropdown_1.DropdownItem, { value: row[removeQuotes(field)], text: row[removeQuotes(label)], theme: theme, lastItem: dropdownOptions.length - 1 === index }, row[removeQuotes(field)]))) }) }) }));
|
|
1252
|
-
}
|
|
1253
|
-
//# sourceMappingURL=Dashboard.js.map
|