Class: LcpRuby::Dsl::IndexBuilder

Inherits:
Object
  • Object
show all
Includes:
SourceLocationCapture
Defined in:
lib/lcp_ruby/dsl/presenter_builder.rb

Instance Method Summary collapse

Methods included from SourceLocationCapture

capture_source_loc

Constructor Details

#initializeIndexBuilder

Returns a new instance of IndexBuilder.



360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 360

def initialize
  @reorderable_value = nil
  @layout_value = nil
  @render_with_value = nil
  @default_view = nil
  @default_sort = nil
  @per_page_value = nil
  @per_page_options_value = nil
  @views_available = nil
  @columns = []
  @row_click_value = nil
  @empty_message_value = nil
  @actions_position_value = nil
  @includes_list = nil
  @eager_load_list = nil
  @description_value = nil
  @tree_view_value = nil
  @default_expanded_value = nil
  @reparentable_value = nil
  @tile_hash = nil
  @card_hash = nil
  @kanban_hash = nil
  @sort_fields = []
  @summary_hash = nil
  @item_classes = []
  @query_mode_value = nil
  @group_by_value = nil
  @having_value = nil
  @limit_value = nil
  @default_scope_value = nil
  @show_record_count_value = nil
  @pagination_ends_value = nil
end

Instance Method Details

#actions_position(value) ⇒ Object



463
464
465
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 463

def actions_position(value)
  @actions_position_value = value.to_s
end

#card(&block) ⇒ Object



508
509
510
511
512
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 508

def card(&block)
  builder = CardBuilder.new
  builder.instance_eval(&block)
  @card_hash = builder.to_hash
end

#column(field_name, **options) ⇒ Object



467
468
469
470
471
472
473
474
475
476
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 467

def column(field_name, **options)
  source_loc = capture_source_loc
  col = { "field" => field_name.to_s }
  options.each do |k, v|
    col[k.to_s] = v.is_a?(Symbol) ? v.to_s : HashUtils.stringify_deep(v)
  end
  col["_source_loc"] = source_loc if source_loc
  col["_label_source_loc"] = source_loc if source_loc && options.key?(:label)
  @columns << col
end

#default_expanded(value) ⇒ Object



490
491
492
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 490

def default_expanded(value)
  @default_expanded_value = value
end

#default_scope(value) ⇒ Object



447
448
449
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 447

def default_scope(value)
  @default_scope_value = value.to_s
end

#default_sort(field, direction = :asc) ⇒ Object



411
412
413
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 411

def default_sort(field, direction = :asc)
  @default_sort = { "field" => field.to_s, "direction" => direction.to_s }
end

#default_view(value) ⇒ Object



407
408
409
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 407

def default_view(value)
  @default_view = value.to_s
end

#description(text) ⇒ Object



402
403
404
405
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 402

def description(text)
  @description_value = text
  @description_source_loc = capture_source_loc
end

#eager_load(*assocs) ⇒ Object



482
483
484
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 482

def eager_load(*assocs)
  @eager_load_list = assocs.flatten.map { |a| a.is_a?(Hash) ? HashUtils.stringify_deep(a) : a.to_s }
end

#empty_message(value) ⇒ Object



459
460
461
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 459

def empty_message(value)
  @empty_message_value = value
end

#group_by(fields) ⇒ Object



427
428
429
430
431
432
433
434
435
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 427

def group_by(fields)
  @group_by_value = Array(fields).map do |f|
    if f.is_a?(Hash)
      HashUtils.stringify_deep(f)
    else
      f.to_s
    end
  end
end

#having(&block) ⇒ Object



437
438
439
440
441
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 437

def having(&block)
  result = block.call
  conditions = result.is_a?(Array) ? result : [ result ]
  @having_value = conditions.map { |h| HashUtils.stringify_deep(h) }
end

#includes(*assocs) ⇒ Object



478
479
480
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 478

def includes(*assocs)
  @includes_list = assocs.flatten.map { |a| a.is_a?(Hash) ? HashUtils.stringify_deep(a) : a.to_s }
end

#item_class(classes, **kwargs) ⇒ Object



547
548
549
550
551
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 547

def item_class(classes, **kwargs)
  condition = kwargs[:when]
  rule = { "class" => classes.to_s, "when" => HashUtils.stringify_deep(condition) }
  @item_classes << rule
end

#kanban(&block) ⇒ Object



514
515
516
517
518
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 514

def kanban(&block)
  builder = KanbanBuilder.new
  builder.instance_eval(&block)
  @kanban_hash = builder.to_hash
end

#layout(value) ⇒ Object



498
499
500
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 498

def layout(value)
  @layout_value = value.to_s
end

#limit(value) ⇒ Object



443
444
445
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 443

def limit(value)
  @limit_value = value
end

#pagination_ends(value = true) ⇒ Object



537
538
539
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 537

def pagination_ends(value = true)
  @pagination_ends_value = value
end

#per_page(value) ⇒ Object



415
416
417
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 415

def per_page(value)
  @per_page_value = value
end

#per_page_options(*values) ⇒ Object



529
530
531
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 529

def per_page_options(*values)
  @per_page_options_value = values.flatten
end

#query_mode(value) ⇒ Object



423
424
425
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 423

def query_mode(value)
  @query_mode_value = value.to_s
end

#render_with(partial) ⇒ Object



398
399
400
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 398

def render_with(partial)
  @render_with_value = partial.to_s
end

#reorderable(value = true) ⇒ Object



394
395
396
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 394

def reorderable(value = true)
  @reorderable_value = value
end

#reparentable(value = true) ⇒ Object



494
495
496
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 494

def reparentable(value = true)
  @reparentable_value = value
end

#row_click(value, target: nil) ⇒ Object



451
452
453
454
455
456
457
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 451

def row_click(value, target: nil)
  if target
    @row_click_value = { "mode" => value.to_s, "target" => target.to_s }
  else
    @row_click_value = value.to_s
  end
end

#show_record_count(value = true) ⇒ Object



533
534
535
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 533

def show_record_count(value = true)
  @show_record_count_value = value
end

#sort_field(field, label: nil) ⇒ Object



520
521
522
523
524
525
526
527
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 520

def sort_field(field, label: nil)
  entry = { "field" => field.to_s }
  if label
    entry["label"] = label
    entry["_label_source_loc"] = capture_source_loc
  end
  @sort_fields << entry
end

#summary(&block) ⇒ Object



541
542
543
544
545
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 541

def summary(&block)
  builder = SummaryBuilder.new
  builder.instance_eval(&block)
  @summary_hash = builder.to_hash
end

#tile(&block) ⇒ Object



502
503
504
505
506
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 502

def tile(&block)
  builder = TileBuilder.new
  builder.instance_eval(&block)
  @tile_hash = builder.to_hash
end

#to_hashObject



553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 553

def to_hash
  hash = {}
  hash["render_with"] = @render_with_value if @render_with_value
  hash["layout"] = @layout_value if @layout_value
  hash["query_mode"] = @query_mode_value if @query_mode_value
  hash["group_by"] = @group_by_value if @group_by_value
  hash["having"] = @having_value if @having_value
  hash["limit"] = @limit_value if @limit_value
  hash["reorderable"] = @reorderable_value unless @reorderable_value.nil?
  hash["description"] = @description_value if @description_value
  hash["_description_source_loc"] = @description_source_loc if @description_source_loc
  hash["default_view"] = @default_view if @default_view
  hash["views_available"] = @views_available if @views_available
  hash["default_sort"] = @default_sort if @default_sort
  hash["per_page"] = @per_page_value if @per_page_value
  hash["per_page_options"] = @per_page_options_value if @per_page_options_value
  hash["show_record_count"] = @show_record_count_value unless @show_record_count_value.nil?
  hash["pagination_ends"] = @pagination_ends_value unless @pagination_ends_value.nil?
  hash["table_columns"] = @columns unless @columns.empty?
  hash["tile"] = @tile_hash if @tile_hash
  hash["card"] = @card_hash if @card_hash
  hash["kanban"] = @kanban_hash if @kanban_hash
  hash["sort_fields"] = @sort_fields unless @sort_fields.empty?
  hash["summary"] = @summary_hash if @summary_hash
  hash["row_click"] = @row_click_value if @row_click_value
  hash["empty_message"] = @empty_message_value if @empty_message_value
  hash["actions_position"] = @actions_position_value if @actions_position_value
  hash["includes"] = @includes_list if @includes_list
  hash["eager_load"] = @eager_load_list if @eager_load_list
  hash["tree_view"] = @tree_view_value unless @tree_view_value.nil?
  hash["default_expanded"] = @default_expanded_value unless @default_expanded_value.nil?
  hash["reparentable"] = @reparentable_value unless @reparentable_value.nil?
  hash["item_classes"] = @item_classes unless @item_classes.empty?
  hash["default_scope"] = @default_scope_value if @default_scope_value
  hash
end

#tree_view(value = true) ⇒ Object



486
487
488
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 486

def tree_view(value = true)
  @tree_view_value = value
end

#views_available(*values) ⇒ Object



419
420
421
# File 'lib/lcp_ruby/dsl/presenter_builder.rb', line 419

def views_available(*values)
  @views_available = values.flatten.map(&:to_s)
end