diff --git a/public/software-catalog.js b/public/software-catalog.js index 77ef251..5454fd7 100644 --- a/public/software-catalog.js +++ b/public/software-catalog.js @@ -1,44 +1,64 @@ (function(){ - "use strict"; - var AJAX_URL = { + "use strict"; + + var AJAX_URL = { get_categories: url_with_subdirectory("/plugin/mpog_software/get_categories") }; - function create_catalog_element(html_list, value, id) { - var li_tag = document.createElement("li"); - var first = html_list.length == 0; + function create_catalog_element(first, value, id) { + var li_tag = document.createElement("li"); - if( first ) - li_tag.innerHTML = value + " x"; - else - li_tag.innerHTML = ", " + value + " x"; + if( first ) + li_tag.innerHTML = value + " x"; + else + li_tag.innerHTML = ", " + value + " x"; - return li_tag; - } + return li_tag; + } function add_item_to_catalog(value, id) { - var already_has = false; + var already_has = false; + + jQuery("#catalog-list ul li").each(function(i, li){ + var regex = new RegExp(value, "g"); + + if( regex.test(li.innerHTML) ) { + already_has = true; + } + }); + + if( !already_has ) { + var catalog_list = jQuery("#catalog-list ul li"); + var current_ids = jQuery("#filter").val(); + var first = catalog_list.length == 0; - jQuery("#catalog-list ul li").each(function(i, li){ - var regex = new RegExp(value, "g"); + current_ids += first ? id : ","+id; - if( regex.test(li.innerHTML) ) { - already_has = true; - } - }); + jQuery("#filter").val(current_ids); - if( !already_has ) { - jQuery("#catalog-list ul").append(create_catalog_element(jQuery("#catalog-list ul li"), value, id)); - } + jQuery("#catalog-list ul").append(create_catalog_element(first, value, id)); + } } function remote_catalog_item() { - jQuery(this).parent().remove(); + var current_id = this.getAttribute("data-id"); + var filter_ids = jQuery("#filter").val(); + var id_list = []; + + filter_ids.split(",").forEach(function(id){ + if( current_id != id ) { + id_list.push(id); + } + }); + + jQuery("#filter").val(id_list.join(",")); + + jQuery(this).parent().remove(); } function set_autocomplate() { - jQuery("#software-catalog").autocomplete({ + jQuery("#software-catalog").autocomplete({ source : function(request, response){ jQuery.ajax({ type: "GET", @@ -51,25 +71,25 @@ }, select : function (event, selected) { - var value = selected.item.value; - var id = selected.item.id; + var value = selected.item.value; + var id = selected.item.id; - this.value = ""; + this.value = ""; - add_item_to_catalog(value, id); - set_events(); + add_item_to_catalog(value, id); + set_events(); - return false; + return false; } }); } - function set_events() { + function set_events() { jQuery(".catalog-remove-item").click(remote_catalog_item); - } + } - jQuery(document).ready(function(){ - set_autocomplate(); - set_events(); - }); + jQuery(document).ready(function(){ + set_autocomplate(); + set_events(); + }); })(); diff --git a/views/search/_catalog_filter.html.erb b/views/search/_catalog_filter.html.erb index 879cb39..d8b6d88 100644 --- a/views/search/_catalog_filter.html.erb +++ b/views/search/_catalog_filter.html.erb @@ -3,6 +3,7 @@ display: inline; margin-right: 5px; font-size: 14px; + padding: 5px; } #catalog-list ul li span { -- libgit2 0.21.2