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
pips[uuid] = 0 unless pips[uuid] != nil
pips[uuid] |= n
end
-
+
n = n << 1
end
end
def show
- if @object.components.empty? and @object.pipeline_template_uuid
- template = PipelineTemplate.find(@object.pipeline_template_uuid)
- pipeline = {}
- template.components.each do |component_name, component_props|
- pipeline[component_name] = {}
- component_props.each do |k, v|
- if k == :script_parameters
- pipeline[component_name][:script_parameters] = {}
- v.each do |param_name, param_value|
- if param_value.is_a? Hash
- if param_value[:value]
- pipeline[component_name][:script_parameters][param_name] = param_value[:value]
- elsif param_value[:default]
- pipeline[component_name][:script_parameters][param_name] = param_value[:default]
- elsif param_value[:optional] != nil or param_value[:required] != nil or param_value[:dataclass] != nil
- pipeline[component_name][:script_parameters][param_name] = ""
- else
- pipeline[component_name][:script_parameters][param_name] = param_value
- end
- else
- pipeline[component_name][:script_parameters][param_name] = param_value
- end
- end
- else
- pipeline[component_name][k] = v
- end
- end
- end
- @object.components= pipeline
- @object.save
- end
-
@pipelines = [@object]
if params[:compare]
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", {
- :request => request,
- :all_script_parameters => true,
- :combine_jobs => :script_and_version,
- :script_version_nodes => true,
- :pips => pips }
super
end
@prov_svg = ProvenanceHelper::create_provenance_graph provenance, "provenance_svg", {
:request => request,
- :all_script_parameters => true,
+ :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
-
- def update
- updates = params[@object.class.to_s.underscore.singularize.to_sym]
- if updates["components"]
- require 'deep_merge/rails_compat'
- updates["components"] = updates["components"].deeper_merge(@object.components)
- end
- super
end
def index
- @objects ||= model_class.limit(20).all
+ @limit = 20
super
end