master
1class ChartsController < ApplicationController
2 def index
3 exercise = Exercise.find_by(id: params[:exercise])
4 respond_to do |format|
5 format.js { @training_history = user.history_for(exercise) }
6 format.json { render json: rolled_up_sets(exercise || Exercise.primary).chart_json }
7 end
8
9 end
10
11 private
12
13 def rolled_up_sets(exercise, since = (params[:since] || 1.month).to_i.seconds.ago)
14 user.exercise_sets
15 .joins(:exercise)
16 .where(exercise: exercise)
17 .where('workouts.occurred_at > ?', since.beginning_of_day)
18 .where.not(target_weight: nil)
19 .group('exercises.name')
20 .joins(:workout)
21 .group('workouts.occurred_at')
22 .maximum(:target_weight)
23 end
24
25 def user
26 User.find_by(username: params[:username]) || current_user
27 end
28end