X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/51a2d85053b67b2bc842fa45ac8eb998f8585add..9bd29748be8e6770e276e93e54bb99c69d464498:/app/controllers/users_controller.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 7f6619eab..2ea2ea36f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -21,9 +21,28 @@ class UsersController < ApplicationController def show @user = User.find_by(:display_name => params[:display_name]) - if @user && - (@user.visible? || current_user&.administrator?) + if @user && (@user.visible? || current_user&.administrator?) @title = @user.display_name + + @heatmap_data = Rails.cache.fetch("heatmap_data_with_ids_user_#{@user.id}", :expires_in => 1.day) do + one_year_ago = 1.year.ago.beginning_of_day + today = Time.zone.now.end_of_day + + Changeset + .where(:user_id => @user.id) + .where(:created_at => one_year_ago..today) + .where(:num_changes => 1..) + .group("date_trunc('day', created_at)") + .select("date_trunc('day', created_at) AS date, SUM(num_changes) AS total_changes, MAX(id) AS max_id") + .order("date") + .map do |changeset| + { + :date => changeset.date.to_date.to_s, + :total_changes => changeset.total_changes.to_i, + :max_id => changeset.max_id + } + end + end else render_unknown_user params[:display_name] end