mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-06-20 23:26:03 +08:00

* feat: add custom orderBy * feat: infinity scroll list logs list * feat: add infinity table view * Fix/double query logs request (#3006) * feat: add control panel * fix: repeating query api request * fix: scroll, remove id, page size * fix: reset offset to 0 * feat: add log explorer detail (#3007) * feat: add control panel * fix: repeating query api request * feat: add log explorer detail --------- Co-authored-by: Vishal Sharma <makeavish786@gmail.com> * feat: add group by in the logs chart (#3009) * feat: add control panel * fix: repeating query api request * feat: add log explorer detail * feat: add group by in the logs chart * fix: list timestamp, limit, filter order * feat: add list chart (#3037) * feat: add list chart * refactor: remove console log * feat: hide aggregate every for table view (#3046) * feat: hide aggregate every for table view * fix: text filter for inactive filters * refactor: remove log * fix: table columns * fix: timestamp type --------- Co-authored-by: Vishal Sharma <makeavish786@gmail.com>
77 lines
1.8 KiB
TypeScript
77 lines
1.8 KiB
TypeScript
import { initialFilters } from 'constants/queryBuilder';
|
|
import { FILTERS } from 'container/QueryBuilder/filters/OrderByFilter/config';
|
|
import {
|
|
IBuilderQuery,
|
|
OrderByPayload,
|
|
TagFilter,
|
|
} from 'types/api/queryBuilder/queryBuilderData';
|
|
import { v4 as uuid } from 'uuid';
|
|
|
|
type SetupPaginationQueryDataParams = {
|
|
currentStagedQueryData: IBuilderQuery | null;
|
|
listItemId: string | null;
|
|
orderByTimestamp: OrderByPayload | null;
|
|
page: number;
|
|
pageSize: number;
|
|
};
|
|
|
|
type SetupPaginationQueryData = (
|
|
params: SetupPaginationQueryDataParams,
|
|
) => Pick<IBuilderQuery, 'filters' | 'offset'>;
|
|
|
|
export const getPaginationQueryData: SetupPaginationQueryData = ({
|
|
currentStagedQueryData,
|
|
listItemId,
|
|
orderByTimestamp,
|
|
page,
|
|
pageSize,
|
|
}) => {
|
|
if (!currentStagedQueryData) {
|
|
return { limit: null, filters: initialFilters };
|
|
}
|
|
|
|
const filters = currentStagedQueryData.filters || initialFilters;
|
|
const offset = (page - 1) * pageSize;
|
|
|
|
const queryProps =
|
|
(orderByTimestamp && currentStagedQueryData.orderBy.length > 1) ||
|
|
!orderByTimestamp
|
|
? {
|
|
offset,
|
|
}
|
|
: {};
|
|
|
|
const updatedFilters: TagFilter = {
|
|
...filters,
|
|
items: filters.items.filter((item) => item.key?.key !== 'id'),
|
|
};
|
|
|
|
const tagFilters: TagFilter = {
|
|
...filters,
|
|
items:
|
|
listItemId && orderByTimestamp
|
|
? [
|
|
{
|
|
id: uuid(),
|
|
key: {
|
|
key: 'id',
|
|
type: null,
|
|
dataType: 'string',
|
|
isColumn: true,
|
|
},
|
|
op: orderByTimestamp.order === FILTERS.ASC ? '>' : '<',
|
|
value: listItemId,
|
|
},
|
|
...updatedFilters.items,
|
|
]
|
|
: updatedFilters.items,
|
|
};
|
|
|
|
const chunkOfQueryData: Partial<IBuilderQuery> = {
|
|
filters: orderByTimestamp ? tagFilters : updatedFilters,
|
|
...queryProps,
|
|
};
|
|
|
|
return { ...currentStagedQueryData, ...chunkOfQueryData };
|
|
};
|