UNPKG

vibe-sharedui

Version:

EuroMonitor EMI vibe models

222 lines 17.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { HttpClient, HttpParams } from '@angular/common/http'; import { BehaviorSubject, throwError } from 'rxjs'; import { catchError, finalize, retry } from 'rxjs/operators'; import { Inject } from '@angular/core'; /** * @record */ export function Filter() { } /** * @abstract * @template T */ var EntityService = /** @class */ (function () { function EntityService(httpClient, environment) { this.httpClient = httpClient; this.loadingSubject = new BehaviorSubject(false); this.loading$ = this.loadingSubject.asObservable(); this.baseUrl = environment.API_BASE_URL; } /** * @param {?} id * @return {?} */ EntityService.prototype.getById = /** * @param {?} id * @return {?} */ function (id) { // this.loadingSubject.next(true); return this.httpClient.get(this.baseUrl + "/" + this.entityPath + "/" + id).pipe(catchError(this.handleError)); }; // findAll(filter: Filter, order = 'DESC', skip = 0, take = 100): Observable<IPagination<T>> | Observable<never> { // findAll(filter: Filter, order = 'DESC', skip = 0, take = 100): Observable<IPagination<T>> | Observable<never> { /** * @param {?} filter * @param {?=} order * @param {?=} skip * @param {?=} take * @return {?} */ EntityService.prototype.findAll = // findAll(filter: Filter, order = 'DESC', skip = 0, take = 100): Observable<IPagination<T>> | Observable<never> { /** * @param {?} filter * @param {?=} order * @param {?=} skip * @param {?=} take * @return {?} */ function (filter, order, skip, take) { var _this = this; if (order === void 0) { order = 'DESC'; } if (skip === void 0) { skip = 0; } if (take === void 0) { take = 100; } this.loadingSubject.next(true); return this.httpClient .get(this.baseUrl + "/" + this.entityPath, { params: new HttpParams() .set('filter', 'filter TODO') .set('order', order) .set('skip', skip.toString()) .set('take', take.toString()), }) .pipe(retry(3), // retry a failed request up to 3 times catchError(this.handleError), finalize((/** * @return {?} */ function () { return _this.loadingSubject.next(false); }))); }; // getAll(): Observable<IPagination<T>> { // getAll(): Observable<IPagination<T>> { /** * @return {?} */ EntityService.prototype.getAll = // getAll(): Observable<IPagination<T>> { /** * @return {?} */ function () { var _this = this; this.loadingSubject.next(true); return this.httpClient.get(this.baseUrl + "/" + this.entityPath).pipe(retry(3), // retry a failed request up to 3 times catchError(this.handleError), finalize((/** * @return {?} */ function () { return _this.loadingSubject.next(false); }))); }; /** * @param {?} id * @return {?} */ EntityService.prototype.delete = /** * @param {?} id * @return {?} */ function (id) { var _this = this; this.loadingSubject.next(true); return this.httpClient.delete(this.baseUrl + "/" + this.entityPath + "/" + id).pipe(catchError(this.handleError), finalize((/** * @return {?} */ function () { return _this.loadingSubject.next(false); }))); }; /** * @param {?} entity * @return {?} */ EntityService.prototype.post = /** * @param {?} entity * @return {?} */ function (entity) { var _this = this; this.loadingSubject.next(true); return this.httpClient.post(this.baseUrl + "/" + this.entityPath, entity).pipe(catchError(this.handleError), finalize((/** * @return {?} */ function () { return _this.loadingSubject.next(false); }))); }; /** * @param {?} id * @param {?} entity * @return {?} */ EntityService.prototype.put = /** * @param {?} id * @param {?} entity * @return {?} */ function (id, entity) { var _this = this; console.log(entity); this.loadingSubject.next(true); return this.httpClient.put(this.baseUrl + "/" + this.entityPath + "/" + id, entity).pipe(catchError(this.handleError), finalize((/** * @return {?} */ function () { return _this.loadingSubject.next(false); }))); }; /** * @protected * @param {?} error * @return {?} */ EntityService.prototype.handleError = /** * @protected * @param {?} error * @return {?} */ function (error) { // in a real world app, we may send the server to some remote logging infrastructure // instead of just logging it to the console /** @type {?} */ var errorMessage; if (typeof error === 'string') { errorMessage = error; } else { if (error.error instanceof ErrorEvent) { // A client-side or network error occurred. Handle it accordingly. errorMessage = "An error occurred: " + error.error.message; } else { // The backend returned an unsuccessful response code. // The response body may contain clues as to what went wrong, errorMessage = "Backend returned code " + error.status + ", with body " + error.message; } } console.error(error); // return an ErrorObservable with a user-facing error message return throwError(errorMessage); }; /** * @protected * @param {?} body * @return {?} */ EntityService.prototype.convertToJson = /** * @protected * @param {?} body * @return {?} */ function (body) { return body; }; /** @nocollapse */ EntityService.ctorParameters = function () { return [ { type: HttpClient }, { type: undefined, decorators: [{ type: Inject, args: ['environment',] }] } ]; }; return EntityService; }()); export { EntityService }; if (false) { /** * @type {?} * @protected */ EntityService.prototype.baseUrl; /** * @type {?} * @protected */ EntityService.prototype.loadingSubject; /** @type {?} */ EntityService.prototype.loading$; /** * @type {?} * @protected */ EntityService.prototype.entityPath; /** * @type {?} * @protected */ EntityService.prototype.httpClient; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly92aWJlLXNoYXJlZHVpLyIsInNvdXJjZXMiOlsibGliL2NvbnRhaW5lcnMvZW50aXR5L2VudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRXZDLDRCQUVDOzs7OztBQUVEO0lBT0UsdUJBQXNCLFVBQXNCLEVBQXlCLFdBQVc7UUFBMUQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxsQyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hELGFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBS25ELElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztJQUMxQyxDQUFDOzs7OztJQUVELCtCQUFPOzs7O0lBQVAsVUFBUSxFQUFtQjtRQUN6QixrQ0FBa0M7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBTyxJQUFJLENBQUMsT0FBTyxTQUFJLElBQUksQ0FBQyxVQUFVLFNBQUksRUFBSSxDQUFDLENBQUMsSUFBSSxDQUM1RSxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUU3QixDQUFDO0lBQ0osQ0FBQztJQUVDLGtIQUFrSDs7Ozs7Ozs7O0lBQ2xILCtCQUFPOzs7Ozs7Ozs7SUFBUCxVQUFRLE1BQWMsRUFBRSxLQUFjLEVBQUUsSUFBUSxFQUFFLElBQVU7UUFBNUQsaUJBZUQ7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Ozs7SUFFckQsbUNBQXNDOzs7OztJQUUxQixtQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5Lm1vZGVsJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBJUGFnaW5hdGlvbiB9IGZyb20gJy4vcGFnaW5hdGlvbic7XHJcbmltcG9ydCB7IEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xyXG4gIFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eVNlcnZpY2U8VCBleHRlbmRzIEVudGl0eT4ge1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBiYXNlVXJsOiBhbnk7XHJcbiAgcHJvdGVjdGVkIGxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIGxvYWRpbmckID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGVudGl0eVBhdGg6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQpIHtcclxuICAgIHRoaXMuYmFzZVVybCA9IGVudmlyb25tZW50LkFQSV9CQVNFX1VSTDtcclxuICB9XHJcblxyXG4gIGdldEJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZykge1xyXG4gICAgLy8gdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VD4oYCR7dGhpcy5iYXNlVXJsfS8ke3RoaXMuZW50aXR5UGF0aH0vJHtpZH1gKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLFxyXG4gICAgICAvLyBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gICAgLy8gZmluZEFsbChmaWx0ZXI6IEZpbHRlciwgb3JkZXIgPSAnREVTQycsIHNraXAgPSAwLCB0YWtlID0gMTAwKTogT2JzZXJ2YWJsZTxJUGFnaW5hdGlvbjxUPj4gfCBPYnNlcnZhYmxlPG5ldmVyPiB7XHJcbiAgICBmaW5kQWxsKGZpbHRlcjogRmlsdGVyLCBvcmRlciA9ICdERVNDJywgc2tpcCA9IDAsIHRha2UgPSAxMDApOiBPYnNlcnZhYmxlPFRbXT4gfCBPYnNlcnZhYmxlPG5ldmVyPiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5nZXQ8VFtdPihgJHt0aGlzLmJhc2VVcmx9LyR7dGhpcy5lbnRpdHlQYXRofWAsIHtcclxuICAgICAgICBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKClcclxuICAgICAgICAgIC5zZXQoJ2ZpbHRlcicsICdmaWx0ZXIgVE9ETycpXHJcbiAgICAgICAgICAuc2V0KCdvcmRlcicsIG9yZGVyKVxyXG4gICAgICAgICAgLnNldCgnc2tpcCcsIHNraXAudG9TdHJpbmcoKSlcclxuICAgICAgICAgIC5zZXQoJ3Rha2UnLCB0YWtlLnRvU3RyaW5nKCkpLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICByZXRyeSgzKSwgLy8gcmV0cnkgYSBmYWlsZWQgcmVxdWVzdCB1cCB0byAzIHRpbWVzXHJcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8vIGdldEFsbCgpOiBPYnNlcnZhYmxlPElQYWdpbmF0aW9uPFQ+PiB7XHJcbiAgZ2V0QWxsKCk6IE9ic2VydmFibGU8VFtdPiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxUW10+KGAke3RoaXMuYmFzZVVybH0vJHt0aGlzLmVudGl0eVBhdGh9YCkucGlwZShcclxuICAgICAgcmV0cnkoMyksIC8vIHJldHJ5IGEgZmFpbGVkIHJlcXVlc3QgdXAgdG8gMyB0aW1lc1xyXG4gICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoaWQ6IG51bWJlciB8IHN0cmluZykge1xyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGUoYCR7dGhpcy5iYXNlVXJsfS8ke3RoaXMuZW50aXR5UGF0aH0vJHtpZH1gKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwb3N0KGVudGl0eTogVCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KGAke3RoaXMuYmFzZVVybH0vJHt0aGlzLmVudGl0eVBhdGh9YCwgZW50aXR5KS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdXQoaWQ6IG51bWJlciB8IHN0cmluZywgZW50aXR5OiBUKSB7XHJcbiAgICBjb25zb2xlLmxvZyhlbnRpdHkpO1xyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQoYCR7dGhpcy5iYXNlVXJsfS8ke3RoaXMuZW50aXR5UGF0aH0vJHtpZH1gLCBlbnRpdHkpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSkpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBoYW5kbGVFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIC8vIGluIGEgcmVhbCB3b3JsZCBhcHAsIHdlIG1heSBzZW5kIHRoZSBzZXJ2ZXIgdG8gc29tZSByZW1vdGUgbG9nZ2luZyBpbmZyYXN0cnVjdHVyZVxyXG4gICAgLy8gaW5zdGVhZCBvZiBqdXN0IGxvZ2dpbmcgaXQgdG8gdGhlIGNvbnNvbGVcclxuICAgIGxldCBlcnJvck1lc3NhZ2U6IHN0cmluZztcclxuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICAgIC8vIEEgY2xpZW50LXNpZGUgb3IgbmV0d29yayBlcnJvciBvY2N1cnJlZC4gSGFuZGxlIGl0IGFjY29yZGluZ2x5LlxyXG4gICAgICAgIGVycm9yTWVzc2FnZSA9IGBBbiBlcnJvciBvY2N1cnJlZDogJHtlcnJvci5lcnJvci5tZXNzYWdlfWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gVGhlIGJhY2tlbmQgcmV0dXJuZWQgYW4gdW5zdWNjZXNzZnVsIHJlc3BvbnNlIGNvZGUuXHJcbiAgICAgICAgLy8gVGhlIHJlc3BvbnNlIGJvZHkgbWF5IGNvbnRhaW4gY2x1ZXMgYXMgdG8gd2hhdCB3ZW50IHdyb25nLFxyXG4gICAgICAgIGVycm9yTWVzc2FnZSA9IGBCYWNrZW5kIHJldHVybmVkIGNvZGUgJHtlcnJvci5zdGF0dXN9LCB3aXRoIGJvZHkgJHtlcnJvci5tZXNzYWdlfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgLy8gcmV0dXJuIGFuIEVycm9yT2JzZXJ2YWJsZSB3aXRoIGEgdXNlci1mYWNpbmcgZXJyb3IgbWVzc2FnZVxyXG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjb252ZXJ0VG9Kc29uKGJvZHk6IGFueSkge1xyXG4gIFxyXG4gICAgcmV0dXJuIGJvZHk7XHJcbiAgfVxyXG59XHJcbiJdfQ==