@@ -6,6 +6,7 @@ angular.module('timer', [])
6
6
scope : {
7
7
interval : '=interval' ,
8
8
startTimeAttr : '=startTime' ,
9
+ endTimeAttr : '=endTime' ,
9
10
countdownattr : '=countdown' ,
10
11
autoStart : '&autoStart'
11
12
} ,
@@ -24,6 +25,7 @@ angular.module('timer', [])
24
25
}
25
26
26
27
$scope . startTime = null ;
28
+ $scope . endTime = null ;
27
29
$scope . timeoutId = null ;
28
30
$scope . countdown = $scope . countdownattr && parseInt ( $scope . countdownattr , 10 ) >= 0 ? parseInt ( $scope . countdownattr , 10 ) : undefined ;
29
31
$scope . isRunning = false ;
@@ -48,7 +50,17 @@ angular.module('timer', [])
48
50
49
51
$scope . start = $element [ 0 ] . start = function ( ) {
50
52
$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
+ }
52
64
resetTimeout ( ) ;
53
65
tick ( ) ;
54
66
} ;
@@ -93,7 +105,7 @@ angular.module('timer', [])
93
105
$scope . millis = new Date ( ) - $scope . startTime ;
94
106
var adjustment = $scope . millis % 1000 ;
95
107
96
- if ( $scope . countdownattr ) {
108
+ if ( $scope . countdownattr || $scope . endTimeAttr ) {
97
109
$scope . millis = $scope . countdown * 1000 ;
98
110
}
99
111
0 commit comments