[PATCH conductor 08/15] Make filter_table more configurable

ifarkas at redhat.com ifarkas at redhat.com
Sun Jul 22 10:16:28 UTC 2012


From: Imre Farkas <ifarkas at redhat.com>

---
 src/app/helpers/application_helper.rb              |    6 ++-
 src/app/helpers/provider_accounts_helper.rb        |   31 ++++++++-------
 src/app/views/layouts/_filter_table.html.haml      |   40 ++++++--------------
 src/app/views/layouts/_filter_table_form.html.haml |   25 ++++++++++++
 .../_add_provider_accounts_form.html.haml          |    2 +-
 .../pool_families/_provider_accounts.html.haml     |    2 +-
 6 files changed, 57 insertions(+), 49 deletions(-)
 create mode 100644 src/app/views/layouts/_filter_table_form.html.haml

diff --git a/src/app/helpers/application_helper.rb b/src/app/helpers/application_helper.rb
index 8480508..594bc86 100644
--- a/src/app/helpers/application_helper.rb
+++ b/src/app/helpers/application_helper.rb
@@ -67,10 +67,12 @@ module ApplicationHelper
     end
   end
 
-  def filter_table(columns, rows, options={}, &block)
+  def filter_table(columns, rows, options = {}, form = nil, &block)
     _class = rows.first.try(:class) || Object
-    render :partial => 'layouts/filter_table', :locals => {
+    render :partial => 'layouts/filter_table_form', :locals => {
+        :without_form => options[:without_form] || false,
         :form_header => options[:form_header] || :form_header,
+        :form => form,
         :filter_controls => options[:filter_controls] || :filter_controls,
         :form_footer => options[:form_footer] || :form_footer,
         :object_count => rows.count,
diff --git a/src/app/helpers/provider_accounts_helper.rb b/src/app/helpers/provider_accounts_helper.rb
index 49d96ff..5ddf0d3 100644
--- a/src/app/helpers/provider_accounts_helper.rb
+++ b/src/app/helpers/provider_accounts_helper.rb
@@ -14,23 +14,22 @@
 #   limitations under the License.
 #
 module ProviderAccountsHelper
-  def provider_accounts_header
-    [
-      { :name => 'checkbox', :sortable => false, :class => 'checkbox' },
-      { :name => '', :sortable => false, :class => 'alert' },
-      { :name => t("provider_accounts.index.provider_account_name"), :sortable => false },
-      { :name => t("provider_accounts.index.username"), :sortable => false},
-      { :name => t("provider_accounts.index.provider_name"), :sortable => false },
-      { :name => t("provider_accounts.index.provider_type"), :sortable => false },
-      { :name => t("provider_accounts.index.priority"), :sortable => false, :class => 'center' },
-      { :name => t("quota_used"), :sortable => false, :class => 'center' },
-      { :name => t("provider_accounts.index.quota_limit"), :sortable => false, :class => 'center' }
-    ]
-  end
+  def provider_accounts_header(options = {})
+    columns = []
+
+    if !options[:without_checkbox] && (!options.has_key?(:with_checkbox_placeholder) || !options[:with_checkbox_placeholder])
+      columns << { :name => 'checkbox', :sortable => false, :class => 'checkbox' }
+    end
+
+    if options[:with_checkbox_placeholder]
+      columns << { :sortable => false }
+    end
+
+    unless options[:without_alert]
+      columns << { :name => '', :sortable => false, :class => 'alert' }
+    end
 
-  def no_alerts_provider_accounts_header
-    [
-      { :name => 'checkbox', :sortable => false, :class => 'checkbox' },
+    columns += [
       { :name => t("provider_accounts.index.provider_account_name"), :sortable => false },
       { :name => t("provider_accounts.index.username"), :sortable => false},
       { :name => t("provider_accounts.index.provider_name"), :sortable => false },
diff --git a/src/app/views/layouts/_filter_table.html.haml b/src/app/views/layouts/_filter_table.html.haml
index 453266c..71ae254 100644
--- a/src/app/views/layouts/_filter_table.html.haml
+++ b/src/app/views/layouts/_filter_table.html.haml
@@ -1,30 +1,12 @@
-= form_tag({}, :class => 'filterable-data') do
-
-  - if content_for? filter_controls or content_for? form_header
-    %div.controls
-      %ul.filter-controls
-        = yield filter_controls if content_for? filter_controls
-
-      - if content_for? form_header
-        %ul.actions
-          = yield form_header
-
-  %table.flat.checkbox_table{ 'data-none_selected' => t("default_none_selected_message"), 'data-confirm' => t("default_confirm_message") }
-    %thead
+%table.flat.checkbox_table{ 'data-none_selected' => t("default_none_selected_message"), 'data-confirm' => t("default_confirm_message") }
+  %thead
+    %tr
+      - columns.each do |column|
+        - if column[:name] == 'checkbox'
+          %th{:class => column[:class]}= check_box_tag :select_all, true, false, :class => 'select_all'
+        -else
+          %th{:class => column[:class]}= column[:name]
+    - if !rows.any?
       %tr
-        - columns.each do |column|
-          - if column[:name] == 'checkbox'
-            %th{:class => column[:class]}= check_box_tag :select_all, true, false, :class => 'select_all'
-          -else
-            %th{:class => column[:class]}= column[:name]
-      - if !rows.any?
-        %tr
-          %td{:colspan => columns.size}= t('search.no_results')
-    = rows.collect {|row| capture_haml(row, &block)}.join.html_safe
-
-  - if content_for? form_footer
-    %fieldset.options
-      = yield form_footer
-
-- if rows.is_a?(WillPaginate::Collection)
-  = render_pagination(rows)
+        %td{:colspan => columns.size}= t('search.no_results')
+  = rows.collect {|row| capture_haml(row, &block)}.join.html_safe
\ No newline at end of file
diff --git a/src/app/views/layouts/_filter_table_form.html.haml b/src/app/views/layouts/_filter_table_form.html.haml
new file mode 100644
index 0000000..1d010a2
--- /dev/null
+++ b/src/app/views/layouts/_filter_table_form.html.haml
@@ -0,0 +1,25 @@
+- if form.present? || without_form
+  = render :partial => 'layouts/filter_table', :locals => { :columns => columns, :rows => rows, :block => block }
+
+  - if rows.is_a?(WillPaginate::Collection)
+    = render_pagination(rows)
+- else
+  = form_tag({}, :class => 'filterable-data') do
+
+    - if content_for? filter_controls or content_for? form_header
+      %div.controls
+        %ul.filter-controls
+          = yield filter_controls if content_for? filter_controls
+
+        - if content_for? form_header
+          %ul.actions
+            = yield form_header
+
+    = render :partial => 'layouts/filter_table', :locals => { :columns => columns, :rows => rows, :block => block }
+
+    - if content_for? form_footer
+      %fieldset.options
+        = yield form_footer
+
+  - if rows.is_a?(WillPaginate::Collection)
+    = render_pagination(rows)
diff --git a/src/app/views/pool_families/_add_provider_accounts_form.html.haml b/src/app/views/pool_families/_add_provider_accounts_form.html.haml
index bdb4680..e596960 100644
--- a/src/app/views/pool_families/_add_provider_accounts_form.html.haml
+++ b/src/app/views/pool_families/_add_provider_accounts_form.html.haml
@@ -1,7 +1,7 @@
 - content_for :form_footer do
   = link_to t('cancel'), pool_family_path(@pool_family, :details_tab => 'provider_accounts'), :class => 'button danger'
   = restful_submit_tag t('provider_accounts.add_provider_account'), "create", add_provider_accounts_pool_family_path(@pool_family), 'POST', :id => 'save_button', :class => 'button'
-= filter_table(no_alerts_provider_accounts_header, @provider_accounts) do |account|
+= filter_table(provider_accounts_header(:without_alert => true), @provider_accounts) do |account|
   %tr{:class => cycle('nostripe','stripe')}
     %td{:class => 'checkbox'}
       - if check_privilege(Privilege::MODIFY)
diff --git a/src/app/views/pool_families/_provider_accounts.html.haml b/src/app/views/pool_families/_provider_accounts.html.haml
index b892a79..cfda880 100644
--- a/src/app/views/pool_families/_provider_accounts.html.haml
+++ b/src/app/views/pool_families/_provider_accounts.html.haml
@@ -3,7 +3,7 @@
     %li= link_to t('provider_accounts.add_provider_account'), add_provider_accounts_pool_family_path(@pool_family), { :class => 'button primary', :id => 'add_provider_accounts_button'}
     %li= restful_submit_tag t('provider_accounts.remove_provider_accounts'), "destroy", remove_provider_accounts_pool_family_path(@pool_family), 'POST', :id => 'remove_button', :class => 'button danger'
 
-= filter_table(no_alerts_provider_accounts_header, @pool_family.provider_accounts) do |account|
+= filter_table(provider_accounts_header(:without_alert => true), @pool_family.provider_accounts) do |account|
   %tr{:class => cycle('nostripe','stripe')}
     %td{:class => 'checkbox'}
       - if check_privilege(Privilege::MODIFY)
-- 
1.7.10.4




More information about the aeolus-devel mailing list