Files
Lentolaskuri/app/scripts/app.js
Juho Teperi 8936480bce !
2013-05-15 09:36:03 +03:00

63 lines
1.9 KiB
JavaScript

'use strict';
define([
'collections/route',
'collections/results',
'views/route',
'views/leginput',
'views/roundtrip',
'views/passengers',
'views/map',
'views/total',
'views/operation'
], function (Route, Results, RouteView, LegInput, RoundtripInput, PassengersInput, MapView, TotalView, OperationView) {
var App = function () {
this.initialize = function () {
if (!Function.prototype.bind) {
Function.prototype.bind = function (oThis) {
if (typeof this !== 'function') {
// closest thing possible to the ECMAScript 5 internal IsCallable function
throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
FNOP = function () {},
fBound = function () {
return fToBind.apply(this instanceof FNOP && oThis ? this : oThis,
aArgs.concat(Array.prototype.slice.call(arguments)));
};
FNOP.prototype = this.prototype;
fBound.prototype = new FNOP();
return fBound;
};
}
this.route = new Route();
this.legInput = new LegInput({collection: this.route});
this.roundtripInput = new RoundtripInput();
this.passengersInput = new PassengersInput();
this.routeView = new RouteView({collection: this.route});
this.mapView = new MapView({collection: this.route});
// Order is important. ResultsView requires that Route legs are
// on dom as ResultView references from and to legs to calculate
// position.
this.results = new Results([], {route: this.route});
this.totalView = new TotalView({model: this.results.total});
new OperationView();
};
this.initialize();
};
return App;
});