Merge pull request #4353 from bgruening/workflow_configure_menu

Merging configure menu with main workflow view
This commit is contained in:
Aysam Guerler
2017-08-02 15:51:04 -04:00
committed by GitHub
16 changed files with 101 additions and 236 deletions
+1 -8
View File
@@ -13,7 +13,6 @@ var jQuery = require( 'jquery' ),
GridShared = require( 'mvc/grid/grid-shared' ),
Workflows = require( 'mvc/workflow/workflow' ),
HistoryList = require( 'mvc/history/history-list' ),
WorkflowsConfigureMenu = require( 'mvc/workflow/workflow-configure-menu' ),
ToolFormComposite = require( 'mvc/tool/tool-form-composite' ),
Utils = require( 'utils/utils' ),
Ui = require( 'mvc/ui/ui-misc' ),
@@ -93,7 +92,6 @@ window.app = function app( options, bootstrapped ){
'(/)workflows/list_published(/)' : 'show_workflows_published',
'(/)histories(/)(:action_id)' : 'show_histories',
'(/)datasets(/)list(/)' : 'show_datasets',
'(/)workflow/configure_menu(/)' : 'show_configure_menu',
'(/)workflow/import_workflow' : 'show_import_workflow',
'(/)custom_builds' : 'show_custom_builds',
'(/)datasets/edit': 'show_dataset_edit_attributes'
@@ -102,8 +100,7 @@ window.app = function app( options, bootstrapped ){
require_login: [
'show_user',
'show_user_form',
'show_workflows',
'show_configure_menu'
'show_workflows'
],
loginRequired: function() {
@@ -162,10 +159,6 @@ window.app = function app( options, bootstrapped ){
this.page.display( new Workflows.ImportWorkflowView() );
},
show_configure_menu : function(){
this.page.display( new WorkflowsConfigureMenu.View() );
},
show_custom_builds : function() {
var self = this;
var historyPanel = this.page.historyPanel.historyView;
@@ -65,14 +65,6 @@ define( [ 'mvc/form/form-view', 'mvc/ui/ui-misc' ], function( Form, Ui ) {
window.location.href = Galaxy.root + 'custom_builds';
}
},
'configure_menu': {
title : 'Configure workflow menu',
description : 'Configure your workflow items which appear in the Tool panel.',
icon : 'fa-cog',
onclick : function() {
window.location.href = Galaxy.root + 'workflow/configure_menu';
}
},
'logout': {
title : 'Sign out',
description : 'Click here to sign out of all sessions.',
@@ -127,7 +119,6 @@ define( [ 'mvc/form/form-view', 'mvc/ui/ui-misc' ], function( Form, Ui ) {
if( config.enable_openid && !config.use_remote_user ) {
self._addLink( 'openids' );
}
self._addLink( 'configure_menu' );
self._addLink( 'logout' );
self.$preferences.append( self._templateFooter( data ) );
self.$el.empty().append( self.$preferences );
@@ -1,153 +0,0 @@
/** Configure Workflow Menu View */
define( [], function() {
var View = Backbone.View.extend({
initialize: function( options ) {
this.setElement( '<div/>' );
this.render();
},
render: function() {
var self = this;
$.getJSON( Galaxy.root + 'api/workflows/menu/', function( response ) {
var workflows = response.workflows,
ids_in_menu = response.ids_in_menu,
$el_config_worflow = null;
// Add configure workflow header
self.$el.empty().append( self._templateConfigWorkflowHeader() );
$el_config_worflow = self.$el.find( '.configure-workflows' );
$el_config_worflow.append( self._templateActionButtons() );
if( workflows.length > 0 ) {
$el_config_worflow.append( self._templateConfigureWorkflow( self, workflows, ids_in_menu ) );
self.save_workflow_menu( self );
self.make_checked( self, ids_in_menu );
self.register_check_uncheck_all( self );
}
else {
$el_config_worflow.append( self._templateNoWorkflow() );
}
});
},
/** Register check and uncheck all callbacks*/
register_check_uncheck_all: function( self ) {
var $el_check_all = self.$el.find( '.check-all-wf' ),
$el_uncheck_all = self.$el.find( '.uncheck-all-wf' );
$el_check_all.click(function( e ) {
self.check_uncheck_all( self, true );
});
$el_uncheck_all.click(function( e ) {
self.check_uncheck_all( self, false );
});
},
/** Check or uncheck all workflows */
check_uncheck_all: function( self, checked ) {
$.each(self.$el.find( '.wf-config-item' ), function() {
var wf_checkbox = $( this )[0];
wf_checkbox.checked = checked;
});
},
/** Make the worflows as checked if present in the menu */
make_checked: function( self, ids_in_menu ) {
$.each(self.$el.find( '.wf-config-item' ), function() {
var wf_checkbox = $( this )[0];
_.each( ids_in_menu, function( id ) {
if ( parseInt( wf_checkbox.value ) === id ) {
wf_checkbox.checked = true;
}
});
});
},
/** Save the changes for workflow menu */
save_workflow_menu: function( self ) {
var $el_save_workflow_menu = self.$el.find( '.wf-save-menu' );
$el_save_workflow_menu.click( function( e ) {
var ids = [];
$.each(self.$el.find( '.wf-config-item' ), function() {
var wf_checkbox = $( this )[0];
if( wf_checkbox.checked || wf_checkbox.checked === 'true' ) {
ids.push( parseInt( wf_checkbox.value ) );
}
});
$.ajax({
type: 'PUT',
url: Galaxy.root + 'api/workflows/menu/',
data: JSON.stringify( { 'workflow_ids': ids } ),
contentType : 'application/json'
}).done( function( response ) {
window.location = Galaxy.root + 'user';
});
});
},
/** Template for actions buttons */
_templateActionButtons: function() {
return '<ul class="manage-table-actions">' +
'<li>' +
'<a class="fa fa-check-square-o wf-action check-all-wf" title="Select all workflows" href="#">' +
'</a>' +
'</li>' +
'<li>' +
'<a class="fa fa-square-o wf-action uncheck-all-wf" title="Unselect all workflows" href="#">' +
'</a>' +
'</li>' +
'</ul>';
},
/** Template for configure workflow table */
_templateConfigureWorkflow: function( self, workflows, ids_in_menu ) {
var tableHtml = "", trHtml = "";
tableHtml = tableHtml + '<table class="table colored"><thead>' +
'<tr class="header">' +
'<th class="wf-td">Name</th>' +
'<th class="wf-td">Owner</th>' +
'<th class="wf-td"># of Steps</th>' +
'<th class="wf-td">Show in menu</th>' +
'</tr></thead>';
_.each( workflows, function( wf ) {
trHtml = trHtml + '<tr>' +
'<td class="wf-td">' + _.escape( wf.name ) +'</td>' +
'<td>' + ( wf.owner === Galaxy.user.attributes.username ? "You" : wf.owner ) +'</td>' +
'<td class="wf-td">' + wf.number_of_steps + '</td>' +
'<td class="wf-td">' + self._templateInputCheckbox( self, wf, ids_in_menu ) + '</td>' +
'</tr>';
});
tableHtml = tableHtml + '<tbody class="workflow-config-menu">' + trHtml + '</tbody></table>';
tableHtml = tableHtml + '<a class="action-button wf-save-menu wf-action fa fa-floppy-o" href="#" title="Save">' +
'<span>Save</span>' +
'</a>' +
'<a class="action-button wf-back wf-action fa fa-arrow-left" href="'+ Galaxy.root +'user" title="Back to User Preferences">' +
'<span>Back to User Preferences</span>' +
'</a>';
return tableHtml;
},
/** Template for no workflow */
_templateNoWorkflow: function() {
return '<div class="wf-nodata"> You do not have any accessible workflows. </div>';
},
/** Template for checkboxes */
_templateInputCheckbox: function( self, wf ) {
return '<input type="checkbox" class="wf-config-item" name="workflow_ids" value="'+ wf.id +'" />';
},
/** Template for main config workflow menu */
_templateConfigWorkflowHeader: function() {
return '<div class="page-container">' +
'<div class="configure-workflows wf">' +
'<h2>Configure workflow menu</h2>' +
'</div>'+
'</div>';
}
});
return {
View : View
};
});
+49 -23
View File
@@ -1,19 +1,17 @@
/** Workflow view */
define( [ 'utils/utils' ], function( Utils ) {
define( [ 'utils/utils', 'mvc/ui/ui-misc' ], function( Utils, Ui ) {
/** Build messages after user action */
function build_messages( self ) {
var $el_message = self.$el.find( '.response-message' ),
status = Utils.getQueryString( 'status' ),
message = Utils.getQueryString( 'message' );
if( message && message !== null && message !== "" ) {
$el_message.addClass( status + 'message' );
$el_message.html( '<p>' + _.escape( message ) + '</p>' );
}
else {
$el_message.html("");
}
function build_messages() {
var $el_message = this.$( '.response-message' ),
response = {};
response = {
'status': Utils.getQueryString( 'status' ),
'message': _.escape( Utils.getQueryString( 'message' ) ),
'persistent': true,
'cls': Utils.getQueryString( 'status' ) + 'message'
};
$el_message.empty().html( new Ui.Message( response ).$el );
}
/** View of the main workflow list page */
@@ -32,8 +30,8 @@ define( [ 'utils/utils' ], function( Utils ) {
// Add workflow header
self.$el.empty().append( self._templateHeader() );
// Add user actions message if any
build_messages( self );
$el_workflow = self.$el.find( '.user-workflows' );
build_messages();
$el_workflow = self.$( '.user-workflows' );
// Add the actions buttons
$el_workflow.append( self._templateActionButtons() );
if( workflows.length > 0) {
@@ -41,10 +39,11 @@ define( [ 'utils/utils' ], function( Utils ) {
self.adjust_actiondropdown( $el_workflow );
// Register delete and run workflow events
_.each( workflows, function( wf ) {
self.confirm_delete( self, wf );
self.confirm_delete( wf );
});
self.register_show_tool_menu();
// Register search workflow event
self.search_workflow( self, self.$el.find( '.search-wf' ), self.$el.find( '.workflow-search tr' ), min_query_length );
self.search_workflow( self.$( '.search-wf' ), self.$( '.workflow-search tr' ), min_query_length );
}
else {
$el_workflow.append( self._templateNoWorkflow() );
@@ -52,10 +51,34 @@ define( [ 'utils/utils' ], function( Utils ) {
});
},
// Save the workflow as an item in Tool panel
register_show_tool_menu: function() {
var $el_checkboxes = this.$( '.show-in-tool-panel' );
$el_checkboxes.on( 'click', function( e ) {
var ids = [];
// Look for all the checked checkboxes
for( var item = 0; item < $el_checkboxes.length; item++ ) {
var checkbox = $el_checkboxes[ item ];
if( checkbox.checked ) {
ids.push( checkbox.value );
}
}
// Save all the checked workflows
$.ajax({
type: 'PUT',
url: Galaxy.root + 'api/workflows/menu/',
data: JSON.stringify( { 'workflow_ids': ids } ),
contentType : 'application/json'
}).done( function( response ) {
window.location = Galaxy.root + 'workflow';
});
});
},
/** Add confirm box before removing/unsharing workflow */
confirm_delete: function( self, workflow ) {
var $el_wf_link = self.$el.find( '.link-confirm-' + workflow.id ),
$el_shared_wf_link = self.$el.find( '.link-confirm-shared-' + workflow.id );
confirm_delete: function( workflow ) {
var $el_wf_link = this.$( '.link-confirm-' + workflow.id ),
$el_shared_wf_link = this.$( '.link-confirm-shared-' + workflow.id );
$el_wf_link.click( function() {
return confirm( "Are you sure you want to delete workflow '" + workflow.name + "'?" );
});
@@ -65,7 +88,7 @@ define( [ 'utils/utils' ], function( Utils ) {
},
/** Implement client side workflow search/filtering */
search_workflow: function( self, $el_searchinput, $el_tabletr, min_querylen ) {
search_workflow: function( $el_searchinput, $el_tabletr, min_querylen ) {
$el_searchinput.on( 'keyup', function () {
var query = $( this ).val();
// Filter when query is at least 3 characters
@@ -128,8 +151,10 @@ define( [ 'utils/utils' ], function( Utils ) {
'<th>Owner</th>' +
'<th># of Steps</th>' +
'<th>Published</th>' +
'<th>Show in tools panel</th>' +
'</tr></thead>';
_.each( workflows, function( wf ) {
var checkbox_html = '<input type="checkbox" class="show-in-tool-panel" '+ ( wf.show_in_tool_panel ? 'checked="' + wf.show_in_tool_panel + '"' : "" ) +' value="' + wf.id + '">';
trHtml = trHtml + '<tr>' +
'<td>' +
'<div class="dropdown">' +
@@ -142,6 +167,7 @@ define( [ 'utils/utils' ], function( Utils ) {
'<td>' + ( wf.owner === Galaxy.user.attributes.username ? "You" : wf.owner ) +'</td>' +
'<td>' + wf.number_of_steps + '</td>' +
'<td>' + ( wf.published ? "Yes" : "No" ) + '</td>' +
'<td>'+ checkbox_html +'</td>' +
'</tr>';
});
return tableHtml + '<tbody class="workflow-search">' + trHtml + '</tbody></table>';
@@ -192,12 +218,12 @@ define( [ 'utils/utils' ], function( Utils ) {
render: function() {
var self = this;
$.getJSON( Galaxy.root + 'workflow/upload_import_workflow', function( options ) {
self.$el.empty().append( self._mainTemplate( self, options ) );
self.$el.empty().append( self._mainTemplate( options ) );
});
},
/** Template for the import workflow page */
_mainTemplate: function( self, options ) {
_mainTemplate: function( options ) {
return "<div class='toolForm'>" +
"<div class='toolFormTitle'>Import Galaxy workflow</div>" +
"<div class='toolFormBody'>" +
+1 -1
View File
@@ -1812,6 +1812,6 @@ div.toolTitleNoSection
margin-left: 0.5%;
}
.other-options, .configure-workflows {
.other-options {
margin-bottom: 2%;
}
+30 -20
View File
@@ -54,7 +54,7 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
"""
GET /api/workflows
"""
return self.get_workflows_list( trans, False, kwd )
return self.get_workflows_list( trans, kwd )
@expose_api
def get_workflow_menu( self, trans, **kwd ):
@@ -66,7 +66,7 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
ids_in_menu = [ x.stored_workflow_id for x in user.stored_workflow_menu_entries ]
return {
'ids_in_menu': ids_in_menu,
'workflows': self.get_workflows_list( trans, True, kwd )
'workflows': self.get_workflows_list( trans, kwd )
}
@expose_api
@@ -82,6 +82,10 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
workflow_ids = []
elif type( workflow_ids ) != list:
workflow_ids = [ workflow_ids ]
workflow_ids_decoded = []
# Decode the encoded workflow ids
for ids in workflow_ids:
workflow_ids_decoded.append( trans.security.decode_id( ids ) )
sess = trans.sa_session
# This explicit remove seems like a hack, need to figure out
# how to make the association do it automatically.
@@ -91,20 +95,20 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
q = sess.query( model.StoredWorkflow )
# To ensure id list is unique
seen_workflow_ids = set()
for id in workflow_ids:
if id in seen_workflow_ids:
for wf_id in workflow_ids_decoded:
if wf_id in seen_workflow_ids:
continue
else:
seen_workflow_ids.add( id )
seen_workflow_ids.add( wf_id )
m = model.StoredWorkflowMenuEntry()
m.stored_workflow = q.get( id )
m.stored_workflow = q.get( wf_id )
user.stored_workflow_menu_entries.append( m )
sess.flush()
message = "Menu updated."
trans.set_message( message )
return { 'message': message, 'status': 'done' }
def get_workflows_list( self, trans, for_menu, kwd ):
def get_workflows_list( self, trans, kwd ):
"""
Displays a collection of workflows.
@@ -117,33 +121,39 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
missing_tools = util.string_as_bool( kwd.get( 'missing_tools', 'False' ) )
rval = []
filter1 = ( trans.app.model.StoredWorkflow.user == trans.user )
user = trans.get_user()
if show_published:
filter1 = or_( filter1, ( trans.app.model.StoredWorkflow.published == true() ) )
for wf in trans.sa_session.query( trans.app.model.StoredWorkflow ).filter(
filter1, trans.app.model.StoredWorkflow.table.c.deleted == false() ).order_by(
desc( trans.app.model.StoredWorkflow.table.c.update_time ) ).all():
if for_menu:
item = wf.to_dict()
else:
item = wf.to_dict( value_mapper={ 'id': trans.security.encode_id } )
encoded_id = trans.security.encode_id(wf.id)
item['url'] = url_for('workflow', id=encoded_id)
item = wf.to_dict( value_mapper={ 'id': trans.security.encode_id } )
encoded_id = trans.security.encode_id(wf.id)
item['url'] = url_for('workflow', id=encoded_id)
item['owner'] = wf.user.username
item['number_of_steps'] = len( wf.latest_workflow.steps )
item['show_in_tool_panel'] = False
for x in user.stored_workflow_menu_entries:
if x.stored_workflow_id == wf.id:
item['show_in_tool_panel'] = True
break
rval.append(item)
for wf_sa in trans.sa_session.query( trans.app.model.StoredWorkflowUserShareAssociation ).filter_by(
user=trans.user ).join( 'stored_workflow' ).filter(
trans.app.model.StoredWorkflow.deleted == false() ).order_by(
desc( trans.app.model.StoredWorkflow.update_time ) ).all():
if for_menu:
item = wf_sa.stored_workflow.to_dict()
else:
item = wf_sa.stored_workflow.to_dict( value_mapper={ 'id': trans.security.encode_id } )
encoded_id = trans.security.encode_id(wf_sa.stored_workflow.id)
item['url'] = url_for( 'workflow', id=encoded_id )
item['slug'] = wf_sa.stored_workflow.slug
item = wf_sa.stored_workflow.to_dict( value_mapper={ 'id': trans.security.encode_id } )
encoded_id = trans.security.encode_id(wf_sa.stored_workflow.id)
item['url'] = url_for( 'workflow', id=encoded_id )
item['slug'] = wf_sa.stored_workflow.slug
item['owner'] = wf_sa.stored_workflow.user.username
item['number_of_steps'] = len( wf_sa.stored_workflow.latest_workflow.steps )
item['show_in_tool_panel'] = False
for x in user.stored_workflow_menu_entries:
if x.stored_workflow_id == wf_sa.id:
item['show_in_tool_panel'] = True
break
rval.append(item)
if missing_tools:
workflows_missing_tools = []
-1
View File
@@ -120,7 +120,6 @@ def paste_app_factory( global_conf, **kwargs ):
webapp.add_client_route( '/datasets/edit' )
webapp.add_client_route( '/workflow/run' )
webapp.add_client_route( '/workflow/import_workflow' )
webapp.add_client_route( '/workflow/configure_menu' )
webapp.add_client_route( '/custom_builds' )
# ==== Done
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"user-preferences.js","sources":["../../../src/mvc/user/user-preferences.js"],"names":["define","Form","Ui","Model","Backbone","extend","initialize","options","user_id","Galaxy","user","id","this","set","information","title","description","url","icon","password","submit_title","communication","permissions","api_key","submit_icon","toolbox_filters","openids","onclick","window","location","href","root","custom_builds","configure_menu","logout","modal","show","body","buttons","Cancel","hide","Sign out","View","model","message","Message","setElement","render","self","config","$","getJSON","data","$preferences","addClass","append","$el","_","escape","email","$table","use_remote_user","_addLink","enable_communication_server","has_user_tool_filters","enable_openid","_templateFooter","empty","action","get","$row","_templateLink","$a","find","on","attr","nice_total_disk_usage","enable_quotas","quota","Forms","page","form_id","ajax","type","done","response","form","inputs","operations","submit","ButtonIcon","tooltip","submit_tooltip","_submit","fail","status","persistent","JSON","stringify","create","contentType","matchModel","input","input_id","field_list","value","update","responseJSON","err_msg"],"mappings":"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"}
{"version":3,"file":"user-preferences.js","sources":["../../../src/mvc/user/user-preferences.js"],"names":["define","Form","Ui","Model","Backbone","extend","initialize","options","user_id","Galaxy","user","id","this","set","information","title","description","url","icon","password","submit_title","communication","permissions","api_key","submit_icon","toolbox_filters","openids","onclick","window","location","href","root","custom_builds","logout","modal","show","body","buttons","Cancel","hide","Sign out","View","model","message","Message","setElement","render","self","config","$","getJSON","data","$preferences","addClass","append","$el","_","escape","email","$table","use_remote_user","_addLink","enable_communication_server","has_user_tool_filters","enable_openid","_templateFooter","empty","action","get","$row","_templateLink","$a","find","on","attr","nice_total_disk_usage","enable_quotas","quota","Forms","page","form_id","ajax","type","done","response","form","inputs","operations","submit","ButtonIcon","tooltip","submit_tooltip","_submit","fail","status","persistent","JSON","stringify","create","contentType","matchModel","input","input_id","field_list","value","update","responseJSON","err_msg"],"mappings":"AACAA,QAAU,qBAAsB,kBAAoB,SAAUC,EAAMC,GAGhE,GAAIC,GAAQC,SAASD,MAAME,QACvBC,WAAY,SAAUC,GAClBA,EAAUA,MACVA,EAAQC,QAAUD,EAAQC,SAAWC,OAAOC,KAAKC,GACjDC,KAAKC,KACDL,QAAsBD,EAAQC,QAC9BM,aACIC,MAAkB,qBAClBC,YAAkB,4EAClBC,IAAkB,aAAeV,EAAQC,QAAU,sBACnDU,KAAkB,WAEtBC,UACIJ,MAAkB,kBAClBC,YAAkB,+CAClBE,KAAkB,gBAClBD,IAAkB,aAAeV,EAAQC,QAAU,mBACnDY,aAAkB,iBAEtBC,eACIN,MAAkB,gCAClBC,YAAkB,wEAClBC,IAAkB,aAAeV,EAAQC,QAAU,wBACnDU,KAAkB,iBAEtBI,aACIP,MAAkB,4CAClBC,YAAkB,sJAClBC,IAAkB,aAAeV,EAAQC,QAAU,sBACnDU,KAAkB,WAClBE,aAAkB,oBAEtBG,SACIR,MAAkB,iBAClBC,YAAkB,mDAClBC,IAAkB,aAAeV,EAAQC,QAAU,kBACnDU,KAAkB,SAClBE,aAAkB,mBAClBI,YAAkB,YAEtBC,iBACIV,MAAkB,yBAClBC,YAAkB,kEAClBC,IAAkB,aAAeV,EAAQC,QAAU,0BACnDU,KAAkB,YAClBE,aAAkB,gBAEtBM,SACIX,MAAkB,iBAClBC,YAAkB,uCAClBE,KAAkB,YAClBS,QAAkB,WACdC,OAAOC,SAASC,KAAOrB,OAAOsB,KAAO,qDAG7CC,eACIjB,MAAkB,uBAClBC,YAAkB,sDAClBE,KAAkB,WAClBS,QAAkB,WACdC,OAAOC,SAASC,KAAOrB,OAAOsB,KAAO,kBAG7CE,QACIlB,MAAkB,WAClBC,YAAkB,0CAClBE,KAAkB,cAClBS,QAAkB,WACdlB,OAAOyB,MAAMC,MACTpB,MAAU,WACVqB,KAAU,+DACVC,SACIC,OAAc,WAAa7B,OAAOyB,MAAMK,QACxCC,WAAc,WAAaZ,OAAOC,SAASC,KAAOrB,OAAOsB,KAAO,yBAUxFU,EAAOrC,SAASqC,KAAKpC,QAErBC,WAAY,WACRM,KAAK8B,MAAQ,GAAIvC,GACjBS,KAAK+B,QAAU,GAAIzC,GAAG0C,QACtBhC,KAAKiC,WAAY,UACjBjC,KAAKkC,UAGTA,OAAQ,WACJ,GAAIC,GAAOnC,KACPoC,EAASvC,OAAOuC,MACpBC,GAAEC,QAASzC,OAAOsB,KAAO,aAAetB,OAAOC,KAAKC,GAAI,SAAUwC,GAC9DJ,EAAKK,aAAeH,EAAG,UAAWI,SAAU,YACVC,OAAQP,EAAKJ,QAAQY,KACrBD,OAAQL,EAAG,SAAUK,OAAQ,qBAC7BA,OAAQL,EAAG,QAASK,OAAQ,gCAAmCE,EAAEC,OAAQN,EAAKO,OAAU,eACxFJ,OAAQP,EAAKY,OAASV,EAAG,YAAaI,SAAU,mBAC7EL,EAAOY,kBACRb,EAAKc,SAAU,eACfd,EAAKc,SAAU,aAEfb,EAAOc,6BACPf,EAAKc,SAAU,iBAEnBd,EAAKc,SAAU,iBACfd,EAAKc,SAAU,eACfd,EAAKc,SAAU,WACXb,EAAOe,uBACPhB,EAAKc,SAAU,mBAEfb,EAAOgB,gBAAkBhB,EAAOY,iBAChCb,EAAKc,SAAU,WAEnBd,EAAKc,SAAU,UACfd,EAAKK,aAAaE,OAAQP,EAAKkB,gBAAiBd,IAChDJ,EAAKQ,IAAIW,QAAQZ,OAAQP,EAAKK,iBAItCS,SAAU,SAAUM,GAChB,GAAI5D,GAAUK,KAAK8B,MAAM0B,IAAKD,GAC1BE,EAASpB,EAAGrC,KAAK0D,cAAe/D,IAChCgE,EAAKF,EAAKG,KAAM,IACfjE,GAAQoB,QACT4C,EAAGE,GAAI,QAAS,WAAalE,EAAQoB,YAErC4C,EAAGG,KAAM,OAAQjE,OAAOsB,KAAO,QAAUoC,GAE7CvD,KAAK+C,OAAOL,OAAQe,IAGxBC,cAAe,SAAU/D,GACrB,MAAQ,wCAE0CA,EAAQW,KAAO,mEAGSX,EAAQQ,MAAQ,iCAC3CR,EAAQS,YAAc,oBAKzEiD,gBAAiB,SAAU1D,GACvB,MAAQ,oDAC+BA,EAAQoE,sBAAwB,qDACzDlE,OAAOuC,OAAO4B,cAAgB,+BAAiCrE,EAAQsE,MAAQ,cAAgB,IACjG,2MAMhBC,EAAQ1E,SAASqC,KAAKpC,QAEtBC,WAAY,SAAUC,GAClBK,KAAK8B,MAAQ,GAAIvC,GAAOI,GACxBK,KAAKmE,KAAOnE,KAAK8B,MAAM0B,IAAK7D,EAAQyE,SACpCpE,KAAKiC,WAAY,UACjBjC,KAAKkC,UAGTA,OAAQ,WACJ,GAAIC,GAAOnC,IACXqC,GAAEgC,MACEhE,IAAUR,OAAOsB,KAAOnB,KAAKmE,KAAK9D,IAClCiE,KAAU,QACXC,KAAM,SAAUC,GACf,GAAI7E,GAAU0C,EAAE5C,UAAY0C,EAAKgC,KAAMK,GACnCC,EAAO,GAAIpF,IACXc,MAASR,EAAQQ,MACjBG,KAASX,EAAQW,KACjBoE,OAAS/E,EAAQ+E,OACjBC,YACIC,OAAU,GAAItF,GAAGuF,YACbC,QAAWnF,EAAQoF,eACnB5E,MAAWR,EAAQa,cAAgB,gBACnCF,KAAWX,EAAQiB,aAAe,UAClCG,QAAW,WAAaoB,EAAK6C,QAASP,EAAM9E,QAIxDwC,GAAKQ,IAAIW,QAAQZ,OAAQ+B,EAAK9B,OAC/BsC,KAAM,WACL9C,EAAKQ,IAAIW,QAAQZ,OAAQ,GAAIpD,GAAG0C,SAC5BD,QAAc,2BAA6BI,EAAKgC,KAAK9D,IAAM,IAC3D6E,OAAc,SACdC,YAAc,IACfxC,QAIXqC,QAAS,SAAUP,EAAM9E,GAErB0C,EAAEgC,MACEhE,IAAcR,OAAOsB,KAAOxB,EAAQU,IACpCkC,KAAc6C,KAAKC,UAAWZ,EAAKlC,KAAK+C,UACxChB,KAAc,MACdiB,YAAc,qBACfhB,KAAM,SAAUC,GACfC,EAAKlC,KAAKiD,WAAYhB,EAAU,SAAWiB,EAAOC,GAC9CjB,EAAKkB,WAAYD,GAAWE,MAAOH,EAAMG,SAE7CnB,EAAK1C,QAAQ8D,QAAU9D,QAASyC,EAASzC,QAASmD,OAAQ,cAC3DD,KAAM,SAAUT,GACfC,EAAK1C,QAAQ8D,QAAU9D,QAASyC,EAASsB,aAAaC,QAASb,OAAQ,eAKnF,QACIrD,KAAQA,EACRqC,MAAQA"}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"workflow.js","sources":["../../../src/mvc/workflow/workflow.js"],"names":["define","Utils","build_messages","self","$el_message","$el","find","status","getQueryString","message","addClass","html","_","escape","View","Backbone","extend","initialize","this","setElement","render","min_query_length","$","getJSON","Galaxy","root","workflows","$el_workflow","empty","append","_templateHeader","_templateActionButtons","length","_templateWorkflowTable","adjust_actiondropdown","each","wf","confirm_delete","search_workflow","_templateNoWorkflow","workflow","$el_wf_link","id","$el_shared_wf_link","click","confirm","name","$el_searchinput","$el_tabletr","min_querylen","on","query","val","regular_expression","RegExp","hide","filter","test","text","show","css","tableHtml","trHtml","_templateActions","owner","user","attributes","username","number_of_steps","published","slug","ImportWorkflowView","options","_mainTemplate","url","myexperiment_target_url"],"mappings":"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"}
{"version":3,"file":"workflow.js","sources":["../../../src/mvc/workflow/workflow.js"],"names":["define","Utils","Ui","build_messages","$el_message","this","$","response","status","getQueryString","message","_","escape","persistent","cls","empty","html","Message","$el","View","Backbone","extend","initialize","setElement","render","self","min_query_length","getJSON","Galaxy","root","workflows","$el_workflow","append","_templateHeader","_templateActionButtons","length","_templateWorkflowTable","adjust_actiondropdown","each","wf","confirm_delete","register_show_tool_menu","search_workflow","_templateNoWorkflow","$el_checkboxes","on","ids","item","checkbox","checked","push","value","ajax","type","url","data","JSON","stringify","workflow_ids","contentType","done","window","location","workflow","$el_wf_link","id","$el_shared_wf_link","click","confirm","name","$el_searchinput","$el_tabletr","min_querylen","query","val","regular_expression","RegExp","hide","filter","test","text","show","css","tableHtml","trHtml","checkbox_html","show_in_tool_panel","_templateActions","owner","user","attributes","username","number_of_steps","published","slug","ImportWorkflowView","options","_mainTemplate","myexperiment_target_url"],"mappings":"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"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long