Added row to display totals.
authorMisha Zatsman <misha-arvados@zatsman.com>
Wed, 23 Apr 2014 21:20:57 +0000 (21:20 +0000)
committerMisha Zatsman <misha-arvados@zatsman.com>
Wed, 23 Apr 2014 21:20:57 +0000 (21:20 +0000)
apps/workbench/app/controllers/users_controller.rb
apps/workbench/app/views/users/storage.html.erb

index 53f3d3912f59dcaed0bfd46738def408502cf444..8a3d35aaf0eade15bf9545410447ec1e1b8d273e 100644 (file)
@@ -67,6 +67,7 @@ class UsersController < ApplicationController
     @breadcrumb_page_name = nil
     @users = User.limit(params[:limit] || 1000).all
     @user_storage = {}
+    total_storage = {}
     @log_date = {}
     @users.each do |u|
       @user_storage[u.uuid] ||= {}
@@ -76,12 +77,17 @@ class UsersController < ApplicationController
         order(:created_at => :desc).
         limit(1)
       storage_log.each do |log_entry|
+        # We expect this block to only execute once since we specified limit(1)
         @user_storage[u.uuid] = log_entry['properties']
         @log_date[u.uuid] = log_entry['event_at']
       end
+      total_storage.merge!(@user_storage[u.uuid]) { |k,v1,v2| v1 + v2 }
     end
     @users = @users.sort_by { |u|
       [-@user_storage[u.uuid].values.push(0).inject(:+), u.full_name]}
+    # Prepend a "Total" pseudo-user to the sorted list
+    @users = [OpenStruct.new(uuid: nil)] + @users
+    @user_storage[nil] = total_storage
   end
 
   def show_pane_list
index b82fd856b07f99711a20662e31dd0aef032f20aa..e736e78cb7746f43aa627926b24496b9e2de73c9 100644 (file)
@@ -36,13 +36,13 @@ table#users-storage-table .byte-value {
   <% @users.each do |user| %>
   <tr>
     <td>
+           <% if user.uuid %>
       <small>
-       <% if user.uuid %>
-       <%= link_to_if_arvados_object user, friendly_name: true %>
-       <% else %>
-       <b>Total</b>
-       <% end %>
+             <%= link_to_if_arvados_object user, friendly_name: true %>
       </small>
+           <% else %>
+           <b>Total</b>
+           <% end %>
     </td>
     <% [:read_collections_total_bytes, :read_collections_weighted_bytes, :persisted_collections_total_bytes, :persisted_collections_weighted_bytes].each do |key| %>
     <td class="byte-value">