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