FormCompletable: Show error message if the completable ajax call failed

Dominik Sander 10 gadi atpakaļ
vecāks
revīzija
53edbfda48
1 mainītis faili ar 10 papildinājumiem un 3 dzēšanām
  1. 10 3
      app/assets/javascripts/components/form_configurable.js.coffee

+ 10 - 3
app/assets/javascripts/components/form_configurable.js.coffee

@@ -31,10 +31,12 @@ $ ->
31 31
           form_group.addClass('has-feedback').removeClass('has-error')
32 32
           form_group.find('span').addClass('hidden')
33 33
           form_group.find('.glyphicon-ok').removeClass('hidden')
34
+          returnedResults = {}
34 35
         error: (data) ->
35 36
           form_group.addClass('has-feedback').addClass('has-error')
36 37
           form_group.find('span').addClass('hidden')
37 38
           form_group.find('.glyphicon-remove').removeClass('hidden')
39
+          returnedResults = {}
38 40
 
39 41
     $("input[role=validatable], select[role=validatable]").trigger('change')
40 42
 
@@ -48,6 +50,11 @@ $ ->
48 50
           $(e.currentTarget).val(e.removed.id)
49 51
       )
50 52
 
53
+    updateDropdownData = (form_data, element, data) ->
54
+      returnedResults[form_data.attribute] = {text: 'Options', children: data}
55
+      $(element).trigger('change')
56
+      $(element).select2('open')
57
+
51 58
     $("input[role~=completable]").on 'select2-open', (e) ->
52 59
       form_data = getFormData(e.currentTarget)
53 60
       return if returnedResults[form_data.attribute]
@@ -56,6 +63,6 @@ $ ->
56 63
         type: 'POST',
57 64
         data: form_data
58 65
         success: (data) ->
59
-          returnedResults[form_data.attribute] = {text: 'Options', children: $.map(data, (d) -> {id: d.value, text: d.name})}
60
-          $(e.currentTarget).trigger('change')
61
-          $(e.currentTarget).select2('open')
66
+          updateDropdownData(form_data, e.currentTarget, $.map(data, (d) -> {id: d.value, text: d.name}))
67
+        error: (data) ->
68
+          updateDropdownData(form_data, e.currentTarget, [{id: undefined, text: 'Error loading data.'}])