Sha256: c55876a1115806479b7657c3dcc4af9ed6b4c1a7adbed75f464dbc5e583150f5

Contents?: true

Size: 895 Bytes

Versions: 7

Compression:

Stored size: 895 Bytes

Contents

module ActiveAdminAddons
  class StateBuilder < CustomBuilder
    DEFAULT_CLASS_BINDINGS = {
      accepted: "ok",
      confirmed: "ok",
      ready: "ok",
      rejected: "error",
      canceled: "error"
    }

    def render
      raise "you need to install AASM gem first" unless defined? AASM
      raise "the #{attribute} is not an AASM state" unless state_attribute?
      context.status_tag(model.aasm.human_state, class: status_class_for_model)
    end

    private

    def state_attribute?
      model.class.respond_to?(:aasm) &&
        attribute.present? &&
        model.class.aasm.attribute_name == attribute.to_sym
    end

    def status_class_for_model
      class_bindings[data.to_sym] || data
    end

    def class_bindings
      @class_bindings ||= DEFAULT_CLASS_BINDINGS.merge(options[:states] || {})
    end
  end
end

ActiveAdminAddons::StateBuilder.create_view_methods

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
activeadmin_addons-1.3.0 lib/activeadmin_addons/addons/state_builder.rb
activeadmin_addons-1.2.0 lib/activeadmin_addons/addons/state_builder.rb
activeadmin_addons-1.1.2 lib/activeadmin_addons/addons/state_builder.rb
activeadmin_addons-1.1.1 lib/activeadmin_addons/addons/state_builder.rb
activeadmin_addons-1.1.0 lib/activeadmin_addons/addons/state_builder.rb
activeadmin_addons-1.0.1 lib/activeadmin_addons/addons/state_builder.rb
activeadmin_addons-1.0.0 lib/activeadmin_addons/addons/state_builder.rb