// Angular Library-Importe
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';

// Importe für eigene Klassen
import { Flug } from '../Modell/Flug'
import { FlugService } from '../Services/FlugService' // Dienst
import { Flugdetail } from '../Flugdetail/Flugdetail'; // für Event

@Component({
 selector: 'Flugliste',
 templateUrl: 'App/Flugliste/Flugliste.html',
 styleUrls: ['App/Flugliste/Flugliste.css'],
 providers: [FlugService], // Registrierung eines Dienstes für Injektion 
})
export class Flugliste implements OnInit {

 constructor(private flugService: FlugService,
  private router: Router) { // hier wird FlugService und Router injiziert
  console.log("Flugliste.Konstruktor!!!");
 }

 status: string;
 flugSet: Array<Flug>;

 ngOnInit() {
  this.DatenLaden();
 }

// andere Syntaxform:
// ngOnInit() {
//    this.flugService.getAll(daten => { // Callback
//    this.flugSet = this.flugService.flugSet;
//    this.status = this.flugSet.length + " Flüge geladen.";
//   });
//  }

 DatenLaden() {
  this.flugService.getAll(daten => { // Callback
   this.flugSet = this.flugService.flugSet;
   this.status = this.flugSet.length + " Flüge geladen.";
   console.log("Callback empfangen!");
  });
 }

 DatenLaden2() {
  this.flugSet = this.flugService.flugSet;
  this.status = this.flugSet.length + " Flüge geladen.";
 }

 // Flug löschen hier in dieser Komponente
 Loeschen(flug: Flug) {
  this.flugService.delete(flug); // Dienst aufrufen
  // this.flugSet = this.flugService.flugSet; // Datenbindung aktualisieren
  this.status = `Flug ${flug.FlugNr} gelöscht!`;
  // console.log("delete(): " + this.flugSet.length);
 }

 // Sprung zur Edit-Ansicht eines Flugs
 Aendern(flug: Flug) {
  var link = ['/edit', flug.FlugNr];
  this.router.navigate(link); // Ansicht aufrufen
 }

 // Event-Handler für Nachricht von untergeordneter Komponente, wenn diese Flug gelöscht hat
 onFlugGeloescht(flug: Flug) {
  console.log("!!!onFlugGeloescht",flug);
  this.status = `Flug ${flug.FlugNr} gelöscht!`;
  this.flugSet = this.flugService.flugSet; // Datenbindung aktualisieren
 }
}