diff --git a/backend/src/main/java/core/api/models/timemanager/tasks/TaskEntityInfo.java b/backend/src/main/java/core/api/models/timemanager/tasks/TaskEntityInfo.java index 4785251..589cc3c 100644 --- a/backend/src/main/java/core/api/models/timemanager/tasks/TaskEntityInfo.java +++ b/backend/src/main/java/core/api/models/timemanager/tasks/TaskEntityInfo.java @@ -26,6 +26,8 @@ public class TaskEntityInfo { private boolean hasActiveSchedules; + private boolean hasPlannedSchedules; + public TaskEntityInfo(Task task) { this.taskID = task.getTaskID(); this.taskName = task.getTaskName(); @@ -39,6 +41,7 @@ public class TaskEntityInfo { this.workTime = task.getWorkTime(); this.finishable = task.isFinishable(); this.hasActiveSchedules = task.hasActiveSchedule(); + this.hasPlannedSchedules = task.hasPlannedSchedules(); } public long getTaskID() { @@ -120,4 +123,12 @@ public class TaskEntityInfo { public void setHasActiveSchedules(boolean hasActiveSchedules) { this.hasActiveSchedules = hasActiveSchedules; } + + public boolean isHasPlannedSchedules() { + return hasPlannedSchedules; + } + + public void setHasPlannedSchedules(boolean hasPlannedSchedules) { + this.hasPlannedSchedules = hasPlannedSchedules; + } } diff --git a/backend/src/main/java/core/entities/timemanager/Task.java b/backend/src/main/java/core/entities/timemanager/Task.java index 1858ca8..940478f 100644 --- a/backend/src/main/java/core/entities/timemanager/Task.java +++ b/backend/src/main/java/core/entities/timemanager/Task.java @@ -198,4 +198,13 @@ public class Task { } return activeMinutes; } + + public boolean hasPlannedSchedules() { + for(AbstractSchedule schedule : getBasicTaskSchedules()) { + if(!schedule.isCompleted()) { + return true; + } + } + return false; + } } diff --git a/frontend/openapitools.json b/frontend/openapitools.json new file mode 100644 index 0000000..15fef60 --- /dev/null +++ b/frontend/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "7.1.0" + } +} diff --git a/frontend/src/api/model/taskEntityInfo.ts b/frontend/src/api/model/taskEntityInfo.ts index 6948125..e97b949 100644 --- a/frontend/src/api/model/taskEntityInfo.ts +++ b/frontend/src/api/model/taskEntityInfo.ts @@ -52,5 +52,9 @@ export interface TaskEntityInfo { * determines whether the task has active schedules */ hasActiveSchedules: boolean; + /** + * determines whether the task has schedules that can be started + */ + hasPlannedSchedules: boolean; } diff --git a/frontend/src/app/tasks/task-dashboard/task-dashboard.component.ts b/frontend/src/app/tasks/task-dashboard/task-dashboard.component.ts index b4cb10f..4429134 100644 --- a/frontend/src/app/tasks/task-dashboard/task-dashboard.component.ts +++ b/frontend/src/app/tasks/task-dashboard/task-dashboard.component.ts @@ -55,7 +55,7 @@ export class TaskDashboardComponent implements OnChanges{ getStatusOfTask(task: TaskEntityInfo) { if(moment(task.deadline, 'YYYY-MM-DDTHH:mm:ss.SSSZ').isBefore(moment())) { return "🔴"; - } else if(task.finishable){ + } else if(task.finishable && !task.hasPlannedSchedules){ return "🟠"; } else { return "🟢"; diff --git a/openapi.yaml b/openapi.yaml index 6c8bf09..0e7f7e5 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -2223,6 +2223,7 @@ components: - workTime - finishable - hasActiveSchedules + - hasPlannedSchedules additionalProperties: false properties: taskID: @@ -2264,6 +2265,9 @@ components: hasActiveSchedules: type: boolean description: determines whether the task has active schedules + hasPlannedSchedules: + type: boolean + description: determines whether the task has schedules that can be started TaskTaskgroupInfo: required: - taskID