Class: Avo::BaseCard
- Inherits:
-
Object
- Object
- Avo::BaseCard
- Defined in:
- lib/avo/base_card.rb
Direct Known Subclasses
Dashboards::ChartkickCard, Dashboards::DashboardCard, Dashboards::MetricCard, Dashboards::PartialCard
Instance Attribute Summary collapse
-
#arguments ⇒ Object
Returns the value of attribute arguments.
-
#dashboard ⇒ Object
Returns the value of attribute dashboard.
-
#index ⇒ Object
Returns the value of attribute index.
-
#options ⇒ Object
Returns the value of attribute options.
-
#params ⇒ Object
Returns the value of attribute params.
Class Method Summary collapse
Instance Method Summary collapse
- #card_classes ⇒ Object
- #compute_result ⇒ Object
- #description ⇒ Object
- #frame_url(enforced_range: nil, params: {}) ⇒ Object
- #hydrate(dashboard: nil, params: nil) ⇒ Object
-
#initialize(dashboard:, options: {}, arguments: {}, index: 0, cols: nil, rows: nil, label: nil, description: nil, refresh_every: nil) ⇒ BaseCard
constructor
A new instance of BaseCard.
- #is_card? ⇒ Boolean
- #is_divider? ⇒ Boolean
- #label ⇒ Object
- #range ⇒ Object
- #refresh_every ⇒ Object
- #result(data) ⇒ Object
- #turbo_frame ⇒ Object
- #type ⇒ Object
Constructor Details
#initialize(dashboard:, options: {}, arguments: {}, index: 0, cols: nil, rows: nil, label: nil, description: nil, refresh_every: nil) ⇒ BaseCard
Returns a new instance of BaseCard.
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/avo/base_card.rb', line 30 def initialize(dashboard:, options: {}, arguments: {}, index: 0, cols: nil, rows: nil, label: nil, description: nil, refresh_every: nil) @dashboard = dashboard @options = @arguments = arguments @index = index @cols = cols @rows = rows @label = label @refresh_every = refresh_every @description = description end |
Instance Attribute Details
#arguments ⇒ Object
Returns the value of attribute arguments.
18 19 20 |
# File 'lib/avo/base_card.rb', line 18 def arguments @arguments end |
#dashboard ⇒ Object
Returns the value of attribute dashboard.
16 17 18 |
# File 'lib/avo/base_card.rb', line 16 def dashboard @dashboard end |
#index ⇒ Object
Returns the value of attribute index.
19 20 21 |
# File 'lib/avo/base_card.rb', line 19 def index @index end |
#options ⇒ Object
Returns the value of attribute options.
17 18 19 |
# File 'lib/avo/base_card.rb', line 17 def @options end |
#params ⇒ Object
Returns the value of attribute params.
20 21 22 |
# File 'lib/avo/base_card.rb', line 20 def params @params end |
Class Method Details
.query(&block) ⇒ Object
25 26 27 |
# File 'lib/avo/base_card.rb', line 25 def query(&block) self.query_block = block end |
Instance Method Details
#card_classes ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/avo/base_card.rb', line 67 def card_classes result = "" # Writing down the classes so TailwindCSS knows not to purge them classes_for_cols = { 1 => " sm:col-span-1", 2 => " sm:col-span-2", 3 => " sm:col-span-3", 4 => " sm:col-span-4", 5 => " sm:col-span-5", 6 => " sm:col-span-6" } classes_for_rows = { 1 => " h-36", 2 => " h-72", 3 => " h-[27rem]", 4 => " h-[36rem]", 5 => " h-[45rem]", 6 => " h-[54rem]" } # puts ["cols->", cols, classes_for_cols, classes_for_rows, classes_for_cols[cols.to_i]].inspect result += classes_for_cols[cols.to_i] if classes_for_cols[cols.to_i].present? result += classes_for_rows[rows.to_i] if classes_for_rows[rows.to_i].present? result end |
#compute_result ⇒ Object
102 103 104 105 106 107 |
# File 'lib/avo/base_card.rb', line 102 def compute_result Avo::Hosts::DashboardCard.new(card: self, dashboard: dashboard, params: params, context: context, range: range, options: ) .compute_result self end |
#description ⇒ Object
49 50 51 |
# File 'lib/avo/base_card.rb', line 49 def description @description || self.class.description end |
#frame_url(enforced_range: nil, params: {}) ⇒ Object
61 62 63 64 65 |
# File 'lib/avo/base_card.rb', line 61 def frame_url(enforced_range: nil, params: {}) enforced_range ||= initial_range || ranges.first Avo::App.view_context.avo.dashboard_card_path(dashboard.id, id, turbo_frame: turbo_frame, index: index, range: enforced_range, **params.permit!) end |
#hydrate(dashboard: nil, params: nil) ⇒ Object
109 110 111 112 113 114 |
# File 'lib/avo/base_card.rb', line 109 def hydrate(dashboard: nil, params: nil) @dashboard = dashboard if dashboard.present? @params = params if params.present? self end |
#is_card? ⇒ Boolean
130 131 132 |
# File 'lib/avo/base_card.rb', line 130 def is_card? true end |
#is_divider? ⇒ Boolean
134 135 136 |
# File 'lib/avo/base_card.rb', line 134 def is_divider? false end |
#label ⇒ Object
42 43 44 45 46 47 |
# File 'lib/avo/base_card.rb', line 42 def label return @label.to_s if @label.present? return self.class.label.to_s if self.class.label.present? self.class.id.to_s.humanize end |
#range ⇒ Object
116 117 118 119 120 121 122 |
# File 'lib/avo/base_card.rb', line 116 def range return params[:range] if params.dig(:range).present? return initial_range if initial_range.present? ranges.first end |
#refresh_every ⇒ Object
53 54 55 |
# File 'lib/avo/base_card.rb', line 53 def refresh_every @refresh_every || self.class.refresh_every end |
#result(data) ⇒ Object
124 125 126 127 128 |
# File 'lib/avo/base_card.rb', line 124 def result(data) self.result_data = data self end |
#turbo_frame ⇒ Object
57 58 59 |
# File 'lib/avo/base_card.rb', line 57 def turbo_frame "#{dashboard.id}_#{id}" end |
#type ⇒ Object
96 97 98 99 100 |
# File 'lib/avo/base_card.rb', line 96 def type return :metric if self.class.superclass == ::Avo::Dashboards::MetricCard return :chartkick if self.class.superclass == ::Avo::Dashboards::ChartkickCard return :partial if self.class.superclass == ::Avo::Dashboards::PartialCard end |