3637: undo some of the changes to absorb Tom's updates to chooser implementation
[arvados.git] / apps / workbench / app / controllers / projects_controller.rb
index 44348616dcd2a4fb4634d66683ccbae7a02b0b42..fce775836e032c80cebe9e6c95f6ed5032b4c9b2 100644 (file)
@@ -77,32 +77,6 @@ class ProjectsController < ApplicationController
     end
   end
 
-  def move_items
-    target_uuid = params['target']
-    uuids_to_add = session[:selected_move_items]
-
-    uuids_to_add.
-      collect { |x| ArvadosBase::resource_class_for_uuid(x) }.
-      uniq.
-      each do |resource_class|
-      resource_class.filter([['uuid','in',uuids_to_add]]).each do |dst|
-        if resource_class == Collection
-          dst = Link.new(owner_uuid: target_uuid,
-                         tail_uuid: target_uuid,
-                         head_uuid: dst.uuid,
-                         link_class: 'name',
-                         name: target_uuid)
-        else
-          dst.owner_uuid = target_uuid
-          dst.tail_uuid = target_uuid if dst.class == Link
-        end
-        dst.save!
-      end
-    end
-    session[:selected_move_items] = nil
-    redirect_to @object
-  end
-
   def destroy
     while (objects = Link.filter([['owner_uuid','=',@object.uuid],
                                   ['tail_uuid','=',@object.uuid]])).any?
@@ -132,12 +106,13 @@ class ProjectsController < ApplicationController
     kind_filters = @filters.select do |attr,op,val|
       op == 'is_a' and val.is_a? Array and val.count > 1
     end
-    if /^created_at/ =~ @order[0] and kind_filters.count == 1
+    if /^created_at\b/ =~ @order[0] and kind_filters.count == 1
       # If filtering on multiple types and sorting by date: Get the
       # first page of each type, sort the entire set, truncate to one
       # page, and use the last item on this page as a filter for
       # retrieving the next page. Ideally the API would do this for
       # us, but it doesn't (yet).
+      nextpage_operator = /\bdesc$/i =~ @order[0] ? '<' : '>'
       @objects = []
       @name_link_for = {}
       kind_filters.each do |attr,op,val|
@@ -153,12 +128,16 @@ class ProjectsController < ApplicationController
           @objects += objects
         end
       end
-      @objects = @objects.to_a.sort_by(&:created_at).reverse[0..@limit-1]
+      @objects = @objects.to_a.sort_by(&:created_at)
+      @objects.reverse! if nextpage_operator == '<'
+      @objects = @objects[0..@limit-1]
       @next_page_filters = @filters.reject do |attr,op,val|
-        attr == 'created_at' and op == '<'
+        attr == 'created_at' and op == nextpage_operator
       end
       if @objects.any?
-        @next_page_filters += [['created_at', '<', @objects.last.created_at]]
+        @next_page_filters += [['created_at',
+                                nextpage_operator,
+                                @objects.last.created_at]]
         @next_page_href = url_for(partial: :contents_rows,
                                   filters: @next_page_filters.to_json)
       else
@@ -172,6 +151,8 @@ class ProjectsController < ApplicationController
                                   offset: @offset)
       @next_page_href = next_page_href(partial: :contents_rows)
     end
+
+    preload_links_for_objects(@objects.to_a)
   end
 
   def show
@@ -232,7 +213,7 @@ class ProjectsController < ApplicationController
         objects_and_names << [object, @name_link_for[object.uuid]]
       elsif object.respond_to? :name
         objects_and_names << [object, object]
-      else
+      elsif not Collection.attribute_info.include?(:name)
         objects_and_names << [object,
                                Link.new(owner_uuid: @object.uuid,
                                         tail_uuid: @object.uuid,