import { Col } from 'antd'; import FullView from 'container/GridGraphLayout/Graph/FullView/index.metricsBuilder'; import { databaseCallsAvgDuration, databaseCallsRPS, } from 'container/MetricsApplication/MetricsPageQueries/DBCallQueries'; import { convertRawQueriesToTraceSelectedTags, resourceAttributesToTagFilterItems, } from 'lib/resourceAttributes'; import React, { useMemo, useState } from 'react'; import { useSelector } from 'react-redux'; import { useParams } from 'react-router-dom'; import { AppState } from 'store/reducers'; import { Widgets } from 'types/api/dashboard/getAll'; import MetricReducer from 'types/reducer/metrics'; import { Card, GraphContainer, GraphTitle, Row } from '../styles'; import { Button } from './styles'; import { dbSystemTags, onGraphClickHandler, onViewTracePopupClick, } from './util'; function DBCall({ getWidgetQueryBuilder }: DBCallProps): JSX.Element { const { servicename } = useParams<{ servicename?: string }>(); const [selectedTimeStamp, setSelectedTimeStamp] = useState(0); const { resourceAttributeQueries } = useSelector( (state) => state.metrics, ); const tagFilterItems = useMemo( () => resourceAttributesToTagFilterItems(resourceAttributeQueries) || [], [resourceAttributeQueries], ); const selectedTraceTags: string = useMemo( () => JSON.stringify( convertRawQueriesToTraceSelectedTags(resourceAttributeQueries).concat( ...dbSystemTags, ) || [], ), [resourceAttributeQueries], ); const legend = '{{db_system}}'; const databaseCallsRPSWidget = useMemo( () => getWidgetQueryBuilder({ queryType: 1, promQL: [], metricsBuilder: databaseCallsRPS({ servicename, legend, tagFilterItems, }), clickHouse: [], }), [getWidgetQueryBuilder, servicename, tagFilterItems], ); const databaseCallsAverageDurationWidget = useMemo( () => getWidgetQueryBuilder({ queryType: 1, promQL: [], metricsBuilder: databaseCallsAvgDuration({ servicename, tagFilterItems, }), clickHouse: [], }), [getWidgetQueryBuilder, servicename, tagFilterItems], ); return ( Database Calls RPS { onGraphClickHandler(setSelectedTimeStamp)( ChartEvent, activeElements, chart, data, 'database_call_rps', ); }} /> Database Calls Avg Duration { onGraphClickHandler(setSelectedTimeStamp)( ChartEvent, activeElements, chart, data, 'database_call_avg_duration', ); }} /> ); } interface DBCallProps { getWidgetQueryBuilder: (query: Widgets['query']) => Widgets; } export default DBCall;