diff --git a/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/AllEndPoints.tsx b/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/AllEndPoints.tsx index 1f0321a452..d17b7a4f37 100644 --- a/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/AllEndPoints.tsx +++ b/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/AllEndPoints.tsx @@ -21,13 +21,10 @@ import { useGetAggregateKeys } from 'hooks/queryBuilder/useGetAggregateKeys'; import { GetMetricQueryRange } from 'lib/dashboard/getQueryResults'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { useQueries } from 'react-query'; -import { useSelector } from 'react-redux'; -import { AppState } from 'store/reducers'; import { SuccessResponse } from 'types/api'; import { MetricRangePayloadProps } from 'types/api/metrics/getQueryRange'; import { IBuilderQuery } from 'types/api/queryBuilder/queryBuilderData'; import { DataSource } from 'types/common/queryBuilder'; -import { GlobalReducer } from 'types/reducer/globalTime'; import ErrorState from './components/ErrorState'; import ExpandedRow from './components/ExpandedRow'; @@ -39,12 +36,17 @@ function AllEndPoints({ setSelectedView, groupBy, setGroupBy, + timeRange, }: { domainName: string; setSelectedEndPointName: (name: string) => void; setSelectedView: (tab: VIEWS) => void; groupBy: IBuilderQuery['groupBy']; setGroupBy: (groupBy: IBuilderQuery['groupBy']) => void; + timeRange: { + startTime: number; + endTime: number; + }; }): JSX.Element { const { data: groupByFiltersData, @@ -99,21 +101,15 @@ function AllEndPoints({ } }, [groupByFiltersData]); - const { maxTime, minTime } = useSelector( - (state) => state.globalTime, - ); + const { startTime: minTime, endTime: maxTime } = timeRange; const queryPayloads = useMemo( - () => - getEndPointsQueryPayload( - groupBy, - domainName, - Math.floor(minTime / 1e9), - Math.floor(maxTime / 1e9), - ), + () => getEndPointsQueryPayload(groupBy, domainName, minTime, maxTime), [groupBy, domainName, minTime, maxTime], ); + console.log('uncaught modalTimeRange', timeRange); + // Since only one query here const endPointsDataQueries = useQueries( queryPayloads.map((payload) => ({ diff --git a/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/DomainDetails.styles.scss b/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/DomainDetails.styles.scss index 55f685d6dd..a656032da7 100644 --- a/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/DomainDetails.styles.scss +++ b/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/DomainDetails.styles.scss @@ -12,6 +12,12 @@ background: var(--bg-ink-300); box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.1); } + + .domain-details-drawer-header-right-container { + display: flex; + align-items: center; + gap: 12px; + } } .domain-detail-drawer { diff --git a/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/DomainDetails.tsx b/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/DomainDetails.tsx index fa82cd3f5d..0521299a00 100644 --- a/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/DomainDetails.tsx +++ b/frontend/src/container/ApiMonitoring/Explorer/Domains/DomainDetails/DomainDetails.tsx @@ -3,16 +3,27 @@ import './DomainDetails.styles.scss'; import { Color, Spacing } from '@signozhq/design-tokens'; import { Button, Divider, Drawer, Radio, Typography } from 'antd'; import { RadioChangeEvent } from 'antd/lib'; +import DateTimeSelectionV2 from 'container/TopNav/DateTimeSelectionV2'; +import { + CustomTimeType, + Time, +} from 'container/TopNav/DateTimeSelectionV2/config'; import { useIsDarkMode } from 'hooks/useDarkMode'; +import GetMinMax from 'lib/getMinMax'; import { ArrowDown, ArrowUp, X } from 'lucide-react'; -import { useState } from 'react'; +import { useCallback, useMemo, useState } from 'react'; +import { useSelector } from 'react-redux'; +import { AppState } from 'store/reducers'; import { IBuilderQuery } from 'types/api/queryBuilder/queryBuilderData'; +import { GlobalReducer } from 'types/reducer/globalTime'; import AllEndPoints from './AllEndPoints'; import DomainMetrics from './components/DomainMetrics'; import { VIEW_TYPES, VIEWS } from './constants'; import EndPointDetailsWrapper from './EndPointDetailsWrapper'; +const TimeRangeOffset = 1000000000; + function DomainDetails({ domainData, handleClose, @@ -39,6 +50,49 @@ function DomainDetails({ setSelectedView(e.target.value); }; + const { maxTime, minTime, selectedTime } = useSelector< + AppState, + GlobalReducer + >((state) => state.globalTime); + + const startMs = useMemo(() => Math.floor(Number(minTime) / TimeRangeOffset), [ + minTime, + ]); + const endMs = useMemo(() => Math.floor(Number(maxTime) / TimeRangeOffset), [ + maxTime, + ]); + + const [selectedInterval, setSelectedInterval] = useState