84 lines
2.7 KiB
TypeScript
84 lines
2.7 KiB
TypeScript
import {Component, Inject, OnInit} from '@angular/core';
|
|
import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog";
|
|
import {TaskEntityInfo, TaskRepeatDayInfo, TaskRepeatWeekDayInfo, TaskseriesService} from "../../../api";
|
|
import * as moment from "moment";
|
|
import {FormArray, FormBuilder, FormGroup, Validators} from "@angular/forms";
|
|
import DeadlineStrategyEnum = TaskRepeatDayInfo.DeadlineStrategyEnum;
|
|
|
|
|
|
@Component({
|
|
selector: 'app-task-weekly-series-creator',
|
|
templateUrl: './task-weekly-series-creator.component.html',
|
|
styleUrls: ['./task-weekly-series-creator.component.css']
|
|
})
|
|
export class TaskWeeklySeriesCreatorComponent implements OnInit{
|
|
|
|
repeatingOffsetForm: FormGroup | undefined
|
|
availableDeadlineStrategys: DeadlineStrategyEnum[] = ["DEADLINE_EQUAL_START", "DEADLINE_FIT_START"]
|
|
|
|
constructor(private dialogRef: MatDialogRef<TaskWeeklySeriesCreatorComponent>,
|
|
private taskRepeatingService: TaskseriesService,
|
|
@Inject(MAT_DIALOG_DATA) public tasks: TaskEntityInfo[],
|
|
private formbuilder: FormBuilder) {
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
this.repeatingOffsetForm = this.formbuilder.group({
|
|
offsets: this.formbuilder.array(this.tasks.map(task => this.formbuilder.group({
|
|
offsetCtrl: ['', [Validators.required, Validators.min(1)]]
|
|
}))),
|
|
deadlineStrategyCtrl: ['', Validators.required],
|
|
endingDateCtrl: ['', Validators.required]
|
|
|
|
})
|
|
}
|
|
|
|
|
|
|
|
getDayOfWeek(date: string) {
|
|
return moment(date).format("dddd")
|
|
}
|
|
|
|
formatDate(date: string): string {
|
|
return moment(date).format("dd, DD. MMMM YYYY")
|
|
}
|
|
|
|
removeTaskFromRepeatingList(task: TaskEntityInfo, formIndex: number) {
|
|
this.tasks = this.tasks.filter(t => t.taskID !== task.taskID);
|
|
this.deleteOffset(formIndex)
|
|
}
|
|
|
|
get offsets() {
|
|
return this.repeatingOffsetForm!.controls["offsets"] as FormArray
|
|
}
|
|
|
|
deleteOffset(taskIndex: number) {
|
|
this.offsets.removeAt(taskIndex);
|
|
}
|
|
|
|
saveRepeatingTask() {
|
|
const weekDayInfos: TaskRepeatWeekDayInfo[] = []
|
|
const formArrayValues: {offsetCtrl: string}[] = this.offsets.value
|
|
for(let i=0; i<formArrayValues.length; i++) {
|
|
weekDayInfos.push({
|
|
taskID: this.tasks[i].taskID,
|
|
offset: Number(formArrayValues[i].offsetCtrl) * 7
|
|
})
|
|
}
|
|
|
|
this.taskRepeatingService.tasksTaskseriesWeeklyPost({
|
|
deadlineStrategy: this.repeatingOffsetForm!.controls['deadlineStrategyCtrl']!.value!,
|
|
endDate: moment(this.repeatingOffsetForm!.controls['endingDateCtrl']!.value!).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
|
|
weekDayInfos: weekDayInfos
|
|
}).subscribe({
|
|
next: resp => {
|
|
this.dialogRef.close(true)
|
|
}
|
|
})
|
|
}
|
|
|
|
cancel() {
|
|
this.dialogRef.close(false);
|
|
}
|
|
}
|