Merge pull request #25899 from drodil/offset_pagination

feat: allow offset mode pagination in entity list
This commit is contained in:
Fredrik Adelöw
2024-09-10 10:12:35 +02:00
committed by GitHub
25 changed files with 624 additions and 72 deletions
+4 -1
View File
@@ -117,7 +117,10 @@ const routes = (
<Route path="/home" element={<HomepageCompositionRoot />}>
{homePage}
</Route>
<Route path="/catalog" element={<CatalogIndexPage />} />
<Route
path="/catalog"
element={<CatalogIndexPage pagination={{ mode: 'offset', limit: 20 }} />}
/>
<Route
path="/catalog/:namespace/:kind/:name"
element={<CatalogEntityPage />}
+1
View File
@@ -269,6 +269,7 @@ export type QueryEntitiesCursorRequest = {
export type QueryEntitiesInitialRequest = {
fields?: string[];
limit?: number;
offset?: number;
filter?: EntityFilterQuery;
orderFields?: EntityOrderQuery;
fullTextFilter?: {
@@ -191,6 +191,7 @@ export class CatalogClient implements CatalogApi {
fields = [],
filter,
limit,
offset,
orderFields,
fullTextFilter,
} = request;
@@ -199,6 +200,9 @@ export class CatalogClient implements CatalogApi {
if (limit !== undefined) {
params.limit = limit;
}
if (offset !== undefined) {
params.offset = offset;
}
if (orderFields !== undefined) {
params.orderField = (
Array.isArray(orderFields) ? orderFields : [orderFields]
@@ -247,6 +247,7 @@ export class DefaultApiClient {
query: {
fields?: Array<string>;
limit?: number;
offset?: number;
orderField?: Array<string>;
cursor?: string;
filter?: Array<string>;
@@ -258,7 +259,7 @@ export class DefaultApiClient {
): Promise<TypedResponse<EntitiesQueryResponse>> {
const baseUrl = await this.discoveryApi.getBaseUrl(pluginId);
const uriTemplate = `/entities/by-query{?fields,limit,orderField*,cursor,filter*,fullTextFilterTerm,fullTextFilterFields}`;
const uriTemplate = `/entities/by-query{?fields,limit,offset,orderField*,cursor,filter*,fullTextFilterTerm,fullTextFilterFields}`;
const uri = parser.parse(uriTemplate).expand({
...request.query,
+1
View File
@@ -412,6 +412,7 @@ export type QueryEntitiesRequest =
export type QueryEntitiesInitialRequest = {
fields?: string[];
limit?: number;
offset?: number;
filter?: EntityFilterQuery;
orderFields?: EntityOrderQuery;
fullTextFilter?: {
-7
View File
@@ -17,7 +17,6 @@
import {
QueryEntitiesCursorRequest,
QueryEntitiesInitialRequest,
QueryEntitiesRequest,
} from './types/api';
export function isQueryEntitiesInitialRequest(
@@ -25,9 +24,3 @@ export function isQueryEntitiesInitialRequest(
): request is QueryEntitiesInitialRequest {
return !(request as QueryEntitiesCursorRequest).cursor;
}
export function isQueryEntitiesCursorRequest(
request: QueryEntitiesRequest,
): request is QueryEntitiesCursorRequest {
return !isQueryEntitiesInitialRequest(request);
}