Skip to content

Commit 3cb22bd

Browse files
committed
improved starting and stopping timer syncronisation with server, whould fix mtierltd#60
1 parent b22fc7a commit 3cb22bd

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

js/timer.js

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

2-
2+
33
(function() {
4-
4+
55

66
$( function() {
77
var days='30';
@@ -230,6 +230,10 @@
230230
localStorage.setItem('timerStartTimeLocal', data.running[0].start + now - data.now );
231231
$('#start-tracking > span').addClass("stop-button").removeClass("play-button");
232232
timerInterval = setInterval(function() {
233+
if (localStorage.getItem('isTimerStarted') === 'false'){
234+
clearInterval(timerInterval);
235+
return;
236+
}
233237
var timerStartTimeLocal = localStorage.getItem('timerStartTimeLocal');
234238
var now = Math.floor(Date.now() / 1000);
235239

@@ -339,7 +343,7 @@
339343
.done(function(data, status, jqXHR) {
340344
var response = data;
341345
if ('Error' in response){
342-
alert(response.Error);
346+
alert(response.Error);
343347
}
344348
})
345349
.fail(function() {
@@ -465,7 +469,7 @@
465469
.done(function(data, status, jqXHR) {
466470
var response = data;
467471
if ('Error' in response){
468-
alert(response.Error);
472+
alert(response.Error);
469473
}
470474
getWorkItems();
471475
})
@@ -484,7 +488,7 @@
484488
.done(function(data, status, jqXHR) {
485489
var response = data;
486490
if ('Error' in response){
487-
alert(response.Error);
491+
alert(response.Error);
488492
}
489493
getWorkItems();
490494
})
@@ -501,52 +505,64 @@
501505

502506
function startTimer(projectId = null, tags = ""){
503507
if(localStorage.getItem('isTimerStarted') === 'true'){
504-
stopTimer();
508+
stopTimer(startTimer, [projectId, tags]);
509+
return;
505510
}
506511
var baseUrl = OC.generateUrl('/apps/timetracker/ajax/start-timer');
507512
var workName = $('#work-input').val();
508513
if (workName == ''){
509514
workName = 'no description';
510515
}
511516
var jqxhr = $.post( "ajax/start-timer/"+encodeURIComponent(encodeURIComponent(workName)), { projectId: projectId, tags: tags}, function() {
512-
localStorage.setItem('isTimerStarted', true);
513-
$('#start-tracking > span').addClass("stop-button").removeClass("play-button");
514-
getWorkItems();
515517
})
516518
.done(function(data, status, jqXHR) {
517519
var response = data;
518520
if ('Error' in response){
519521
alert(response.Error);
522+
} else {
523+
localStorage.setItem('isTimerStarted', true);
524+
$('#start-tracking > span').addClass("stop-button").removeClass("play-button");
520525
}
521526
})
522527
.fail(function() {
523528
alert( "error" );
524-
});
529+
}).always(function() {
530+
getWorkItems();
531+
});
525532

526533
}
527-
function stopTimer(){
534+
function stopTimer(onStopped = null, args = []){
528535

529536
var workName = $('#work-input').val();
530537
if (workName == ''){
531538
workName = 'no description';
532539
}
533540
var jqxhr = $.post( "ajax/stop-timer/"+encodeURIComponent(encodeURIComponent(workName)), function() { // encode twice so we can pass / character
534-
localStorage.setItem('isTimerStarted', false);
535-
$('#start-tracking > span').addClass("play-button").removeClass("stop-button");
536-
getWorkItems();
537541
})
538542
.done(function(data, status, jqXHR) {
539543
var response = data;
540544
if ('Error' in response){
541545
alert(response.Error);
546+
} else {
547+
localStorage.setItem('isTimerStarted', false);
548+
$('#start-tracking > span').addClass("play-button").removeClass("stop-button");
549+
if (onStopped != null){
550+
onStopped(args[0], args[1]);
551+
} else {
552+
getWorkItems();
553+
}
542554
}
543555
})
544556
.fail(function() {
545557
alert( "error" );
546558
})
547559
.always(function() {
560+
548561
});
549562
}
563+
564+
565+
550566
$( "#datepicker-from" ).datepicker();
551567
$( "#datepicker-to" ).datepicker();
552568

0 commit comments

Comments
 (0)