Files
galaxy/static/scripts/mvc/workflow/workflow-manager.js
T
2018-05-23 15:37:14 -04:00

1 line
7.2 KiB
JavaScript

define("mvc/workflow/workflow-manager",["exports","mvc/workflow/workflow-connector","libs/toastr"],function(t,e,n){"use strict";function o(t,e){this.app=t,this.canvas_container=e,this.id_counter=0,this.nodes={},this.name=null,this.has_changes=!1,this.active_form_has_changes=!1,this.workflowOutputLabels={}}Object.defineProperty(t,"__esModule",{value:!0});var i=function(t){return t&&t.__esModule?t:{default:t}}(e),a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n);$.extend(o.prototype,{canLabelOutputWith:function(t){return!t||!(t in this.workflowOutputLabels)},registerOutputLabel:function(t){t&&(this.workflowOutputLabels[t]=!0)},unregisterOutputLabel:function(t){t&&delete this.workflowOutputLabels[t]},updateOutputLabel:function(t,e){t&&this.unregisterOutputLabel(t),this.canLabelOutputWith(e)||a.warning("Workflow contains duplicate workflow output labels "+e+". This must be fixed before it can be saved."),e&&this.registerOutputLabel(e)},attemptUpdateOutputLabel:function(t,e,n){return!!this.canLabelOutputWith(n)&&(t.labelWorkflowOutput(e,n),t.nodeView.redrawWorkflowOutputs(),!0)},create_node:function(t,e,n){var o=this.app.prebuildNode(t,e,n);return this.add_node(o),this.fit_canvas_to_nodes(),this.app.canvas_manager.draw_overview(),this.activate_node(o),o},add_node:function(t){t.id=this.id_counter,t.element.attr("id","wf-node-step-"+t.id),t.element.attr("node-label",t.label),this.id_counter++,this.nodes[t.id]=t,this.has_changes=!0,t.workflow=this},remove_node:function(t){this.active_node==t&&this.clear_active_node(),delete this.nodes[t.id],this.has_changes=!0},remove_all:function(){var t=this;$.each(this.nodes,function(e,n){n.destroy(),t.remove_node(n)})},rectify_workflow_outputs:function(){var t=!1,e=!1;if($.each(this.nodes,function(n,o){o.workflow_outputs&&o.workflow_outputs.length>0&&(t=!0),$.each(o.post_job_actions,function(t,n){"HideDatasetAction"===n.action_type&&(e=!0)})}),!1!==t||!1!==e){var n=this;$.each(this.nodes,function(e,o){if("tool"===o.type){var i=!1;null===o.post_job_actions&&(o.post_job_actions={},i=!0);var a=[];$.each(o.post_job_actions,function(t,e){"HideDatasetAction"==e.action_type&&a.push(t)}),a.length>0&&$.each(a,function(t,e){i=!0,delete o.post_job_actions[e]}),t&&$.each(o.output_terminals,function(t,e){if(!0===!o.isWorkflowOutput(e.name)){i=!0;var n={action_type:"HideDatasetAction",output_name:e.name,action_arguments:{}};o.post_job_actions["HideDatasetAction"+e.name]=null,o.post_job_actions["HideDatasetAction"+e.name]=n}}),n.active_node==o&&!0===i&&n.reload_active_node()}})}},to_simple:function(){var t={};return $.each(this.nodes,function(e,n){var o={};$.each(n.input_terminals,function(t,e){o[e.name]=null;var n=[];$.each(e.connectors,function(t,i){if(i.handle1){var a={id:i.handle1.node.id,output_name:i.handle1.name},s=e.attributes.input.input_subworkflow_step_id;void 0!==s&&(a.input_subworkflow_step_id=s),n[t]=a,o[e.name]=n}})});var i={};n.post_job_actions&&$.each(n.post_job_actions,function(t,e){var n={action_type:e.action_type,output_name:e.output_name,action_arguments:e.action_arguments};i[e.action_type+e.output_name]=null,i[e.action_type+e.output_name]=n}),n.workflow_outputs||(n.workflow_outputs=[]);var a={id:n.id,type:n.type,content_id:n.content_id,tool_version:n.config_form.version,tool_state:n.tool_state,errors:n.errors,input_connections:o,position:$(n.element).position(),annotation:n.annotation,post_job_actions:n.post_job_actions,uuid:n.uuid,label:n.label,workflow_outputs:n.workflow_outputs};t[n.id]=a}),{steps:t}},from_simple:function(t,e){var n=void 0===e||e,o=this,a=0;n?o.name=t.name:a=Object.keys(o.nodes).length;var s=a,c=!1;$.each(t.steps,function(t,e){var i=o.app.prebuildNode(e.type,e.name,e.content_id);n||(e.uuid=null,$.each(e.workflow_outputs,function(t,e){e.uuid=null})),i.init_field_data(e),e.position&&i.element.css({top:e.position.top,left:e.position.left}),i.id=parseInt(e.id)+a,i.element.attr("id","wf-node-step-"+i.id),i.element.attr("node-label",e.label),o.nodes[i.id]=i,s=Math.max(s,parseInt(t)+a),c||(i.workflow_outputs.length>0?c=!0:$.each(i.post_job_actions||[],function(t,e){"HideDatasetAction"===e.action_type&&(c=!0)}))}),o.id_counter=s+1,$.each(t.steps,function(t,e){var n=o.nodes[parseInt(t)+a];$.each(e.input_connections,function(t,e){e&&($.isArray(e)||(e=[e]),$.each(e,function(e,s){var c=o.nodes[parseInt(s.id)+a],r=new i.default;r.connect(c.output_terminals[s.output_name],n.input_terminals[t]),r.redraw()}))}),c&&$.each(n.output_terminals,function(t,e){void 0===n.post_job_actions["HideDatasetAction"+e.name]&&(n.addWorkflowOutput(e.name),$(n.element).find(".callout."+e.name).find("img").attr("src",Galaxy.root+"static/images/fugue/asterisk-small.png"),o.has_changes=!0)})})},check_changes_in_active_form:function(){this.active_form_has_changes&&(this.has_changes=!0,$("#right-content").find("form").submit(),this.active_form_has_changes=!1)},reload_active_node:function(){if(this.active_node){var t=this.active_node;this.clear_active_node(),this.activate_node(t)}},clear_active_node:function(){this.active_node&&(this.active_node.make_inactive(),this.active_node=null),document.activeElement.blur(),this.app.showAttributes()},activate_node:function(t){this.active_node!=t&&(this.check_changes_in_active_form(),this.clear_active_node(),this.app.showForm(t.config_form,t),t.make_active(),this.active_node=t)},node_changed:function(t,e){this.has_changes=!0,this.active_node==t&&e&&(this.check_changes_in_active_form(),this.app.showForm(t.config_form,t)),this.app.showWorkflowParameters()},layout:function(){this.check_changes_in_active_form(),this.has_changes=!0;var t={},e={};$.each(this.nodes,function(n,o){void 0===t[n]&&(t[n]=0),void 0===e[n]&&(e[n]=[])}),$.each(this.nodes,function(n,o){$.each(o.input_terminals,function(n,i){$.each(i.connectors,function(n,i){var a=i.handle1.node;t[o.id]+=1,e[a.id].push(o.id)})})});for(var n=[];;){var o=[];for(var i in t)0===t[i]&&o.push(i);if(0===o.length)break;n.push(o);for(var a in o){var s=o[a];delete t[s];for(var c in e[s])t[e[s][c]]-=1}}if(!t.length){var r=this.nodes,u=80;$.each(n,function(t,e){e.sort(function(t,e){return $(r[t].element).position().top-$(r[e].element).position().top});var n=0,o=30;$.each(e,function(t,e){var i=r[e],a=$(i.element);$(a).css({top:o,left:u}),n=Math.max(n,$(a).width()),o+=$(a).height()+30}),u+=n+80}),$.each(r,function(t,e){e.redraw()})}},bounds_for_all_nodes:function(){var t,e=1/0,n=-1/0,o=1/0,i=-1/0;return $.each(this.nodes,function(a,s){var c=$(s.element);t=c.position(),e=Math.min(e,t.left),n=Math.max(n,t.left+c.width()),o=Math.min(o,t.top),i=Math.max(i,t.top+c.width())}),{xmin:e,xmax:n,ymin:o,ymax:i}},fit_canvas_to_nodes:function(){function t(t,e){return Math.ceil(t/e)*e}function e(t,e){return t<e||t>3*e?-(t-(Math.ceil(t%e/e)+1)*e):0}var n=this.bounds_for_all_nodes(),o=this.canvas_container.position(),i=this.canvas_container.parent(),a=e(n.xmin,100),s=e(n.ymin,100);a=Math.max(a,o.left),s=Math.max(s,o.top);var c=o.left-a,r=o.top-s,u=t(n.xmax+100,100)+a,_=t(n.ymax+100,100)+s;u=Math.max(u,-c+i.width()),_=Math.max(_,-r+i.height()),this.canvas_container.css({left:c,top:r,width:u,height:_}),this.canvas_container.children().each(function(){var t=$(this).position();$(this).css("left",t.left+a),$(this).css("top",t.top+s)})}}),t.default=o});