Merge remote-tracking branch 'upstream/dev' into unified_webpack4

This commit is contained in:
Dannon Baker
2018-10-17 22:47:57 -04:00
50 changed files with 211 additions and 182 deletions
+2 -2
View File
@@ -65,8 +65,8 @@ Changing Styles/CSS
===================
The CSS and styling used by Galaxy is also controlled from this directory.
Galaxy uses LESS, a superset of CSS that compiles to CSS, for its styling. LESS
files are kept in client/galaxy/style/less. Compiled CSS is in
Galaxy uses Sass for its styling, a superset of CSS that compiles to CSS. Sass
files are kept in client/galaxy/style/scss. Compiled CSS is in
static/style/blue.
As mentioned above, 'make client' will also rebuild styles. If you *only* want
+5
View File
@@ -0,0 +1,5 @@
The \*.md files in this directory are rendered as a style guide generated when
running ```yarn run styleguide```.
For more details see [Vue
Styleguidist](https://github.com/vue-styleguidist/vue-styleguidist).
+16 -16
View File
@@ -2,7 +2,7 @@
Regular buttons
```
```vue
<div>
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
@@ -16,7 +16,7 @@ Regular buttons
Disabled
```
```vue
<div>
<button type="button" class="btn btn-primary disabled">Primary</button>
<button type="button" class="btn btn-secondary disabled">Secondary</button>
@@ -28,7 +28,7 @@ Disabled
</div>
```
```
```vue
<div>
<button type="button" class="btn btn-outline-primary">Primary</button>
<button type="button" class="btn btn-outline-secondary">Secondary</button>
@@ -39,7 +39,7 @@ Disabled
</div>
```
```
```vue
<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
<button type="button" class="btn btn-primary">Primary</button>
<div class="btn-group" role="group">
@@ -52,7 +52,7 @@ Disabled
</div>
```
```
```vue
<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
<button type="button" class="btn btn-success">Success</button>
<div class="btn-group" role="group">
@@ -65,7 +65,7 @@ Disabled
</div>
```
```
```vue
<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
<button type="button" class="btn btn-info">Info</button>
<div class="btn-group" role="group">
@@ -78,7 +78,7 @@ Disabled
</div>
```
```
```vue
<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
<button type="button" class="btn btn-danger">Danger</button>
<div class="btn-group" role="group">
@@ -92,7 +92,7 @@ Disabled
</div>
```
```
```vue
<div>
<button type="button" class="btn btn-primary btn-lg">Large button</button>
<button type="button" class="btn btn-primary">Default button</button>
@@ -102,7 +102,7 @@ Disabled
## Alerts
```
```vue
<div class="alert alert-dismissable alert-warning">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<h4>Warning!</h4>
@@ -110,21 +110,21 @@ Disabled
</div>
```
```
```vue
<div class="alert alert-dismissable alert-danger">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<strong>Oh snap!</strong> <a href="#" class="alert-link">Change a few things up</a> and try submitting again.
</div>
```
```
```vue
<div class="alert alert-dismissable alert-success">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<strong>Well done!</strong> You successfully read <a href="#" class="alert-link">this important alert message</a>.
</div>
```
```
```vue
<div class="alert alert-dismissable alert-info">
<button type="button" class="close" data-dismiss="alert">&times;</button>
<strong>Heads up!</strong> This <a href="#" class="alert-link">alert needs your attention</a>, but it's not super important.
@@ -133,7 +133,7 @@ Disabled
## Badges
```
```vue
<div>
<span class="badge badge-primary">Primary</span>
<span class="badge badge-secondary">Secondary</span>
@@ -144,7 +144,7 @@ Disabled
</div>
```
```
```vue
<div class="">
<ul class="nav nav-pills">
<li class="active"><a href="#">Home <span class="badge">42</span></a></li>
@@ -156,7 +156,7 @@ Disabled
## Tables
```
```vue
<div class="">
<table class="table table-striped table-bordered table-hover">
<thead>
@@ -217,7 +217,7 @@ Disabled
## Cards
```
```vue
<div class="row">
<div class="col-lg-4">
<div class="bs-component">
+7 -7
View File
@@ -1,24 +1,24 @@
## Buttons
```
```vue
<button>Just a default button</button>
```
```
```vue
<a href="#" class="action-button">An anchor with .action-button</a>
```
All the crazy permutations of menu button...
```
```vue
<a href="#" class="menubutton">An anchor with .menu-button</a>
```
```
```vue
<a href="#" class="menubutton popup">An anchor with .menu-button.popup</a>
```
```
```vue
<a href="#" class="menubutton popup split">
<a class="menubutton-label">An anchor with .menu-button.popup.split</a>
</a>
@@ -28,7 +28,7 @@ All the crazy permutations of menu button...
As generated by mvc.ui.ui-options
```
```vue
<div class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary active">
<input type="radio" name="options" id="option1" autocomplete="off" checked> Active
@@ -44,6 +44,6 @@ As generated by mvc.ui.ui-options
## Pagination
```
```vue
<ul class="pagination"><li class="page-item disabled"><a class="page-link" href="#page/1"><span class="fa fa-angle-double-left"></span></a></li><li class="page-item disabled"><a class="page-link" href="#page/1">0</a></li><li class="page-item active"><a class="page-link" href="#page/1">1</a></li><li class="page-item"><a class="page-link" href="#page/2">2</a></li><li class="page-item"><a class="page-link" href="#page/4"><span class="fa fa-angle-double-right"></span></a></li></ul>
```
+2 -2
View File
@@ -2,7 +2,7 @@
Manually crafted "tool" form class, this is broken in the BS4 branch I think.
```
```vue
<div class="tool-form">
<form name="foo">
<div class="form-row">
@@ -18,7 +18,7 @@ Manually crafted "tool" form class, this is broken in the BS4 branch I think.
Portlet variant generated by mvc.form.form-view
```
```vue
<div class="ui-portlet-limited" id="uid-8">
<div class="portlet-header">
<div class="portlet-operations"></div>
+3 -3
View File
@@ -4,7 +4,7 @@ As generated by layout.masthead.js
Default height:
```
```vue
<nav id="masthead" class="navbar navbar-expand justify-content-center navbar-dark bg-dark">
<a class="navbar-brand">
<img class="navbar-brand-image"/>
@@ -26,7 +26,7 @@ Default height:
Override height with "height: 80px;"
```
```vue
<nav id="masthead" class="navbar navbar-expand justify-content-center navbar-dark bg-dark" style="height: 80px;">
<a class="navbar-brand">
<img class="navbar-brand-image"/>
@@ -48,7 +48,7 @@ Override height with "height: 80px;"
Override height with "height: 4rem;"
```
```vue
<nav id="masthead" class="navbar navbar-expand justify-content-center navbar-dark bg-dark" style="height: 4rem;">
<a class="navbar-brand">
<img class="navbar-brand-image"/>
+11 -11
View File
@@ -3,17 +3,17 @@
These are the classes for the menu itself, normally floating, so placed inside
a relative element.
```
```vue
<div style="position: relative; height: 12rem;">
<div class="popmenu-wrapper" style="top: 0;">
<ul class="dropdown-menu">
<li class="head"><a>Heading one</a></li>
<li><a>An item</a></li>
<li><a>Another item</a></li>
<li class="head"><a>Heading two</a></li>
<li><a>Third item</a></li>
<li><a>Last item</a></li>
</ul>
</div>
<div class="popmenu-wrapper" style="top: 0;">
<ul class="dropdown-menu">
<li class="head"><a>Heading one</a></li>
<li><a>An item</a></li>
<li><a>Another item</a></li>
<li class="head"><a>Heading two</a></li>
<li><a>Third item</a></li>
<li><a>Last item</a></li>
</ul>
</div>
</div>
```
+3 -3
View File
@@ -2,7 +2,7 @@
Messages that appear across the top of the panel view below the masthead.
```
```vue
<div>
<div v-for="type in ['done', 'info', 'warning', 'error']">
<div v-bind:class="'panel-' + type + '-message'">I'm a panel-{{type}}-message</div>
@@ -14,7 +14,7 @@ Messages that appear across the top of the panel view below the masthead.
Used for providing feedback inline.
```
```vue
<div>
<div v-for="type in ['done', 'info', 'warning', 'error']">
<div v-bind:class="type + 'messagelarge'">I'm a {{type}}messagelarge</div>
@@ -24,7 +24,7 @@ Used for providing feedback inline.
### Small Messages
```
```vue
<div>
<div v-for="type in ['done', 'info', 'warning', 'error']">
<div v-bind:class="type + 'message'">I'm a {{type}}message</div>
+1 -1
View File
@@ -1,6 +1,6 @@
## Panel (toolMenuContainer)
```
```vue
<div style="height: 200px;">
<div style="position: absolute; width: 250px; height: 200px; border: dotted gray 1px">
<div class="unified-panel-header">
+1 -1
View File
@@ -2,7 +2,7 @@
Tables using the .grid class
```
```vue
<table class="grid">
<thead class="grid-table-header">
<tr><th>One</th><th>Two</th></tr>
+1 -1
View File
@@ -2,7 +2,7 @@
Tabs as generated by mvc.ui.ui-tabs
```
```vue
<ul style="display: flex;" class="tab-navigation nav nav-tabs">
<li class="tab-element nav-item" id="tab-attribute" style="display: list-item;" data-original-title="" title="">
<a class="nav-link active" id="tab-title-link-attribute">
+6 -1
View File
@@ -148,10 +148,15 @@ window.app = function app(options, bootstrapped) {
},
show_workflows_published: function() {
var userFilter = QueryStringParsing.get("f-username");
this.page.display(
new GridView({
url_base: `${Galaxy.root}workflow/list_published`,
active_tab: "shared"
active_tab: "shared",
url_data:
{
'f-username': ( userFilter == null ) ? "" : userFilter
}
})
);
},
@@ -96,9 +96,9 @@ var View = Backbone.View.extend({
/** Main Template */
_template: function(options) {
return `
<div class="ui-rules-edit">
<div class="ui-rules-edit clearfix">
<span class="ui-rules-preview" />
<span class="ui-rules-edit-button" />
<span class="ui-rules-edit-button float-left" />
</div>
`;
},
+1 -1
View File
@@ -133,7 +133,7 @@ var View = Backbone.View.extend({
/** Slider template */
_template: function() {
return `<div class="ui-form-slider container">
return `<div class="ui-form-slider container-fluid">
<div class="row">
<input class="ui-form-slider-text form-control" type="text"/>
<div class="ui-form-slider-element col mt-1"/>
@@ -64,6 +64,7 @@ $.fn.make_text_editable = function(config_dict) {
}
});
button_elt = $("<button/>")
.addClass("btn-sm float-right")
.text("Done")
.click(() => {
set_text(input_elt.val());
View File
+6
View File
@@ -31,6 +31,12 @@ $ui-margin-horizontal: $margin-h;
$ui-margin-horizontal-small: $margin-h * 0.5;
$ui-margin-horizontal-large: $margin-v * 2;
.card {
.card-body {
overflow: auto;
}
}
.ui-modal {
display: none;
overflow: auto;
+1
View File
@@ -1552,6 +1552,7 @@ class GAFASQLite(SQlite):
class Xlsx(Binary):
"""Class for Excel 2007 (xlsx) files"""
file_ext = "xlsx"
compressed = True
def sniff(self, filename):
# Xlsx is compressed in zip format and must not be uncompressed in Galaxy.
+4 -1
View File
@@ -30,6 +30,7 @@ def handle_upload(
):
stdout = None
converted_path = None
multi_file_zip = False
# Does the first 1K contain a null?
is_binary = check_binary(path)
@@ -38,7 +39,7 @@ def handle_upload(
# or if autodetection is selected and the file sniffs as a keep-compressed datatype, it will not be decompressed.
if not link_data_only:
if auto_decompress and is_zip(path) and not is_single_file_zip(path):
stdout = 'ZIP file contained more than one file, only the first file was added to Galaxy.'
multi_file_zip = True
try:
ext, converted_path, compression_type = sniff.handle_uploaded_dataset_file_internal(
path,
@@ -85,5 +86,7 @@ def handle_upload(
" manually")
datatype = registry.get_datatype_by_extension(ext)
if multi_file_zip and not getattr(datatype, 'compressed', False):
stdout = 'ZIP file contained more than one file, only the first file was added to Galaxy.'
return stdout, ext, datatype, is_binary, converted_path
+2 -2
View File
@@ -197,8 +197,8 @@ class CloudManager(sharable.SharableModelManager):
:type authz_id: int
:param authz_id: the ID of CloudAuthz to be used for authorizing access to the resource provider. You may
get a list of the defined authorizations via `/api/cloud/authz`. Also, you can
use `/api/cloud/authz/create` to define a new authorization.
get a list of the defined authorizations sending GET to `/api/cloud/authz`. Also, you can
POST to `/api/cloud/authz` to define a new authorization.
:type input_args: dict
:param input_args: a [Optional] a dictionary of input parameters:
+3 -3
View File
@@ -1407,17 +1407,17 @@ class SharableMixin(object):
action = payload.get("action")
if action == "make_accessible_via_link":
self._make_item_accessible(trans.sa_session, item)
if item.has_possible_members and payload.get("make_members_public", False):
if hasattr(item, "has_possible_members") and item.has_possible_members and payload.get("make_members_public", False):
shared, skipped = self._make_members_public(trans, item)
elif action == "make_accessible_and_publish":
self._make_item_accessible(trans.sa_session, item)
if item.has_possible_members and payload.get("make_members_public", False):
if hasattr(item, "has_possible_members") and item.has_possible_members and payload.get("make_members_public", False):
shared, skipped = self._make_members_public(trans, item)
item.published = True
elif action == "publish":
if item.importable:
item.published = True
if item.has_possible_members and payload.get("make_members_public", False):
if hasattr(item, "has_possible_members") and item.has_possible_members and payload.get("make_members_public", False):
shared, skipped = self._make_members_public(trans, item)
else:
raise exceptions.MessageException("%s not importable." % class_name)
+1 -1
View File
@@ -59,7 +59,7 @@ class CloudAuthzController(BaseAPIController):
@expose_api
def create(self, trans, payload, **kwargs):
"""
* POST /api/cloud/authz/create
* POST /api/cloud/authz
Request to store the payload as a cloudauthz (cloud authorization) configuration for a user.
:type trans: galaxy.web.framework.webapp.GalaxyWebTransaction
+5 -2
View File
@@ -295,8 +295,11 @@ def populate_api_routes(webapp, app):
webapp.mapper.resource('group', 'groups', path_prefix='/api')
webapp.mapper.resource_with_deleted('quota', 'quotas', path_prefix='/api')
webapp.mapper.connect('/api/cloud/authz/', action='index', controller='cloudauthz')
webapp.mapper.connect('/api/cloud/authz/create', action='create', controller='cloudauthz')
webapp.mapper.connect('/api/cloud/authz/', action='index', controller='cloudauthz', conditions=dict(method=["GET"]))
webapp.mapper.connect('/api/cloud/authz/',
action='create',
controller='cloudauthz',
conditions=dict(method=["POST"]))
webapp.mapper.connect('get_custom_builds_metadata',
'/api/histories/{id}/custom_builds_metadata',
@@ -1207,8 +1207,8 @@ class HistoryController(BaseUIController, SharableMixin, UsesAnnotations, UsesIt
messages.append('History \'%s\' does not appear to belong to you.' % cur_name)
# skip if it wouldn't be a change
elif new_name != cur_name:
# escape, sanitize, set, and log the change
h.name = sanitize_html(escape(new_name))
# sanitize, set, and log the change
h.name = sanitize_html(new_name)
trans.sa_session.add(h)
trans.sa_session.flush()
trans.log_event('History renamed: id: %s, renamed to: %s' % (str(h.id), new_name))
+2
View File
@@ -61,6 +61,8 @@ def commit_changeset(repo_path, full_path_to_changeset, username, message):
except Exception as e:
error_message = "Error committing '%s' to repository: %s" % (full_path_to_changeset, e)
if isinstance(e, subprocess.CalledProcessError):
if e.returncode == 1 and 'nothing changed' in e.output:
return
error_message += "\nOutput was:\n%s" % e.output
raise Exception(error_message)
+1
View File
@@ -0,0 +1 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" width="4in" height="4in" version="1"><svg:g><svg:path d="M 144,41 C 86.938,41 41,86.938 41,144 l 0,72 c 0,57.062 45.938,103 103,103 l 71,0 c 57.062,0 103,-45.938 103,-103 l 0,-72 C 318,86.938 272.062,41 215,41 Z m 33.36328,38.224609 c 15.39938,0 28.34375,11.481114 28.34375,25.138671 0,13.65755 -12.94437,25.13867 -28.34375,25.13867 -15.39937,0 -28.34375,-11.48112 -28.34375,-25.13867 0,-13.657557 12.94438,-25.138671 28.34375,-25.138671 z M 138.78711,150 l 62.79883,0 0,126.00586 -40,0 0,-86.00586 -22.79883,0 z" fill="#5050ff" fill-opacity="1" stroke="none" stroke-width="40" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/></svg:g></svg>

After

Width:  |  Height:  |  Size: 785 B

+9 -9
View File
@@ -80,11 +80,11 @@
%endfor
</table>
<p/>
<div class="toolForm">
<div class="toolFormTitle">
<div class="card">
<div class="card-header">
Stop Jobs
</div>
<div class="toolFormBody">
<div class="card-body">
<div class="form-row">
<label>
Stop message:
@@ -154,11 +154,11 @@
%endif
<form name="jobs" action="${h.url_for(controller='admin', action='jobs')}" method="POST">
<div class="toolForm">
<div class="toolFormTitle">
<div class="card">
<div class="card-header">
Update Jobs
</div>
<div class="toolFormBody">
<div class="card-body">
<div class="form-row">
<label>
@@ -180,11 +180,11 @@
<form name="jobs" action="${h.url_for(controller='admin', action='jobs')}" method="POST">
<p/>
<div class="toolForm">
<div class="toolFormTitle">
<div class="card">
<div class="card-header">
Administrative Job Lock
</div>
<div class="toolFormBody">
<div class="card-body">
<div class="form-row">
<input type="hidden" name="ajl_submit" value="True"/>
%if job_lock==True:
@@ -7,9 +7,9 @@
<%
from markupsafe import escape
%>
<div class="toolForm">
<div class="toolFormTitle">Tool migrations that can be performed on this Galaxy instance</div>
<div class="toolFormBody">
<div class="card">
<div class="card-header">Tool migrations that can be performed on this Galaxy instance</div>
<div class="card-body">
<div class="form-row">
<p>
The list of tool migration stages below, displayed most recent to oldest, provides information about the repositories in the
@@ -20,9 +20,9 @@ ${render_galaxy_repository_actions( repository )}
${render_msg( message, status )}
%endif
<div class="toolForm">
<div class="toolFormTitle">Browse ${repository.name|h} revision ${repository.changeset_revision} files</div>
<div class="toolFormBody">
<div class="card">
<div class="card-header">Browse ${repository.name|h} revision ${repository.changeset_revision} files</div>
<div class="card-body">
<div class="form-row" >
<label>Contents:</label>
<div id="tree" >
@@ -22,9 +22,9 @@ ${render_galaxy_repository_actions( repository )}
${render_msg( message, status )}
%endif
<div class="toolForm">
<div class="toolFormTitle">Browse tool dependency ${tool_dependency.name|h} installation directory</div>
<div class="toolFormBody">
<div class="card">
<div class="card-header">Browse tool dependency ${tool_dependency.name|h} installation directory</div>
<div class="card-body">
<div class="form-row" >
<label>Tool shed repository:</label>
${repository.name|h}
@@ -20,12 +20,12 @@ else:
${render_msg( message, status )}
%endif
<div class="toolForm">
<div class="card">
<form name="deactivate_or_uninstall_repository" id="deactivate_or_uninstall_repository" action="${ h.url_for( controller='admin_toolshed', action='deactivate_or_uninstall_repository' ) }" method="post" >
%for repository in repositories:
<input type="hidden" name="id" value="${ trans.security.encode_id( repository.id ) | h }" />
<div class="toolFormTitle">${repository.name|h}</div>
<div class="toolFormBody">
<div class="card-header">${repository.name|h}</div>
<div class="card-body">
<div class="form-row">
<label>Description:</label>
${repository.description|h}
@@ -18,8 +18,8 @@ ${render_galaxy_repository_actions( repository )}
</p>
</div>
<div class="toolForm">
<div class="toolFormBody">
<div class="card">
<div class="card-body">
<form name="install_tool_dependencies_with_update" id="install_tool_dependencies_with_update" action="${h.url_for( controller='admin_toolshed', action='install_tool_dependencies_with_update' )}" method="post" >
<input type="hidden" name="updating_repository_id" value="${updating_repository_id|h}"/>
<input type="hidden" name="updating_to_ctx_rev" value="${updating_to_ctx_rev|h}"/>
@@ -21,9 +21,9 @@ ${render_galaxy_repository_actions( repository )}
${render_msg( message, status )}
%endif
<div class="toolForm">
<div class="toolFormTitle">Installed tool shed repository '${repository.name|h}'</div>
<div class="toolFormBody">
<div class="card">
<div class="card-header">Installed tool shed repository '${repository.name|h}'</div>
<div class="card-body">
<form name="edit_repository" id="edit_repository" action="${h.url_for( controller='admin_toolshed', action='manage_repository', id=trans.security.encode_id( repository.id ) )}" method="post" >
<div class="form-row">
<label>Tool shed:</label>
@@ -19,15 +19,15 @@ ${render_galaxy_repository_actions( repository )}
${render_msg( message, status )}
%endif
<div class="toolForm">
<div class="toolFormTitle">Tool shed repository '${repository.name|h}' tool dependencies</div>
<div class="card">
<div class="card-header">Tool shed repository '${repository.name|h}' tool dependencies</div>
<%
can_install = False
can_uninstall = False
%>
<br/><br/>
<table class="grid">
<tr><th bgcolor="#D8D8D8">Name</th><th bgcolor="#D8D8D8">Version</th><th bgcolor="#D8D8D8">Type</th><th bgcolor="#D8D8D8">Status</th><th bgcolor="#D8D8D8">Error</th></tr>
<tr><th>Name</th><th>Version</th><th>Type</th><th>Status</th><th>Error</th></tr>
%for tool_dependency in repository.tool_dependencies:
<%
if tool_dependency.error_message:
@@ -36,9 +36,9 @@
%endif
%if tool_shed_repositories:
<div class="toolForm">
<div class="toolFormTitle">Monitor installing tool shed repositories</div>
<div class="toolFormBody">
<div class="card">
<div class="card-header">Monitor installing tool shed repositories</div>
<div class="card-body">
<table class="grid">
<tr>
<td>Name</td>
@@ -25,8 +25,8 @@ ${render_galaxy_repository_actions( repository )}
</p>
</div>
<div class="toolForm">
<div class="toolFormTitle">Purge tool shed repository <b>${repository.name|h}</b></div>
<div class="card">
<div class="card-header">Purge tool shed repository <b>${repository.name|h}</b></div>
<form name="purge_repository" id="purge_repository" action="${h.url_for( controller='admin_toolshed', action='purge_repository', id=trans.security.encode_id( repository.id ) )}" method="post" >
<%
tool_versions = 0
@@ -20,8 +20,8 @@
${render_msg( message, status )}
%endif
<div class="toolForm">
<div class="toolFormBody">
<div class="card">
<div class="card-body">
<form name="reselect_tool_panel_section" id="reselect_tool_panel_section" action="${h.url_for( controller='admin_toolshed', action='reinstall_repository', id=trans.security.encode_id( repository.id ) )}" method="post" >
<div class="form-row">
<input type="hidden" name="repo_info_dict" value="${encoded_repo_info_dict}" />
@@ -11,13 +11,14 @@
${render_msg( message, status )}
%endif
<div class="warningmessage">
<div class="alert alert-warning">
Resetting metadata may take a while, so wait until this page redirects after clicking the <b>Reset metadata on selected repositories</b> button, as
doing anything else will not be helpful.
</div>
<div class="toolForm">
<div class="toolFormTitle">Reset all metadata on each selected tool shed repository</div>
<div class="card">
<div class="card-header">Reset all metadata on each selected tool shed repository</div>
<div class="card-body">
<form name="reset_metadata_on_selected_repositories" id="reset_metadata_on_selected_repositories" action="${h.url_for( controller='admin_toolshed', action='reset_metadata_on_selected_installed_repositories' )}" method="post" >
<div class="form-row">
Check each repository for which you want to reset metadata. Repository names are followed by owners in parentheses.
@@ -60,8 +60,8 @@
general questions or concerns.
</p>
</div>
<div class="toolForm">
<div class="toolFormBody">
<div class="card">
<div class="card-body">
<form name="select_tool_panel_section" id="select_tool_panel_section" action="${h.url_for( controller='admin_toolshed', action='prepare_for_install' )}" method="post" >
<div class="form-row">
<input type="hidden" name="includes_tools" value="${includes_tools}" />
@@ -10,9 +10,9 @@ ${render_galaxy_repository_actions( repository )}
${render_msg( message, status )}
%endif
<div class="toolForm">
<div class="toolFormTitle">Uninstall tool dependencies</div>
<div class="toolFormBody">
<div class="card">
<div class="card-header">Uninstall tool dependencies</div>
<div class="card-body">
<form name="uninstall_tool_dependenceies" id="uninstall_tool_dependenceies" action="${h.url_for( controller='admin_toolshed', action='uninstall_tool_dependencies' )}" method="post" >
<div class="form-row">
<table class="grid">
@@ -10,9 +10,9 @@ ${render_galaxy_repository_actions( repository )}
%if tool_metadata:
<p/>
<div class="toolForm">
<div class="toolFormTitle">${tool_metadata[ 'name' ]|h} tool metadata</div>
<div class="toolFormBody">
<div class="card">
<div class="card-header">${tool_metadata[ 'name' ]|h} tool metadata</div>
<div class="card-body">
<div class="form-row">
<table width="100%">
<tr bgcolor="#D8D8D8" width="100%"><td><b>Miscellaneous</td></tr>
@@ -26,7 +26,7 @@ ${render_galaxy_repository_actions( repository )}
${render_msg( message, status )}
%endif
<div class="toolFormTitle">${workflow_name | h}</div>
<div class="card-header">${workflow_name | h}</div>
<div class="form-row">
<div class="toolParamHelp" style="clear: both;">
(this page displays SVG graphics)
+3 -2
View File
@@ -56,7 +56,8 @@
## Render a message
<%def name="render_msg( msg, status='done' )">
<div class="${status}message">${_(msg)}</div>
<br/>
<% status = "success" if status == "done" else status %>
<% status = "danger" if status == "error" else status %>
<div class="mt-2 alert alert-${status}">${_(msg)}</div>
</%def>
+8 -8
View File
@@ -18,24 +18,24 @@
}
function renderError(message) {
$(".donemessage").hide();
if ($(".errormessage").length === 1) {
$(".errormessage").html(message);
$(".alert-info").hide();
if ($(".alert-danger").length === 1) {
$(".alert-danger").html(message);
} else {
var div = document.createElement( "div" );
div.className = "errormessage";
div.className = "alert alert-danger";
div.innerHTML = message;
document.body.insertBefore( div, document.body.firstChild );
}
}
function renderDone(message) {
$(".errormessage").hide();
if ($(".donemessage").length === 1) {
$(".donemessage").html(message);
$(".alert-danger").hide();
if ($(".alert-info").length === 1) {
$(".alert-info").html(message);
} else {
var div = document.createElement( "div" );
div.className = "donemessage";
div.className = "alert alert-info";
div.innerHTML = message;
document.body.insertBefore( div, document.body.firstChild );
}
+4 -4
View File
@@ -79,12 +79,12 @@ def inherit(context):
}
function renderError(message) {
if (!$(".errormessage").size()) {
$('<div/>').addClass('errormessage').insertBefore('#registrationForm');
if (!$(".alert-danger").size()) {
$('<div/>').addClass('alert alert-danger').insertBefore('#registrationForm');
}
console.debug( $( '#registrationForm' ) );
console.debug( '.errormessage:', $( '.errormessage' ) );
$(".errormessage").html(message);
console.debug( '.alert-danger:', $( '.alert-danger' ) );
$(".alert-danger").html(message);
}
$("[name='password']").complexify({'minimumChars':6}, function(valid, complexity){
@@ -24,14 +24,14 @@
<%def name="render_tool_centric_table( tools, requirements_status)">
<tr>
<th bgcolor="#D8D8D8">Select</th>
<th bgcolor="#D8D8D8">Name</th>
<th bgcolor="#D8D8D8">ID</th>
<th bgcolor="#D8D8D8">Requirement</th>
<th bgcolor="#D8D8D8">Version</th>
<th bgcolor="#D8D8D8">Resolver</th>
<th bgcolor="#D8D8D8">Exact</th>
<th bgcolor="#D8D8D8"></th>
<th>Select</th>
<th>Name</th>
<th>ID</th>
<th>Requirement</th>
<th>Version</th>
<th>Resolver</th>
<th>Exact</th>
<th></th>
</tr>
<% ctr = 0 %>
%for tool in tools.values():
@@ -55,8 +55,8 @@
<%def name="render_unused_dependencies(unused_environments)">
<tr>
<th bgcolor="#D8D8D8">Select</th>
<th bgcolor="#D8D8D8">Environment Path</th>
<th>Select</th>
<th>Environment Path</th>
</tr>
<% ctr = 0 %>
%for path in unused_environments:
@@ -76,14 +76,14 @@
<%def name="render_dependencies_details(tools, requirements_status, tool_ids_by_requirements)">
<tr>
<th bgcolor="#D8D8D8">Select</th>
<th bgcolor="#D8D8D8">Used by</th>
<th bgcolor="#D8D8D8">Environment Path</th>
<th bgcolor="#D8D8D8">Requirement</th>
<th bgcolor="#D8D8D8">Version</th>
<th bgcolor="#D8D8D8">Resolver</th>
<th bgcolor="#D8D8D8">Exact</th>
<th bgcolor="#D8D8D8"></th>
<th>Select</th>
<th>Used by</th>
<th>Environment Path</th>
<th>Requirement</th>
<th>Version</th>
<th>Resolver</th>
<th>Exact</th>
<th></th>
</tr>
<% ctr = 0 %>
%for requirements, r_status in requirements_status.items():
@@ -107,14 +107,14 @@
<%def name="render_dependencies_details(tools, requirements_status, tool_ids_by_requirements)">
<tr>
<th bgcolor="#D8D8D8">Select</th>
<th bgcolor="#D8D8D8">Used by</th>
<th bgcolor="#D8D8D8">Environment Path</th>
<th bgcolor="#D8D8D8">Requirement</th>
<th bgcolor="#D8D8D8">Version</th>
<th bgcolor="#D8D8D8">Resolver</th>
<th bgcolor="#D8D8D8">Exact</th>
<th bgcolor="#D8D8D8"></th>
<th>Select</th>
<th>Used by</th>
<th>Environment Path</th>
<th>Requirement</th>
<th>Version</th>
<th>Resolver</th>
<th>Exact</th>
<th></th>
</tr>
<% ctr = 0 %>
%for requirements, r_status in requirements_status.items():
@@ -147,25 +147,25 @@
%if viewkey == "Switch to tool-centric view":
<input type="submit" name="viewkey" value="Switch to details view"/>
<input type="submit" name="viewkey" value="Switch to unused dependencies view"/>
<div class="toolForm">
<div class="toolFormTitle">Tool-centric dependencies</div>
<div class="toolFormBody">
<div class="card mt-2 mb-2">
<div class="card-header">Tool-centric dependencies</div>
<div class="card-body">
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" width="100%">
${render_tool_centric_table(tools, requirements_status)}
%elif viewkey == "Switch to unused dependencies view":
<input type="submit" name="viewkey" value="Switch to details view"/>
<input type="submit" name="viewkey" value="Switch to tool-centric view"/>
<div class="toolForm">
<div class="toolFormTitle">Unused dependency environments</div>
<div class="toolFormBody">
<div class="card">
<div class="card-header">Unused dependency environments</div>
<div class="card-body">
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" width="100%">
${render_unused_dependencies(unused_environments)}
%else:
<input type="submit" name="viewkey" value="Switch to tool-centric view"/>
<input type="submit" name="viewkey" value="Switch to unused dependencies view"/>
<div class="toolForm">
<div class="toolFormTitle">Dependency details</div>
<div class="toolFormBody">
<div class="card mt-2 mb-2">
<div class="card-header">Dependency details</div>
<div class="card-body">
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" width="100%">
${render_dependencies_details(tools, requirements_status, tool_ids_by_requirements)}
%endif
@@ -23,14 +23,14 @@
even when their creating tool is whitelisted since it isn't possible to
validate the information supplied in the archive.</p></div>
<form name="sanitize_whitelist" method="post" action="${h.url_for( controller='admin', action='sanitize_whitelist' )}">
<div class="toolForm">
<div class="toolFormTitle">Tool Sanitization Whitelist</div>
<div class="toolFormBody">
<div class="card mb-3">
<div class="card-header">Tool Sanitization Whitelist</div>
<div class="card-body">
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<th bgcolor="#D8D8D8">Whitelist</th>
<th bgcolor="#D8D8D8">Name</th>
<th bgcolor="#D8D8D8">ID</th>
<th>Whitelist</th>
<th>Name</th>
<th>ID</th>
</tr>
<% ctr = 0 %>
%for tool in tools.values():
@@ -5,19 +5,19 @@
${render_msg( message, status )}
%endif
<div class="toolForm" id="display-applications-grid">
<div class="toolFormTitle">There are currently ${len( display_applications )} <a class="icon-btn" href="${ h.url_for( controller='admin', action='reload_display_application' ) }" title="Reload all display applications" data-placement="bottom">
<div class="card" id="display-applications-grid">
<div class="card-header">There are currently ${len( display_applications )} <a class="icon-btn" href="${ h.url_for( controller='admin', action='reload_display_application' ) }" title="Reload all display applications" data-placement="bottom">
<span class="fa fa-refresh"></span>
</a> display applications loaded.</div>
<div class="toolFormBody">
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" width="100%">
<div class="card-body">
<table class="manage-table colored">
<tr>
<th bgcolor="#D8D8D8">Reload</th>
<th bgcolor="#D8D8D8">Name</th>
<th bgcolor="#D8D8D8">ID</th>
<th bgcolor="#D8D8D8">Version</th>
<th bgcolor="#D8D8D8">Links</th>
<th bgcolor="#D8D8D8">Filename</th>
<th>Reload</th>
<th>Name</th>
<th>ID</th>
<th>Version</th>
<th>Links</th>
<th>Filename</th>
</tr>
<% ctr = 0 %>
%for display_app in display_applications.values():
+3 -3
View File
@@ -52,7 +52,7 @@
%if send_to_err:
<div style="clear: both"></div>
<div class="form-row">
<div class="errormessage">${send_to_err}</div>
<div class="alert alert-danger">${send_to_err}</div>
</div>
%endif
<div style="clear: both"></div>
@@ -157,7 +157,7 @@
%if send_to_err:
<div style="clear: both"></div>
<div class="form-row">
<div class="errormessage">${send_to_err}</div>
<div class="alert alert-danger">${send_to_err}</div>
</div>
%endif
## Needed for rebuilding dicts
@@ -223,7 +223,7 @@
## cannot_change looks like: {historyX : [hda, hda], historyY : [hda] }
<div style="clear: both"></div>
<div class="form-row">
<div class="errormessage">
<div class="alert alert-danger">
The following datasets cannot be shared with ${email} because you are not authorized to
change the permissions on them
</div>
+4 -4
View File
@@ -18,11 +18,11 @@ _: # global stuff
messages:
selectors:
all: '[class*="message"]'
error: '.errormessage'
all: '[class*="alert"]'
error: '.alert-danger'
warning: '.alert-warning'
done: '.donemessage'
info: '.infomessage'
done: '.alert-success'
info: '.alert-info'
donelarge: '.donemessagelarge'
infolarge: '.infomessagelarge'