diff --git a/src/app/components/board/board.component.html b/src/app/components/board/board.component.html index 26e8458..ddd1dc0 100644 --- a/src/app/components/board/board.component.html +++ b/src/app/components/board/board.component.html @@ -32,7 +32,16 @@ >add
- + + + + + +
No tasks
+
add
- + + + + + +
No tasks
+
add
- + + + + + +
No tasks
+
add
- + + + + + +
No tasks
+
diff --git a/src/app/components/board/board.component.scss b/src/app/components/board/board.component.scss index 0a91098..68a7049 100644 --- a/src/app/components/board/board.component.scss +++ b/src/app/components/board/board.component.scss @@ -121,3 +121,22 @@ section { padding-left: 0; } } + +/*------------- EMPTY TASK -------------*/ + +.empty-task { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + max-width: 243px; + height: 48px; + border-radius: 10px; + border: 1px dashed var(--gray); + background-color: var(--very-light-gray2); + box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.16); + font-size: 16px; + font-weight: 400; + color: var(--gray); + margin: 15.5px 0; +} diff --git a/src/app/components/board/board.component.ts b/src/app/components/board/board.component.ts index 8420eba..8b4416e 100644 --- a/src/app/components/board/board.component.ts +++ b/src/app/components/board/board.component.ts @@ -15,27 +15,27 @@ import { TaskComponent } from './task/task.component'; export class BoardComponent { @ViewChild('searchField') searchField!: ElementRef; - allTasks: Task[] = []; - constructor( public dragDropService: DragDropService, private taskService: TaskService ) {} ngOnInit() { - this.dragDropService.itemDropped.subscribe(({ index, status }) => { - this.handleItemDropped(index, status); + this.dragDropService.itemDropped.subscribe(({ id, status }) => { + this.handleItemDropped(id, status); }); } - getTask() { - return this.taskService.allTasks; + getTask(status: string) { + return this.taskService.allTasks.filter((task) => task.status === status); } - handleItemDropped(index: number, status: string): void { - let firebaseId = this.taskService.allTasks[index].id; - this.taskService.allTasks[index].status = status; - this.taskService.updateTask(firebaseId, index); + handleItemDropped(id: string, status: string): void { + const index = this.taskService.allTasks.findIndex((task) => task.id === id); + if (index !== -1) { + this.taskService.allTasks[index].status = status; + this.taskService.updateTask(id, index); + } this.searchField.nativeElement.value = ''; } diff --git a/src/app/components/board/task/task.component.html b/src/app/components/board/task/task.component.html index 34736df..3719a0b 100644 --- a/src/app/components/board/task/task.component.html +++ b/src/app/components/board/task/task.component.html @@ -1,62 +1,41 @@ -
- {{ task }} -
- - diff --git a/src/app/components/board/task/task.component.scss b/src/app/components/board/task/task.component.scss index eaf337e..dbcf3e6 100644 --- a/src/app/components/board/task/task.component.scss +++ b/src/app/components/board/task/task.component.scss @@ -3,24 +3,6 @@ section { margin: 15.5px 0; } -.empty-task { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - min-width: 246px; - height: 48px; - border-radius: 10px; - border: 1px dashed var(--gray); - background-color: var(--very-light-gray2); - box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.16); - font-size: 16px; - font-weight: 400; - color: var(--gray); - width: 246px; - margin: 15.5px 0; -} - .content { position: relative; display: flex; diff --git a/src/app/components/board/task/task.component.ts b/src/app/components/board/task/task.component.ts index fbf867b..612ebe1 100644 --- a/src/app/components/board/task/task.component.ts +++ b/src/app/components/board/task/task.component.ts @@ -11,7 +11,6 @@ import { TaskService } from '../../../services/task.service'; styleUrl: './task.component.scss', }) export class TaskComponent { - @Input() index: number | undefined; @Input() task: any; categoryColors = new Map([ @@ -28,13 +27,13 @@ export class TaskComponent { // Subtasks - completedSubtasks(index: number) { - const subtasks = this.taskService.allTasks[index].subtasksDone; + completedSubtasks() { + const subtasks = this.task.subtasksDone; return subtasks.filter((subtask: boolean) => subtask === true).length; } - completedSubtasksPercent(index: number): number { - const subtasks = this.taskService.allTasks[index].subtasksDone; + completedSubtasksPercent(): number { + const subtasks = this.task.subtasksDone; const completedSubtasksCount = subtasks.filter( (subtask: boolean) => subtask === true ).length; diff --git a/src/app/services/drag-drop.service.ts b/src/app/services/drag-drop.service.ts index f76bc26..c3a898e 100644 --- a/src/app/services/drag-drop.service.ts +++ b/src/app/services/drag-drop.service.ts @@ -4,12 +4,12 @@ import { Injectable, EventEmitter } from '@angular/core'; providedIn: 'root', }) export class DragDropService { - itemDropped = new EventEmitter<{ index: number; status: string }>(); + itemDropped = new EventEmitter<{ id: string; status: string }>(); constructor() {} - startDragging(event: DragEvent, index: number) { - event.dataTransfer?.setData('text/plain', index.toString()); + startDragging(event: DragEvent, id: string) { + event.dataTransfer?.setData('text/plain', id); } allowDrop(event: DragEvent) { @@ -20,9 +20,9 @@ export class DragDropService { event.preventDefault(); const dataTransfer = event.dataTransfer; if (dataTransfer) { - const index = +dataTransfer.getData('text/plain'); - if (!isNaN(index)) { - this.itemDropped.emit({ index, status }); + const id = dataTransfer.getData('text/plain'); + if (id) { + this.itemDropped.emit({ id, status }); } } } diff --git a/src/app/services/task.service.ts b/src/app/services/task.service.ts index 41df52e..64c44db 100644 --- a/src/app/services/task.service.ts +++ b/src/app/services/task.service.ts @@ -26,7 +26,10 @@ export class TaskService { return onSnapshot(this.getTaskRef(), (list) => { this.allTasks = []; list.forEach((element) => { - this.allTasks.push(element.data()); + const taskData = element.data(); + taskData['id'] = element.id; + this.allTasks.push(taskData); + this.filteredTasks.push(taskData); }); }); }