@quillsql/react 2.14.13 → 2.14.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +12 -0
- package/dist/cjs/ChartBuilder.d.ts +3 -2
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +105 -16
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +2 -0
- package/dist/cjs/Context.d.ts +6 -2
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +163 -35
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +93 -16
- package/dist/cjs/QuillProvider.d.ts +40 -1
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +2 -2
- package/dist/cjs/ReportBuilder.d.ts +4 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +103 -1262
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +50 -6
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +12 -0
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +14 -9
- package/dist/cjs/components/Chart/CustomBar.d.ts +18 -0
- package/dist/cjs/components/Chart/CustomBar.d.ts.map +1 -0
- package/dist/cjs/components/Chart/CustomBar.js +70 -0
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +24 -1
- package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardTemplate.js +2 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +73 -2
- package/dist/cjs/components/Dashboard/util.d.ts +2 -1
- package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/util.js +12 -1
- package/dist/cjs/components/QuillTable.d.ts +2 -1
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +2 -2
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +7 -1
- package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts +48 -0
- package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/ColumnComponent.js +46 -0
- package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts +65 -0
- package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/FilterComponent.js +51 -0
- package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts +42 -0
- package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/LimitComponent.js +50 -0
- package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts +66 -0
- package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/PivotComponent.js +47 -0
- package/dist/cjs/components/ReportBuilder/SaveReport.d.ts +162 -0
- package/dist/cjs/components/ReportBuilder/SaveReport.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/SaveReport.js +31 -0
- package/dist/cjs/components/ReportBuilder/SortComponent.d.ts +42 -0
- package/dist/cjs/components/ReportBuilder/SortComponent.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/SortComponent.js +50 -0
- package/dist/cjs/components/ReportBuilder/TableComponent.d.ts +28 -0
- package/dist/cjs/components/ReportBuilder/TableComponent.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/TableComponent.js +24 -0
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +3 -1
- package/dist/cjs/components/UiComponents.d.ts +5 -2
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +6 -5
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +38 -0
- package/dist/cjs/hooks/useDashboard.d.ts +3 -1
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +91 -6
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +17 -9
- package/dist/cjs/hooks/useLongLoading.d.ts +13 -0
- package/dist/cjs/hooks/useLongLoading.d.ts.map +1 -0
- package/dist/cjs/hooks/useLongLoading.js +67 -0
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +25 -1
- package/dist/cjs/hooks/useReportBuilder.d.ts +178 -0
- package/dist/cjs/hooks/useReportBuilder.d.ts.map +1 -0
- package/dist/cjs/hooks/useReportBuilder.js +1476 -0
- package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/cjs/hooks/useVirtualTables.js +27 -2
- package/dist/cjs/index.d.ts +11 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +17 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +14 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +86 -3
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +19 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +421 -141
- package/dist/cjs/models/Client.d.ts +6 -2
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.d.ts +4 -2
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +25 -2
- package/dist/cjs/utils/client.d.ts +2 -1
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +13 -2
- package/dist/cjs/utils/dashboard.d.ts +3 -1
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +44 -3
- package/dist/cjs/utils/filterProcessing.d.ts +2 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +12 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +11 -9
- package/dist/cjs/utils/report.d.ts +11 -5
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +55 -8
- package/dist/cjs/utils/reportBuilder.d.ts.map +1 -1
- package/dist/cjs/utils/reportBuilder.js +5 -2
- package/dist/cjs/utils/schema.d.ts +5 -2
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +14 -2
- package/dist/cjs/utils/tableProcessing.d.ts +17 -10
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +99 -17
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +13 -1
- package/dist/esm/ChartBuilder.d.ts +3 -2
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +107 -18
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +3 -1
- package/dist/esm/Context.d.ts +6 -2
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +162 -34
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +94 -17
- package/dist/esm/QuillProvider.d.ts +40 -1
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +2 -2
- package/dist/esm/ReportBuilder.d.ts +4 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +106 -1262
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +51 -7
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +13 -1
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +15 -10
- package/dist/esm/components/Chart/CustomBar.d.ts +18 -0
- package/dist/esm/components/Chart/CustomBar.d.ts.map +1 -0
- package/dist/esm/components/Chart/CustomBar.js +68 -0
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +25 -2
- package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardTemplate.js +3 -2
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +74 -3
- package/dist/esm/components/Dashboard/util.d.ts +2 -1
- package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/util.js +12 -1
- package/dist/esm/components/QuillTable.d.ts +2 -1
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +2 -2
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +7 -1
- package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts +48 -0
- package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/ColumnComponent.js +39 -0
- package/dist/esm/components/ReportBuilder/FilterComponent.d.ts +65 -0
- package/dist/esm/components/ReportBuilder/FilterComponent.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/FilterComponent.js +44 -0
- package/dist/esm/components/ReportBuilder/LimitComponent.d.ts +42 -0
- package/dist/esm/components/ReportBuilder/LimitComponent.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/LimitComponent.js +46 -0
- package/dist/esm/components/ReportBuilder/PivotComponent.d.ts +66 -0
- package/dist/esm/components/ReportBuilder/PivotComponent.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/PivotComponent.js +40 -0
- package/dist/esm/components/ReportBuilder/SaveReport.d.ts +162 -0
- package/dist/esm/components/ReportBuilder/SaveReport.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/SaveReport.js +31 -0
- package/dist/esm/components/ReportBuilder/SortComponent.d.ts +42 -0
- package/dist/esm/components/ReportBuilder/SortComponent.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/SortComponent.js +46 -0
- package/dist/esm/components/ReportBuilder/TableComponent.d.ts +28 -0
- package/dist/esm/components/ReportBuilder/TableComponent.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/TableComponent.js +20 -0
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +4 -2
- package/dist/esm/components/UiComponents.d.ts +5 -2
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +6 -5
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +39 -1
- package/dist/esm/hooks/useDashboard.d.ts +3 -1
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +92 -7
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +18 -10
- package/dist/esm/hooks/useLongLoading.d.ts +13 -0
- package/dist/esm/hooks/useLongLoading.d.ts.map +1 -0
- package/dist/esm/hooks/useLongLoading.js +64 -0
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +26 -2
- package/dist/esm/hooks/useReportBuilder.d.ts +178 -0
- package/dist/esm/hooks/useReportBuilder.d.ts.map +1 -0
- package/dist/esm/hooks/useReportBuilder.js +1471 -0
- package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
- package/dist/esm/hooks/useVirtualTables.js +28 -3
- package/dist/esm/index.d.ts +11 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +8 -0
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +14 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +87 -4
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +19 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +423 -143
- package/dist/esm/models/Client.d.ts +6 -2
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.d.ts +4 -2
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +25 -2
- package/dist/esm/utils/client.d.ts +2 -1
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +13 -2
- package/dist/esm/utils/dashboard.d.ts +3 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +44 -3
- package/dist/esm/utils/filterProcessing.d.ts +2 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +12 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +11 -9
- package/dist/esm/utils/report.d.ts +11 -5
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +55 -8
- package/dist/esm/utils/reportBuilder.d.ts.map +1 -1
- package/dist/esm/utils/reportBuilder.js +5 -2
- package/dist/esm/utils/schema.d.ts +5 -2
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +14 -2
- package/dist/esm/utils/tableProcessing.d.ts +17 -10
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +99 -17
- package/package.json +1 -1
|
@@ -249,7 +249,7 @@ export const MemoizedText = ({ label }) => {
|
|
|
249
249
|
/**
|
|
250
250
|
* The one, true Quill popover component.
|
|
251
251
|
*/
|
|
252
|
-
export const MemoizedPopover = ({ isOpen, setIsOpen, triggerLabel, popoverTitle = undefined, popoverChildren, containerStyle, disabled, ignoredRefs, }) => {
|
|
252
|
+
export const MemoizedPopover = ({ isOpen, setIsOpen, triggerLabel, popoverTitle = undefined, popoverChildren, containerStyle, disabled, ignoredRefs, horizontalPadding = 20, titlePaddingLeft = 0, }) => {
|
|
253
253
|
const [theme] = useContext(ThemeContext);
|
|
254
254
|
const [rightAlignment, setRightAlignment] = useState('auto');
|
|
255
255
|
const modalRef = useRef(null);
|
|
@@ -309,7 +309,7 @@ export const MemoizedPopover = ({ isOpen, setIsOpen, triggerLabel, popoverTitle
|
|
|
309
309
|
zIndex: 999,
|
|
310
310
|
// top: 12,
|
|
311
311
|
borderRadius: 6,
|
|
312
|
-
padding:
|
|
312
|
+
padding: `20px ${horizontalPadding}px 20px ${horizontalPadding}px`,
|
|
313
313
|
right: rightAlignment,
|
|
314
314
|
}, children: [popoverTitle && (_jsx("h1", { style: {
|
|
315
315
|
fontWeight: '600',
|
|
@@ -319,6 +319,7 @@ export const MemoizedPopover = ({ isOpen, setIsOpen, triggerLabel, popoverTitle
|
|
|
319
319
|
marginBottom: 5,
|
|
320
320
|
color: theme?.primaryTextColor,
|
|
321
321
|
fontFamily: theme?.fontFamily,
|
|
322
|
+
paddingLeft: titlePaddingLeft,
|
|
322
323
|
}, children: popoverTitle })), popoverChildren] }) }))] }));
|
|
323
324
|
};
|
|
324
325
|
export function MemoizedModal({ isOpen, setIsOpen, title, children, width, height, }) {
|
|
@@ -443,7 +444,7 @@ export const QuillTableReportBuilderComponent = ({ rows, columns, isLoading = fa
|
|
|
443
444
|
setCurrentPage && setCurrentPage(0);
|
|
444
445
|
setPage(0);
|
|
445
446
|
onSortChange && onSortChange(sort);
|
|
446
|
-
}, sort: sort, currentPage: currentPage ?? page, isLoading: isLoading, containerStyle: containerStyle, disableSort: disableSort }));
|
|
447
|
+
}, sort: sort, currentPage: currentPage ?? page, isLoading: isLoading, containerStyle: containerStyle, disableSort: disableSort, overrideInMemortSort: true }));
|
|
447
448
|
};
|
|
448
449
|
export const QuillTableComponent = ({ rows, columns, isLoading = false, rowCount, rowCountIsLoading, onPageChange, onSortChange, currentPage, hideLabels, }) => {
|
|
449
450
|
const [sort, setSort] = useState({ field: '', direction: '' });
|
|
@@ -696,7 +697,7 @@ export const QuillLoadingComponent = () => {
|
|
|
696
697
|
, strokeDashoffset: "19.63 39.25" // calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)
|
|
697
698
|
, stroke: '#ADB1B9', fill: "none", transform: "rotate(90 12 12)", children: _jsx("animateTransform", { attributeName: "transform", attributeType: "XML", type: "rotate", from: "0 12 12", to: "360 12 12", dur: "0.8s", repeatCount: "indefinite" }) })] })] }));
|
|
698
699
|
};
|
|
699
|
-
export const OverflowContainer = ({ children }) => {
|
|
700
|
+
export const OverflowContainer = ({ children, style, }) => {
|
|
700
701
|
const containerRef = useRef(null);
|
|
701
702
|
const [showTopShadow, setShowTopShadow] = useState(false);
|
|
702
703
|
const [showBottomShadow, setShowBottomShadow] = useState(false);
|
|
@@ -731,7 +732,7 @@ export const OverflowContainer = ({ children }) => {
|
|
|
731
732
|
const containerStyle = {
|
|
732
733
|
position: 'relative',
|
|
733
734
|
overflowY: 'auto',
|
|
734
|
-
|
|
735
|
+
...style,
|
|
735
736
|
};
|
|
736
737
|
const shadowStyle = {
|
|
737
738
|
position: 'sticky',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAskQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAskQuill.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAskQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAskQuill.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAEL,cAAc,IAAI,UAAU,EAE7B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB;AA6BD,eAAO,MAAM,WAAW,kBACP,MAAM,KACpB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QACpB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;KAE/B,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACjD,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,kBAAkB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CAyPtD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useContext, useEffect, useState } from 'react';
|
|
2
|
-
import { ClientContext, FetchContext, SchemaDataContext, TenantContext, } from '../Context';
|
|
2
|
+
import { ClientContext, EventTrackingContext, FetchContext, SchemaDataContext, TenantContext, } from '../Context';
|
|
3
3
|
import { fetchAndProcessASTFromPrompt } from '../utils/astProcessing';
|
|
4
4
|
import { fetchReportBuilderDataFromAST, } from '../utils/report';
|
|
5
5
|
import { astToFilterTree, filterTreeToAst, } from '../utils/astFilterProcessing';
|
|
@@ -37,6 +37,7 @@ export const useAskQuill = (dashboardName) => {
|
|
|
37
37
|
const [schemaData] = useContext(SchemaDataContext);
|
|
38
38
|
const { tenants } = useContext(TenantContext);
|
|
39
39
|
const { getToken } = useContext(FetchContext);
|
|
40
|
+
const { eventTracking } = useContext(EventTrackingContext);
|
|
40
41
|
const [astInfo, setAstInfo] = useState(undefined);
|
|
41
42
|
const [data, setData] = useState({
|
|
42
43
|
rows: [],
|
|
@@ -73,6 +74,7 @@ export const useAskQuill = (dashboardName) => {
|
|
|
73
74
|
dashboardName,
|
|
74
75
|
tenants,
|
|
75
76
|
getToken,
|
|
77
|
+
eventTracking,
|
|
76
78
|
});
|
|
77
79
|
if (astInfo.error) {
|
|
78
80
|
throw new Error(astInfo.error);
|
|
@@ -85,6 +87,7 @@ export const useAskQuill = (dashboardName) => {
|
|
|
85
87
|
pivot: astInfo.pivot,
|
|
86
88
|
dashboardName,
|
|
87
89
|
getToken,
|
|
90
|
+
eventTracking,
|
|
88
91
|
});
|
|
89
92
|
if (!reportBuilderInfo) {
|
|
90
93
|
throw new Error('Error fetching report');
|
|
@@ -102,6 +105,17 @@ export const useAskQuill = (dashboardName) => {
|
|
|
102
105
|
setError(err.message);
|
|
103
106
|
setLoading(false);
|
|
104
107
|
}
|
|
108
|
+
eventTracking?.logError?.({
|
|
109
|
+
type: 'bug', // TODO: determine type
|
|
110
|
+
severity: 'high',
|
|
111
|
+
message: 'Error fetching ask quill',
|
|
112
|
+
errorMessage: err.message,
|
|
113
|
+
errorStack: err.stack,
|
|
114
|
+
errorData: {
|
|
115
|
+
caller: 'useAskQuill',
|
|
116
|
+
function: 'askHelper',
|
|
117
|
+
},
|
|
118
|
+
});
|
|
105
119
|
return;
|
|
106
120
|
}
|
|
107
121
|
const convertedColumns = convertColumnInternalToAskQuillColumn(reportBuilderInfo?.pivotData?.columns || reportBuilderInfo?.columns || []);
|
|
@@ -135,6 +149,7 @@ export const useAskQuill = (dashboardName) => {
|
|
|
135
149
|
pivot: newPivot,
|
|
136
150
|
dashboardName,
|
|
137
151
|
getToken,
|
|
152
|
+
eventTracking,
|
|
138
153
|
});
|
|
139
154
|
setLoading(false);
|
|
140
155
|
if (!reportBuilderInfo) {
|
|
@@ -142,6 +157,17 @@ export const useAskQuill = (dashboardName) => {
|
|
|
142
157
|
}
|
|
143
158
|
}
|
|
144
159
|
catch (err) {
|
|
160
|
+
eventTracking?.logError?.({
|
|
161
|
+
type: 'bug', // TODO: determine type
|
|
162
|
+
severity: 'high',
|
|
163
|
+
message: 'Error fetching ask quill',
|
|
164
|
+
errorMessage: err.message,
|
|
165
|
+
errorStack: err.stack,
|
|
166
|
+
errorData: {
|
|
167
|
+
caller: 'useAskQuill',
|
|
168
|
+
function: 'onChangePivot',
|
|
169
|
+
},
|
|
170
|
+
});
|
|
145
171
|
if (err instanceof Error) {
|
|
146
172
|
setError(err.message);
|
|
147
173
|
setLoading(false);
|
|
@@ -179,10 +205,22 @@ export const useAskQuill = (dashboardName) => {
|
|
|
179
205
|
pivot: data.pivot || undefined,
|
|
180
206
|
dashboardName,
|
|
181
207
|
getToken,
|
|
208
|
+
eventTracking,
|
|
182
209
|
});
|
|
183
210
|
setLoading(false);
|
|
184
211
|
}
|
|
185
212
|
catch (err) {
|
|
213
|
+
eventTracking?.logError?.({
|
|
214
|
+
type: 'bug', // TODO: determine type
|
|
215
|
+
severity: 'high',
|
|
216
|
+
message: 'Error fetching ask quill',
|
|
217
|
+
errorMessage: err.message,
|
|
218
|
+
errorStack: err.stack,
|
|
219
|
+
errorData: {
|
|
220
|
+
caller: 'useAskQuill',
|
|
221
|
+
function: 'onChangeFilterTree',
|
|
222
|
+
},
|
|
223
|
+
});
|
|
186
224
|
if (err instanceof Error) {
|
|
187
225
|
setError(err.message);
|
|
188
226
|
setLoading(false);
|
|
@@ -75,7 +75,9 @@ export declare const useDashboard: (dashboardName: string) => {
|
|
|
75
75
|
};
|
|
76
76
|
} | Filter>) => void;
|
|
77
77
|
};
|
|
78
|
-
export declare const useDashboardReport: (reportId: string
|
|
78
|
+
export declare const useDashboardReport: (reportId: string, config?: {
|
|
79
|
+
initialFilters?: Filter[];
|
|
80
|
+
}) => {
|
|
79
81
|
report: QuillReport | null;
|
|
80
82
|
loading: boolean;
|
|
81
83
|
applyFilters: (filters: Filter[]) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDashboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDashboard.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAGL,uBAAuB,EAGvB,MAAM,EACN,cAAc,EAGd,eAAe,EAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMtD,eAAO,MAAM,oBAAoB,kBAChB,MAAM,GAAG,IAAI,kBACZ,cAAc,EAAE;;;;2CAoNc,MAAM;qCAjL1B,MAAM,4CAEf;QACb,MAAM,EAAE,WAAW,GAAG;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACrC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC7B,oBACiB;QAChB,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;oCAmFa;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE;CAmG3E,CAAC;AAEF,eAAO,MAAM,mBAAmB,mBAAoB,MAAM;;;;yBAK5B,OAAO,CAAC,mBAAmB,CAAC;sBAiB/B,mBAAmB;CAoB7C,CAAC;AAEF,eAAO,MAAM,aAAa;;;;CAqBzB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;uEAuCrB;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACnC,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,uBAAuB,CAAC;KACtC;4BA2EO,MAAM,gEAOT;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACnC,UAAU,CAAC,EAAE,uBAAuB,CAAC;QACrC,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB;4BAiQkC,MAAM;CAwB5C,CAAC;AAGF,eAAO,MAAM,YAAY,kBACR,MAAM,KAEpB;IACD,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,YAAY,EAAE,CACZ,OAAO,EAAE,KAAK,CACV;QACE,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG;YAAE,SAAS,CAAC,EAAE,IAAI,CAAC;YAAC,OAAO,CAAC,EAAE,IAAI,CAAA;SAAE,CAAC;KACjE,GACD,MAAM,CACT,KACE,IAAI,CAAC;CA2PX,CAAC;AAGF,eAAO,MAAM,kBAAkB,aACnB,MAAM,WACP;IACP,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,KACA;IACD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,MAAM,IAAI,CAAC;CA+I1B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useContext, useEffect, useMemo, useRef } from 'react';
|
|
2
|
-
import { ClientContext, DashboardConfigContext, DashboardContext, DashboardFiltersContext, FetchContext, ReportFiltersContext, ReportsContext, TenantContext, } from '../Context';
|
|
2
|
+
import { ClientContext, DashboardConfigContext, DashboardContext, DashboardFiltersContext, EventTrackingContext, FetchContext, ReportFiltersContext, ReportsContext, TenantContext, } from '../Context';
|
|
3
3
|
import { convertPresetOptionsToSelectableList, PRIMARY_RANGE, } from '../DateRangePicker/dateRangePickerUtils';
|
|
4
4
|
import { convertCustomFilter, InternalDashboardFilterType, StringFilterType, convertInternalDashboardFilterToDashboardFilter, } from '../models/Filter';
|
|
5
5
|
import { createDefaultDateFilter } from '../utils/filterProcessing';
|
|
@@ -14,13 +14,12 @@ export const useDashboardInternal = (dashboardName, customFilters) => {
|
|
|
14
14
|
// const [error, setError] = useState<any>(null);
|
|
15
15
|
const [client, isClientLoading] = useContext(ClientContext);
|
|
16
16
|
const { quillFetchWithToken } = useContext(FetchContext);
|
|
17
|
+
const { eventTracking } = useContext(EventTrackingContext);
|
|
17
18
|
const loading = useMemo(() => {
|
|
18
19
|
return (!dashboardName ||
|
|
19
20
|
isClientLoading ||
|
|
20
21
|
isDashboardsLoading ||
|
|
21
|
-
dashboardConfig[dashboardName]?.loading
|
|
22
|
-
(dashboardConfig[dashboardName] &&
|
|
23
|
-
!dashboardConfig[dashboardName]?.config.sections));
|
|
22
|
+
dashboardConfig[dashboardName]?.loading);
|
|
24
23
|
}, [isClientLoading, dashboardConfig, dashboardName, isDashboardsLoading]);
|
|
25
24
|
const populatedDashboardFilters = useMemo(() => {
|
|
26
25
|
return dashboardName && dashboardFilters[dashboardName] !== undefined
|
|
@@ -140,6 +139,17 @@ export const useDashboardInternal = (dashboardName, customFilters) => {
|
|
|
140
139
|
}
|
|
141
140
|
catch (e) {
|
|
142
141
|
console.error(e);
|
|
142
|
+
eventTracking?.logError?.({
|
|
143
|
+
type: 'bug', // TODO: determine type
|
|
144
|
+
severity: 'high',
|
|
145
|
+
message: 'Error setting section order',
|
|
146
|
+
errorMessage: e.message,
|
|
147
|
+
errorStack: e.stack,
|
|
148
|
+
errorData: {
|
|
149
|
+
caller: 'useDashboard',
|
|
150
|
+
function: 'setSectionOrder',
|
|
151
|
+
},
|
|
152
|
+
});
|
|
143
153
|
}
|
|
144
154
|
}
|
|
145
155
|
};
|
|
@@ -228,6 +238,7 @@ export const useDashboards = () => {
|
|
|
228
238
|
const { reportFiltersDispatch } = useContext(ReportFiltersContext);
|
|
229
239
|
const [client, isLoading] = useContext(ClientContext);
|
|
230
240
|
const { quillFetchWithToken } = useContext(FetchContext);
|
|
241
|
+
const { eventTracking } = useContext(EventTrackingContext);
|
|
231
242
|
const dashboards = useMemo(() => {
|
|
232
243
|
return Object.values(dashboardConfig)
|
|
233
244
|
.map((dashboard) => {
|
|
@@ -277,6 +288,15 @@ export const useDashboards = () => {
|
|
|
277
288
|
task: 'edit-dashboard',
|
|
278
289
|
metadata: body,
|
|
279
290
|
});
|
|
291
|
+
eventTracking?.logEvent?.('create-dashboard', {
|
|
292
|
+
dashboardName: name,
|
|
293
|
+
});
|
|
294
|
+
if (filters.length > 0 || dateFilter) {
|
|
295
|
+
eventTracking?.logEvent?.('update-dashboard-filters', {
|
|
296
|
+
dashboardName: name,
|
|
297
|
+
numFilters: filters.length + (dateFilter ? 1 : 0),
|
|
298
|
+
});
|
|
299
|
+
}
|
|
280
300
|
dashboardConfigDispatch({
|
|
281
301
|
type: 'UPDATE_DASHBOARD',
|
|
282
302
|
id: name,
|
|
@@ -291,6 +311,17 @@ export const useDashboards = () => {
|
|
|
291
311
|
}
|
|
292
312
|
catch (e) {
|
|
293
313
|
console.error(e);
|
|
314
|
+
eventTracking?.logError?.({
|
|
315
|
+
type: 'bug', // TODO: determine type
|
|
316
|
+
severity: 'high',
|
|
317
|
+
message: 'Error creating dashboard',
|
|
318
|
+
errorMessage: e.message,
|
|
319
|
+
errorStack: e.stack,
|
|
320
|
+
errorData: {
|
|
321
|
+
caller: 'useDashboards',
|
|
322
|
+
function: 'createDashboard',
|
|
323
|
+
},
|
|
324
|
+
});
|
|
294
325
|
}
|
|
295
326
|
};
|
|
296
327
|
const updateDashboard = async (name, { newName, filters, dateFilter, customFilters, tenantKeys, }) => {
|
|
@@ -324,6 +355,16 @@ export const useDashboards = () => {
|
|
|
324
355
|
task: 'edit-dashboard',
|
|
325
356
|
metadata: body,
|
|
326
357
|
});
|
|
358
|
+
eventTracking?.logEvent?.('update-dashboard', {
|
|
359
|
+
dashboardName: updated.data.dashboard.name,
|
|
360
|
+
dashboardId: updated.data.dashboard.dashboardId,
|
|
361
|
+
});
|
|
362
|
+
if (filters.length > 0 || dateFilter) {
|
|
363
|
+
eventTracking?.logEvent?.('update-dashboard-filters', {
|
|
364
|
+
dashboardName: name,
|
|
365
|
+
numFilters: filters.length + (dateFilter ? 1 : 0),
|
|
366
|
+
});
|
|
367
|
+
}
|
|
327
368
|
dashboardConfigDispatch({
|
|
328
369
|
type: 'UPDATE_DASHBOARD',
|
|
329
370
|
id: updated.data.dashboard.name,
|
|
@@ -475,6 +516,17 @@ export const useDashboards = () => {
|
|
|
475
516
|
}
|
|
476
517
|
catch (e) {
|
|
477
518
|
console.error(e);
|
|
519
|
+
eventTracking?.logError?.({
|
|
520
|
+
type: 'bug', // TODO: determine type
|
|
521
|
+
severity: 'high',
|
|
522
|
+
message: 'Error updating dashboard',
|
|
523
|
+
errorMessage: e.message,
|
|
524
|
+
errorStack: e.stack,
|
|
525
|
+
errorData: {
|
|
526
|
+
caller: 'useDashboards',
|
|
527
|
+
function: 'updateDashboard',
|
|
528
|
+
},
|
|
529
|
+
});
|
|
478
530
|
}
|
|
479
531
|
};
|
|
480
532
|
const deleteDashboard = async (name) => {
|
|
@@ -513,6 +565,12 @@ export const useDashboard = (dashboardName) => {
|
|
|
513
565
|
const { tenants, flags } = useContext(TenantContext);
|
|
514
566
|
const { getToken } = useContext(FetchContext);
|
|
515
567
|
const { customReportFilters } = useContext(ReportFiltersContext);
|
|
568
|
+
const { eventTracking } = useContext(EventTrackingContext);
|
|
569
|
+
const customFiltersRef = useRef(customReportFilters);
|
|
570
|
+
// Keep ref updated with latest filters
|
|
571
|
+
useEffect(() => {
|
|
572
|
+
customFiltersRef.current = customReportFilters;
|
|
573
|
+
}, [customReportFilters]);
|
|
516
574
|
// If useDashboard is being used before Dashboard Context is set, we need to
|
|
517
575
|
// actively load the dashboard
|
|
518
576
|
useEffect(() => {
|
|
@@ -635,6 +693,20 @@ export const useDashboard = (dashboardName) => {
|
|
|
635
693
|
const newDashboardFilters = applyDashboardFilters(dashboardFilters);
|
|
636
694
|
fetchReports(newCustomFilters, newDashboardFilters);
|
|
637
695
|
};
|
|
696
|
+
// In case useDashboardReport set initial custom filters
|
|
697
|
+
const waitForCustomFilters = async (reportId) => {
|
|
698
|
+
let attempts = 0;
|
|
699
|
+
const maxAttempts = 10; // Prevent infinite loops
|
|
700
|
+
while (attempts < maxAttempts) {
|
|
701
|
+
const filters = customFiltersRef.current[reportId];
|
|
702
|
+
if (filters && filters.length > 0) {
|
|
703
|
+
return filters;
|
|
704
|
+
}
|
|
705
|
+
await new Promise((resolve) => setTimeout(resolve, 100)); // Wait 100ms between checks
|
|
706
|
+
attempts++;
|
|
707
|
+
}
|
|
708
|
+
return [];
|
|
709
|
+
};
|
|
638
710
|
const fetchReports = async (customFilters, dashboardFilters) => {
|
|
639
711
|
if (!client || !sections)
|
|
640
712
|
return;
|
|
@@ -645,7 +717,7 @@ export const useDashboard = (dashboardName) => {
|
|
|
645
717
|
id: reportId,
|
|
646
718
|
data: true,
|
|
647
719
|
});
|
|
648
|
-
const customReportFiltersArray =
|
|
720
|
+
const customReportFiltersArray = await waitForCustomFilters(reportId);
|
|
649
721
|
const { report, error } = await fetchReport({
|
|
650
722
|
reportId,
|
|
651
723
|
client,
|
|
@@ -655,6 +727,7 @@ export const useDashboard = (dashboardName) => {
|
|
|
655
727
|
.concat(customFilters)
|
|
656
728
|
.concat(customReportFiltersArray),
|
|
657
729
|
getToken,
|
|
730
|
+
eventTracking,
|
|
658
731
|
});
|
|
659
732
|
if (error) {
|
|
660
733
|
console.error(error);
|
|
@@ -681,20 +754,31 @@ export const useDashboard = (dashboardName) => {
|
|
|
681
754
|
};
|
|
682
755
|
};
|
|
683
756
|
// useDashboard accompanying hook
|
|
684
|
-
export const useDashboardReport = (reportId) => {
|
|
757
|
+
export const useDashboardReport = (reportId, config) => {
|
|
685
758
|
const { reports, reportsLoadingState, reportsDispatch, reportsLoadingStateDispatch, } = useContext(ReportsContext);
|
|
686
759
|
const { dashboardFilters } = useContext(DashboardFiltersContext);
|
|
687
760
|
const { tenants, flags } = useContext(TenantContext);
|
|
688
761
|
const [client] = useContext(ClientContext);
|
|
689
762
|
const { getToken } = useContext(FetchContext);
|
|
763
|
+
const { eventTracking } = useContext(EventTrackingContext);
|
|
690
764
|
const { customReportFiltersDispatch } = useContext(ReportFiltersContext);
|
|
691
765
|
const { dashboardCustomFilters } = useContext(DashboardFiltersContext);
|
|
692
766
|
const { data: dashboardData, dashboardFilters: dashboardFiltersInternal, reload: reloadDashboard, } = useDashboardInternal(reports[reportId]?.dashboardName ?? null);
|
|
767
|
+
// Add initial custom filters to context
|
|
768
|
+
useEffect(() => {
|
|
769
|
+
if (config?.initialFilters) {
|
|
770
|
+
customReportFiltersDispatch({
|
|
771
|
+
type: 'ADD_CUSTOM_REPORT_FILTERS',
|
|
772
|
+
reportId,
|
|
773
|
+
data: config.initialFilters.map(convertCustomFilter),
|
|
774
|
+
});
|
|
775
|
+
}
|
|
776
|
+
}, []);
|
|
693
777
|
const processedReport = useMemo(() => {
|
|
694
778
|
if (!reports[reportId])
|
|
695
779
|
return null;
|
|
696
780
|
const dashboardName = reports[reportId].dashboardName;
|
|
697
|
-
return convertInternalReportToReport(mergeComparisonRange(reports[reportId]), Object.values(dashboardFilters[dashboardName] ?? {}).map((f) => f.filter), 'useDashboardReport');
|
|
781
|
+
return convertInternalReportToReport(mergeComparisonRange(reports[reportId]), Object.values(dashboardFilters[dashboardName] ?? {}).map((f) => f.filter), eventTracking, 'useDashboardReport');
|
|
698
782
|
}, [reports, reportId, dashboardFilters]);
|
|
699
783
|
const setReportFilters = (filters) => {
|
|
700
784
|
updateReport(filters);
|
|
@@ -725,6 +809,7 @@ export const useDashboardReport = (reportId) => {
|
|
|
725
809
|
flags,
|
|
726
810
|
filters: requestFilters,
|
|
727
811
|
getToken,
|
|
812
|
+
eventTracking,
|
|
728
813
|
});
|
|
729
814
|
if (error) {
|
|
730
815
|
console.error(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAqE/C,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,SAAS,cACT,MAAM,mEAMd;IACD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,GAAG,CAAC,OAAO,CAAC;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,KACA;IACD,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,YAAY,EAAE,OAAO,CAAC;CA+RvB,CAAC;AAEF,UAAU,aAAa;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { downloadCSV } from '../utils/csv';
|
|
3
3
|
import { useContext, useMemo, useState } from 'react';
|
|
4
4
|
import { parseFetchResponse, quillFetch } from '../utils/dataFetcher';
|
|
5
|
-
import { ClientContext, DashboardFiltersContext, FetchContext, ReportFiltersContext, ReportsContext, SchemaDataContext, TenantContext, } from '../Context';
|
|
5
|
+
import { ClientContext, DashboardFiltersContext, EventTrackingContext, FetchContext, ReportFiltersContext, ReportsContext, SchemaDataContext, TenantContext, } from '../Context';
|
|
6
6
|
import { cleanDashboardItem } from '../utils/dashboard';
|
|
7
7
|
import { createRoot } from 'react-dom/client';
|
|
8
8
|
import { flushSync } from 'react-dom';
|
|
@@ -10,7 +10,7 @@ import { fetchReport } from '../utils/report';
|
|
|
10
10
|
import jsPDF from 'jspdf';
|
|
11
11
|
import { quillFormat } from '../utils/valueFormatter';
|
|
12
12
|
import { useAllReports } from './useDashboard';
|
|
13
|
-
async function getExportData(client, dashboardFilters, reportId, getToken, tenants, flags, customFields) {
|
|
13
|
+
async function getExportData(client, dashboardFilters, reportId, getToken, eventTracking, tenants, flags, customFields) {
|
|
14
14
|
const minimalFilters = Object.values(dashboardFilters).length
|
|
15
15
|
? Object.values(dashboardFilters).map((filter) => {
|
|
16
16
|
const newFilter = { ...filter };
|
|
@@ -45,6 +45,7 @@ async function getExportData(client, dashboardFilters, reportId, getToken, tenan
|
|
|
45
45
|
customFields,
|
|
46
46
|
getToken,
|
|
47
47
|
tenants,
|
|
48
|
+
eventTracking,
|
|
48
49
|
});
|
|
49
50
|
if (cleanedReport.chartType === 'table' && cleanedReport.pivot) {
|
|
50
51
|
cleanedReport.columns = cleanedReport.yAxisFields;
|
|
@@ -62,6 +63,7 @@ sectionField, } = {}) => {
|
|
|
62
63
|
const [schemaData] = useContext(SchemaDataContext);
|
|
63
64
|
const { tenants, flags } = useContext(TenantContext);
|
|
64
65
|
const { getToken } = useContext(FetchContext);
|
|
66
|
+
const { eventTracking } = useContext(EventTrackingContext);
|
|
65
67
|
const specificDashboardFilters = useMemo(() => {
|
|
66
68
|
if (!reportId) {
|
|
67
69
|
return [];
|
|
@@ -98,12 +100,14 @@ sectionField, } = {}) => {
|
|
|
98
100
|
}
|
|
99
101
|
setIsCSVLoading(true);
|
|
100
102
|
const resp = await getExportData(client, specificReportFilters.length > 0
|
|
101
|
-
? specificReportFilters.concat(
|
|
102
|
-
|
|
103
|
-
[])
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
[]
|
|
103
|
+
? specificReportFilters.concat([
|
|
104
|
+
...(customReportFilters[reportId] ?? []),
|
|
105
|
+
...(dashboardCustomFilters[dashboardReport?.dashboardName ?? ''] ?? []),
|
|
106
|
+
])
|
|
107
|
+
: specificDashboardFilters.concat([
|
|
108
|
+
...(customReportFilters[reportId] ?? []),
|
|
109
|
+
...(dashboardCustomFilters[dashboardReport?.dashboardName ?? ''] ?? []),
|
|
110
|
+
]), reportId, getToken, eventTracking, tenants, flags, schemaData?.customFields);
|
|
107
111
|
downloadCSV({
|
|
108
112
|
rows: resp.pivot && resp.pivotRows && downloadOptions?.usePivotRows
|
|
109
113
|
? resp.pivotRows
|
|
@@ -126,10 +130,14 @@ sectionField, } = {}) => {
|
|
|
126
130
|
tenants,
|
|
127
131
|
flags,
|
|
128
132
|
useReportTask: true,
|
|
129
|
-
filters: filters.concat(
|
|
130
|
-
|
|
133
|
+
filters: filters.concat([
|
|
134
|
+
...(customReportFilters[reportId] ?? []),
|
|
135
|
+
...(dashboardCustomFilters[dashboardReport?.dashboardName ?? ''] ??
|
|
136
|
+
[]),
|
|
137
|
+
]),
|
|
131
138
|
customFields: schemaData?.customFields,
|
|
132
139
|
getToken,
|
|
140
|
+
eventTracking,
|
|
133
141
|
});
|
|
134
142
|
if (error) {
|
|
135
143
|
console.error(error);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type LongLoadingMeta = {
|
|
2
|
+
origin: string;
|
|
3
|
+
loadDescription: string;
|
|
4
|
+
expectedLoadTime?: number;
|
|
5
|
+
abnormalLoadTime?: number;
|
|
6
|
+
};
|
|
7
|
+
type LoadingState = {
|
|
8
|
+
isLongLoading: boolean;
|
|
9
|
+
isAbnormalLoading: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare function useLongLoading(isLoading: boolean, meta: LongLoadingMeta): LoadingState;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=useLongLoading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLongLoading.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLongLoading.tsx"],"names":[],"mappings":"AAGA,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,cAAc,CAC5B,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,eAAe,GACpB,YAAY,CAoEd"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useContext, useEffect, useState } from 'react';
|
|
2
|
+
import { EventTrackingContext } from '../Context';
|
|
3
|
+
export function useLongLoading(isLoading, meta) {
|
|
4
|
+
const { origin, expectedLoadTime = 5000, abnormalLoadTime = 15000, loadDescription, } = meta;
|
|
5
|
+
const [isLongLoading, setIsLongLoading] = useState(false);
|
|
6
|
+
const [isAbnormalLoading, setIsAbnormalLoading] = useState(false);
|
|
7
|
+
const { eventTracking } = useContext(EventTrackingContext);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
let longTimer = null;
|
|
10
|
+
let abnormalTimer = null;
|
|
11
|
+
if (isLoading) {
|
|
12
|
+
// Set timer for long loading
|
|
13
|
+
longTimer = setTimeout(() => {
|
|
14
|
+
setIsLongLoading(true);
|
|
15
|
+
eventTracking?.logError?.({
|
|
16
|
+
type: 'timeout',
|
|
17
|
+
severity: 'medium',
|
|
18
|
+
message: `${origin} loading is taking longer than expected`,
|
|
19
|
+
errorData: {
|
|
20
|
+
loadDescription,
|
|
21
|
+
expectedLoadTime,
|
|
22
|
+
currentTime: Date.now(),
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
// Set timer for abnormal loading
|
|
26
|
+
abnormalTimer = setTimeout(() => {
|
|
27
|
+
setIsAbnormalLoading(true);
|
|
28
|
+
eventTracking?.logError?.({
|
|
29
|
+
type: 'timeout',
|
|
30
|
+
severity: 'high',
|
|
31
|
+
message: `${origin} loading is taking abnormally long`,
|
|
32
|
+
errorData: {
|
|
33
|
+
loadDescription,
|
|
34
|
+
expectedLoadTime,
|
|
35
|
+
abnormalLoadTime,
|
|
36
|
+
currentTime: Date.now(),
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}, abnormalLoadTime - expectedLoadTime);
|
|
40
|
+
}, expectedLoadTime);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
setIsLongLoading(false);
|
|
44
|
+
setIsAbnormalLoading(false);
|
|
45
|
+
}
|
|
46
|
+
return () => {
|
|
47
|
+
if (longTimer)
|
|
48
|
+
clearTimeout(longTimer);
|
|
49
|
+
if (abnormalTimer)
|
|
50
|
+
clearTimeout(abnormalTimer);
|
|
51
|
+
};
|
|
52
|
+
}, [
|
|
53
|
+
isLoading,
|
|
54
|
+
origin,
|
|
55
|
+
expectedLoadTime,
|
|
56
|
+
abnormalLoadTime,
|
|
57
|
+
loadDescription,
|
|
58
|
+
eventTracking,
|
|
59
|
+
]);
|
|
60
|
+
return {
|
|
61
|
+
isLongLoading,
|
|
62
|
+
isAbnormalLoading,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useQuill.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useQuill.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,WAAW,EAIZ,MAAM,yBAAyB,CAAC;AAKjC,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,cACR,MAAM,eACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,KAC3D;IACD,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,SAAS,EACL,CAAC,CAAC,QAAQ,EAAE,WAAW,KAAK,MAAM,GAAG,SAAS,CAAC,GAC/C,CAAC,MAAM,SAAS,CAAC,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;CA+P1B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useContext, useEffect, useMemo, useState } from 'react';
|
|
2
|
-
import { ClientContext, DashboardFiltersContext, FetchContext, ReportFiltersContext, ReportsContext, SchemaDataContext, TenantContext, } from '../Context';
|
|
2
|
+
import { ClientContext, DashboardFiltersContext, EventTrackingContext, FetchContext, ReportFiltersContext, ReportsContext, SchemaDataContext, TenantContext, } from '../Context';
|
|
3
3
|
import { convertInternalReportToReport } from '../utils/report';
|
|
4
4
|
import { shouldFetchMore } from '../utils/paginationProcessing';
|
|
5
5
|
import { fetchResultsByReport, } from '../utils/tableProcessing';
|
|
@@ -23,12 +23,13 @@ export const useQuill = (reportId, pagination) => {
|
|
|
23
23
|
const [schemaData] = useContext(SchemaDataContext);
|
|
24
24
|
const [client, isClientLoading] = useContext(ClientContext);
|
|
25
25
|
const { tenants } = useContext(TenantContext);
|
|
26
|
+
const { eventTracking } = useContext(EventTrackingContext);
|
|
26
27
|
const [loading, setLoading] = useState(true);
|
|
27
28
|
const [error, setError] = useState(undefined);
|
|
28
29
|
const [previousPage, setPreviousPage] = useState(0);
|
|
29
30
|
const processedReport = useMemo(() => {
|
|
30
31
|
return reportId && allReportsById[reportId]
|
|
31
|
-
? convertInternalReportToReport(mergeComparisonRange(allReportsById[reportId]), specificReportFilters ?? [], 'useQuill')
|
|
32
|
+
? convertInternalReportToReport(mergeComparisonRange(allReportsById[reportId]), specificReportFilters ?? [], eventTracking, 'useQuill')
|
|
32
33
|
: undefined;
|
|
33
34
|
}, [reportId, reportId && allReportsById[reportId], specificReportFilters]);
|
|
34
35
|
const [additionalProcessing, setAdditionProcessing] = useState(pagination
|
|
@@ -95,6 +96,7 @@ export const useQuill = (reportId, pagination) => {
|
|
|
95
96
|
filters: reportFilters[reportId],
|
|
96
97
|
customFields: schemaData.customFields,
|
|
97
98
|
getToken,
|
|
99
|
+
eventTracking,
|
|
98
100
|
});
|
|
99
101
|
if (paginatedRows.error) {
|
|
100
102
|
throw new Error('Error fetching chart');
|
|
@@ -114,6 +116,17 @@ export const useQuill = (reportId, pagination) => {
|
|
|
114
116
|
}
|
|
115
117
|
catch (e) {
|
|
116
118
|
console.log(e);
|
|
119
|
+
eventTracking?.logError?.({
|
|
120
|
+
type: 'bug', // TODO: determine type
|
|
121
|
+
severity: 'high',
|
|
122
|
+
message: 'Error fetching report',
|
|
123
|
+
errorMessage: e.message,
|
|
124
|
+
errorStack: e.stack,
|
|
125
|
+
errorData: {
|
|
126
|
+
caller: 'useQuill',
|
|
127
|
+
function: 'updateTableRows',
|
|
128
|
+
},
|
|
129
|
+
});
|
|
117
130
|
}
|
|
118
131
|
finally {
|
|
119
132
|
setTimeout(() => {
|
|
@@ -156,6 +169,17 @@ export const useQuill = (reportId, pagination) => {
|
|
|
156
169
|
}
|
|
157
170
|
catch (error) {
|
|
158
171
|
setError(error.message ?? 'Error fetching report');
|
|
172
|
+
eventTracking?.logError?.({
|
|
173
|
+
type: 'bug', // TODO: determine type
|
|
174
|
+
severity: 'high',
|
|
175
|
+
message: 'Error fetching report',
|
|
176
|
+
errorMessage: error.message,
|
|
177
|
+
errorStack: error.stack,
|
|
178
|
+
errorData: {
|
|
179
|
+
caller: 'useQuill',
|
|
180
|
+
function: 'fetchReportHelper',
|
|
181
|
+
},
|
|
182
|
+
});
|
|
159
183
|
}
|
|
160
184
|
finally {
|
|
161
185
|
setLoading(false);
|