2022-05-19 21:25:03 +05:30
|
|
|
import RouteTab from 'components/RouteTab';
|
|
|
|
|
import ROUTES from 'constants/routes';
|
2021-10-20 09:24:55 +05:30
|
|
|
import React from 'react';
|
2022-05-19 21:25:03 +05:30
|
|
|
import { generatePath, useParams } from 'react-router-dom';
|
|
|
|
|
import { useLocation } from 'react-use';
|
2021-10-20 09:24:55 +05:30
|
|
|
import { Widgets } from 'types/api/dashboard/getAll';
|
|
|
|
|
|
2022-05-03 15:41:40 +05:30
|
|
|
import ResourceAttributesFilter from './ResourceAttributesFilter';
|
2021-10-20 09:24:55 +05:30
|
|
|
import DBCall from './Tabs/DBCall';
|
|
|
|
|
import External from './Tabs/External';
|
2022-05-19 21:25:03 +05:30
|
|
|
import Overview from './Tabs/Overview';
|
2021-10-20 09:24:55 +05:30
|
|
|
|
2022-05-19 21:25:03 +05:30
|
|
|
const getWidget = (query: Widgets['query']): Widgets => {
|
|
|
|
|
return {
|
|
|
|
|
description: '',
|
|
|
|
|
id: '',
|
|
|
|
|
isStacked: false,
|
|
|
|
|
nullZeroValues: '',
|
|
|
|
|
opacity: '0',
|
|
|
|
|
panelTypes: 'TIME_SERIES',
|
|
|
|
|
query,
|
|
|
|
|
queryData: {
|
|
|
|
|
data: [],
|
|
|
|
|
error: false,
|
|
|
|
|
errorMessage: '',
|
|
|
|
|
loading: false,
|
|
|
|
|
},
|
|
|
|
|
timePreferance: 'GLOBAL_TIME',
|
|
|
|
|
title: '',
|
|
|
|
|
stepSize: 60,
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function OverViewTab(): JSX.Element {
|
|
|
|
|
return <Overview getWidget={getWidget} />;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DbCallTab(): JSX.Element {
|
|
|
|
|
return <DBCall getWidget={getWidget} />;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ExternalTab(): JSX.Element {
|
|
|
|
|
return <External getWidget={getWidget} />;
|
|
|
|
|
}
|
2021-10-20 09:24:55 +05:30
|
|
|
|
2022-03-22 12:10:31 +05:30
|
|
|
function ServiceMetrics(): JSX.Element {
|
2022-05-19 21:25:03 +05:30
|
|
|
const { search } = useLocation();
|
|
|
|
|
const { servicename } = useParams<{ servicename: string }>();
|
|
|
|
|
|
|
|
|
|
const searchParams = new URLSearchParams(search);
|
|
|
|
|
const tab = searchParams.get('tab');
|
|
|
|
|
|
|
|
|
|
const overMetrics = 'Overview Metrics';
|
|
|
|
|
const dbCallMetrics = 'Database Calls';
|
|
|
|
|
const externalMetrics = 'External Calls';
|
|
|
|
|
|
|
|
|
|
const getActiveKey = (): string => {
|
2022-05-20 14:12:13 +05:30
|
|
|
switch (tab) {
|
|
|
|
|
case null: {
|
|
|
|
|
return overMetrics;
|
|
|
|
|
}
|
|
|
|
|
case dbCallMetrics: {
|
|
|
|
|
return dbCallMetrics;
|
|
|
|
|
}
|
|
|
|
|
case externalMetrics: {
|
|
|
|
|
return externalMetrics;
|
|
|
|
|
}
|
|
|
|
|
default: {
|
|
|
|
|
return overMetrics;
|
|
|
|
|
}
|
2022-05-19 21:25:03 +05:30
|
|
|
}
|
2021-10-20 09:24:55 +05:30
|
|
|
};
|
|
|
|
|
|
2022-05-19 21:25:03 +05:30
|
|
|
const activeKey = getActiveKey();
|
|
|
|
|
|
2021-10-20 09:24:55 +05:30
|
|
|
return (
|
2022-05-03 15:41:40 +05:30
|
|
|
<>
|
|
|
|
|
<ResourceAttributesFilter />
|
2022-05-19 21:25:03 +05:30
|
|
|
<RouteTab
|
|
|
|
|
routes={[
|
|
|
|
|
{
|
|
|
|
|
Component: OverViewTab,
|
|
|
|
|
name: overMetrics,
|
|
|
|
|
route: `${generatePath(ROUTES.SERVICE_METRICS, {
|
|
|
|
|
servicename,
|
|
|
|
|
})}?tab=${overMetrics}`,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
Component: DbCallTab,
|
|
|
|
|
name: dbCallMetrics,
|
|
|
|
|
route: `${generatePath(ROUTES.SERVICE_METRICS, {
|
|
|
|
|
servicename,
|
|
|
|
|
})}?tab=${dbCallMetrics}`,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
Component: ExternalTab,
|
|
|
|
|
name: externalMetrics,
|
|
|
|
|
route: `${generatePath(ROUTES.SERVICE_METRICS, {
|
|
|
|
|
servicename,
|
|
|
|
|
})}?tab=${externalMetrics}`,
|
|
|
|
|
},
|
|
|
|
|
]}
|
|
|
|
|
activeKey={activeKey}
|
|
|
|
|
/>
|
2022-05-03 15:41:40 +05:30
|
|
|
</>
|
2021-10-20 09:24:55 +05:30
|
|
|
);
|
2022-03-22 12:10:31 +05:30
|
|
|
}
|
2021-10-20 09:24:55 +05:30
|
|
|
|
2022-05-19 21:25:03 +05:30
|
|
|
export default React.memo(ServiceMetrics);
|