|
@@ -1,11 +1,20 @@
|
|
|
angular.module('tabooServices', [])
|
|
|
.factory('Timer', function($interval) {
|
|
|
+ var promise;
|
|
|
var service = {
|
|
|
count: 0,
|
|
|
+ endTime: 0,
|
|
|
+ remainingTime: function() {
|
|
|
+ var ms = service.endTime - new Date().getTime();
|
|
|
+ return Math.round(Math.max(0, ms) / 1000);
|
|
|
+ },
|
|
|
start: function(duration) {
|
|
|
+ if(service.remainingTime() > 0) $interval.cancel(promise);
|
|
|
+ var now = new Date().getTime();
|
|
|
+ service.endTime = now + duration * 1000;
|
|
|
service.count = duration;
|
|
|
- $interval(function() {
|
|
|
- service.count -= 1;
|
|
|
+ promise = $interval(function() {
|
|
|
+ service.count = service.remainingTime();
|
|
|
}, 1000, duration);
|
|
|
}
|
|
|
}
|