dpaluy
dpaluy

Reputation: 3715

RailsAdmin dashboard customization

I want to display some metrics on my RailsAdmin dashboard I use custom sql query to do get the data from the DB.

How can I change the dashboard view to show that data?

I can customize app/views/rails_admin/main/dashboard.html.erb app/views/rails_admin/main/dashboard.html.haml, but where do I define a query result

@result = Metric.data

Thanks

Upvotes: 5

Views: 3883

Answers (2)

Tim Kozak
Tim Kozak

Reputation: 4182

You can add any number of dashboards if you want

Rails admin config

RailsAdmin.config do |config|
config.actions do
    dashboard
    require_relative '../../lib/rails_admin/config/actions/dashboard'

    root :admin_dashboard
    root :teacher_dashboard
    root :director_dashboard
end

Redirect to specific dashboard when accessing default one

/lib/rails_admin/config/actions/dashborad.rb

require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'

module RailsAdmin
  module Config
    module Actions
      class Dashboard < RailsAdmin::Config::Actions::Base
        RailsAdmin::Config::Actions.register(self)
        register_instance_option :root? do
          true
        end
        register_instance_option :breadcrumb_parent do
        end
        register_instance_option :link_icon do
          'icon-hand-up'
        end
        register_instance_option :controller do
          proc do
            if current_user.instance_of? Teacher
              redirect_to '/admin/teacher_dashboard'
            elsif current_user.instance_of? Director
              redirect_to '/admin/campus_director_dashboard'
            elsif current_user.instance_of? Admin
              redirect_to '/admin/admin_dashboard'
            end
          end
        end
      end
    end
  end
end

Exampled of admin dashboard controller

/lib/rails_admin/config/actions/admin_dashborad.rb

require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
module RailsAdmin
  module Config
    module Actions
      class AdminDashboard < RailsAdmin::Config::Actions::Base
        RailsAdmin::Config::Actions.register(self)
        register_instance_option :root? do
          true
        end
        register_instance_option :breadcrumb_parent do
        end
        register_instance_option :link_icon do
          'icon-hand-up'
        end
        register_instance_option :controller do
          proc do
            render action: @action.template_name
          end
        end
      end
    end
  end
end

Upvotes: 3

Emu
Emu

Reputation: 5905

Create a index method in app/admin/dashboard.rb file. Then fetch the results there. Exp:

index do
    # renders app/views/admin/posts/_some_partial.html.erb
    @category = Category.includes(:products).find params[:id]
    render partial: "category_attributes"
  end

The partial here for the view of that index method.

Upvotes: -2

Related Questions