Module: EasyAdmin::DashboardsHelper
- Included in:
- BaseComponent, Fields::BaseComponent
- Defined in:
- app/helpers/easy_admin/dashboards_helper.rb
Instance Method Summary collapse
- #delta_badge_classes ⇒ Object
-
#metric_value_classes ⇒ Object
Metric card helper methods.
- #render_card(card, dashboard_class, request_params = nil) ⇒ Object
- #sparkline_color ⇒ Object
- #sparkline_points ⇒ Object
- #trend_direction ⇒ Object
- #trend_icon ⇒ Object
- #trend_indicator_classes ⇒ Object
Instance Method Details
#delta_badge_classes ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'app/helpers/easy_admin/dashboards_helper.rb', line 51 def delta_badge_classes base_classes = "inline-flex items-center px-2 py-1 rounded-full text-xs font-medium" case trend_direction when :positive "#{base_classes} bg-green-100 text-green-800" when :negative "#{base_classes} bg-red-100 text-red-800" else "#{base_classes} bg-gray-100 text-gray-600" end end |
#metric_value_classes ⇒ Object
Metric card helper methods
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/helpers/easy_admin/dashboards_helper.rb', line 23 def metric_value_classes base_classes = "text-3xl font-bold mb-1" if @card_data[:delta] case trend_direction when :positive "#{base_classes} text-green-600" when :negative "#{base_classes} text-red-600" else "#{base_classes} text-gray-900" end else "#{base_classes} text-gray-900" end end |
#render_card(card, dashboard_class, request_params = nil) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'app/helpers/easy_admin/dashboards_helper.rb', line 3 def render_card(card, dashboard_class, request_params = nil) component_class = card_component_class(card[:type]) # Use provided params or try to access from context permitted_params = if request_params request_params.permit(:date_from, :date_to, :segment, :search, :period, :refresh) elsif respond_to?(:params) params.permit(:date_from, :date_to, :segment, :search, :period, :refresh) else {} end component = component_class.new( card: card, dashboard_class: dashboard_class, request_params: permitted_params ) end |
#sparkline_color ⇒ Object
79 80 81 82 83 84 85 86 87 88 |
# File 'app/helpers/easy_admin/dashboards_helper.rb', line 79 def sparkline_color case trend_direction when :positive "#059669" # green-600 when :negative "#dc2626" # red-600 else "#4f46e5" # indigo-600 end end |
#sparkline_points ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'app/helpers/easy_admin/dashboards_helper.rb', line 90 def sparkline_points return "" unless @card_data[:sparkline_data]&.any? data = @card_data[:sparkline_data] max_val = data.map { |d| d[:value] }.max min_val = data.map { |d| d[:value] }.min range = max_val - min_val range = 1 if range == 0 data.map.with_index do |point, i| x = i * (100.0 / (data.length - 1)) y = 25 - ((point[:value] - min_val) / range.to_f * 20) "#{x},#{y}" end.join(' ') end |
#trend_direction ⇒ Object
63 64 65 66 |
# File 'app/helpers/easy_admin/dashboards_helper.rb', line 63 def trend_direction return :neutral unless @card_data[:delta] @card_data[:delta].to_f > 0 ? :positive : (@card_data[:delta].to_f < 0 ? :negative : :neutral) end |
#trend_icon ⇒ Object
68 69 70 71 72 73 74 75 76 77 |
# File 'app/helpers/easy_admin/dashboards_helper.rb', line 68 def trend_icon case trend_direction when :positive "↗" when :negative "↘" else "→" end end |
#trend_indicator_classes ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/helpers/easy_admin/dashboards_helper.rb', line 39 def trend_indicator_classes base_classes = "flex items-center justify-center w-10 h-10 rounded-full" case trend_direction when :positive "#{base_classes} bg-green-100 text-green-600" when :negative "#{base_classes} bg-red-100 text-red-600" else "#{base_classes} bg-gray-100 text-gray-600" end end |