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 relation enum)
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, type: :unknown, readable: true, writable: true, visible: true, sortable: true) ⇒ 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.
106 107 108 109 110 111 112 113 |
# File 'lib/admin_it/field/field.rb', line 106 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.
41 42 43 |
# File 'lib/admin_it/field/field.rb', line 41 def display @display end |
.read ⇒ Object (readonly)
Returns the value of attribute read.
41 42 43 |
# File 'lib/admin_it/field/field.rb', line 41 def read @read end |
.render ⇒ Object (readonly)
Returns the value of attribute render.
41 42 43 |
# File 'lib/admin_it/field/field.rb', line 41 def render @render end |
.type ⇒ Object
Returns the value of attribute type.
41 42 43 |
# File 'lib/admin_it/field/field.rb', line 41 def type @type end |
.write ⇒ Object (readonly)
Returns the value of attribute write.
41 42 43 |
# File 'lib/admin_it/field/field.rb', line 41 def write @write end |
Instance Attribute Details
#readable=(value) ⇒ Object (writeonly)
Sets the attribute readable
104 105 106 |
# File 'lib/admin_it/field/field.rb', line 104 def readable=(value) @readable = value end |
#visible=(value) ⇒ Object (writeonly)
Sets the attribute visible
104 105 106 |
# File 'lib/admin_it/field/field.rb', line 104 def visible=(value) @visible = value end |
#writable=(value) ⇒ Object (writeonly)
Sets the attribute writable
104 105 106 |
# File 'lib/admin_it/field/field.rb', line 104 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, type: :unknown, readable: true, writable: true, visible: true, sortable: true) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/admin_it/field/field.rb', line 68 def self.create(name, _entity_class, type: :unknown, readable: true, writable: true, visible: true, sortable: true ) base = self Class.new(base) do @field_name, @entity_class = name, _entity_class import_data_module(base) @readable = readable == true @writable = writable == true @visible = visible == true @sortable = sortable == true self.type = 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
95 96 97 |
# File 'lib/admin_it/field/field.rb', line 95 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
91 92 93 |
# File 'lib/admin_it/field/field.rb', line 91 def self.placeholder @placeholder ||= display_name end |
.readable? ⇒ Boolean
50 51 52 |
# File 'lib/admin_it/field/field.rb', line 50 def self.readable? @readable.nil? ? @readable = true : @readable == true end |
.show ⇒ Object
99 100 101 |
# File 'lib/admin_it/field/field.rb', line 99 def self.show @visible = true end |
.sortable? ⇒ Boolean
62 63 64 |
# File 'lib/admin_it/field/field.rb', line 62 def self.sortable? @sortable.nil? ? @sortable = true : @sortable == true end |
.visible? ⇒ Boolean
58 59 60 |
# File 'lib/admin_it/field/field.rb', line 58 def self.visible? @visible.nil? ? @visible = true : @visible == true end |
.writable? ⇒ Boolean
54 55 56 |
# File 'lib/admin_it/field/field.rb', line 54 def self.writable? @writable.nil? ? @writable = true : @writable == true end |
Instance Method Details
#input(template, entity) ⇒ Object
173 174 175 176 177 178 179 180 |
# File 'lib/admin_it/field/field.rb', line 173 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
115 116 117 |
# File 'lib/admin_it/field/field.rb', line 115 def name @name ||= self.class.field_name end |
#read(entity) ⇒ Object
135 136 137 138 139 140 |
# File 'lib/admin_it/field/field.rb', line 135 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
119 120 121 |
# File 'lib/admin_it/field/field.rb', line 119 def readable? @readable == true end |
#render(entity, instance: nil) ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/admin_it/field/field.rb', line 161 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
142 143 144 145 146 147 |
# File 'lib/admin_it/field/field.rb', line 142 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
131 132 133 |
# File 'lib/admin_it/field/field.rb', line 131 def sortable? @sortable == true end |
#visible? ⇒ Boolean
127 128 129 |
# File 'lib/admin_it/field/field.rb', line 127 def visible? @visible == true end |
#writable? ⇒ Boolean
123 124 125 |
# File 'lib/admin_it/field/field.rb', line 123 def writable? @writable == true end |
#write(entity, value) ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/admin_it/field/field.rb', line 149 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 |