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 Method Summary collapse

Methods inherited from Base

#_draw_2_lane, #_draw_field, #draw, #draw_bitset, #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



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

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



278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
# File 'app/helpers/edgarj/form_drawer.rb', line 278

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



233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'app/helpers/edgarj/form_drawer.rb', line 233

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

    # 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>' + yield + '</td>'
  }
end

#columnsObject

overwrite



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

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

#draw_address(col) ⇒ Object

overwrite to draw address fields: TBD



267
268
269
270
271
# File 'app/helpers/edgarj/form_drawer.rb', line 267

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

#draw_boolean(col) ⇒ Object

overwrite because it is totally different from checkbox on search.



297
298
299
300
301
302
303
304
# File 'app/helpers/edgarj/form_drawer.rb', line 297

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



257
258
259
# File 'app/helpers/edgarj/form_drawer.rb', line 257

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.



316
317
318
319
320
321
322
323
# File 'app/helpers/edgarj/form_drawer.rb', line 316

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



326
327
328
# File 'app/helpers/edgarj/form_drawer.rb', line 326

def draw_file(col)
  ''
end

#draw_id(col) ⇒ Object

overwrite to draw ‘id’ search field



252
253
254
# File 'app/helpers/edgarj/form_drawer.rb', line 252

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



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

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

#edgarj_address?(col) ⇒ Boolean

overwrite

Returns:

  • (Boolean)


222
223
224
# File 'app/helpers/edgarj/form_drawer.rb', line 222

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

#edgarj_file?(col) ⇒ Boolean

overwrite

Returns:

  • (Boolean)


227
228
229
# File 'app/helpers/edgarj/form_drawer.rb', line 227

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.



309
310
311
# File 'app/helpers/edgarj/form_drawer.rb', line 309

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