diff --git a/projects/netgrif-components-core/src/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.ts b/projects/netgrif-components-core/src/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.ts index 4b15e029a3..f4b16f5b6b 100644 --- a/projects/netgrif-components-core/src/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.ts +++ b/projects/netgrif-components-core/src/lib/event/model/event-outcomes/task-outcomes/finish-task-event-outcome.ts @@ -2,5 +2,5 @@ import {TaskEventOutcome} from './task-event-outcome'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface FinishTaskEventOutcome extends TaskEventOutcome { - + isTaskStillExecutable?: boolean; } diff --git a/projects/netgrif-components-core/src/lib/resources/interface/task.ts b/projects/netgrif-components-core/src/lib/resources/interface/task.ts index db1a860cd5..b1c2e1f941 100644 --- a/projects/netgrif-components-core/src/lib/resources/interface/task.ts +++ b/projects/netgrif-components-core/src/lib/resources/interface/task.ts @@ -70,4 +70,6 @@ export interface Task { delegateTitle?: string; immediateData?: Array; assignedUserPolicy?: AssignedUserPolicy; + + isStillExecutable?: boolean; } diff --git a/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts b/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts index d754c44b38..1fc1ff28ce 100644 --- a/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts +++ b/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts @@ -206,11 +206,12 @@ export abstract class TaskContentService implements OnDestroy { /** * Clears the assignee, start date and finish date from the managed Task. */ - public updateStateData(eventOutcome: TaskEventOutcome): void { + public updateStateData(eventOutcome: TaskEventOutcome, isStillExecutable: boolean = true): void { if (this._task) { this._task.user = eventOutcome.task.user; this._task.startDate = eventOutcome.task.startDate; this._task.finishDate = eventOutcome.task.finishDate; + this._task.isStillExecutable = isStillExecutable; } } @@ -235,7 +236,7 @@ export abstract class TaskContentService implements OnDestroy { } protected updateField(chFields: ChangedFields, field: DataField, frontendActions: Change, referenced: boolean = false): void { - if (this._fieldConverterService.resolveType(field) === FieldTypeResource.TASK_REF) { + if (this._fieldConverterService.resolveType(field) === FieldTypeResource.TASK_REF && (!!this._task?.isStillExecutable || this._task?.isStillExecutable === undefined)) { this._taskDataReloadRequest$.next(frontendActions ? frontendActions : undefined); return; } diff --git a/projects/netgrif-components-core/src/lib/task/services/finish-task.service.ts b/projects/netgrif-components-core/src/lib/task/services/finish-task.service.ts index 9b812068f0..c6c4b8af1d 100644 --- a/projects/netgrif-components-core/src/lib/task/services/finish-task.service.ts +++ b/projects/netgrif-components-core/src/lib/task/services/finish-task.service.ts @@ -133,7 +133,8 @@ export class FinishTaskService extends TaskHandlingService { } if (outcomeResource.success) { - this._taskContentService.updateStateData(outcomeResource.outcome as FinishTaskEventOutcome); + const outcome = outcomeResource.outcome as FinishTaskEventOutcome + this._taskContentService.updateStateData(outcome, outcome.isTaskStillExecutable); const changedFieldsMap: ChangedFieldsMap = this._eventService .parseChangedFieldsFromOutcomeTree(outcomeResource.outcome); if (!!changedFieldsMap) {