"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
var _ = require("underscore");
var FlugdatenProxy_js_1 = require("./FlugdatenProxy.js");
var core_1 = require("@angular/core");
var FlugService = /** @class */ (function () {
    function FlugService(flugdatenProxy) {
        this.flugdatenProxy = flugdatenProxy;
    }
    FlugService_1 = FlugService;
    Object.defineProperty(FlugService.prototype, "flugSet", {
        get: function () {
            return FlugService_1.flugSetStatic;
        },
        set: function (value) {
            FlugService_1.flugSetStatic = value;
        },
        enumerable: true,
        configurable: true
    });
    // getAll(): Observable<Flug[]> {
    //       return              this.flugdatenProxy.getAll()
    FlugService.prototype.getAll = function (callback) {
        var _this = this;
        this.callback = callback;
        console.log("getAll() 1");
        if (this.flugSet) {
            console.log("Daten im Cache!");
            callback(this.flugSet);
            return;
        } // Wenn Daten im Cache, nix tun!
        this.flugdatenProxy.getAllAsObservable().subscribe(function (x) { _this.flugSet = x; console.log("subscribe...", x); callback(x); });
    };
    FlugService.prototype.getAllAsOversable = function () {
        this.flugSetO = this.flugdatenProxy.getAllAsObservable();
        return this.flugSetO;
    };
    FlugService.prototype.getByID = function (id) {
        var f = _.findWhere(this.flugSet, { FlugNr: id });
        console.log("Hole Flug: " + id, f);
        return f;
    };
    //     if (FlugService.flugset == null) {
    //        // nicht im Cache? Dann laden
    //  return this.flugdatenProxy.getAll();
    //         console.log("FlugService.getAll()1: ",FlugService.flugset);
    //  }
    //         }
    //  console.log("getAll()2: ",this.flugset);
    // console.log("getAll()3: " + FlugService.flugset.length);
    // FlugService.flugset = _.filter(FlugService.flugset, function (f: Flug) { return f.FlugNr > 110; });
    // // console.log("getAll()4: " + FlugService.flugset.length);
    // //   alert(_.size(this.flugset));
    // FlugService.flugsetO = Observable.from(FlugService.flugset);
    // // FlugService.flugset .forEach(element => {
    // //     console.log(element);
    // // });
    // // FlugService.flugsetO .forEach(element => {
    // //     console.log(element);
    // // });
    // // console.log(FlugService.flugsetO);
    // // return FlugService.flugsetO;
    // return FlugService.flugset;
    // getAllAsObserable(): Observable<Flug> {
    //     if (FlugService.flugset == null) {
    //         FlugService.flugset = new Array<Flug>();
    //         for (var i: number = 0; i < 20; i++) {
    //             var f = new Flug();
    //             f.FlugNr = 100 + i;
    //             f.Abflugort = "Rom";
    //             f.Zielort = "Berlin";
    //             f.Datum = new Date();
    //             f.FreiePlaetze = i;
    //             FlugService.flugset.push(f);
    //         }
    //     }
    //     FlugService.flugset = _.filter(FlugService.flugset, function (f: Flug) { return f.FlugNr > 110; });
    //     FlugService.flugsetO = Observable.from(FlugService.flugset);
    //     return FlugService.flugsetO;
    // }
    // RXJS Doku: https://xgrommx.github.io/rx-book/content/getting_started_with_rxjs/creating_and_querying_observable_sequences/querying_observable_sequences.html
    FlugService.prototype.deleteById = function (id) {
        this.flugSet = _.without(this.flugSet, _.findWhere(this.flugSet, { 'FlugNr': id }));
        console.log("FlugService.delete(): " + this.flugSet.length);
    };
    FlugService.prototype.delete = function (flug) {
        // this.flugSet.pop(); --> das würde UI mitkriegen, weil Array gleich geblieben ist
        this.flugSet = _.without(this.flugSet, flug); // das kriegt UI nicht mit!
        console.log("FlugService.delete(): " + this.flugSet.length);
        this.callback(this.flugSet);
        // FlugService.flugSetO.flatMap(x=>x).count().subscribe(x=>console.log("FlugService.delete()1: Anz Vorher=" + x));
        // if ( FlugService.flugSetO) FlugService.flugSetO.subscribe(x=> console.log("FlugService.delete()1: ",x));
        // FlugService.flugSetO = FlugService.flugSetO.flatMap(x=>x).filter(x=>x.FlugNr != flug.FlugNr).toArray();
        // FlugService.flugSetO.count().subscribe(x=>console.log("FlugService.delete()2: Anz Nachher=" + x));
    };
    FlugService = FlugService_1 = __decorate([
        core_1.Injectable(),
        __metadata("design:paramtypes", [FlugdatenProxy_js_1.FlugdatenProxy])
    ], FlugService);
    return FlugService;
    var FlugService_1;
}());
exports.FlugService = FlugService;
//# sourceMappingURL=FlugService.js.map