@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
112 lines • 13.1 kB
JavaScript
import { Injectable } from '@angular/core';
import { LoadingEmitter } from '../../utility/loading-emitter';
import { TaskHandlingService } from './task-handling-service';
import * as i0 from "@angular/core";
import * as i1 from "../../task-content/services/task-content.service";
/**
* Holds information about the state of backend requests regarding a single {@link Task} instance
* held within the {@link TaskContentService}.
*
* This Service is used by many other Services that handle the necessary logic for working with a single Task on frontend.
*/
export class TaskRequestStateService extends TaskHandlingService {
_loading;
_updating;
constructor(_taskContent) {
super(_taskContent);
this._loading = new LoadingEmitter();
this._updating = new LoadingEmitter();
_taskContent.task$.subscribe(() => {
this._loading.off();
this._updating.off();
});
}
/**
* @returns whether the task is currently loading, or `undefined` if the queried task is
* not held within the injected {@link TaskContentService}.
*
* @param taskId stringId of the {@link Task} we would like to get information about.
* If no value is provided, the state of the task held in the {@link TaskContentService} will be returned.
*/
isLoading(taskId) {
if (taskId !== undefined && !this.isTaskRelevant(taskId)) {
return undefined;
}
return this._loading.isActive;
}
/**
* Changes the state of the loading indicator to `true`,
* if the task held within the injected {@link TaskContentService} has the Id that is provided as argument.
* This method does nothing otherwise.
*
* @param taskId stringId of the {@link Task} who's loading state we want to change
*/
startLoading(taskId) {
if (!this.isTaskRelevant(taskId)) {
return;
}
this._loading.on();
}
/**
* Changes the state of the loading indicator to `false`,
* if the task held within the injected {@link TaskContentService} has the Id that is provided as argument.
* This method does nothing otherwise.
*
* @param taskId stringId of the {@link Task} who's loading state we want to change
*/
stopLoading(taskId) {
if (!this.isTaskRelevant(taskId)) {
return;
}
this._loading.off();
}
/**
* @returns whether the task is currently updating it's data fields, or `undefined` if the queried task is
* not held within the injected {@link TaskContentService}.
*
* @param taskId stringId of the {@link Task} we would like to get information about.
* If no value is provided, the state of the task held in the {@link TaskContentService} will be returned.
*/
isUpdating(taskId) {
if (taskId !== undefined && !this.isTaskRelevant(taskId)) {
return undefined;
}
return this._updating.isActive;
}
/**
* Changes the state of the updating indicator to `true`,
* if the task held within the injected {@link TaskContentService} has the Id that is provided as argument.
* This method does nothing otherwise.
*
* @param taskId stringId of the {@link Task} who's loading state we want to change
*/
startUpdating(taskId) {
if (!this.isTaskRelevant(taskId)) {
return;
}
this._updating.on();
}
/**
* Changes the state of the updating indicator to `false`,
* if the task held within the injected {@link TaskContentService} has the Id that is provided as argument.
* This method does nothing otherwise.
*
* @param taskId stringId of the {@link Task} who's loading state we want to change
*/
stopUpdating(taskId) {
if (!this.isTaskRelevant(taskId)) {
return;
}
this._updating.off();
}
ngOnDestroy() {
this._loading.complete();
this._updating.complete();
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskRequestStateService, deps: [{ token: i1.TaskContentService }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskRequestStateService });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskRequestStateService, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.TaskContentService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1yZXF1ZXN0LXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Rhc2svc2VydmljZXMvdGFzay1yZXF1ZXN0LXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7OztBQUU1RDs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFFbEQsUUFBUSxDQUFpQjtJQUN6QixTQUFTLENBQWlCO0lBRXBDLFlBQVksWUFBZ0M7UUFDeEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDdEMsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxTQUFTLENBQUMsTUFBZTtRQUM1QixJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RELE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksWUFBWSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVyxDQUFDLE1BQWM7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUFDLE1BQWU7UUFDN0IsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RCxPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGFBQWEsQ0FBQyxNQUFjO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFlBQVksQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQzt3R0F0R1EsdUJBQXVCOzRHQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvYWRpbmdFbWl0dGVyfSBmcm9tICcuLi8uLi91dGlsaXR5L2xvYWRpbmctZW1pdHRlcic7XG5pbXBvcnQge1Rhc2tDb250ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay1jb250ZW50L3NlcnZpY2VzL3Rhc2stY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7VGFza0hhbmRsaW5nU2VydmljZX0gZnJvbSAnLi90YXNrLWhhbmRsaW5nLXNlcnZpY2UnO1xuXG4vKipcbiAqIEhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBvZiBiYWNrZW5kIHJlcXVlc3RzIHJlZ2FyZGluZyBhIHNpbmdsZSB7QGxpbmsgVGFza30gaW5zdGFuY2VcbiAqIGhlbGQgd2l0aGluIHRoZSB7QGxpbmsgVGFza0NvbnRlbnRTZXJ2aWNlfS5cbiAqXG4gKiBUaGlzIFNlcnZpY2UgaXMgdXNlZCBieSBtYW55IG90aGVyIFNlcnZpY2VzIHRoYXQgaGFuZGxlIHRoZSBuZWNlc3NhcnkgbG9naWMgZm9yIHdvcmtpbmcgd2l0aCBhIHNpbmdsZSBUYXNrIG9uIGZyb250ZW5kLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFza1JlcXVlc3RTdGF0ZVNlcnZpY2UgZXh0ZW5kcyBUYXNrSGFuZGxpbmdTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb3RlY3RlZCBfbG9hZGluZzogTG9hZGluZ0VtaXR0ZXI7XG4gICAgcHJvdGVjdGVkIF91cGRhdGluZzogTG9hZGluZ0VtaXR0ZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihfdGFza0NvbnRlbnQ6IFRhc2tDb250ZW50U2VydmljZSkge1xuICAgICAgICBzdXBlcihfdGFza0NvbnRlbnQpO1xuICAgICAgICB0aGlzLl9sb2FkaW5nID0gbmV3IExvYWRpbmdFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0aW5nID0gbmV3IExvYWRpbmdFbWl0dGVyKCk7XG4gICAgICAgIF90YXNrQ29udGVudC50YXNrJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZy5vZmYoKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0aW5nLm9mZigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIHRoZSB0YXNrIGlzIGN1cnJlbnRseSBsb2FkaW5nLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcXVlcmllZCB0YXNrIGlzXG4gICAgICogbm90IGhlbGQgd2l0aGluIHRoZSBpbmplY3RlZCB7QGxpbmsgVGFza0NvbnRlbnRTZXJ2aWNlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXNrSWQgc3RyaW5nSWQgb2YgdGhlIHtAbGluayBUYXNrfSB3ZSB3b3VsZCBsaWtlIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dC5cbiAgICAgKiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgdGhlIHN0YXRlIG9mIHRoZSB0YXNrIGhlbGQgaW4gdGhlIHtAbGluayBUYXNrQ29udGVudFNlcnZpY2V9IHdpbGwgYmUgcmV0dXJuZWQuXG4gICAgICovXG4gICAgcHVibGljIGlzTG9hZGluZyh0YXNrSWQ/OiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRhc2tJZCAhPT0gdW5kZWZpbmVkICYmICF0aGlzLmlzVGFza1JlbGV2YW50KHRhc2tJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmcuaXNBY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIGxvYWRpbmcgaW5kaWNhdG9yIHRvIGB0cnVlYCxcbiAgICAgKiBpZiB0aGUgdGFzayBoZWxkIHdpdGhpbiB0aGUgaW5qZWN0ZWQge0BsaW5rIFRhc2tDb250ZW50U2VydmljZX0gaGFzIHRoZSBJZCB0aGF0IGlzIHByb3ZpZGVkIGFzIGFyZ3VtZW50LlxuICAgICAqIFRoaXMgbWV0aG9kIGRvZXMgbm90aGluZyBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFza0lkIHN0cmluZ0lkIG9mIHRoZSB7QGxpbmsgVGFza30gd2hvJ3MgbG9hZGluZyBzdGF0ZSB3ZSB3YW50IHRvIGNoYW5nZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydExvYWRpbmcodGFza0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVGFza1JlbGV2YW50KHRhc2tJZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9sb2FkaW5nLm9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIGxvYWRpbmcgaW5kaWNhdG9yIHRvIGBmYWxzZWAsXG4gICAgICogaWYgdGhlIHRhc2sgaGVsZCB3aXRoaW4gdGhlIGluamVjdGVkIHtAbGluayBUYXNrQ29udGVudFNlcnZpY2V9IGhhcyB0aGUgSWQgdGhhdCBpcyBwcm92aWRlZCBhcyBhcmd1bWVudC5cbiAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIG5vdGhpbmcgb3RoZXJ3aXNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhc2tJZCBzdHJpbmdJZCBvZiB0aGUge0BsaW5rIFRhc2t9IHdobydzIGxvYWRpbmcgc3RhdGUgd2Ugd2FudCB0byBjaGFuZ2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RvcExvYWRpbmcodGFza0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVGFza1JlbGV2YW50KHRhc2tJZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9sb2FkaW5nLm9mZigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIHRhc2sgaXMgY3VycmVudGx5IHVwZGF0aW5nIGl0J3MgZGF0YSBmaWVsZHMsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBxdWVyaWVkIHRhc2sgaXNcbiAgICAgKiBub3QgaGVsZCB3aXRoaW4gdGhlIGluamVjdGVkIHtAbGluayBUYXNrQ29udGVudFNlcnZpY2V9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhc2tJZCBzdHJpbmdJZCBvZiB0aGUge0BsaW5rIFRhc2t9IHdlIHdvdWxkIGxpa2UgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0LlxuICAgICAqIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgc3RhdGUgb2YgdGhlIHRhc2sgaGVsZCBpbiB0aGUge0BsaW5rIFRhc2tDb250ZW50U2VydmljZX0gd2lsbCBiZSByZXR1cm5lZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNVcGRhdGluZyh0YXNrSWQ/OiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRhc2tJZCAhPT0gdW5kZWZpbmVkICYmICF0aGlzLmlzVGFza1JlbGV2YW50KHRhc2tJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0aW5nLmlzQWN0aXZlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIHN0YXRlIG9mIHRoZSB1cGRhdGluZyBpbmRpY2F0b3IgdG8gYHRydWVgLFxuICAgICAqIGlmIHRoZSB0YXNrIGhlbGQgd2l0aGluIHRoZSBpbmplY3RlZCB7QGxpbmsgVGFza0NvbnRlbnRTZXJ2aWNlfSBoYXMgdGhlIElkIHRoYXQgaXMgcHJvdmlkZWQgYXMgYXJndW1lbnQuXG4gICAgICogVGhpcyBtZXRob2QgZG9lcyBub3RoaW5nIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXNrSWQgc3RyaW5nSWQgb2YgdGhlIHtAbGluayBUYXNrfSB3aG8ncyBsb2FkaW5nIHN0YXRlIHdlIHdhbnQgdG8gY2hhbmdlXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0VXBkYXRpbmcodGFza0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVGFza1JlbGV2YW50KHRhc2tJZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGluZy5vbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIHN0YXRlIG9mIHRoZSB1cGRhdGluZyBpbmRpY2F0b3IgdG8gYGZhbHNlYCxcbiAgICAgKiBpZiB0aGUgdGFzayBoZWxkIHdpdGhpbiB0aGUgaW5qZWN0ZWQge0BsaW5rIFRhc2tDb250ZW50U2VydmljZX0gaGFzIHRoZSBJZCB0aGF0IGlzIHByb3ZpZGVkIGFzIGFyZ3VtZW50LlxuICAgICAqIFRoaXMgbWV0aG9kIGRvZXMgbm90aGluZyBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFza0lkIHN0cmluZ0lkIG9mIHRoZSB7QGxpbmsgVGFza30gd2hvJ3MgbG9hZGluZyBzdGF0ZSB3ZSB3YW50IHRvIGNoYW5nZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdG9wVXBkYXRpbmcodGFza0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVGFza1JlbGV2YW50KHRhc2tJZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGluZy5vZmYoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbG9hZGluZy5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl91cGRhdGluZy5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==