2023-07-18 08:55:01 +05:30
|
|
|
import { Button } from 'antd';
|
2022-03-24 12:06:57 +05:30
|
|
|
import { GraphOnClickHandler } from 'components/Graph';
|
2021-09-23 15:43:43 +05:30
|
|
|
import Spinner from 'components/Spinner';
|
|
|
|
|
import TimePreference from 'components/TimePreferenceDropDown';
|
|
|
|
|
import GridGraphComponent from 'container/GridGraphComponent';
|
|
|
|
|
import {
|
|
|
|
|
timeItems,
|
|
|
|
|
timePreferance,
|
|
|
|
|
} from 'container/NewWidget/RightContainer/timeItems';
|
2023-07-18 08:55:01 +05:30
|
|
|
import { useGetQueryRange } from 'hooks/queryBuilder/useGetQueryRange';
|
|
|
|
|
import { useStepInterval } from 'hooks/queryBuilder/useStepInterval';
|
|
|
|
|
import { getDashboardVariables } from 'lib/dashbaordVariables/getDashboardVariables';
|
2021-09-23 15:43:43 +05:30
|
|
|
import getChartData from 'lib/getChartData';
|
2023-05-19 13:14:32 +05:30
|
|
|
import { useCallback, useMemo, useState } from 'react';
|
2021-09-23 15:43:43 +05:30
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
|
import { AppState } from 'store/reducers';
|
2023-07-18 08:55:01 +05:30
|
|
|
import { Widgets } from 'types/api/dashboard/getAll';
|
2022-01-26 21:46:59 +05:30
|
|
|
import { GlobalReducer } from 'types/reducer/globalTime';
|
2021-09-23 15:43:43 +05:30
|
|
|
|
2023-07-18 08:55:01 +05:30
|
|
|
import { TimeContainer } from './styles';
|
2021-09-23 15:43:43 +05:30
|
|
|
|
2022-03-22 12:10:31 +05:30
|
|
|
function FullView({
|
2021-10-20 09:24:55 +05:30
|
|
|
widget,
|
|
|
|
|
fullViewOptions = true,
|
|
|
|
|
onClickHandler,
|
2021-12-10 14:28:31 +05:30
|
|
|
name,
|
2022-03-15 15:18:33 +05:30
|
|
|
yAxisUnit,
|
2023-01-17 13:30:34 +02:00
|
|
|
onDragSelect,
|
2023-07-18 08:55:01 +05:30
|
|
|
isDependedDataLoaded = false,
|
2022-03-22 12:10:31 +05:30
|
|
|
}: FullViewProps): JSX.Element {
|
2023-07-18 08:55:01 +05:30
|
|
|
const { selectedTime: globalSelectedTime } = useSelector<
|
2022-01-26 21:46:59 +05:30
|
|
|
AppState,
|
|
|
|
|
GlobalReducer
|
|
|
|
|
>((state) => state.globalTime);
|
2021-09-23 15:43:43 +05:30
|
|
|
|
|
|
|
|
const getSelectedTime = useCallback(
|
|
|
|
|
() =>
|
|
|
|
|
timeItems.find((e) => e.enum === (widget?.timePreferance || 'GLOBAL_TIME')),
|
|
|
|
|
[widget],
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const [selectedTime, setSelectedTime] = useState<timePreferance>({
|
|
|
|
|
name: getSelectedTime()?.name || '',
|
|
|
|
|
enum: widget?.timePreferance || 'GLOBAL_TIME',
|
|
|
|
|
});
|
|
|
|
|
|
2023-07-18 08:55:01 +05:30
|
|
|
const queryKey = useMemo(
|
|
|
|
|
() =>
|
|
|
|
|
`FullViewGetMetricsQueryRange-${selectedTime.enum}-${globalSelectedTime}-${widget.id}`,
|
|
|
|
|
[selectedTime, globalSelectedTime, widget],
|
2022-05-19 23:08:27 +05:30
|
|
|
);
|
2021-09-23 15:43:43 +05:30
|
|
|
|
2023-07-18 08:55:01 +05:30
|
|
|
const updatedQuery = useStepInterval(widget?.query);
|
|
|
|
|
|
|
|
|
|
const response = useGetQueryRange(
|
|
|
|
|
{
|
|
|
|
|
selectedTime: selectedTime.enum,
|
|
|
|
|
graphType: widget.panelTypes,
|
|
|
|
|
query: updatedQuery,
|
|
|
|
|
globalSelectedInterval: globalSelectedTime,
|
|
|
|
|
variables: getDashboardVariables(),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
queryKey,
|
|
|
|
|
enabled: !isDependedDataLoaded,
|
|
|
|
|
},
|
2022-05-19 23:08:27 +05:30
|
|
|
);
|
|
|
|
|
|
2023-01-25 20:31:42 +05:30
|
|
|
const chartDataSet = useMemo(
|
|
|
|
|
() =>
|
|
|
|
|
getChartData({
|
2023-07-18 08:55:01 +05:30
|
|
|
queryData: [
|
|
|
|
|
{
|
|
|
|
|
queryData: response?.data?.payload?.data?.result || [],
|
|
|
|
|
},
|
|
|
|
|
],
|
2023-01-25 20:31:42 +05:30
|
|
|
}),
|
2023-07-18 08:55:01 +05:30
|
|
|
[response],
|
2023-01-25 20:31:42 +05:30
|
|
|
);
|
|
|
|
|
|
2023-07-18 08:55:01 +05:30
|
|
|
if (response.status === 'idle' || response.status === 'loading') {
|
2022-05-19 23:08:27 +05:30
|
|
|
return <Spinner height="100%" size="large" tip="Loading..." />;
|
2021-10-20 09:24:55 +05:30
|
|
|
}
|
|
|
|
|
|
2021-09-23 15:43:43 +05:30
|
|
|
return (
|
|
|
|
|
<>
|
2021-10-20 09:24:55 +05:30
|
|
|
{fullViewOptions && (
|
|
|
|
|
<TimeContainer>
|
|
|
|
|
<TimePreference
|
2023-07-18 08:55:01 +05:30
|
|
|
selectedTime={selectedTime}
|
|
|
|
|
setSelectedTime={setSelectedTime}
|
2021-10-20 09:24:55 +05:30
|
|
|
/>
|
2022-05-19 23:08:27 +05:30
|
|
|
<Button
|
|
|
|
|
onClick={(): void => {
|
2023-07-18 08:55:01 +05:30
|
|
|
response.refetch();
|
2022-05-19 23:08:27 +05:30
|
|
|
}}
|
|
|
|
|
type="primary"
|
|
|
|
|
>
|
2021-10-20 09:24:55 +05:30
|
|
|
Refresh
|
|
|
|
|
</Button>
|
|
|
|
|
</TimeContainer>
|
|
|
|
|
)}
|
2021-09-23 15:43:43 +05:30
|
|
|
|
2021-12-10 14:28:31 +05:30
|
|
|
<GridGraphComponent
|
2023-01-25 20:31:42 +05:30
|
|
|
GRAPH_TYPES={widget.panelTypes}
|
|
|
|
|
data={chartDataSet}
|
|
|
|
|
isStacked={widget.isStacked}
|
|
|
|
|
opacity={widget.opacity}
|
|
|
|
|
title={widget.title}
|
|
|
|
|
onClickHandler={onClickHandler}
|
|
|
|
|
name={name}
|
|
|
|
|
yAxisUnit={yAxisUnit}
|
|
|
|
|
onDragSelect={onDragSelect}
|
2021-12-10 14:28:31 +05:30
|
|
|
/>
|
2021-09-23 15:43:43 +05:30
|
|
|
</>
|
|
|
|
|
);
|
2022-03-22 12:10:31 +05:30
|
|
|
}
|
2021-09-23 15:43:43 +05:30
|
|
|
|
|
|
|
|
interface FullViewProps {
|
2023-07-18 08:55:01 +05:30
|
|
|
widget: Widgets;
|
2021-10-20 09:24:55 +05:30
|
|
|
fullViewOptions?: boolean;
|
2022-03-24 12:06:57 +05:30
|
|
|
onClickHandler?: GraphOnClickHandler;
|
2021-12-10 14:28:31 +05:30
|
|
|
name: string;
|
2022-03-15 15:18:33 +05:30
|
|
|
yAxisUnit?: string;
|
2023-01-17 13:30:34 +02:00
|
|
|
onDragSelect?: (start: number, end: number) => void;
|
2023-07-18 08:55:01 +05:30
|
|
|
isDependedDataLoaded?: boolean;
|
2021-09-23 15:43:43 +05:30
|
|
|
}
|
|
|
|
|
|
2022-03-24 12:06:57 +05:30
|
|
|
FullView.defaultProps = {
|
|
|
|
|
fullViewOptions: undefined,
|
|
|
|
|
onClickHandler: undefined,
|
|
|
|
|
yAxisUnit: undefined,
|
2023-01-17 13:30:34 +02:00
|
|
|
onDragSelect: undefined,
|
2023-07-18 08:55:01 +05:30
|
|
|
isDependedDataLoaded: undefined,
|
2022-03-24 12:06:57 +05:30
|
|
|
};
|
|
|
|
|
|
2021-11-16 21:13:20 +05:30
|
|
|
export default FullView;
|