UNPKG

@covalent/core

Version:

Core Teradata UI Platform for layouts, icons, custom components and themes. This should be added as a dependency for any project that wants to use layouts, icons and themes for Angular Material.

66 lines 8.26 kB
import { Injectable, Optional } from '@angular/core'; import { HttpClient, HttpRequest, HttpEventType, HttpHeaders, HttpParams, } from '@angular/common/http'; import { Subject } from 'rxjs'; import { tap } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; export class TdFileService { _http; _progressSubject = new Subject(); _progressObservable; /** * Gets progress observable to keep track of the files being uploaded. * Needs to be supported by backend. */ get progress() { return this._progressObservable; } /** * Creates a new instance * @param _http the http client instance * @breaking-change 3.0.0 remove 'Optional' decorator once the legay upload method is removed */ constructor(_http) { this._http = _http; this._progressObservable = this._progressSubject.asObservable(); } /** * Uploads a file to a URL. */ send(url, method, body, { headers, params } = {}) { if (!this._http) { throw new Error('The HttpClient module needs to be imported at root module level'); } const req = new HttpRequest(method.toUpperCase(), url, body, { reportProgress: true, headers: new HttpHeaders(headers || {}), params: new HttpParams({ fromObject: params || {} }), }); return this._http .request(req) .pipe(tap((event) => this.handleEvent(event))); } handleEvent(event) { switch (event.type) { case HttpEventType.Sent: this._progressSubject.next(0); break; case HttpEventType.UploadProgress: this._progressSubject.next(Math.round((100 * event.loaded) / (event.total ?? 0))); break; case HttpEventType.Response: this._progressSubject.next(100); break; default: break; } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdFileService, deps: [{ token: i1.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdFileService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TdFileService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.HttpClient, decorators: [{ type: Optional }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2ZpbGUvc3JjL3NlcnZpY2VzL2ZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFdBQVcsRUFFWCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFVBQVUsR0FDWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFRckMsTUFBTSxPQUFPLGFBQWE7SUFpQmlCO0lBaEJqQyxnQkFBZ0IsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUMxRCxtQkFBbUIsQ0FBcUI7SUFFaEQ7OztPQUdHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUF5QyxLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUNGLEdBQVcsRUFDWCxNQUFjLEVBQ2QsSUFBcUIsRUFDckIsRUFBRSxPQUFPLEVBQUUsTUFBTSxLQUFvQixFQUFFO1FBRXZDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FDYixpRUFBaUUsQ0FDbEUsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBaUMsSUFBSSxXQUFXLENBQ3ZELE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFDcEIsR0FBRyxFQUNILElBQUksRUFDSjtZQUNFLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sRUFBRSxJQUFJLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLENBQUM7U0FDckQsQ0FDRixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSzthQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUM7YUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVPLFdBQVcsQ0FBVSxLQUFtQjtRQUM5QyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixLQUFLLGFBQWEsQ0FBQyxJQUFJO2dCQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixNQUFNO1lBQ1IsS0FBSyxhQUFhLENBQUMsY0FBYztnQkFDL0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3RELENBQUM7Z0JBQ0YsTUFBTTtZQUNSLEtBQUssYUFBYSxDQUFDLFFBQVE7Z0JBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hDLE1BQU07WUFDUjtnQkFDRSxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7dUdBbEVVLGFBQWE7MkdBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVTs7MEJBa0JJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEV2ZW50VHlwZSxcbiAgSHR0cEhlYWRlcnMsXG4gIEh0dHBQYXJhbXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBJVXBsb2FkRXh0cmFzIHtcbiAgaGVhZGVycz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gIHBhcmFtcz86IHsgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGRGaWxlU2VydmljZSB7XG4gIHByaXZhdGUgX3Byb2dyZXNzU3ViamVjdDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIF9wcm9ncmVzc09ic2VydmFibGU6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICAvKipcbiAgICogR2V0cyBwcm9ncmVzcyBvYnNlcnZhYmxlIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGZpbGVzIGJlaW5nIHVwbG9hZGVkLlxuICAgKiBOZWVkcyB0byBiZSBzdXBwb3J0ZWQgYnkgYmFja2VuZC5cbiAgICovXG4gIGdldCBwcm9ncmVzcygpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9wcm9ncmVzc09ic2VydmFibGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX2h0dHAgdGhlIGh0dHAgY2xpZW50IGluc3RhbmNlXG4gICAqIEBicmVha2luZy1jaGFuZ2UgMy4wLjAgcmVtb3ZlICdPcHRpb25hbCcgZGVjb3JhdG9yIG9uY2UgdGhlIGxlZ2F5IHVwbG9hZCBtZXRob2QgaXMgcmVtb3ZlZFxuICAgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfaHR0cDogSHR0cENsaWVudCkge1xuICAgIHRoaXMuX3Byb2dyZXNzT2JzZXJ2YWJsZSA9IHRoaXMuX3Byb2dyZXNzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWRzIGEgZmlsZSB0byBhIFVSTC5cbiAgICovXG4gIHNlbmQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgYm9keTogRmlsZSB8IEZvcm1EYXRhLFxuICAgIHsgaGVhZGVycywgcGFyYW1zIH06IElVcGxvYWRFeHRyYXMgPSB7fVxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKCF0aGlzLl9odHRwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGUgSHR0cENsaWVudCBtb2R1bGUgbmVlZHMgdG8gYmUgaW1wb3J0ZWQgYXQgcm9vdCBtb2R1bGUgbGV2ZWwnXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCByZXE6IEh0dHBSZXF1ZXN0PEZpbGUgfCBGb3JtRGF0YT4gPSBuZXcgSHR0cFJlcXVlc3QoXG4gICAgICBtZXRob2QudG9VcHBlckNhc2UoKSxcbiAgICAgIHVybCxcbiAgICAgIGJvZHksXG4gICAgICB7XG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoaGVhZGVycyB8fCB7fSksXG4gICAgICAgIHBhcmFtczogbmV3IEh0dHBQYXJhbXMoeyBmcm9tT2JqZWN0OiBwYXJhbXMgfHwge30gfSksXG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgLnJlcXVlc3QocmVxKVxuICAgICAgLnBpcGUodGFwKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHRoaXMuaGFuZGxlRXZlbnQoZXZlbnQpKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUV2ZW50PFQgPSBhbnk+KGV2ZW50OiBIdHRwRXZlbnQ8VD4pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5TZW50OlxuICAgICAgICB0aGlzLl9wcm9ncmVzc1N1YmplY3QubmV4dCgwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzU3ViamVjdC5uZXh0KFxuICAgICAgICAgIE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyAoZXZlbnQudG90YWwgPz8gMCkpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICB0aGlzLl9wcm9ncmVzc1N1YmplY3QubmV4dCgxMDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19