multiple-selector.html 2.4 KB

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