diff --git a/App/FeatureSet/Dashboard/src/Components/Kubernetes/KubernetesMetricsTab.tsx b/App/FeatureSet/Dashboard/src/Components/Kubernetes/KubernetesMetricsTab.tsx index 34501bf410..13485a160b 100644 --- a/App/FeatureSet/Dashboard/src/Components/Kubernetes/KubernetesMetricsTab.tsx +++ b/App/FeatureSet/Dashboard/src/Components/Kubernetes/KubernetesMetricsTab.tsx @@ -7,54 +7,41 @@ import React, { import MetricView from "../../Components/Metrics/MetricView"; import MetricViewData from "Common/Types/Metrics/MetricViewData"; import MetricQueryConfigData from "Common/Types/Metrics/MetricQueryConfigData"; -import OneUptimeDate from "Common/Types/Date"; -import InBetween from "Common/Types/BaseDatabase/InBetween"; - -interface TimeRangeOption { - label: string; - hours: number; -} - -const TIME_RANGE_OPTIONS: Array = [ - { label: "Last 1 Hour", hours: 1 }, - { label: "Last 3 Hours", hours: 3 }, - { label: "Last 6 Hours", hours: 6 }, - { label: "Last 12 Hours", hours: 12 }, - { label: "Last 24 Hours", hours: 24 }, - { label: "Last 7 Days", hours: 168 }, -]; +import RangeStartAndEndDateTime, { + RangeStartAndEndDateTimeUtil, +} from "Common/Types/Time/RangeStartAndEndDateTime"; +import TimeRange from "Common/Types/Time/TimeRange"; +import RangeStartAndEndDateEdit from "Common/UI/Components/Date/RangeStartAndEndDateEdit"; export interface ComponentProps { queryConfigs: Array; } -function getStartAndEndDate(hours: number): InBetween { - const endDate: Date = OneUptimeDate.getCurrentDate(); - const startDate: Date = OneUptimeDate.addRemoveHours(endDate, -hours); - return new InBetween(startDate, endDate); -} - const KubernetesMetricsTab: FunctionComponent = ( props: ComponentProps, ): ReactElement => { - const [selectedHours, setSelectedHours] = useState(1); + const [timeRange, setTimeRange] = useState({ + range: TimeRange.PAST_ONE_HOUR, + }); const [metricViewData, setMetricViewData] = useState({ - startAndEndDate: getStartAndEndDate(1), + startAndEndDate: RangeStartAndEndDateTimeUtil.getStartAndEndDate({ + range: TimeRange.PAST_ONE_HOUR, + }), queryConfigs: [], formulaConfigs: [], }); const handleTimeRangeChange: ( - e: React.ChangeEvent, + newTimeRange: RangeStartAndEndDateTime, ) => void = useCallback( - (e: React.ChangeEvent): void => { - const hours: number = parseInt(e.target.value, 10); - setSelectedHours(hours); + (newTimeRange: RangeStartAndEndDateTime): void => { + setTimeRange(newTimeRange); + const dateRange = RangeStartAndEndDateTimeUtil.getStartAndEndDate(newTimeRange); setMetricViewData((prev: MetricViewData) => { return { ...prev, - startAndEndDate: getStartAndEndDate(hours), + startAndEndDate: dateRange, }; }); }, @@ -64,19 +51,12 @@ const KubernetesMetricsTab: FunctionComponent = ( return (
- +
+ +
= ( const monitorMetricTypesByMonitor: Array = MonitorMetricTypeUtil.getMonitorMetricTypesByMonitorType(monitorType); - // set it to past 1 hour - const endDate: Date = OneUptimeDate.getCurrentDate(); - const startDate: Date = OneUptimeDate.addRemoveHours(endDate, -1); - - const startAndEndDate: InBetween = new InBetween(startDate, endDate); + const [timeRange, setTimeRange] = useState({ + range: TimeRange.PAST_ONE_HOUR, + }); type GetQueryConfigByMonitorMetricTypesFunction = () => Array; @@ -269,11 +271,29 @@ const MonitorMetricsElement: FunctionComponent = ( }; const [metricViewData, setMetricViewData] = useState({ - startAndEndDate: startAndEndDate, + startAndEndDate: RangeStartAndEndDateTimeUtil.getStartAndEndDate({ + range: TimeRange.PAST_ONE_HOUR, + }), queryConfigs: getQueryConfigByMonitorMetricTypes(), formulaConfigs: [], }); + const handleTimeRangeChange: ( + newTimeRange: RangeStartAndEndDateTime, + ) => void = useCallback( + (newTimeRange: RangeStartAndEndDateTime): void => { + setTimeRange(newTimeRange); + const dateRange = RangeStartAndEndDateTimeUtil.getStartAndEndDate(newTimeRange); + setMetricViewData((prev: MetricViewData) => { + return { + ...prev, + startAndEndDate: dateRange, + }; + }); + }, + [], + ); + if (isLoading) { return ; } @@ -288,9 +308,18 @@ const MonitorMetricsElement: FunctionComponent = ( return (
+
+
+ +
+
{ setMetricViewData({ ...data,