projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
3149: Do not preload results in search dialog. Let infinite scroll do it.
[arvados.git]
/
apps
/
workbench
/
app
/
controllers
/
collections_controller.rb
diff --git
a/apps/workbench/app/controllers/collections_controller.rb
b/apps/workbench/app/controllers/collections_controller.rb
index 85478190907e7d22851c641586e983dd8a0519b7..010cd220e7d481e5342cc910ec9a67de7df5630c 100644
(file)
--- a/
apps/workbench/app/controllers/collections_controller.rb
+++ b/
apps/workbench/app/controllers/collections_controller.rb
@@
-4,7
+4,8
@@
class CollectionsController < ApplicationController
skip_before_filter(:find_object_by_uuid,
only: [:provenance, :show_file, :show_file_links])
# We depend on show_file to display the user agreement:
skip_before_filter(:find_object_by_uuid,
only: [:provenance, :show_file, :show_file_links])
# We depend on show_file to display the user agreement:
- skip_before_filter :check_user_agreements, only: [:show_file]
+ skip_before_filter :check_user_agreements, only: :show_file
+ skip_before_filter :check_user_profile, only: :show_file
RELATION_LIMIT = 5
RELATION_LIMIT = 5
@@
-43,27
+44,30
@@
class CollectionsController < ApplicationController
end
def choose
end
def choose
- # Always offer a Projects dropdown when choosing collections.
- params[:by_project] = true
+ # Find collections using default find_objects logic, then search for name
+ # links, and preload any other links connected to the collections that are
+ # found.
+ # Name links will be obsolete when issue #3036 is merged,
+ # at which point this entire custom #choose function can probably be
+ # eliminated.
params[:limit] ||= 40
params[:limit] ||= 40
- filter = [['link_class','=','name'],
- ['head_uuid','is_a','arvados#collection']]
-
- if params[:project_uuid] and !params[:project_uuid].empty?
- filter << ['tail_uuid', '=', params[:project_uuid]]
- end
+ find_objects_for_index
+ @collections = @objects
- @objects = Link.filter(filter)
+ @filters += [['link_class','=','name'],
+ ['head_uuid','is_a','arvados#collection']]
+ @objects = Link
find_objects_for_index
find_objects_for_index
- @next_page_href = (next_page_offset and
- url_for(offset: next_page_offset, partial: true))
+
@name_links = @objects
@objects = Collection.
filter([['uuid','in',@name_links.collect(&:head_uuid)]])
@name_links = @objects
@objects = Collection.
filter([['uuid','in',@name_links.collect(&:head_uuid)]])
+
+ preload_links_for_objects (@collections.to_a + @objects.to_a)
super
end
super
end
@@
-168,12
+172,20
@@
class CollectionsController < ApplicationController
Job.limit(RELATION_LIMIT).where(conds)
.results.sort_by { |j| j.finished_at || j.created_at }
end
Job.limit(RELATION_LIMIT).where(conds)
.results.sort_by { |j| j.finished_at || j.created_at }
end
- @output_of = jobs_with.call(output: @object.
uuid
)
- @log_of = jobs_with.call(log: @object.
uuid
)
+ @output_of = jobs_with.call(output: @object.
portable_data_hash
)
+ @log_of = jobs_with.call(log: @object.
portable_data_hash
)
@project_links = Link.limit(RELATION_LIMIT).order("modified_at DESC")
.where(head_uuid: @object.uuid, link_class: 'name').results
project_hash = Group.where(uuid: @project_links.map(&:tail_uuid)).to_hash
@projects = project_hash.values
@project_links = Link.limit(RELATION_LIMIT).order("modified_at DESC")
.where(head_uuid: @object.uuid, link_class: 'name').results
project_hash = Group.where(uuid: @project_links.map(&:tail_uuid)).to_hash
@projects = project_hash.values
+
+ if @object.uuid.match /[0-9a-f]{32}/
+ @same_pdh = Collection.filter([["portable_data_hash", "=", @object.portable_data_hash]])
+ owners = @same_pdh.map {|s| s.owner_uuid}.to_a
+ preload_objects_for_dataclass Group, owners
+ preload_objects_for_dataclass User, owners
+ end
+
@permissions = Link.limit(RELATION_LIMIT).order("modified_at DESC")
.where(head_uuid: @object.uuid, link_class: 'permission',
name: 'can_read').results
@permissions = Link.limit(RELATION_LIMIT).order("modified_at DESC")
.where(head_uuid: @object.uuid, link_class: 'permission',
name: 'can_read').results