]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/users_controller.rb
Add function to set changeset list bbox param
[rails.git] / app / controllers / users_controller.rb
index 7f6619eab664f4b08dd9836fbee1b165b73dc125..58ed0c48a06c43dae7cbd979dd39030ac92dfdd1 100644 (file)
@@ -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
@@ -220,9 +239,9 @@ class UsersController < ApplicationController
   ##
   # return permitted user parameters
   def user_params
-    params.require(:user).permit(:email, :display_name,
-                                 :auth_provider, :auth_uid,
-                                 :pass_crypt, :pass_crypt_confirmation)
+    params.expect(:user => [:email, :display_name,
+                            :auth_provider, :auth_uid,
+                            :pass_crypt, :pass_crypt_confirmation])
   end
 
   ##