UNPKG

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
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; };