Преглед изворни кода

fix processing of initial tags

John Anderson пре 7 година
родитељ
комит
f3cfc17a52
1 измењених фајлова са 24 додато и 19 уклоњено
  1. 24 19
      netbox/project-static/js/forms.js

+ 24 - 19
netbox/project-static/js/forms.js

@@ -158,34 +158,41 @@ $(document).ready(function() {
     });
 
     // API backed tags
-    var tags = $('#id_tags').val() === "" ? [] : $('#id_tags').val().split(/,\s*/);
+    var tags = $('#id_tags');
+    if (tags.length > 0 && tags.val().length > 0){
+        tags = $('#id_tags').val().split(/,\s*/);
+    } else {
+        tags = [];
+    }
     tag_objs = $.map(tags, function (tag) {
         return {
             id: tag,
             text: tag,
+            selected: true
         }
     });
     // Replace the django issued text input with a select element
     $('#id_tags').replaceWith('<select name="tags" id="id_tags" class="form-control"></select>');
     $('#id_tags').select2({
-        tags: tag_objs,
-        data: function(params) {
-            // paging
-            var offset = params.page * 50 || 0;
-            var parameters = {
-                q: params.term,
-                brief: 1,
-                limit: 50,
-                offset: offset,
-            };
-            return parameters;
-        },
+        tags: true,
+        data: tag_objs,
         multiple: true,
         allowClear: true,
         placeholder: "Tags",
         ajax: {
             delay: 250,
             url: "/api/extras/tags/",
+            data: function(params) {
+                // paging
+                var offset = params.page * 50 || 0;
+                var parameters = {
+                    q: params.term,
+                    brief: 1,
+                    limit: 50,
+                    offset: offset,
+                };
+                return parameters;
+            },
             processResults: function (data) {
                 var results = $.map(data.results, function (obj) {
                     return {
@@ -204,16 +211,14 @@ $(document).ready(function() {
             }
         }
     });
-    $('#id_tags').val(tags).trigger("change");
     $('#id_tags').closest('form').submit(function(event){
         // django-taggit can only accept a single comma seperated string value
         var value = $('#id_tags').val();
-        var final_tags = "";
         if (value.length > 0){
-            final_tags = value.join(', ');
+            var final_tags = value.join(', ');
+            $('#id_tags').val(null).trigger('change');
+            var option = new Option(final_tags, final_tags, true, true);
+            $('#id_tags').append(option).trigger('change');
         }
-        $('#id_tags').val(null);
-        var option = new Option(final_tags, final_tags, true, true);
-        $('#id_tags').append(option);
     });
 });