Class: ActiveAdminAddons::TagBuilder
Instance Attribute Summary
#args, #block, #context, #model
Instance Method Summary
collapse
builder_method_name, create_view_methods, #initialize
Instance Method Details
#append_tag ⇒ Object
14
15
16
17
18
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 14
def append_tag
return context.status_tag(display_data, class: data) unless options[:interactive]
select_tag
end
|
#display_data ⇒ Object
38
39
40
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 38
def display_data
@enum_attr == :enumerize ? data.text : data
end
|
#enumerize_attr? ⇒ Boolean
78
79
80
81
82
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 78
def enumerize_attr?
data.is_a?("Enumerize::Value".constantize)
rescue NameError
false
end
|
#interactive_params(klass) ⇒ Object
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 42
def interactive_params(klass)
{
'class' => klass,
'data-model' => class_name,
'data-object_id' => model.id,
'data-field' => attribute,
'data-url' => context.resource_path(model),
'data-value' => data
}
end
|
#interactive_tag_params ⇒ Object
53
54
55
56
57
58
59
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 53
def interactive_tag_params
interactive_tag_class = 'interactive-tag'
interactive_tag_class += " #{class_name}"
interactive_tag_class += " #{class_name}-#{attribute}-#{model.id}-tag"
interactive_tag_class += ' notify-success' if options[:success_message]
interactive_params(interactive_tag_class)
end
|
#interactive_tag_select_params ⇒ Object
61
62
63
64
65
66
67
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 61
def interactive_tag_select_params
interactive_tag_select_klass = 'interactive-tag-select'
interactive_tag_select_klass += " #{class_name}-#{attribute}-#{model.id}-select"
interactive_tag_select_klass += ' select-container-hidden'
interactive_tag_select_klass += ' default-select'
interactive_params(interactive_tag_select_klass)
end
|
#possible_values ⇒ Object
69
70
71
72
73
74
75
76
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 69
def possible_values
klass = model.class
if @enum_attr == :enumerize
klass.enumerized_attributes[attribute.to_s].values
else
klass.defined_enums[attribute.to_s].keys
end
end
|
#rails_enum_attr? ⇒ Boolean
84
85
86
87
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 84
def rails_enum_attr?
defined? Rails && Rails::VERSION::MAJOR == 4 && Rails::VERSION::MINOR >= 1 &&
model.defined_enums[attribute.to_s]
end
|
#render ⇒ Object
3
4
5
6
7
8
9
10
11
12
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 3
def render
@enum_attr = if enumerize_attr?
:enumerize
elsif rails_enum_attr?
:enum
end
raise "you need to pass an enumerize or enum attribute" unless @enum_attr
append_tag
end
|
#select_tag ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/activeadmin_addons/addons/tag_builder.rb', line 20
def select_tag
context.div class: 'tag-select-container' do
context.div(interactive_tag_params) do
context.status_tag(display_data, class: data)
end
context.div(interactive_tag_select_params) do
context.select do
possible_values.each do |val|
context.option(value: val, selected: val == data) do
context.text_node val.capitalize
end
end
end
end
end
end
|