Class: AdminIt::Field
- Extended by:
- DataBehavior, DisplayableName, ExtendIt::Base, ExtendIt::Dsl
- Includes:
- ExtendIt::Callbacks
- Defined in:
- lib/admin_it/field/field.rb
Overview
Describes any field of data
Constant Summary collapse
- TYPES =
%i(unknown integer float string date datetime time relation enum binary)
Class Attribute Summary collapse
-
.display ⇒ Object
readonly
Returns the value of attribute display.
-
.read ⇒ Object
readonly
Returns the value of attribute read.
-
.render ⇒ Object
readonly
Returns the value of attribute render.
-
.type ⇒ Object
Returns the value of attribute type.
-
.write ⇒ Object
readonly
Returns the value of attribute write.
Instance Attribute Summary collapse
-
#readable ⇒ Object
writeonly
Sets the attribute readable.
-
#visible ⇒ Object
writeonly
Sets the attribute visible.
-
#writable ⇒ Object
writeonly
Sets the attribute writable.
Class Method Summary collapse
- .attr_checker(*names) ⇒ Object extended from ExtendIt::Base
- .call_inherited(method_name, *args, base_first: false, &block) ⇒ Object extended from ExtendIt::Base
- .class_attr_reader(*attrs) ⇒ Object extended from ExtendIt::Base
- .create(name, _entity_class, **opts) ⇒ Object
- .display_name ⇒ Object extended from DisplayableName
- .display_name=(value) ⇒ Object extended from DisplayableName
- .dsl_eval(&block) ⇒ Object extended from ExtendIt::Dsl
- .hide ⇒ Object
- .inherited_class_reader(*names) ⇒ Object extended from ExtendIt::Base
- .metaclass(&block) ⇒ Object extended from ExtendIt::Base
- .placeholder ⇒ Object
- .readable? ⇒ Boolean
- .show ⇒ Object
- .sortable? ⇒ Boolean
- .visible? ⇒ Boolean
- .writable? ⇒ Boolean
Instance Method Summary collapse
-
#initialize(readable: nil, writable: nil, visible: nil, sortable: nil) ⇒ Field
constructor
A new instance of Field.
- #input(template, entity) ⇒ Object
- #name ⇒ Object
- #read(entity) ⇒ Object
- #readable? ⇒ Boolean
- #render(entity, instance: nil) ⇒ Object
- #run_callbacks(*names, arguments: [], original_context: false) ⇒ Object included from ExtendIt::Callbacks
- #show(entity) ⇒ Object
- #sortable? ⇒ Boolean
- #visible? ⇒ Boolean
- #writable? ⇒ Boolean
- #write(entity, value) ⇒ Object
Constructor Details
#initialize(readable: nil, writable: nil, visible: nil, sortable: nil) ⇒ Field
Returns a new instance of Field.
109 110 111 112 113 114 115 116 |
# File 'lib/admin_it/field/field.rb', line 109 def initialize(readable: nil, writable: nil, visible: nil, sortable: nil) run_callbacks :initialize do @readable = readable.nil? ? self.class.readable? : readable == true @writable = writable.nil? ? self.class.writable? : writable == true @visible = visible.nil? ? self.class.visible? : visible == true @sortable = sortable.nil? ? self.class.sortable? : sortable == true end end |
Class Attribute Details
.display ⇒ Object (readonly)
Returns the value of attribute display.
42 43 44 |
# File 'lib/admin_it/field/field.rb', line 42 def display @display end |
.read ⇒ Object (readonly)
Returns the value of attribute read.
42 43 44 |
# File 'lib/admin_it/field/field.rb', line 42 def read @read end |
.render ⇒ Object (readonly)
Returns the value of attribute render.
42 43 44 |
# File 'lib/admin_it/field/field.rb', line 42 def render @render end |
.type ⇒ Object
Returns the value of attribute type.
42 43 44 |
# File 'lib/admin_it/field/field.rb', line 42 def type @type end |
.write ⇒ Object (readonly)
Returns the value of attribute write.
42 43 44 |
# File 'lib/admin_it/field/field.rb', line 42 def write @write end |
Instance Attribute Details
#readable=(value) ⇒ Object (writeonly)
Sets the attribute readable
107 108 109 |
# File 'lib/admin_it/field/field.rb', line 107 def readable=(value) @readable = value end |
#visible=(value) ⇒ Object (writeonly)
Sets the attribute visible
107 108 109 |
# File 'lib/admin_it/field/field.rb', line 107 def visible=(value) @visible = value end |
#writable=(value) ⇒ Object (writeonly)
Sets the attribute writable
107 108 109 |
# File 'lib/admin_it/field/field.rb', line 107 def writable=(value) @writable = value end |
Class Method Details
.attr_checker(*names) ⇒ Object Originally defined in module ExtendIt::Base
.call_inherited(method_name, *args, base_first: false, &block) ⇒ Object Originally defined in module ExtendIt::Base
.class_attr_reader(*attrs) ⇒ Object Originally defined in module ExtendIt::Base
.create(name, _entity_class, **opts) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/admin_it/field/field.rb', line 69 def self.create(name, _entity_class, **opts) # type: :unknown, # readable: true, # writable: true, # visible: true, # sortable: true # ) base = self # _type, _readable, _writable, _visible, _sortable = # type, readable, writable, visible, sortable Class.new(base) do @field_name, @entity_class = name, _entity_class import_data_module(base) @readable = opts[:readable].nil? ? true : opts[:readable] == true @writable = opts[:writable].nil? ? true : opts[:writable] == true @visible = opts[:visible].nil? ? true : opts[:visible] == true @sortable = opts[:sortable].nil? ? true : opts[:sortable] == true self.type = opts[:type] end end |
.display_name ⇒ Object Originally defined in module DisplayableName
.display_name=(value) ⇒ Object Originally defined in module DisplayableName
.dsl_eval(&block) ⇒ Object Originally defined in module ExtendIt::Dsl
.hide ⇒ Object
98 99 100 |
# File 'lib/admin_it/field/field.rb', line 98 def self.hide @visible = false end |
.inherited_class_reader(*names) ⇒ Object Originally defined in module ExtendIt::Base
.metaclass(&block) ⇒ Object Originally defined in module ExtendIt::Base
.placeholder ⇒ Object
94 95 96 |
# File 'lib/admin_it/field/field.rb', line 94 def self.placeholder @placeholder ||= display_name end |
.readable? ⇒ Boolean
51 52 53 |
# File 'lib/admin_it/field/field.rb', line 51 def self.readable? @readable.nil? ? @readable = true : @readable == true end |
.show ⇒ Object
102 103 104 |
# File 'lib/admin_it/field/field.rb', line 102 def self.show @visible = true end |
.sortable? ⇒ Boolean
63 64 65 |
# File 'lib/admin_it/field/field.rb', line 63 def self.sortable? @sortable.nil? ? @sortable = true : @sortable == true end |
.visible? ⇒ Boolean
59 60 61 |
# File 'lib/admin_it/field/field.rb', line 59 def self.visible? @visible.nil? ? @visible = true : @visible == true end |
.writable? ⇒ Boolean
55 56 57 |
# File 'lib/admin_it/field/field.rb', line 55 def self.writable? @writable.nil? ? @writable = true : @writable == true end |
Instance Method Details
#input(template, entity) ⇒ Object
176 177 178 179 180 181 182 183 |
# File 'lib/admin_it/field/field.rb', line 176 def input(template, entity) typed_method = "#{type}_input".to_sym if respond_to?(typed_method) send typed_method, template, entity else Helpers::Input.new(template, self, entity: entity) end end |
#name ⇒ Object
118 119 120 |
# File 'lib/admin_it/field/field.rb', line 118 def name @name ||= self.class.field_name end |
#read(entity) ⇒ Object
138 139 140 141 142 143 |
# File 'lib/admin_it/field/field.rb', line 138 def read(entity) unless readable? fail FieldReadError, "Attempt to read write-only field #{name}" end self.class.read.nil? ? read_value(entity) : self.class.read.call(entity) end |
#readable? ⇒ Boolean
122 123 124 |
# File 'lib/admin_it/field/field.rb', line 122 def readable? @readable == true end |
#render(entity, instance: nil) ⇒ Object
164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/admin_it/field/field.rb', line 164 def render(entity, instance: nil) renderer = self.class.render return if renderer.nil? # method used as event emmiter, call block in instance or caller # context if it present if instance.nil? self.class.render.call(entity) else instance.instance_exec(entity, &renderer) end end |
#run_callbacks(*names, arguments: [], original_context: false) ⇒ Object Originally defined in module ExtendIt::Callbacks
#show(entity) ⇒ Object
145 146 147 148 149 150 |
# File 'lib/admin_it/field/field.rb', line 145 def show(entity) unless readable? fail FieldReadError, "Attempt to read write-only field #{name}" end self.class.display.nil? ? show_value(entity) : self.class.display.call(entity) end |
#sortable? ⇒ Boolean
134 135 136 |
# File 'lib/admin_it/field/field.rb', line 134 def sortable? @sortable == true end |
#visible? ⇒ Boolean
130 131 132 |
# File 'lib/admin_it/field/field.rb', line 130 def visible? @visible == true end |
#writable? ⇒ Boolean
126 127 128 |
# File 'lib/admin_it/field/field.rb', line 126 def writable? @writable == true end |
#write(entity, value) ⇒ Object
152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/admin_it/field/field.rb', line 152 def write(entity, value) unless writable? fail FieldWriteError, "Attempt to write read-only field #{name}" end if self.class.write.nil? write_value(entity, value) else self.class.write.call(entity, value) end entity end |