Class: ActiveAdminAddons::ToggleBoolBuilder

Inherits:
CustomBuilder show all
Defined in:
lib/activeadmin_addons/addons/toggle_bool_builder.rb

Constant Summary collapse

SWITCHES_IMAGES_SIZE =
"40x16"

Instance Attribute Summary

Attributes inherited from CustomBuilder

#args, #block, #context, #model

Instance Method Summary collapse

Methods inherited from CustomBuilder

builder_method_name, create_view_methods, #initialize

Constructor Details

This class inherits a constructor from ActiveAdminAddons::CustomBuilder

Instance Method Details

#conditional_eval_hide?Boolean

Returns:

  • (Boolean)


34
35
36
37
38
39
40
41
42
# File 'lib/activeadmin_addons/addons/toggle_bool_builder.rb', line 34

def conditional_eval_hide?
  [:if, :unless].any? do |cond|
    if options[cond]
      raise ArgumentError, "'#{cond}' option should be a proc" unless options[cond].is_a?(Proc)
      result = options[cond].call(model)
      cond == :if ? !result : result
    end
  end
end

#renderObject

Raises:

  • (ArgumentError)


5
6
7
8
9
10
11
12
13
# File 'lib/activeadmin_addons/addons/toggle_bool_builder.rb', line 5

def render
  raise ArgumentError, 'Block should not be used in toggle bool columns' if block
  return if conditional_eval_hide?
  context.div class: 'toggle-bool-switches-container' do
    [true, false].each do |value|
      context.span switch_image_for value
    end
  end
end

#switch_image_for(value) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/activeadmin_addons/addons/toggle_bool_builder.rb', line 15

def switch_image_for(value)
  img_tag_class = 'toggle-bool-switch'
  img_tag_class += ' hidden-switch' if value == !data
  img_tag_class += ' notify-success' if options[:success_message]

  context.image_tag(
    "switches/switch_#{value ? :on : :off}.png",
    size: SWITCHES_IMAGES_SIZE,
    id: "toggle-#{class_name}-#{model.id}-#{attribute}-#{value}",
    class: img_tag_class,
    'data-model': class_name,
    'data-object_id': model.id,
    'data-field': attribute,
    'data-value': value,
    'data-url': context.resource_path(model),
    'data-success_message': options[:success_message]
  )
end