signoz/frontend/src/hooks/queryBuilder/useStepInterval.ts
Vikrant Gupta dc294ff6d5
fix: enable custom aggregate interval for all data sources across application (#5074)
* fix: step interval not working for logs alerts

* fix: build issues

* fix: do not auto update the step interval when user enters some value

* feat: remove initial default 60 from step interval

* feat: revert last change

* fix: step interval mapping

* fix: remove initial default 60 from step interval

* Revert "fix: remove initial default 60 from step interval"

This reverts commit d23ce5e7e2860f37d433070d16793ceab85ed614.

* chore: fix backend

* chore: remove backend changes

* feat: enable the aggregate every interval across product

* fix: handle full view and landing view changes

---------

Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
2024-06-12 17:38:05 +05:30

47 lines
1.1 KiB
TypeScript

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,
shallUpdateStepInterval?: boolean,
): Widgets['query'] => {
const stepInterval = getStep({
start: minTime,
end: maxTime,
inputFormat: 'ns',
});
function getStepInterval(customInterval: number): number {
// if user enters some value then auto update should never come
if (shallUpdateStepInterval) {
return customInterval;
}
return stepInterval;
}
return {
...query,
builder: {
...query?.builder,
queryData:
query?.builder?.queryData?.map((item) => ({
...item,
stepInterval: getStepInterval(item.stepInterval),
})) || [],
},
};
};
export const useStepInterval = (query: Widgets['query']): Widgets['query'] => {
const { maxTime, minTime } = useSelector<AppState, GlobalReducer>(
(state) => state.globalTime,
);
return updateStepInterval(query, maxTime, minTime);
};