bitfront-library
Version:
Angular CLI project with components and classes used by other Angular projects of the BIT foundation.
211 lines • 9.44 kB
JavaScript
;
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