From e8bea7abcf703ff9e14f3b2a5a5ea068db50ad9a Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 23 Oct 2023 15:44:58 +0200 Subject: [PATCH] Scheduler Component --- .../scheduler/scheduler.component.css | 16 +++++ .../scheduler/scheduler.component.html | 5 ++ .../scheduler/scheduler.component.spec.ts | 21 ++++++ .../scheduler/scheduler.component.ts | 70 +++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 frontend/src/app/schedules/scheduler/scheduler.component.css create mode 100644 frontend/src/app/schedules/scheduler/scheduler.component.html create mode 100644 frontend/src/app/schedules/scheduler/scheduler.component.spec.ts create mode 100644 frontend/src/app/schedules/scheduler/scheduler.component.ts diff --git a/frontend/src/app/schedules/scheduler/scheduler.component.css b/frontend/src/app/schedules/scheduler/scheduler.component.css new file mode 100644 index 0000000..67e8ece --- /dev/null +++ b/frontend/src/app/schedules/scheduler/scheduler.component.css @@ -0,0 +1,16 @@ +.container { + margin: 20px auto; + width: 70%; +} + +.spacer { + margin-bottom: 2.5%; +} + + +@media screen and (max-width: 600px) { + .container { + width: 100%; + margin: 20px 10px; + } +} diff --git a/frontend/src/app/schedules/scheduler/scheduler.component.html b/frontend/src/app/schedules/scheduler/scheduler.component.html new file mode 100644 index 0000000..86cc339 --- /dev/null +++ b/frontend/src/app/schedules/scheduler/scheduler.component.html @@ -0,0 +1,5 @@ +
+ + + +
diff --git a/frontend/src/app/schedules/scheduler/scheduler.component.spec.ts b/frontend/src/app/schedules/scheduler/scheduler.component.spec.ts new file mode 100644 index 0000000..6548836 --- /dev/null +++ b/frontend/src/app/schedules/scheduler/scheduler.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SchedulerComponent } from './scheduler.component'; + +describe('SchedulerComponent', () => { + let component: SchedulerComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [SchedulerComponent] + }); + fixture = TestBed.createComponent(SchedulerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/schedules/scheduler/scheduler.component.ts b/frontend/src/app/schedules/scheduler/scheduler.component.ts new file mode 100644 index 0000000..57a9a94 --- /dev/null +++ b/frontend/src/app/schedules/scheduler/scheduler.component.ts @@ -0,0 +1,70 @@ +import {Component, OnChanges, OnInit, SimpleChanges, ViewChild} from '@angular/core'; +import {NavigationLink, NavigationLinkListComponent} from "../../navigation-link-list/navigation-link-list.component"; +import {TaskEntityInfo, TaskgroupEntityInfo, TaskgroupService, TaskService} from "../../../api"; +import {ActivatedRoute} from "@angular/router"; + +@Component({ + selector: 'app-scheduler', + templateUrl: './scheduler.component.html', + styleUrls: ['./scheduler.component.css'] +}) +export class SchedulerComponent implements OnInit{ + defaultNavigationLinkPath: NavigationLink[] = [ + { + linkText: "Dashboard", + routerLink: ['/'] + }, + { + linkText: "Taskgroups", + routerLink: ["/taskgroups"] + } + ] + taskgroups: TaskgroupEntityInfo[] = [] + taskgroup: TaskgroupEntityInfo | undefined + taskgroupPath: TaskgroupEntityInfo[] = [] + taskgroupID: number = -1; + @ViewChild('navLinkList') navLinkListComponent: NavigationLinkListComponent | undefined + + task: TaskEntityInfo | undefined + + constructor(private activatedRoute: ActivatedRoute, + private taskgroupService: TaskgroupService, + private taskService: TaskService) { + } + + ngOnInit(): void { + this.activatedRoute.paramMap.subscribe(params => { + if (params.has('taskgroupID')) { + this.taskgroupID = Number(params.get('taskgroupID')); + this.taskgroupService.taskgroupsTaskgroupIDGet(this.taskgroupID).subscribe({ + next: resp => { + this.taskgroups = resp.children + this.taskgroupPath = resp.ancestors + this.taskgroup = resp.taskgroupInfo; + this.initializeNavigationLinkList() + } + }) + } + + if(params.has('taskID')) { + this.taskService.tasksTaskIDGet(Number(params.get('taskID'))).subscribe({ + next: resp => { + this.task = resp; + this.initializeNavigationLinkList() + } + }) + } + }); + } + + initializeNavigationLinkList() { + if(this.taskgroup != undefined && this.task != undefined) { + this.navLinkListComponent!.addNavigationLink(this.taskgroup!.taskgroupName, ['/taskgroups', this.taskgroup!.taskgroupID.toString()]) + this.taskgroupPath.forEach(taskgroupEntity => { + this.navLinkListComponent!.addNavigationLink(taskgroupEntity.taskgroupName, ['/taskgroups', taskgroupEntity.taskgroupID.toString()]); + }) + this.navLinkListComponent!.addNavigationLink(this.task!.taskName, ['/taskgroups', this.taskgroup!.taskgroupID.toString(), 'tasks', this.task.taskID.toString()]); + this.navLinkListComponent!.addNavigationLink('Schedule', [this.taskgroup!.taskgroupID.toString(), 'tasks', this.task.taskID.toString(), 'schedule']) + } + } +}