From f3cfc17a52f874d74d32042d22bf9b759c715f02 Mon Sep 17 00:00:00 2001 From: John Anderson Date: Thu, 3 Jan 2019 02:25:12 -0500 Subject: [PATCH] fix processing of initial tags --- netbox/project-static/js/forms.js | 43 +++++++++++++++++-------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/netbox/project-static/js/forms.js b/netbox/project-static/js/forms.js index 981310a75..b1c529dbb 100644 --- a/netbox/project-static/js/forms.js +++ b/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(''); $('#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); }); });