Working on the time tracker

This commit is contained in:
Hillel Coren 2017-10-08 00:34:58 +03:00
parent d3b7b4c194
commit 1515fe6760
2 changed files with 28 additions and 9 deletions

View File

@ -217,7 +217,7 @@
</div> </div>
<div style="padding-bottom: 20px"> <div style="padding-bottom: 20px">
{!! Former::textarea('description') {!! Former::textarea('description')
->data_bind("value: selectedTask().description") ->data_bind("value: selectedTask().description, valueUpdate: 'afterkeydown'")
->rows(4) !!} ->rows(4) !!}
</div> </div>

View File

@ -1,7 +1,6 @@
<script type="text/javascript"> <script type="text/javascript">
function intToTime(seconds) function intToTime(seconds) {
{
if (seconds === null) { if (seconds === null) {
return null; return null;
} }
@ -56,7 +55,8 @@
var field = $(element).attr('name'); var field = $(element).attr('name');
var seconds = $(element).timepicker('getSecondsFromMidnight'); var seconds = $(element).timepicker('getSecondsFromMidnight');
if (field == 'end_time') { // add 24 hours the end time is before the start time/tomorrow
if (field == 'end_time' && seconds !== null) {
$input = $(element).closest('td').prev('td').find('input'); $input = $(element).closest('td').prev('td').find('input');
var startTime = $input.timepicker('getSecondsFromMidnight'); var startTime = $input.timepicker('getSecondsFromMidnight');
if (seconds < startTime) { if (seconds < startTime) {
@ -84,10 +84,23 @@
if (field == 'start_time') { if (field == 'start_time') {
setTimeout(function() { setTimeout(function() {
$input = $(element).closest('td').next('td').find('input'); $input = $(element).closest('td').next('td').find('input');
var value = $(element).val(); var time = $(element).val();
if (value) { if (time) {
$input.timepicker('option', 'durationTime', value); // round the end time to the next 15 minutes
$input.timepicker('option', 'minTime', value); var seconds = $(element).timepicker('getSecondsFromMidnight');
var minTime = moment.utc(seconds * 1000).seconds(0);
var minutes = minTime.minutes();
if (minutes >= 45) {
minTime.minutes(0).add(1, 'hour');
} else if (minutes >= 30) {
minTime.minutes(45);
} else if (minutes >= 15) {
minTime.minutes(30);
} else {
minTime.minutes(15);
}
$input.timepicker('option', 'minTime', minTime.format("H:mm:ss"));
$input.timepicker('option', 'durationTime', time);
} }
}, 1); }, 1);
} }
@ -146,6 +159,8 @@
var duration = moment.duration(value * 1000); var duration = moment.duration(value * 1000);
var value = Math.floor(duration.asHours()) + moment.utc(duration.asMilliseconds()).format(":mm:ss") var value = Math.floor(duration.asHours()) + moment.utc(duration.asMilliseconds()).format(":mm:ss")
$(element).typeahead('val', value); $(element).typeahead('val', value);
} else {
$(element).typeahead('val', '');
} }
} }
}; };
@ -750,6 +765,11 @@
if (! self.isRunning()) { if (! self.isRunning()) {
self.addTime(); self.addTime();
} }
// Trigger isChanged to update
self.client_id.valueHasMutated();
self.project_id.valueHasMutated();
self.description.valueHasMutated();
} }
self.checkForOverlaps = function() { self.checkForOverlaps = function() {
@ -816,7 +836,6 @@
}); });
self.isChanged = ko.computed(function() { self.isChanged = ko.computed(function() {
model.sendingRequest(); // bind to the request
var data = self.data; var data = self.data;
if (! self.public_id()) { if (! self.public_id()) {
return true; return true;