Method: CustomTable::ApplicationHelper#custom_table_fields_settings_for
- Defined in:
- app/helpers/custom_table/application_helper.rb
#custom_table_fields_settings_for(model, variant: nil) ⇒ Object
Returns list of fields for customization form
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 |
# File 'app/helpers/custom_table/application_helper.rb', line 267 def custom_table_fields_settings_for(model, variant: nil) model_fields = custom_table_fields_definition_for(model, variant) model_fields = model_fields.reject {|k,v| [:export, :never].include?(v[:appear]) } fields_key = model.model_name.to_s fields_key += "-#{variant}" unless variant.nil? user_customization = custom_table_user_customized_fields_for(model, variant) if !user_customization.nil? # Add new fields at the top to user customization if not present model_fields.each do |f, v| next if !user_customization[f].nil? selected = [:always, :default].include?(v[:appear]) new_field = {"#{f.to_s}": selected} if selected user_customization = new_field.merge(user_customization) else user_customization = user_customization.merge(new_field) end end return user_customization.reject{|f,v| model_fields[f].nil?}.collect{|f,v| [f, {selected: v}.merge(model_fields[f])]}.to_h else # Use default model settings # abort model_fields.transform_values!{|f| f[:selected] = true}.inspect return model_fields.each{|k,f| f[:selected] = [:always, :default].include?(f[:appear])} end end |