18874: Add 'services/workbench2/' from commit 'f6f88d9ca9cdeeeebfadcfe999789bfb9f69e5c6'
[arvados.git] / apps / workbench / app / views / application / _paging.html.erb
index f5677f77ceb79198c68e892c13daf32dc45dd4c9..abd6ecb229a345123d820af96eef531e703964d4 100644 (file)
@@ -1,3 +1,7 @@
+<%# Copyright (C) The Arvados Authors. All rights reserved.
+
+SPDX-License-Identifier: AGPL-3.0 %>
+
 <% content_for :css do %>
 .index-paging {
 text-align: center;
@@ -5,9 +9,33 @@ padding-left: 1em;
 padding-right: 1em;
 background-color: whitesmoke;
 }
+.paging-number {
+display: inline-block;
+min-width: 1.2em;
+}
 <% end %>
 
-<% if results.result_offset != nil and results.result_limit != nil and results.items_available != nil %>
+<% results.fetch_multiple_pages(false) %>
+
+<% if results.respond_to? :result_offset and
+       results.respond_to? :result_limit and
+       results.respond_to? :items_available and
+       results.result_offset != nil and
+       results.result_limit != nil and
+       results.items_available != nil
+%>
+<div class="index-paging">
+  Displaying <%= results.result_offset+1 %> &ndash;
+  <%= if results.result_offset + results.result_limit > results.items_available
+        results.items_available
+      else
+        results.result_offset + results.result_limit
+      end %>
+ out of <%= results.items_available %>
+</div>
+
+<% if not (results.result_offset == 0 and results.items_available <= results.result_limit) %>
+
 <div class="index-paging">
 
 <% if results.result_offset > 0 %>
@@ -21,7 +49,6 @@ background-color: whitesmoke;
 <% end %>
 
 <% this_offset = results.result_offset %>
-<% this_page = results.result_offset / results.result_limit %>
 
 <% if (results.result_offset + results.result_limit) < results.items_available %>
   <% next_offset = results.result_offset + results.result_limit %>
@@ -33,7 +60,7 @@ background-color: whitesmoke;
 <% if results.result_offset > 0 %>
   <%= link_to raw("<span class='glyphicon glyphicon-fast-backward'></span>"), {:id => object, :offset => 0, :limit => results.result_limit}  %>
 <% else %>
-  <span class='glyphicon glyphicon-fast-backward text-muted'></span>  
+  <span class='glyphicon glyphicon-fast-backward text-muted'></span>
 <% end %>
 
 <% if prev_offset %>
@@ -43,27 +70,42 @@ background-color: whitesmoke;
 <% end %>
 </span>
 
-<% n = this_page - 10 %>
-<% if n >= 0 %>
-  <% last = this_page + 10 %>
-  &hellip;
-<% else %>
-  <% n = 0 %>
-  <% last = 20 %>
+<% first = this_offset - (10 * results.result_limit) %>
+<% last = this_offset + (11 * results.result_limit) %>
+
+<% lastpage_offset = (results.items_available / results.result_limit) * results.result_limit %>
+
+<% if last > results.items_available %>
+  <% first -= (last - lastpage_offset) %>
+  <% last -= (last - results.items_available) %>
 <% end %>
 
-<% i = n * results.result_limit %>
-<% while i < results.items_available and n < last %>
-<% if n != this_page %>
-  <%= link_to "#{n+1}", {:id => @object, :offset => i, :limit => results.result_limit} %>
+<% if first < 0 %>
+  <% d = -first %>
+  <% first += d %>
+  <% last += d %>
+<% end %>
+
+<% last = results.items_available if last > results.items_available %>
+
+<% i = first %>
+<% n = first / results.result_limit %>
+
+<% if first > 0 %>
+&hellip;
+<% end %>
+
+<% while i < last %>
+<% if i != this_offset %>
+  <%= link_to "#{n+1}", {:id => @object, :offset => i, :limit => results.result_limit}, class: 'paging-number' %>
 <% else %>
-  <%= n+1 %>
+  <span class="paging-number" style="font-weight: bold;"><%= n+1 %></span>
 <% end %>
 <% i += results.result_limit %>
 <% n += 1 %>
 <% end %>
 
-<% if i < results.items_available %>
+<% if last < results.items_available %>
 &hellip;
 <% end %>
 
@@ -75,13 +117,16 @@ background-color: whitesmoke;
 <% end %>
 
 <% if (results.items_available - results.result_offset) >= results.result_limit %>
-  <%= link_to raw("<span class='glyphicon glyphicon-fast-forward'></span>"), {:id => @object, :offset => results.items_available - (results.items_available % results.result_limit), 
+  <%= link_to raw("<span class='glyphicon glyphicon-fast-forward'></span>"), {:id => @object, :offset => results.items_available - (results.items_available % results.result_limit),
         :limit => results.result_limit}  %>
 <% else %>
-  <span class='glyphicon glyphicon-fast-forward text-muted'></span>  
+  <span class='glyphicon glyphicon-fast-forward text-muted'></span>
 <% end %>
 
 </span>
 
 </div>
+
+<% end %>
+
 <% end %>