Changeset 1479:b671c301674a
- Timestamp:
- 08/22/08 17:47:43 (3 months ago)
- Files:
-
- static/june_2007_style/base.css.tmpl (modified) (1 diff)
- static/june_2007_style/blue/base.css (modified) (1 diff)
- static/june_2007_style/blue/panel_layout.css (modified) (2 diffs)
- static/june_2007_style/panel_layout.css.tmpl (modified) (2 diffs)
- static/scripts/galaxy.base.js (modified) (1 diff)
- static/scripts/galaxy.panels.js (modified) (2 diffs)
- static/scripts/galaxy.ui.scrollPanel.js (modified) (5 diffs)
- static/scripts/galaxy.workflow_editor.canvas.js (modified) (13 diffs)
- static/scripts/packed/galaxy.base.js (modified) (1 diff)
- static/scripts/packed/galaxy.panels.js (modified) (1 diff)
- static/scripts/packed/galaxy.workflow_editor.canvas.js (modified) (1 diff)
- templates/workflow/editor.mako (modified) (9 diffs)
- templates/workflow/index.mako (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
static/june_2007_style/base.css.tmpl
r1427 r1479 359 359 display: inline-block; 360 360 cursor: pointer; 361 margin: -1px;padding: 2px;361 padding: 2px; 362 362 border: solid #aaaaaa 1px; 363 363 padding-right: 0.5em; static/june_2007_style/blue/base.css
r1427 r1479 357 357 display: inline-block; 358 358 cursor: pointer; 359 margin: -1px;padding: 2px;359 padding: 2px; 360 360 border: solid #aaaaaa 1px; 361 361 padding-right: 0.5em; static/june_2007_style/blue/panel_layout.css
r1267 r1479 245 245 z-index: 20000; 246 246 } 247 #overlay-inner {248 width: 100%; height: 100%;249 background-color:#FFF;250 filter:alpha(opacity=75);251 -moz-opacity: 0.75;252 opacity: 0.75;253 z-index: 20000;254 }255 247 256 248 .dialog-box-container { … … 260 252 margin-left: auto; 261 253 } 262 .dialog-box-underlay { 263 position: absolute; 264 left: -1em; 265 right: -1em; 266 top: -1em; 267 bottom: -1em; 268 opacity: 0.5; 269 background: black; 270 z-index: -1; 254 255 .dialog-box-wrapper { 256 position: relative; 257 padding: 1em; 258 background-color: rgba(0,0,0,0.5); 271 259 -moz-border-radius: 1em; 272 260 -webkit-border-radius: 1em; static/june_2007_style/panel_layout.css.tmpl
r1261 r1479 245 245 } 246 246 247 #overlay-inner {248 width: 100%; height: 100%;249 background-color:#FFF;250 filter:alpha(opacity=75);251 -moz-opacity: 0.75;252 opacity: 0.75;253 z-index: 20000;254 }255 256 247 .dialog-box-container { 257 248 position: relative; … … 260 251 margin-left: auto; 261 252 } 262 .dialog-box-underlay { 263 position: absolute; 264 left: -1em; 265 right: -1em; 266 top: -1em; 267 bottom: -1em; 268 opacity: 0.5; 269 background: black; 270 z-index: -1; 253 254 .dialog-box-wrapper { 255 position: relative; 256 padding: 1em; 257 background-color: rgba(0,0,0,0.5); 271 258 -moz-border-radius: 1em; 272 259 -webkit-border-radius: 1em; static/scripts/galaxy.base.js
r1432 r1479 30 30 // And the helper below the popup menus 31 31 if ( $( "#popup-helper" ).length == 0 ) { 32 var e = $("<div id='popup-helper' style='background: white; opacity: 0.00; top: 0; left: 0; width: 100%; height: 100%; position: absolute; z-index: 15000;'></div>"); 33 if ( $.browser.ie ) { 34 // Element will not capture drags in ie without nonzero opacity, 35 // but causes flashing in firefox with nonzero opacity 36 e.css( "opacity", "0.01" ); 37 } 38 e.appendTo("body").hide(); 32 $( "<div id='popup-helper'/>" ).css( { 33 background: 'white', opacity: 0, zIndex: 15000, 34 position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' 35 } ).appendTo( "body" ).hide(); 39 36 } 40 37 } static/scripts/galaxy.panels.js
r1424 r1479 7 7 // Insert div that covers everything when dragging the borders 8 8 if ( jq( "#DD-helper" ).length == 0 ) { 9 var e = jq("<div id='DD-helper' style='background: white; opacity: 0.00; top: 0; left: 0; width: 100%; height: 100%; position: absolute; z-index: 9000;'></div>"); 10 if ( jq.browser.ie ) { 11 // Element will not capture drags in ie without nonzero opacity, 12 // but causes flashing in firefox with nonzero opacity 13 e.css( "opacity", "0.01" ); 14 } 15 e.appendTo("body").hide(); 9 $( "<div id='DD-helper'/>" ).css( { 10 background: 'white', opacity: 0, zIndex: 9000, 11 position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' 12 } ).appendTo( "body" ).hide(); 16 13 } 17 14 } … … 180 177 }; 181 178 179 // Modal dialog boxes 180 181 function hide_modal() { 182 $(".dialog-box-container" ).fadeOut( function() { $("#overlay").hide(); } ); 183 }; 184 185 function show_modal( title, body, buttons, extra_buttons ) { 186 $( ".dialog-box" ).find( ".title" ).html( title ); 187 var b = $( ".dialog-box" ).find( ".buttons" ).html( "" ); 188 if ( buttons ) { 189 $.each( buttons, function( name, value ) { 190 b.append( $( '<button/>' ).text( name ).click( value ) ); 191 b.append( " " ); 192 }); 193 b.show(); 194 } else { 195 b.hide(); 196 } 197 var b = $( ".dialog-box" ).find( ".extra_buttons" ).html( "" ); 198 if ( extra_buttons ) { 199 $.each( extra_buttons, function( name, value ) { 200 b.append( $( '<button/>' ).text( name ).click( value ) ); 201 b.append( " " ); 202 }); 203 b.show(); 204 } else { 205 b.hide(); 206 } 207 if ( body == "progress" ) { 208 body = $( "<img src='../images/yui/rel_interstitial_loading.gif')' />" ); 209 } 210 $( ".dialog-box" ).find( ".body" ).html( body ); 211 if ( ! $(".dialog-box-container").is( ":visible" ) ) { 212 $("#overlay").show(); 213 $(".dialog-box-container").fadeIn() 214 } 215 }; 216 217 // Popup -- is this up to date? 218 182 219 function make_popupmenu( button_element, options ) { 183 220 var menu_element = $( "<div class='popupmenu'><div class='popupmenu-top'><div class='popupmenu-top-inner'/></div></div>" ).appendTo( "body" ); static/scripts/galaxy.ui.scrollPanel.js
r1435 r1479 19 19 element_h = element.height(), 20 20 moved = false, 21 close = 5,21 close_dist = 5, 22 22 nudge = 23, 23 23 // Legal panel range … … 35 35 mouse_y = ui.position.top + instance.offset.click.top; 36 36 // Move it 37 if ( ( panel_pos.left < p_max_x ) && ( mouse_x - close < min_vis_x ) ) {37 if ( ( panel_pos.left < p_max_x ) && ( mouse_x - close_dist < min_vis_x ) ) { 38 38 var t = Math.min( nudge, p_max_x - panel_pos.left ); 39 39 panel.css( "left", panel_pos.left + t ); … … 42 42 ui.position.left -= t 43 43 } 44 if ( ( ! moved ) && ( panel_pos.left > p_min_x ) && ( mouse_x + close > max_vis_x ) ) {44 if ( ( ! moved ) && ( panel_pos.left > p_min_x ) && ( mouse_x + close_dist > max_vis_x ) ) { 45 45 var t = Math.min( nudge, panel_pos.left - p_min_x ); 46 46 panel.css( "left", panel_pos.left - t ); … … 49 49 ui.position.left += t; 50 50 } 51 if ( ( ! moved ) && ( panel_pos.top < p_max_y ) && ( mouse_y - close < min_vis_y ) ) {51 if ( ( ! moved ) && ( panel_pos.top < p_max_y ) && ( mouse_y - close_dist < min_vis_y ) ) { 52 52 var t = Math.min( nudge, p_max_y - panel_pos.top ); 53 53 panel.css( "top", panel_pos.top + t ); … … 58 58 moved = true; 59 59 } 60 if ( ( ! moved ) && ( panel_pos.top > p_min_y ) && ( mouse_y + close > max_vis_y ) ) {60 if ( ( ! moved ) && ( panel_pos.top > p_min_y ) && ( mouse_y + close_dist > max_vis_y ) ) { 61 61 var t = Math.min( nudge, panel_pos.top - p_min_x ); 62 62 panel.css( "top", ( panel_pos.top - t ) + "px" ); static/scripts/galaxy.workflow_editor.canvas.js
r1394 r1479 33 33 } 34 34 35 OutputTerminal.prototype .__proto__ = Terminal.prototype;35 OutputTerminal.prototype = new Terminal; 36 36 37 37 function InputTerminal( element, datatypes ) { … … 40 40 } 41 41 42 InputTerminal.prototype = { 43 __proto__: Terminal.prototype, 42 InputTerminal.prototype = new Terminal; 43 44 $.extend( InputTerminal.prototype, { 44 45 can_accept: function ( other ) { 45 46 if ( this.connectors.length < 1 ) { … … 54 55 return false; 55 56 } 56 } 57 }); 57 58 58 59 function Connector( handle1, handle2 ) { … … 82 83 if ( ! this.canvas ) { 83 84 this.canvas = document.createElement( "canvas" ); 85 // excanvas specific hack 86 if ( window.G_vmlCanvasManager ) { 87 G_vmlCanvasManager.initElement( this.canvas ); 88 } 84 89 canvas_container.append( $(this.canvas) ); 85 90 if ( this.dragging ) { this.canvas.style.zIndex = "300" } … … 183 188 }))) 184 189 .bind( "mouseleave", function() { 185 $(this). fadeOut( "fast", function() { $(this).remove() } )190 $(this).remove(); 186 191 }); 187 192 // Position it and show … … 190 195 left: $(this).offset().left - t.width(), 191 196 'padding-right': $(this).width() } 192 ). fadeIn( "fast");197 ).show(); 193 198 } 194 199 }, … … 273 278 var b = f.find( ".toolFormBody" ); 274 279 b.find( "div" ).remove(); 275 var ibox = $("<div class='inputs' />").appendTo( b );280 var ibox = $("<div class='inputs'></div>").appendTo( b ); 276 281 $.each( data.data_inputs, function( i, input ) { 277 t = $("<div class='terminal input-terminal'></div>")282 var t = $("<div class='terminal input-terminal'></div>"); 278 283 node.enable_input_terminal( t, input.name, input.extensions ); 279 ibox.append( $("<div class='form-row dataRow input-data-row' name='" + input.name + "'>" + input.label + "</div> </div>" ).prepend( t ) );280 }); 284 ibox.append( $("<div class='form-row dataRow input-data-row' name='" + input.name + "'>" + input.label + "</div>" ).prepend( t ) ); 285 }); 281 286 if ( ( data.data_inputs.length > 0 ) && ( data.data_outputs.length > 0 ) ) { 282 287 b.append( $( "<div class='rule'></div>" ) ); … … 306 311 // Update input rows 307 312 var old_body = el.find( "div.inputs" ); 308 var new_body = $("<div class='inputs' />");309 old = old_body.find( "div.input-data-row")313 var new_body = $("<div class='inputs'></div>"); 314 var old = old_body.find( "div.input-data-row") 310 315 $.each( data.data_inputs, function( i, input ) { 311 316 var t = $("<div class='terminal input-terminal'></div>"); … … 323 328 }); 324 329 // Append to new body 325 new_body.append( $("<div class='form-row dataRow input-data-row' name='" + input.name + "'>" + input.label + "</div> </div>" ).prepend( t ) );330 new_body.append( $("<div class='form-row dataRow input-data-row' name='" + input.name + "'>" + input.label + "</div>" ).prepend( t ) ); 326 331 }); 327 332 old_body.replaceWith( new_body ); … … 469 474 // Fix width to computed width 470 475 // Now add floats 471 var buttons = $("<div class='buttons' style='float: right '></div>");472 buttons.append( $("<img src='../images/delete_icon.png' />").click( function( ) {476 var buttons = $("<div class='buttons' style='float: right;'></div>"); 477 buttons.append( $("<img src='../images/delete_icon.png' />").click( function( e ) { 473 478 node.destroy(); 474 479 } ).hover( … … 476 481 function() { $(this).attr( 'src', "../images/delete_icon.png" ) } 477 482 ) ); 483 // zIndex tracking for bring to front 484 zmax = $("#canvas-container").data( "zmax" ) 485 if ( ! zmax ) { 486 zmax = 0; 487 } 488 f.css( "zIndex", zmax + 1 ); 489 $("#canvas-container").data( "zmax", zmax + 1 ); 490 // Place inside container 478 491 f.appendTo( "#canvas-container" ); 479 492 // Position in container … … 495 508 // grow: true, 496 509 click: function( e, ui ) { 497 var element = $(this).data("draggable").element.get(0); 498 (function(p) { p.removeChild( element ); p.appendChild( element ) })(element.parentNode) 510 // Bring to front 511 zmax = $("#canvas-container").data( "zmax" ) 512 $(this).css( "zIndex", zmax + 1 ); 513 $("#canvas-container").data( "zmax", zmax + 1 ); 514 // Make active 499 515 workflow.activate_node( node ); 500 516 }, 501 517 start: function( e, ui ) { 502 518 workflow.activate_node( node ); 503 $(this).css( 'z-index', '1000');519 $(this).css( 'z-index', $("#canvas-container").data( "zmax" ) + 1000 ); 504 520 }, 505 521 drag: function( e, ui ) { … … 509 525 }, 510 526 stop: function( e, ui ) { 511 var element = $(this).data("draggable").element.get(0); 512 (function(p) { p.removeChild( element ); p.appendChild( element ) })(element.parentNode) 513 $(this).css( 'z-index', '100' ); 527 // Bring to front 528 zmax = $("#canvas-container").data( "zmax" ) 529 $(this).css( "zIndex", zmax + 1 ); 530 $("#canvas-container").data( "zmax", zmax + 1 ); 531 // Redraw 514 532 $(this).find( ".terminal" ).each( function() { 515 533 this.terminal.redraw(); static/scripts/packed/galaxy.base.js
r1468 r1479 1 jQuery(document).ready(function(){jQuery("a[@confirm]").click(function(){return confirm(jQuery(this).attr("confirm"))});jQuery("div[@popupmenu]").each(function(){var B={};$(this).find("a").each(function(){var C=$(this).attr("confirm"),D=$(this).attr("href"),E=$(this).attr("target");B[$(this).text()]=function(){if(!C||confirm(C)){var F=window;if(E=="_parent"){F=window.parent}F.location=D}}});var A=$("#"+$(this).attr("popupmenu"));make_popupmenu(A,B);$(this).remove();A.show()})});function ensure_popup_helper(){if($("#popup-helper").length==0){ var A=$("<div id='popup-helper' style='background: white; opacity: 0.00; top: 0; left: 0; width: 100%; height: 100%; position: absolute; z-index: 15000;'></div>");if($.browser.ie){A.css("opacity","0.01")}A.appendTo("body").hide()}}function make_popupmenu(D,B){ensure_popup_helper();var A=$("<div class='popupmenu'></div>").appendTo("body");$.each(B,function(G,F){$("<div class='popupmenu-item' />").html(G).click(F).appendTo(A)});var C=function(){$(A).unbind().hide();$("#popup-helper").unbind().hide()};var E=function(F){var G=$(D).offset();$("#popup-helper").mousedown(C).show();$(A).click(C).css({top:-1000}).show().css({top:F.pageY-2,left:F.pageX-2});return false};$(D).click(E)};1 jQuery(document).ready(function(){jQuery("a[@confirm]").click(function(){return confirm(jQuery(this).attr("confirm"))});jQuery("div[@popupmenu]").each(function(){var B={};$(this).find("a").each(function(){var C=$(this).attr("confirm"),D=$(this).attr("href"),E=$(this).attr("target");B[$(this).text()]=function(){if(!C||confirm(C)){var F=window;if(E=="_parent"){F=window.parent}F.location=D}}});var A=$("#"+$(this).attr("popupmenu"));make_popupmenu(A,B);$(this).remove();A.show()})});function ensure_popup_helper(){if($("#popup-helper").length==0){$("<div id='popup-helper'/>").css({background:"white",opacity:0,zIndex:15000,position:"absolute",top:0,left:0,width:"100%",height:"100%"}).appendTo("body").hide()}}function make_popupmenu(D,B){ensure_popup_helper();var A=$("<div class='popupmenu'></div>").appendTo("body");$.each(B,function(G,F){$("<div class='popupmenu-item' />").html(G).click(F).appendTo(A)});var C=function(){$(A).unbind().hide();$("#popup-helper").unbind().hide()};var E=function(F){var G=$(D).offset();$("#popup-helper").mousedown(C).show();$(A).click(C).css({top:-1000}).show().css({top:F.pageY-2,left:F.pageX-2});return false};$(D).click(E)}; static/scripts/packed/galaxy.panels.js
r1468 r1479 1 var hidden_width=7;var border_tweak=9;var jq=jQuery;function ensure_dd_helper(){if(jq("#DD-helper").length==0){ var A=jq("<div id='DD-helper' style='background: white; opacity: 0.00; top: 0; left: 0; width: 100%; height: 100%; position: absolute; z-index: 9000;'></div>");if(jq.browser.ie){A.css("opacity","0.01")}A.appendTo("body").hide()}}function make_left_panel(E,A,B){var D=false;var C=null;resize=function(F){var G=F;if(F<0){F=0}jq(E).css("width",F);jq(B).css("left",G);jq(A).css("left",F+7);if(document.recalc){document.recalc()}};toggle=function(){if(D){jq(B).removeClass("hover");jq(B).animate({left:C},"fast");jq(E).css("left",-C).show().animate({left:0},"fast",function(){resize(C);jq(B).removeClass("hidden")});D=false}else{C=jq(B).position().left;jq(A).css("left",hidden_width);if(document.recalc){document.recalc()}jq(B).removeClass("hover");jq(E).animate({left:-C},"fast");jq(B).animate({left:-1},"fast",function(){jq(this).addClass("hidden")});D=true}};jq(B).hover(function(){jq(this).addClass("hover")},function(){jq(this).removeClass("hover")}).draggable({start:function(F,G){jq("#DD-helper").show()},stop:function(F,G){jq("#DD-helper").hide();return false},drag:function(F,G){x=G.position.left;x=Math.min(400,Math.max(100,x));if(D){jq(E).css("left",0);jq(B).removeClass("hidden");D=false}resize(x);G.position.left=x;G.position.top=$(this).data("draggable").originalPosition.top},click:function(){toggle()}}).find("div").show()}function make_right_panel(A,E,G){var I=false;var F=false;var C=null;var D=function(J){jq(A).css("width",J);jq(E).css("right",J+9);jq(G).css("right",J).css("left","");if(document.recalc){document.recalc()}};var H=function(){if(I){jq(G).removeClass("hover");jq(G).animate({right:C},"fast");jq(A).css("right",-C).show().animate({right:0},"fast",function(){D(C);jq(G).removeClass("hidden")});I=false}else{C=jq(document).width()-jq(G).position().left-border_tweak;jq(E).css("right",hidden_width+1);if(document.recalc){document.recalc()}jq(G).removeClass("hover");jq(A).animate({right:-C},"fast");jq(G).animate({right:-1},"fast",function(){jq(this).addClass("hidden")});I=true}F=false};var B=function(J){var K=jq(E).width()-(I?C:0);if(K<J){if(!I){H();F=true}}else{if(F){H();F=false}}};jq(G).hover(function(){jq(this).addClass("hover")},function(){jq(this).removeClass("hover")}).draggable({start:function(J,K){jq("#DD-helper").show()},stop:function(J,K){x=K.position.left;w=jq(window).width();x=Math.min(w-100,x);x=Math.max(w-400,x);D(w-x-border_tweak);jq("#DD-helper").hide();return false},click:function(){H()},drag:function(J,K){x=K.position.left;w=jq(window).width();x=Math.min(w-100,x);x=Math.max(w-400,x);if(I){jq(A).css("right",0);jq(G).removeClass("hidden");I=false}D(w-x-border_tweak);K.position.left=x;K.position.top=$(this).data("draggable").originalPosition.top}}).find("div").show();return{handle_minwidth_hint:B}}function make_popupmenu(D,B){var A=$("<div class='popupmenu'><div class='popupmenu-top'><div class='popupmenu-top-inner'/></div></div>").appendTo("body");$.each(B,function(G,F){$("<div class='popupmenu-item' />").html(G).click(F).appendTo(A)});var C=function(){$(A).unbind().hide();$("#popup-helper").unbind().hide()};var E=function(){var F=$(D).offset();$("#popup-helper").mousedown(C).show();$(A).click(C).css({top:-1000}).show().css({top:F.top+$(D).height()+9,left:F.left+$(D).width()-$(A).width()})};$(D).click(E)};1 var hidden_width=7;var border_tweak=9;var jq=jQuery;function ensure_dd_helper(){if(jq("#DD-helper").length==0){$("<div id='DD-helper'/>").css({background:"white",opacity:0,zIndex:9000,position:"absolute",top:0,left:0,width:"100%",height:"100%"}).appendTo("body").hide()}}function make_left_panel(E,A,B){var D=false;var C=null;resize=function(F){var G=F;if(F<0){F=0}jq(E).css("width",F);jq(B).css("left",G);jq(A).css("left",F+7);if(document.recalc){document.recalc()}};toggle=function(){if(D){jq(B).removeClass("hover");jq(B).animate({left:C},"fast");jq(E).css("left",-C).show().animate({left:0},"fast",function(){resize(C);jq(B).removeClass("hidden")});D=false}else{C=jq(B).position().left;jq(A).css("left",hidden_width);if(document.recalc){document.recalc()}jq(B).removeClass("hover");jq(E).animate({left:-C},"fast");jq(B).animate({left:-1},"fast",function(){jq(this).addClass("hidden")});D=true}};jq(B).hover(function(){jq(this).addClass("hover")},function(){jq(this).removeClass("hover")}).draggable({start:function(F,G){jq("#DD-helper").show()},stop:function(F,G){jq("#DD-helper").hide();return false},drag:function(F,G){x=G.position.left;x=Math.min(400,Math.max(100,x));if(D){jq(E).css("left",0);jq(B).removeClass("hidden");D=false}resize(x);G.position.left=x;G.position.top=$(this).data("draggable").originalPosition.top},click:function(){toggle()}}).find("div").show()}function make_right_panel(A,E,G){var I=false;var F=false;var C=null;var D=function(J){jq(A).css("width",J);jq(E).css("right",J+9);jq(G).css("right",J).css("left","");if(document.recalc){document.recalc()}};var H=function(){if(I){jq(G).removeClass("hover");jq(G).animate({right:C},"fast");jq(A).css("right",-C).show().animate({right:0},"fast",function(){D(C);jq(G).removeClass("hidden")});I=false}else{C=jq(document).width()-jq(G).position().left-border_tweak;jq(E).css("right",hidden_width+1);if(document.recalc){document.recalc()}jq(G).removeClass("hover");jq(A).animate({right:-C},"fast");jq(G).animate({right:-1},"fast",function(){jq(this).addClass("hidden")});I=true}F=false};var B=function(J){var K=jq(E).width()-(I?C:0);if(K<J){if(!I){H();F=true}}else{if(F){H();F=false}}};jq(G).hover(function(){jq(this).addClass("hover")},function(){jq(this).removeClass("hover")}).draggable({start:function(J,K){jq("#DD-helper").show()},stop:function(J,K){x=K.position.left;w=jq(window).width();x=Math.min(w-100,x);x=Math.max(w-400,x);D(w-x-border_tweak);jq("#DD-helper").hide();return false},click:function(){H()},drag:function(J,K){x=K.position.left;w=jq(window).width();x=Math.min(w-100,x);x=Math.max(w-400,x);if(I){jq(A).css("right",0);jq(G).removeClass("hidden");I=false}D(w-x-border_tweak);K.position.left=x;K.position.top=$(this).data("draggable").originalPosition.top}}).find("div").show();return{handle_minwidth_hint:B}}function hide_modal(){$(".dialog-box-container").fadeOut(function(){$("#overlay").hide()})}function show_modal(E,B,D,C){$(".dialog-box").find(".title").html(E);var A=$(".dialog-box").find(".buttons").html("");if(D){$.each(D,function(F,G){A.append($("<button/>").text(F).click(G));A.append(" ")});A.show()}else{A.hide()}var A=$(".dialog-box").find(".extra_buttons").html("");if(C){$.each(C,function(F,G){A.append($("<button/>").text(F).click(G));A.append(" ")});A.show()}else{A.hide()}if(B=="progress"){B=$("<img src='../images/yui/rel_interstitial_loading.gif')' />")}$(".dialog-box").find(".body").html(B);if(!$(".dialog-box-container").is(":visible")){$("#overlay").show();$(".dialog-box-container").fadeIn()}}function make_popupmenu(D,B){var A=$("<div class='popupmenu'><div class='popupmenu-top'><div class='popupmenu-top-inner'/></div></div>").appendTo("body");$.each(B,function(G,F){$("<div class='popupmenu-item' />").html(G).click(F).appendTo(A)});var C=function(){$(A).unbind().hide();$("#popup-helper").unbind().hide()};var E=function(){var F=$(D).offset();$("#popup-helper").mousedown(C).show();$(A).click(C).css({top:-1000}).show().css({top:F.top+$(D).height()+9,left:F.left+$(D).width()-$(A).width()})};$(D).click(E)}; static/scripts/packed/galaxy.workflow_editor.canvas.js
r1468 r1479 1 function Terminal(A){this.element=A;this.connectors=[]}Terminal.prototype={connect:function(A){this.connectors.push(A);if(this.node){this.node.changed()}},disconnect:function(A){this.connectors.splice($.inArray(A,this.connectors),1);if(this.node){this.node.changed()}},redraw:function(){$.each(this.connectors,function(A,B){B.redraw()})},destroy:function(){$.each(this.connectors.slice(),function(A,B){B.destroy()})}};function OutputTerminal(A,B){Terminal.call(this,A);this.datatype=B}OutputTerminal.prototype .__proto__=Terminal.prototype;function InputTerminal(A,B){Terminal.call(this,A);this.datatypes=B}InputTerminal.prototype={__proto__:Terminal.prototype,can_accept:function(A){if(this.connectors.length<1){for(t in this.datatypes){if(A.datatype=="input"){return true}if(issubtype(A.datatype,this.datatypes[t])){return true}}}return false}};function Connector(B,A){this.canvas=null;this.dragging=false;this.inner_color="#FFFFFF";this.outer_color="#D8B365"}$.extend(Connector.prototype,{connect:function(B,A){this.handle1=B;this.handle1.connect(this);this.handle2=A;this.handle2.connect(this)},destroy:function(){if(this.handle1){this.handle1.disconnect(this)}if(this.handle2){this.handle2.disconnect(this)}$(this.canvas).remove()},redraw:function(){var C=$("#canvas-container");if(!this.canvas){this.canvas=document.createElement("canvas");C.append($(this.canvas));if(this.dragging){this.canvas.style.zIndex="300"}}var L=function(S){return $(S).offset().left-C.offset().left};var G=function(S){return $(S).offset().top-C.offset().top};var F=L(this.handle1.element)+5;var E=G(this.handle1.element)+5;var N=L(this.handle2.element)+5;var K=G(this.handle2.element)+5;var D=100;var I=Math.min(F,N);var A=Math.max(F,N);var H=Math.min(E,K);var R=Math.max(E,K);var B=Math.min(Math.max(Math.abs(R-H)/2,100),300);var M=I-D;var Q=H-D;var O=A-I+2*D;var J=R-H+2*D;this.canvas.style.left=M+"px";this.canvas.style.top=Q+"px";this.canvas.setAttribute("width",O);this.canvas.setAttribute("height",J);F-=M;E-=Q;N-=M;K-=Q;var P=this.canvas.getContext("2d");P.lineCap="round";P.strokeStyle=this.outer_color;P.lineWidth=7;P.beginPath();P.moveTo(F,E);P.bezierCurveTo(F+B,E,N-B,K,N,K);P.stroke();P.strokeStyle=this.inner_color;P.lineWidth=5;P.beginPath();P.moveTo(F,E);P.bezierCurveTo(F+B,E,N-B,K,N,K);P.stroke()}});function Node(A){this.element=A;this.input_terminals={};this.output_terminals={};this.tool_errors={}}$.extend(Node.prototype,{enable_input_terminal:function(C,A,B){node=this;$(C).each(function(){var D=this.terminal=new InputTerminal(this,B);D.node=node;D.name=A;$(this).droppable({tolerance:"intersect",accept:function(E){E=E.get(0);return(E.terminal)&&(D.can_accept(E.terminal))},activeClass:"input-terminal-active",over:function(F,E){E.helper.get(0).terminal.connectors[0].inner_color="#BBFFBB"},out:function(F,E){E.helper.get(0).terminal.connectors[0].inner_color="#FFFFFF"},drop:function(I,G){var E=$(this).data("droppable");var F=G.draggable.get(0).terminal;var H=E.element.get(0).terminal;var J=new Connector();J.connect(F,H);J.redraw()}});$(this).hoverIntent(function(){if(D.connectors.length>0){var E=$("<div class='callout'></div>").css({display:"none"}).appendTo("body").append($("<div class='buttons'></div>").append($("<img src='../images/delete_icon.png' />").click(function(){$.each(D.connectors,function(G,F){F.destroy()});E.remove()}))).bind("mouseleave",function(){$(this).fadeOut("fast",function(){$(this).remove()})});E.css({top:$(this).offset().top-2,left:$(this).offset().left-E.width(),"padding-right":$(this).width()}).fadeIn("fast")}},function(){});node.input_terminals[A]=D})},enable_output_terminal:function(C,A,B){node=this;$(C).each(function(){var D=this.terminal=new OutputTerminal(this,B);D.node=node;D.name=A;$(this).draggable({scrollPanel:true,panel:$("#canvas-container"),helper:function(){var E=$('<div class="drag-terminal" style="position: absolute;"></div>').appendTo("#canvas-container").get(0);E.terminal=new OutputTerminal(E);var F=new Connector();this.drag_temp_connector=F;F.dragging=true;F.connect(this.terminal,E.terminal);return E},drag:function(F,E){h=E.helper.get(0);h.terminal.redraw()},stop:function(F,E){this.drag_temp_connector.destroy()}});node.output_terminals[A]=D})},redraw:function(){$.each(this.input_terminals,function(A,B){B.redraw()});$.each(this.output_terminals,function(A,B){B.redraw()})},destroy:function(){$.each(this.input_terminals,function(A,B){B.destroy();$(B.element).droppable("destroy")});$.each(this.output_terminals,function(A,B){B.destroy();$(B.element).draggable("destroy")});$(this.element).draggable("destroy").remove();workflow.remove_node(this)},make_active:function(){$(this.element).addClass("toolForm-active")},make_inactive:function(){$(this.element).removeClass("toolForm-active")},init_field_data:function(D){var C=this.element;if(D.type){this.type=D.type}this.form_html=D.form_html;this.tool_state=D.tool_state;this.tool_errors=D.tool_errors;if(this.tool_errors){C.addClass("tool-node-error")}else{C.removeClass("tool-node-error")}var B=this;var A=C.find(".toolFormBody");A.find("div").remove();var E=$("<div class='inputs'/>").appendTo(A);$.each(D.data_inputs,function(G,F){t=$("<div class='terminal input-terminal'></div>");B.enable_input_terminal(t,F.name,F.extensions);E.append($("<div class='form-row dataRow input-data-row' name='"+F.name+"'>"+F.label+"</div></div>").prepend(t))});if((D.data_inputs.length>0)&&(D.data_outputs.length>0)){A.append($("<div class='rule'></div>"))}$.each(D.data_outputs,function(I,F){var H=$("<div class='terminal output-terminal'></div>");B.enable_output_terminal(H,F.name,F.extension);var G=F.name;if(F.extension!="input"){G=G+" ("+F.extension+")"}A.append($("<div class='form-row dataRow'>"+G+"</div>").append(H))});workflow.node_changed(this)},update_field_data:function(D){var B=$(this.element),C=this;this.tool_state=D.tool_state;this.form_html=D.form_html;this.tool_errors=D.tool_errors;if(this.tool_errors){B.addClass("tool-node-error")}else{B.removeClass("tool-node-error")}var E=B.find("div.inputs");var A=$("<div class='inputs'/>");old=E.find("div.input-data-row");$.each(D.data_inputs,function(H,F){var G=$("<div class='terminal input-terminal'></div>");C.enable_input_terminal(G,F.name,F.extensions);E.find("div[name="+F.name+"]").each(function(){$(this).find(".input-terminal").each(function(){var I=this.terminal.connectors[0];if(I){G[0].terminal.connectors[0]=I;I.handle2=G[0].terminal}});$(this).remove()});A.append($("<div class='form-row dataRow input-data-row' name='"+F.name+"'>"+F.label+"</div></div>").prepend(G))});E.replaceWith(A);E.find("div.input-data-row > .terminal").each(function(){this.terminal.destroy()});this.changed();this.redraw()},error:function(C){var A=$(this.element).find(".toolFormBody");A.find("div").remove();var B="<div style='color: red; text-style: italic;'>"+C+"</div>";this.form_html=B;A.html(B);workflow.node_changed(this)},changed:function(){workflow.node_changed(this)}});function Workflow(){this.id_counter=0;this.nodes={};this.name=null;this.has_changes=false}$.extend(Workflow.prototype,{add_node:function(A){A.id=this.id_counter;this.id_counter++;this.nodes[A.id]=A;this.has_changes=true;A.workflow=this},remove_node:function(A){if(this.active_node==A){this.clear_active_node()}delete this.nodes[A.id];this.has_changes=true},remove_all:function(){wf=this;$.each(this.nodes,function(B,A){A.destroy();wf.remove_node(A)})},to_simple:function(){var A={};$.each(this.nodes,function(B,D){var E={};$.each(D.input_terminals,function(F,G){E[G.name]=null;$.each(G.connectors,function(H,I){E[G.name]={id:I.handle1.node.id,output_name:I.handle1.name}})});var C={id:D.id,type:D.type,tool_id:D.tool_id,tool_state:D.tool_state,tool_errors:D.tool_errors,input_connections:E,position:$(D.element).position()};A[D.id]=C});return{steps:A}},from_simple:function(A){wf=this;var B=0;wf.name=A.name;$.each(A.steps,function(E,D){var C=prebuild_node("tool",D.name,D.tool_id);C.init_field_data(D);if(D.position){C.element.css({top:D.position.top,left:D.position.left})}C.id=D.id;wf.nodes[C.id]=C;B=Math.max(B,parseInt(E))});wf.id_counter=B+1;$.each(A.steps,function(E,D){var C=wf.nodes[E];$.each(D.input_connections,function(G,F){if(F){var H=wf.nodes[F.id];var I=new Connector();I.connect(H.output_terminals[F.output_name],C.input_terminals[G]);I.redraw()}})})},clear_active_node:function(){if(this.active_node){this.active_node.make_inactive()}parent.show_form_for_tool("<div>No node selected</div>")},activate_node:function(A){this.clear_active_node();parent.show_form_for_tool(A.form_html,A);A.make_active();this.active_node=A},node_changed:function(A){this.has_changes=true;if(this.active_node==A){this.activate_node(A)}}});function prebuild_node(H,F,K){var E=$("<div class='toolForm toolFormInCanvas'></div>");var C=new Node(E);C.type=H;if(H=="tool"){C.tool_id=K}var J=$("<div class='toolFormTitle unselectable'>"+F+"</div>");E.append(J);E.css("left",$(window).scrollLeft()+20);E.css("top",$(window).scrollTop()+20);var I=$("<div class='toolFormBody'></div>");var D="<div><img height='16' align='middle' src='../images/loading_small_white_bg.gif'/> loading tool info...</div>";I.append(D);C.form_html=D;E.append(I);var G=$("<div class='buttons' style='float: right'></div>");G.append($("<img src='../images/delete_icon.png' />").click(function(){C.destroy()}).hover(function(){$(this).attr("src","../images/delete_icon_dark.png")},function(){$(this).attr("src","../images/delete_icon.png")}));E.appendTo("#canvas-container");var B=$("#canvas-container").position();E.css({left:(-B.left)+10,top:(-B.top)+10});var A=E.width();G.prependTo(J);A+=(G.width()+10);E.css("width",A);$(E).draggable({cursor:"move",scrollPanel:true,panel:$("#canvas-container"),scrollSensitivity:10,scrollSpeed:20,click:function(N,M){var L=$(this).data("draggable").element.get(0);(function(O){O.removeChild(L);O.appendChild(L)})(L.parentNode);workflow.activate_node(C)},start:function(M,L){workflow.activate_node(C);$(this).css("z-index","1000")},drag:function(M,L){$(this).find(".terminal").each(function(){this.terminal.redraw()})},stop:function(N,M){var L=$(this).data("draggable").element.get(0);(function(O){O.removeChild(L);O.appendChild(L)})(L.parentNode);$(this).css("z-index","100");$(this).find(".terminal").each(function(){this.terminal.redraw()});workflow.node_changed(this)}});return C}var ext_to_type=null;var type_to_type=null;function issubtype(B,A){B=ext_to_type[B];A=ext_to_type[A];return(A in type_to_type[B])}function populate_datatype_info(A){ext_to_type=A.ext_to_class_name;type_to_type=A.class_to_classes};1 function Terminal(A){this.element=A;this.connectors=[]}Terminal.prototype={connect:function(A){this.connectors.push(A);if(this.node){this.node.changed()}},disconnect:function(A){this.connectors.splice($.inArray(A,this.connectors),1);if(this.node){this.node.changed()}},redraw:function(){$.each(this.connectors,function(A,B){B.redraw()})},destroy:function(){$.each(this.connectors.slice(),function(A,B){B.destroy()})}};function OutputTerminal(A,B){Terminal.call(this,A);this.datatype=B}OutputTerminal.prototype=new Terminal;function InputTerminal(A,B){Terminal.call(this,A);this.datatypes=B}InputTerminal.prototype=new Terminal;$.extend(InputTerminal.prototype,{can_accept:function(A){if(this.connectors.length<1){for(t in this.datatypes){if(A.datatype=="input"){return true}if(issubtype(A.datatype,this.datatypes[t])){return true}}}return false}});function Connector(B,A){this.canvas=null;this.dragging=false;this.inner_color="#FFFFFF";this.outer_color="#D8B365"}$.extend(Connector.prototype,{connect:function(B,A){this.handle1=B;this.handle1.connect(this);this.handle2=A;this.handle2.connect(this)},destroy:function(){if(this.handle1){this.handle1.disconnect(this)}if(this.handle2){this.handle2.disconnect(this)}$(this.canvas).remove()},redraw:function(){var C=$("#canvas-container");if(!this.canvas){this.canvas=document.createElement("canvas");if(window.G_vmlCanvasManager){G_vmlCanvasManager.initElement(this.canvas)}C.append($(this.canvas));if(this.dragging){this.canvas.style.zIndex="300"}}var L=function(S){return $(S).offset().left-C.offset().left};var G=function(S){return $(S).offset().top-C.offset().top};var F=L(this.handle1.element)+5;var E=G(this.handle1.element)+5;var N=L(this.handle2.element)+5;var K=G(this.handle2.element)+5;var D=100;var I=Math.min(F,N);var A=Math.max(F,N);var H=Math.min(E,K);var R=Math.max(E,K);var B=Math.min(Math.max(Math.abs(R-H)/2,100),300);var M=I-D;var Q=H-D;var O=A-I+2*D;var J=R-H+2*D;this.canvas.style.left=M+"px";this.canvas.style.top=Q+"px";this.canvas.setAttribute("width",O);this.canvas.setAttribute("height",J);F-=M;E-=Q;N-=M;K-=Q;var P=this.canvas.getContext("2d");P.lineCap="round";P.strokeStyle=this.outer_color;P.lineWidth=7;P.beginPath();P.moveTo(F,E);P.bezierCurveTo(F+B,E,N-B,K,N,K);P.stroke();P.strokeStyle=this.inner_color;P.lineWidth=5;P.beginPath();P.moveTo(F,E);P.bezierCurveTo(F+B,E,N-B,K,N,K);P.stroke()}});function Node(A){this.element=A;this.input_terminals={};this.output_terminals={};this.tool_errors={}}$.extend(Node.prototype,{enable_input_terminal:function(C,A,B){node=this;$(C).each(function(){var D=this.terminal=new InputTerminal(this,B);D.node=node;D.name=A;$(this).droppable({tolerance:"intersect",accept:function(E){E=E.get(0);return(E.terminal)&&(D.can_accept(E.terminal))},activeClass:"input-terminal-active",over:function(F,E){E.helper.get(0).terminal.connectors[0].inner_color="#BBFFBB"},out:function(F,E){E.helper.get(0).terminal.connectors[0].inner_color="#FFFFFF"},drop:function(I,G){var E=$(this).data("droppable");var F=G.draggable.get(0).terminal;var H=E.element.get(0).terminal;var J=new Connector();J.connect(F,H);J.redraw()}});$(this).hoverIntent(function(){if(D.connectors.length>0){var E=$("<div class='callout'></div>").css({display:"none"}).appendTo("body").append($("<div class='buttons'></div>").append($("<img src='../images/delete_icon.png' />").click(function(){$.each(D.connectors,function(G,F){F.destroy()});E.remove()}))).bind("mouseleave",function(){$(this).remove()});E.css({top:$(this).offset().top-2,left:$(this).offset().left-E.width(),"padding-right":$(this).width()}).show()}},function(){});node.input_terminals[A]=D})},enable_output_terminal:function(C,A,B){node=this;$(C).each(function(){var D=this.terminal=new OutputTerminal(this,B);D.node=node;D.name=A;$(this).draggable({scrollPanel:true,panel:$("#canvas-container"),helper:function(){var E=$('<div class="drag-terminal" style="position: absolute;"></div>').appendTo("#canvas-container").get(0);E.terminal=new OutputTerminal(E);var F=new Connector();this.drag_temp_connector=F;F.dragging=true;F.connect(this.terminal,E.terminal);return E},drag:function(F,E){h=E.helper.get(0);h.terminal.redraw()},stop:function(F,E){this.drag_temp_connector.destroy()}});node.output_terminals[A]=D})},redraw:function(){$.each(this.input_terminals,function(A,B){B.redraw()});$.each(this.output_terminals,function(A,B){B.redraw()})},destroy:function(){$.each(this.input_terminals,function(A,B){B.destroy();$(B.element).droppable("destroy")});$.each(this.output_terminals,function(A,B){B.destroy();$(B.element).draggable("destroy")});$(this.element).draggable("destroy").remove();workflow.remove_node(this)},make_active:function(){$(this.element).addClass("toolForm-active")},make_inactive:function(){$(this.element).removeClass("toolForm-active")},init_field_data:function(D){var C=this.element;if(D.type){this.type=D.type}this.form_html=D.form_html;this.tool_state=D.tool_state;this.tool_errors=D.tool_errors;if(this.tool_errors){C.addClass("tool-node-error")}else{C.removeClass("tool-node-error")}var B=this;var A=C.find(".toolFormBody");A.find("div").remove();var E=$("<div class='inputs'></div>").appendTo(A);$.each(D.data_inputs,function(H,F){var G=$("<div class='terminal input-terminal'></div>");B.enable_input_terminal(G,F.name,F.extensions);E.append($("<div class='form-row dataRow input-data-row' name='"+F.name+"'>"+F.label+"</div>").prepend(G))});if((D.data_inputs.length>0)&&(D.data_outputs.length>0)){A.append($("<div class='rule'></div>"))}$.each(D.data_outputs,function(I,F){var H=$("<div class='terminal output-terminal'></div>");B.enable_output_terminal(H,F.name,F.extension);var G=F.name;if(F.extension!="input"){G=G+" ("+F.extension+")"}A.append($("<div class='form-row dataRow'>"+G+"</div>").append(H))});workflow.node_changed(this)},update_field_data:function(E){var C=$(this.element),D=this;this.tool_state=E.tool_state;this.form_html=E.form_html;this.tool_errors=E.tool_errors;if(this.tool_errors){C.addClass("tool-node-error")}else{C.removeClass("tool-node-error")}var F=C.find("div.inputs");var B=$("<div class='inputs'></div>");var A=F.find("div.input-data-row");$.each(E.data_inputs,function(I,G){var H=$("<div class='terminal input-terminal'></div>");D.enable_input_terminal(H,G.name,G.extensions);F.find("div[name="+G.name+"]").each(function(){$(this).find(".input-terminal").each(function(){var J=this.terminal.connectors[0];if(J){H[0].terminal.connectors[0]=J;J.handle2=H[0].terminal}});$(this).remove()});B.append($("<div class='form-row dataRow input-data-row' name='"+G.name+"'>"+G.label+"</div>").prepend(H))});F.replaceWith(B);F.find("div.input-data-row > .terminal").each(function(){this.terminal.destroy()});this.changed();this.redraw()},error:function(C){var A=$(this.element).find(".toolFormBody");A.find("div").remove();var B="<div style='color: red; text-style: italic;'>"+C+"</div>";this.form_html=B;A.html(B);workflow.node_changed(this)},changed:function(){workflow.node_changed(this)}});function Workflow(){this.id_counter=0;this.nodes={};this.name=null;this.has_changes=false}$.extend(Workflow.prototype,{add_node:function(A){A.id=this.id_counter;this.id_counter++;this.nodes[A.id]=A;this.has_changes=true;A.workflow=this},remove_node:function(A){if(this.active_node==A){this.clear_active_node()}delete this.nodes[A.id];this.has_changes=true},remove_all:function(){wf=this;$.each(this.nodes,function(B,A){A.destroy();wf.remove_node(A)})},to_simple:function(){var A={};$.each(this.nodes,function(B,D){var E={};$.each(D.input_terminals,function(F,G){E[G.name]=null;$.each(G.connectors,function(H,I){E[G.name]={id:I.handle1.node.id,output_name:I.handle1.name}})});var C={id:D.id,type:D.type,tool_id:D.tool_id,tool_state:D.tool_state,tool_errors:D.tool_errors,input_connections:E,position:$(D.element).position()};A[D.id]=C});return{steps:A}},from_simple:function(A){wf=this;var B=0;wf.name=A.name;$.each(A.steps,function(E,D){var C=prebuild_node("tool",D.name,D.tool_id);C.init_field_data(D);if(D.position){C.element.css({top:D.position.top,left:D.position.left})}C.id=D.id;wf.nodes[C.id]=C;B=Math.max(B,parseInt(E))});wf.id_counter=B+1;$.each(A.steps,function(E,D){var C=wf.nodes[E];$.each(D.input_connections,function(G,F){if(F){var H=wf.nodes[F.id];var I=new Connector();I.connect(H.output_terminals[F.output_name],C.input_terminals[G]);I.redraw()}})})},clear_active_node:function(){if(this.active_node){this.active_node.make_inactive()}parent.show_form_for_tool("<div>No node selected</div>")},activate_node:function(A){this.clear_active_node();parent.show_form_for_tool(A.form_html,A);A.make_active();this.active_node=A},node_changed:function(A){this.has_changes=true;if(this.active_node==A){this.activate_node(A)}}});function prebuild_node(H,F,K){var E=$("<div class='toolForm toolFormInCanvas'></div>");var C=new Node(E);C.type=H;if(H=="tool"){C.tool_id=K}var J=$("<div class='toolFormTitle unselectable'>"+F+"</div>");E.append(J);E.css("left",$(window).scrollLeft()+20);E.css("top",$(window).scrollTop()+20);var I=$("<div class='toolFormBody'></div>");var D="<div><img height='16' align='middle' src='../images/loading_small_white_bg.gif'/> loading tool info...</div>";I.append(D);C.form_html=D;E.append(I);var G=$("<div class='buttons' style='float: right;'></div>");G.append($("<img src='../images/delete_icon.png' />").click(function(L){C.destroy()}).hover(function(){$(this).attr("src","../images/delete_icon_dark.png")},function(){$(this).attr("src","../images/delete_icon.png")}));zmax=$("#canvas-container").data("zmax");if(!zmax){zmax=0}E.css("zIndex",zmax+1);$("#canvas-container").data("zmax",zmax+1);E.appendTo("#canvas-container");var B=$("#canvas-container").position();E.css({left:(-B.left)+10,top:(-B.top)+10});var A=E.width();G.prependTo(J);A+=(G.width()+10);E.css("width",A);$(E).draggable({cursor:"move",scrollPanel:true,panel:$("#canvas-container"),scrollSensitivity:10,scrollSpeed:20,click:function(M,L){zmax=$("#canvas-container").data("zmax");$(this).css("zIndex",zmax+1);$("#canvas-container").data("zmax",zmax+1);workflow.activate_node(C)},start:function(M,L){workflow.activate_node(C);$(this).css("z-index",$("#canvas-container").data("zmax")+1000)},drag:function(M,L){$(this).find(".terminal").each(function(){this.terminal.redraw()})},stop:function(M,L){zmax=$("#canvas-container").data("zmax");$(this).css("zIndex",zmax+1);$("#canvas-container").data("zmax",zmax+1);$(this).find(".terminal").each(function(){this.terminal.redraw()});workflow.node_changed(this)}});return C}var ext_to_type=null;var type_to_type=null;function issubtype(B,A){B=ext_to_type[B];A=ext_to_type[A];return(A in type_to_type[B])}function populate_datatype_info(A){ext_to_type=A.ext_to_class_name;type_to_type=A.class_to_classes}; templates/workflow/editor.mako
r1446 r1479 15 15 <%def name="javascripts()"> 16 16 17 ## ${parent.javascripts()} 18 17 ${parent.javascripts()} 18 19 <!--[if IE]> 20 <script type='text/javascript' src="/static/scripts/excanvas.js"> </script> 21 <![endif]--> 19 22 <script type='text/javascript' src="/static/scripts/jquery.js"> </script> 20 23 <script type='text/javascript' src="/static/scripts/jquery.ui.js"> </script> … … 24 27 <script type='text/javascript' src="/static/scripts/jquery.json.js"> </script> 25 28 26 <script type='text/javascript'>27 /* Dialog and menu handling tools to be moved to galaxy.layout.js */28 29 function hide_modal() {30 $(".dialog-box-container" ).fadeOut( function() { $("#overlay").hide(); } );31 };32 33 function show_modal( title, body, buttons, extra_buttons ) {34 $( ".dialog-box" ).find( ".title" ).html( title );35 var b = $( ".dialog-box" ).find( ".buttons" ).html( "" );36 if ( buttons ) {37 $.each( buttons, function( name, value ) {38 b.append( $( '<button/>' ).text( name ).click( value ) );39 b.append( " " );40 });41 b.show();42 } else {43 b.hide();44 }45 var b = $( ".dialog-box" ).find( ".extra_buttons" ).html( "" );46 if ( extra_buttons ) {47 $.each( extra_buttons, function( name, value ) {48 b.append( $( '<button/>' ).text( name ).click( value ) );49 b.append( " " );50 });51 b.show();52 } else {53 b.hide();54 }55 if ( body == "progress" ) {56 body = $( "<img src='${h.url_for('/static/images/yui/rel_interstitial_loading.gif')}'/>" );57 }58 $( ".dialog-box" ).find( ".body" ).html( body );59 if ( ! $(".dialog-box-container").is( ":visible" ) ) {60 $("#overlay").show();61 $(".dialog-box-container").fadeIn()62 }63 };64 </script>65 66 29 <script type='text/javascript' src="/static/scripts/galaxy.workflow_editor.canvas.js"> </script> 67 30 … … 71 34 // Initialize workflow state 72 35 reset(); 73 // Shim (the background of the editor area) causes loss of focus74 // $("#shim").click( workflow.clear_active_node ).hoverIntent( {75 // over: function () { $("div.toolForm").fadeTo( "fast", 0.7 ) },76 // out: function () { $("div.toolForm").fadeTo( "fast", 1.0 ) },77 // interval: 30078 // });79 36 // Load the datatype info 80 $.getJSON( "${h.url_for( action='get_datatypes' )}", function( data ) { 81 populate_datatype_info( data ); 82 // Load workflow definition 83 $.ajax( { 84 url: "${h.url_for( action='load_workflow' )}", 85 data: { id: "${trans.security.encode_id( workflow_id )}", "_": "true" }, 86 dataType: 'json', 87 success: function( data ) { 88 reset(); 89 workflow.from_simple( data ); 90 workflow.has_changes = false; 91 scroll_to_nodes(); 92 hide_modal(); 93 }, 94 beforeSubmit: function( data ) { 95 show_modal( "Loading workflow", "progress" ); 96 } 97 }); 37 $.ajax( { 38 url: "${h.url_for( action='get_datatypes' )}", 39 dataType: "json", 40 cache: false, 41 success: function( data ) { 42 populate_datatype_info( data ); 43 // Load workflow definition 44 $.ajax( { 45 url: "${h.url_for( action='load_workflow' )}", 46 data: { id: "${trans.security.encode_id( workflow_id )}", "_": "true" }, 47 dataType: 'json', 48 cache: false, 49 success: function( data ) { 50 reset(); 51 workflow.from_simple( data ); 52 workflow.has_changes = false; 53 scroll_to_nodes(); 54 hide_modal(); 55 }, 56 beforeSubmit: function( data ) { 57 show_modal( "Loading workflow", "progress" ); 58 } 59 }); 60 } 98 61 }); 99 62 100 63 $(document).ajaxError( function ( e, x ) { 101 // $("#error-display").empty()102 // .append( $("<div/>").html( x.responseText ) )103 // .append( $("<div><a>close</a></div>" ).click( function() { $("#error-display").hide(); } ) )104 // .show();105 64 show_modal( "Server error", x.responseText, { "Ignore error" : hide_modal } ); 106 65 return false; … … 273 232 } 274 233 }, { 275 "Don't Save": do_close ,234 "Don't Save": do_close 276 235 } ); 277 236 } else { … … 411 370 } 412 371 413 #error-display {414 display: none;415 position: fixed;416 top: 5%; left: 5%; width: 90%; height: 90%;417 border: solid red 10px;418 background: #FFDDDD;419 z-index: 50000;420 overflow: auto;421 }422 423 372 canvas { position: absolute; z-index: 10; } 424 373 canvas.dragging { position: absolute; z-index: 1000; } 425 .input-terminal { width: 12px; height: 12px; background: url(${h.url_for('/static/style/workflow_circle_open.png')}); position: absolute; bottom: 0; left: -16px; z-index: 1500; }426 .output-terminal { width: 12px; height: 12px; background: url(${h.url_for('/static/style/workflow_circle_open.png')}); position: absolute; bottom: 0; right: -16px; z-index: 1500; }374 .input-terminal { width: 12px; height: 12px; background: url(${h.url_for('/static/style/workflow_circle_open.png')}); position: absolute; top: 0; left: -16px; z-index: 1500; } 375 .output-terminal { width: 12px; height: 12px; background: url(${h.url_for('/static/style/workflow_circle_open.png')}); position: absolute; top: 0; right: -16px; z-index: 1500; } 427 376 .drag-terminal { width: 12px; height: 12px; background: url(${h.url_for('/static/style/workflow_circle_drag.png')}); position: absolute; z-index: 1500; } 428 377 .input-terminal-active { background: url(${h.url_for('/static/style/workflow_circle_green.png')}); } … … 505 454 </style> 506 455 </%def> 507 508 <div id="error-display"></div>509 456 510 457 <div id="overlay"> 511 458 ## Need a table here for centering in IE6 512 459 <table class="dialog-box-container" border="0" cellpadding="0" cellspacing="0"><tr><td> 513 <div style="position: relative;">460 <div class="dialog-box-wrapper"> 514 461 <div class="dialog-box"> 515 462 <div class="unified-panel-header"> … … 523 470 </div> 524 471 </div> 525 <div class="dialog-box-underlay"></div>526 472 </div> 527 473 </td></tr></table> … … 559 505 ${tool.description.replace( '[[', '<a id="link-${tool.id}" href="javascript:add_node_for_tool( ${tool.id} )">' % tool.id ).replace( "]]", "</a>" )} 560 506 %elif tool.name: 561 <a id="link-${tool.id}" href=" javascript:add_node_for_tool( '${tool.id}', '${tool.name}' )">${tool.name}</a> ${tool.description}507 <a id="link-${tool.id}" href="#" onclick="add_node_for_tool( '${tool.id}', '${tool.name}' )">${tool.name}</a> ${tool.description} 562 508 %else: 563 <a id="link-${tool.id}" href=" javascript:add_node_for_tool( '${tool.id}', '${tool.name}' )">${tool.description}</a>509 <a id="link-${tool.id}" href="#" onclick="add_node_for_tool( '${tool.id}', '${tool.name}' )">${tool.description}</a> 564 510 %endif 565 511 </div> … … 589 535 <div class="toolSectionBg"> 590 536 <div class="toolTitle"> 591 <a href=" javascript:add_node_for_module( 'data_input', 'Input Dataset' )">Input dataset</a>537 <a href="#" onclick="add_node_for_module( 'data_input', 'Input Dataset' )">Input dataset</a> 592 538 </div> 593 539 </div> templates/workflow/index.mako
r1438 r1479 22 22 %endif 23 23 24 <div> 25 <div style="float: right;"> 26 <a class="action-button" href="${h.url_for( action='create' )}"> 27 <img src="${h.url_for('/static/images/silk/add.png')}" /> 28 <span>Add a new workflow</span> 29 </a> 30 </div> 31 <h2>Your workflows</h2> 24 <h2>Your workflows</h2> 25 26 <div style="float: right; margin-top: -2.5em;"> 27 <a class="action-button" href="${h.url_for( action='create' )}"> 28 <img src="${h.url_for('/static/images/silk/add.png')}" /> 29 <span>Add a new workflow</span> 30 </a> 32 31 </div> 33 32 34 33 %if workflows: 35 34 <table class="colored" border="0" cellspacing="0" cellpadding="0" width="100%">