Merge branch 'dev' into refactor_panels_000

This commit is contained in:
guerler
2017-05-11 14:19:37 -04:00
36 changed files with 1103 additions and 330 deletions
+9 -3
View File
@@ -6,9 +6,10 @@ var jQuery = require( 'jquery' ),
HistoryPanel = require( './history-panel' ),
Page = require( 'layout/page' ),
ToolForm = require( 'mvc/tool/tool-form' ),
UserPreferences = require( 'mvc/user/user-preferences' );
CustomBuilds = require( 'mvc/user/user-custom-builds' );
Tours = require( 'mvc/tours' );
UserPreferences = require( 'mvc/user/user-preferences' ),
CustomBuilds = require( 'mvc/user/user-custom-builds' ),
Tours = require( 'mvc/tours' ),
Workflows = require( 'mvc/workflow/workflow' );
/** define the 'Analyze Data'/analysis/main/home page for Galaxy
* * has a masthead
@@ -77,6 +78,7 @@ window.app = function app( options, bootstrapped ){
'(/)tours(/)(:tour_id)' : 'show_tours',
'(/)user(/)' : 'show_user',
'(/)user(/)(:form_id)' : 'show_user_form',
'(/)workflow(/)' : 'show_workflows',
'(/)custom_builds' : 'show_custom_builds'
},
@@ -109,6 +111,10 @@ window.app = function app( options, bootstrapped ){
this.page.display( new UserPreferences.Forms( { form_id: form_id, user_id: Galaxy.params.id } ) );
},
show_workflows : function(){
centerPanel.display( new Workflows.View() );
},
show_custom_builds : function() {
var self = this;
var historyPanel = this.page.historyPanel.historyView;
+13 -2
View File
@@ -52,9 +52,10 @@ var ToolPanel = Backbone.View.extend({
this.tool_panel_view.render();
}
// build the dom for the workflow portion of the tool menu
this.$( '#internal-workflows' ).append( self._templateTool({
// add internal workflow list
self.$( '#internal-workflows' ).append( self._templateAllWorkflow({
title : _l( 'All workflows' ),
href : 'workflow/list_for_run'
href : 'workflow'
}));
_.each( this.stored_workflow_menu_entries, function( menu_entry ){
self.$( '#internal-workflows' ).append( self._templateTool({
@@ -73,6 +74,16 @@ var ToolPanel = Backbone.View.extend({
].join('');
},
/** build a link to 'All Workflows' */
_templateAllWorkflow: function( tool ) {
return [
'<div class="toolTitle">',
// global
'<a href="', Galaxy.root, tool.href, '">', tool.title, '</a>',
'</div>'
].join('');
},
/** override to include inital menu dom and workflow section */
_template : function() {
return [
+15 -11
View File
@@ -25,7 +25,7 @@ var Collection = Backbone.Collection.extend({
id : 'analysis',
title : _l('Analyze Data'),
url : '',
tooltip : 'Analysis home view'
tooltip : _l('Analysis home view')
});
//
@@ -34,9 +34,13 @@ var Collection = Backbone.Collection.extend({
this.add({
id : 'workflow',
title : _l('Workflow'),
tooltip : _l('Chain tools into workflows'),
disabled : !Galaxy.user.id,
url : 'workflow',
tooltip : 'Chain tools into workflows',
disabled : !Galaxy.user.id
target : 'galaxy_main',
onclick : function() {
window.location = Galaxy.root + 'workflow';
}
});
//
@@ -46,7 +50,7 @@ var Collection = Backbone.Collection.extend({
id : 'shared',
title : _l('Shared Data'),
url : 'library/index',
tooltip : 'Access published resources',
tooltip : _l('Access published resources'),
menu : [{
title : _l('Data Libraries'),
url : 'library/list'
@@ -90,7 +94,7 @@ var Collection = Backbone.Collection.extend({
id : 'visualization',
title : _l('Visualization'),
url : 'visualization/list',
tooltip : 'Visualize datasets',
tooltip : _l('Visualize datasets'),
disabled : !Galaxy.user.id,
menu : [{
title : _l('New Track Browser'),
@@ -138,7 +142,7 @@ var Collection = Backbone.Collection.extend({
id : 'admin',
title : _l('Admin'),
url : 'admin',
tooltip : 'Administer this Galaxy',
tooltip : _l('Administer this Galaxy'),
cls : 'admin-only'
});
@@ -148,7 +152,7 @@ var Collection = Backbone.Collection.extend({
var helpTab = {
id : 'help',
title : _l('Help'),
tooltip : 'Support, contact, and community',
tooltip : _l('Support, contact, and community'),
menu : [{
title : _l('Support'),
url : options.support_url,
@@ -211,7 +215,7 @@ var Collection = Backbone.Collection.extend({
id : 'user',
title : _l('Login or Register'),
cls : 'loggedout-only',
tooltip : 'Account registration or login',
tooltip : _l('Account registration or login'),
menu : [{
title : _l('Login'),
url : 'user/login',
@@ -231,7 +235,7 @@ var Collection = Backbone.Collection.extend({
id : 'user',
title : _l('User'),
cls : 'loggedin-only',
tooltip : 'Account and saved data',
tooltip : _l('Account and saved data'),
menu : [{
title : _l('Logged in as') + ' ' + Galaxy.user.get( 'email' )
},{
@@ -308,7 +312,7 @@ var Tab = Backbone.View.extend({
this.$note.html( this.model.get( 'note' ) || '' )
.removeClass().addClass( 'dropdown-note' )
.addClass( this.model.get( 'note_cls' ) )
.css( { 'display' : this.model.get( 'show_note' ) && 'block' || 'none' } )
.css( { 'display' : this.model.get( 'show_note' ) && 'block' || 'none' } );
this.$toggle.html( this.model.get( 'title' ) || '' )
.removeClass().addClass( 'dropdown-toggle' )
.addClass( this.model.get( 'cls' ) )
@@ -387,7 +391,7 @@ var Tab = Backbone.View.extend({
}
} else {
function buildLink( label, url ) {
return $( '<div/>' ).append( $( '<a/>' ).attr( 'href', Galaxy.root + url ).html( label ) ).html()
return $( '<div/>' ).append( $( '<a/>' ).attr( 'href', Galaxy.root + url ).html( label ) ).html();
}
this.$toggle.popover && this.$toggle.popover( 'destroy' );
this.$toggle.popover({
@@ -0,0 +1,198 @@
/** Workflow view */
define( [], function() {
/** View of the main workflow list page */
var View = Backbone.View.extend({
initialize: function() {
this.setElement( '<div/>' );
this.render();
},
render: function() {
var self = this,
min_query_length = 3;
$.getJSON( Galaxy.root + 'api/workflows/', function( workflows ) {
var $el_workflow = null;
// Add workflow header
self.$el.empty().append( self._templateHeader() );
// Add user actions message if any
self.build_messages( self );
$el_workflow = self.$el.find( '.user-workflows' );
// Add the actions buttons
$el_workflow.append( self._templateActionButtons() );
if( workflows.length > 0) {
$el_workflow.append( self._templateWorkflowTable( self, workflows) );
self.adjust_actiondropdown( $el_workflow );
// Register delete and run workflow events
_.each( workflows, function( wf ) {
self.confirm_delete( self, wf );
});
// Register search workflow event
self.search_workflow( self, self.$el.find( '.search-wf' ), self.$el.find( '.workflow-search tr' ), min_query_length );
}
else {
$el_workflow.append( self._templateNoWorkflow() );
}
});
},
/** Build messages after user action */
build_messages: function( self ) {
var $el_message = self.$el.find( '.response-message' ),
status = self.get_querystring( 'status' ),
message = self.get_querystring( 'message' );
if( message && message !== null && message !== "" ) {
$el_message.addClass( status + 'message' );
$el_message.html( '<p>' + message + '</p>' );
}
else {
$el_message.html("");
}
},
/** 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 );
$el_wf_link.click( function() {
return confirm( "Are you sure you want to delete workflow '" + workflow.name + "'?" );
});
$el_shared_wf_link.click( function() {
return confirm( "Are you sure you want to remove the shared workflow '" + workflow.name + "'?" );
});
},
/** Implement client side workflow search/filtering */
search_workflow: function( self, $el_searchinput, $el_tabletr, min_querylen ) {
$el_searchinput.on( 'keyup', function () {
var query = $( this ).val();
// Filter when query is at least 3 characters
// otherwise show all rows
if( query.length >= min_querylen ) {
// Ignore the query's case using 'i'
var regular_expression = new RegExp( query, 'i' );
$el_tabletr.hide();
$el_tabletr.filter(function () {
// Apply regular expression on each row's text
// and show when there is a match
return regular_expression.test( $( this ).text() );
}).show();
}
else {
$el_tabletr.show();
}
});
},
/** Get querystrings from url */
get_querystring: function( key ) {
return decodeURIComponent( window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent( key ).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1") );
},
/** Ajust the position of dropdown with respect to table */
adjust_actiondropdown: function( $el ) {
$el.on( 'show.bs.dropdown', function () {
$el.css( "overflow", "inherit" );
});
$el.on( 'hide.bs.dropdown', function () {
$el.css( "overflow", "auto" );
});
},
/** Template for no workflow */
_templateNoWorkflow: function() {
return '<div class="wf-nodata"> You have no workflows. </div>';
},
/** Template for actions buttons */
_templateActionButtons: function() {
return '<ul class="manage-table-actions">' +
'<li>' +
'<input class="search-wf form-control" type="text" autocomplete="off" placeholder="search for workflow...">' +
'</li>' +
'<li>' +
'<a class="action-button fa fa-plus wf-action" id="new-workflow" title="Create new workflow" href="'+ Galaxy.root +'workflow/create">' +
'</a>' +
'</li>' +
'<li>' +
'<a class="action-button fa fa-upload wf-action" id="import-workflow" title="Upload or import workflow" href="'+ Galaxy.root +'workflow/import_workflow">' +
'</a>' +
'</li>' +
'</ul>';
},
/** Template for workflow table */
_templateWorkflowTable: function( self, workflows ) {
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">Published</th>' +
'</tr></thead>';
_.each( workflows, function( wf ) {
trHtml = trHtml + '<tr>' +
'<td class="wf-td wf-dpd">' +
'<div class="dropdown">' +
'<button class="menubutton" type="button" data-toggle="dropdown">' +
_.escape( wf.name ) + '<span class="caret"></span>' +
'</button>' +
self._templateActions( wf ) +
'</div>' +
'</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">' + ( wf.published ? "Yes" : "No" ) + '</td>' +
'</tr>';
});
return tableHtml + '<tbody class="workflow-search">' + trHtml + '</tbody></table>';
},
/** Template for user actions for workflows */
_templateActions: function( workflow ) {
if( workflow.owner === Galaxy.user.attributes.username ) {
return '<ul class="dropdown-menu action-dpd">' +
'<li><a href="'+ Galaxy.root +'workflow/editor?id='+ workflow.id +'">Edit</a></li>' +
'<li><a href="'+ Galaxy.root +'workflow/run?id='+ workflow.id +'" target="galaxy_main">Run</a></li>' +
'<li><a href="'+ Galaxy.root +'workflow/sharing?id='+ workflow.id +'">Share or Download</a></li>' +
'<li><a href="'+ Galaxy.root +'workflow/copy?id='+ workflow.id +'">Copy</a></li>' +
'<li><a href="'+ Galaxy.root +'workflow/rename?id='+ workflow.id +'">Rename</a></li>' +
'<li><a href="'+ Galaxy.root +'workflow/display_by_id?id='+ workflow.id +'">View</a></li>' +
'<li><a class="link-confirm-'+ workflow.id +'" href="'+ Galaxy.root +'workflow/delete?id='+ workflow.id +'">Delete</a></li>' +
'</ul>';
}
else {
return '<ul class="dropdown-menu action-dpd">' +
'<li><a href="'+ Galaxy.root +'workflow/display_by_username_and_slug?username='+ workflow.owner +'&slug='+ workflow.slug +'">View</a></li>' +
'<li><a href="'+ Galaxy.root +'workflow/run?id='+ workflow.id +'" target="galaxy_main">Run</a></li>' +
'<li><a href="'+ Galaxy.root +'workflow/copy?id='+ workflow.id +'">Copy</a></li>' +
'<li><a class="link-confirm-shared-'+ workflow.id +'" href="'+ Galaxy.root +'workflow/sharing?unshare_me=True&id='+ workflow.id +'">Remove</a></li>' +
'</ul>';
}
},
/** Main template */
_templateHeader: function() {
return '<div class="page-container">' +
'<div class="user-workflows wf">' +
'<div class="response-message"></div>' +
'<h2>Your workflows</h2>' +
'</div>'+
'<div class="other-options wf">' +
'<h2>Other options</h2>' +
'<a class="action-button fa fa-cog wf-action" href="'+ Galaxy.root +'workflow/configure_menu" title="Configure your workflow menu">' +
'<span>Configure your workflow menu</span>' +
'</a>' +
'</div>' +
'</div>';
}
});
return {
View : View
};
});
+327
View File
@@ -0,0 +1,327 @@
/** en/main localization hash - for use with requirejs' i18n plugin */
define({
// ----------------------------------------------------------------------------- masthead
"Analyze Data":
"Daten analysieren",
"Workflow":
"Arbeitsablauf",
"Shared Data":
"Gemeinsame Daten",
"Data Libraries":
"Datenbibliotheken",
"Histories":
"Geschichten",
"Workflows":
"Workflows",
"Visualizations":
"Visualisierungen",
"Pages":
"Seiten",
"Visualization":
"Visualisierung",
"New Track Browser":
"Neuer Track Browser",
"Saved Visualizations":
"Gespeicherte Visualisierungen",
"Interactive Environments":
"Interaktive Umgebungen",
"Admin":
"Administrator",
"Help":
"Hilfe",
"Support":
"Unterstützung",
"Search":
"Suche",
"Mailing Lists":
"Mailinglisten",
"Videos":
"Videos",
"Wiki":
"Wiki",
"How to Cite Galaxy":
"Wie man Galaxie zitiert",
"Interactive Tours":
"Interactive Tours",
"User":
"Benutzer",
"Login":
"Anmeldung",
"Register":
"Neu registrieren",
"Login or Register":
"Einloggen oder Registrieren",
"Logged in as":
"Angemeldet als",
"Preferences":
"Präferenzen",
"Custom Builds":
"Custom Builds",
"Logout":
"Ausloggen",
"Saved Histories":
"Gespeicherte Geschichten",
"Saved Datasets":
"Gespeicherte Datasets",
"Saved Pages":
"Gespeicherte Seiten",
//Tooltip
"Account and saved data":
"Konto und gespeicherte Daten",
"Account registration or login":
"Konto Registrierung oder Login",
"Support, contact, and community":
"Unterstützung, Kontakt und Community",
"Administer this Galaxy":
"Verwalte diese Galaxie",
"Visualize datasets":
"Visualisieren von Datensätzen",
"Access published resources":
"Zugriff auf veröffentlichte Ressourcen",
"Chain tools into workflows":
"Kettenwerkzeuge in Workflows",
"Analysis home view":
"Analyse home view",
// ---------------------------------------------------------------------------- histories
// ---- history/options-menu
"History Lists":
"History Lists",
// Saved histories is defined above.
// "Saved Histories":
// false,
"Histories Shared with Me":
"Geschichten mit mir geteilt",
"Current History":
"Aktuelle Geschichte",
"Create New":
"Erstelle neu",
"Copy History":
"Geschichte kopieren",
"Share or Publish":
"Teilen oder veröffentlichen",
"Show Structure":
"Struktur anzeigen",
"Extract Workflow":
"Workflow extrahieren",
// Delete is defined elsewhere, but is also in this menu.
// "Delete":
// false,
"Delete Permanently":
"Dauerhaft löschen",
"Dataset Actions":
"Datensatzaktionen",
"Copy Datasets":
"Datensätze kopieren",
"Dataset Security":
"Datensatz Sicherheit",
"Resume Paused Jobs":
"Fortsetzen pausierte Jobs",
"Collapse Expanded Datasets":
"Collapse Expanded Datasets",
"Unhide Hidden Datasets":
"Hidden Datasets verstecken",
"Delete Hidden Datasets":
"Hidden Datasets löschen",
"Purge Deleted Datasets":
"Gelöschte Datasets löschen",
"Downloads":
"Downloads",
"Export Tool Citations":
"Export Tool Zitate",
"Export History to File":
"Export History to File",
"Other Actions":
"Andere Aktionen",
"Import from File":
"Import aus Datei",
"Webhooks":
"Webhooks",
// ---- history-model
// ---- history-view
"This history is empty":
"Diese Geschichte ist leer",
"No matching datasets found":
"Keine passenden Datensätze gefunden",
"An error occurred while getting updates from the server":
"Ein Fehler ist aufgetreten beim Aktualisieren vom Server",
"Please contact a Galaxy administrator if the problem persists":
"Bitte wenden Sie sich an einen Galaxy-Administrator, wenn das Problem weiterhin besteht",
//TODO:
//"An error was encountered while <% where %>" :
//false,
"search datasets":
"Suchdatensätze",
"You are currently viewing a deleted history!":
"Du siehst derzeit einen gelöschten Verlauf!",
"You are over your disk quota":
"Du bist über dein Festplatten-Kontingent",
"Tool execution is on hold until your disk usage drops below your allocated quota":
"Tool-Ausführung ist in der Warteschleife, bis Ihre Datenträgerverwendung unter Ihrem zugeteilten Kontingent fällt",
"All":
"Alle",
"None":
"Keiner",
"For all selected":
"Für alle ausgewählt",
// ---- history-view-edit
"Edit history tags":
"Geschichte bearbeiten",
"Edit history Annotation":
"Historie bearbeiten",
"Click to rename history":
"Klicken Sie hier, um den Verlauf umzubenennen",
// multi operations
"Operations on multiple datasets":
"Operationen auf mehreren Datensätzen",
"Hide datasets":
"Datensätze ausblenden",
"Unhide datasets":
"Datasets einblenden",
"Delete datasets":
"Datensätze löschen",
"Undelete datasets":
"Undelete-Datasets",
"Permanently delete datasets":
"Datensätze dauerhaft löschen",
"This will permanently remove the data in your datasets. Are you sure?":
"Das wird endgültig die Daten in deinen Datasets entfernen. Bist du sicher?",
// ---- history-view-annotated
"Dataset":
"Dataset",
"Annotation":
"Annotation",
// ---- history-view-edit-current
"This history is empty. Click 'Get Data' on the left tool menu to start":
"Diese Geschichte ist leer. Klicken Sie auf 'Get Data' im linken Tool-Menü, um",
"You must be logged in to create histories":
"Du musst eingeloggt sein, um Geschichten zu schaffen",
//TODO:
//"You can <% loadYourOwn %> or <% externalSource %>" :
//false,
//"load your own data" :
//false,
//"get data from an external source" :
//false,
// these aren't in zh/ginga.po and the template doesn't localize
//"Include Deleted Datasets" :
//false,
//"Include Hidden Datasets" :
//false,
// ---------------------------------------------------------------------------- datasets
// ---- hda-model
"Unable to purge dataset":
"Dataset kann nicht gelöscht werden",
// ---- hda-base
// display button
"Cannot display datasets removed from disk":
"Datasets können nicht von der Festplatte entfernt werden",
"This dataset must finish uploading before it can be viewed":
"Dieser Datensatz muss das Hochladen beenden, bevor es angezeigt werden kann",
"This dataset is not yet viewable":
"Dieser Datensatz ist noch nicht sichtbar",
"View data":
"Daten anzeigen",
// download button
"Download":
"Herunterladen",
"Download dataset":
"Dataset herunterladen",
"Additional files":
"Zusätzliche Dateien",
// info/show_params
"View details":
"Details anzeigen",
// dataset states
// state: new
"This is a new dataset and not all of its data are available yet":
"Dies ist ein neuer Datensatz und nicht alle seine Daten sind noch verfügbar",
// state: noPermission
"You do not have permission to view this dataset":
"Sie haben keine Berechtigung, diesen Datensatz anzuzeigen",
// state: discarded
"The job creating this dataset was cancelled before completion":
"Der Job, der diesen Datensatz erstellt hat, wurde vor der Fertigstellung abgebrochen",
// state: queued
"This job is waiting to run":
"Dieser Job wartet darauf, zu rennen",
// state: upload
"This dataset is currently uploading":
"Dieser Datensatz lädt derzeit",
// state: setting_metadata
"Metadata is being auto-detected":
"Metadaten werden automatisch erkannt",
// state: running
"This job is currently running":
"Dieser Job läuft derzeit",
// state: paused
"This job is paused. Use the \"Resume Paused Jobs\" in the history menu to resume":
"Dieser Job wird pausiert. Verwenden Sie die \"Resume Paused Jobs \" im Verlaufsmenü, um",
// state: error
"An error occurred with this dataset":
"Ein Fehler ist mit diesem Datensatz aufgetreten",
// state: empty
"No data":
"Keine Daten",
// state: failed_metadata
"An error occurred setting the metadata for this dataset":
"Ein Fehler ist aufgetreten Einstellung der Metadaten für diese Datenmenge",
// ajax error prefix
"There was an error getting the data for this dataset":
"Es gab einen Fehler, der die Daten für diesen Datensatz bekam",
// purged'd/del'd msg
"This dataset has been deleted and removed from disk":
"Dieser Datensatz wurde gelöscht und von der Festplatte entfernt",
"This dataset has been deleted":
"Dieser Datensatz wurde gelöscht",
"This dataset has been hidden":
"Dieser Datensatz wurde ausgeblendet",
"format":
"Format",
"database":
"Datenbank",
// ---- hda-edit
"Edit attributes":
"Attribute bearbeiten",
"Cannot edit attributes of datasets removed from disk":
"Kann keine Attribute von Datasets aus dem Datenträger entfernen",
"Undelete dataset to edit attributes":
"Undelete-Dataset zum Bearbeiten von Attributen",
"This dataset must finish uploading before it can be edited":
"Dieser Datensatz muss das Hochladen beenden, bevor es bearbeitet werden kann",
"This dataset is not yet editable":
"Dieser Datensatz ist noch nicht bearbeitbar",
"Delete":
"Löschen",
"Dataset is already deleted":
"Dataset ist bereits gelöscht",
"View or report this error":
"Diesen Fehler anzeigen oder melden",
"Run this job again":
"Führen Sie diesen Job wieder",
"Visualize":
"Visualisieren",
"Visualize in":
"Visualize in",
"Undelete it":
"Untelete it",
"Permanently remove it from disk":
"Permanent aus der Scheibe entfernen",
"Unhide it":
"Ausblenden",
"You may be able to":
"Sie können in der Lage sein",
"set it manually or retry auto-detection":
"Manuell einstellen oder Auto-Erkennung wiederholen",
"Edit dataset tags":
"Dataset-Tags bearbeiten",
"Edit dataset annotation":
"Datensatz-Annotation bearbeiten",
// ---------------------------------------------------------------------------- misc. MVC
"Tags":
"Variablen",
"Edit annotation":
"Anmerkung bearbeiten",
});
+327
View File
@@ -0,0 +1,327 @@
/** en/main localization hash - for use with requirejs' i18n plugin */
define({
// ----------------------------------------------------------------------------- masthead
"Analyze Data":
"Analizar datos",
"Workflow":
"Flujo de trabajo",
"Shared Data":
"Datos compartidos",
"Data Libraries":
"Bibliotecas de datos",
"Histories":
"Historias",
"Workflows":
"Flujos de trabajo",
"Visualizations":
"Visualizaciones",
"Pages":
"Páginas",
"Visualization":
"Visualización",
"New Track Browser":
"Nuevo navegador de pistas",
"Saved Visualizations":
"Visualizaciones Guardadas",
"Interactive Environments":
"Entornos Interactivos",
"Admin":
"Administración",
"Help":
"Ayuda",
"Support":
"Apoyo",
"Search":
"Buscar",
"Mailing Lists":
"Listas de correo",
"Videos":
"Videos",
"Wiki":
"Wiki",
"How to Cite Galaxy":
"Cómo citar a Galaxy",
"Interactive Tours":
"recorridos interactivos",
"User":
"Usuario",
"Login":
"Iniciar sesión",
"Register":
"Registro",
"Login or Register":
"Iniciar sesión o Registrarse",
"Logged in as":
"Conectado como",
"Preferences":
"Preferencias",
"Custom Builds":
"Construcciones personalizadas",
"Logout":
"Cerrar sesión",
"Saved Histories":
"Historias Guardadas",
"Saved Datasets":
"Conjuntos de datos guardados",
"Saved Pages":
"Páginas guardadas",
//Tooltip
"Account and saved data":
"Cuenta y datos guardados",
"Account registration or login":
"Registro de cuenta o inicio de sesión",
"Support, contact, and community":
"Apoyo, contacto y comunidad",
"Administer this Galaxy":
"Administrar esta galaxia",
"Visualize datasets":
"Visualizar conjuntos de datos",
"Access published resources":
"Acceso a los recursos publicados",
"Chain tools into workflows":
"Herramientas de cadena en flujos de trabajo",
"Analysis home view":
"Vista de inicio del análisis",
// ---------------------------------------------------------------------------- histories
// ---- history/options-menu
"History Lists":
"Listas de historia",
// Saved histories is defined above.
// "Saved Histories":
// false,
"Histories Shared with Me":
"Historias compartidas conmigo",
"Current History":
"Historia actual",
"Create New":
"Crear nuevo",
"Copy History":
"Historial de Copias",
"Share or Publish":
"Compartir o publicar",
"Show Structure":
"Mostrar Estructura",
"Extract Workflow":
"Extraer flujo de trabajo",
// Delete is defined elsewhere, but is also in this menu.
// "Delete":
// false,
"Delete Permanently":
"Borrar permanentemente",
"Dataset Actions":
"Acciones de conjuntos de datos",
"Copy Datasets":
"Conjuntos de datos de copia",
"Dataset Security":
"Seguridad del conjunto de datos",
"Resume Paused Jobs":
"Reanudar trabajos en pausa",
"Collapse Expanded Datasets":
"Contraer conjuntos de datos expandidos",
"Unhide Hidden Datasets":
"Mostrar conjuntos de datos ocultos",
"Delete Hidden Datasets":
"Eliminar conjuntos de datos ocultos",
"Purge Deleted Datasets":
"Eliminar los conjuntos de datos eliminados",
"Downloads":
"Descargas",
"Export Tool Citations":
"Citas de herramientas de exportación",
"Export History to File":
"Exportar historial a archivo",
"Other Actions":
"Otras acciones",
"Import from File":
"Importar desde archivo",
"Webhooks":
"WebHooks",
// ---- history-model
// ---- history-view
"This history is empty":
"Esta historia está vacía",
"No matching datasets found":
"No se encontraron conjuntos de datos coincidentes",
"An error occurred while getting updates from the server":
"Se ha producido un error al obtener actualizaciones desde el servidor",
"Please contact a Galaxy administrator if the problem persists":
"Póngase en contacto con un administrador de Galaxy si el problema persiste",
//TODO:
//"An error was encountered while <% where %>" :
//false,
"search datasets":
"Conjuntos de datos de búsqueda",
"You are currently viewing a deleted history!":
"¡Actualmente estás viendo un historial eliminado!",
"You are over your disk quota":
"Has sobrepasado tu cuota de disco",
"Tool execution is on hold until your disk usage drops below your allocated quota":
"La ejecución de la herramienta está en espera hasta que el uso del disco caiga por debajo de la cuota asignada",
"All":
"Todas",
"None":
"Ninguna",
"For all selected":
"Para todos los seleccionados",
// ---- history-view-edit
"Edit history tags":
"Editar etiquetas de historial",
"Edit history Annotation":
"Editar anotación de la historia",
"Click to rename history":
"Haga clic para cambiar el nombre del historial",
// multi operations
"Operations on multiple datasets":
"Operaciones en conjuntos de datos múltiples",
"Hide datasets":
"Ocultar conjuntos de datos",
"Unhide datasets":
"Mostrar conjuntos de datos",
"Delete datasets":
"Borrar conjuntos de datos",
"Undelete datasets":
"Undelete datasets",
"Permanently delete datasets":
"Eliminar permanentemente conjuntos de datos",
"This will permanently remove the data in your datasets. Are you sure?":
"Esto eliminará permanentemente los datos de sus datasets. ¿Está seguro?",
// ---- history-view-annotated
"Dataset":
"Conjunto de datos",
"Annotation":
"Anotación",
// ---- history-view-edit-current
"This history is empty. Click 'Get Data' on the left tool menu to start":
"Este historial está vacío. Haga clic en 'Obtener datos' en el menú de herramientas de la izquierda para iniciar",
"You must be logged in to create histories":
"Debe haber iniciado sesión para crear historiales",
//TODO:
//"You can <% loadYourOwn %> or <% externalSource %>" :
//false,
//"load your own data" :
//false,
//"get data from an external source" :
//false,
// these aren't in zh/ginga.po and the template doesn't localize
//"Include Deleted Datasets" :
//false,
//"Include Hidden Datasets" :
//false,
// ---------------------------------------------------------------------------- datasets
// ---- hda-model
"Unable to purge dataset":
"No se puede purgar el dataset",
// ---- hda-base
// display button
"Cannot display datasets removed from disk":
"No se pueden mostrar conjuntos de datos eliminados del disco",
"This dataset must finish uploading before it can be viewed":
"Este conjunto de datos debe terminar de cargar antes de que se pueda ver",
"This dataset is not yet viewable":
"Este conjunto de datos aún no se puede ver",
"View data":
"Ver datos",
// download button
"Download":
"Descargar",
"Download dataset":
"Descargar dataset",
"Additional files":
"Archivos adicionales",
// info/show_params
"View details":
"Ver detalles",
// dataset states
// state: new
"This is a new dataset and not all of its data are available yet":
"Este es un nuevo conjunto de datos y no todos sus datos están disponibles todavía",
// state: noPermission
"You do not have permission to view this dataset":
"No tiene permiso para ver este conjunto de datos",
// state: discarded
"The job creating this dataset was cancelled before completion":
"El trabajo que creó este conjunto de datos se canceló antes de completarse",
// state: queued
"This job is waiting to run":
"Este trabajo está a la espera de ejecutar",
// state: upload
"This dataset is currently uploading":
"Este conjunto de datos se está subiendo actualmente",
// state: setting_metadata
"Metadata is being auto-detected":
"Los metadatos se detectan automáticamente",
// state: running
"This job is currently running":
"Este trabajo se está ejecutando actualmente",
// state: paused
"This job is paused. Use the \"Resume Paused Jobs\" in the history menu to resume":
"Este trabajo está en pausa Utilice la opción \" Reanudar pausado Jobs \" en el menú de historial para reanudar",
// state: error
"An error occurred with this dataset":
"Se ha producido un error con este conjunto de datos",
// state: empty
"No data":
"Sin datos",
// state: failed_metadata
"An error occurred setting the metadata for this dataset":
"Se ha producido un error al establecer los metadatos de este conjunto de datos",
// ajax error prefix
"There was an error getting the data for this dataset":
"Hubo un error al obtener los datos de este conjunto de datos",
// purged'd/del'd msg
"This dataset has been deleted and removed from disk":
"Este conjunto de datos ha sido eliminado y eliminado del disco",
"This dataset has been deleted":
"Este conjunto de datos ha sido eliminado",
"This dataset has been hidden":
"Este conjunto de datos se ha ocultado",
"format":
"Formato",
"database":
"base de datos",
// ---- hda-edit
"Edit attributes":
"Editar atributos",
"Cannot edit attributes of datasets removed from disk":
"No se pueden editar los atributos de conjuntos de datos eliminados del disco",
"Undelete dataset to edit attributes":
"Undelete el conjunto de datos para editar atributos",
"This dataset must finish uploading before it can be edited":
"Este conjunto de datos debe terminar de cargar antes de que pueda ser editado",
"This dataset is not yet editable":
"Este conjunto de datos aún no es editable",
"Delete":
"Borrar",
"Dataset is already deleted":
"El conjunto de datos ya se ha eliminado",
"View or report this error":
"Ver o informar de este error",
"Run this job again":
"Ejecutar este trabajo de nuevo",
"Visualize":
"Visualizar",
"Visualize in":
"Visualizar en",
"Undelete it":
"Undelete it",
"Permanently remove it from disk":
"Eliminar permanentemente del disco",
"Unhide it":
"Mostrarlo",
"You may be able to":
"Usted puede ser capaz de",
"set it manually or retry auto-detection":
"Configurar manualmente o volver a intentar la detección automática",
"Edit dataset tags":
"Editar etiquetas de dataset",
"Edit dataset annotation":
"Editar anotación del conjunto de datos",
// ---------------------------------------------------------------------------- misc. MVC
"Tags":
"Tags",
"Edit annotation":
"Editar anotación",
});
+19 -2
View File
@@ -58,13 +58,30 @@ define({
"Custom Builds":
"Mes génomes Builds de référence",
"Logout":
"Déconnection",
"Déconnexion",
"Saved Histories":
"Historiques sauvegardés",
"Saved Datasets":
"Jeux de données sauvegardés",
"Saved Pages":
"Pages sauvegardées",
//Tooltip
"Account and saved data":
"Compte et données sauvegardées",
"Account registration or login":
"Enregistrement ou authentification",
"Support, contact, and community":
"Support,contact et communauté",
"Administer this Galaxy":
"Outils Admin",
"Visualize datasets":
"Visualiser les jeux de données",
"Access published resources":
"Accéder aux données partagées",
"Chain tools into workflows":
"Relier outils dans un workflow",
"Analysis home view":
"Accueil analyse de donnée",
// ---------------------------------------------------------------------------- histories
// ---- history/options-menu
"History Lists":
@@ -106,7 +123,7 @@ define({
"Delete Hidden Datasets":
"Supprimer les données cachés",
"Purge Deleted Datasets":
"Purger les données supprimer",
"Purger les données supprimées",
"Downloads":
"Télécharger",
"Export Tool Citations":
+21
View File
@@ -66,6 +66,25 @@ define({
false,
"Saved Pages":
false,
//Tooltip
"Account and saved data" :
false,
"Account registration or login" :
false,
"Support, contact, and community" :
false,
"Administer this Galaxy" :
false,
"Visualize datasets" :
false,
"Access published resources" :
false,
"Chain tools into workflows" :
false,
"Analysis home view" :
false,
// ---------------------------------------------------------------------------- histories
// ---- history/options-menu
"History Lists":
@@ -322,6 +341,8 @@ false,
false,
// ---------------------------------------------------------------------------- misc. MVC
"Tags" :
false,
+24 -1
View File
@@ -1766,4 +1766,27 @@ div.toolTitleNoSection
color:black;
text-align:left;
}
}
}
// workflow
.wf {
overflow: auto;
}
.wf-action span {
padding-left: 3px;
font-family: "Lucida Grande", verdana, arial, helvetica, sans-serif;
}
.wf-td {
width: 25%;
}
.wf-nodata {
padding-left: 1%;
}
.other-options {
margin-bottom: 2%;
}
@@ -65,6 +65,7 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
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 )
rval.append(item)
for wf_sa in trans.sa_session.query( trans.app.model.StoredWorkflowUserShareAssociation ).filter_by(
user=trans.user ).join( 'stored_workflow' ).filter(
@@ -74,6 +75,8 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
encoded_id = trans.security.encode_id(wf_sa.stored_workflow.id)
item['url'] = url_for( 'workflow', id=encoded_id )
item['owner'] = wf_sa.stored_workflow.user.username
item['number_of_steps'] = len( wf_sa.stored_workflow.latest_workflow.steps )
item['slug'] = wf_sa.stored_workflow.slug
rval.append(item)
return rval
+1
View File
@@ -107,6 +107,7 @@ def paste_app_factory( global_conf, **kwargs ):
webapp.add_client_route( '/tours/{tour_id}' )
webapp.add_client_route( '/user' )
webapp.add_client_route( '/user/{form_id}' )
webapp.add_client_route( '/workflow' )
webapp.add_client_route( '/custom_builds' )
# ==== Done
@@ -155,10 +155,6 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
__myexp_url = "www.myexperiment.org:80"
@web.expose
def index( self, trans ):
return self.list( trans )
@web.expose
@web.require_login( "use Galaxy workflows" )
def list_grid( self, trans, **kwargs ):
@@ -179,52 +175,9 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
"""
Render workflow main page (management of existing workflows)
"""
user = trans.get_user()
workflows = trans.sa_session.query( model.StoredWorkflow ) \
.filter_by( user=user, deleted=False ) \
.order_by( desc( model.StoredWorkflow.table.c.update_time ) ) \
.all()
shared_by_others = trans.sa_session \
.query( model.StoredWorkflowUserShareAssociation ) \
.filter_by( user=user ) \
.join( 'stored_workflow' ) \
.filter( model.StoredWorkflow.deleted == expression.false() ) \
.order_by( desc( model.StoredWorkflow.update_time ) ) \
.all()
# Legacy issue: all shared workflows must have slugs.
slug_set = False
for workflow_assoc in shared_by_others:
if self.create_item_slug( trans.sa_session, workflow_assoc.stored_workflow ):
slug_set = True
if slug_set:
trans.sa_session.flush()
return trans.fill_template( "workflow/list.mako",
workflows=workflows,
shared_by_others=shared_by_others )
@web.expose
@web.require_login( "use Galaxy workflows" )
def list_for_run( self, trans ):
"""
Render workflow list for analysis view (just allows running workflow
or switching to management view)
"""
user = trans.get_user()
workflows = trans.sa_session.query( model.StoredWorkflow ) \
.filter_by( user=user, deleted=False ) \
.order_by( desc( model.StoredWorkflow.table.c.update_time ) ) \
.all()
shared_by_others = trans.sa_session \
.query( model.StoredWorkflowUserShareAssociation ) \
.filter_by( user=user ) \
.filter( model.StoredWorkflow.deleted == expression.false() ) \
.order_by( desc( model.StoredWorkflow.table.c.update_time ) ) \
.all()
return trans.fill_template( "workflow/list_for_run.mako",
workflows=workflows,
shared_by_others=shared_by_others )
# Take care of proxy prefix in url as well
redirect_url = url_for( '/' ) + 'workflow'
return trans.response.send_redirect( redirect_url )
@web.expose
def list_published( self, trans, **kwargs ):
@@ -425,8 +378,11 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
stored.name = san_new_name
stored.latest_workflow.name = san_new_name
trans.sa_session.flush()
trans.set_message( "Workflow renamed to '%s'." % san_new_name )
return self.list( trans )
message = 'Workflow renamed to: %s' % escape( san_new_name )
trans.set_message( message )
# Take care of proxy prefix in url as well
redirect_url = url_for( '/' ) + 'workflow?status=done&message=%s' % escape( message )
return trans.response.send_redirect( redirect_url )
else:
return form( url_for(controller='workflow', action='rename', id=trans.security.encode_id(stored.id) ),
"Rename workflow",
@@ -543,7 +499,7 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
if (save_as_name):
new_stored.name = '%s' % save_as_name
else:
new_stored.name = "Copy of '%s'" % stored.name
new_stored.name = "Copy of %s" % stored.name
new_stored.latest_workflow = stored.latest_workflow
# Copy annotation.
annotation_obj = self.get_item_annotation_obj( trans.sa_session, stored.user, stored )
@@ -551,15 +507,17 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
self.add_item_annotation( trans.sa_session, trans.get_user(), new_stored, annotation_obj.annotation )
new_stored.copy_tags_from(trans.user, stored)
if not owner:
new_stored.name += " shared by '%s'" % stored.user.email
new_stored.name += " shared by %s" % stored.user.email
new_stored.user = user
# Persist
session = trans.sa_session
session.add( new_stored )
session.flush()
# Display the management page
trans.set_message( 'Created new workflow with name "%s"' % escape( new_stored.name ) )
return self.list( trans )
message = 'Created new workflow with name: %s' % escape( new_stored.name )
trans.set_message( message )
return_url = url_for( '/' ) + 'workflow?status=done&message=%s' % escape( message )
trans.response.send_redirect( return_url )
@web.expose
@web.require_login( "create workflows" )
@@ -652,8 +610,9 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
trans.sa_session.add( stored )
trans.sa_session.flush()
# Display the management page
trans.set_message( "Workflow '%s' deleted" % escape( stored.name ) )
return self.list( trans )
message = "Workflow deleted: %s" % escape( stored.name )
trans.set_message( message )
return trans.response.send_redirect( url_for( '/' ) + 'workflow?status=done&message=%s' % escape( message ) )
@web.expose
@web.require_login( "edit workflows" )
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"workflow.js","sources":["../../../src/mvc/workflow/workflow.js"],"names":["define","View","Backbone","extend","initialize","this","setElement","render","self","min_query_length","$","getJSON","Galaxy","root","workflows","$el_workflow","$el","empty","append","_templateHeader","build_messages","find","_templateActionButtons","length","_templateWorkflowTable","adjust_actiondropdown","_","each","wf","confirm_delete","search_workflow","_templateNoWorkflow","$el_message","status","get_querystring","message","addClass","html","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","key","decodeURIComponent","window","location","search","replace","encodeURIComponent","css","tableHtml","trHtml","escape","_templateActions","owner","user","attributes","username","number_of_steps","published","slug"],"mappings":"AACAA,UAAY,WAGR,GAAIC,GAAOC,SAASD,KAAKE,QAErBC,WAAY,WACRC,KAAKC,WAAY,UACjBD,KAAKE,UAGTA,OAAQ,WACJ,GAAIC,GAAOH,KACPI,EAAmB,CACvBC,GAAEC,QAASC,OAAOC,KAAO,iBAAkB,SAAUC,GACjD,GAAIC,GAAe,IAEnBP,GAAKQ,IAAIC,QAAQC,OAAQV,EAAKW,mBAE9BX,EAAKY,eAAgBZ,GACrBO,EAAeP,EAAKQ,IAAIK,KAAM,mBAE9BN,EAAaG,OAAQV,EAAKc,0BACtBR,EAAUS,OAAS,GACnBR,EAAaG,OAAQV,EAAKgB,uBAAwBhB,EAAMM,IACxDN,EAAKiB,sBAAuBV,GAE5BW,EAAEC,KAAMb,EAAW,SAAUc,GACzBpB,EAAKqB,eAAgBrB,EAAMoB,KAG/BpB,EAAKsB,gBAAiBtB,EAAMA,EAAKQ,IAAIK,KAAM,cAAgBb,EAAKQ,IAAIK,KAAM,uBAAyBZ,IAGnGM,EAAaG,OAAQV,EAAKuB,0BAMtCX,eAAgB,SAAUZ,GACtB,GAAIwB,GAAcxB,EAAKQ,IAAIK,KAAM,qBAC7BY,EAASzB,EAAK0B,gBAAiB,UAC/BC,EAAU3B,EAAK0B,gBAAiB,UAEhCC,IAAuB,OAAZA,GAAgC,KAAZA,GAC/BH,EAAYI,SAAUH,EAAS,WAC/BD,EAAYK,KAAM,MAAQF,EAAU,SAGpCH,EAAYK,KAAK,KAKzBR,eAAgB,SAAUrB,EAAM8B,GAC5B,GAAIC,GAAc/B,EAAKQ,IAAIK,KAAM,iBAAmBiB,EAASE,IACzDC,EAAqBjC,EAAKQ,IAAIK,KAAM,wBAA0BiB,EAASE,GAC3ED,GAAYG,MAAO,WACf,MAAOC,SAAS,6CAA+CL,EAASM,KAAO,QAEnFH,EAAmBC,MAAO,WACtB,MAAOC,SAAS,wDAA0DL,EAASM,KAAO,SAKlGd,gBAAiB,SAAUtB,EAAMqC,EAAiBC,EAAaC,GAC3DF,EAAgBG,GAAI,QAAS,WACzB,GAAIC,GAAQvC,EAAGL,MAAO6C,KAGtB,IAAID,EAAM1B,QAAUwB,EAAe,CAE/B,GAAII,GAAqB,GAAIC,QAAQH,EAAO,IAC5CH,GAAYO,OACZP,EAAYQ,OAAO,WAGf,MAAOH,GAAmBI,KAAM7C,EAAGL,MAAOmD,UAC3CC,WAGHX,GAAYW,UAMxBvB,gBAAiB,SAAUwB,GACvB,MAAOC,oBAAoBC,OAAOC,SAASC,OAAOC,QAAQ,GAAIX,QAAO,eAAiBY,mBAAoBN,GAAMK,QAAQ,YAAa,QAAU,uBAAwB,KAAM,QAIjLtC,sBAAuB,SAAUT,GAC7BA,EAAIgC,GAAI,mBAAoB,WACxBhC,EAAIiD,IAAK,WAAY,aAGzBjD,EAAIgC,GAAI,mBAAoB,WACxBhC,EAAIiD,IAAK,WAAY,WAK7BlC,oBAAqB,WACjB,MAAO,yDAIXT,uBAAwB,WACrB,MAAO,6PAKwGV,OAAOC,KAAM,8IAIFD,OAAOC,KAAM,4CAO1IW,uBAAwB,SAAUhB,EAAMM,GACpC,GAAIoD,GAAY,GAAIC,EAAS,EAuB7B,OAtBAD,IAAwB,+LAOxBxC,EAAEC,KAAMb,EAAW,SAAUc,GACzBuC,EAASA,EAAS,sHAIOzC,EAAE0C,OAAQxC,EAAGgB,MAAS,uCAE1BpC,EAAK6D,iBAAkBzC,GAC3B,mBAEQA,EAAG0C,QAAU1D,OAAO2D,KAAKC,WAAWC,SAAW,MAAQ7C,EAAG0C,OAAS,0BACvD1C,EAAG8C,gBAAkB,2BACnB9C,EAAG+C,UAAY,MAAQ,MAAS,eAGpET,EAAY,kCAAoCC,EAAS,oBAIpEE,iBAAkB,SAAU/B,GACxB,MAAIA,GAASgC,QAAU1D,OAAO2D,KAAKC,WAAWC,SACnC,qDACqB7D,OAAOC,KAAM,sBAAuByB,EAASE,GAAI,+BACjD5B,OAAOC,KAAM,mBAAoByB,EAASE,GAAI,mDAC9C5B,OAAOC,KAAM,uBAAwByB,EAASE,GAAI,4CAClD5B,OAAOC,KAAM,oBAAqByB,EAASE,GAAI,+BAC/C5B,OAAOC,KAAM,sBAAuByB,EAASE,GAAI,iCACjD5B,OAAOC,KAAM,6BAA8ByB,EAASE,GAAI,6CAC1CF,EAASE,GAAI,WAAY5B,OAAOC,KAAM,sBAAuByB,EAASE,GAAI,yBAI7G,qDACmB5B,OAAOC,KAAM,kDAAmDyB,EAASgC,MAAO,SAAUhC,EAASsC,KAAM,+BACzGhE,OAAOC,KAAM,mBAAoByB,EAASE,GAAI,mDAC9C5B,OAAOC,KAAM,oBAAqByB,EAASE,GAAI,oDAC1BF,EAASE,GAAI,WAAY5B,OAAOC,KAAM,uCAAwCyB,EAASE,GAAI,0BAMlJrB,gBAAiB,WACb,MAAO,sOAO+DP,OAAOC,KAAM,4HAQ3F,QACIZ,KAAQA"}
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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
View File
@@ -0,0 +1,2 @@
define([],function(){var a=Backbone.View.extend({initialize:function(){this.setElement("<div/>"),this.render()},render:function(){var a=this,b=3;$.getJSON(Galaxy.root+"api/workflows/",function(c){var d=null;a.$el.empty().append(a._templateHeader()),a.build_messages(a),d=a.$el.find(".user-workflows"),d.append(a._templateActionButtons()),c.length>0?(d.append(a._templateWorkflowTable(a,c)),a.adjust_actiondropdown(d),_.each(c,function(b){a.confirm_delete(a,b)}),a.search_workflow(a,a.$el.find(".search-wf"),a.$el.find(".workflow-search tr"),b)):d.append(a._templateNoWorkflow())})},build_messages:function(a){var b=a.$el.find(".response-message"),c=a.get_querystring("status"),d=a.get_querystring("message");d&&null!==d&&""!==d?(b.addClass(c+"message"),b.html("<p>"+d+"</p>")):b.html("")},confirm_delete:function(a,b){var c=a.$el.find(".link-confirm-"+b.id),d=a.$el.find(".link-confirm-shared-"+b.id);c.click(function(){return confirm("Are you sure you want to delete workflow '"+b.name+"'?")}),d.click(function(){return confirm("Are you sure you want to remove the shared workflow '"+b.name+"'?")})},search_workflow:function(a,b,c,d){b.on("keyup",function(){var a=$(this).val();if(a.length>=d){var b=new RegExp(a,"i");c.hide(),c.filter(function(){return b.test($(this).text())}).show()}else c.show()})},get_querystring:function(a){return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]"+encodeURIComponent(a).replace(/[\.\+\*]/g,"\\$&")+"(?:\\=([^&]*))?)?.*$","i"),"$1"))},adjust_actiondropdown:function(a){a.on("show.bs.dropdown",function(){a.css("overflow","inherit")}),a.on("hide.bs.dropdown",function(){a.css("overflow","auto")})},_templateNoWorkflow:function(){return'<div class="wf-nodata"> You have no workflows. </div>'},_templateActionButtons:function(){return'<ul class="manage-table-actions"><li><input class="search-wf form-control" type="text" autocomplete="off" placeholder="search for workflow..."></li><li><a class="action-button fa fa-plus wf-action" id="new-workflow" title="Create new workflow" href="'+Galaxy.root+'workflow/create"></a></li><li><a class="action-button fa fa-upload wf-action" id="import-workflow" title="Upload or import workflow" href="'+Galaxy.root+'workflow/import_workflow"></a></li></ul>'},_templateWorkflowTable:function(a,b){var c="",d="";return c+='<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">Published</th></tr></thead>',_.each(b,function(b){d=d+'<tr><td class="wf-td wf-dpd"><div class="dropdown"><button class="menubutton" type="button" data-toggle="dropdown">'+_.escape(b.name)+'<span class="caret"></span></button>'+a._templateActions(b)+"</div></td><td>"+(b.owner===Galaxy.user.attributes.username?"You":b.owner)+'</td><td class="wf-td">'+b.number_of_steps+'</td><td class="wf-td">'+(b.published?"Yes":"No")+"</td></tr>"}),c+'<tbody class="workflow-search">'+d+"</tbody></table>"},_templateActions:function(a){return a.owner===Galaxy.user.attributes.username?'<ul class="dropdown-menu action-dpd"><li><a href="'+Galaxy.root+"workflow/editor?id="+a.id+'">Edit</a></li><li><a href="'+Galaxy.root+"workflow/run?id="+a.id+'" target="galaxy_main">Run</a></li><li><a href="'+Galaxy.root+"workflow/sharing?id="+a.id+'">Share or Download</a></li><li><a href="'+Galaxy.root+"workflow/copy?id="+a.id+'">Copy</a></li><li><a href="'+Galaxy.root+"workflow/rename?id="+a.id+'">Rename</a></li><li><a href="'+Galaxy.root+"workflow/display_by_id?id="+a.id+'">View</a></li><li><a class="link-confirm-'+a.id+'" href="'+Galaxy.root+"workflow/delete?id="+a.id+'">Delete</a></li></ul>':'<ul class="dropdown-menu action-dpd"><li><a href="'+Galaxy.root+"workflow/display_by_username_and_slug?username="+a.owner+"&slug="+a.slug+'">View</a></li><li><a href="'+Galaxy.root+"workflow/run?id="+a.id+'" target="galaxy_main">Run</a></li><li><a href="'+Galaxy.root+"workflow/copy?id="+a.id+'">Copy</a></li><li><a class="link-confirm-shared-'+a.id+'" href="'+Galaxy.root+"workflow/sharing?unshare_me=True&id="+a.id+'">Remove</a></li></ul>'},_templateHeader:function(){return'<div class="page-container"><div class="user-workflows wf"><div class="response-message"></div><h2>Your workflows</h2></div><div class="other-options wf"><h2>Other options</h2><a class="action-button fa fa-cog wf-action" href="'+Galaxy.root+'workflow/configure_menu" title="Configure your workflow menu"><span>Configure your workflow menu</span></a></div></div>'}});return{View:a}});
//# sourceMappingURL=../../../maps/mvc/workflow/workflow.js.map
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
+1 -1
View File
@@ -1,2 +1,2 @@
define({root:{"Analyze Data":!1,Workflow:!1,"Shared Data":!1,"Data Libraries":!1,Histories:!1,Workflows:!1,Visualizations:!1,Pages:!1,Visualization:!1,"New Track Browser":!1,"Saved Visualizations":!1,"Interactive Environments":!1,Admin:!1,Help:!1,Support:!1,Search:!1,"Mailing Lists":!1,Videos:!1,Wiki:!1,"How to Cite Galaxy":!1,"Interactive Tours":!1,User:!1,Login:!1,Register:!1,"Login or Register":!1,"Logged in as":!1,Preferences:!1,"Custom Builds":!1,Logout:!1,"Saved Histories":!1,"Saved Datasets":!1,"Saved Pages":!1,"History Lists":!1,"Histories Shared with Me":!1,"Current History":!1,"Create New":!1,"Copy History":!1,"Share or Publish":!1,"Show Structure":!1,"Extract Workflow":!1,"Delete Permanently":!1,"Dataset Actions":!1,"Copy Datasets":!1,"Dataset Security":!1,"Resume Paused Jobs":!1,"Collapse Expanded Datasets":!1,"Unhide Hidden Datasets":!1,"Delete Hidden Datasets":!1,"Purge Deleted Datasets":!1,Downloads:!1,"Export Tool Citations":!1,"Export History to File":!1,"Other Actions":!1,"Import from File":!1,Webhooks:!1,"This history is empty":!1,"No matching datasets found":!1,"An error occurred while getting updates from the server":!1,"Please contact a Galaxy administrator if the problem persists":!1,"search datasets":!1,"You are currently viewing a deleted history!":!1,"You are over your disk quota":!1,"Tool execution is on hold until your disk usage drops below your allocated quota":!1,All:!1,None:!1,"For all selected":!1,"Edit history tags":!1,"Edit history Annotation":!1,"Click to rename history":!1,"Operations on multiple datasets":!1,"Hide datasets":!1,"Unhide datasets":!1,"Delete datasets":!1,"Undelete datasets":!1,"Permanently delete datasets":!1,"This will permanently remove the data in your datasets. Are you sure?":!1,Dataset:!1,Annotation:!1,"This history is empty. Click 'Get Data' on the left tool menu to start":!1,"You must be logged in to create histories":!1,"Unable to purge dataset":!1,"Cannot display datasets removed from disk":!1,"This dataset must finish uploading before it can be viewed":!1,"This dataset is not yet viewable":!1,"View data":!1,Download:!1,"Download dataset":!1,"Additional files":!1,"View details":!1,"This is a new dataset and not all of its data are available yet":!1,"You do not have permission to view this dataset":!1,"The job creating this dataset was cancelled before completion":!1,"This job is waiting to run":!1,"This dataset is currently uploading":!1,"Metadata is being auto-detected":!1,"This job is currently running":!1,'This job is paused. Use the "Resume Paused Jobs" in the history menu to resume':!1,"An error occurred with this dataset":!1,"No data":!1,"An error occurred setting the metadata for this dataset":!1,"There was an error getting the data for this dataset":!1,"This dataset has been deleted and removed from disk":!1,"This dataset has been deleted":!1,"This dataset has been hidden":!1,format:!1,database:!1,"Edit attributes":!1,"Cannot edit attributes of datasets removed from disk":!1,"Undelete dataset to edit attributes":!1,"This dataset must finish uploading before it can be edited":!1,"This dataset is not yet editable":!1,Delete:!1,"Dataset is already deleted":!1,"View or report this error":!1,"Run this job again":!1,Visualize:!1,"Visualize in":!1,"Undelete it":!1,"Permanently remove it from disk":!1,"Unhide it":!1,"You may be able to":!1,"set it manually or retry auto-detection":!1,"Edit dataset tags":!1,"Edit dataset annotation":!1,Tags:!1,"Edit annotation":!1},ja:!0,fr:!0,zh:!0});
define({root:{"Analyze Data":!1,Workflow:!1,"Shared Data":!1,"Data Libraries":!1,Histories:!1,Workflows:!1,Visualizations:!1,Pages:!1,Visualization:!1,"New Track Browser":!1,"Saved Visualizations":!1,"Interactive Environments":!1,Admin:!1,Help:!1,Support:!1,Search:!1,"Mailing Lists":!1,Videos:!1,Wiki:!1,"How to Cite Galaxy":!1,"Interactive Tours":!1,User:!1,Login:!1,Register:!1,"Login or Register":!1,"Logged in as":!1,Preferences:!1,"Custom Builds":!1,Logout:!1,"Saved Histories":!1,"Saved Datasets":!1,"Saved Pages":!1,"Account and saved data":!1,"Account registration or login":!1,"Support, contact, and community":!1,"Administer this Galaxy":!1,"Visualize datasets":!1,"Access published resources":!1,"Chain tools into workflows":!1,"Analysis home view":!1,"History Lists":!1,"Histories Shared with Me":!1,"Current History":!1,"Create New":!1,"Copy History":!1,"Share or Publish":!1,"Show Structure":!1,"Extract Workflow":!1,"Delete Permanently":!1,"Dataset Actions":!1,"Copy Datasets":!1,"Dataset Security":!1,"Resume Paused Jobs":!1,"Collapse Expanded Datasets":!1,"Unhide Hidden Datasets":!1,"Delete Hidden Datasets":!1,"Purge Deleted Datasets":!1,Downloads:!1,"Export Tool Citations":!1,"Export History to File":!1,"Other Actions":!1,"Import from File":!1,Webhooks:!1,"This history is empty":!1,"No matching datasets found":!1,"An error occurred while getting updates from the server":!1,"Please contact a Galaxy administrator if the problem persists":!1,"search datasets":!1,"You are currently viewing a deleted history!":!1,"You are over your disk quota":!1,"Tool execution is on hold until your disk usage drops below your allocated quota":!1,All:!1,None:!1,"For all selected":!1,"Edit history tags":!1,"Edit history Annotation":!1,"Click to rename history":!1,"Operations on multiple datasets":!1,"Hide datasets":!1,"Unhide datasets":!1,"Delete datasets":!1,"Undelete datasets":!1,"Permanently delete datasets":!1,"This will permanently remove the data in your datasets. Are you sure?":!1,Dataset:!1,Annotation:!1,"This history is empty. Click 'Get Data' on the left tool menu to start":!1,"You must be logged in to create histories":!1,"Unable to purge dataset":!1,"Cannot display datasets removed from disk":!1,"This dataset must finish uploading before it can be viewed":!1,"This dataset is not yet viewable":!1,"View data":!1,Download:!1,"Download dataset":!1,"Additional files":!1,"View details":!1,"This is a new dataset and not all of its data are available yet":!1,"You do not have permission to view this dataset":!1,"The job creating this dataset was cancelled before completion":!1,"This job is waiting to run":!1,"This dataset is currently uploading":!1,"Metadata is being auto-detected":!1,"This job is currently running":!1,'This job is paused. Use the "Resume Paused Jobs" in the history menu to resume':!1,"An error occurred with this dataset":!1,"No data":!1,"An error occurred setting the metadata for this dataset":!1,"There was an error getting the data for this dataset":!1,"This dataset has been deleted and removed from disk":!1,"This dataset has been deleted":!1,"This dataset has been hidden":!1,format:!1,database:!1,"Edit attributes":!1,"Cannot edit attributes of datasets removed from disk":!1,"Undelete dataset to edit attributes":!1,"This dataset must finish uploading before it can be edited":!1,"This dataset is not yet editable":!1,Delete:!1,"Dataset is already deleted":!1,"View or report this error":!1,"Run this job again":!1,Visualize:!1,"Visualize in":!1,"Undelete it":!1,"Permanently remove it from disk":!1,"Unhide it":!1,"You may be able to":!1,"set it manually or retry auto-detection":!1,"Edit dataset tags":!1,"Edit dataset annotation":!1,Tags:!1,"Edit annotation":!1},ja:!0,fr:!0,zh:!0});
//# sourceMappingURL=../../maps/nls/locale.js.map
File diff suppressed because one or more lines are too long
-122
View File
@@ -1,122 +0,0 @@
<%inherit file="/webapps/galaxy/base_panels.mako"/>
<%def name="init()">
<%
self.has_left_panel=False
self.has_right_panel=False
self.active_view="workflow"
self.message_box_visible=False
%>
</%def>
<%def name="title()">Workflow home</%def>
<%def name="center_panel()">
<div style="overflow: auto; height: 100%;">
<div class="page-container" style="padding: 10px;">
%if message:
<%
try:
status
except:
status = "done"
%>
<p />
<div class="${status}message">
${h.to_unicode( message )}
</div>
%endif
<h2>Your workflows</h2>
<ul class="manage-table-actions">
<li>
<a class="action-button" id="new-workflow" href="${h.url_for( controller='workflow', action='create' )}">
<img src="${h.url_for('/static/images/silk/add.png')}" />
<span>Create new workflow</span>
</a>
</li>
<li>
<a class="action-button" id="import-workflow" href="${h.url_for( controller='workflow', action='import_workflow' )}">
<img src="${h.url_for('/static/images/fugue/arrow-090.png')}" />
<span>Upload or import workflow</span>
</a>
</li>
</ul>
%if workflows:
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" style="width:100%;">
<tr class="header">
<th>Name</th>
<th># of Steps</th>
## <th>Last Updated</th>
<th></th>
</tr>
%for i, workflow in enumerate( workflows ):
<tr>
<td>
<div class="menubutton" style="float: left;" id="wf-${i}-popup">
${h.to_unicode( workflow.name ) | h}
</div>
</td>
<td>${len(workflow.latest_workflow.steps)}</td>
## <td>${str(workflow.update_time)[:19]}</td>
<td>
<div popupmenu="wf-${i}-popup">
<a class="action-button" href="${h.url_for( controller='workflow', action='editor', id=trans.security.encode_id( workflow.id ) )}" target="_parent">Edit</a>
<a class="action-button" href="${h.url_for( controller='root', action='index', workflow_id=trans.security.encode_id( workflow.id ) )}" target="_parent">Run</a>
<a class="action-button" href="${h.url_for( controller='workflow', action='sharing', id=trans.security.encode_id( workflow.id ) )}">Share or Download</a>
<a class="action-button" href="${h.url_for( controller='workflow', action='copy', id=trans.security.encode_id( workflow.id ) )}">Copy</a>
<a class="action-button" href="${h.url_for( controller='workflow', action='rename', id=trans.security.encode_id( workflow.id ) )}">Rename</a>
<a class="action-button" href="${h.url_for( controller='workflow', action='display_by_id', id=trans.security.encode_id( workflow.id ) )}" target="_top">View</a>
<a class="action-button" confirm="Are you sure you want to delete workflow '${h.to_unicode( workflow.name ) | h}'?" href="${h.url_for( controller='workflow', action='delete', id=trans.security.encode_id( workflow.id ) )}">Delete</a>
</div>
</td>
</tr>
%endfor
</table>
%else:
You have no workflows.
%endif
<h2>Workflows shared with you by others</h2>
%if shared_by_others:
<table class="colored" border="0" cellspacing="0" cellpadding="0" width="100%">
<tr class="header">
<th>Name</th>
<th>Owner</th>
<th># of Steps</th>
<th></th>
</tr>
%for i, association in enumerate( shared_by_others ):
<% workflow = association.stored_workflow %>
<tr>
<td>
<a class="menubutton" id="shared-${i}-popup" href="${h.url_for( controller='workflow', action='run', id=trans.security.encode_id(workflow.id) )}">${h.to_unicode( workflow.name ) | h}</a>
</td>
<td>${workflow.user.email}</td>
<td>${len(workflow.latest_workflow.steps)}</td>
<td>
<div popupmenu="shared-${i}-popup">
<a class="action-button" href="${h.url_for( controller='workflow', action='display_by_username_and_slug', username=workflow.user.username, slug=workflow.slug )}" target="_top">View</a>
<a class="action-button" href="${h.url_for( controller='workflow', action='run', id=trans.security.encode_id( workflow.id ) )}">Run</a>
<a class="action-button" href="${h.url_for( controller='workflow', action='copy', id=trans.security.encode_id( workflow.id ) )}">Copy</a>
<a class="action-button" confirm="Are you sure you want to remove the shared workflow '${h.to_unicode( workflow.name ) | h}'?" href="${h.url_for( controller='workflow', action='sharing', unshare_me=True, id=trans.security.encode_id( workflow.id ))}">Remove</a>
</div>
</td>
</tr>
%endfor
</table>
%else:
No workflows have been shared with you.
%endif
<h2>Other options</h2>
<a class="action-button" href="${h.url_for( controller='workflow', action='configure_menu' )}">
<span>Configure your workflow menu</span>
</a>
</div>
</div>
</%def>
@@ -1,66 +0,0 @@
<%inherit file="/base.mako"/>
<%def name="title()">Workflow home</%def>
<h2>Your workflows</h2>
<ul class="manage-table-actions">
<li>
<a class="action-button" href="${h.url_for( controller='workflow', action='index' )}" target="_parent">
<span>Switch to workflow management view</span>
</a>
</li>
</ul>
%if workflows:
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" width="100%">
<tr class="header">
<th>Name</th>
<th># of Steps</th>
## <th>Last Updated</th>
<th></th>
</tr>
%for i, workflow in enumerate( workflows ):
<tr>
<td>
<a href="${h.url_for(controller='workflow', action='run', id=trans.security.encode_id(workflow.id) )}">${h.to_unicode( workflow.name ) | h}</a>
<a id="wf-${i}-popup" class="popup-arrow" style="display: none;">&#9660;</a>
</td>
<td>${len(workflow.latest_workflow.steps)}</td>
## <td>${str(workflow.update_time)[:19]}</td>
</tr>
%endfor
</table>
%else:
You have no workflows.
%endif
<h2>Workflows shared with you by others</h2>
%if shared_by_others:
<table class="colored" border="0" cellspacing="0" cellpadding="0" width="100%">
<tr class="header">
<th>Name</th>
<th>Owner</th>
<th># of Steps</th>
<th></th>
</tr>
%for i, association in enumerate( shared_by_others ):
<% workflow = association.stored_workflow %>
<tr>
<td>
<a href="${h.url_for( controller='workflow', action='run', id=trans.security.encode_id(workflow.id) )}">${workflow.name | h}</a>
<a id="shared-${i}-popup" class="popup-arrow" style="display: none;">&#9660;</a>
</td>
<td>${workflow.user.email | h}</td>
<td>${len(workflow.latest_workflow.steps)}</td>
</tr>
%endfor
</table>
%else:
No workflows have been shared with you.
%endif
+31
View File
@@ -1295,6 +1295,37 @@ test_data:
content = self.dataset_populator.get_history_dataset_details( history_id, wait=True, assert_ok=True )
assert content[ "name" ] == "foo was replaced"
@skip_without_tool( "cat" )
def test_run_rename_collection_element( self ):
history_id = self.dataset_populator.new_history()
self._run_jobs("""
class: GalaxyWorkflow
inputs:
- id: input1
type: data_collection_input
collection_type: list
steps:
- tool_id: cat
label: first_cat
state:
input1:
$link: input1
outputs:
out_file1:
rename: "my new name"
test_data:
input1:
type: list
name: the_dataset_list
elements:
- identifier: el1
value: 1.fastq
type: File
""", history_id=history_id)
content = self.dataset_populator.get_history_dataset_details( history_id, hid=3, wait=True, assert_ok=True )
name = content[ "name" ]
assert name == "my new name", name
@skip_without_tool( "cat" )
def test_run_rename_based_on_input( self ):
history_id = self.dataset_populator.new_history()
+4 -5
View File
@@ -394,17 +394,16 @@ class NavigatesGalaxy(HasDriver):
self.click_masthead_workflow()
def workflow_index_table_elements(self):
self.wait_for_selector_visible(".manage-table tbody")
table_elements = self.driver.find_elements_by_css_selector(".manage-table tbody > tr")
# drop header
return table_elements[1:]
self.wait_for_selector_visible("tbody.workflow-search")
table_elements = self.driver.find_elements_by_css_selector("tbody.workflow-search > tr")
return table_elements
def workflow_index_click_option(self, option_title, workflow_index=0):
table_elements = self.workflow_index_table_elements()
workflow_row = table_elements[workflow_index]
workflow_button = workflow_row.find_element_by_css_selector(".menubutton")
workflow_button.click()
menu_element = self.wait_for_selector_visible(".popmenu-wrapper .dropdown-menu")
menu_element = self.wait_for_selector_visible("ul.action-dpd")
menu_options = menu_element.find_elements_by_css_selector("li a")
found_option = False
for menu_option in menu_options:
+24 -5
View File
@@ -71,6 +71,8 @@ def selenium_test(f):
def func_wrapper(self, *args, **kwds):
retry_attempts = 0
while True:
if retry_attempts > 0:
self.reset_driver_and_session()
try:
return f(self, *args, **kwds)
except Exception:
@@ -118,11 +120,7 @@ class SeleniumTestCase(FunctionalTestCase, NavigatesGalaxy):
self.target_url_from_selenium = GALAXY_TEST_EXTERNAL_FROM_SELENIUM
else:
self.target_url_from_selenium = self.url
self.display = driver_factory.virtual_display_if_enabled(headless_selenium())
self.driver = get_driver()
if self.ensure_registered:
self.register()
self.setup_driver_and_session()
def tearDown(self):
exception = None
@@ -131,6 +129,27 @@ class SeleniumTestCase(FunctionalTestCase, NavigatesGalaxy):
except Exception as e:
exception = e
try:
self.tear_down_driver()
except Exception as e:
exception = e
if exception is not None:
raise exception
def reset_driver_and_session(self):
self.tear_down_driver()
self.setup_driver_and_session()
def setup_driver_and_session(self):
self.display = driver_factory.virtual_display_if_enabled(headless_selenium())
self.driver = get_driver()
if self.ensure_registered:
self.register()
def tear_down_driver(self):
exception = None
try:
self.driver.close()
except Exception as e:
+16 -15
View File
@@ -31,22 +31,23 @@ class ToolFormTestCase(SeleniumTestCase, UsesHistoryItemAssertions):
hda = self.latest_history_item()
self._check_dataset_details_for_inttest_value(1)
dataset_details_key_value_pairs = self._table_to_key_value_elements("table#dataset-details")
number_found = name_found = format_found = False
for key, value in dataset_details_key_value_pairs:
if "Number:" in key.text:
assert str(hda["hid"]) in value.text
number_found = True
if "Name:" in key.text:
assert hda["name"] in value.text
name_found = True
if "Format:" in key.text:
assert hda["extension"] in value.text
format_found = True
with self.main_panel():
dataset_details_key_value_pairs = self._table_to_key_value_elements("table#dataset-details")
number_found = name_found = format_found = False
for key, value in dataset_details_key_value_pairs:
if "Number:" in key.text:
assert str(hda["hid"]) in value.text
number_found = True
if "Name:" in key.text:
assert hda["name"] in value.text
name_found = True
if "Format:" in key.text:
assert hda["extension"] in value.text
format_found = True
assert number_found
assert name_found
assert format_found
assert number_found
assert name_found
assert format_found
def _table_to_key_value_elements(self, table_selector):
tool_parameters_table = self.wait_for_selector_visible(table_selector)
@@ -45,7 +45,8 @@ class WorkflowManagementTestCase(SeleniumTestCase):
assert 'CoolNewName' in renamed_workflow_button.text, renamed_workflow_button.text
def _workflow_import_from_url(self):
self.click_selector(self.test_data["selectors"]["workflows"]["import_button"])
element = self.wait_for_selector_clickable(self.test_data["selectors"]["workflows"]["import_button"])
element.click()
url = "https://raw.githubusercontent.com/galaxyproject/galaxy/dev/test/base/data/test_workflow_1.ga"
form_element = self.driver.find_element_by_css_selector("#center form")
url_element = form_element.find_element_by_css_selector("input[type='text']")