Sha256: 3da985e055cfbf0c53ab3e5560af5dc4b8252c429ce8da3f197741451e927529

Contents?: true

Size: 1.61 KB

Versions: 1

Compression:

Stored size: 1.61 KB

Contents

module ActsAsDashboard
  module ClassMethods
    attr_reader :dashboard_config

    def acts_as_dashboard
      @dashboard_config = ActsAsDashboard::Config.new

      include InstanceMethods

      controller_name = self.to_s.underscore.sub('_controller', '').singularize

      # Create the route for the "show" action. This will be something like:
      #   /dashboard
      ActionController::Routing::Routes.add_named_route(
        'dashboard',
        controller_name,
        :controller => controller_name.pluralize.to_sym,
        :action     => :show
      )

      # Create the route for the "widget_data" action. This will be something like:
      #   /dashboard/widgets/*
      ActionController::Routing::Routes.add_named_route(
        "#{controller_name}_widgets",
        "#{controller_name}/widgets/*path",
        :controller => controller_name.pluralize.to_sym,
        :action     => :widget_data
      )
    end

    def dashboard_number(&block)
      raise ArgumentError, 'A Proc must be given.' unless block_given?

      widget = Widget.new   :type => :number
      widget.instance_eval  &block

      dashboard_config.add_widget widget
    end

    def dashboard_short_messages(&block)
      raise ArgumentError, 'A Proc must be given.' unless block_given?

      widget = ShortMessagesWidget.new
      widget.instance_eval &block

      dashboard_config.add_widget widget
    end

    def dashboard_line_graph(&block)
      raise ArgumentError, 'A Proc must be given.' unless block_given?

      widget = LineGraphWidget.new
      widget.instance_eval &block

      dashboard_config.add_widget widget
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
acts_as_dashboard-0.1.0 lib/acts_as_dashboard/class_methods.rb