diff --git a/resources/views/tasks/kanban.blade.php b/resources/views/tasks/kanban.blade.php index c4874d5c038b..5db6768e5505 100644 --- a/resources/views/tasks/kanban.blade.php +++ b/resources/views/tasks/kanban.blade.php @@ -140,6 +140,20 @@ } }; + ko.bindingHandlers.escapekey = { + init: function (element, valueAccessor, allBindings, viewModel) { + var callback = valueAccessor(); + $(element).keyup(function (event) { + var keyCode = (event.which ? event.which : event.keyCode); + if (keyCode === 27) { + callback.call(viewModel); + return false; + } + return true; + }); + } + }; + ko.bindingHandlers.selected = { update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { var selected = ko.utils.unwrapObservable(valueAccessor()); @@ -252,6 +266,7 @@ function StatusModel(data) { var self = this; self.name = ko.observable(); + self.name.orig = ko.observable(); self.sort_order = ko.observable(); self.public_id = ko.observable(); self.is_editing_status = ko.observable(false); @@ -277,15 +292,16 @@ } self.saveEditStatus = function() { - var url = '{{ url('/task_statuses') }}/' + self.public_id(); - var data = 'name=' + encodeURIComponent(self.name()); - model.ajax('put', url, data, function(response) { + if (self.name() == self.name.orig()) { self.is_editing_status(false); - }) - } - - self.cancelEditStatus = function() { - self.is_editing_status(false); + } else { + var url = '{{ url('/task_statuses') }}/' + self.public_id(); + var data = 'name=' + encodeURIComponent(self.name()); + model.ajax('put', url, data, function(response) { + self.name.orig(self.name()); + self.is_editing_status(false); + }) + } } self.onTaskDragged = function(dragged) { @@ -351,6 +367,7 @@ if (data) { ko.mapping.fromJS(data, {}, this); + self.name.orig(self.name()); } } @@ -517,7 +534,7 @@