Skip to content

Commit 133a74d

Browse files
committed
Add endTime attribute to timer directive.
1 parent d2b6a84 commit 133a74d

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

app/js/timer.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ angular.module('timer', [])
66
scope: {
77
interval: '=interval',
88
startTimeAttr: '=startTime',
9+
endTimeAttr: '=endTime',
910
countdownattr: '=countdown',
1011
autoStart: '&autoStart'
1112
},
@@ -24,6 +25,7 @@ angular.module('timer', [])
2425
}
2526

2627
$scope.startTime = null;
28+
$scope.endTime = null;
2729
$scope.timeoutId = null;
2830
$scope.countdown = $scope.countdownattr && parseInt($scope.countdownattr, 10) >= 0 ? parseInt($scope.countdownattr, 10) : undefined;
2931
$scope.isRunning = false;
@@ -48,7 +50,17 @@ angular.module('timer', [])
4850

4951
$scope.start = $element[0].start = function () {
5052
$scope.startTime = $scope.startTimeAttr ? new Date($scope.startTimeAttr) : new Date();
51-
$scope.countdown = $scope.countdownattr && parseInt($scope.countdownattr, 10) > 0 ? parseInt($scope.countdownattr, 10) : undefined;
53+
$scope.endTime = $scope.endTimeAttr ? new Date($scope.endTimeAttr) : null;
54+
if ($scope.endTime) {
55+
var difference = $scope.endTime - new Date();
56+
if (difference > 0) {
57+
$scope.countdown = difference/1000|0;
58+
} else {
59+
$scope.countdown = 0;
60+
}
61+
} else {
62+
$scope.countdown = $scope.countdownattr && parseInt($scope.countdownattr, 10) > 0 ? parseInt($scope.countdownattr, 10) : undefined;
63+
}
5264
resetTimeout();
5365
tick();
5466
};
@@ -93,7 +105,7 @@ angular.module('timer', [])
93105
$scope.millis = new Date() - $scope.startTime;
94106
var adjustment = $scope.millis % 1000;
95107

96-
if ($scope.countdownattr) {
108+
if ($scope.countdownattr || $scope.endTimeAttr) {
97109
$scope.millis = $scope.countdown * 1000;
98110
}
99111

0 commit comments

Comments
 (0)