openaustralia/morph

View on GitHub
app/admin/dashboard.rb

Summary

Maintainability
A
0 mins
Test Coverage
F
9%
# typed: false
# frozen_string_literal: true

ActiveAdmin.register_page "Dashboard" do
  menu priority: 1, label: proc { I18n.t("active_admin.dashboard") }

  page_action :toggle_read_only_mode, method: :post do
    SiteSetting.toggle_read_only_mode!
    flash[:notice] = "Read-only mode is now #{SiteSetting.read_only_mode ? 'on' : 'off'}"
    redirect_to admin_dashboard_url
  end

  page_action :update_maximum_concurrent_scrapers, method: :post do
    params_maximum_concurrent_scrapers = T.cast(params[:maximum_concurrent_scrapers], T.any(String, Numeric))

    SiteSetting.maximum_concurrent_scrapers = params_maximum_concurrent_scrapers.to_i
    flash[:notice] = "Updated maximum concurrent scrapers to #{SiteSetting.maximum_concurrent_scrapers}"
    redirect_to admin_dashboard_url
  end

  content title: proc { I18n.t("active_admin.dashboard") } do
    columns do
      column do
        panel "Users" do
          para "#{User.where('created_at > ?', 7.days.ago).count} new users in last 7 days"
          para "#{User.count} users total"
        end
      end

      column do
        panel "Scrapers" do
          para "#{Scraper.where('created_at > ?', 7.days.ago).count} new scrapers in last 7 days"
          para "#{Scraper.count} scrapers total"
        end
      end
    end

    div class: "blank_slate_container", id: "dashboard_default_message" do
      para do
        if SiteSetting.read_only_mode
          button_to "Switch off site-wide read-only mode", admin_dashboard_toggle_read_only_mode_path
        else
          button_to "Go into site-wide read-only mode", admin_dashboard_toggle_read_only_mode_path
        end
      end
      para do
        render "maximum_concurrent_scrapers_form"
      end
    end

    # Here is an example of a simple dashboard with columns and panels.
    #
    # columns do
    #   column do
    #     panel "Recent Posts" do
    #       ul do
    #         Post.recent(5).map do |post|
    #           li link_to(post.title, admin_post_path(post))
    #         end
    #       end
    #     end
    #   end

    #   column do
    #     panel "Info" do
    #       para "Welcome to ActiveAdmin."
    #     end
    #   end
    # end
  end
end