UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

75 lines 10.2 kB
import { Inject, Injectable } from '@angular/core'; import { TaskHandlingService } from './task-handling-service'; import { FinishPolicy } from '../../task-content/model/policy'; import { NAE_TASK_OPERATIONS } from '../models/task-operations-injection-token'; import { AfterAction } from '../../utility/call-chain/after-action'; import * as i0 from "@angular/core"; import * as i1 from "./data-focus-policy.service"; import * as i2 from "./finish-task.service"; import * as i3 from "../../task-content/services/task-content.service"; /** * Handles the sequence of actions that are performed when a task is being finished, based on the task's configuration. */ export class FinishPolicyService extends TaskHandlingService { _dataFocusPolicyService; _finishTaskService; _taskOperations; constructor(_dataFocusPolicyService, _finishTaskService, _taskOperations, taskContentService) { super(taskContentService); this._dataFocusPolicyService = _dataFocusPolicyService; this._finishTaskService = _finishTaskService; this._taskOperations = _taskOperations; } /** * Performs the actions that correspond to the policy defined by the Task when it's finished. * @param afterAction the action that should be performed when the finish policy finishes */ performFinishPolicy(afterAction = new AfterAction()) { if (this._safeTask.finishPolicy === FinishPolicy.autoNoData && !!this._safeTask.userId) { this.autoNoDataFinishPolicy(afterAction); } else { this.manualFinishPolicy(afterAction); } } /** * Performs the actions that correspond to the [Auto Finish Policy]{@link FinishPolicy#autoNoData}. * * If the task has no data performs finish and [closes]{@link TaskOperations#close} the task. * Otherwise [opens]{@link TaskOperations#open} it and performs the [data focus policy]{@link DataFocusPolicyService}. * * @param afterAction the action that should be performed when the finish policy finishes */ autoNoDataFinishPolicy(afterAction) { if (this._safeTask.dataSize <= 0) { this._finishTaskService.validateDataAndFinish(afterAction); } else { this._taskOperations.open(); this._dataFocusPolicyService.performDataFocusPolicy(); afterAction.resolve(true); } } /** * Performs the actions that correspond to the [Manual Finish Policy]{@link FinishPolicy#manual}. * * [Opens]{@link TaskOperations#open} the task and performs the [data focus policy]{@link DataFocusPolicyService}. * * @param afterAction the action that should be performed when the finish policy finishes */ manualFinishPolicy(afterAction) { this._taskOperations.open(); this._dataFocusPolicyService.performDataFocusPolicy(); afterAction.next(true); afterAction.complete(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FinishPolicyService, deps: [{ token: i1.DataFocusPolicyService }, { token: i2.FinishTaskService }, { token: NAE_TASK_OPERATIONS }, { token: i3.TaskContentService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FinishPolicyService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FinishPolicyService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.DataFocusPolicyService }, { type: i2.FinishTaskService }, { type: undefined, decorators: [{ type: Inject, args: [NAE_TASK_OPERATIONS] }] }, { type: i3.TaskContentService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluaXNoLXBvbGljeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi90YXNrL3NlcnZpY2VzL2ZpbmlzaC1wb2xpY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFN0QsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFJOUUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVDQUF1QyxDQUFDOzs7OztBQUVsRTs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxtQkFBbUI7SUFFbEM7SUFDQTtJQUM2QjtJQUZuRCxZQUFzQix1QkFBK0MsRUFDL0Msa0JBQXFDLEVBQ1IsZUFBK0IsRUFDdEUsa0JBQXNDO1FBQzlDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSlIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF3QjtRQUMvQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ1Isb0JBQWUsR0FBZixlQUFlLENBQWdCO0lBR2xGLENBQUM7SUFFRDs7O09BR0c7SUFDSSxtQkFBbUIsQ0FBQyxjQUEyQixJQUFJLFdBQVcsRUFBRTtRQUNuRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxLQUFLLFlBQVksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQ3BGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTyxzQkFBc0IsQ0FBQyxXQUF3QjtRQUNyRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDOUQ7YUFBTTtZQUNILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDdEQsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3QjtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyxrQkFBa0IsQ0FBQyxXQUE2QjtRQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RELFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBbkRRLG1CQUFtQix5RkFJUixtQkFBbUI7NEdBSjlCLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBS00sTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Rhc2tIYW5kbGluZ1NlcnZpY2V9IGZyb20gJy4vdGFzay1oYW5kbGluZy1zZXJ2aWNlJztcbmltcG9ydCB7VGFza0NvbnRlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi90YXNrLWNvbnRlbnQvc2VydmljZXMvdGFzay1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtGaW5pc2hQb2xpY3l9IGZyb20gJy4uLy4uL3Rhc2stY29udGVudC9tb2RlbC9wb2xpY3knO1xuaW1wb3J0IHtEYXRhRm9jdXNQb2xpY3lTZXJ2aWNlfSBmcm9tICcuL2RhdGEtZm9jdXMtcG9saWN5LnNlcnZpY2UnO1xuaW1wb3J0IHtOQUVfVEFTS19PUEVSQVRJT05TfSBmcm9tICcuLi9tb2RlbHMvdGFzay1vcGVyYXRpb25zLWluamVjdGlvbi10b2tlbic7XG5pbXBvcnQge1Rhc2tPcGVyYXRpb25zfSBmcm9tICcuLi9pbnRlcmZhY2VzL3Rhc2stb3BlcmF0aW9ucyc7XG5pbXBvcnQge0ZpbmlzaFRhc2tTZXJ2aWNlfSBmcm9tICcuL2ZpbmlzaC10YXNrLnNlcnZpY2UnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWZ0ZXJBY3Rpb259IGZyb20gJy4uLy4uL3V0aWxpdHkvY2FsbC1jaGFpbi9hZnRlci1hY3Rpb24nO1xuXG4vKipcbiAqIEhhbmRsZXMgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBhcmUgcGVyZm9ybWVkIHdoZW4gYSB0YXNrIGlzIGJlaW5nIGZpbmlzaGVkLCBiYXNlZCBvbiB0aGUgdGFzaydzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaW5pc2hQb2xpY3lTZXJ2aWNlIGV4dGVuZHMgVGFza0hhbmRsaW5nU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2RhdGFGb2N1c1BvbGljeVNlcnZpY2U6IERhdGFGb2N1c1BvbGljeVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9maW5pc2hUYXNrU2VydmljZTogRmluaXNoVGFza1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgQEluamVjdChOQUVfVEFTS19PUEVSQVRJT05TKSBwcm90ZWN0ZWQgX3Rhc2tPcGVyYXRpb25zOiBUYXNrT3BlcmF0aW9ucyxcbiAgICAgICAgICAgICAgICB0YXNrQ29udGVudFNlcnZpY2U6IFRhc2tDb250ZW50U2VydmljZSkge1xuICAgICAgICBzdXBlcih0YXNrQ29udGVudFNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSBhY3Rpb25zIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgcG9saWN5IGRlZmluZWQgYnkgdGhlIFRhc2sgd2hlbiBpdCdzIGZpbmlzaGVkLlxuICAgICAqIEBwYXJhbSBhZnRlckFjdGlvbiB0aGUgYWN0aW9uIHRoYXQgc2hvdWxkIGJlIHBlcmZvcm1lZCB3aGVuIHRoZSBmaW5pc2ggcG9saWN5IGZpbmlzaGVzXG4gICAgICovXG4gICAgcHVibGljIHBlcmZvcm1GaW5pc2hQb2xpY3koYWZ0ZXJBY3Rpb246IEFmdGVyQWN0aW9uID0gbmV3IEFmdGVyQWN0aW9uKCkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NhZmVUYXNrLmZpbmlzaFBvbGljeSA9PT0gRmluaXNoUG9saWN5LmF1dG9Ob0RhdGEgJiYgISF0aGlzLl9zYWZlVGFzay51c2VySWQpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b05vRGF0YUZpbmlzaFBvbGljeShhZnRlckFjdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1hbnVhbEZpbmlzaFBvbGljeShhZnRlckFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgYWN0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIFtBdXRvIEZpbmlzaCBQb2xpY3lde0BsaW5rIEZpbmlzaFBvbGljeSNhdXRvTm9EYXRhfS5cbiAgICAgKlxuICAgICAqIElmIHRoZSB0YXNrIGhhcyBubyBkYXRhIHBlcmZvcm1zIGZpbmlzaCBhbmQgW2Nsb3Nlc117QGxpbmsgVGFza09wZXJhdGlvbnMjY2xvc2V9IHRoZSB0YXNrLlxuICAgICAqIE90aGVyd2lzZSBbb3BlbnNde0BsaW5rIFRhc2tPcGVyYXRpb25zI29wZW59IGl0IGFuZCBwZXJmb3JtcyB0aGUgW2RhdGEgZm9jdXMgcG9saWN5XXtAbGluayBEYXRhRm9jdXNQb2xpY3lTZXJ2aWNlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhZnRlckFjdGlvbiB0aGUgYWN0aW9uIHRoYXQgc2hvdWxkIGJlIHBlcmZvcm1lZCB3aGVuIHRoZSBmaW5pc2ggcG9saWN5IGZpbmlzaGVzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGF1dG9Ob0RhdGFGaW5pc2hQb2xpY3koYWZ0ZXJBY3Rpb246IEFmdGVyQWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zYWZlVGFzay5kYXRhU2l6ZSA8PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9maW5pc2hUYXNrU2VydmljZS52YWxpZGF0ZURhdGFBbmRGaW5pc2goYWZ0ZXJBY3Rpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdGFza09wZXJhdGlvbnMub3BlbigpO1xuICAgICAgICAgICAgdGhpcy5fZGF0YUZvY3VzUG9saWN5U2VydmljZS5wZXJmb3JtRGF0YUZvY3VzUG9saWN5KCk7XG4gICAgICAgICAgICBhZnRlckFjdGlvbi5yZXNvbHZlKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIGFjdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBbTWFudWFsIEZpbmlzaCBQb2xpY3lde0BsaW5rIEZpbmlzaFBvbGljeSNtYW51YWx9LlxuICAgICAqXG4gICAgICogW09wZW5zXXtAbGluayBUYXNrT3BlcmF0aW9ucyNvcGVufSB0aGUgdGFzayBhbmQgcGVyZm9ybXMgdGhlIFtkYXRhIGZvY3VzIHBvbGljeV17QGxpbmsgRGF0YUZvY3VzUG9saWN5U2VydmljZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWZ0ZXJBY3Rpb24gdGhlIGFjdGlvbiB0aGF0IHNob3VsZCBiZSBwZXJmb3JtZWQgd2hlbiB0aGUgZmluaXNoIHBvbGljeSBmaW5pc2hlc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBtYW51YWxGaW5pc2hQb2xpY3koYWZ0ZXJBY3Rpb246IFN1YmplY3Q8Ym9vbGVhbj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFza09wZXJhdGlvbnMub3BlbigpO1xuICAgICAgICB0aGlzLl9kYXRhRm9jdXNQb2xpY3lTZXJ2aWNlLnBlcmZvcm1EYXRhRm9jdXNQb2xpY3koKTtcbiAgICAgICAgYWZ0ZXJBY3Rpb24ubmV4dCh0cnVlKTtcbiAgICAgICAgYWZ0ZXJBY3Rpb24uY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=