Reschedule Tasks (Basicschedules)
This commit is contained in:
parent
d6d267c645
commit
e2d871f7fb
@ -4,11 +4,10 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="3a869f59-290a-4ab2-b036-a878ce801bc4" name="Changes" comment="Define Entity BasicTaskSchedule and Taskcontroller">
|
<list default="true" id="3a869f59-290a-4ab2-b036-a878ce801bc4" name="Changes" comment="Delete Schedules">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/../frontend/src/app/schedules/schedule-dashboard/schedule-dashboard.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../frontend/src/app/schedules/schedule-dashboard/schedule-dashboard.component.html" 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$/../frontend/src/app/schedules/scheduler/scheduler.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../frontend/src/app/schedules/scheduler/scheduler.component.html" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/core/repositories/timemanager/BasicTaskScheduleRepository.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/repositories/timemanager/BasicTaskScheduleRepository.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/../frontend/src/app/schedules/scheduler/scheduler.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../frontend/src/app/schedules/scheduler/scheduler.component.ts" 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" />
|
|
||||||
</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" />
|
||||||
@ -96,7 +95,7 @@
|
|||||||
<workItem from="1697958118995" duration="5749000" />
|
<workItem from="1697958118995" duration="5749000" />
|
||||||
<workItem from="1697969480767" duration="6407000" />
|
<workItem from="1697969480767" duration="6407000" />
|
||||||
<workItem from="1697989716016" duration="3814000" />
|
<workItem from="1697989716016" duration="3814000" />
|
||||||
<workItem from="1698067098771" duration="4010000" />
|
<workItem from="1698067098771" duration="4770000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="Structure Taskgroups in Hierarchies">
|
<task id="LOCAL-00001" summary="Structure Taskgroups in Hierarchies">
|
||||||
<option name="closed" value="true" />
|
<option name="closed" value="true" />
|
||||||
@ -146,7 +145,15 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1697976314517</updated>
|
<updated>1697976314517</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="7" />
|
<task id="LOCAL-00007" summary="Delete Schedules">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1698089745245</created>
|
||||||
|
<option name="number" value="00007" />
|
||||||
|
<option name="presentableId" value="LOCAL-00007" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1698089745245</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="8" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
@ -160,7 +167,8 @@
|
|||||||
<MESSAGE value="Delete and clear Tasks" />
|
<MESSAGE value="Delete and clear Tasks" />
|
||||||
<MESSAGE value="Delete and clear Tasks (Frontend)" />
|
<MESSAGE value="Delete and clear Tasks (Frontend)" />
|
||||||
<MESSAGE value="Define Entity BasicTaskSchedule and Taskcontroller" />
|
<MESSAGE value="Define Entity BasicTaskSchedule and Taskcontroller" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="Define Entity BasicTaskSchedule and Taskcontroller" />
|
<MESSAGE value="Delete Schedules" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="Delete Schedules" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager>
|
<breakpoint-manager>
|
||||||
|
@ -15,7 +15,8 @@ const routes: Routes = [
|
|||||||
{path: 'taskgroups', component: TaskgroupDashboardComponent},
|
{path: 'taskgroups', component: TaskgroupDashboardComponent},
|
||||||
{path: 'taskgroups/:taskgroupID', component: TaskgroupDashboardComponent},
|
{path: 'taskgroups/:taskgroupID', component: TaskgroupDashboardComponent},
|
||||||
{path: 'taskgroups/:taskgroupID/tasks/:taskID', component: TaskDetailOverviewComponent},
|
{path: 'taskgroups/:taskgroupID/tasks/:taskID', component: TaskDetailOverviewComponent},
|
||||||
{path: 'taskgroups/:taskgroupID/tasks/:taskID/schedule', component: SchedulerComponent}
|
{path: 'taskgroups/:taskgroupID/tasks/:taskID/schedule', component: SchedulerComponent},
|
||||||
|
{path: 'taskgroups/:taskgroupID/tasks/:taskID/schedule/:scheduleID', component: SchedulerComponent}
|
||||||
];
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
@ -1,3 +1,15 @@
|
|||||||
mat-form-field {
|
.scheduleContainer {
|
||||||
width: 100%;
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat-form-field {
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scheduleBtn {
|
||||||
|
float: right;
|
||||||
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
<mat-form-field>
|
<div class="scheduler-container">
|
||||||
<input matInput [matDatepicker]="picker" [formControl]="dateCtrl">
|
<mat-form-field>
|
||||||
<mat-hint>MM/DD/YYYY</mat-hint>
|
<input matInput [matDatepicker]="picker" [formControl]="dateCtrl">
|
||||||
<mat-datepicker-toggle matIconSuffix [for]="picker"></mat-datepicker-toggle>
|
<mat-hint>MM/DD/YYYY</mat-hint>
|
||||||
<mat-datepicker #picker></mat-datepicker>
|
<mat-datepicker-toggle matIconSuffix [for]="picker"></mat-datepicker-toggle>
|
||||||
</mat-form-field>
|
<mat-datepicker #picker></mat-datepicker>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<button class="scheduleBtn" mat-raised-button color="primary" (click)="schedule()">Schedule</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<button mat-raised-button color="primary" (click)="schedule()">Schedule</button>
|
|
||||||
|
@ -1,21 +1,25 @@
|
|||||||
import {Component, EventEmitter, Input, Output} from '@angular/core';
|
import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';
|
||||||
import {FormControl, Validators} from "@angular/forms";
|
import {FormControl, Validators} from "@angular/forms";
|
||||||
import {BasicScheduleEntityInfo, ScheduleService, TaskEntityInfo} from "../../../api";
|
import {BasicScheduleEntityInfo, ScheduleService, TaskEntityInfo, TaskgroupEntityInfo} from "../../../api";
|
||||||
import {MatSnackBar} from "@angular/material/snack-bar";
|
import {MatSnackBar} from "@angular/material/snack-bar";
|
||||||
|
import {Router} from "@angular/router";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-basic-scheduler',
|
selector: 'app-basic-scheduler',
|
||||||
templateUrl: './basic-scheduler.component.html',
|
templateUrl: './basic-scheduler.component.html',
|
||||||
styleUrls: ['./basic-scheduler.component.css']
|
styleUrls: ['./basic-scheduler.component.css']
|
||||||
})
|
})
|
||||||
export class BasicSchedulerComponent {
|
export class BasicSchedulerComponent implements OnChanges{
|
||||||
|
|
||||||
dateCtrl: FormControl = new FormControl('', [Validators.required])
|
dateCtrl: FormControl = new FormControl('', [Validators.required])
|
||||||
|
@Input('taskgroup') taskgroup: TaskgroupEntityInfo | undefined
|
||||||
@Input('task') task: TaskEntityInfo | undefined
|
@Input('task') task: TaskEntityInfo | undefined
|
||||||
|
@Input('scheduleInfo') scheduleEntityInfo: BasicScheduleEntityInfo | undefined
|
||||||
@Output('onSchedule') scheduleEmitter: EventEmitter<BasicScheduleEntityInfo> = new EventEmitter<BasicScheduleEntityInfo>();
|
@Output('onSchedule') scheduleEmitter: EventEmitter<BasicScheduleEntityInfo> = new EventEmitter<BasicScheduleEntityInfo>();
|
||||||
|
|
||||||
constructor(private scheduleService: ScheduleService,
|
constructor(private scheduleService: ScheduleService,
|
||||||
private snackbar: MatSnackBar) {
|
private snackbar: MatSnackBar,
|
||||||
|
private router: Router) {
|
||||||
}
|
}
|
||||||
|
|
||||||
setDate(date: Date) {
|
setDate(date: Date) {
|
||||||
@ -24,14 +28,51 @@ export class BasicSchedulerComponent {
|
|||||||
|
|
||||||
schedule() {
|
schedule() {
|
||||||
if(this.task != undefined) {
|
if(this.task != undefined) {
|
||||||
this.scheduleService.schedulesTaskIDBasicPut(this.task.taskID, {
|
if(this.scheduleEntityInfo == undefined) {
|
||||||
scheduleDate: this.dateCtrl.value
|
this.scheduleService.schedulesTaskIDBasicPut(this.task.taskID, {
|
||||||
}).subscribe({
|
scheduleDate: this.dateCtrl.value
|
||||||
next: resp => {
|
}).subscribe({
|
||||||
this.scheduleEmitter.emit(resp);
|
next: resp => {
|
||||||
}
|
this.scheduleEmitter.emit(resp);
|
||||||
})
|
}
|
||||||
}
|
})
|
||||||
|
} else {
|
||||||
|
this.scheduleService.schedulesScheduleIDBasicPost(this.scheduleEntityInfo!.scheduleID, {
|
||||||
|
scheduleDate: this.dateCtrl.value
|
||||||
|
}).subscribe({
|
||||||
|
next: resp => {
|
||||||
|
this.router.navigateByUrl("/taskgroups/" + this.taskgroup!.taskgroupID + "/tasks/" + this.task!.taskID);
|
||||||
|
},
|
||||||
|
error: err => {
|
||||||
|
if(err.status == 403) {
|
||||||
|
this.snackbar.open("No permission", "",{duration: 2000});
|
||||||
|
} else if(err.status == 404) {
|
||||||
|
this.snackbar.open("Not found", "", {duration: 2000});
|
||||||
|
} else {
|
||||||
|
this.snackbar.open("Unexpected error", "",{duration: 2000});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
if(this.scheduleEntityInfo != undefined) {
|
||||||
|
this.dateCtrl.setValue(this.scheduleEntityInfo!.scheduleID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnChanges(): void {
|
||||||
|
if(this.scheduleEntityInfo != undefined) {
|
||||||
|
this.dateCtrl.setValue(this.scheduleEntityInfo!.scheduleID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setEditedBasicSchedule(basicSchedule: BasicScheduleEntityInfo) {
|
||||||
|
this.dateCtrl.setValue(basicSchedule.scheduleDate)
|
||||||
|
this.scheduleEntityInfo = basicSchedule;
|
||||||
|
console.log(this.dateCtrl.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="basicScheduleContainer">
|
<div class="basicScheduleContainer">
|
||||||
<p class="basicScheduleContent">{{schedule.scheduleDate | date:'EEEE, d MMM. y'}}</p>
|
<p class="basicScheduleContent">{{schedule.scheduleDate | date:'EEEE, d MMM. y'}}</p>
|
||||||
<div class="basicScheduleContent">
|
<div class="basicScheduleContent">
|
||||||
<button mat-icon-button color="primary"><mat-icon>edit</mat-icon></button>
|
<button mat-icon-button color="primary" [routerLink]="['/taskgroups', taskgroup!.taskgroupID, 'tasks', task!.taskID, 'schedule', schedule.scheduleID]"><mat-icon>edit</mat-icon></button>
|
||||||
<button mat-icon-button color="warn" (click)="deleteSchedule(schedule)"><mat-icon>delete</mat-icon></button>
|
<button mat-icon-button color="warn" (click)="deleteSchedule(schedule)"><mat-icon>delete</mat-icon></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,6 +19,6 @@
|
|||||||
>
|
>
|
||||||
</mwl-calendar-week-view>
|
</mwl-calendar-week-view>
|
||||||
|
|
||||||
<app-basic-scheduler *ngIf="scheduleStrategy === 1" #basicScheduler [task]="task" (onSchedule)="onBasicSchedule($event)"></app-basic-scheduler>
|
<app-basic-scheduler *ngIf="scheduleStrategy === 1" #basicScheduler [task]="task" [taskgroup]="taskgroup" (onSchedule)="onBasicSchedule($event)"></app-basic-scheduler>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -129,19 +129,48 @@ export class SchedulerComponent implements OnInit{
|
|||||||
}
|
}
|
||||||
|
|
||||||
fetchBasicSchedules() {
|
fetchBasicSchedules() {
|
||||||
this.scheduleService.schedulesTaskIDScheduleTypeGet(this.task!.taskID, "BASIC").subscribe({
|
this.activatedRoute.paramMap.subscribe(params => {
|
||||||
next: resp => {
|
if(params.has('scheduleID')) {
|
||||||
resp.forEach(basicSchedule => {
|
this.scheduleService.schedulesTaskIDScheduleTypeGet(this.task!.taskID, "BASIC").subscribe({
|
||||||
this.events.push({
|
next: resp => {
|
||||||
start: new Date(basicSchedule.scheduleDate),
|
resp.forEach(basicSchedule => {
|
||||||
title: this.computeTaskPath(),
|
if(basicSchedule.scheduleID === Number(params.get('scheduleID'))) {
|
||||||
color: colors['red'],
|
this.events.push({
|
||||||
allDay: true,
|
start: new Date(basicSchedule.scheduleDate),
|
||||||
|
title: this.computeTaskPath(),
|
||||||
|
color: colors['yellow'],
|
||||||
|
allDay: true,
|
||||||
|
})
|
||||||
|
this.basicScheduler?.setEditedBasicSchedule(basicSchedule);
|
||||||
|
} else {
|
||||||
|
this.events.push({
|
||||||
|
start: new Date(basicSchedule.scheduleDate),
|
||||||
|
title: this.computeTaskPath(),
|
||||||
|
color: colors['red'],
|
||||||
|
allDay: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.refresh.next();
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
this.scheduleService.schedulesTaskIDScheduleTypeGet(this.task!.taskID, "BASIC").subscribe({
|
||||||
|
next: resp => {
|
||||||
|
resp.forEach(basicSchedule => {
|
||||||
|
this.events.push({
|
||||||
|
start: new Date(basicSchedule.scheduleDate),
|
||||||
|
title: this.computeTaskPath(),
|
||||||
|
color: colors['red'],
|
||||||
|
allDay: true,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
this.refresh.next();
|
||||||
|
}
|
||||||
})
|
})
|
||||||
this.refresh.next();
|
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user