From f64f627e6e105249e5bd9e0c2093a61ac3ffdaab Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Wed, 9 Dec 2020 09:06:41 +0200 Subject: [PATCH] Improve query columns selector by replacing the combo multi select with a custom multi select with sortable items --- app/views/queries/_columns.html.erb | 69 ++++++++++++++------------ app/views/queries/_query_form.html.erb | 4 +- public/javascripts/application.js | 31 ++++++++++++ public/stylesheets/application.css | 29 ++++++++--- 4 files changed, 92 insertions(+), 41 deletions(-) diff --git a/app/views/queries/_columns.html.erb b/app/views/queries/_columns.html.erb index 18443de57..d9def8ecf 100644 --- a/app/views/queries/_columns.html.erb +++ b/app/views/queries/_columns.html.erb @@ -2,41 +2,44 @@ <% available_tag_id = "available_#{tag_id}" %> <% selected_tag_id = "selected_#{tag_id}" %> - - - <%= label_tag available_tag_id, l(:description_available_columns) %> - <%= select_tag 'available_columns', - options_for_select(query_available_inline_columns_options(query)), - :id => available_tag_id, - :multiple => true, :size => 10, - :ondblclick => "moveOptions(this.form.#{available_tag_id}, this.form.#{selected_tag_id});" %> - - - - - - - <%= label_tag selected_tag_id, l(:description_selected_columns) %> - <%= select_tag tag_name, - options_for_select(query_selected_inline_columns_options(query)), - :id => selected_tag_id, - :multiple => true, :size => 10, - :ondblclick => "moveOptions(this.form.#{selected_tag_id}, this.form.#{available_tag_id});" %> - - - - - - +<% selected_columns = query_selected_inline_columns_options(query) %> +<% available_columns = query_available_inline_columns_options(query) %> +
+ + <%= "#{selected_columns.count} out of #{available_columns.count} columns" %> +
+ +
    + <% query_selected_inline_columns_options(query).each do |c| %> +
  • + + <%= check_box_tag 'c[]', c.last, true, id: "c_#{c.last}" %> + <%= label_tag "c_#{c.last}", c.first %> + + +
  • + <% end %> + <% query_available_inline_columns_options(query).each do |c| %> +
  • + + <%= check_box_tag 'c[]', c.last, nil, id: "c_#{c.last}" %> + <%= label_tag "c_#{c.last}", c.first %> + + +
  • + <% end %> +
+
- <%= javascript_tag do %> -$(document).ready(function(){ - $('.query-columns').closest('form').submit(function(){ - $('#<%= selected_tag_id %> option:not(:disabled)').prop('selected', true); + $(document).ready(function(){ + $('.query-columns').closest('form').submit(function(){ + $('#<%= selected_tag_id %> option:not(:disabled)').prop('selected', true); + }); }); -}); + enableAutocomplete(document.querySelector(".query-columns")); <% end %> + diff --git a/app/views/queries/_query_form.html.erb b/app/views/queries/_query_form.html.erb index bb29827f8..39cb28823 100644 --- a/app/views/queries/_query_form.html.erb +++ b/app/views/queries/_query_form.html.erb @@ -12,9 +12,9 @@ <% if @query.available_columns.any? %> -