_form.html.erb 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <% if @dashboard.errors.any? %>
  2. <div class="alert alert-danger"><%= @dashboard.errors.full_messages.first %></div>
  3. <% end %>
  4. <style>
  5. .glyphicon-remove {
  6. cursor: pointer;
  7. color: #d9534f;
  8. display: none;
  9. }
  10. li:hover .glyphicon-remove {
  11. display: inline;
  12. }
  13. .list-group {
  14. cursor: move;
  15. }
  16. </style>
  17. <%= form_for @dashboard, url: (@dashboard.persisted? ? dashboard_path(@dashboard, variable_params) : dashboards_path(variable_params)) do |f| %>
  18. <div class="form-group">
  19. <%= f.label :name %>
  20. <%= f.text_field :name, class: "form-control" %>
  21. </div>
  22. <div class="form-group <%= "hide" if (@queries || @dashboard.queries).empty? %>">
  23. <%= f.label :charts %>
  24. <ul class="list-group">
  25. <% (@queries || @dashboard.dashboard_queries.order(:position).map(&:query)).each do |query| %>
  26. <li class="list-group-item">
  27. <span class="glyphicon glyphicon-remove" aria-hidden="true" style="float: right; margin-top: 3px;"></span>
  28. <%= query.name %>
  29. <%= hidden_field_tag "query_ids[]", query.id %>
  30. </li>
  31. <% end %>
  32. </ul>
  33. </div>
  34. <div class="form-group">
  35. <%= f.label :query_id, "Add Chart" %>
  36. <div class="hide">
  37. <%= select_tag :query_id, options_for_select(Blazer::Query.order(:name).map { |q| [q.name, q.id] }), {include_blank: true, placeholder: "Select chart"} %>
  38. </div>
  39. <script>
  40. $("#query_id").selectize().parents(".hide").removeClass("hide");
  41. $("#query_id").change( function () {
  42. var $option = $(this).find("option:selected");
  43. if ($option.val() !== "") {
  44. var $li = $("<li></li>");
  45. $li.addClass("list-group-item");
  46. $li.text($option.text());
  47. $li.prepend('<span class="glyphicon glyphicon-remove" aria-hidden="true" style="float: right; margin-top: 3px;"></span><input type="hidden" name="query_ids[]" id="query_ids_" value="' + $option.val() + '">');
  48. $(".list-group").append($li);
  49. $(this)[0].selectize.setValue("");
  50. $(".form-group").removeClass("hide");
  51. }
  52. });
  53. </script>
  54. </div>
  55. <p>
  56. <% if @dashboard.persisted? %>
  57. <%= link_to "Delete", dashboard_path(@dashboard), method: :delete, "data-confirm" => "Are you sure?", class: "btn btn-danger" %>
  58. <% end %>
  59. <%= f.submit "Save", class: "btn btn-success" %>
  60. </p>
  61. <% end %>
  62. <script>
  63. $(".list-group").on("click", ".glyphicon-remove", function () {
  64. $(this).parents("li:first").remove();
  65. });
  66. Sortable.create($(".list-group").get(0));
  67. // $("form").submit( function () {
  68. // var query_ids = $("li").map( function () {
  69. // return $(this).attr("data-query-id");
  70. // });
  71. // console.log(query_ids.join(","));
  72. // return false;
  73. // });
  74. // var editableList = Sortable.create($(".list-group").get(0), {
  75. // filter: '.js-remove',
  76. // onFilter: function (evt) {
  77. // var el = editableList.closest(evt.item); // get dragged item
  78. // el && el.parentNode.removeChild(el);
  79. // }
  80. // });
  81. </script>