2044: Workbench resource lists support Enumerable-style select.
[arvados.git] / apps / workbench / app / controllers / projects_controller.rb
index 31cb5eff3e7fdad1a48aa4b1032735e62b431783..118a46755b5a89eb43dd7842978c5ff8b7d73b2e 100644 (file)
@@ -9,9 +9,9 @@ class ProjectsController < ApplicationController
 
   def show_pane_list
     if @user_is_manager
-      %w(Contents Sharing Advanced)
+      %w(Data_collections Jobs_and_pipelines Pipeline_templates Subprojects Other_objects Sharing Advanced)
     else
-      %w(Contents Advanced)
+      %w(Data_collections Jobs_and_pipelines Pipeline_templates Subprojects Other_objects Advanced)
     end
   end
 
@@ -83,6 +83,7 @@ class ProjectsController < ApplicationController
     end
     @objects = @object.contents(limit: 50,
                                 include_linked: true,
+                                filters: params[:filters],
                                 offset: params[:offset] || 0)
     @logs = Log.limit(10).filter([['object_uuid', '=', @object.uuid]])
     @users = User.limit(10000).
@@ -100,23 +101,8 @@ class ProjectsController < ApplicationController
       @user_is_manager = false
     end
 
-    @objects_and_names = []
-    @objects.each do |object|
-      if !(name_links = @objects.links_for(object, 'name')).empty?
-        name_links.each do |name_link|
-          @objects_and_names << [object, name_link]
-        end
-      elsif object.respond_to? :name
-        @objects_and_names << [object, object]
-      else
-        @objects_and_names << [object,
-                               Link.new(owner_uuid: @object.uuid,
-                                        tail_uuid: @object.uuid,
-                                        head_uuid: object.uuid,
-                                        link_class: "name",
-                                        name: "")]
-      end
-    end
+    @objects_and_names = get_objects_and_names @objects
+
     if params[:partial]
       respond_to do |f|
         f.json {
@@ -128,7 +114,7 @@ class ProjectsController < ApplicationController
                                         project: @object
                                       }),
             next_page_href: (next_page_offset and
-                             url_for(offset: next_page_offset, partial: true))
+                             url_for(offset: next_page_offset, filters: params[:filters], partial: true))
           }
         }
       end
@@ -148,6 +134,28 @@ class ProjectsController < ApplicationController
     super
   end
 
+  helper_method :get_objects_and_names
+  def get_objects_and_names(objects)
+    objects_and_names = []
+    objects.each do |object|
+      if !(name_links = objects.links_for(object, 'name')).empty?
+        name_links.each do |name_link|
+          objects_and_names << [object, name_link]
+        end
+      elsif object.respond_to? :name
+        objects_and_names << [object, object]
+      else
+        objects_and_names << [object,
+                               Link.new(owner_uuid: @object.uuid,
+                                        tail_uuid: @object.uuid,
+                                        head_uuid: object.uuid,
+                                        link_class: "name",
+                                        name: "")]
+      end
+    end
+    objects_and_names
+  end
+
   def share_with
     if not params[:uuids].andand.any?
       @errors = ["No user/group UUIDs specified to share with."]