class ActiveAdminAddons::TagBuilder

Public Instance Methods

append_tag() click to toggle source
# 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() click to toggle source
# File lib/activeadmin_addons/addons/tag_builder.rb, line 38
def display_data
  if @enum_attr == :enumerize
    data.text
  else
    EnumUtils.translate_enum_option(model.class, attribute.to_s, data)
  end
end
enumerize_attr?() click to toggle source
# File lib/activeadmin_addons/addons/tag_builder.rb, line 82
def enumerize_attr?
  data.is_a?("Enumerize::Value".constantize)
rescue NameError
  false
end
interactive_params(klass) click to toggle source
# File lib/activeadmin_addons/addons/tag_builder.rb, line 46
def interactive_params(klass)
  {
    'class' => klass,
    'data-model' => class_name,
    'data-object_id' => model.id,
    'data-field' => attribute,
    'data-url' => resource_url,
    'data-value' => data
  }
end
interactive_tag_params() click to toggle source
# File lib/activeadmin_addons/addons/tag_builder.rb, line 57
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() click to toggle source
# File lib/activeadmin_addons/addons/tag_builder.rb, line 65
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() click to toggle source
# File lib/activeadmin_addons/addons/tag_builder.rb, line 73
def possible_values
  klass = model.class
  if @enum_attr == :enumerize
    klass.enumerized_attributes[attribute.to_s].values.map { |value| [value.capitalize, value] }
  else
    EnumUtils.options_for_select(klass, attribute.to_s)
  end
end
rails_enum_attr?() click to toggle source
# File lib/activeadmin_addons/addons/tag_builder.rb, line 88
def rails_enum_attr?
  defined? Rails && Rails::VERSION::MAJOR == 4 && Rails::VERSION::MINOR >= 1 &&
    model.defined_enums[attribute.to_s]
end
render() click to toggle source
# 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() click to toggle source
# 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 |label, value|
          context.option(value: value, selected: value == data) do
            context.text_node label
          end
        end
      end
    end
  end
end