@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
69 lines • 8.19 kB
JavaScript
import { Injectable } from '@angular/core';
import { TaskContentService } from './task-content.service';
import { ReplaySubject } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "./field-converter.service";
import * as i2 from "../../snack-bar/services/snack-bar.service";
import * as i3 from "@ngx-translate/core";
import * as i4 from "../../logger/services/logger.service";
/**
* Provides an implementation of the {@link TaskContentService} abstract class that allows only a
* single call to the setter of the managed Task object.
*
* If you want to use an unlimited number of calls use {@link UnlimitedTaskContentService} instead.
*/
export class SingleTaskContentService extends TaskContentService {
/**
* Acts as the underling stream for notifications on Task changes.
*
* `bufferSize` of the `ReplaySubject` instance is set to 1.
*/
_task$;
constructor(_fieldConverterService, _snackBarService, _translate, _logger, _injector) {
super(_fieldConverterService, _snackBarService, _translate, _logger);
this._task$ = new ReplaySubject(1);
}
/**
* @returns the Task object if set and `undefined` otherwise
*/
get task() {
return this._task;
}
/**
* The task can be only set once. All other call do nothing and log an error.
* @param task the Task that owns the content managed by this service
*/
set task(task) {
if (!this._task$.closed) {
this._task = task;
this._task$.next(task);
this._task$.complete();
}
else {
this._logger.error('TaskContentService can have it\'s task set only once');
}
}
/**
* Stream returns a single {@link Task} object and then completes.
*
* Use [task]{@link TaskContentService#task} setter method to set the Task.
*/
get task$() {
return this._task$.asObservable();
}
/**
* Completes the underling stream.
*/
ngOnDestroy() {
super.ngOnDestroy();
if (!this._task$.closed) {
this._task$.complete();
}
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SingleTaskContentService, deps: [{ token: i1.FieldConverterService }, { token: i2.SnackBarService }, { token: i3.TranslateService }, { token: i4.LoggerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SingleTaskContentService });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SingleTaskContentService, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.FieldConverterService }, { type: i2.SnackBarService }, { type: i3.TranslateService }, { type: i4.LoggerService }, { type: i0.Injector }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXRhc2stY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi90YXNrLWNvbnRlbnQvc2VydmljZXMvc2luZ2xlLXRhc2stY29udGVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSzFELE9BQU8sRUFBYSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUcvQzs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxrQkFBa0I7SUFFNUQ7Ozs7T0FJRztJQUNPLE1BQU0sQ0FBc0I7SUFFdEMsWUFBWSxzQkFBNkMsRUFDN0MsZ0JBQWlDLEVBQ2pDLFVBQTRCLEVBQzVCLE9BQXNCLEVBQ3RCLFNBQW1CO1FBQzNCLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksSUFBSSxDQUFDLElBQVU7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMxQjthQUFNO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztTQUM5RTtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO3dHQXhEUSx3QkFBd0I7NEdBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Rhc2tDb250ZW50U2VydmljZX0gZnJvbSAnLi90YXNrLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQge0ZpZWxkQ29udmVydGVyU2VydmljZX0gZnJvbSAnLi9maWVsZC1jb252ZXJ0ZXIuc2VydmljZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUYXNrfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3Rhc2snO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSB7QGxpbmsgVGFza0NvbnRlbnRTZXJ2aWNlfSBhYnN0cmFjdCBjbGFzcyB0aGF0IGFsbG93cyBvbmx5IGFcbiAqIHNpbmdsZSBjYWxsIHRvIHRoZSBzZXR0ZXIgb2YgdGhlIG1hbmFnZWQgVGFzayBvYmplY3QuXG4gKlxuICogSWYgeW91IHdhbnQgdG8gdXNlIGFuIHVubGltaXRlZCBudW1iZXIgb2YgY2FsbHMgdXNlIHtAbGluayBVbmxpbWl0ZWRUYXNrQ29udGVudFNlcnZpY2V9IGluc3RlYWQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTaW5nbGVUYXNrQ29udGVudFNlcnZpY2UgZXh0ZW5kcyBUYXNrQ29udGVudFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogQWN0cyBhcyB0aGUgdW5kZXJsaW5nIHN0cmVhbSBmb3Igbm90aWZpY2F0aW9ucyBvbiBUYXNrIGNoYW5nZXMuXG4gICAgICpcbiAgICAgKiBgYnVmZmVyU2l6ZWAgb2YgdGhlIGBSZXBsYXlTdWJqZWN0YCBpbnN0YW5jZSBpcyBzZXQgdG8gMS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3Rhc2skOiBSZXBsYXlTdWJqZWN0PFRhc2s+O1xuXG4gICAgY29uc3RydWN0b3IoX2ZpZWxkQ29udmVydGVyU2VydmljZTogRmllbGRDb252ZXJ0ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIF9zbmFja0JhclNlcnZpY2U6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgX2luamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcihfZmllbGRDb252ZXJ0ZXJTZXJ2aWNlLCBfc25hY2tCYXJTZXJ2aWNlLCBfdHJhbnNsYXRlLCBfbG9nZ2VyKTtcbiAgICAgICAgdGhpcy5fdGFzayQgPSBuZXcgUmVwbGF5U3ViamVjdDxUYXNrPigxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgVGFzayBvYmplY3QgaWYgc2V0IGFuZCBgdW5kZWZpbmVkYCBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBnZXQgdGFzaygpOiBUYXNrIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHRhc2sgY2FuIGJlIG9ubHkgc2V0IG9uY2UuIEFsbCBvdGhlciBjYWxsIGRvIG5vdGhpbmcgYW5kIGxvZyBhbiBlcnJvci5cbiAgICAgKiBAcGFyYW0gdGFzayB0aGUgVGFzayB0aGF0IG93bnMgdGhlIGNvbnRlbnQgbWFuYWdlZCBieSB0aGlzIHNlcnZpY2VcbiAgICAgKi9cbiAgICBzZXQgdGFzayh0YXNrOiBUYXNrKSB7XG4gICAgICAgIGlmICghdGhpcy5fdGFzayQuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLl90YXNrID0gdGFzaztcbiAgICAgICAgICAgIHRoaXMuX3Rhc2skLm5leHQodGFzayk7XG4gICAgICAgICAgICB0aGlzLl90YXNrJC5jb21wbGV0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUYXNrQ29udGVudFNlcnZpY2UgY2FuIGhhdmUgaXRcXCdzIHRhc2sgc2V0IG9ubHkgb25jZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RyZWFtIHJldHVybnMgYSBzaW5nbGUge0BsaW5rIFRhc2t9IG9iamVjdCBhbmQgdGhlbiBjb21wbGV0ZXMuXG4gICAgICpcbiAgICAgKiBVc2UgW3Rhc2tde0BsaW5rIFRhc2tDb250ZW50U2VydmljZSN0YXNrfSBzZXR0ZXIgbWV0aG9kIHRvIHNldCB0aGUgVGFzay5cbiAgICAgKi9cbiAgICBnZXQgdGFzayQoKTogT2JzZXJ2YWJsZTxUYXNrPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXNrJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZXMgdGhlIHVuZGVybGluZyBzdHJlYW0uXG4gICAgICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIGlmICghdGhpcy5fdGFzayQuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLl90YXNrJC5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19