Start using new HSL API

This commit is contained in:
Jan Tuomi
2017-10-31 15:54:09 +02:00
parent 2501d034db
commit ea48cef206
7 changed files with 185 additions and 188 deletions
+24 -106
View File
@@ -1,4 +1,5 @@
var app = angular.module('infoApp', ['ngAnimate', 'ngRoute']);
app.controller('infoscreen_main', function($scope,$http,$timeout){
var templates = [];
$scope.init = function(rot){
@@ -103,13 +104,22 @@ app.controller('EventController', function($scope, $http) {
})
});
app.filter('unixTimeToDifference', function() {
return function(input) {
var date = moment.unix(input);
var now = moment();
var res = date.diff(now, 'minutes');
return res;
}
})
app.controller('timetableCtrl',
function($scope, $http, $interval) {
function load(){
function load() {
$http.get('/infoscreen/hsl_data')
.then(function(data, status, headers, config) { //eslint-disable-line no-unused-vars
$scope.arr=[];
parse(data);
$scope.stoptimes = data.data;
$scope.error = data.data.error || null;
});
$http.get('/infoscreen/hsl_data/settings')
.then(function(data, status, headers, config) { //eslint-disable-line no-unused-vars
@@ -117,112 +127,20 @@ app.controller('timetableCtrl',
$scope.hurryThreshold = data.data['hurry_threshold'];
});
}
$scope.$on('$destroy', function() {
$interval.cancel(inter1);
$interval.cancel(inter2);
$interval.cancel(inter3);
});
var objects;
$scope.arr=[];
var dict=[];
function parse(data){
objects=data['data'];
for(var objectIndex in objects){
var stop = objects[objectIndex];
var lineIndex;
for (lineIndex in stop['lines']){
var elem=stop['lines'][lineIndex].split(":");
dict[elem[0]]=elem[1];
}
for (lineIndex in stop['departures']){
var line = stop['departures'][lineIndex];
var time = line['time'];
var date = line['date'];
var hours = Math.floor(time / 100);
var minutes = time % 100;
if (hours >= 24) {
hours -= 24;
date++;
}
var code = line['code'].substring(1, 5);
if (code.charAt(0) == '0') {
code = code.substring(1,4);
}
var departure = {
"stop": stop['name'].split(",")[0],
"dist": stop['dist'],
"bus": code,
"date": date,
"time": pad(hours, 2) + ":" + pad(minutes, 2),
"laststop": dict[line['code']].split(",")[0].split(" l.")[0],
"hurry": false
};
if(departure['laststop']=='Otaniemi')
break;
if(departure['stop']=='Alvar Aallon puisto')
departure['stop']="A. A. puisto"
var trigger = true;
for (var arrIndex = $scope.arr.length - 1; arrIndex >= 0; arrIndex--) {
if ($scope.arr[arrIndex]['bus'] == departure['bus'] &&
$scope.arr[arrIndex]['laststop'] == departure['laststop']) {
if ($scope.arr[arrIndex]['dist'] == departure['dist']){
break;
}
else if ($scope.arr[arrIndex]['dist'] > departure['dist']){
$scope.arr.splice(arrIndex, 1);
}
else {
trigger = false;
}
}
}
if (trigger) {
$scope.arr.push(departure);
}
}
}
function pad(num, size) {
var s = num + "";
while (s.length < size) {
s = "0" + s;
}
return s;
}
delOld();
}
function delOld(){
var tooSoon = typeof($scope.departureThreshold) != 'undefined' ? $scope.departureThreshold: 0;
var hurry = typeof($scope.hurryThreshold) != 'undefined' ? $scope.hurryThreshold : 0;
var f = new Date();
for (var a=$scope.arr.length-1; a>=0; a--) {
var time=$scope.arr[a]['time'].split(":");
var date=$scope.arr[a]['date'].toString();
var 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]);
var diff=(d.getTime()-f.getTime());
$scope.arr[a]['timedelta']=Math.floor(diff/60000);
if(diff < tooSoon*60000) {
$scope.arr.splice(a,1);
}
else if (diff < hurry*60000) {
$scope.arr[a]['hurry']=true;
}
}
}
function updateTime(){
function update_clock() {
$scope.clock = Date.now();
}
$scope.clock = Date.now();
$scope.$on('$destroy', function() {
$interval.cancel(load_interval);
$interval.cancel(clock_interval);
});
var load_interval = $interval(load, 5000);
var clock_interval = $interval(update_clock, 1000);
update_clock();
load();
var inter1=$interval(delOld,2000);
var inter2=$interval(load,10000);
var inter3=$interval(updateTime, 1000);
}
);