From c2e3f1eba95c86efdc429c16b94e87b0687241dd Mon Sep 17 00:00:00 2001
From: Frédéric Guillot <fred@kanboard.net>
Date: Fri, 21 Oct 2016 07:41:52 -0400
Subject: Show error messages in dialog box to move tasks

---
 assets/js/components/submit-cancel.js      |  5 +++++
 assets/js/components/task-move-position.js | 18 +++++++++++++++---
 2 files changed, 20 insertions(+), 3 deletions(-)

(limited to 'assets/js/components')

diff --git a/assets/js/components/submit-cancel.js b/assets/js/components/submit-cancel.js
index 1950c060..061b1146 100644
--- a/assets/js/components/submit-cancel.js
+++ b/assets/js/components/submit-cancel.js
@@ -26,5 +26,10 @@ Vue.component('submit-cancel', {
         onCancel: function () {
             _KB.get('Popover').close();
         }
+    },
+    events: {
+        'submitCancelled': function() {
+            this.loading = false;
+        }
     }
 });
diff --git a/assets/js/components/task-move-position.js b/assets/js/components/task-move-position.js
index 390dcff1..11e1068c 100644
--- a/assets/js/components/task-move-position.js
+++ b/assets/js/components/task-move-position.js
@@ -8,13 +8,15 @@ Vue.component('task-move-position', {
             position: 1,
             columns: [],
             tasks: [],
-            positionChoice: 'before'
+            positionChoice: 'before',
+            errorMessage: ''
         }
     },
     ready: function () {
         this.columns = this.board[0].columns;
         this.columnId = this.columns[0].id;
         this.tasks = this.columns[0].tasks;
+        this.errorMessage = '';
     },
     methods: {
         onChangeSwimlane: function () {
@@ -50,6 +52,8 @@ Vue.component('task-move-position', {
             });
         },
         onSubmit: function () {
+            var self = this;
+
             if (this.positionChoice == 'after') {
                 this.position++;
             }
@@ -65,8 +69,16 @@ Vue.component('task-move-position', {
                     "swimlane_id": this.swimlaneId,
                     "position": this.position
                 }),
-                complete: function() {
-                    window.location.reload(true);
+                statusCode: {
+                    200: function() {
+                        window.location.reload(true);
+                    },
+                    403: function(jqXHR) {
+                        var response = JSON.parse(jqXHR.responseText);
+                        self.errorMessage = response.message;
+
+                        self.$broadcast('submitCancelled');
+                    }
                 }
             });
         }
-- 
cgit v1.2.3