2023-06-28 15:19:52 +05:30
|
|
|
import getStep from 'lib/getStep';
|
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
|
import { AppState } from 'store/reducers';
|
|
|
|
|
import { Widgets } from 'types/api/dashboard/getAll';
|
|
|
|
|
import { GlobalReducer } from 'types/reducer/globalTime';
|
|
|
|
|
|
|
|
|
|
export const updateStepInterval = (
|
|
|
|
|
query: Widgets['query'],
|
|
|
|
|
maxTime: number,
|
|
|
|
|
minTime: number,
|
2024-06-12 17:38:05 +05:30
|
|
|
shallUpdateStepInterval?: boolean,
|
2023-06-28 15:19:52 +05:30
|
|
|
): Widgets['query'] => {
|
|
|
|
|
const stepInterval = getStep({
|
|
|
|
|
start: minTime,
|
|
|
|
|
end: maxTime,
|
|
|
|
|
inputFormat: 'ns',
|
|
|
|
|
});
|
|
|
|
|
|
2024-06-12 17:38:05 +05:30
|
|
|
function getStepInterval(customInterval: number): number {
|
|
|
|
|
// if user enters some value then auto update should never come
|
|
|
|
|
if (shallUpdateStepInterval) {
|
|
|
|
|
return customInterval;
|
|
|
|
|
}
|
|
|
|
|
return stepInterval;
|
|
|
|
|
}
|
|
|
|
|
|
2023-06-28 15:19:52 +05:30
|
|
|
return {
|
|
|
|
|
...query,
|
|
|
|
|
builder: {
|
|
|
|
|
...query?.builder,
|
|
|
|
|
queryData:
|
|
|
|
|
query?.builder?.queryData?.map((item) => ({
|
|
|
|
|
...item,
|
2024-06-12 17:38:05 +05:30
|
|
|
stepInterval: getStepInterval(item.stepInterval),
|
2023-06-28 15:19:52 +05:30
|
|
|
})) || [],
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const useStepInterval = (query: Widgets['query']): Widgets['query'] => {
|
|
|
|
|
const { maxTime, minTime } = useSelector<AppState, GlobalReducer>(
|
|
|
|
|
(state) => state.globalTime,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return updateStepInterval(query, maxTime, minTime);
|
|
|
|
|
};
|