X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/c446ca287b7dfa79cf1722ffe950f9a38e4f74d3..56e9580de965ed3f2772a70c37bc80d4ab0a8779:/app/controllers/users_controller.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 7f6619eab..c6e2298ab 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -21,9 +21,27 @@ 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_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") + .order("date") + .map do |changeset| + { + :date => changeset.date.to_date.to_s, + :total_changes => changeset.total_changes.to_i + } + end + end else render_unknown_user params[:display_name] end