@alauda-fe/common
Version:
Alauda frontend team common codes.
62 lines (61 loc) • 2.3 kB
TypeScript
import { HttpErrorResponse } from '@angular/common/http';
import { Signal } from '@angular/core';
import { Params } from '@angular/router';
import { Observable } from 'rxjs';
import { WatchAPIResponse } from '../api/public-api';
import { KubernetesResource, KubernetesResourceList, Status } from '../core/public-api';
export declare class K8SResourcePagedList<R extends KubernetesResource = KubernetesResource, P = unknown> {
private readonly config;
private readonly reload$$;
private readonly addedUid;
private readonly deletedUid;
params$: Observable<ListFetchParams<P>>;
loadState$: Observable<LoadState<R>>;
loading$: Observable<boolean>;
items$: Observable<R[]>;
totalItems$: Observable<number>;
loadError$: Observable<Status | HttpErrorResponse>;
$loading: Signal<boolean>;
$items: Signal<R[]>;
$totalItems: Signal<number>;
$loadError: Signal<Status | HttpErrorResponse>;
constructor(config: PagedListConfig<R, P>);
reload(): void;
private sourceLoadState;
private loadStateWithPolling;
private loadStateWithWatcher;
}
export interface PagedListConfig<R, P> {
params: Signal<ListFetchParams<P>> | Observable<ListFetchParams<P>>;
fetcher: (listParams: FetchSeed, extraParams: P) => Observable<KubernetesResourceList<R>>;
watcher?: (listParams: FetchSeed, extraParams: P) => Observable<WatchAPIResponse<R>>;
polling?: number;
}
export interface ListFetchParams<P = never> {
pageIndex?: number | string;
pageSize?: number | string;
sortField?: string;
sortOrder?: 'asc' | 'desc';
keyword?: string;
fieldSelector?: string;
labelSelector?: string;
extra?: P;
}
export interface FetchSeed extends Record<string, string> {
limit?: string;
continue?: string;
fieldSelector?: string;
}
interface LoadState<R> {
items: R[];
totalItems: number;
loading: boolean;
loadSuccess: boolean;
loadError?: HttpErrorResponse | Status;
}
export declare function extractPagedListParams<P>(defaultParams?: ListFetchParams, extraParams?: (queryParams: Params) => P): Readonly<{
stream: () => Observable<ListFetchParams<P>>;
signal: () => Signal<ListFetchParams<P>>;
}>;
export declare function queryListParams(): (queryParams: Params) => void;
export {};