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
-
#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: {}, 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: {}, index: 0, cols: nil, rows: nil, label: nil, description: nil, refresh_every: nil) ⇒ BaseCard
Returns a new instance of BaseCard.
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/avo/base_card.rb', line 29 def initialize(dashboard:, options: {}, index: 0, cols: nil, rows: nil, label: nil, description: nil, refresh_every: nil) @dashboard = dashboard @options = @index = index @cols = cols @rows = rows @label = label @refresh_every = refresh_every @description = description end |
Instance Attribute Details
#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.
18 19 20 |
# File 'lib/avo/base_card.rb', line 18 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.
19 20 21 |
# File 'lib/avo/base_card.rb', line 19 def params @params end |
Class Method Details
.query(&block) ⇒ Object
24 25 26 |
# File 'lib/avo/base_card.rb', line 24 def query(&block) self.query_block = block end |
Instance Method Details
#card_classes ⇒ Object
65 66 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 |
# File 'lib/avo/base_card.rb', line 65 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
100 101 102 103 104 105 |
# File 'lib/avo/base_card.rb', line 100 def compute_result Avo::Hosts::DashboardCard.new(card: self, dashboard: dashboard, params: params, context: context, range: range, options: ) .compute_result self end |
#description ⇒ Object
47 48 49 |
# File 'lib/avo/base_card.rb', line 47 def description @description || self.class.description end |
#frame_url(enforced_range: nil, params: {}) ⇒ Object
59 60 61 62 63 |
# File 'lib/avo/base_card.rb', line 59 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
107 108 109 110 111 112 |
# File 'lib/avo/base_card.rb', line 107 def hydrate(dashboard: nil, params: nil) @dashboard = dashboard if dashboard.present? @params = params if params.present? self end |
#is_card? ⇒ Boolean
128 129 130 |
# File 'lib/avo/base_card.rb', line 128 def is_card? true end |
#is_divider? ⇒ Boolean
132 133 134 |
# File 'lib/avo/base_card.rb', line 132 def is_divider? false end |
#label ⇒ Object
40 41 42 43 44 45 |
# File 'lib/avo/base_card.rb', line 40 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
114 115 116 117 118 119 120 |
# File 'lib/avo/base_card.rb', line 114 def range return params[:range] if params.dig(:range).present? return initial_range if initial_range.present? ranges.first end |
#refresh_every ⇒ Object
51 52 53 |
# File 'lib/avo/base_card.rb', line 51 def refresh_every @refresh_every || self.class.refresh_every end |
#result(data) ⇒ Object
122 123 124 125 126 |
# File 'lib/avo/base_card.rb', line 122 def result(data) self.result_data = data self end |
#turbo_frame ⇒ Object
55 56 57 |
# File 'lib/avo/base_card.rb', line 55 def turbo_frame "#{dashboard.id}_#{id}" end |
#type ⇒ Object
94 95 96 97 98 |
# File 'lib/avo/base_card.rb', line 94 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 |