frontend: fix crazy events
This commit is contained in:
parent
3c8f9e55b6
commit
1b6587de24
@ -7,6 +7,12 @@ String.prototype.capitalize = function() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Array.prototype.inArray = function(v) {
|
||||||
|
return this.reduce(function(presence, current) {
|
||||||
|
return presence || current == v;
|
||||||
|
}, false);
|
||||||
|
}
|
||||||
|
|
||||||
angular.module("FICApp")
|
angular.module("FICApp")
|
||||||
.directive('autofocus', ['$timeout', function($timeout) {
|
.directive('autofocus', ['$timeout', function($timeout) {
|
||||||
return {
|
return {
|
||||||
|
@ -64,45 +64,40 @@ angular.module("FICApp")
|
|||||||
.controller("EventsController", function($scope, $http, $interval) {
|
.controller("EventsController", function($scope, $http, $interval) {
|
||||||
$scope.events = [];
|
$scope.events = [];
|
||||||
var refreshEvents = function() {
|
var refreshEvents = function() {
|
||||||
|
// Update times
|
||||||
|
var now = new Date().getTime();
|
||||||
|
$scope.events.forEach(function(ev) {
|
||||||
|
ev.since = now - ev.time;
|
||||||
|
});
|
||||||
|
|
||||||
$http.get("/events.json").then(function(response) {
|
$http.get("/events.json").then(function(response) {
|
||||||
|
// Don't make anything if the page hasn't changed
|
||||||
if ($scope.lasteventsetag != undefined && $scope.lasteventsetag == response.headers().etag)
|
if ($scope.lasteventsetag != undefined && $scope.lasteventsetag == response.headers().etag)
|
||||||
return;
|
return;
|
||||||
$scope.lasteventsetag = response.headers().etag;
|
$scope.lasteventsetag = response.headers().etag;
|
||||||
|
|
||||||
var events = response.data;
|
var events = response.data;
|
||||||
var now = new Date();
|
|
||||||
var key = 0;
|
var kEvents = {};
|
||||||
angular.forEach($scope.events, function(event) {
|
events.forEach(function(ev) {
|
||||||
event.keep = 0;
|
kEvents[ev.id] = ev;
|
||||||
});
|
});
|
||||||
angular.forEach(events, function(event) {
|
var kxEvents = {}
|
||||||
|
$scope.events.forEach(function(ev) {
|
||||||
|
kxEvents[ev.id] = ev;
|
||||||
|
});
|
||||||
|
|
||||||
|
var oldEvents = $(Object.keys(kxEvents)).not(Object.keys(kEvents)).get();
|
||||||
|
var newEvents = $(Object.keys(kEvents)).not(Object.keys(kxEvents)).get();
|
||||||
|
|
||||||
|
$scope.events.filter(function(val) {
|
||||||
|
return !oldEvents.inArray(val.id);
|
||||||
|
});
|
||||||
|
newEvents.forEach(function(ev) {
|
||||||
|
var event = kEvents[ev];
|
||||||
event.time = Date.parse(event.time);
|
event.time = Date.parse(event.time);
|
||||||
//event.since = now.getTime() - now.getTimezoneOffset() * 60000 - event.time;
|
event.since = now - event.time;
|
||||||
event.since = now.getTime() - event.time;
|
|
||||||
event.keep = 1;
|
|
||||||
while (key <= $scope.events.length) {
|
|
||||||
if (key >= $scope.events.length) {
|
|
||||||
$scope.events.push(event);
|
|
||||||
break;
|
|
||||||
} else if (event.id == $scope.events[key].id) {
|
|
||||||
$scope.events[key].txt = event.txt;
|
|
||||||
$scope.events[key].time = event.time;
|
|
||||||
$scope.events[key].kind = event.kind;
|
|
||||||
$scope.events[key].since = event.since;
|
|
||||||
$scope.events[key].keep = 1;
|
|
||||||
break;
|
|
||||||
} else if (event.time > $scope.events[key].time) {
|
|
||||||
$scope.events.unshift(event);
|
$scope.events.unshift(event);
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
key += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
angular.forEach($scope.events, function(event, i) {
|
|
||||||
if (event.keep == 0) {
|
|
||||||
$scope.events.splice(i, 1);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user