<% if @dashboard.errors.any? %>
  <div class="alert alert-danger"><%= @dashboard.errors.full_messages.first %></div>
<% end %>

<style>
.glyphicon-remove {
  cursor: pointer;
  color: #d9534f;
  display: none;
}

li:hover .glyphicon-remove {
  display: inline;
}

.list-group {
  cursor: move;
}
</style>

<%= form_for @dashboard, url: (@dashboard.persisted? ? dashboard_path(@dashboard, variable_params) : dashboards_path(variable_params)) do |f| %>
  <div class="form-group">
    <%= f.label :name %>
    <%= f.text_field :name, class: "form-control" %>
  </div>
  <div class="form-group <%= "hide" if (@queries || @dashboard.queries).empty? %>">
    <%= f.label :charts %>
    <ul class="list-group">
      <% (@queries || @dashboard.dashboard_queries.order(:position).map(&:query)).each do |query| %>
        <li class="list-group-item">
          <span class="glyphicon glyphicon-remove" aria-hidden="true" style="float: right; margin-top: 3px;"></span>
          <%= query.name %>
          <%= hidden_field_tag "query_ids[]", query.id %>
        </li>
      <% end %>
    </ul>
  </div>
  <div class="form-group">
    <%= f.label :query_id, "Add Chart" %>
    <div class="hide">
      <%= select_tag :query_id, nil, {include_blank: true, placeholder: "Select chart"} %>
    </div>
    <script>
      var queries = <%= blazer_json_escape(Blazer::Query.named.order(:name).select("id, name").map { |q| {text: q.name, value: q.id} }.to_json).html_safe %>;
      $("#query_id").selectize({options: queries, highlight: false, maxOptions: 100}).parents(".hide").removeClass("hide");
      $("#query_id").change( function () {
        var $option = $(this).find("option:selected");
        if ($option.val() !== "") {
          var $li = $("<li></li>");
          $li.addClass("list-group-item");
          $li.text($option.text());
          $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() + '">');
          $(".list-group").append($li);
          $(this)[0].selectize.setValue("");
          $(".form-group").removeClass("hide");
        }
      });
    </script>
  </div>
  <p>
    <% if @dashboard.persisted? %>
      <%= link_to "Delete", dashboard_path(@dashboard), method: :delete, "data-confirm" => "Are you sure?", class: "btn btn-danger" %>
    <% end %>
    <%= f.submit "Save", class: "btn btn-success" %>
  </p>
<% end %>

<script>
  $(".list-group").on("click", ".glyphicon-remove", function () {
    $(this).parents("li:first").remove();
  });
  Sortable.create($(".list-group").get(0));

  // $("form").submit( function () {
  //   var query_ids = $("li").map( function () {
  //     return $(this).attr("data-query-id");
  //   });
  //   console.log(query_ids.join(","));
  //   return false;
  // });

  // var editableList = Sortable.create($(".list-group").get(0), {
  //   filter: '.js-remove',
  //   onFilter: function (evt) {
  //     var el = editableList.closest(evt.item); // get dragged item
  //     el && el.parentNode.removeChild(el);
  //   }
  // });
</script>