import { Component, Input, OnInit, OnChanges, ViewChild } from '@angular/core'; import { MatButton } from '@angular/material/button'; import { MatTableDataSource } from '@angular/material/table'; import { NoteService } from '../data-object-service'; import { Note, NULL_Note } from '../data-objects'; import { MessageService } from '../message.service'; @Component({ selector: 'app-note', templateUrl: './note.component.html', styleUrls: ['./note.component.css'] }) export class NoteComponent implements OnInit { @Input() selectedTenantId: number @ViewChild('addNoteButton') addNoteButton: MatButton collapse: boolean = false notes: Note[] notesDataSource: MatTableDataSource notesDisplayedColumns: string[] = [ "createdAt", "note" ] newNote : Note = NULL_Note constructor( private noteService: NoteService, private messageService: MessageService ) { } async getNotes(): Promise { try { if (this.selectedTenantId) { this.messageService.add(`Trying to load note for ${this.selectedTenantId}`) this.notes = await this.noteService.getNotesByTenant(this.selectedTenantId) this.notes.reverse() this.messageService.add(`Notes: ${JSON.stringify(this.notes, undefined, 4)}`) this.notesDataSource = new MatTableDataSource(this.notes) } } catch (err) { this.messageService.add(`Error in getNotes: ${JSON.stringify(err, undefined, 4)}`) } } async addNote(): Promise { try { this.addNoteButton.disabled = true this.newNote.tenant = this.selectedTenantId this.newNote.created_at = new Date().toDateString() this.messageService.add(`addNote: ${ JSON.stringify(this.newNote, undefined, 4) }`) this.newNote = await this.noteService.postNote(this.newNote) this.messageService.add(`New addNote created: ${this.newNote.id}`) this.newNote = { 'tenant': this.selectedTenantId, 'note': '', 'created_at': '', 'id': 0 } this.getNotes() } catch (err) { this.messageService.add(`Error in addNote: ${JSON.stringify(err, undefined, 4)}`) } finally { this.addNoteButton.disabled = false } } ngOnInit(): void { this.messageService.add(`NoteComponent.ngOnInit, account: ${this.selectedTenantId}`) this.getNotes() } ngOnChanges(): void { this.messageService.add(`NoteComponent.ngOnChanges, account: ${this.selectedTenantId}`) this.getNotes() } }