From 6f76cb1686ee6570d8ee79b9a3d79248ff00bf98 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 1 Oct 2017 16:16:27 +0300 Subject: [PATCH] Working on the time tracker --- resources/views/tasks/time_tracker.blade.php | 20 +++++---- .../tasks/time_tracker_knockout.blade.php | 43 +++++++++++++++++-- 2 files changed, 52 insertions(+), 11 deletions(-) diff --git a/resources/views/tasks/time_tracker.blade.php b/resources/views/tasks/time_tracker.blade.php index 4ede54d9f063..80b7e6f5382a 100644 --- a/resources/views/tasks/time_tracker.blade.php +++ b/resources/views/tasks/time_tracker.blade.php @@ -226,16 +226,20 @@ ->raw() !!} - {!! Former::text('start_time') - ->placeholder('start_time') - ->data_bind("timepicker: startTimeOfDay, timepickerOptions: {scrollDefault: 'now', timeFormat: '" . ($account->military_time ? 'H:i:s' : 'g:i:s A') . "'}") - ->raw() !!} +
+ {!! Former::text('start_time') + ->placeholder('start_time') + ->data_bind("timepicker: startTimeOfDay, timepickerOptions: {scrollDefault: 'now', timeFormat: '" . ($account->military_time ? 'H:i:s' : 'g:i:s A') . "'}") + ->raw() !!} +
- {!! Former::text('end_time') - ->placeholder('end_time') - ->data_bind("timepicker: endTimeOfDay, timepickerOptions: {scrollDefault: 'now', timeFormat: '" . ($account->military_time ? 'H:i:s' : 'g:i:s A') . "'}") - ->raw() !!} +
+ {!! Former::text('end_time') + ->placeholder('end_time') + ->data_bind("timepicker: endTimeOfDay, timepickerOptions: {scrollDefault: 'now', timeFormat: '" . ($account->military_time ? 'H:i:s' : 'g:i:s A') . "'}") + ->raw() !!} +
{!! Former::text('duration') diff --git a/resources/views/tasks/time_tracker_knockout.blade.php b/resources/views/tasks/time_tracker_knockout.blade.php index a5ccb5bad37d..e63d69b4bee5 100644 --- a/resources/views/tasks/time_tracker_knockout.blade.php +++ b/resources/views/tasks/time_tracker_knockout.blade.php @@ -303,6 +303,10 @@ if (self.selectedTask()) { self.selectedTask().onStartClick(); } else { + if (! task.checkForOverlaps()) { + swal("{{ trans('texts.task_errors') }}"); + return; + } var time = new TimeModel(); time.startTime(moment().unix()); var task = new TaskModel(); @@ -560,6 +564,10 @@ } self.save = function(isSelected) { + if (! self.checkForOverlaps()) { + swal("{{ trans('texts.task_errors') }}"); + return; + } if (self.isValid() !== true) { toastr.error("{{ trans('texts.error_refresh_page') }}"); throw self.isValid(); @@ -658,6 +666,33 @@ } } + self.checkForOverlaps = function() { + var lastTime = 0; + var isValid = true; + + for (var i=0; i timeLog.endTime())) { + startValid = false; + } + if (timeLog.endTime() && timeLog.endTime() < Math.min(timeLog.startTime(), lastTime)) { + endValid = false; + } + lastTime = Math.max(lastTime, timeLog.endTime()); + } + timeLog.isStartValid(startValid); + timeLog.isEndValid(endValid); + if (! startValid || ! endValid) { + isValid = false; + } + } + + return isValid; + } + self.checkForEmpty = function() { setTimeout(function() { var hasEmpty = false; @@ -708,6 +743,7 @@ }); self.onChange = function() { + self.checkForOverlaps(); self.checkForEmpty(); } @@ -780,17 +816,18 @@ if (! model.isStartEnabled()) { return false; } - + if (! self.checkForOverlaps()) { + swal("{{ trans('texts.task_errors') }}"); + return; + } if (self.isRunning()) { var time = self.lastTime(); time.endTime(moment().unix()); } else { var lastTime = self.lastTime(); if (lastTime && ! lastTime.startTime()) { - console.log('using time'); var time = lastTime; } else { - console.log('adding time'); var time = new TimeModel(); self.addTime(time); }