From 30668086e25a68e5f9ee2523646548144f555df3 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 1 Oct 2017 09:55:45 +0300 Subject: [PATCH] Working on the time tracker --- resources/views/tasks/time_tracker.blade.php | 4 +- .../tasks/time_tracker_knockout.blade.php | 45 ++++++++++++++++--- 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/resources/views/tasks/time_tracker.blade.php b/resources/views/tasks/time_tracker.blade.php index a12f954ab5e6..f295fa70f5d9 100644 --- a/resources/views/tasks/time_tracker.blade.php +++ b/resources/views/tasks/time_tracker.blade.php @@ -220,7 +220,8 @@ {!! Former::text('date') - ->data_bindx("") + ->data_bind("datepicker: startDate, valueUpdate: 'afterkeydown'") + ->data_date_format(Session::get(SESSION_DATE_PICKER_FORMAT, DEFAULT_DATE_PICKER_FORMAT)) ->raw() !!} @@ -376,7 +377,6 @@ var tasks = {!! $tasks !!}; var clients = {!! $clients !!}; var projects = {!! $projects !!}; - var dateTimeFormat = '{{ $account->getMomentDateTimeFormat() }}'; var timezone = '{{ $account->getTimezone() }}'; var clientMap = {}; diff --git a/resources/views/tasks/time_tracker_knockout.blade.php b/resources/views/tasks/time_tracker_knockout.blade.php index a1ca5a5b9e0b..11ea04c2b962 100644 --- a/resources/views/tasks/time_tracker_knockout.blade.php +++ b/resources/views/tasks/time_tracker_knockout.blade.php @@ -20,6 +20,22 @@ return new Date(1970, 0, 1, hours, minutes, seconds, 0); } + ko.bindingHandlers.datepicker = { + init: function (element, valueAccessor, allBindingsAccessor) { + $(element).datepicker(); + $(element).change(function() { + var value = valueAccessor(); + value($(element).datepicker('getDate')); + }) + }, + update: function (element, valueAccessor) { + var value = ko.utils.unwrapObservable(valueAccessor()); + if (value) { + $(element).datepicker('setDate', new Date(value * 1000)); + } + } + }; + ko.bindingHandlers.timepicker = { init: function (element, valueAccessor, allBindingsAccessor) { var options = allBindingsAccessor().timepickerOptions || {}; @@ -32,9 +48,15 @@ ko.utils.registerEventHandler(element, 'change', function () { var value = valueAccessor(); - var dateTime = $(element).timepicker('getTime'); - if (dateTime) { - time = dateTime.getTime() / 1000; + var field = $(element).attr('name'); + var time = 0; + if (field == 'duration') { + time = $(element).timepicker('getSecondsFromMidnight'); + } else { + var dateTime = $(element).timepicker('getTime'); + if (dateTime) { + time = dateTime.getTime() / 1000; + } } value(time); }); @@ -46,7 +68,9 @@ if (field == 'duration') { $(element).timepicker('setTime', intToTime(value)); } else { - $(element).timepicker('setTime', new Date(value * 1000)); + if (value) { + $(element).timepicker('setTime', new Date(value * 1000)); + } } //console.log(field + ': ' + value); @@ -948,6 +972,15 @@ self.endTime(data[1]); }; + self.startDate = ko.computed({ + read: function () { + return self.startTime(); + }, + write: function(value) { + console.log('New Date: ' + value); + } + }); + self.order = ko.computed(function() { return self.startTime(); }); @@ -969,12 +1002,10 @@ read: function () { model.clock(); // bind to the clock var endTime = self.endTime() ? self.endTime() : moment().unix(); - //console.log('duration: ' + (endTime - self.startTime())); return endTime - self.startTime(); }, write: function(value) { - console.log('duration: ' + value); - //self.endTime(value); + self.endTime(self.startTime() + value); } });