before_filter :find_objects_by_uuid, only: :compare
include PipelineInstancesHelper
+ def copy
+ @object = @object.dup
+ @object.components.each do |cname, component|
+ component.delete :job
+ end
+ @object.state = 'New'
+ super
+ end
+
+ def update
+ @updates ||= params[@object.class.to_s.underscore.singularize.to_sym]
+ if (components = @updates[:components])
+ components.each do |cname, component|
+ if component[:script_parameters]
+ component[:script_parameters].each do |param, value_info|
+ if value_info.is_a? Hash
+ if resource_class_for_uuid(value_info[:value]) == Link
+ # Use the link target, not the link itself, as script
+ # parameter; but keep the link info around as well.
+ link = Link.find value_info[:value]
+ value_info[:value] = link.head_uuid
+ value_info[:link_uuid] = link.uuid
+ value_info[:link_name] = link.name
+ else
+ # Delete stale link_uuid and link_name data.
+ value_info[:link_uuid] = nil
+ value_info[:link_name] = nil
+ end
+ end
+ end
+ end
+ end
+ end
+ super
+ end
+
def graph(pipelines)
- count = {}
+ return nil, nil if params['tab_pane'] != "Graph"
+
+ count = {}
provenance = {}
pips = {}
n = 1
p.components.each do |k, v|
j = v[:job] || next
+ # The graph is interested in whether the component is
+ # indicated as persistent, more than whether the job
+ # satisfying it (which could have been reused, or someone
+ # else's) is.
+ j[:output_is_persistent] = v[:output_is_persistent]
+
uuid = j[:uuid].intern
provenance[uuid] = j
pips[uuid] = 0 unless pips[uuid] != nil
pips[uuid] = 0 unless pips[uuid] != nil
pips[uuid] |= n
end
-
+
n = n << 1
end
end
provenance, pips = graph(@pipelines)
+ if provenance
+ @prov_svg = ProvenanceHelper::create_provenance_graph provenance, "provenance_svg", {
+ :request => request,
+ :all_script_parameters => true,
+ :combine_jobs => :script_and_version,
+ :script_version_nodes => true,
+ :pips => pips }
+ end
- @prov_svg = ProvenanceHelper::create_provenance_graph provenance, "provenance_svg", {
- :all_script_parameters => true,
- :combine_jobs => :script_and_version,
- :script_version_nodes => true,
- :pips => pips }
super
end
@pipelines = @objects
@prov_svg = ProvenanceHelper::create_provenance_graph provenance, "provenance_svg", {
- :all_script_parameters => true,
+ :request => request,
+ :all_script_parameters => true,
:combine_jobs => :script_and_version,
:script_version_nodes => true,
:pips => pips }
+ @object = @objects.first
end
def show_pane_list
- %w(Components Graph Attributes Metadata JSON API)
+ panes = %w(Components Graph Advanced)
+ if @object and @object.state.in? ['New', 'Ready']
+ panes = %w(Inputs) + panes
+ end
+ if not @object.components.values.collect { |x| x[:job] }.compact.any?
+ panes -= ['Graph']
+ end
+ panes
end
- def compare_pane_list
+ def compare_pane_list
%w(Compare Graph)
- end
+ end
+
+ def index
+ @limit = 20
+ super
+ end
protected
def for_comparison v