Class: LcpRuby::Search::ParameterDefinition
- Inherits:
-
Object
- Object
- LcpRuby::Search::ParameterDefinition
- Defined in:
- lib/lcp_ruby/search/parameter_definition.rb
Constant Summary collapse
- VALID_TYPES =
%w[enum_select association_select boolean_select number_range date_range].freeze
- SELECT_TYPES =
%w[enum_select association_select boolean_select].freeze
- RANGE_TYPES =
%w[number_range date_range].freeze
Instance Attribute Summary collapse
-
#col_span ⇒ Object
readonly
Returns the value of attribute col_span.
-
#field ⇒ Object
readonly
Returns the value of attribute field.
-
#include_blank ⇒ Object
readonly
Returns the value of attribute include_blank.
-
#label_key ⇒ Object
readonly
Returns the value of attribute label_key.
-
#label_method ⇒ Object
readonly
Returns the value of attribute label_method.
-
#min_query_length ⇒ Object
readonly
Returns the value of attribute min_query_length.
-
#model ⇒ Object
readonly
Returns the value of attribute model.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#per_page ⇒ Object
readonly
Returns the value of attribute per_page.
-
#search ⇒ Object
readonly
Returns the value of attribute search.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
-
#visible_when ⇒ Object
readonly
Returns the value of attribute visible_when.
Class Method Summary collapse
Instance Method Summary collapse
- #association_select? ⇒ Boolean
- #auto_derive_options(model_definition) ⇒ Object
- #blank_label ⇒ Object
- #boolean_select? ⇒ Boolean
- #date_range? ⇒ Boolean
- #effective_col_span(grid_columns) ⇒ Object
- #enum_select? ⇒ Boolean
-
#initialize(name:, type:, field:, model: nil, options: nil, label_key: nil, visible_when: nil, search: nil, min_query_length: nil, per_page: nil, label_method: nil, include_blank: nil, col_span: nil) ⇒ ParameterDefinition
constructor
A new instance of ParameterDefinition.
- #label ⇒ Object
- #number_range? ⇒ Boolean
- #range_type? ⇒ Boolean
- #ransack_param_keys ⇒ Object
- #read_current_value(params_f) ⇒ Object
- #remote_search? ⇒ Boolean
- #select_type? ⇒ Boolean
- #to_input_options ⇒ Object
- #visible_for_user?(user) ⇒ Boolean
Constructor Details
#initialize(name:, type:, field:, model: nil, options: nil, label_key: nil, visible_when: nil, search: nil, min_query_length: nil, per_page: nil, label_method: nil, include_blank: nil, col_span: nil) ⇒ ParameterDefinition
Returns a new instance of ParameterDefinition.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 13 def initialize(name:, type:, field:, model: nil, options: nil, label_key: nil, visible_when: nil, search: nil, min_query_length: nil, per_page: nil, label_method: nil, include_blank: nil, col_span: nil) @name = name.to_s @type = type.to_s @field = field.to_s @model = model&.to_s @options = @label_key = label_key&.to_s @visible_when = visible_when @search = search @min_query_length = min_query_length @per_page = per_page @label_method = label_method&.to_s @include_blank = include_blank @col_span = col_span validate! end |
Instance Attribute Details
#col_span ⇒ Object (readonly)
Returns the value of attribute col_span.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def col_span @col_span end |
#field ⇒ Object (readonly)
Returns the value of attribute field.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def field @field end |
#include_blank ⇒ Object (readonly)
Returns the value of attribute include_blank.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def include_blank @include_blank end |
#label_key ⇒ Object (readonly)
Returns the value of attribute label_key.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def label_key @label_key end |
#label_method ⇒ Object (readonly)
Returns the value of attribute label_method.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def label_method @label_method end |
#min_query_length ⇒ Object (readonly)
Returns the value of attribute min_query_length.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def min_query_length @min_query_length end |
#model ⇒ Object (readonly)
Returns the value of attribute model.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def model @model end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def @options end |
#per_page ⇒ Object (readonly)
Returns the value of attribute per_page.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def per_page @per_page end |
#search ⇒ Object (readonly)
Returns the value of attribute search.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def search @search end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def type @type end |
#visible_when ⇒ Object (readonly)
Returns the value of attribute visible_when.
9 10 11 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 9 def visible_when @visible_when end |
Class Method Details
.from_hash(hash) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 33 def self.from_hash(hash) hash = HashUtils.stringify_deep(hash) new( name: hash["name"], type: hash["type"], field: hash["field"], model: hash["model"], options: hash["options"], label_key: hash["label_key"], visible_when: hash["visible_when"], search: hash["search"], min_query_length: hash["min_query_length"], per_page: hash["per_page"], label_method: hash["label_method"], include_blank: hash["include_blank"], col_span: hash["col_span"] ) end |
Instance Method Details
#association_select? ⇒ Boolean
64 65 66 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 64 def association_select? @type == "association_select" end |
#auto_derive_options(model_definition) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 142 def (model_definition) if enum_select? if @options.present? @options.map { |opt| [ opt.to_s.humanize, opt.to_s ] } else field_def = model_definition.fields.find { |f| f.name == @field } return [] unless field_def&.enum? model_name = model_definition.name field_def.enum_value_names.map { |val| [ field_def.enum_label_for(val, model_name: model_name), val ] } end elsif boolean_select? [ [ I18n.t("lcp_ruby.parameters.boolean.yes", default: "Yes"), "true" ], [ I18n.t("lcp_ruby.parameters.boolean.no", default: "No"), "false" ] ] else [] end end |
#blank_label ⇒ Object
97 98 99 100 101 102 103 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 97 def blank_label case @include_blank when false then nil when String then @include_blank else I18n.t("lcp_ruby.parameters.all", default: "All") end end |
#boolean_select? ⇒ Boolean
68 69 70 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 68 def boolean_select? @type == "boolean_select" end |
#date_range? ⇒ Boolean
76 77 78 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 76 def date_range? @type == "date_range" end |
#effective_col_span(grid_columns) ⇒ Object
84 85 86 87 88 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 84 def effective_col_span(grid_columns) return @col_span if @col_span return 2 if range_type? && grid_columns >= 2 nil end |
#enum_select? ⇒ Boolean
60 61 62 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 60 def enum_select? @type == "enum_select" end |
#label ⇒ Object
134 135 136 137 138 139 140 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 134 def label if @label_key.present? I18n.t(@label_key, default: @name.humanize) else I18n.t("lcp_ruby.parameters.#{@name}", default: @name.humanize) end end |
#number_range? ⇒ Boolean
72 73 74 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 72 def number_range? @type == "number_range" end |
#range_type? ⇒ Boolean
56 57 58 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 56 def range_type? RANGE_TYPES.include?(@type) end |
#ransack_param_keys ⇒ Object
114 115 116 117 118 119 120 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 114 def ransack_param_keys if range_type? [ "#{@field}_gteq", "#{@field}_lteq" ] else [ "#{@field}_eq" ] end end |
#read_current_value(params_f) ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 122 def read_current_value(params_f) return nil if params_f.blank? if range_type? from_val = params_f["#{@field}_gteq"] to_val = params_f["#{@field}_lteq"] (from_val.present? || to_val.present?) ? { from: from_val, to: to_val } : nil else params_f["#{@field}_eq"] end end |
#remote_search? ⇒ Boolean
80 81 82 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 80 def remote_search? !!@search end |
#select_type? ⇒ Boolean
52 53 54 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 52 def select_type? SELECT_TYPES.include?(@type) end |
#to_input_options ⇒ Object
105 106 107 108 109 110 111 112 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 105 def opts = {} opts["search"] = true if @search opts["label_method"] = @label_method if @label_method.present? opts["per_page"] = @per_page if @per_page opts["min_query_length"] = @min_query_length if @min_query_length opts end |
#visible_for_user?(user) ⇒ Boolean
90 91 92 93 94 95 |
# File 'lib/lcp_ruby/search/parameter_definition.rb', line 90 def visible_for_user?(user) return true unless @visible_when.is_a?(Hash) && @visible_when["role"].present? return false unless user (LcpRuby.user_roles(user) & Array(@visible_when["role"]).map(&:to_s)).any? end |