X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/540dbe405430bc8d58a07cfff141b4b4bc9811c1..a8da71bb7b0c4f319afd50ee6cd5d593f1237d33:/apps/workbench/app/controllers/folders_controller.rb diff --git a/apps/workbench/app/controllers/folders_controller.rb b/apps/workbench/app/controllers/folders_controller.rb index fe7c9d2a42..8ebb1a34b1 100644 --- a/apps/workbench/app/controllers/folders_controller.rb +++ b/apps/workbench/app/controllers/folders_controller.rb @@ -52,23 +52,28 @@ class FoldersController < ApplicationController children_of[parent_of[ob.uuid]] ||= [] children_of[parent_of[ob.uuid]] << ob end - def buildtree children_of, root_uuid=false + buildtree = lambda do |children_of, root_uuid=false| tree = {} children_of[root_uuid].andand.each do |ob| - tree[ob] = buildtree(children_of, ob.uuid) + tree[ob] = buildtree.call(children_of, ob.uuid) end tree end - def sorted_paths tree, depth=0 + sorted_paths = lambda do |tree, depth=0| paths = [] - tree.keys.sort_by { |ob| ob.friendly_link_name }.each do |ob| + tree.keys.sort_by { |ob| + ob.is_a?(String) ? ob : ob.friendly_link_name + }.each do |ob| paths << {object: ob, depth: depth} - paths += sorted_paths tree[ob], depth+1 + paths += sorted_paths.call tree[ob], depth+1 end paths end - @my_folder_tree = sorted_paths buildtree(children_of, 'me') - @shared_folder_tree = sorted_paths buildtree(children_of, false) + @my_folder_tree = + sorted_paths.call buildtree.call(children_of, 'me') + @shared_folder_tree = + sorted_paths.call({'Shared with me' => + buildtree.call(children_of, false)}) end def choose