feat: migrate updateTask functionality to Django Rest

This commit is contained in:
Chneemann 2025-04-06 16:30:38 +02:00
parent 0be9f98cca
commit 8f79b0cf76
5 changed files with 51 additions and 15 deletions

View file

@ -282,7 +282,7 @@
[img]="'check'"
[imgFilter]="'none'"
[value]="
['', 'none', 'todo', 'inprogress', 'awaitfeedback', 'done'].includes(
['', 'todo', 'inprogress', 'awaitfeedback', 'done'].includes(
overlayData.toString()
)
? ('addTask.create' | translate)

View file

@ -84,8 +84,10 @@ export class AddTaskComponent implements OnInit {
async loadExistingTaskData() {
if (this.overlayType === 'newTaskOverlay') {
// OverlayData = Status "todo"
this.taskData.status = this.overlayData;
} else if (this.overlayData) {
// OverlayData = Current TaskId
const taskData = await firstValueFrom(this.getTaskData(this.overlayData));
if (taskData) {
this.taskData = { ...this.taskData, ...taskData };
@ -258,6 +260,16 @@ export class AddTaskComponent implements OnInit {
onSubmit(ngForm: NgForm) {
if (ngForm.submitted && ngForm.form.valid) {
// OverlayData = Current TaskId
if (this.overlayData) {
this.updateTask(ngForm);
} else {
this.createTask(ngForm);
}
}
}
createTask(ngForm: NgForm) {
this.apiService.saveNewTask(this.taskData).subscribe({
next: (response) => {
this.toastNotificationService.createTaskSuccessToast();
@ -271,6 +283,21 @@ export class AddTaskComponent implements OnInit {
},
});
}
updateTask(ngForm: NgForm) {
// OverlayData = Current TaskId
this.apiService.updateTask(this.taskData, this.overlayData).subscribe({
next: (response) => {
this.toastNotificationService.updateTaskSuccessToast();
this.updateNotifierService.notifyUpdate('task');
this.clearTaskData(ngForm);
this.closeOverlay();
this.router.navigate(['/board']);
},
error: (error) => {
console.error('Fehler beim Speichern:', error);
},
});
}
/**
@ -293,6 +320,7 @@ export class AddTaskComponent implements OnInit {
* @returns {void}
*/
deleteTask(overlayData: string) {
// OverlayData = Current TaskId
this.apiService.deleteTaskById(overlayData);
}

View file

@ -12,7 +12,7 @@ import { ApiService } from '../../services/api.service';
import { Task } from '../../interfaces/task.interface';
import { TaskService } from '../../services/task.service';
import { LoadingSpinnerComponent } from '../../shared/components/loading-spinner/loading-spinner.component';
import { finalize, Subject, takeUntil } from 'rxjs';
import { debounceTime, finalize, Subject, takeUntil } from 'rxjs';
import { UpdateNotifierService } from '../../services/update-notifier.service';
import { ToastNotificationService } from '../../services/toast-notification.service';
import { ResizeService } from '../../services/resize.service';
@ -96,7 +96,7 @@ export class BoardComponent {
private subscribeToTaskUpdates() {
this.updateNotifierService.taskUpdated$
.pipe(takeUntil(this.destroy$))
.pipe(debounceTime(50), takeUntil(this.destroy$))
.subscribe(() => {
this.loadAllTasks();
});

View file

@ -69,6 +69,10 @@ export class ApiService {
return this.request<Task>('POST', '/api/tasks/', task);
}
updateTask(task: Task, taskId: string): Observable<Task> {
return this.request<Task>('PATCH', `/api/tasks/${taskId}/`, task);
}
deleteTaskById(taskId: string): Observable<Task> {
return this.request<Task>('DELETE', `/api/tasks/${taskId}/`);
}

View file

@ -63,6 +63,10 @@ export class ToastNotificationService {
this.createInfoToast('Task successfully moved!', 'Task Moved');
}
updateTaskSuccessToast(): void {
this.createSuccessToast('Task updated successfully!', 'Task Updated');
}
// Subtask
updateSubtaskSuccessToast(): void {