Module: Infold::SearchConditionDecorator
- Defined in:
- app/decorators/infold/search_condition_decorator.rb
Instance Method Summary collapse
- #code_form_component(ns_camel) ⇒ Object
- #method_condition_label_name ⇒ Object
- #method_scope ⇒ Object
- #modal_search_label_name ⇒ Object
- #scope_name ⇒ Object
Instance Method Details
#code_form_component(ns_camel) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'app/decorators/infold/search_condition_decorator.rb', line 65 def code_form_component(ns_camel) if form_kind == 'reference' reference_model = model_column.model_association.parent_model view_modal = AppViewModal.joins(:app).find_by(apps: { model: reference_model } ) ActiveDecorator::Decorator.instance.decorate(view_modal) return "= render #{ns_camel}::Form::RelationFieldsetComponent.new(:#{reference_model.name_pluralize}, " + "form, :#{model_column.model_association.belongs_name}, :#{scope_name}, :#{modal_search_label_name})" if view_modal end if form_kind == 'select' || form_kind == 'reference' = if model_column.kind_enum? "#{ns_camel}::#{model.name}.#{model_column.name.pluralize}_i18n.invert" elsif model_column.is_foreign_key? "#{ns_camel}::#{model_association.parent_model_name}.all.pluck(:#{model_association.parent_model.label_column_name}, :id)" else raise "SearchCondition Select 想定外のカラムです model_column_id: #{self.model_column.id}" end "= render #{ns_camel}::Form::SelectFieldsetComponent.new(form, :#{scope_name}, #{}, selected_value: form.object.#{scope_name})" elsif form_kind == 'check' if model_column.kind_enum? "= render #{ns_camel}::Form::CheckboxFieldsetComponent.new(form, :#{scope_name}, #{ns_camel}::#{model.name}.#{model_column.name.pluralize}_i18n, checked_values: form.object.#{scope_name})" else "= render #{ns_camel}::Form::SwitchElementComponent.new(form, :#{scope_name}, include_hidden: false)" end else _datepicker = model_column.kind_date? || model_column.kind_datetime? ? ", datepicker: true" : '' _unit = if model_column.unit.present? && model_column.unit_position_prefix? ", prepend: '#{model_column.unit}', append: '#{sign_i18n}'" elsif model_column.unit.present? && model_column.unit_position_suffix? ", append: '#{model_column.unit} '#{sign_i18n}'" else ", append: '#{sign_i18n}'" end "= render #{ns_camel}::Form::InputFieldsetComponent.new(form, :#{scope_name}#{_datepicker}#{_unit})" end end |
#method_condition_label_name ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'app/decorators/infold/search_condition_decorator.rb', line 7 def method_condition_label_name label_column = model_association&.parent_model&.label_column_name return nil if !model_column.is_foreign_key? || label_column.blank? method = <<"METHOD" def #{modal_search_label_name} #{model_association.parent_model_name}.find_by(id: #{scope_name})&.#{label_column} if #{scope_name}.present? end METHOD method end |
#method_scope ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'app/decorators/infold/search_condition_decorator.rb', line 24 def method_scope code = if model != app_view.model association = model.associations.find{ |a| a.parent_model == app_view.model } "joins(:#{association.has_name}).where(#{association.has_name}: { #{model_column.name}: v }) if v.present? " elsif model_column.kind_datetime? && (sign_like? || sign_eq? || sign_lteq?) if sign_like? || sign_eq? <<"WHERE" return if v.blank? begin where(#{model_column.name}: v.to_date.all_day) rescue where(arel_table[:#{model_column.name}].#{sign}(v)) end WHERE else <<"WHERE" return if v.blank? begin v = v.to_date.next_day rescue end where(arel_table[:#{model_column.name}].#{sign}(v)) WHERE end elsif sign_eq? "where(#{model_column.name}: v) if v.present?" elsif sign_any? "where(#{model_column.name}: v) if v.present?" elsif sign_like? "where(arel_table[:#{model_column.name}].matches(" +'"%#{v}%"' + ")) if v.present?" else "where(arel_table[:#{model_column.name}].#{sign}(v)) if v.present?" end method = <<"METHOD" scope :#{scope_name}, ->(v) do #{code} end METHOD method end |
#modal_search_label_name ⇒ Object
19 20 21 22 |
# File 'app/decorators/infold/search_condition_decorator.rb', line 19 def modal_search_label_name association_model_name = model_association.belongs_name "#{association_model_name}_#{model_association.parent_model.label_column_name}" end |
#scope_name ⇒ Object
3 4 5 |
# File 'app/decorators/infold/search_condition_decorator.rb', line 3 def scope_name "#{model_column.name}_#{sign}" end |