mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-19 02:21:32 +08:00
Merge remote-tracking branch 'upstream/dev' into unified_webpack4
This commit is contained in:
+2
-2
@@ -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
|
||||
|
||||
@@ -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).
|
||||
@@ -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">×</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">×</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">×</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">×</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">
|
||||
|
||||
@@ -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,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>
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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>
|
||||
```
|
||||
|
||||
@@ -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,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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
`;
|
||||
},
|
||||
|
||||
@@ -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());
|
||||
|
||||
Executable → Regular
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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 |
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user