class Administrate::Generators::DashboardGenerator
Constants
- ATTRIBUTE_OPTIONS_MAPPING
- ATTRIBUTE_TYPE_MAPPING
- COLLECTION_ATTRIBUTE_LIMIT
- DEFAULT_FIELD_TYPE
- READ_ONLY_ATTRIBUTES
Public Instance Methods
create_dashboard_definition()
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 31 def create_dashboard_definition template( "dashboard.rb.erb", Rails.root.join("app/dashboards/#{file_name}_dashboard.rb"), ) end
create_resource_controller()
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 38 def create_resource_controller destination = Rails.root.join( "app/controllers/#{namespace}/#{file_name.pluralize}_controller.rb", ) template("controller.rb.erb", destination) end
Private Instance Methods
association_type(attribute)
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 105 def association_type(attribute) relationship = klass.reflections[attribute.to_s] if relationship.has_one? "Field::HasOne" elsif relationship.collection? "Field::HasMany" + relationship_options_string(relationship) elsif relationship.polymorphic? "Field::Polymorphic" else "Field::BelongsTo" + relationship_options_string(relationship) end end
attributes()
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 52 def attributes klass.reflections.keys + klass.columns.map(&:name) - redundant_attributes end
column_type_for_attribute(attr)
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 88 def column_type_for_attribute(attr) if enum_column?(attr) :enum else column_types(attr) end end
column_types(attr)
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 101 def column_types(attr) klass.columns.find { |column| column.name == attr }.try(:type) end
enum_column?(attr)
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 96 def enum_column?(attr) klass.respond_to?(:defined_enums) && klass.defined_enums.keys.include?(attr) end
field_type(attribute)
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 77 def field_type(attribute) type = column_type_for_attribute(attribute.to_s) if type ATTRIBUTE_TYPE_MAPPING.fetch(type, DEFAULT_FIELD_TYPE) + options_string(ATTRIBUTE_OPTIONS_MAPPING.fetch(type, {})) else association_type(attribute) end end
form_attributes()
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 58 def form_attributes attributes - READ_ONLY_ATTRIBUTES end
inspect_hash_as_ruby(hash)
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 138 def inspect_hash_as_ruby(hash) hash.map { |key, value| "#{key}: #{value.inspect}" }.join(", ") end
klass()
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 118 def klass @klass ||= Object.const_get(class_name) end
namespace()
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 48 def namespace options[:namespace] end
options_string(options)
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 130 def options_string(options) if options.any? ".with_options(#{inspect_hash_as_ruby(options)})" else "" end end
redundant_attributes()
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 62 def redundant_attributes klass.reflections.keys.flat_map do |relationship| redundant_attributes_for(relationship) end.compact end
redundant_attributes_for(relationship)
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 68 def redundant_attributes_for(relationship) case association_type(relationship) when "Field::Polymorphic" [relationship + "_id", relationship + "_type"] when "Field::BelongsTo" relationship + "_id" end end
relationship_options_string(relationship)
click to toggle source
# File lib/generators/administrate/dashboard/dashboard_generator.rb, line 122 def relationship_options_string(relationship) if relationship.class_name != relationship.name.to_s.classify options_string(class_name: relationship.class_name) else "" end end