;
+ scheduleStartTime: string;
+ scheduleStopTime: string;
+}
+export namespace AdvancedScheduleInfo {
+ export type ScheduleTypeEnum = 'BASIC' | 'MODERATE' | 'ADVANCED';
+ export const ScheduleTypeEnum = {
+ Basic: 'BASIC' as ScheduleTypeEnum,
+ Moderate: 'MODERATE' as ScheduleTypeEnum,
+ Advanced: 'ADVANCED' as ScheduleTypeEnum
+ };
+}
+
+
diff --git a/frontend/src/api/model/advancedScheduleInfoAllOf.ts b/frontend/src/api/model/advancedScheduleInfoAllOf.ts
new file mode 100644
index 0000000..9e331f4
--- /dev/null
+++ b/frontend/src/api/model/advancedScheduleInfoAllOf.ts
@@ -0,0 +1,18 @@
+/**
+ * API Title
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
+ *
+ * The version of the OpenAPI document: 1.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+export interface AdvancedScheduleInfoAllOf {
+ scheduleStartTime: string;
+ scheduleStopTime: string;
+}
+
diff --git a/frontend/src/api/model/models.ts b/frontend/src/api/model/models.ts
index 26a3e14..e94238f 100644
--- a/frontend/src/api/model/models.ts
+++ b/frontend/src/api/model/models.ts
@@ -1,4 +1,7 @@
export * from './accountDeleteRequest';
+export * from './advancedScheduleFieldInfo';
+export * from './advancedScheduleInfo';
+export * from './advancedScheduleInfoAllOf';
export * from './basicScheduleEntityInfo';
export * from './basicScheduleFieldInfo';
export * from './basicScheduleInfo';
diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts
index b718252..65cc369 100644
--- a/frontend/src/app/app.module.ts
+++ b/frontend/src/app/app.module.ts
@@ -74,6 +74,7 @@ import { MissedScheduleForgetConfirmationDialogComponent } from './missed-schedu
import { OverdueTaskOverviewComponent } from './overdue-task-overview/overdue-task-overview.component';
import { UpcomingTaskOverviewComponent } from './upcoming-task-overview/upcoming-task-overview.component';
import { ActiveTaskOverviewComponent } from './active-task-overview/active-task-overview.component';
+import { AdvancedSchedulerComponent } from './schedules/advanced-scheduler/advanced-scheduler.component';
@NgModule({
declarations: [
AppComponent,
@@ -110,7 +111,8 @@ import { ActiveTaskOverviewComponent } from './active-task-overview/active-task-
MissedScheduleForgetConfirmationDialogComponent,
OverdueTaskOverviewComponent,
UpcomingTaskOverviewComponent,
- ActiveTaskOverviewComponent
+ ActiveTaskOverviewComponent,
+ AdvancedSchedulerComponent
],
imports: [
BrowserModule,
diff --git a/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.css b/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.html b/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.html
new file mode 100644
index 0000000..12b4f1c
--- /dev/null
+++ b/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.html
@@ -0,0 +1,17 @@
+
+
+
+ MM/DD/YYYY
+
+
+
+
+
+ MM/DD/YYYY
+
+
+
+
+
+
+
diff --git a/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.spec.ts b/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.spec.ts
new file mode 100644
index 0000000..662a3ea
--- /dev/null
+++ b/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdvancedSchedulerComponent } from './advanced-scheduler.component';
+
+describe('AdvancedSchedulerComponent', () => {
+ let component: AdvancedSchedulerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ declarations: [AdvancedSchedulerComponent]
+ });
+ fixture = TestBed.createComponent(AdvancedSchedulerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.ts b/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.ts
new file mode 100644
index 0000000..0c5fb8c
--- /dev/null
+++ b/frontend/src/app/schedules/advanced-scheduler/advanced-scheduler.component.ts
@@ -0,0 +1,26 @@
+import {Component, Input} from '@angular/core';
+import {TaskgroupEntityInfo, TaskShortInfo} from "../../../api";
+import {FormControl, Validators} from "@angular/forms";
+
+@Component({
+ selector: 'app-advanced-scheduler',
+ templateUrl: './advanced-scheduler.component.html',
+ styleUrls: ['./advanced-scheduler.component.css']
+})
+export class AdvancedSchedulerComponent {
+
+ @Input() task: TaskShortInfo | undefined;
+ @Input() taskgroup: TaskgroupEntityInfo | undefined
+
+
+ startCtrl = new FormControl('', [Validators.required])
+ endCtrl = new FormControl('', [Validators.required])
+
+ setDate(clickedDate: Date) {
+ if(this.startCtrl.value == undefined) {
+ this.startCtrl.setValue(clickedDate.toISOString());
+ } else if(new Date(Date.parse(this.startCtrl.value)) < clickedDate) {
+ this.endCtrl.setValue(clickedDate.toISOString());
+ }
+ }
+}
diff --git a/frontend/src/app/schedules/scheduler/scheduler.component.html b/frontend/src/app/schedules/scheduler/scheduler.component.html
index 73e2dc4..dd32174 100644
--- a/frontend/src/app/schedules/scheduler/scheduler.component.html
+++ b/frontend/src/app/schedules/scheduler/scheduler.component.html
@@ -20,5 +20,5 @@
-
+
diff --git a/frontend/src/app/schedules/scheduler/scheduler.component.ts b/frontend/src/app/schedules/scheduler/scheduler.component.ts
index 6d5755f..4e1b256 100644
--- a/frontend/src/app/schedules/scheduler/scheduler.component.ts
+++ b/frontend/src/app/schedules/scheduler/scheduler.component.ts
@@ -14,6 +14,7 @@ import {CalendarDatePipe} from "angular-calendar/modules/common/calendar-date/ca
import {BasicSchedulerComponent} from "../basic-scheduler/basic-scheduler.component";
import * as events from "events";
import { EventColor } from 'calendar-utils';
+import {AdvancedSchedulerComponent} from "../advanced-scheduler/advanced-scheduler.component";
const colors: Record = {
red: {
@@ -66,6 +67,7 @@ export class SchedulerComponent implements OnInit{
events: CalendarEvent[] = []
@ViewChild('basicScheduler') basicScheduler: BasicSchedulerComponent | undefined
+ @ViewChild('advancedScheduler') advancedScheduler: AdvancedSchedulerComponent | undefined
constructor(private activatedRoute: ActivatedRoute,
private taskgroupService: TaskgroupService,
@@ -118,8 +120,12 @@ export class SchedulerComponent implements OnInit{
protected readonly CalendarView = CalendarView;
timeClick(clickedDate: Date) {
- if(this.basicScheduler != undefined) {
+
+ console.log(clickedDate)
+ if(this.basicScheduler != undefined && this.scheduleStrategy === 1) {
this.basicScheduler.setDate(clickedDate)
+ } else if(this.advancedScheduler != undefined && this.scheduleStrategy === 3) {
+ this.advancedScheduler.setDate(clickedDate)
}
}
diff --git a/openapi.yaml b/openapi.yaml
index ecc7e78..c7ff51e 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -1328,7 +1328,9 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/BasicScheduleFieldInfo'
+ oneOf:
+ - $ref: '#/components/schemas/BasicScheduleFieldInfo'
+ - $ref: '#/components/schemas/AdvancedScheduleInfo'
responses:
200:
description: operation successfull
@@ -1371,7 +1373,10 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/BasicScheduleFieldInfo'
+ oneOf:
+ - $ref: '#/components/schemas/BasicScheduleFieldInfo'
+ - $ref: '#/components/schemas/AdvancedScheduleInfo'
+
responses:
200:
description: operation successfull
@@ -2347,4 +2352,30 @@ components:
type: string
format: date
description: time the schedule was stopped
-
\ No newline at end of file
+ AdvancedScheduleInfo:
+ allOf:
+ - $ref: '#/components/schemas/ScheduleInfo'
+ - type: object
+ required:
+ - scheduleStartTime
+ - scheduleStopTime
+ additionalProperties: false
+ properties:
+ scheduleStartTime:
+ type: string
+ format: date
+ scheduleStopTime:
+ type: string
+ format: date
+ AdvancedScheduleFieldInfo:
+ required:
+ - scheduleStartTime
+ - scheduleStopTime
+ additionalProperties: false
+ properties:
+ scheduleStartTime:
+ type: string
+ format: date
+ scheduleStopTime:
+ type: string
+ format: date
\ No newline at end of file