2   class HeatmapsController < ApplicationController
 
   5     before_action :authorize_web
 
   6     before_action :set_locale
 
   7     before_action :check_database_readable
 
   9     authorize_resource :user
 
  12       @user = User.find_by(:display_name => params[:user_display_name])
 
  14       if @user && (@user.visible? || current_user&.administrator?)
 
  15         @heatmap_data = Rails.cache.fetch("heatmap_data_of_user_#{@user.id}", :expires_at => Time.zone.now.end_of_day) do
 
  16           from = 1.year.ago.beginning_of_day
 
  17           to = Time.zone.now.end_of_day
 
  20                    .where(:user_id => @user.id)
 
  21                    .where(:created_at => from..to)
 
  22                    .where(:num_changes => 1..)
 
  23                    .group("date_trunc('day', created_at)")
 
  24                    .select("date_trunc('day', created_at) AS date, SUM(num_changes) AS total_changes, MAX(id) AS max_id")
 
  28                        :date => changeset.date.to_date,
 
  29                        :total_changes => changeset.total_changes.to_i,
 
  30                        :max_id => changeset.max_id
 
  35             :count => mapped.sum { |entry| entry[:total_changes] },
 
  36             :data => mapped.index_by { |entry| entry[:date] },