/* eslint-disable sonarjs/no-identical-functions */ import '../../EntityDetailsUtils/entityDetails.styles.scss'; import { Color, Spacing } from '@signozhq/design-tokens'; import { Button, Divider, Drawer, Radio, Tooltip, Typography } from 'antd'; import { RadioChangeEvent } from 'antd/lib'; import logEvent from 'api/common/logEvent'; import { K8sNodesData } from 'api/infraMonitoring/getK8sNodesList'; import { VIEW_TYPES, VIEWS } from 'components/HostMetricsDetail/constants'; import { InfraMonitoringEvents } from 'constants/events'; import { QueryParams } from 'constants/query'; import { initialQueryBuilderFormValuesMap, initialQueryState, } from 'constants/queryBuilder'; import ROUTES from 'constants/routes'; import { filterDuplicateFilters } from 'container/InfraMonitoringK8s/commonUtils'; import { K8sCategory } from 'container/InfraMonitoringK8s/constants'; import NodeEvents from 'container/InfraMonitoringK8s/EntityDetailsUtils/EntityEvents'; import { CustomTimeType, Time, } from 'container/TopNav/DateTimeSelectionV2/config'; import { useIsDarkMode } from 'hooks/useDarkMode'; import useUrlQuery from 'hooks/useUrlQuery'; import GetMinMax from 'lib/getMinMax'; import { BarChart2, ChevronsLeftRight, Compass, DraftingCompass, ScrollText, X, } from 'lucide-react'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { useSelector } from 'react-redux'; import { AppState } from 'store/reducers'; import { DataTypes } from 'types/api/queryBuilder/queryAutocompleteResponse'; import { IBuilderQuery, TagFilterItem, } from 'types/api/queryBuilder/queryBuilderData'; import { LogsAggregatorOperator, TracesAggregatorOperator, } from 'types/common/queryBuilder'; import { GlobalReducer } from 'types/reducer/globalTime'; import { v4 as uuidv4 } from 'uuid'; import NodeLogs from '../../EntityDetailsUtils/EntityLogs'; import NodeMetrics from '../../EntityDetailsUtils/EntityMetrics'; import NodeTraces from '../../EntityDetailsUtils/EntityTraces'; import { QUERY_KEYS } from '../../EntityDetailsUtils/utils'; import { getNodeMetricsQueryPayload, nodeWidgetInfo } from './constants'; import { NodeDetailsProps } from './NodeDetails.interfaces'; function NodeDetails({ node, onClose, isModalTimeSelection, }: NodeDetailsProps): JSX.Element { const { maxTime, minTime, selectedTime } = useSelector< AppState, GlobalReducer >((state) => state.globalTime); const startMs = useMemo(() => Math.floor(Number(minTime) / 1000000000), [ minTime, ]); const endMs = useMemo(() => Math.floor(Number(maxTime) / 1000000000), [ maxTime, ]); const urlQuery = useUrlQuery(); const [modalTimeRange, setModalTimeRange] = useState(() => ({ startTime: startMs, endTime: endMs, })); const [selectedInterval, setSelectedInterval] = useState