From: Michal Fojtik <mfoj...@redhat.com>

---
 src/app/helpers/application_helper.rb |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/src/app/helpers/application_helper.rb 
b/src/app/helpers/application_helper.rb
index 6b82e6d..7c6a5a7 100644
--- a/src/app/helpers/application_helper.rb
+++ b/src/app/helpers/application_helper.rb
@@ -82,6 +82,33 @@ module ApplicationHelper
     content_tag 'th', label
   end
 
+  # Fields example:
+  # [
+  #   { :name => 'Pool name', :sort_attr => 'name'},
+  #   { :name => 'Zone', :sortable => false},
+  # ]
+  def sortable_table_header(fields=[])
+    columns = fields.collect do |field|
+      if field[:sortable]==true or field[:sortable].nil?
+        order_dir = params[:order_dir] ? params[:order_dir] : 'desc'
+        content_tag('th', :class => 
(field[:sort_attr].to_s.eql?(params[:order_field]) ? 'active' : nil)) do
+          link_to(field[:name], :controller => params[:controller],
+            :action => params[:action], :order_field => field[:sort_attr],
+            :order_dir => order_dir.eql?('asc') ? 'desc' : 'asc')
+        end
+      else
+        content_tag('th') do
+          field[:name]
+        end
+      end
+    end
+    header = content_tag('thead') do
+      content_tag('tr') do
+        columns.join
+      end
+    end
+  end
+
   def paginated_table(html_id, columns, data, opts = {})
     search_url = url_for(:partial => true, :order => opts[:order], :order_dir 
=> opts[:order_dir])
 
-- 
1.7.2.3

_______________________________________________
deltacloud-devel mailing list
deltacloud-devel@lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to