@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
75 lines • 10.2 kB
JavaScript
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=