Class: Edgarj::FormDrawer::Search

Inherits:
Base
  • Object
show all
Defined in:
app/helpers/edgarj/form_drawer.rb

Overview

Search-class differs from Base-class as follows:

  • draws the fields of ID, created_at, and updated_at for search

  • ‘kind’ selection has blank-option.

  • boolean is not checkbox. Rather, it is selection of [nil,false,true]

  • edgarj_file column is not drawn.

Instance Attribute Summary

Attributes inherited from Base

#f, #vc

Instance Method Summary collapse

Methods inherited from Base

#_draw_2_lane, #_draw_field, #draw, #draw_bitset, #draw_field, #draw_type, #get_bitset

Constructor Details

#initialize(drawer, model, f, operator_builder) ⇒ Search

INPUTS

drawer

Edgarj::Drawer instance

model

SearchForm object

f

FormBuilder object

operator_builder

FormBuilder object for operator



199
200
201
202
203
204
205
206
# File 'app/helpers/edgarj/form_drawer.rb', line 199

def initialize(drawer, model, f, operator_builder)
  super(drawer, model, f)
  @operator_builder = operator_builder

  # merge options
  @options[:kind].merge!(:include_blank=>true)
  @options[:default][:date].merge!(:include_blank=>true)
end

Instance Method Details

#_draw_belongs_to_field(parent_model, col) ⇒ Object

overwrite to draw ‘belongs_to’ field for SearchForm

This is similar to Base class ‘belongs_to field’, but

  • add parent ‘name’ hidden field at drawing.

  • no link on parent name



271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
# File 'app/helpers/edgarj/form_drawer.rb', line 271

def _draw_belongs_to_field(parent_model, col)
  model = @f.object._klass_str.constantize
  parent_name = @f.object._parent && @f.object._parent[col.name]
  _draw_head(col, @vc.draw_belongs_to_label(@f, @drawer.popup_path_on_search(col), col.name, model)){
    popup_field = Edgarj::PopupHelper::PopupField.new_builder(
        @f.object_name, col.name)

    @vc.(:span, parent_name, id: popup_field.label_target) +
    @vc.hidden_field_tag(
      'edgarj_search_form[search_form_parent][%s]' % col.name,
      parent_name.blank? ? '' : parent_name,
      id: popup_field.label_hidden_field) +
    @vc.draw_belongs_to_clear_link(@f, col.name, popup_field,
        parent_name,
        '[' + @vc.draw_belongs_to_label_sub(model, col.name, parent_model) + ']')
  }
end

#_draw_head(col, label = nil, &block) ⇒ Object

overwrite to insert operator



226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
# File 'app/helpers/edgarj/form_drawer.rb', line 226

def _draw_head(col, label=nil, &block)
  _draw_2_lane{
    sprintf("<th>%s</th><td>", label || @vc.column_label(col)).html_safe +

    # add operator for appropreate data type.
    if col.name == 'id'
      @vc.draw_search_operator(@operator_builder, '_id')
    else
      case col.type
      when :date, :datetime, :integer
        @vc.draw_search_operator(@operator_builder, col.name)
      else
        ''
      end
    end + '</td><td>'.html_safe + yield + '</td>'.html_safe
  }
end

#columnsObject

overwrite



209
210
211
212
# File 'app/helpers/edgarj/form_drawer.rb', line 209

def columns
  drawer = @vc.drawer
  drawer.columns_for(drawer.search_form_columns, :search_form)
end

#draw_address(col) ⇒ Object

overwrite to draw address fields: TBD



260
261
262
263
264
# File 'app/helpers/edgarj/form_drawer.rb', line 260

def draw_address(col)
  _draw_head(col){
    'TBD'
  }
end

#draw_boolean(col) ⇒ Object

overwrite because it is totally different from checkbox on search.



290
291
292
293
294
295
296
297
# File 'app/helpers/edgarj/form_drawer.rb', line 290

def draw_boolean(col)
  _draw_head(col){
    @f.select(col.name, [
        ['(both)',  ''],
        ['',        'false'],
        ['',       'true']])
  }
end

#draw_created_at(col) ⇒ Object

overwrite to draw created_at



250
251
252
# File 'app/helpers/edgarj/form_drawer.rb', line 250

def draw_created_at(col)
  _draw_head(col){ @vc.draw_date(@f, col, @options[:default]) }
end

#draw_enum(col, enum) ⇒ Object

overwrite to add ‘(all)’ at top of enum selection for search.

see overwritten get_enum() also.



309
310
311
312
313
314
315
316
# File 'app/helpers/edgarj/form_drawer.rb', line 309

def draw_enum(col, enum)
  _draw_head(col){
    @vc.draw_enum(@f, col, enum,
        :choice_1st => ['(all)',''],
        :class      => @record._klass_str.constantize
        )
  }
end

#draw_file(col) ⇒ Object

overwrite to disable file upload column



319
320
321
# File 'app/helpers/edgarj/form_drawer.rb', line 319

def draw_file(col)
  ''
end

#draw_id(col) ⇒ Object

overwrite to draw ‘id’ search field



245
246
247
# File 'app/helpers/edgarj/form_drawer.rb', line 245

def draw_id(col)
  _draw_head(col){ @f.text_field('_id', @options[:default][:integer]) }
end

#draw_updated_at(col) ⇒ Object

overwrite to draw updated_at



255
256
257
# File 'app/helpers/edgarj/form_drawer.rb', line 255

def draw_updated_at(col)
  _draw_head(col){ @vc.draw_date(@f, col, @options[:default]) }
end

#edgarj_address?(col) ⇒ Boolean

overwrite

Returns:

  • (Boolean)


215
216
217
# File 'app/helpers/edgarj/form_drawer.rb', line 215

def edgarj_address?(col)
  @record._klass_str.constantize.edgarj_address?(col)
end

#edgarj_file?(col) ⇒ Boolean

overwrite

Returns:

  • (Boolean)


220
221
222
# File 'app/helpers/edgarj/form_drawer.rb', line 220

def edgarj_file?(col)
  @record._klass_str.constantize.edgarj_file?(col)
end

#get_enum(col) ⇒ Object

overwrite to return enum of the column in SearchForm

see overwritten draw_enum() also.



302
303
304
# File 'app/helpers/edgarj/form_drawer.rb', line 302

def get_enum(col)
  @vc.get_enum(@record._klass_str.constantize, col)
end