You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.0 KiB
29 lines
1.0 KiB
# app/controllers/dashboards_controller.rb
|
|
class DashboardsController < ApplicationController
|
|
def show
|
|
@entries = current_user.entries.order(date: :desc)
|
|
|
|
valid_entries = @entries.select { |e| e.date.present? }
|
|
|
|
@report = valid_entries.group_by { |e| e.date.beginning_of_month }
|
|
.transform_values do |entries|
|
|
entries.group_by { |e| [e.praktikums_typ, e.entry_art] }
|
|
.transform_values do |subset|
|
|
minutes = subset.sum(&:total_minutes)
|
|
{ hours: minutes / 60, minutes: minutes % 60 }
|
|
end
|
|
end
|
|
|
|
@monthly_minutes_chart_data = @report.transform_keys { |date| date.strftime("%b") }
|
|
.transform_values do |groups|
|
|
groups.values.sum { |data| data[:hours] * 60 + data[:minutes] }
|
|
end
|
|
|
|
@monthly_targets = Hash.new(1500) # z.B. 25h im Monat als Ziel → 1500min
|
|
|
|
@total_minutes = @entries.sum(&:total_minutes)
|
|
@last_entry = @entries.first
|
|
@completed_percent = ((@total_minutes.to_f / 10000) * 100).round(1)
|
|
@remaining_total = [10000 - @total_minutes, 0].max
|
|
end
|
|
end
|