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

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

@Component({
 selector: 'Flugliste',
 templateUrl: 'App/Flugliste/Flugliste.html',
 styleUrls: ['App/Flugliste/Flugliste.css'],
 providers: [FlugService], // lokale Registrierung eines Dienstes für Dependency Injection

})
export class Flugliste implements OnInit {

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

 status: string;
 flugSet: Observable<any>

 ngOnInit() {
  this.flugSet = this.flugService.flugSetO;
  this.DatenLaden();

 

  // tatsächlich erwartet Angular 2 ein Observable, dass ein Array von Flug verpackt :-(
  // this.flugSet = o2;

  // das geht nicht "NgFor only supports binding to Iterables such as Arrays."
  // this.flugSet = o4;

  this.DatenLaden();
 }

 DatenLaden() {

  if (this.flugService.flugSetO) this.flugService.flugSetO.subscribe(x => console.log("fug: ", x));


  this.flugSet = this.flugService.getAllAsOversable();

  // console.log("UI:", this.flugSet);
  // 	this.flugService.getAll(daten => {
  // 		this.flugSet = FlugService.flugSet;
  // 		this.status = this.flugSet.length + " Flüge geladen.";
  // 	});
 }

 DatenLaden2() {

  // this.flugSet = FlugService.flugSet;
  // this.status = this.flugSet.length + " Flüge geladen.";

 }

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

 Aendern(flug: Flug) {
  let link = ['/edit', flug.FlugNr];
  this.router.navigate(link);
 }

 // Event-Handler für Nachricht von untergeordneter Komponente
 onDatenGeaendertEvent(flug: Flug) {
  console.log("EVENT: Flug geändert", flug)
  // this.flugSet = FlugService.flugSet;
 }
}