X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/991ff5eadf234141ddaa274c17c0262944e5d6ae..35336cd73e444534cb2eda20e3730464cc4e6553:/apps/workbench/app/controllers/pipeline_instances_controller.rb diff --git a/apps/workbench/app/controllers/pipeline_instances_controller.rb b/apps/workbench/app/controllers/pipeline_instances_controller.rb index 7ca4f6a11e..c2a398c9b2 100644 --- a/apps/workbench/app/controllers/pipeline_instances_controller.rb +++ b/apps/workbench/app/controllers/pipeline_instances_controller.rb @@ -45,6 +45,38 @@ class PipelineInstancesController < ApplicationController 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] @@ -56,6 +88,7 @@ class PipelineInstancesController < ApplicationController provenance, pips = graph(@pipelines) @prov_svg = ProvenanceHelper::create_provenance_graph provenance, "provenance_svg", { + :request => request, :all_script_parameters => true, :combine_jobs => :script_and_version, :script_version_nodes => true, @@ -95,6 +128,7 @@ class PipelineInstancesController < ApplicationController highscore = {} # attr => how common "normal" is score = {} # attr => { value => how common } row[:components].each do |pj| + next if pj.nil? pj.each do |k,v| vstr = for_comparison v score[k] ||= {} @@ -113,6 +147,7 @@ class PipelineInstancesController < ApplicationController # Add a hash in component[:is_normal]: { attr => is_the_value_normal? } row[:components].each do |pj| + next if pj.nil? pj[:is_normal] = {} pj.each do |k,v| pj[:is_normal][k] = (normal.has_key?(k) && normal[k] == for_comparison(v)) @@ -125,6 +160,7 @@ class PipelineInstancesController < ApplicationController @pipelines = @objects @prov_svg = ProvenanceHelper::create_provenance_graph provenance, "provenance_svg", { + :request => request, :all_script_parameters => true, :combine_jobs => :script_and_version, :script_version_nodes => true, @@ -139,6 +175,20 @@ class PipelineInstancesController < ApplicationController %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 + super + end + protected def for_comparison v if v.is_a? Hash or v.is_a? Array