125 lines
3.3 KiB
JavaScript
125 lines
3.3 KiB
JavaScript
var app = angular.module('infoApp', ['ngAnimate', 'ngRoute']);
|
|
|
|
app.controller('infoscreen_main', function($scope,$http,$timeout){
|
|
var templates = [];
|
|
$scope.init = function(rot){
|
|
$scope.rotation = rot;
|
|
get_rotation();
|
|
}
|
|
var get_rotation = function(){
|
|
$scope.index = -1;
|
|
$http.get('/infoscreen/rotation/'+$scope.rotation).then(function(response){
|
|
templates = response.data.instances;
|
|
$scope.next();
|
|
});
|
|
}
|
|
|
|
$scope.next = function(){
|
|
$scope.index++;
|
|
if ($scope.index >= templates.length){
|
|
return get_rotation();
|
|
}
|
|
var temp = templates[$scope.index];
|
|
$scope.active = {
|
|
template: temp.item.template_url,
|
|
onload: function(){
|
|
for (key in temp.item.options){
|
|
$scope[key] = temp.item.options[key]
|
|
}
|
|
}
|
|
};
|
|
$timeout($scope.next, temp.duration * 1000);
|
|
}
|
|
});
|
|
app.controller('ABBController', function($scope, $http){
|
|
$scope.jobs = [];
|
|
$http.get("/infoscreen/abbjobs").then(function(response){
|
|
$scope.jobs = response.data;
|
|
})
|
|
});
|
|
app.controller('timetableCtrl',
|
|
function($scope, $http, $interval) {
|
|
function load(){
|
|
$http.get('/static/js/hsl.json')
|
|
.then(function(data, status, headers, config) {
|
|
$scope.arr=[];
|
|
parse(data);
|
|
});
|
|
};
|
|
var obj;
|
|
$scope.arr=[];
|
|
var dict=[];
|
|
function parse(data){
|
|
obj=data['data'];
|
|
for(var a in obj){
|
|
for(var b in obj[a]['lines']){
|
|
var elem=obj[a]['lines'][b].split(":");
|
|
dict[elem[0]]=elem[1];
|
|
}
|
|
for(var b in obj[a]['departures']){
|
|
var e=true;
|
|
var time=obj[a]['departures'][b]['time'];
|
|
date=obj[a]['departures'][b]['date'];
|
|
if(time<1000)
|
|
var unit = 1;
|
|
else
|
|
var unit = 2;
|
|
var hh= Math.floor(obj[a]['departures'][b]['time']/100);
|
|
if(hh>=24){
|
|
hh-=24;
|
|
date++;
|
|
}
|
|
var mm= obj[a]['departures'][b]['time']%100;
|
|
var c= obj[a]['departures'][b]['code'].substring(1,5);
|
|
if(c.charAt(0)=='0')
|
|
c=c.substring(1,4);
|
|
z={"stop":obj[a]['name'].split(",")[0],"dist":obj[a]['dist'],"bus":c,"date":date,"time":pad(hh,2)+":"+pad(mm,2),"laststop":dict[obj[a]['departures'][b]['code']].split(",")[0].split(" ")[0]};
|
|
for(var i= $scope.arr.length-1;i>=0;i--)
|
|
if( $scope.arr[i]['bus']==z['bus'] && $scope.arr[i]['laststop']==z['laststop']){
|
|
if( $scope.arr[i]['dist']==z['dist']){
|
|
break;
|
|
}
|
|
else if( $scope.arr[i]['dist'] > z['dist']){
|
|
$scope.arr.splice(i,1);
|
|
}
|
|
else
|
|
e=false;
|
|
}
|
|
if(e){
|
|
$scope.arr.push(z);
|
|
}
|
|
|
|
}
|
|
}
|
|
function pad(num, size) {
|
|
var s = num+"";
|
|
while (s.length < size) s = "0" + s;
|
|
return s;
|
|
}
|
|
delOld();
|
|
}
|
|
function delOld(){
|
|
f= new Date();
|
|
for(var a=$scope.arr.length-1; a>=0; a--){
|
|
if( $scope.arr[a]['time']<1000)
|
|
var unit = 1;
|
|
else
|
|
var unit = 2;
|
|
var time=$scope.arr[a]['time'].split(":");
|
|
date=$scope.arr[a]['date'].toString();
|
|
d= new Date(f);
|
|
d.setFullYear(date.substring(0,4),date.substring(4,6)-1,date.substring(6,8));
|
|
d.setHours(time[0]);
|
|
d.setMinutes(time[1]);
|
|
if(d < f){
|
|
$scope.arr.splice(a,1);
|
|
}
|
|
}
|
|
}
|
|
load();
|
|
var t=$interval(delOld,2000);
|
|
var z=$interval(load,60000);
|
|
}
|
|
);
|
|
|