Files
web2.0-backend/infoscreen/static/js/infoscreen_controllers.js
T
2017-10-31 15:54:09 +02:00

147 lines
4.9 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, {timeout:5000}).then(function(response){
templates = response.data.instances;
if (templates.length == 0) {
$timeout(get_rotation, 10000);
}
else {
$scope.next();
}
},function(response) { //eslint-disable-line no-unused-vars
$timeout(get_rotation, 10000);
});
}
$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 (var key in temp.item.options){
$scope[key] = temp.item.options[key]
}
}
};
$timeout($scope.next, temp.duration * 1000);
}
});
//Doing this the ugly way because Angular likes to be the special priviledged child
app.filter('trusted_url', ['$sce', function ($sce) {
return function(url) {
return $sce.trustAsResourceUrl(url);
};
}]);
app.controller('ABBController', function($scope, $http){
$scope.jobs = [];
var min_date = moment().subtract(30,'days').format("YYYY-MM-DD%20HH:mm:ss");
var url = "https://sahkoinsinoorikilta.fi/api/news.php";
var params = "?type=11&lang=fi&title_search=ABB&min_date="+min_date
$http.get(url+params).then(function(response){
$scope.jobs = _.filter(response.data, function(job){
if (job.autohide_enabled == 1){
if (moment(job.autohide) < moment()){
return false;
}
}
return true;
});
if ($scope.jobs.length > 3) {
$scope.jobs = $scope.jobs.slice(0, 3);
}
});
});
app.controller('SossoController', function($scope, $http) {
$scope.data = [];
$http.get("https://sosso.fi/api/get_recent_posts/?count=" + 3 ).then(function(response)
{
$scope.data = response.data;
})
});
app.controller('ApyController', function($scope, $http) {
$scope.items = [];
$http.get("/infoscreen/apyjson").then(function(response)
{
$scope.items = response.data.data
})
});
app.controller('EventController', function($scope, $http) {
$scope.data = [];
$http.get("https://sik.ayy.fi/api/events.php?limit=10").then(function(response)
{
$scope.events = response.data;
$scope.events = _.each($scope.events, function(ev){
var time = moment(ev.event_start);
ev.event_start = time;
ev.event_start = time.format("ddd DD.MM.");
// lets not trust locale
ev.event_start = ev.event_start.replace("Mon", "Ma");
ev.event_start = ev.event_start.replace("Tue", "Ti");
ev.event_start = ev.event_start.replace("Wed", "Ke");
ev.event_start = ev.event_start.replace("Thu", "To");
ev.event_start = ev.event_start.replace("Fri", "Pe");
ev.event_start = ev.event_start.replace("Sat", "La");
ev.event_start = ev.event_start.replace("Sun", "Su");
});
})
});
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() {
$http.get('/infoscreen/hsl_data')
.then(function(data, status, headers, config) { //eslint-disable-line no-unused-vars
$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
$scope.departureThreshold = data.data['departure_threshold'];
$scope.hurryThreshold = data.data['hurry_threshold'];
});
}
function update_clock() {
$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();
}
);