import { Col } from 'antd'; import { PANEL_TYPES } from 'constants/queryBuilder'; import Graph from 'container/GridCardLayout/GridCard'; import { externalCallDuration, externalCallDurationByAddress, externalCallErrorPercent, externalCallRpsByAddress, } from 'container/MetricsApplication/MetricsPageQueries/ExternalQueries'; import useResourceAttribute from 'hooks/useResourceAttribute'; import { convertRawQueriesToTraceSelectedTags, resourceAttributesToTagFilterItems, } from 'hooks/useResourceAttribute/utils'; import { useMemo, useState } from 'react'; import { useParams } from 'react-router-dom'; import { EQueryType } from 'types/common/dashboard'; import { v4 as uuid } from 'uuid'; import { GraphTitle, legend, MENU_ITEMS } from '../constant'; import { getWidgetQueryBuilder } from '../MetricsApplication.factory'; import { Card, GraphContainer, Row } from '../styles'; import { Button } from './styles'; import { IServiceName } from './types'; import { handleNonInQueryRange, onGraphClickHandler, onViewTracePopupClick, } from './util'; function External(): JSX.Element { const [selectedTimeStamp, setSelectedTimeStamp] = useState(0); const { servicename } = useParams(); const { queries } = useResourceAttribute(); const tagFilterItems = useMemo( () => handleNonInQueryRange(resourceAttributesToTagFilterItems(queries)) || [], [queries], ); const externalCallErrorWidget = useMemo( () => getWidgetQueryBuilder({ query: { queryType: EQueryType.QUERY_BUILDER, promql: [], builder: externalCallErrorPercent({ servicename, legend: legend.address, tagFilterItems, }), clickhouse_sql: [], id: uuid(), }, title: GraphTitle.EXTERNAL_CALL_ERROR_PERCENTAGE, panelTypes: PANEL_TYPES.TIME_SERIES, yAxisUnit: '%', }), [servicename, tagFilterItems], ); const selectedTraceTags = useMemo( () => JSON.stringify(convertRawQueriesToTraceSelectedTags(queries) || []), [queries], ); const externalCallDurationWidget = useMemo( () => getWidgetQueryBuilder({ query: { queryType: EQueryType.QUERY_BUILDER, promql: [], builder: externalCallDuration({ servicename, tagFilterItems, }), clickhouse_sql: [], id: uuid(), }, title: GraphTitle.EXTERNAL_CALL_DURATION, panelTypes: PANEL_TYPES.TIME_SERIES, yAxisUnit: 'ms', }), [servicename, tagFilterItems], ); const externalCallRPSWidget = useMemo( () => getWidgetQueryBuilder({ query: { queryType: EQueryType.QUERY_BUILDER, promql: [], builder: externalCallRpsByAddress({ servicename, legend: legend.address, tagFilterItems, }), clickhouse_sql: [], id: uuid(), }, title: GraphTitle.EXTERNAL_CALL_RPS_BY_ADDRESS, panelTypes: PANEL_TYPES.TIME_SERIES, yAxisUnit: 'reqps', }), [servicename, tagFilterItems], ); const externalCallDurationAddressWidget = useMemo( () => getWidgetQueryBuilder({ query: { queryType: EQueryType.QUERY_BUILDER, promql: [], builder: externalCallDurationByAddress({ servicename, legend: legend.address, tagFilterItems, }), clickhouse_sql: [], id: uuid(), }, title: GraphTitle.EXTERNAL_CALL_DURATION_BY_ADDRESS, panelTypes: PANEL_TYPES.TIME_SERIES, yAxisUnit: 'ms', }), [servicename, tagFilterItems], ); return ( <> { onGraphClickHandler(setSelectedTimeStamp)( xValue, yValue, mouseX, mouseY, 'external_call_error_percentage', ); }} /> { onGraphClickHandler(setSelectedTimeStamp)( xValue, yValue, mouseX, mouseY, 'external_call_duration', ); }} /> => onGraphClickHandler(setSelectedTimeStamp)( xValue, yValue, mouseX, mouseY, 'external_call_rps_by_address', ) } /> { onGraphClickHandler(setSelectedTimeStamp)( xValue, yValue, mouseX, mouseY, 'external_call_duration_by_address', ); }} /> ); } export default External;