import { Component, OnInit } from '@angular/core'; import { FormGroup, FormBuilder } from '@angular/forms'; import { ToDo } from './todo'; import { TodoService } from './todo.service'; import { tsvFormat } from 'd3'; @Component({ selector: 'app-todos', templateUrl: './todos.component.html', styleUrls: ['./todos.component.scss'] }) export class TodosComponent implements OnInit { public showSidebar = false; inputFg: FormGroup = Object.create(null); todoId = 6; copyTodos: ToDo[]; /* search: 'all'; */ selectedCategory = 'all'; searchText: string | null = null; editSave = 'Edit'; todos: ToDo[] = this.todoService.getTodos(); constructor(public fb: FormBuilder, public todoService: TodoService) { this.copyTodos = this.todos; } mobileSidebar() { this.showSidebar = !this.showSidebar; } ngOnInit() { this.inputFg = this.fb.group({ mess: [] }); } addTodo(value: string) { if (this.inputFg?.get('mess')?.value.trim().length === 0) { return; } this.todos.push( { id: this.todoId, message: this.inputFg?.get('mess')?.value, completionStatus: false, edit: false, date: new Date() } ); this.copyTodos = this.todos; this.todoId++; this.inputFg.patchValue({ mess: '', }); } allTodos(): void { this.todos.forEach(todo => todo.completionStatus = ( <HTMLInputElement>event!.target).checked); } selectionlblClick(val: string) { if (val === 'all') { this.copyTodos = this.todos; this.selectedCategory = 'all'; } else if (val === 'uncomplete') { this.copyTodos = this.todos.filter(todo => !todo.completionStatus); this.selectedCategory = 'uncomplete'; } else if (val === 'complete') { this.copyTodos = this.todos.filter(x => x.completionStatus); this.selectedCategory = 'complete'; } } editTodo(i: number, str: string) { if (this.copyTodos) { if (str === 'edit') { // tslint:disable-next-line: no-non-null-assertion this.copyTodos.find(x => x.id === i)!.edit = true; } else { // tslint:disable-next-line: no-non-null-assertion this.copyTodos.find(x => x.id === i)!.edit = false; } } } deleteTodo(id: number) { console.log(id); this.todos.splice(id, 1); } remainingList(): number { return this.todos.filter(todo => !todo.completionStatus).length; } }