diff --git a/resources/views/tasks/time_tracker.blade.php b/resources/views/tasks/time_tracker.blade.php
index f52825fbe8a5..bf750247a052 100644
--- a/resources/views/tasks/time_tracker.blade.php
+++ b/resources/views/tasks/time_tracker.blade.php
@@ -141,7 +141,7 @@
+ data-bind="event: { focus: onFilterFocus, input: onFilterChanged, keypress: onFilterKeyPress }, value: filter, valueUpdate: 'afterkeydown', attr: {placeholder: placeholder, style: filterStyle, disabled: formChanged }">
diff --git a/resources/views/tasks/time_tracker_knockout.blade.php b/resources/views/tasks/time_tracker_knockout.blade.php
index 98d3fbc234f5..876747aa718e 100644
--- a/resources/views/tasks/time_tracker_knockout.blade.php
+++ b/resources/views/tasks/time_tracker_knockout.blade.php
@@ -124,13 +124,16 @@
if (task.isNew()) {
self.selectedTask(false);
self.removeTask(task);
- $('.search').focus();
+ // wait for it to be re-enabled
+ setTimeout(function() {
+ $('#search').focus();
+ }, 1);
} else {
task.update(task.data);
}
self.formChanged(false);
- }, "{{ trans('texts.discard_changes') }}");
+ }, "{{ trans('texts.discard_changes') }}");
return false;
}
@@ -207,7 +210,11 @@
self.onStartClick = function() {
if (self.selectedTask()) {
- self.selectedTask().onStartClick();
+ if (self.formChanged()) {
+ self.onSaveClick();
+ } else {
+ self.selectedTask().onStartClick();
+ }
} else {
var time = new TimeModel();
time.startTime(moment().unix());
@@ -223,6 +230,7 @@
self.selectedTask(task);
self.addTask(task);
model.refreshTitle();
+ model.formChanged(true);
self.filter('');
task.focus();
}
@@ -616,6 +624,12 @@
return false;
}
+ var selectedTask = model.selectedTask();
+ if (model.formChanged() && selectedTask && selectedTask.public_id() && selectedTask.public_id() == self.public_id()) {
+ model.onSaveClick();
+ return false;
+ }
+
if (self.isRunning()) {
var time = self.lastTime();
time.endTime(moment().unix());