multiple-selector.html 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <div class="rapid-select {{ id }} data reload-here">
  2. <input type="hidden" id="{{ id }}" name="{{ name }}" value="{{ value }}" {% for k, v in attrs %} {{ k }} = "{{ v }}" {% endfor %}>
  3. <ul class="rapid-select-selected">
  4. {% for e in selected %}
  5. <li name="{{ e.pk }}">{{ e }} <a class="rapid-select-remove interaction"><span class="fa {{ icon }}"></span></a></li>
  6. {% endfor %}
  7. </ul>
  8. <a class="rapid-select-add interaction"><span class="fa fa-plus">Adicionar</span></a>
  9. </div>
  10. <script>
  11. function add_ids_to_{{ id }}(source){
  12. var sel = source.find("table.rapid-object-selector");
  13. var markers = sel.children("tbody").children("tr.selected").children("td").children("input.rapid-select-id-marker");
  14. var old_ids = [];
  15. if($("input#{{ id }}").val()){
  16. old_ids = $("input#{{ id }}").val().split(",");
  17. }
  18. var new_ids = [];
  19. var new_names = [];
  20. markers.each(function(){
  21. if (old_ids.indexOf($(this).val()) < 0){
  22. new_ids.push($(this).val());
  23. new_names.push($(this).attr("name"));
  24. }
  25. });
  26. $("input#{{ id }}").val(old_ids.concat(new_ids).join(","));
  27. var widget_root = $("div.rapid-select.{{ id }}").children("ul.rapid-select-selected")
  28. for(i = 0; i < new_names.length; i++){
  29. var li = $("<li>", {id: new_ids[i]}).html(
  30. new_names[i] + " <a class=\"rapid-select-remove\">" +
  31. "<span class=\"fa {{ icon }}\"></span></a>");
  32. widget_root.append(li);
  33. }
  34. };
  35. function add_elements_to_{{ id }}(){
  36. show_overlay("{{ select_url }}", $("div.rapid-select.{{ id }}").find("a.rapid-select-add"), add_ids_to_{{ id }}, false);
  37. };
  38. $(document).ready(function(){
  39. var d = $("div.rapid-select.{{ id }}")
  40. d.on("click", ".rapid-select-remove", function(){
  41. var rem_id = $(this).closest("li").attr("name");
  42. var old_ids = $("input#{{ id }}").val().split(",");
  43. for(i = 0; i < old_ids.length; i++){
  44. if(old_ids[i] = rem_id){
  45. old_ids.splice(i, 1);
  46. break;
  47. }
  48. }
  49. $("input#{{ id }}").val(old_ids.join(","));
  50. $(this).closest("li").remove();
  51. });
  52. d.find(".rapid-select-add").click(add_elements_to_{{ id }});
  53. });
  54. </script>