]> git.openstreetmap.org Git - rails.git/blob - app/controllers/users/heatmaps_controller.rb
Add frozen_string_literal comments to ruby files
[rails.git] / app / controllers / users / heatmaps_controller.rb
1 # frozen_string_literal: true
2
3 module Users
4   class HeatmapsController < ApplicationController
5     layout false
6
7     before_action :authorize_web
8     before_action :set_locale
9     before_action :check_database_readable
10
11     authorize_resource :user
12
13     def show
14       @user = User.find_by(:display_name => params[:user_display_name])
15
16       if @user && (@user.visible? || current_user&.administrator?)
17         @heatmap_data = Rails.cache.fetch("heatmap_data_of_user_#{@user.id}", :expires_at => Time.zone.now.end_of_day) do
18           from = 1.year.ago.beginning_of_day
19           to = Time.zone.now.end_of_day
20
21           mapped = Changeset
22                    .where(:user_id => @user.id)
23                    .where(:created_at => from..to)
24                    .where(:num_changes => 1..)
25                    .group("date_trunc('day', created_at)")
26                    .select("date_trunc('day', created_at) AS date, SUM(num_changes) AS total_changes, MAX(id) AS max_id")
27                    .order(:date)
28                    .map do |changeset|
29                      {
30                        :date => changeset.date.to_date,
31                        :total_changes => changeset.total_changes.to_i,
32                        :max_id => changeset.max_id
33                      }
34                    end
35
36           {
37             :count => mapped.sum { |entry| entry[:total_changes] },
38             :data => mapped.index_by { |entry| entry[:date] },
39             :from => from,
40             :to => to
41           }
42         end
43       end
44     end
45   end
46 end