import { Component, OnInit } from '@angular/core'; import { MessageService } from '../message.service'; import { FlatService, PremiseService } from '../data-object-service'; import { Flat, Premise } from '../data-objects'; import { MatTableDataSource } from '@angular/material/table' interface DN_Flat { flat: Flat premise: Premise } @Component({ selector: 'app-my-flats', templateUrl: './my-flats.component.html', styleUrls: ['./my-flats.component.css'] }) export class MyFlatsComponent implements OnInit { flats: Flat[] premises: Premise[] dnFlats: DN_Flat[] = [] dataSource: MatTableDataSource displayedColumns: string[] = ["description", "premise", "area", "flat_no"] constructor( private flatService: FlatService, private premiseService: PremiseService, private messageService: MessageService ) { } async getFlats(): Promise { try { this.messageService.add("Trying to load flats") this.flats = await this.flatService.getFlats() this.messageService.add(`Flats loaded: ${ JSON.stringify(this.flats, undefined, 4) }`) this.messageService.add("Trying to load premises") this.premises = await this.premiseService.getPremises() this.messageService.add(`Premises loaded: ${ JSON.stringify(this.premises, undefined, 4) }`) const premisesDict = new Map() for (let p of this.premises) { premisesDict.set(p.id, p) } for (let f of this.flats) { this.dnFlats.push({ flat: f, premise: premisesDict.get(f.premise) }) } this.dataSource = new MatTableDataSource(this.dnFlats) } catch (err) { // throw err this.messageService.add(`Error in getFlats: ${ JSON.stringify(err, undefined, 4) }`) } } ngOnInit(): void { this.messageService.add("MyFlatsComponent.ngOnInit") this.getFlats() } }