UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

43 lines 6.55 kB
import { of } from 'rxjs'; import { PaginationParams } from '../../pagination/pagination-params'; /** * A utility class that mock any pageable endpoint that takes one parameter */ export class MockEndpoint { /** * The content that is queries by the requests. */ content = []; /** * @param filter - a filtering argument. This mock ignores it. * @param params - pagination configuration. The mock extracts the `size` and `page` property to format the result properly. * @returns an `Observable` containing a properly formatted {@link Page} object. * * The `pagination` attributes are filled according to the request and the endpoints [content]{@link MockEndpoint#content}. * * If an empty {@link Page} should be returned the returned object has its `content` attribute set to some object * (to match backend and resource service behavior). * Otherwise the `content` attribute contains the corresponding subsection fo the [content]{@link MockEndpoint#content} array. */ search(filter, params) { const rp = this.getPagination(params); const result = this.content.slice(rp.pageSize * rp.pageNumber, rp.pageSize * (rp.pageNumber + 1)); const resultPage = { pagination: { size: result.length, totalElements: this.content.length, totalPages: Math.ceil(this.content.length / rp.pageSize), number: rp.pageNumber } }; Object.assign(resultPage, { content: result.length !== 0 ? result : {} }); return of(resultPage); } getPagination(params) { return { pageSize: parseInt(params.get(PaginationParams.PAGE_SIZE), 10), pageNumber: parseInt(params.get(PaginationParams.PAGE_NUMBER), 10) }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1lbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdXRpbGl0eS90ZXN0cy9tb2Nrcy9tb2NrLWVuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFPcEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUVyQjs7T0FFRztJQUNILE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBRTVCOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsTUFBZSxFQUFFLE1BQWtCO1FBQ3RDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEcsTUFBTSxVQUFVLEdBQUc7WUFDZixVQUFVLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNuQixhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUN4RCxNQUFNLEVBQUUsRUFBRSxDQUFDLFVBQVU7YUFDeEI7U0FDSixDQUFDO1FBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztRQUN4RSxPQUFPLEVBQUUsQ0FBQyxVQUEyQixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFrQjtRQUNwQyxPQUFPO1lBQ0gsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM5RCxVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ3JFLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQYWdlfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3BhZ2UnO1xuaW1wb3J0IHtQYWdpbmF0aW9uUGFyYW1zfSBmcm9tICcuLi8uLi9wYWdpbmF0aW9uL3BhZ2luYXRpb24tcGFyYW1zJztcblxuaW50ZXJmYWNlIFJlcXVlc3RlZFBhZ2luYXRpb24ge1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgcGFnZU51bWJlcjogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgdXRpbGl0eSBjbGFzcyB0aGF0IG1vY2sgYW55IHBhZ2VhYmxlIGVuZHBvaW50IHRoYXQgdGFrZXMgb25lIHBhcmFtZXRlclxuICovXG5leHBvcnQgY2xhc3MgTW9ja0VuZHBvaW50IHtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjb250ZW50IHRoYXQgaXMgcXVlcmllcyBieSB0aGUgcmVxdWVzdHMuXG4gICAgICovXG4gICAgY29udGVudDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGZpbHRlciAtIGEgZmlsdGVyaW5nIGFyZ3VtZW50LiBUaGlzIG1vY2sgaWdub3JlcyBpdC5cbiAgICAgKiBAcGFyYW0gcGFyYW1zIC0gcGFnaW5hdGlvbiBjb25maWd1cmF0aW9uLiBUaGUgbW9jayBleHRyYWN0cyB0aGUgYHNpemVgIGFuZCBgcGFnZWAgcHJvcGVydHkgdG8gZm9ybWF0IHRoZSByZXN1bHQgcHJvcGVybHkuXG4gICAgICogQHJldHVybnMgYW4gYE9ic2VydmFibGVgIGNvbnRhaW5pbmcgYSBwcm9wZXJseSBmb3JtYXR0ZWQge0BsaW5rIFBhZ2V9IG9iamVjdC5cbiAgICAgKlxuICAgICAqIFRoZSBgcGFnaW5hdGlvbmAgYXR0cmlidXRlcyBhcmUgZmlsbGVkIGFjY29yZGluZyB0byB0aGUgcmVxdWVzdCBhbmQgdGhlIGVuZHBvaW50cyBbY29udGVudF17QGxpbmsgTW9ja0VuZHBvaW50I2NvbnRlbnR9LlxuICAgICAqXG4gICAgICogSWYgYW4gZW1wdHkge0BsaW5rIFBhZ2V9IHNob3VsZCBiZSByZXR1cm5lZCB0aGUgcmV0dXJuZWQgb2JqZWN0IGhhcyBpdHMgYGNvbnRlbnRgIGF0dHJpYnV0ZSBzZXQgdG8gc29tZSBvYmplY3RcbiAgICAgKiAodG8gbWF0Y2ggYmFja2VuZCBhbmQgcmVzb3VyY2Ugc2VydmljZSBiZWhhdmlvcikuXG4gICAgICogT3RoZXJ3aXNlIHRoZSBgY29udGVudGAgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSBjb3JyZXNwb25kaW5nIHN1YnNlY3Rpb24gZm8gdGhlIFtjb250ZW50XXtAbGluayBNb2NrRW5kcG9pbnQjY29udGVudH0gYXJyYXkuXG4gICAgICovXG4gICAgc2VhcmNoKGZpbHRlcjogdW5rbm93biwgcGFyYW1zOiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdlPHVua25vd24+PiB7XG4gICAgICAgIGNvbnN0IHJwID0gdGhpcy5nZXRQYWdpbmF0aW9uKHBhcmFtcyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb250ZW50LnNsaWNlKHJwLnBhZ2VTaXplICogcnAucGFnZU51bWJlciwgcnAucGFnZVNpemUgKiAocnAucGFnZU51bWJlciArIDEpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0UGFnZSA9IHtcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgICAgICBzaXplOiByZXN1bHQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIHRvdGFsRWxlbWVudHM6IHRoaXMuY29udGVudC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgdG90YWxQYWdlczogTWF0aC5jZWlsKHRoaXMuY29udGVudC5sZW5ndGggLyBycC5wYWdlU2l6ZSksXG4gICAgICAgICAgICAgICAgbnVtYmVyOiBycC5wYWdlTnVtYmVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0UGFnZSwge2NvbnRlbnQ6IHJlc3VsdC5sZW5ndGggIT09IDAgPyByZXN1bHQgOiB7fX0pO1xuICAgICAgICByZXR1cm4gb2YocmVzdWx0UGFnZSBhcyBQYWdlPHVua25vd24+KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhZ2luYXRpb24ocGFyYW1zOiBIdHRwUGFyYW1zKTogUmVxdWVzdGVkUGFnaW5hdGlvbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYWdlU2l6ZTogcGFyc2VJbnQocGFyYW1zLmdldChQYWdpbmF0aW9uUGFyYW1zLlBBR0VfU0laRSksIDEwKSxcbiAgICAgICAgICAgIHBhZ2VOdW1iZXI6IHBhcnNlSW50KHBhcmFtcy5nZXQoUGFnaW5hdGlvblBhcmFtcy5QQUdFX05VTUJFUiksIDEwKVxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==