Module: RailsAdminNext::MainHelper

Included in:
MainController
Defined in:
app/helpers/rails_admin_next/main_helper.rb

Instance Method Summary collapse

Instance Method Details

#filterable_fieldsObject



24
25
26
# File 'app/helpers/rails_admin_next/main_helper.rb', line 24

def filterable_fields
  @filterable_fields ||= @model_config.list.fields.select(&:filterable?)
end

#get_indicator(percent) ⇒ Object



15
16
17
18
19
20
21
22
# File 'app/helpers/rails_admin_next/main_helper.rb', line 15

def get_indicator(percent)
  return "" if percent < 0          # none
  return "info" if percent < 34     # < 1/100 of max
  return "success" if percent < 67  # < 1/10 of max
  return "warning" if percent < 84  # < 1/3 of max

  "danger"                          # > 1/3 of max
end

#ordered_filter_optionsObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'app/helpers/rails_admin_next/main_helper.rb', line 44

def ordered_filter_options
  if ordered_filters
    @ordered_filter_options ||= ordered_filters.map do |duplet|
      filter_for_field = duplet[1]
      filter_name = filter_for_field.keys.first
      filter_hash = filter_for_field.values.first
      unless (field = filterable_fields.find { |f| f.name == filter_name.to_sym }&.with({view: self}))
        raise "#{filter_name} is not currently filterable; filterable fields are #{filterable_fields.map(&:name).join(", ")}"
      end

      field.filter_options.merge(
        index: duplet[0],
        operator: filter_hash["o"] || field.default_filter_operator,
        value: filter_hash["v"]
      )
    end
  end
end

#ordered_filtersObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/helpers/rails_admin_next/main_helper.rb', line 28

def ordered_filters
  return @ordered_filters if @ordered_filters.present?

  @index = 0
  @ordered_filters = (params[:f].try(:permit!).try(:to_h) || @model_config.list.filters).each_with_object({}) do |filter, memo|
    field_name = filter.is_a?(Array) ? filter.first : filter
    (filter.is_a?(Array) ? filter.last : {(@index += 1) => {"v" => ""}}).each do |index, filter_hash|
      if filter_hash["disabled"].blank?
        memo[index] = {field_name => filter_hash}
      else
        params[:f].delete(field_name)
      end
    end
  end.to_a.sort_by(&:first)
end

#rails_admin_form_for(*args) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'app/helpers/rails_admin_next/main_helper.rb', line 5

def rails_admin_form_for(*args, &)
  options = args.extract_options!.reverse_merge(builder: RailsAdminNext::FormBuilder)
  (options[:html] ||= {})[:novalidate] ||= !RailsAdminNext::Config.browser_validations
  html_data = (options[:html][:data] ||= {})
  html_data[:controller] = [html_data[:controller], "feedback"].compact.join(" ")
  html_data[:action] = [html_data[:action], "turbo:submit-start->feedback#start turbo:submit-end->feedback#end"].compact.join(" ")

  form_for(*(args << options), &)
end