issue-52 #64
@ -6,8 +6,11 @@
|
||||
<component name="ChangeListManager">
|
||||
<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$/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$/../openapi.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/../openapi.yaml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/core/services/TaskScheduleService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/services/TaskScheduleService.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../frontend/src/app/schedules/draggable-scheduler/draggable-scheduler.component.css" beforeDir="false" afterPath="$PROJECT_DIR$/../frontend/src/app/schedules/draggable-scheduler/draggable-scheduler.component.css" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../frontend/src/app/schedules/draggable-scheduler/draggable-scheduler.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../frontend/src/app/schedules/draggable-scheduler/draggable-scheduler.component.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../frontend/src/app/schedules/draggable-scheduler/draggable-scheduler.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../frontend/src/app/schedules/draggable-scheduler/draggable-scheduler.component.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../frontend/src/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/../frontend/src/index.html" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
@ -96,6 +96,9 @@ public class TaskScheduleService {
|
||||
}
|
||||
|
||||
public void deleteSchedule(AbstractSchedule schedule) {
|
||||
schedule.getTask().getBasicTaskSchedules().remove(schedule);
|
||||
schedule.setTask(null);
|
||||
scheduleRepository.save(schedule);
|
||||
scheduleRepository.delete(schedule);
|
||||
}
|
||||
|
||||
|
@ -56,5 +56,5 @@ app-task-overview {
|
||||
}
|
||||
|
||||
::ng-deep .cal-event-title {
|
||||
white-space: normal;
|
||||
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
<div style="width: 75%">
|
||||
<mwl-calendar-week-view [viewDate]="viewDate" [daysInWeek]="daysInWeek" [dayStartHour]="7" [dayEndHour]="21" [refresh]="refresh"
|
||||
[snapDraggedEvents]="false"
|
||||
(eventTimesChanged)="eventDropped($event)" [events]="events"
|
||||
(eventTimesChanged)="eventDropped($event)" [events]="events" (eventClicked)="eventClicked('Click', $event.event)"
|
||||
>
|
||||
</mwl-calendar-week-view>
|
||||
</div>
|
||||
|
@ -10,10 +10,11 @@ import {
|
||||
TaskOverviewInfo, TaskShortInfo
|
||||
} from "../../../api";
|
||||
import {Subject} from "rxjs";
|
||||
import {CalendarEvent, CalendarEventTimesChangedEvent, CalendarView} from "angular-calendar";
|
||||
import {CalendarEvent, CalendarEventAction, CalendarEventTimesChangedEvent, CalendarView} from "angular-calendar";
|
||||
import {TaskOverviewData} from "../../dashboard/taskgroup-overview/taskgroup-overview.component";
|
||||
import {EventColor} from "calendar-utils";
|
||||
import * as moment from "moment";
|
||||
import {Router} from "@angular/router";
|
||||
|
||||
const colors: Record<string, EventColor> = {
|
||||
red: {
|
||||
@ -32,7 +33,19 @@ const colors: Record<string, EventColor> = {
|
||||
@Component({
|
||||
selector: 'app-draggable-scheduler',
|
||||
templateUrl: './draggable-scheduler.component.html',
|
||||
styleUrls: ['./draggable-scheduler.component.css']
|
||||
styleUrls: ['./draggable-scheduler.component.css'],
|
||||
styles: [
|
||||
`
|
||||
h3 {
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: #f5f5f5;
|
||||
padding: 15px;
|
||||
}
|
||||
`,
|
||||
],
|
||||
})
|
||||
export class DraggableSchedulerComponent {
|
||||
defaultNavigationLinkPath: NavigationLink[] = [
|
||||
@ -66,11 +79,28 @@ export class DraggableSchedulerComponent {
|
||||
refresh: Subject<void> = new Subject<void>()
|
||||
events: CalendarEvent[] = []
|
||||
|
||||
actions: CalendarEventAction[] = [
|
||||
{
|
||||
label: '<i class="fas fa-fw fa-pencil-alt"></i>',
|
||||
a11yLabel: 'Edit',
|
||||
onClick: ({ event }: { event: CalendarEvent }): void => {
|
||||
this.eventClicked('Edit', event)
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '<i class="fas fa-fw fa-trash-alt"></i>',
|
||||
a11yLabel: 'Delete',
|
||||
onClick: ({ event }: { event: CalendarEvent }): void => {
|
||||
this.eventClicked('Delete', event);
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
tasks: CalendarEvent[] = []
|
||||
selectedTaskgroupID: number | undefined
|
||||
|
||||
constructor(private scheduleService: ScheduleService) {
|
||||
constructor(private scheduleService: ScheduleService,
|
||||
private router: Router) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
@ -83,6 +113,7 @@ export class DraggableSchedulerComponent {
|
||||
title: this.computeTaskPath(schedule.taskgroupPath, schedule.task),
|
||||
color: colors['red'],
|
||||
start: new Date(basicSchedule.scheduleDate),
|
||||
actions: this.actions,
|
||||
allDay: true,
|
||||
draggable: true,
|
||||
resizable: {
|
||||
@ -91,8 +122,10 @@ export class DraggableSchedulerComponent {
|
||||
},
|
||||
meta: {
|
||||
taskID: schedule.task.taskID,
|
||||
scheduleID: schedule.scheduleID
|
||||
}
|
||||
scheduleID: schedule.scheduleID,
|
||||
taskgroupID: schedule.taskgroupPath[0].taskgroupID
|
||||
},
|
||||
|
||||
})
|
||||
} else {
|
||||
const advancedSchedule = schedule as AdvancedScheduleInfo
|
||||
@ -102,6 +135,7 @@ export class DraggableSchedulerComponent {
|
||||
cssClass: 'test',
|
||||
start: new Date(advancedSchedule.scheduleStartTime),
|
||||
end: new Date(advancedSchedule.scheduleStopTime),
|
||||
actions: this.actions,
|
||||
draggable: true,
|
||||
resizable: {
|
||||
beforeStart: true,
|
||||
@ -109,11 +143,13 @@ export class DraggableSchedulerComponent {
|
||||
},
|
||||
meta: {
|
||||
taskID: schedule.task.taskID,
|
||||
scheduleID: schedule.scheduleID
|
||||
}
|
||||
scheduleID: schedule.scheduleID,
|
||||
taskgroupID: schedule.taskgroupPath[0].taskgroupID
|
||||
},
|
||||
})
|
||||
}
|
||||
});
|
||||
console.log(this.events)
|
||||
this.refresh.next();
|
||||
}
|
||||
})
|
||||
@ -134,8 +170,10 @@ export class DraggableSchedulerComponent {
|
||||
},
|
||||
meta: {
|
||||
taskID: task.taskID,
|
||||
scheduleID: undefined
|
||||
}
|
||||
scheduleID: undefined,
|
||||
taskgroupID: taskOverviewData.taskgroupID
|
||||
},
|
||||
actions: this.actions
|
||||
})
|
||||
})
|
||||
this.selectedTaskgroupID = taskOverviewData.taskgroupID;
|
||||
@ -221,13 +259,27 @@ export class DraggableSchedulerComponent {
|
||||
}
|
||||
}
|
||||
|
||||
computeTaskPath(taskgroupPath: TaskgroupEntityInfo[], task: TaskShortInfo | TaskEntityInfo) {
|
||||
computeTaskPath(taskgroupPath: TaskgroupEntityInfo[], task: TaskShortInfo | TaskEntityInfo) {
|
||||
let result = "";
|
||||
taskgroupPath.forEach(taskgroupPathPart => {
|
||||
result += taskgroupPathPart.taskgroupName + "/"
|
||||
});
|
||||
result += task!.taskName
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
eventClicked(action: string, event: CalendarEvent): void {
|
||||
if(action == 'Click') {
|
||||
this.router.navigateByUrl("/taskgroups/" + event.meta.taskgroupID + "/tasks/" + event.meta.taskID);
|
||||
} else if(action == 'Edit') {
|
||||
this.router.navigateByUrl("/taskgroups/" + event.meta.taskgroupID + "/tasks/" + event.meta.taskID + "/schedule/" + event.meta.scheduleID);
|
||||
} else if(action == 'Delete') {
|
||||
this.scheduleService.schedulesScheduleIDDelete(event.meta.scheduleID).subscribe({
|
||||
next: resp => {
|
||||
this.events = this.events.filter(calendarEvent => calendarEvent.meta.scheduleID !== event.meta.scheduleID);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p" crossorigin="anonymous"/>
|
||||
</head>
|
||||
<body class="mat-typography">
|
||||
<app-root></app-root>
|
||||
|
Loading…
Reference in New Issue
Block a user