issue-52 #64

Merged
sebastian merged 17 commits from issue-52 into docker-deployment 2023-11-13 22:48:50 +01:00
6 changed files with 45 additions and 25 deletions
Showing only changes of commit cfd1bfe7cb - Show all commits

View File

@ -6,9 +6,8 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="3a869f59-290a-4ab2-b036-a878ce801bc4" name="Changes" comment="Fix parsing datetime (diesmal hoffentlich wirklich)"> <list default="true" id="3a869f59-290a-4ab2-b036-a878ce801bc4" name="Changes" comment="Fix parsing datetime (diesmal hoffentlich wirklich)">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/core/api/controller/ScheduleController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/api/controller/ScheduleController.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/core/api/models/timemanager/tasks/TaskOverviewInfo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/api/models/timemanager/tasks/TaskOverviewInfo.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/core/api/models/timemanager/taskSchedule/scheduleInfos/BasicScheduleFieldInfo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/api/models/timemanager/taskSchedule/scheduleInfos/BasicScheduleFieldInfo.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/../openapi.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/../openapi.yaml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../frontend/src/app/app.module.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../frontend/src/app/app.module.ts" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@ -1,8 +1,11 @@
package core.api.models.timemanager.tasks; package core.api.models.timemanager.tasks;
import core.api.models.timemanager.taskgroup.TaskgroupEntityInfo;
import core.entities.timemanager.Task; import core.entities.timemanager.Task;
import core.entities.timemanager.Taskgroup;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
public class TaskOverviewInfo { public class TaskOverviewInfo {
@ -13,6 +16,7 @@ public class TaskOverviewInfo {
private LocalDate limit; private LocalDate limit;
private boolean overdue; private boolean overdue;
public TaskOverviewInfo(Task task) { public TaskOverviewInfo(Task task) {
this.taskID = task.getTaskID(); this.taskID = task.getTaskID();
this.taskName = task.getTaskName(); this.taskName = task.getTaskName();

View File

@ -3,15 +3,16 @@
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
* *
* The version of the OpenAPI document: 1.0 * The version of the OpenAPI document: 1.0
* *
* *
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech * https://openapi-generator.tech
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { TaskgroupEntityInfo } from './taskgroupEntityInfo';
export interface TaskOverviewInfo { export interface TaskOverviewInfo {
/** /**
* internal id of task * internal id of task
*/ */

View File

@ -22,28 +22,29 @@
</mwl-calendar-week-view> </mwl-calendar-week-view>
</div> </div>
<div style="width: 23%;"> <div style="width: 23%;">
<app-taskgroup-overview (taskgroupSelected)="onSelectTaskgroup($event)"></app-taskgroup-overview>
<div *ngIf="tasks.length > 0"> <div *ngIf="tasks.length > 0">
<mat-action-list style="padding: 0; margin-top: 20px" > <mat-action-list style="padding: 0;">
<button mat-list-item class="lightBlueBtn" [routerLink]="['/scheduler']">Tasks</button> <button mat-list-item class="lightBlueBtn" [routerLink]="['/scheduler']">Tasks</button>
</mat-action-list> </mat-action-list>
<div mwlDroppable <div style="margin-bottom: 20px">
(drop)="externalDrop($event.dropData.event)" <div mwlDroppable
dragOverClass="drag-over"> (drop)="externalDrop($event.dropData.event)"
<div *ngFor="let event of tasks" mwlDraggable dragOverClass="drag-over">
[dropData]="{event: event}" <div *ngFor="let event of tasks" mwlDraggable
[touchStartLongPress]="{ delay: 300, delta: 30 }" [dropData]="{event: event}"
dragActiveClass="drag-active" class="task-card"> [touchStartLongPress]="{ delay: 300, delta: 30 }"
<div> dragActiveClass="drag-active" class="task-card">
<a href="javascript:;" [style.color]="event.color" style="text-decoration: none; color: black; margin-left: 20px"> <div>
{{ event.title }} <a href="javascript:;" [style.color]="event.color" style="text-decoration: none; color: black; margin-left: 20px">
</a> {{ event.title }}
</a>
</div>
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
<app-taskgroup-overview (taskgroupSelected)="onSelectTaskgroup($event)"></app-taskgroup-overview>
</div> </div>

View File

@ -7,7 +7,7 @@ import {
ScheduleService, ScheduleService,
TaskEntityInfo, TaskEntityInfo,
TaskgroupEntityInfo, TaskgroupEntityInfo,
TaskOverviewInfo TaskOverviewInfo, TaskShortInfo
} from "../../../api"; } from "../../../api";
import {Subject} from "rxjs"; import {Subject} from "rxjs";
import {CalendarEvent, CalendarEventTimesChangedEvent, CalendarView} from "angular-calendar"; import {CalendarEvent, CalendarEventTimesChangedEvent, CalendarView} from "angular-calendar";
@ -80,7 +80,7 @@ export class DraggableSchedulerComponent {
if(schedule.scheduleType == 'BASIC') { if(schedule.scheduleType == 'BASIC') {
const basicSchedule = schedule as BasicScheduleInfo const basicSchedule = schedule as BasicScheduleInfo
this.events.push({ this.events.push({
title: schedule.task.taskName, title: this.computeTaskPath(schedule.taskgroupPath, schedule.task),
color: colors['red'], color: colors['red'],
start: new Date(basicSchedule.scheduleDate), start: new Date(basicSchedule.scheduleDate),
allDay: true, allDay: true,
@ -97,7 +97,7 @@ export class DraggableSchedulerComponent {
} else { } else {
const advancedSchedule = schedule as AdvancedScheduleInfo const advancedSchedule = schedule as AdvancedScheduleInfo
this.events.push({ this.events.push({
title: schedule.task.taskName, title: this.computeTaskPath(schedule.taskgroupPath, schedule.task),
color: colors['red'], color: colors['red'],
start: new Date(advancedSchedule.scheduleStartTime), start: new Date(advancedSchedule.scheduleStartTime),
end: new Date(advancedSchedule.scheduleStopTime), end: new Date(advancedSchedule.scheduleStopTime),
@ -176,7 +176,8 @@ export class DraggableSchedulerComponent {
}).subscribe({ }).subscribe({
next: resp => { next: resp => {
event.meta.scheduleID = resp.scheduleID; event.meta.scheduleID = resp.scheduleID;
event.color = colors['red'] event.color = colors['red'];
event.title = this.computeTaskPath(resp.taskgroupPath, resp.task)
} }
}) })
} else { } else {
@ -191,7 +192,8 @@ export class DraggableSchedulerComponent {
}).subscribe({ }).subscribe({
next: resp => { next: resp => {
event.meta.scheduleID = resp.scheduleID; event.meta.scheduleID = resp.scheduleID;
event.color = colors['red'] event.color = colors['red'];
event.title = this.computeTaskPath(resp.taskgroupPath, resp.task)
} }
}) })
} }
@ -217,5 +219,13 @@ export class DraggableSchedulerComponent {
} }
} }
computeTaskPath(taskgroupPath: TaskgroupEntityInfo[], task: TaskShortInfo | TaskEntityInfo) {
let result = "";
taskgroupPath.forEach(taskgroupPathPart => {
result += taskgroupPathPart.taskgroupName + "/"
});
result += task!.taskName
return result;
}
} }

View File

@ -2421,6 +2421,7 @@ components:
- eta - eta
- limit - limit
- overdue - overdue
- taskgroupPath
additionalProperties: false additionalProperties: false
properties: properties:
taskID: taskID:
@ -2448,6 +2449,10 @@ components:
type: number type: number
description: number in minutes that was already worked on this task description: number in minutes that was already worked on this task
example: 10 example: 10
taskgroupPath:
type: array
items:
$ref: '#/components/schemas/TaskgroupEntityInfo'
ScheduleStatus: ScheduleStatus:
required: required:
- activeMinutes - activeMinutes