4467: add "select all" and "unselect all" buttons to project contents.
[arvados.git] / apps / workbench / app / models / arvados_resource_list.rb
index 6890b874513be7178cb19d848bc2820834dee922..9f66d392270b88c50df561e2f6f91c6f2852b013 100644 (file)
@@ -16,6 +16,11 @@ class ArvadosResourceList
     self
   end
 
+  def distinct(bool=true)
+    @distinct = bool
+    self
+  end
+
   def limit(max_results)
     if not max_results.nil? and not max_results.is_a? Integer
       raise ArgumentError("argument to limit() must be an Integer or nil")
@@ -148,14 +153,17 @@ class ArvadosResourceList
   end
 
   def items_available
+    results
     @items_available
   end
 
   def result_limit
+    results
     @result_limit
   end
 
   def result_offset
+    results
     @result_offset
   end
 
@@ -175,6 +183,7 @@ class ArvadosResourceList
     api_params[:select] = @select if @select
     api_params[:order] = @orderby_spec if @orderby_spec
     api_params[:filters] = @filters if @filters
+    api_params[:distinct] = @distinct if @distinct
 
 
     item_count = 0
@@ -191,12 +200,12 @@ class ArvadosResourceList
                                    reader_tokens: @reader_tokens)
       items = arvados_api_client.unpack_api_response res
 
-      break if items.nil? or not items.any?
-
       @items_available = items.items_available if items.respond_to?(:items_available)
       @result_limit = items.limit if (@fetch_multiple_pages == false) and items.respond_to?(:limit)
       @result_offset = items.offset if (@fetch_multiple_pages == false) and items.respond_to?(:offset)
 
+      break if items.nil? or not items.any?
+
       item_count += items.size
       if items.respond_to?(:offset)
         offset = items.offset + items.size