Class: Edgar::FormDrawer::Base
- Inherits:
-
Object
- Object
- Edgar::FormDrawer::Base
- Defined in:
- app/helpers/edgar/form_drawer.rb
Overview
Edgar::FormDrawer::Base draws HTML table tag based data entry form. This also provides default methods for SearchFormDrawer search condition entry form.
How to Customize
-
First, it may be enough to just redefine @options
-
Next, when draw_ATTR() is defined, it is called. See ModelPermissionControllerHelper for example.
-
Then, consider to overwrite draw_ATTR() method.
Direct Known Subclasses
Instance Method Summary (collapse)
-
- (Object) _draw_2_lane(&block)
flip field to left-lane or right-lane.
-
- (Object) _draw_belongs_to_field(parent_model, col)
draw 'belongs_to' field for AR.
-
- (Object) _draw_field(col)
draw general field.
-
- (Object) _draw_head(col, label = nil, &block)
draw head(label).
- - (Object) columns
-
- (Object) draw
draw form.
-
- (Object) draw_address(col)
draw address fields.
-
- (Object) draw_bitset(col, bitset)
draw bitset checkboxes field.
- - (Object) draw_boolean(col)
- - (Object) draw_created_at(col)
- - (Object) draw_enum(col, enum)
- - (Object) draw_file(col)
- - (Object) draw_id(col)
- - (Object) draw_type(col)
- - (Object) draw_updated_at(col)
-
- (Boolean) edgar_address?(col)
base method for derived class.
-
- (Boolean) edgar_file?(col)
base method for derived class.
-
- (Object) get_bitset(col)
return bitset of the column.
-
- (Object) get_enum(col)
return enum of the column.
-
- (Base) initialize(template, model, f)
constructor
INPUTS
- f
-
FormBuilder.
Constructor Details
- (Base) initialize(template, model, f)
INPUTS
- f
-
FormBuilder
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/helpers/edgar/form_drawer.rb', line 17 def initialize(template, model, f) @template = template @model = model @f = f # define default options for draw_X() method, where X is :flags, :kind, # and so on. @options can be redefined at derived class. @options = { :flags => {}, :kind => {}, :boolean => {}, :default => { :date => {:use_month_numbers=>true}, :integer => {:size=>16}, :text => {:size=>20}, } } end |
Instance Method Details
- (Object) _draw_2_lane(&block)
flip field to left-lane or right-lane
105 106 107 108 109 110 111 |
# File 'app/helpers/edgar/form_drawer.rb', line 105 def _draw_2_lane(&block) result = @left ? '<tr>' : '' result += yield result += '</tr>' if !@left @left = !@left # flip it result end |
- (Object) _draw_belongs_to_field(parent_model, col)
draw 'belongs_to' field for AR
156 157 158 159 160 |
# File 'app/helpers/edgar/form_drawer.rb', line 156 def _draw_belongs_to_field(parent_model, col) _draw_head(col, @template.draw_belongs_to_label(@f, col.name)){ @template.draw_belongs_to_field(@f, col.name) } end |
- (Object) _draw_field(col)
draw general field
175 176 177 178 179 180 181 182 |
# File 'app/helpers/edgar/form_drawer.rb', line 175 def _draw_field(col) case col.type when :boolean draw_boolean(col) else _draw_head(col){ @template.draw_field(@f, col, @options[:default]) } end end |
- (Object) _draw_head(col, label = nil, &block)
draw head(label). SearchFormDrawer will overwrite to insert operator.
INPUTS
- col
-
column info
- label
-
if not-nil, label is used rather than human_attribute_name of col.name for field-label
- block
-
wrapped field-drawing logic
120 121 122 123 124 125 126 127 |
# File 'app/helpers/edgar/form_drawer.rb', line 120 def _draw_head(col, label=nil, &block) _draw_2_lane{ html = @template.content_tag(:th, label || @model.class.human_attribute_name(col.name)) html << @template.content_tag(:td, '') html << (@template.content_tag(:td) do yield end) html } end |
- (Object) columns
75 76 77 78 |
# File 'app/helpers/edgar/form_drawer.rb', line 75 def columns m = @template.model_class m.columns_for(m.view_form_columns) end |
- (Object) draw
draw form
I18n for label is:
-
usual column uses model.human_attribute_name()
-
'belongs_to' column uses:
** I18n.t('activerecord.attributes.MODEL.EXT_ID') ** parent.human_name
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/helpers/edgar/form_drawer.rb', line 44 def draw() adrs_field = {} @template.content_tag(:table) do @left = true html = '' for col in columns do draw_method = "draw_#{col.name}" html << if self.class.method_defined?(draw_method) then send(draw_method, col) elsif edgar_address?(col) draw_address(col) elsif edgar_file?(col) draw_file(col) elsif (enum = get_enum(col)) draw_enum(col, enum) elsif (bitset = get_bitset(col)) draw_bitset(col, bitset) else parent_model = @template.model_class.belongs_to_AR(col) if parent_model _draw_belongs_to_field(parent_model, col) else _draw_field(col) end end end html << '<td colspan=3></td>'.html_safe if !@left html.html_safe end end |
- (Object) draw_address(col)
draw address fields
146 147 148 |
# File 'app/helpers/edgar/form_drawer.rb', line 146 def draw_address(col) _draw_head(col){ @template.draw_address(@f, col) } end |
- (Object) draw_bitset(col, bitset)
draw bitset checkboxes field
151 152 153 |
# File 'app/helpers/edgar/form_drawer.rb', line 151 def draw_bitset(col, bitset) _draw_head(col){ @template.draw_bitset(@f, col, bitset, @options[:flags]) } end |
- (Object) draw_boolean(col)
162 163 164 |
# File 'app/helpers/edgar/form_drawer.rb', line 162 def draw_boolean(col) _draw_head(col){ @template.draw_boolean(@f, col, @options[:boolean]) } end |
- (Object) draw_created_at(col)
137 138 139 |
# File 'app/helpers/edgar/form_drawer.rb', line 137 def draw_created_at(col) '' end |
- (Object) draw_enum(col, enum)
170 171 172 |
# File 'app/helpers/edgar/form_drawer.rb', line 170 def draw_enum(col, enum) _draw_head(col){ @template.draw_enum(@f, col, enum) } end |
- (Object) draw_file(col)
166 167 168 |
# File 'app/helpers/edgar/form_drawer.rb', line 166 def draw_file(col) _draw_head(col){ @template.draw_file(@f, col) } end |
- (Object) draw_id(col)
129 130 131 |
# File 'app/helpers/edgar/form_drawer.rb', line 129 def draw_id(col) '' end |
- (Object) draw_type(col)
133 134 135 |
# File 'app/helpers/edgar/form_drawer.rb', line 133 def draw_type(col) '' end |
- (Object) draw_updated_at(col)
141 142 143 |
# File 'app/helpers/edgar/form_drawer.rb', line 141 def draw_updated_at(col) '' end |
- (Boolean) edgar_address?(col)
base method for derived class
81 82 83 |
# File 'app/helpers/edgar/form_drawer.rb', line 81 def edgar_address?(col) @model.class.edgar_address?(col) end |
- (Boolean) edgar_file?(col)
base method for derived class
86 87 88 |
# File 'app/helpers/edgar/form_drawer.rb', line 86 def edgar_file?(col) @model.class.edgar_file?(col) end |
- (Object) get_bitset(col)
return bitset of the column
Derived class must overwrite to return expected bitset
100 101 102 |
# File 'app/helpers/edgar/form_drawer.rb', line 100 def get_bitset(col) @template.get_bitset(@f.object.class, col) end |
- (Object) get_enum(col)
return enum of the column
Derived class must overwrite to return expected enum
93 94 95 |
# File 'app/helpers/edgar/form_drawer.rb', line 93 def get_enum(col) @template.get_enum(@f.object.class, col) end |