UNPKG

ngx-admin-lte

Version:

AdminLTE theme for angular

101 lines 14.4 kB
import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; import { map, catchError } from 'rxjs/operators'; import { Observable } from 'rxjs'; let RestService = class RestService { constructor(http) { this.http = http; this.modelName = 'to-configure'; this.headers = new HttpHeaders({ 'Content-Type': 'application/json', 'Accept': 'application/json' }); } setApiUrl(url) { this.serverWithApiUrl = url; } // HELPERS getAllFromLS(maxtime = 0) { const json = localStorage.getItem('rest_all_' + this.modelName); if (json) { const obj = JSON.parse(json); if (obj && (obj.date < (Date.now() - maxtime))) { return obj; } } } getFromCache(id) { if (this.lastGetAll) { return this.lastGetAll.find((unit) => unit.id === id); } else { return null; } } getActionUrl() { return this.serverWithApiUrl + this.modelName + '/'; } // REST functions getAll() { return this.http.get(this.getActionUrl(), { headers: this.headers }) .pipe(map((response) => { // getting an array having the same name as the model const data = response.body[this.modelName]; // transforming the array from indexed to associative const tab = data.records.map((elem) => { const unit = {}; // using the columns order and number to rebuild the object data.columns.forEach((champ, index) => { unit[champ] = elem[index]; }); return unit; }); this.lastGetAll = tab; const obj = { data: tab, date: Date.now() }; localStorage.setItem('rest_all_' + this.modelName, JSON.stringify(obj)); return tab; }), catchError(this.handleError)); } get(id) { return this.http.get(this.getActionUrl() + id, { headers: this.headers }) .pipe(map((response) => { const data = response.body; this.lastGet = data; return data; }), catchError(this.handleError)); } add(item) { const toAdd = JSON.stringify(item); return this.http.post(this.getActionUrl(), toAdd, { headers: this.headers }) .pipe(map((response) => response.body), catchError(this.handleError)); } addAll(tab) { const toAdd = JSON.stringify(tab); return this.http.post(this.getActionUrl(), toAdd, { headers: this.headers }) .pipe(map((response) => response.body), catchError(this.handleError)); } update(id, itemToUpdate) { return this.http.put(this.getActionUrl() + id, JSON.stringify(itemToUpdate), { headers: this.headers }) .pipe(map((response) => response.body), catchError(this.handleError)); } delete(id) { return this.http.delete(this.getActionUrl() + id, { headers: this.headers }) .pipe(catchError(this.handleError)); } handleError(error) { console.error(error); return Observable.throw(error.body || 'Server error'); } }; RestService.ctorParameters = () => [ { type: HttpClient } ]; RestService = tslib_1.__decorate([ Injectable() ], RestService); export { RestService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFkbWluLWx0ZS8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3Jlc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFHdEMsSUFBYSxXQUFXLEdBQXhCLE1BQWEsV0FBVztJQVNwQixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBRWhDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDN0IsY0FBYyxFQUFHLGtCQUFrQjtZQUNuQyxRQUFRLEVBQUUsa0JBQWtCO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxTQUFTLENBQUUsR0FBVztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0lBQzlCLENBQUM7SUFFRCxVQUFVO0lBQ0gsWUFBWSxDQUFDLE9BQU8sR0FBRyxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUUsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUUsQ0FBQztRQUNsRSxJQUFLLElBQUksRUFBRztZQUNWLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsSUFBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8s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VyxDQUFDLENBQy9CLENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQXlCO1FBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNKLENBQUE7O1lBckg2QixVQUFVOztBQVQzQixXQUFXO0lBRHZCLFVBQVUsRUFBRTtHQUNBLFdBQVcsQ0E4SHZCO1NBOUhZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlc3RTZXJ2aWNlIHtcbiAgICBwdWJsaWMgbW9kZWxOYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGhlYWRlcnM6IEh0dHBIZWFkZXJzO1xuICAgIHByaXZhdGUgc2VydmVyV2l0aEFwaVVybDogc3RyaW5nO1xuXG4gICAgLy8gY2FjaGUgZGF0YVxuICAgIHB1YmxpYyBsYXN0R2V0QWxsOiBBcnJheTxhbnk+O1xuICAgIHB1YmxpYyBsYXN0R2V0OiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICAgICAgdGhpcy5tb2RlbE5hbWUgPSAndG8tY29uZmlndXJlJztcblxuICAgICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAgJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEFwaVVybCggdXJsOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuc2VydmVyV2l0aEFwaVVybCA9IHVybDtcbiAgICB9XG5cbiAgICAvLyBIRUxQRVJTXG4gICAgcHVibGljIGdldEFsbEZyb21MUyhtYXh0aW1lID0gMCk6IEFycmF5PGFueT4ge1xuICAgICAgY29uc3QganNvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCAncmVzdF9hbGxfJyArIHRoaXMubW9kZWxOYW1lICk7XG4gICAgICBpZiAoIGpzb24gKSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UoanNvbik7XG4gICAgICAgIGlmICggb2JqICYmIChvYmouZGF0ZSA8IChEYXRlLm5vdygpIC0gbWF4dGltZSkgKSApIHtcbiAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgZ2V0RnJvbUNhY2hlKGlkKTogYW55IHtcbiAgICAgIGlmICh0aGlzLmxhc3RHZXRBbGwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdEdldEFsbC5maW5kKCh1bml0KSA9PiB1bml0LmlkID09PSBpZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFjdGlvblVybCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlcnZlcldpdGhBcGlVcmwgKyB0aGlzLm1vZGVsTmFtZSArICcvJztcbiAgICB9XG5cblxuICAgIC8vIFJFU1QgZnVuY3Rpb25zXG4gICAgcHVibGljIGdldEFsbCgpOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZ2V0QWN0aW9uVXJsKCksIHsgaGVhZGVyczogdGhpcy5oZWFkZXJzIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogIEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgIC8vIGdldHRpbmcgYW4gYXJyYXkgaGF2aW5nIHRoZSBzYW1lIG5hbWUgYXMgdGhlIG1vZGVsXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5ib2R5W3RoaXMubW9kZWxOYW1lXTtcbiAgICAgICAgICAgICAgLy8gdHJhbnNmb3JtaW5nIHRoZSBhcnJheSBmcm9tIGluZGV4ZWQgdG8gYXNzb2NpYXRpdmVcbiAgICAgICAgICAgICAgY29uc3QgdGFiID0gZGF0YS5yZWNvcmRzLm1hcCgoZWxlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuaXQgPSB7fTtcbiAgICAgICAgICAgICAgICAvLyB1c2luZyB0aGUgY29sdW1ucyBvcmRlciBhbmQgbnVtYmVyIHRvIHJlYnVpbGQgdGhlIG9iamVjdFxuICAgICAgICAgICAgICAgIGRhdGEuY29sdW1ucy5mb3JFYWNoKCAoY2hhbXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICB1bml0W2NoYW1wXSA9IGVsZW1baW5kZXhdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bml0O1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgdGhpcy5sYXN0R2V0QWxsID0gdGFiO1xuICAgICAgICAgICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgICAgICAgICAgZGF0YTogdGFiLFxuICAgICAgICAgICAgICAgIGRhdGU6IERhdGUubm93KClcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oICdyZXN0X2FsbF8nICsgdGhpcy5tb2RlbE5hbWUsIEpTT04uc3RyaW5naWZ5KG9iaikgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRhYjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZ2V0QWN0aW9uVXJsKCkgKyBpZCwgeyBoZWFkZXJzOiB0aGlzLmhlYWRlcnMgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiAgSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlLmJvZHk7XG4gICAgICAgICAgICAgIHRoaXMubGFzdEdldCA9IGRhdGE7XG4gICAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXG4gICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkKGl0ZW06IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IHRvQWRkID0gSlNPTi5zdHJpbmdpZnkoaXRlbSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2V0QWN0aW9uVXJsKCksIHRvQWRkLCB7IGhlYWRlcnM6IHRoaXMuaGVhZGVycyB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6ICBIdHRwUmVzcG9uc2U8YW55PikgPT4gcmVzcG9uc2UuYm9keSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEFsbCh0YWI6IEFycmF5PGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgY29uc3QgdG9BZGQgPSBKU09OLnN0cmluZ2lmeSh0YWIpO1xuXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5nZXRBY3Rpb25VcmwoKSwgdG9BZGQsIHsgaGVhZGVyczogdGhpcy5oZWFkZXJzIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiAgSHR0cFJlc3BvbnNlPGFueT4pID0+IHJlc3BvbnNlLmJvZHkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShpZDogbnVtYmVyLCBpdGVtVG9VcGRhdGU6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuZ2V0QWN0aW9uVXJsKCkgKyBpZCwgSlNPTi5zdHJpbmdpZnkoaXRlbVRvVXBkYXRlKSwgeyBoZWFkZXJzOiB0aGlzLmhlYWRlcnMgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiAgSHR0cFJlc3BvbnNlPGFueT4pID0+IHJlc3BvbnNlLmJvZHkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGUoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuZ2V0QWN0aW9uVXJsKCkgKyBpZCwgeyBoZWFkZXJzOiB0aGlzLmhlYWRlcnMgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogIEh0dHBSZXNwb25zZTxhbnk+KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvci5ib2R5IHx8ICdTZXJ2ZXIgZXJyb3InKTtcbiAgICB9XG59XG4iXX0=