X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c16fd46f51a61f5d66e08b786362d91ef5a33f7d..df4897f1390e58825dd8afcc053955c6d3894169:/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 548d4f7dc4..01abbb4ee0 100644 --- a/apps/workbench/app/controllers/collections_controller.rb +++ b/apps/workbench/app/controllers/collections_controller.rb @@ -1,19 +1,37 @@ class CollectionsController < ApplicationController - skip_before_filter :find_object_by_uuid, :only => [:graph] + skip_before_filter :find_object_by_uuid, :only => [:provenance] skip_before_filter :check_user_agreements, :only => [:show_file] - def graph - index + def show_pane_list + %w(Files Attributes Metadata Provenance_graph Used_by JSON API) end - def index - @collections = Collection.limit(100) + if params[:search].andand.length.andand > 0 + tags = Link.where(any: ['contains', params[:search]]) + @collections = (Collection.where(uuid: tags.collect(&:head_uuid)) | + Collection.where(any: ['contains', params[:search]])). + uniq { |c| c.uuid } + else + if params[:limit] + limit = params[:limit].to_i + else + limit = 100 + end + + if params[:offset] + offset = params[:offset].to_i + else + offset = 0 + end + + @collections = Collection.limit(limit).offset(offset) + end @links = Link.limit(1000). where(head_uuid: @collections.collect(&:uuid)) @collection_info = {} @collections.each do |c| @collection_info[c.uuid] = { - tags: [], + tag_links: [], wanted: false, wanted_by_me: false, provenance: [], @@ -25,7 +43,7 @@ class CollectionsController < ApplicationController info = @collection_info[link.head_uuid] case link.link_class when 'tag' - info[:tags] << link.name + info[:tag_links] << link when 'resources' info[:wanted] = true info[:wanted_by_me] ||= link.tail_uuid == current_user.uuid @@ -34,6 +52,7 @@ class CollectionsController < ApplicationController end info[:links] << link end + @request_url = request.url end def show_file @@ -48,6 +67,7 @@ class CollectionsController < ApplicationController self.response_body = FileStreamer.new opts end + def show return super if !@object @provenance = [] @@ -92,6 +112,19 @@ class CollectionsController < ApplicationController @sourcedata[collection.uuid][:collection] = collection end end + + Collection.where(uuid: @object.uuid).each do |u| + puts request + @prov_svg = ProvenanceHelper::create_provenance_graph(u.provenance, "provenance_svg", + {:request => request, + :direction => :bottom_up, + :combine_jobs => :script_only}) rescue nil + @used_by_svg = ProvenanceHelper::create_provenance_graph(u.used_by, "used_by_svg", + {:request => request, + :direction => :top_down, + :combine_jobs => :script_only, + :pdata_only => true}) rescue nil + end end protected