Class: AdminIt::Field
- Inherits:
-
Object
- Object
- 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 array hash range regexp symbol binary image)
- EDITORS =
i(text combo radio image hidden)
Class Attribute Summary collapse
-
.display ⇒ Object
readonly
Returns the value of attribute display.
-
.partial ⇒ Object
readonly
Returns the value of attribute partial.
-
.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
- .editor ⇒ Object
- .editor=(value) ⇒ Object
- .hide ⇒ Object
- .inherited_class_reader(*names) ⇒ Object extended from ExtendIt::Base
- .metaclass(&block) ⇒ Object extended from ExtendIt::Base
- .placeholder ⇒ Object
- .readable? ⇒ Boolean
- .show ⇒ Object
- .show_label? ⇒ Boolean
- .sortable? ⇒ Boolean
- .visible? ⇒ Boolean
- .writable? ⇒ Boolean
Instance Method Summary collapse
- #hidden? ⇒ Boolean
-
#initialize(readable: nil, writable: nil, visible: nil, sortable: nil, show_label: 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
- #show_label? ⇒ Boolean
- #sortable? ⇒ Boolean
- #visible? ⇒ Boolean
- #writable? ⇒ Boolean
- #write(entity, value) ⇒ Object
Constructor Details
#initialize(readable: nil, writable: nil, visible: nil, sortable: nil, show_label: nil) ⇒ Field
Returns a new instance of Field.
125 126 127 128 129 130 131 132 133 |
# File 'lib/admin_it/field/field.rb', line 125 def initialize(readable: nil, writable: nil, visible: nil, sortable: nil, show_label: 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 @show_label = show_label.nil? ? self.class.show_label? : show_label == true end end |
Class Attribute Details
.display ⇒ Object (readonly)
Returns the value of attribute display.
45 46 47 |
# File 'lib/admin_it/field/field.rb', line 45 def display @display end |
.partial ⇒ Object (readonly)
Returns the value of attribute partial.
45 46 47 |
# File 'lib/admin_it/field/field.rb', line 45 def partial @partial end |
.read ⇒ Object (readonly)
Returns the value of attribute read.
45 46 47 |
# File 'lib/admin_it/field/field.rb', line 45 def read @read end |
.render ⇒ Object (readonly)
Returns the value of attribute render.
45 46 47 |
# File 'lib/admin_it/field/field.rb', line 45 def render @render end |
.type ⇒ Object
Returns the value of attribute type.
45 46 47 |
# File 'lib/admin_it/field/field.rb', line 45 def type @type end |
.write ⇒ Object (readonly)
Returns the value of attribute write.
45 46 47 |
# File 'lib/admin_it/field/field.rb', line 45 def write @write end |
Instance Attribute Details
#readable=(value) ⇒ Object (writeonly)
Sets the attribute readable
123 124 125 |
# File 'lib/admin_it/field/field.rb', line 123 def readable=(value) @readable = value end |
#visible=(value) ⇒ Object (writeonly)
Sets the attribute visible
123 124 125 |
# File 'lib/admin_it/field/field.rb', line 123 def visible=(value) @visible = value end |
#writable=(value) ⇒ Object (writeonly)
Sets the attribute writable
123 124 125 |
# File 'lib/admin_it/field/field.rb', line 123 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
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/admin_it/field/field.rb', line 76 def self.create(name, _entity_class, **opts) base = self 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 @show_label = opts[:show_label].nil? ? true : opts[:show_label] == true self.type = opts[:type] self.editor = opts[:editor] unless opts[:editor].nil? 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
.editor ⇒ Object
115 116 117 118 119 120 |
# File 'lib/admin_it/field/field.rb', line 115 def self.editor return @editor unless @editor.nil? return @editor = :image if type == :image return @editor = :combo if type == :enum @editor = EDITORS[0] end |
.editor=(value) ⇒ Object
95 96 97 |
# File 'lib/admin_it/field/field.rb', line 95 def self.editor=(value) @editor = value.ensure_symbol(values: EDITORS, default: EDITORS[0]) end |
.hide ⇒ Object
107 108 109 |
# File 'lib/admin_it/field/field.rb', line 107 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
99 100 101 |
# File 'lib/admin_it/field/field.rb', line 99 def self.placeholder @placeholder ||= display_name end |
.readable? ⇒ Boolean
54 55 56 |
# File 'lib/admin_it/field/field.rb', line 54 def self.readable? @readable.nil? ? @readable = true : @readable == true end |
.show ⇒ Object
111 112 113 |
# File 'lib/admin_it/field/field.rb', line 111 def self.show @visible = true end |
.show_label? ⇒ Boolean
70 71 72 |
# File 'lib/admin_it/field/field.rb', line 70 def self.show_label? @show_label.nil? ? @show_label = true : @show_label == true end |
.sortable? ⇒ Boolean
66 67 68 |
# File 'lib/admin_it/field/field.rb', line 66 def self.sortable? @sortable.nil? ? @sortable = true : @sortable == true end |
.visible? ⇒ Boolean
62 63 64 |
# File 'lib/admin_it/field/field.rb', line 62 def self.visible? @visible.nil? ? @visible = true : @visible == true end |
.writable? ⇒ Boolean
58 59 60 |
# File 'lib/admin_it/field/field.rb', line 58 def self.writable? @writable.nil? ? @writable = true : @writable == true end |
Instance Method Details
#hidden? ⇒ Boolean
151 152 153 |
# File 'lib/admin_it/field/field.rb', line 151 def hidden? @visible != true end |
#input(template, entity) ⇒ Object
201 202 203 204 205 206 207 208 |
# File 'lib/admin_it/field/field.rb', line 201 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
135 136 137 |
# File 'lib/admin_it/field/field.rb', line 135 def name @name ||= self.class.field_name end |
#read(entity) ⇒ Object
163 164 165 166 167 168 |
# File 'lib/admin_it/field/field.rb', line 163 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
139 140 141 |
# File 'lib/admin_it/field/field.rb', line 139 def readable? @readable == true end |
#render(entity, instance: nil) ⇒ Object
189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/admin_it/field/field.rb', line 189 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
170 171 172 173 174 175 |
# File 'lib/admin_it/field/field.rb', line 170 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 |
#show_label? ⇒ Boolean
159 160 161 |
# File 'lib/admin_it/field/field.rb', line 159 def show_label? @show_label == true end |
#sortable? ⇒ Boolean
155 156 157 |
# File 'lib/admin_it/field/field.rb', line 155 def sortable? @sortable == true end |
#visible? ⇒ Boolean
147 148 149 |
# File 'lib/admin_it/field/field.rb', line 147 def visible? @visible == true end |
#writable? ⇒ Boolean
143 144 145 |
# File 'lib/admin_it/field/field.rb', line 143 def writable? @writable == true end |
#write(entity, value) ⇒ Object
177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/admin_it/field/field.rb', line 177 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 |