summaryrefslogtreecommitdiff
path: root/app/controllers/charts_controller.rb
blob: d97b4fb7a79ebeffa77d2653b08279f3674c840b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class ChartsController < ApplicationController
  def index
    exercise = Exercise.find_by(id: params[:exercise])
    respond_to do |format|
      format.js { @training_history = user.history_for(exercise) }
      format.json { render json: rolled_up_sets(exercise || Exercise.primary).chart_json }
    end

  end

  private

  def rolled_up_sets(exercise, since = (params[:since] || 1.month).to_i.seconds.ago)
    user.exercise_sets
      .joins(:exercise)
      .where(exercise: exercise)
      .where('workouts.occurred_at > ?', since.beginning_of_day)
      .where.not(target_weight: nil)
      .group('exercises.name')
      .joins(:workout)
      .group('workouts.occurred_at')
      .maximum(:target_weight)
  end

  def user
    User.find_by(username: params[:username]) || current_user
  end
end