Module: EffectiveDatatablesHelper
- Defined in:
- app/helpers/effective_datatables_helper.rb
Instance Method Summary collapse
- #datatable_column_classes(datatable) ⇒ Object
- #datatable_column_names(datatable) ⇒ Object
- #datatable_default_order(datatable) ⇒ Object
- #datatable_non_sortable(datatable, sortable = true) ⇒ Object
- #datatable_non_visible(datatable) ⇒ Object
- #datatable_widths(datatable) ⇒ Object
-
#datatables_active_admin_path? ⇒ Boolean
TODO: Improve on this.
- #datatables_admin_path? ⇒ Boolean
- #render_datatable(datatable, opts = {}, &block) ⇒ Object
- #render_datatable_header_cell(form, name, opts, filterable = true) ⇒ Object
- #render_simple_datatable(datatable, opts = {}) ⇒ Object
Instance Method Details
#datatable_column_classes(datatable) ⇒ Object
64 65 66 67 68 69 70 |
# File 'app/helpers/effective_datatables_helper.rb', line 64 def datatable_column_classes(datatable) [].tap do |classes| datatable.table_columns.values.each_with_index do |, x| classes << {:className => [:class], :targets => [x]} if [:class].present? end end.to_json() end |
#datatable_column_names(datatable) ⇒ Object
72 73 74 |
# File 'app/helpers/effective_datatables_helper.rb', line 72 def datatable_column_names(datatable) datatable.table_columns.values.map { || {:name => [:name], :targets => [:index] } }.to_json() end |
#datatable_default_order(datatable) ⇒ Object
56 57 58 |
# File 'app/helpers/effective_datatables_helper.rb', line 56 def datatable_default_order(datatable) [datatable.order_index, datatable.order_direction.downcase].to_json() end |
#datatable_non_sortable(datatable, sortable = true) ⇒ Object
41 42 43 44 45 |
# File 'app/helpers/effective_datatables_helper.rb', line 41 def datatable_non_sortable(datatable, sortable = true) [].tap do |nonsortable| datatable.table_columns.values.each_with_index { |, x| nonsortable << x if [:sortable] == false || sortable == false } end.to_json() end |
#datatable_non_visible(datatable) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'app/helpers/effective_datatables_helper.rb', line 47 def datatable_non_visible(datatable) [].tap do |nonvisible| datatable.table_columns.values.each_with_index do |, x| visible = ([:visible].respond_to?(:call) ? datatable.instance_exec(&[:visible]) : [:visible]) nonvisible << x if visible == false end end.to_json() end |
#datatable_widths(datatable) ⇒ Object
60 61 62 |
# File 'app/helpers/effective_datatables_helper.rb', line 60 def datatable_widths(datatable) datatable.table_columns.values.map { || {'sWidth' => [:width]} if [:width] }.to_json() end |
#datatables_active_admin_path? ⇒ Boolean
TODO: Improve on this
85 86 87 |
# File 'app/helpers/effective_datatables_helper.rb', line 85 def datatables_active_admin_path? attributes[:active_admin_path] rescue false end |
#datatables_admin_path? ⇒ Boolean
76 77 78 79 80 81 82 |
# File 'app/helpers/effective_datatables_helper.rb', line 76 def datatables_admin_path? @datatables_admin_path ||= ( path = request.path.to_s.downcase.chomp('/') + '/' referer = request.referer.to_s.downcase.chomp('/') + '/' (attributes[:admin_path] || referer.include?('/admin/') || path.include?('/admin/')) rescue false ) end |
#render_datatable(datatable, opts = {}, &block) ⇒ Object
2 3 4 5 6 7 |
# File 'app/helpers/effective_datatables_helper.rb', line 2 def render_datatable(datatable, opts = {}, &block) datatable.view = self locals = {style: :full, filterable: true, sortable: true, table_class: 'table-bordered table-striped'}.merge(opts) render partial: 'effective/datatables/datatable', locals: locals.merge(datatable: datatable) end |
#render_datatable_header_cell(form, name, opts, filterable = true) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'app/helpers/effective_datatables_helper.rb', line 17 def render_datatable_header_cell(form, name, opts, filterable = true) return render(partial: opts[:header_partial], locals: {form: form, name: (opts[:label] || name), column: opts, filterable: filterable}) if opts[:header_partial].present? return content_tag(:p, opts[:label] || name) if filterable == false case opts[:filter][:type] when :string, :text, :number form.input name, label: false, required: false, as: :string, placeholder: (opts[:label] || name), input_html: { name: nil, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} } when :select, :boolean if opts[:filter][:values].respond_to?(:call) opts[:filter][:values] = opts[:filter][:values].call() if opts[:filter][:values].kind_of?(ActiveRecord::Relation) || (opts[:filter][:values].kind_of?(Array) && opts[:filter][:values].first.kind_of?(ActiveRecord::Base)) opts[:filter][:values] = opts[:filter][:values].map { |obj| [obj.to_s, obj.id] } end end form.input name, label: false, required: false, as: :select, collection: opts[:filter][:values], include_blank: (opts[:label] || name.titleize), input_html: { name: nil, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} } else content_tag(:p, opts[:label] || name) end end |
#render_simple_datatable(datatable, opts = {}) ⇒ Object
9 10 11 12 13 14 15 |
# File 'app/helpers/effective_datatables_helper.rb', line 9 def render_simple_datatable(datatable, opts = {}) datatable.view = self datatable.per_page = :all locals = {style: :simple, filterable: false, sortable: false, table_class: 'table-bordered table-striped sorting-hidden'}.merge(opts) render partial: 'effective/datatables/datatable', locals: locals.merge(datatable: datatable) end |