Class: EasyAdmin::Dashboard

Inherits:
Object
  • Object
show all
Defined in:
lib/easy_admin/dashboard.rb

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Dashboard

Instance methods for data fetching



93
94
95
# File 'lib/easy_admin/dashboard.rb', line 93

def initialize(params = {})
  @params = params
end

Class Attribute Details

.cards_configObject

Returns the value of attribute cards_config.



4
5
6
# File 'lib/easy_admin/dashboard.rb', line 4

def cards_config
  @cards_config
end

.dashboard_nameObject

Returns the value of attribute dashboard_name.



4
5
6
# File 'lib/easy_admin/dashboard.rb', line 4

def dashboard_name
  @dashboard_name
end

.grid_columnsObject

Returns the value of attribute grid_columns.



4
5
6
# File 'lib/easy_admin/dashboard.rb', line 4

def grid_columns
  @grid_columns
end

Class Method Details

.card(name, type, **options) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/easy_admin/dashboard.rb', line 37

def card(name, type, **options)
  self.cards_config += [{
    name: name,
    type: type,
    title: options[:title] || name.to_s.humanize,
    cols: options[:cols] || 1,
    rows: options[:rows] || 1,
    refresh_every: options[:refresh_every],
    partial: options[:partial],
    data_method: options[:data_method] || "#{name}_data",
    visible: options.fetch(:visible, true),
    **options
  }]
end

.chart_card(name, **options) ⇒ Object



25
26
27
# File 'lib/easy_admin/dashboard.rb', line 25

def chart_card(name, **options)
  card(name, :chart, **options)
end

.columnsObject

Grid configuration



70
71
72
# File 'lib/easy_admin/dashboard.rb', line 70

def columns
  grid_columns
end

.columns_classObject



74
75
76
# File 'lib/easy_admin/dashboard.rb', line 74

def columns_class
  "cols-#{grid_columns}"
end

.custom_card(name, **options) ⇒ Object



33
34
35
# File 'lib/easy_admin/dashboard.rb', line 33

def custom_card(name, **options)
  card(name, :custom, **options)
end

.dashboard(name, **options, &block) ⇒ Object

DSL methods for dashboard configuration



14
15
16
17
18
19
# File 'lib/easy_admin/dashboard.rb', line 14

def dashboard(name, **options, &block)
  self.dashboard_name = name
  self.grid_columns = options[:columns] || 4
  instance_eval(&block) if block_given?
  EasyAdmin::DashboardRegistry.register(self)
end

.find_card(name) ⇒ Object



65
66
67
# File 'lib/easy_admin/dashboard.rb', line 65

def find_card(name)
  cards_config.find { |card| card[:name].to_s == name.to_s }
end

.inherited(subclass) ⇒ Object



6
7
8
9
10
11
# File 'lib/easy_admin/dashboard.rb', line 6

def inherited(subclass)
  subclass.cards_config = []
  subclass.grid_columns = 4
  super
  # Register will happen after class is fully defined
end

.method_missing(method_name, *args, &block) ⇒ Object

Data methods - override in subclasses



79
80
81
82
83
84
85
# File 'lib/easy_admin/dashboard.rb', line 79

def method_missing(method_name, *args, &block)
  if method_name.to_s.end_with?('_data')
    {}
  else
    super
  end
end

.metric_card(name, **options) ⇒ Object



21
22
23
# File 'lib/easy_admin/dashboard.rb', line 21

def metric_card(name, **options)
  card(name, :metric, **options)
end

.respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/easy_admin/dashboard.rb', line 87

def respond_to_missing?(method_name, include_private = false)
  method_name.to_s.end_with?('_data') || super
end

.route_keyObject



57
58
59
# File 'lib/easy_admin/dashboard.rb', line 57

def route_key
  dashboard_name.to_s.underscore
end

.table_card(name, **options) ⇒ Object



29
30
31
# File 'lib/easy_admin/dashboard.rb', line 29

def table_card(name, **options)
  card(name, :table, **options)
end

.titleObject

Helper methods



53
54
55
# File 'lib/easy_admin/dashboard.rb', line 53

def title
  dashboard_name.to_s.humanize
end

.visible_cardsObject



61
62
63
# File 'lib/easy_admin/dashboard.rb', line 61

def visible_cards
  cards_config.select { |card| card[:visible] }
end

Instance Method Details

#card_data(card_name) ⇒ Object



97
98
99
100
101
102
103
104
# File 'lib/easy_admin/dashboard.rb', line 97

def card_data(card_name)
  method_name = "#{card_name}_data"
  if self.class.respond_to?(method_name)
    self.class.send(method_name, @params)
  else
    {}
  end
end