UNPKG

bitfront-library

Version:

Angular CLI project with components and classes used by other Angular projects of the BIT foundation.

211 lines 9.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBaseListAdapter = exports.makeToolbarList = exports.BaseListAdapter = void 0; var global_constants_1 = require("../../shared/global.constants"); var BaseListAdapter = /** @class */ (function () { function BaseListAdapter() { } /** * 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 */ BaseListAdapter.prototype.getInitialState = function (makeFilter, optional) { var initialState = Object.assign({ filter: makeFilter(), items: [], totalItems: 0, toolbar: makeToolbarList(false, false), status: global_constants_1.PageStatus.Init, readOnly: false }, optional); return initialState; }; /** * 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 */ BaseListAdapter.prototype.handleLoadItems = function (payload, state) { var filter = payload; var status = global_constants_1.PageStatus.Searching; return Object.assign({}, state, { filter: filter, status: status }); }; /** * 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 */ BaseListAdapter.prototype.handleLoadItemsSuccess = function (payload, state) { var items = payload; var status = global_constants_1.PageStatus.FinishSearch; var toolbar = makeToolbarList(state.readOnly, items && items.length > 0); return Object.assign({}, state, { items: items, toolbar: toolbar, status: status }); }; /** * 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 */ BaseListAdapter.prototype.handleLoadItemsFail = function (state) { var status = global_constants_1.PageStatus.Error; var toolbar = makeToolbarList(state.readOnly, false); var items = []; return Object.assign({}, state, { items: items, toolbar: toolbar, status: status }); }; /** * 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 */ BaseListAdapter.prototype.handleCount = function (totalItems, state) { return Object.assign({}, state, { totalItems: totalItems }); }; /** * 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 */ BaseListAdapter.prototype.handleCountItems = function (state) { return this.handleCount(0, state); }; /** * 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 */ BaseListAdapter.prototype.handleCountItemsSuccess = function (payload, state) { return this.handleCount(payload, state); }; /** * 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 */ BaseListAdapter.prototype.handleCountItemsFail = function (state) { return this.handleCount(0, state); }; /** * 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 */ BaseListAdapter.prototype.handlePage = function (payload, state) { var filter = payload; var status = global_constants_1.PageStatus.Searching; return Object.assign({}, state, { filter: filter, status: status }); }; /** * 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 */ BaseListAdapter.prototype.handlePageChange = function (payload, state) { return this.handlePage(payload, state); }; /** * 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 */ BaseListAdapter.prototype.handleNewPageSizeChange = function (payload, state) { return this.handlePage(payload, state); }; /** * 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 */ BaseListAdapter.prototype.handleResetFilter = function (payload, state) { var filter = payload; return Object.assign({}, state, { filter: filter }); }; /** * 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 */ BaseListAdapter.prototype.handleListReadOnly = function (payload, state) { return Object.assign({}, state, { readOnly: payload, toolbar: makeToolbarList(payload, state.items.length > 0) }); }; /** * 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 * } */ BaseListAdapter.prototype.getSelectors = function () { return { getItems: function (state) { return state.items; }, getStatus: function (state) { return state.status; }, getFilter: function (state) { return state.filter; }, getToolbar: function (state) { return state.toolbar; }, getTotalItems: function (state) { return state.totalItems; } }; }; return BaseListAdapter; }()); exports.BaseListAdapter = BaseListAdapter; function makeToolbarList(readOnly, enable) { var toolbar = { print: { enable: enable, visible: true }, export: { enable: enable, visible: true } }; if (!readOnly) { toolbar["new"] = { enable: true, visible: true, estilo: "fa fa-database" }; } return toolbar; } exports.makeToolbarList = makeToolbarList; /** Función para crear un objeto de tipo BaseListAdapter */ function createBaseListAdapter() { return new BaseListAdapter(); } exports.createBaseListAdapter = createBaseListAdapter; //# sourceMappingURL=base-list.models.js.map