bitfront-library
Version:
Angular CLI project with components and classes used by other Angular projects of the BIT foundation.
137 lines (136 loc) • 7.16 kB
TypeScript
import { BaseFilter } from "../shared/base.filter";
import { PageStatus } from "../../shared/global.constants";
import { FactoryCreateNewFilter } from "./types";
export interface BaseListState<T, F extends BaseFilter> {
filter: F;
items: T[];
totalItems: number;
toolbar: any;
status: PageStatus;
readOnly: boolean;
}
export declare class BaseListAdapter<T, F extends BaseFilter> {
/**
* Retorna el estado inicial que debe tener el store. Se permite añadir más info a través del parámetro optional
* en el caso de que el componente que extienda de esta clase necesite más datos o necesite modificar la forma en que se inicializan
* las propiedades del store. Por ejemplo, podría interesar que la lista de items no partiera vacía si no con resultados. En ese caso
* en optional se pasaría un objeto con la lista de items rellenada. { items: [obj1, obj2,...]}
* makeFilter: función que sabe como construir un filtro de búsqueda
* optional: objeto con propiedades adicionales para incluir en el store o propiedades modificadas a la forma en que se inicializan aquí.
* Basicamente la inicialización será:
* filter: makeFilter(),
items: [],
totalItems: 0,
toolbar: botones de imprimir y exportar deshabilitados
status: PageStatus.Init,
readOnly: false
*/
getInitialState<S extends BaseListState<T, F>>(makeFilter: FactoryCreateNewFilter<F>, optional?: any): S;
/**
* Actualiza en el store el filtro de búsqueda y el status de la página a Searching
* payload: Filtro de búsqueda de tipo F
* state: Representación actual del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleLoadItems<S extends BaseListState<T, F>>(payload: F, state: S): S;
/**
* Actualiza en el store el la lista de elementos cargados, el status de la página a Finish
* y la toolbar
* payload: array de elementos de tipo T
* state: Representación actual del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleLoadItemsSuccess<S extends BaseListState<T, F>>(payload: T[], state: S): S;
/**
* Actualiza en el store la lista de elementos a vacía, el status de la página a Error
* y la toolbar.
* payload: Filtro de búsqueda de tipo F
* state: Representación actual del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleLoadItemsFail<S extends BaseListState<T, F>>(state: S): S;
/**
* Actualiza en el store el número total de elementos que se pueden cargar con el filtro actual de búsqueda
* totalItems: número total de elementos
* state: Representación actual del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleCount<S extends BaseListState<T, F>>(totalItems: number, state: S): S;
/**
* Actualiza en el store el número total de elementos a 0
* state: Representación actual del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleCountItems<S extends BaseListState<T, F>>(state: S): S;
/**
* Actualiza en el store el número total de elementos que se pueden cargar con el filtro actual de búsqueda
* payload: número total de elementos
* state: Representación actual del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleCountItemsSuccess<S extends BaseListState<T, F>>(payload: number, state: S): S;
/**
* Actualiza en el store el número total de elementos a 0
* state: Representación actual del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleCountItemsFail<S extends BaseListState<T, F>>(state: S): S;
/**
* Actualiza en el store el filtro de búsqueda y el status de la página a Searching
* payload: Filtro de búsqueda de tipo F
* state: Representación del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handlePage<S extends BaseListState<T, F>>(payload: F, state: S): S;
/**
* Actualiza en el store el filtro de búsqueda y el status de la página a Searching
* como consecuencia de una cambio de página en el footer
* payload: Filtro de búsqueda de tipo F
* state: Representación del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handlePageChange<S extends BaseListState<T, F>>(payload: F, state: S): S;
/**
* Actualiza en el store el filtro de búsqueda y el status de la página a Searching
* como consecuencia de una cambio del tamaño del número de elementos en el footer
* payload: Filtro de búsqueda de tipo F
* state: Representación del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleNewPageSizeChange<S extends BaseListState<T, F>>(payload: F, state: S): S;
/**
* Actualiza en el store el filtro de búsqueda
* payload: Filtro de búsqueda de tipo F
* state: Representación actual del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleResetFilter<S extends BaseListState<T, F>>(payload: F, state: S): S;
/**
* Actualiza en el store la toolbar para setearla a modo readonly (sin botón new)
* state: Representación actual del estado que deberá extender a BaseListState
* return retorna la nueva representación del estado
*/
handleListReadOnly<S extends BaseListState<T, F>>(payload: boolean, state: S): S;
/**
* Retorna una colección de funciones para acceder a cada una de las propiedades del store
* return retorna el siguiente objeto
* {
* getItems: (state: BaseListState<T, F>) => state.items,
* getStatus: (state: BaseListState<T, F>) => state.status,
* getFilter: (state: BaseListState<T, F>) => state.filter,
* getToolbar: (state: BaseListState<T, F>) => state.toolbar,
* getTotalItems: (state: BaseListState<T, F>) => state.totalItems
* }
*/
getSelectors(): BaseListSelectors<T, F>;
}
export declare function makeToolbarList(readOnly: boolean, enable: boolean): any;
/** Función para crear un objeto de tipo BaseListAdapter */
export declare function createBaseListAdapter<T, F extends BaseFilter>(): BaseListAdapter<T, F>;
export declare type BaseListSelectors<T, F extends BaseFilter> = {
getItems: (state: BaseListState<T, F>) => T[];
getStatus: (state: BaseListState<T, F>) => PageStatus;
getFilter: (state: BaseListState<T, F>) => F;
getToolbar: (state: BaseListState<T, F>) => any;
getTotalItems: (state: BaseListState<T, F>) => number;
};