Sha256: 1dfe9c33a89b4a147acc108502ae1b994f1a78edd92cc4d02447594be186f87a

Contents?: true

Size: 1.2 KB

Versions: 23

Compression:

Stored size: 1.2 KB

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, 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

  module ::ActiveAdmin
    module Views
      class TableFor
        def state_column(*args, &block)
          column(*args) { |model| StateBuilder.render(self, model, *args, &block) }
        end
      end
      class AttributesTable
        def state_row(*args, &block)
          row(*args) { |model| StateBuilder.render(self, model, *args, &block) }
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
activeadmin_addons-0.12.0 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.11.0 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.10.1 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.10.0 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.9.3 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.9.2 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.9.1 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.9.0 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.8.0 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.7.0 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.6.4 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.6.3 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.6.2 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.6.1 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.6.0 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.5.0 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.4.0 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.3.4 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.3.3 lib/activeadmin_addons/addons/state_values.rb
activeadmin_addons-0.3.2 lib/activeadmin_addons/addons/state_values.rb