Skip to content

Commit 10d31b0

Browse files
committed
Don't use countdown when end time is set. This makes the timer stoppable.
1 parent 2f927eb commit 10d31b0

File tree

4 files changed

+30
-16
lines changed

4 files changed

+30
-16
lines changed

app/js/timer.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,7 @@ angular.module('timer', [])
5151
$scope.start = $element[0].start = function () {
5252
$scope.startTime = $scope.startTimeAttr ? new Date($scope.startTimeAttr) : new Date();
5353
$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-
}
54+
$scope.countdown = $scope.countdownattr && parseInt($scope.countdownattr, 10) > 0 ? parseInt($scope.countdownattr, 10) : undefined;
6455
resetTimeout();
6556
tick();
6657
};
@@ -105,10 +96,20 @@ angular.module('timer', [])
10596
$scope.millis = new Date() - $scope.startTime;
10697
var adjustment = $scope.millis % 1000;
10798

108-
if ($scope.countdownattr || $scope.endTimeAttr) {
99+
if ($scope.endTimeAttr) {
100+
$scope.millis = $scope.endTime - new Date();
101+
adjustment = $scope.interval - $scope.millis % 1000;
102+
}
103+
104+
105+
if ($scope.countdownattr) {
109106
$scope.millis = $scope.countdown * 1000;
110107
}
111108

109+
if ($scope.millis < 0) {
110+
$scope.stop();
111+
$scope.millis = 0;
112+
}
112113
calculateTimeUnits();
113114
if ($scope.countdown > 0) {
114115
$scope.countdown--;

dist/angular-timer.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* angular-timer - v1.0.8 - 2013-12-12 10:35 AM
2+
* angular-timer - v1.0.8 - 2013-12-15 11:04 PM
33
* https://github.com/siddii/angular-timer
44
*
55
* Copyright (c) 2013 Siddique Hameed
@@ -13,6 +13,7 @@ angular.module('timer', [])
1313
scope: {
1414
interval: '=interval',
1515
startTimeAttr: '=startTime',
16+
endTimeAttr: '=endTime',
1617
countdownattr: '=countdown',
1718
autoStart: '&autoStart'
1819
},
@@ -31,6 +32,7 @@ angular.module('timer', [])
3132
}
3233

3334
$scope.startTime = null;
35+
$scope.endTime = null;
3436
$scope.timeoutId = null;
3537
$scope.countdown = $scope.countdownattr && parseInt($scope.countdownattr, 10) >= 0 ? parseInt($scope.countdownattr, 10) : undefined;
3638
$scope.isRunning = false;
@@ -55,6 +57,7 @@ angular.module('timer', [])
5557

5658
$scope.start = $element[0].start = function () {
5759
$scope.startTime = $scope.startTimeAttr ? new Date($scope.startTimeAttr) : new Date();
60+
$scope.endTime = $scope.endTimeAttr ? new Date($scope.endTimeAttr) : null;
5861
$scope.countdown = $scope.countdownattr && parseInt($scope.countdownattr, 10) > 0 ? parseInt($scope.countdownattr, 10) : undefined;
5962
resetTimeout();
6063
tick();
@@ -100,10 +103,20 @@ angular.module('timer', [])
100103
$scope.millis = new Date() - $scope.startTime;
101104
var adjustment = $scope.millis % 1000;
102105

106+
if ($scope.endTimeAttr) {
107+
$scope.millis = $scope.endTime - new Date();
108+
adjustment = $scope.interval - $scope.millis % 1000;
109+
}
110+
111+
103112
if ($scope.countdownattr) {
104113
$scope.millis = $scope.countdown * 1000;
105114
}
106115

116+
if ($scope.millis < 0) {
117+
$scope.stop();
118+
$scope.millis = 0;
119+
}
107120
calculateTimeUnits();
108121
if ($scope.countdown > 0) {
109122
$scope.countdown--;

dist/angular-timer.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ <h3>
8787
<p>
8888
Following is the countdown timer setting for the days, hours, minutes & seconds to <b>January 1, 2014 (GMT-6) </b>
8989
<p class="muted">(01 Jan 2014 06:00:00 GMT = 1388556000000 milliseconds)</p>
90-
<code ng-non-bindable="">&lt;timer end-time=&quot;1388556000000&quot; interval=&quot;1000&quot;&gt;{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.&lt;/timer&gt;</code>
90+
<code ng-non-bindable="">&lt;timer end-time=&quot;1388556000000&quot;&gt;{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.&lt;/timer&gt;</code>
9191
<h3>
92-
<timer end-time="1388556000000" interval="1000">{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.</timer>
92+
<timer end-time="1388556000000">{{days}} days, {{hours}} hours, {{minutes}} minutes, {{seconds}} seconds.</timer>
9393
</h3>
9494
</div>
9595
</section>

0 commit comments

Comments
 (0)