/// <reference path="../lib/typings/angular/angular.d.ts" />
/// <reference path="../lib/typings/jquery/jquery.d.ts" />
console.log("Lade Modul...");
/// // Angular-App
// abhängig von Modul angularMoment
var app = angular.module("WWWings", ['angularMoment']); // []
// Anlegen des Controllers
// DI:
// $scope für Datenbindungen
// $http für Ajax-Rückrufe
// $location für clientseitige Navigation
app.controller("WWWingsController", ["$scope", "$http", init]);
//app.run(function (amMoment) {
// amMoment.changeLocale('de');
//});
// Hilfsfunktion zum Zahlenformatieren 12 -> 0012
function numberFixedLen(n, len) {
    var num = parseInt(n, 10);
    len = parseInt(len, 10);
    if (isNaN(num) || isNaN(len)) {
        return n;
    }
    num = '' + num;
    while (num.length < len) {
        num = '0' + num;
    }
    return num;
}
// AngularFilter definieren für numberFixedLen
app.filter('numberFixedLen', function () {
    return numberFixedLen;
});
function init($scope, $http) {
    console.debug("NG Controller Init");
    // ViewModel für rein.clientseitige Lösung anlegen
    $scope.vm1 = new VM1($scope, $http);
    ;
    $scope.vm1.GetFluege();
    // ViewModel für hybride Lösung anlegen
    $scope.vm2 = new VM2($scope, $http);
    ;
}
;
// GO-Klasse auf dem Client
var Flug = (function () {
    function Flug() {
    }
    return Flug;
}());
// VM für rein clientseitige Lösung mit AngularJS
var VM1 = (function () {
    function VM1(scope, http) {
        this.scope = scope;
        this.http = http;
    }
    // Proxy für /Flug/GetFluegeAPI
    VM1.prototype.GetFluege = function () {
        var _this = this;
        console.debug("GetFluege");
        var params = null; //{ flugNummer: this.eingabe };
        this.http.get("/wwwings/GetFluegeAPI", { params: params }).then(function (result) {
            _this.Fluege = result.data;
            _this.LetzteAenderung = "Geladene Fl\u00FCge " + _this.Fluege.length;
            console.log(_this.LetzteAenderung);
            for (var i = 0; i <= _this.Fluege.length; i++) {
                console.log(_this.Fluege[i].flugNr);
            }
        }).catch(function (reason) {
            _this.LetzteAenderung = "Fehler: " + JSON.stringify(reason);
        });
    };
    // Proxy für /Flug/PlaetzeAendernAPI
    VM1.prototype.PlaetzeAendern = function (flugNummer, anzahl) {
        var _this = this;
        console.debug("PlaetzeAendern");
        var params = null; //{ flugNummer: this.eingabe };
        this.http.get("/wwwings/PlaetzeAendernAPI/" + flugNummer + "/" + anzahl, { params: params }).then(function (result) {
            _this.LetzteAenderung = "Letzte \u00C4nderung: Flug " + flugNummer + ": " + JSON.stringify(result.data) + " freie Pl\u00E4tze";
            console.log(_this.LetzteAenderung);
            if (_this.Fluege != null) {
                var flug = _this.Fluege.filter(function (person) { return person.flugNr === flugNummer; });
                flug[0].freiePlaetze = result.data;
            }
        }).catch(function (reason) {
            _this.LetzteAenderung = "Fehler: " + JSON.stringify(reason);
        });
    };
    return VM1;
}());
// VM für hybride Lösung mit jQuery
var VM2 = (function () {
    function VM2(scope, http) {
        this.scope = scope;
        this.http = http;
    }
    // Proxy für /Flug/PlaetzeAendernAPI
    VM2.prototype.PlaetzeAendern = function (flugNummer, anzahl) {
        var _this = this;
        console.debug("PlaetzeAendern");
        var params = null; //{ flugNummer: this.eingabe };
        this.http.get("/wwwings/PlaetzeAendernAPI/" + flugNummer + "/" + anzahl, { params: params }).then(function (result) {
            _this.LetzteAenderung = "Letzte \u00C4nderung: Flug " + flugNummer + ": " + JSON.stringify(result.data) + " freie Pl\u00E4tze";
            console.log(_this.LetzteAenderung);
            $("#FP_" + flugNummer).text(numberFixedLen(result.data, 3));
        }).catch(function (reason) {
            _this.LetzteAenderung = "Fehler: " + JSON.stringify(reason);
        });
    };
    return VM2;
}());
