Merge branch 'dev'
@@ -28,7 +28,7 @@ docker run -e GIT_COMMITTER_NAME=Jenkins -e GIT_COMMITTER_EMAIL=jenkins@galaxypr
|
||||
/bin/bash -c 'make client-production-maps'
|
||||
|
||||
# Start Selenium server in the test Docker container.
|
||||
DOCKER_RUN_EXTRA_ARGS="-v $YARN_CACHE_FOLDER:$YARN_CACHE_FOLDER -e YARN_CACHE_FOLDER=$YARN_CACHE_FOLDER -e USE_SELENIUM=1 -e GALAXY_TEST_SELENIUM_RETRIES=${GALAXY_TEST_SELENIUM_RETRIES} -e GALAXY_TEST_ERRORS_DIRECTORY=${GALAXY_TEST_ERRORS_DIRECTORY} -e GALAXY_TEST_SCREENSHOTS_DIRECTORY=${GALAXY_TEST_SCREENSHOTS_DIRECTORY} ${DOCKER_RUN_EXTRA_ARGS}"
|
||||
DOCKER_RUN_EXTRA_ARGS="--shm-size=2g -v $YARN_CACHE_FOLDER:$YARN_CACHE_FOLDER -e YARN_CACHE_FOLDER=$YARN_CACHE_FOLDER -e USE_SELENIUM=1 -e GALAXY_TEST_SELENIUM_RETRIES=${GALAXY_TEST_SELENIUM_RETRIES} -e GALAXY_TEST_ERRORS_DIRECTORY=${GALAXY_TEST_ERRORS_DIRECTORY} -e GALAXY_TEST_SCREENSHOTS_DIRECTORY=${GALAXY_TEST_SCREENSHOTS_DIRECTORY} ${DOCKER_RUN_EXTRA_ARGS}"
|
||||
export DOCKER_RUN_EXTRA_ARGS
|
||||
|
||||
./run_tests.sh --dockerize --db postgres --external_tmp --clean_pyc --skip_flakey_fails --selenium "$@"
|
||||
|
||||
@@ -105,6 +105,7 @@ test-data-cache
|
||||
run_framework_tests.html
|
||||
run_functional_tests.html
|
||||
run_integration_tests.html
|
||||
run_selenium_tests.html
|
||||
run_toolshed_tests.html
|
||||
run_api_tests.html
|
||||
test/tool_shed/tmp/*
|
||||
|
||||
@@ -41,11 +41,8 @@ for inspection of live javascript to facilitate debugging, use:
|
||||
|
||||
make client-production-maps
|
||||
|
||||
Important Note: The development branch of Galaxy does not include client script
|
||||
artifacts, and these should not be committed. When issuing a PR to a stable
|
||||
branch, please run "make client-production-maps", and include those artifacts.
|
||||
Or, if you'd rather, include only the /client source changes and build
|
||||
artifacts can be added by maintainers on merge.
|
||||
Important Note: The Galaxy repository does not include client script artifacts,
|
||||
and these should not be committed.
|
||||
|
||||
|
||||
Automatic Rebuilding (Watch Mode)
|
||||
|
||||
@@ -135,8 +135,8 @@ Disabled
|
||||
|
||||
```
|
||||
<div>
|
||||
<span class="badge badge-default">Default</span>
|
||||
<span class="badge badge-primary">Primary</span>
|
||||
<span class="badge badge-secondary">Secondary</span>
|
||||
<span class="badge badge-success">Success</span>
|
||||
<span class="badge badge-warning">Warning</span>
|
||||
<span class="badge badge-danger">Danger</span>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import $ from "jquery";
|
||||
import "bootstrap";
|
||||
import * as _ from "underscore";
|
||||
import decodeUriComponent from "decode-uri-component";
|
||||
import GalaxyApp from "galaxy";
|
||||
import Router from "layout/router";
|
||||
import ToolPanel from "./panels/tool-panel";
|
||||
@@ -357,7 +358,12 @@ window.app = function app(options, bootstrapped) {
|
||||
/** load the center panel with a tool form described by the given params obj */
|
||||
_loadToolForm: function(params) {
|
||||
//TODO: load tool form code async
|
||||
params.id = decodeURIComponent(params.tool_id);
|
||||
if (params.tool_id) {
|
||||
params.id = decodeUriComponent(params.tool_id);
|
||||
}
|
||||
if (params.version) {
|
||||
params.version = decodeUriComponent(params.version);
|
||||
}
|
||||
this.page.display(new ToolForm.View(params));
|
||||
},
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ var AdminPanel = Backbone.View.extend({
|
||||
this.$el.empty();
|
||||
this.categories.each(category => {
|
||||
var $section = $(self._templateSection(category.attributes));
|
||||
var $entries = $section.find(".ui-side-section-body");
|
||||
var $entries = $section.find(".toolSectionBody");
|
||||
_.each(category.get("items"), item => {
|
||||
if (item.enabled === undefined || item.enabled) {
|
||||
var $link = $("<a/>")
|
||||
@@ -165,7 +165,7 @@ var AdminPanel = Backbone.View.extend({
|
||||
}
|
||||
$entries.append(
|
||||
$("<div/>")
|
||||
.addClass("ui-side-section-body-title")
|
||||
.addClass("toolTitle")
|
||||
.append($link)
|
||||
);
|
||||
}
|
||||
@@ -175,16 +175,14 @@ var AdminPanel = Backbone.View.extend({
|
||||
},
|
||||
|
||||
_templateSection: function(options) {
|
||||
return [
|
||||
"<div>",
|
||||
`<div class="ui-side-section-title">${_l(options.title)}</div>`,
|
||||
'<div class="ui-side-section-body"/>',
|
||||
"</div>"
|
||||
].join("");
|
||||
return `<div class="toolSectionWrapper">
|
||||
<div class="toolSectionTitle">${_l(options.title)}</div>
|
||||
<div class="toolSectionBody"/>
|
||||
</div>`;
|
||||
},
|
||||
|
||||
_template: function() {
|
||||
return '<div class="ui-side-panel"/>';
|
||||
return '<div class="toolMenuContainer"/>';
|
||||
},
|
||||
|
||||
toString: function() {
|
||||
|
||||
@@ -93,7 +93,6 @@ export default {
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.light {
|
||||
font-weight: lighter;
|
||||
color: grey;
|
||||
@@ -101,11 +100,9 @@ export default {
|
||||
.right-aligned {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.clickable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.workflow {
|
||||
border: solid gray 1px;
|
||||
margin-bottom: 1%;
|
||||
@@ -120,38 +117,17 @@ export default {
|
||||
.workflow > .body {
|
||||
border-top: solid gray 1px;
|
||||
}
|
||||
.workflow > .body > .toolForm {
|
||||
.workflow > .body > .tool {
|
||||
border: 0px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.toolForm {
|
||||
border-width: 1px;
|
||||
border-radius: 0px;
|
||||
margin-bottom: 1%;
|
||||
div.tool {
|
||||
margin-bottom: 5px;
|
||||
border: 1px solid gray;
|
||||
}
|
||||
.toolForm > .header {
|
||||
background-color: #ebd9b2;
|
||||
.tool > .header {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
.workflow div.toolForm:not(:first-child) .header {
|
||||
border-top: 1px solid #d6b161;
|
||||
}
|
||||
div.toolFormTitle {
|
||||
padding: 0px 0px 4px 0px;
|
||||
margin: 0px 0px 4px 0px;
|
||||
border: 0px;
|
||||
background-color: transparent;
|
||||
border-bottom: 1px solid #d6b161;
|
||||
}
|
||||
/* down from EBD9B2 --> 90743A */
|
||||
.toolFormTitle > .light {
|
||||
color: #90743a;
|
||||
}
|
||||
.toolForm em {
|
||||
color: #90743a;
|
||||
}
|
||||
|
||||
.job-inputs {
|
||||
margin: 0px 6px 0px 6px;
|
||||
text-align: left;
|
||||
@@ -159,7 +135,7 @@ div.toolFormTitle {
|
||||
.job-inputs td:nth-child(1) {
|
||||
text-align: right;
|
||||
font-weight: lighter;
|
||||
color: #90743a;
|
||||
color: gray;
|
||||
}
|
||||
.job-inputs td:nth-child(1):after {
|
||||
content: ":";
|
||||
@@ -167,17 +143,13 @@ div.toolFormTitle {
|
||||
.job-inputs td:nth-child(2) {
|
||||
padding-left: 4px;
|
||||
}
|
||||
.job-inputs em {
|
||||
}
|
||||
|
||||
.job-inputs-show {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.copied-from {
|
||||
border: 1px solid lightgrey;
|
||||
border-width: 1px 1px 0px 1px;
|
||||
margin-bottom: 1%;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.copied-from .header {
|
||||
border-bottom: 1px solid lightgrey;
|
||||
@@ -187,19 +159,4 @@ div.toolFormTitle {
|
||||
.copied-from .header a {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.dataset.hda {
|
||||
min-height: 37px;
|
||||
border-width: 0px 0px 1px 0px;
|
||||
}
|
||||
.toolFormBody > .dataset.hda:last-child {
|
||||
border-bottom-width: 0px;
|
||||
}
|
||||
.dataset.hda:first-child {
|
||||
border-top: 1px solid #d6b161;
|
||||
}
|
||||
.dataset.hda .dataset-title-bar {
|
||||
padding-top: 8px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<div class="icon-dropdown fa fa-caret-down"/>
|
||||
</div>
|
||||
<button type="button" class="ui-button-default float-left mt-3 btn btn-primary" @click="create(plugin)">
|
||||
<i class="icon fa fa-check ui-margin-right"/>
|
||||
<i class="icon fa fa-check"/>
|
||||
<span class="title">Create Visualization</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
</column-selector>
|
||||
</div>
|
||||
<div class="buttons rule-edit-buttons d-flex justify-content-end">
|
||||
<button v-b-tooltip.hover :title="titleAddColumnDefinition" type="button" class="dropdown-toggle btn btn-primary mr-1" data-toggle="dropdown" v-if="unmappedTargets.length > 0">
|
||||
<button type="button" class="dropdown-toggle btn btn-primary mr-1" data-toggle="dropdown" v-if="unmappedTargets.length > 0">
|
||||
<span class="fa fa-plus rule-add-mapping"></span> {{ "Add Definition" }}<span class="caret"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu" role="menu">
|
||||
@@ -903,7 +903,6 @@ export default {
|
||||
titleColumMenu: _l("Rules that generate new columns"),
|
||||
titleRemoveMapping: _l("Remove column definition assignment"),
|
||||
titleApplyColumnDefinitions: _l("Apply these column definitions and return to rules preview"),
|
||||
titleAddColumnDefinition: _l("Assign a new piece of metadata as being derived from a column of the table"),
|
||||
titleErrorOkay: _l("Dismiss this error and return to the rule builder to try again with new rules"),
|
||||
namePlaceholder: _l("Enter a name for your new collection"),
|
||||
activeRuleIndex: null,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div v-if="ready">
|
||||
<h2>Share or Publish {{model_class}} `{{item.title}}`</h2>
|
||||
<b-alert variant="danger" :show="err_msg">
|
||||
<b-alert :show="show_danger" variant="danger" dismissible>
|
||||
{{ err_msg }}
|
||||
</b-alert>
|
||||
</br>
|
||||
@@ -53,9 +53,17 @@
|
||||
<div v-else>
|
||||
<p>This {{model_class_lc}} is currently restricted so that only you and the users listed below can access it. You can:</p>
|
||||
<b-button @click="setSharing('make_accessible_via_link')">Make {{model_class}} Accessible via Link</b-button>
|
||||
<span v-if="has_possible_members" class="chkk">
|
||||
Also make all objects within the {{model_class}} accessible.
|
||||
<input type="checkbox" v-model="make_members_public" id="chk_make_members_public">
|
||||
</span>
|
||||
<div class="toolParamHelp">Generates a web link that you can share with other people so that they can view and import the {{model_class_lc}}.</div>
|
||||
<br/>
|
||||
<b-button id="make_accessible_and_publish" @click="setSharing('make_accessible_and_publish')">Make {{model_class}} Accessible and Publish</b-button>
|
||||
<span v-if="has_possible_members" class="chkk">
|
||||
Also make all objects within the {{model_class}} accessible.
|
||||
<input type="checkbox" v-model="make_members_public" id="chk_make_members_public">
|
||||
</span>
|
||||
<div class="toolParamHelp">Makes the {{model_class_lc}} accessible via link (see above) and publishes the {{model_class_lc}} to Galaxy's <a :href="published_url" target="_top">Published {{plural_name}}</a> section, where it is publicly listed and searchable.</div>
|
||||
</div>
|
||||
<br/><br/>
|
||||
@@ -131,6 +139,12 @@ export default {
|
||||
},
|
||||
slug_url() {
|
||||
return `${Galaxy.root}${this.model_class_lc}/set_slug_async/?id=${this.id}`;
|
||||
},
|
||||
has_possible_members() {
|
||||
return ["history"].indexOf(this.model_class_lc) > -1;
|
||||
},
|
||||
show_danger() {
|
||||
return this.err_msg !== null;
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -147,7 +161,8 @@ export default {
|
||||
published: false,
|
||||
users_shared_with: []
|
||||
},
|
||||
share_fields: ["email", { key: "id", label: "" }]
|
||||
share_fields: ["email", { key: "id", label: "" }],
|
||||
make_members_public: false
|
||||
};
|
||||
},
|
||||
created: function() {
|
||||
@@ -180,13 +195,20 @@ export default {
|
||||
.catch(error => (this.err_msg = error.response.data.err_msg));
|
||||
},
|
||||
setSharing: function(action, user_id) {
|
||||
let data = {
|
||||
action: action,
|
||||
user_id: user_id
|
||||
};
|
||||
if (this.has_possible_members) {
|
||||
data.make_members_public = this.make_members_public;
|
||||
}
|
||||
axios
|
||||
.post(`${Galaxy.root}api/${this.plural_name_lc}/${this.id}/sharing`, {
|
||||
action: action,
|
||||
user_id: user_id
|
||||
})
|
||||
.post(`${Galaxy.root}api/${this.plural_name_lc}/${this.id}/sharing`, data)
|
||||
.then(response => {
|
||||
Object.assign(this.item, response.data);
|
||||
if (response.data.skipped) {
|
||||
this.err_msg = "Some of the items within this object were not published due to an error.";
|
||||
}
|
||||
})
|
||||
.catch(error => (this.err_msg = error.response.data.err_msg));
|
||||
},
|
||||
@@ -233,3 +255,8 @@ export default {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.chkk {
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<div class="toolForm">
|
||||
<div class="toolFormTitle">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<slot name="title">{{ title }}</slot>
|
||||
</div>
|
||||
<div class="toolFormBody">
|
||||
<div class="card-body">
|
||||
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" width="100%">
|
||||
<slot name="columns">
|
||||
<th v-for="column in columns" bgcolor="#D8D8D8">{{ column.text }}</th>
|
||||
@@ -41,3 +41,8 @@ export default {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.card-body {
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -447,7 +447,11 @@ WYMeditor.editor.prototype.dialog = function(dialogType, dialogFeatures, bodyHtm
|
||||
// Get item ID and name.
|
||||
var item_id = elt.val();
|
||||
// Use ':first' because there are many labels in table; the first one is the item name.
|
||||
var item_name = elt.closest('td').next('td').find('label').text();
|
||||
var item_name = elt
|
||||
.closest("td")
|
||||
.next("td")
|
||||
.find("label")
|
||||
.text();
|
||||
|
||||
if (make_importable) make_item_importable(item_info.controller, item_id, item_info.singular);
|
||||
|
||||
|
||||
@@ -12,28 +12,28 @@ import _l from "utils/localization";
|
||||
|
||||
export default Backbone.View.extend({
|
||||
initialize: function(options) {
|
||||
var self = this;
|
||||
options = options || {};
|
||||
this.frames = new Frames.View({ visible: false });
|
||||
this.setElement(this.frames.$el);
|
||||
this.active = false;
|
||||
this.buttonActive = options.collection.add({
|
||||
id: "enable-scratchbook",
|
||||
icon: "fa-th",
|
||||
tooltip: _l("Enable/Disable Scratchbook"),
|
||||
onclick: function() {
|
||||
self.active = !self.active;
|
||||
self.buttonActive.set({
|
||||
toggle: self.active,
|
||||
show_note: self.active,
|
||||
note_cls: self.active && "fa fa-check"
|
||||
onclick: () => {
|
||||
this.active = !this.active;
|
||||
this.buttonActive.set({
|
||||
toggle: this.active,
|
||||
show_note: this.active,
|
||||
note_cls: this.active && "fa fa-check"
|
||||
});
|
||||
if (!self.active) {
|
||||
self.frames.hide();
|
||||
if (!this.active) {
|
||||
this.frames.hide();
|
||||
}
|
||||
},
|
||||
onbeforeunload: function() {
|
||||
if (self.frames.length() > 0) {
|
||||
return `You opened ${self.frames.length()} frame(s) which will be lost.`;
|
||||
onbeforeunload: () => {
|
||||
if (this.frames.length() > 0) {
|
||||
return `You opened ${this.frames.length()} frame(s) which will be lost.`;
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -43,28 +43,28 @@ export default Backbone.View.extend({
|
||||
tooltip: _l("Show/Hide Scratchbook"),
|
||||
show_note: true,
|
||||
visible: false,
|
||||
onclick: function(e) {
|
||||
if (self.frames.visible) {
|
||||
self.frames.hide();
|
||||
onclick: e => {
|
||||
if (this.frames.visible) {
|
||||
this.frames.hide();
|
||||
} else {
|
||||
self.frames.show();
|
||||
this.frames.show();
|
||||
}
|
||||
}
|
||||
});
|
||||
this.frames
|
||||
.on("add remove", function() {
|
||||
if (this.visible && this.length() === 0) {
|
||||
this.hide();
|
||||
.on("add remove", () => {
|
||||
if (this.frames.visible && this.frames.length() === 0) {
|
||||
this.frames.hide();
|
||||
}
|
||||
self.buttonLoad.set({
|
||||
note: this.length(),
|
||||
visible: this.length() > 0
|
||||
this.buttonLoad.set({
|
||||
note: this.frames.length(),
|
||||
visible: this.frames.length() > 0
|
||||
});
|
||||
})
|
||||
.on("show hide ", function() {
|
||||
self.buttonLoad.set({
|
||||
toggle: this.visible,
|
||||
icon: (this.visible && "fa-eye") || "fa-eye-slash"
|
||||
.on("show hide ", () => {
|
||||
this.buttonLoad.set({
|
||||
toggle: this.frames.visible,
|
||||
icon: (this.frames.visible && "fa-eye") || "fa-eye-slash"
|
||||
});
|
||||
});
|
||||
this.history_cache = {};
|
||||
|
||||
@@ -118,7 +118,7 @@ var View = Backbone.View.extend({
|
||||
var form = new Form({
|
||||
title: _l("Edit attributes"),
|
||||
operations: {
|
||||
submit_attributes: new Ui.ButtonIcon({
|
||||
submit_attributes: new Ui.Button({
|
||||
tooltip: _l("Save attributes of the dataset."),
|
||||
icon: "fa-floppy-o",
|
||||
title: _l("Save"),
|
||||
@@ -126,7 +126,7 @@ var View = Backbone.View.extend({
|
||||
self._submit("attributes", form);
|
||||
}
|
||||
}),
|
||||
submit_autodetect: new Ui.ButtonIcon({
|
||||
submit_autodetect: new Ui.Button({
|
||||
tooltip:
|
||||
"This will inspect the dataset and attempt to correct the values of fields if they are not accurate.",
|
||||
icon: "fa-undo",
|
||||
@@ -146,7 +146,7 @@ var View = Backbone.View.extend({
|
||||
var form = new Form({
|
||||
title: _l("Convert to new format"),
|
||||
operations: {
|
||||
submit_conversion: new Ui.ButtonIcon({
|
||||
submit_conversion: new Ui.Button({
|
||||
tooltip: _l("Convert the datatype to a new format."),
|
||||
title: _l("Convert datatype"),
|
||||
icon: "fa-exchange",
|
||||
@@ -165,7 +165,7 @@ var View = Backbone.View.extend({
|
||||
var form = new Form({
|
||||
title: _l("Change datatype"),
|
||||
operations: {
|
||||
submit_datatype: new Ui.ButtonIcon({
|
||||
submit_datatype: new Ui.Button({
|
||||
tooltip: _l("Change the datatype to a new type."),
|
||||
title: _l("Change datatype"),
|
||||
icon: "fa-exchange",
|
||||
@@ -184,7 +184,7 @@ var View = Backbone.View.extend({
|
||||
var form = new Form({
|
||||
title: _l("Manage dataset permissions"),
|
||||
operations: {
|
||||
submit_permission: new Ui.ButtonIcon({
|
||||
submit_permission: new Ui.Button({
|
||||
tooltip: _l("Save permissions."),
|
||||
title: _l("Save permissions"),
|
||||
icon: "fa-floppy-o ",
|
||||
|
||||
@@ -2,6 +2,12 @@ import _l from "utils/localization";
|
||||
import Utils from "utils/utils";
|
||||
import Ui from "mvc/ui/ui-misc";
|
||||
import Form from "mvc/form/form-view";
|
||||
import * as Backbone from "backbone";
|
||||
import * as _ from "underscore";
|
||||
|
||||
/* global Galaxy */
|
||||
/* global $ */
|
||||
|
||||
/** Dataset edit attributes view */
|
||||
var View = Backbone.View.extend({
|
||||
initialize: function() {
|
||||
@@ -57,12 +63,23 @@ var View = Backbone.View.extend({
|
||||
<p>An error occured while running the tool <b>${job.tool_id}</b>.</p>
|
||||
<p>Tool execution generated the following messages:</p>
|
||||
<pre class="code">${_.escape(job.stderr)}</pre>
|
||||
<h2>Report This Error</h2>
|
||||
|
||||
<h3>Troubleshoot This Error</h3>
|
||||
<p>
|
||||
Usually the local Galaxy administrators regularly review errors that occur on the server
|
||||
However, if you would like to provide additional information (such as what you were trying
|
||||
to do when the error occurred) and a contact e-mail address, we will be better able to
|
||||
investigate your problem and get back to you.
|
||||
There are a number of help resources to self diagnose and
|
||||
correct problems.
|
||||
Start here: <a
|
||||
href="https://galaxyproject.org/support/tool-error/"
|
||||
target="_blank"> My job ended with an error. What can I do?</a>
|
||||
</p>
|
||||
|
||||
<h3>Report This Error</h3>
|
||||
<p>
|
||||
Usually the local Galaxy administrators regularly review errors
|
||||
that occur on the server However, if you would like to provide
|
||||
additional information (such as what you were trying to do when
|
||||
the error occurred) and a contact e-mail address, we will be
|
||||
better able to investigate your problem and get back to you.
|
||||
</p>`);
|
||||
this.$el.append(this._getBugFormTemplate(dataset, job));
|
||||
},
|
||||
|
||||
@@ -5,6 +5,10 @@ import ANNOTATIONS from "mvc/annotation";
|
||||
import faIconButton from "ui/fa-icon-button";
|
||||
import BASE_MVC from "mvc/base-mvc";
|
||||
import _l from "utils/localization";
|
||||
import * as _ from "underscore";
|
||||
|
||||
/* global Galaxy */
|
||||
/* global $ */
|
||||
|
||||
//==============================================================================
|
||||
var _super = DATASET_LI.DatasetListItemView;
|
||||
@@ -100,8 +104,7 @@ var DatasetListItemEdit = _super.extend(
|
||||
faIcon: "fa-times",
|
||||
classes: "delete-btn",
|
||||
onclick: function() {
|
||||
// ...bler... tooltips being left behind in DOM (hover out never called on deletion)
|
||||
self.$el.find(".icon-btn.delete-btn").trigger("mouseout");
|
||||
self.$el.find(".icon-btn.delete-btn").tooltip("dispose");
|
||||
self.model["delete"]();
|
||||
}
|
||||
});
|
||||
@@ -261,32 +264,29 @@ var DatasetListItemEdit = _super.extend(
|
||||
}
|
||||
|
||||
if (visualizations.length >= 1) {
|
||||
var url = Galaxy.root + "visualizations?dataset_id=" + this.model.get("id");
|
||||
return $("<a/>")
|
||||
.addClass("visualization-link icon-btn")
|
||||
.attr("href", url)
|
||||
.append($("<span/>").addClass("fa fa-bar-chart-o"))
|
||||
.on("click", function(e) {
|
||||
Galaxy.frame.add({ url: url, title: "Visualization" });
|
||||
e.preventDefault();
|
||||
});
|
||||
let dsid = this.model.get("id");
|
||||
let url = Galaxy.root + "visualizations?dataset_id=" + dsid;
|
||||
return faIconButton({
|
||||
title: _l("Visualize this data"),
|
||||
href: url,
|
||||
classes: "visualization-link",
|
||||
faIcon: "fa-bar-chart-o",
|
||||
onclick: ev => {
|
||||
if (Galaxy.frame && Galaxy.frame.active) {
|
||||
ev.preventDefault();
|
||||
Galaxy.frame.add({ url: url, title: "Visualization" });
|
||||
} else if (Galaxy.router) {
|
||||
ev.preventDefault();
|
||||
Galaxy.router.push("visualizations", {
|
||||
dataset_id: dsid
|
||||
});
|
||||
Galaxy.trigger("activate-hda", dsid);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
/** add scratchbook functionality to visualization links */
|
||||
_addScratchBookFn: function($links) {
|
||||
$links.click(ev => {
|
||||
if (Galaxy.frame && Galaxy.frame.active) {
|
||||
Galaxy.frame.add({
|
||||
title: _l("Visualization"),
|
||||
url: $(this).attr("href")
|
||||
});
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//TODO: if possible move these to readonly view - but display the owner's tags/annotation (no edit)
|
||||
/** Render the tags list/control */
|
||||
_renderTags: function($where) {
|
||||
@@ -393,7 +393,7 @@ var DatasetListItemEdit = _super.extend(
|
||||
|
||||
/** listener for item purge (in the messages section) */
|
||||
_clickPurgeLink: function(ev) {
|
||||
if (confirm(_l("This will permanently remove the data in your dataset. Are you sure?"))) {
|
||||
if (window.confirm(_l("This will permanently remove the data in your dataset. Are you sure?"))) {
|
||||
this.model.purge();
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -95,7 +95,7 @@ export default Backbone.View.extend({
|
||||
// render error messages
|
||||
var error_text = this.model.get("error_text");
|
||||
this.$error[error_text ? "show" : "hide"]();
|
||||
this.$el[error_text ? "addClass" : "removeClass"]("ui-error");
|
||||
this.$el[error_text ? "addClass" : "removeClass"]("alert alert-danger");
|
||||
this.$error_text.html(error_text);
|
||||
// render backdrop
|
||||
this.$backdrop[this.model.get("backdrop") ? "show" : "hide"]();
|
||||
@@ -134,8 +134,8 @@ export default Backbone.View.extend({
|
||||
.addClass("ui-form-element")
|
||||
.append(
|
||||
$("<div/>")
|
||||
.addClass("ui-form-error ui-error")
|
||||
.append($("<span/>").addClass("fa fa-arrow-down"))
|
||||
.addClass("ui-form-error")
|
||||
.append($("<span/>").addClass("fa fa-arrow-down mr-1"))
|
||||
.append($("<span/>").addClass("ui-form-error-text"))
|
||||
)
|
||||
.append(
|
||||
@@ -152,7 +152,7 @@ export default Backbone.View.extend({
|
||||
.append(
|
||||
$("<div/>")
|
||||
.addClass("ui-form-field")
|
||||
.append($("<span/>").addClass("ui-form-info"))
|
||||
.append($("<span/>").addClass("ui-form-info form-text text-muted"))
|
||||
.append($("<div/>").addClass("ui-form-backdrop"))
|
||||
)
|
||||
.append($("<div/>").addClass("ui-form-preview"));
|
||||
|
||||
@@ -13,11 +13,11 @@ export var View = Backbone.View.extend({
|
||||
max: null,
|
||||
min: null
|
||||
});
|
||||
this.button_new = new Ui.ButtonIcon({
|
||||
this.button_new = new Ui.Button({
|
||||
icon: "fa-plus",
|
||||
title: `Insert ${this.options.title}`,
|
||||
tooltip: `Add new ${this.options.title} block`,
|
||||
cls: "ui-button-icon ui-clear-float form-repeat-add",
|
||||
cls: "btn btn-secondary float-none form-repeat-add",
|
||||
onclick: function() {
|
||||
if (options.onnew) {
|
||||
options.onnew();
|
||||
@@ -42,7 +42,7 @@ export var View = Backbone.View.extend({
|
||||
Galaxy.emit.debug("form-repeat::add()", "Duplicate or invalid repeat block id.");
|
||||
return;
|
||||
}
|
||||
var button_delete = new Ui.ButtonIcon({
|
||||
var button_delete = new Ui.Button({
|
||||
icon: "fa-trash-o",
|
||||
tooltip: _l("Delete this repeat block"),
|
||||
cls: "ui-button-icon-plain form-repeat-delete",
|
||||
@@ -55,7 +55,7 @@ export var View = Backbone.View.extend({
|
||||
var portlet = new Portlet.View({
|
||||
id: options.id,
|
||||
title: _l("placeholder"),
|
||||
cls: options.cls || "ui-portlet-repeat",
|
||||
cls: options.cls || "ui-portlet-section",
|
||||
operations: { button_delete: button_delete }
|
||||
});
|
||||
portlet.append(options.$el);
|
||||
@@ -96,7 +96,7 @@ export var View = Backbone.View.extend({
|
||||
if (_.isEmpty(this.list)) {
|
||||
this.$el.append(
|
||||
$("<div/>")
|
||||
.addClass("ui-form-info")
|
||||
.addClass("form-text text-muted")
|
||||
.html(this.options.empty_text)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ var View = Backbone.View.extend({
|
||||
var sub_section = new View(this.app, {
|
||||
inputs: input_def.cases[i].inputs
|
||||
});
|
||||
this._append(sub_section.$el.addClass("ui-form-section"), `${input_def.id}-section-${i}`);
|
||||
this._append(sub_section.$el.addClass("ui-portlet-section pl-2"), `${input_def.id}-section-${i}`);
|
||||
}
|
||||
field.model.set("onchange", value => {
|
||||
var selectedCase = self.app.data.matchCase(input_def, value);
|
||||
@@ -148,7 +148,7 @@ var View = Backbone.View.extend({
|
||||
portlet.append(new View(this.app, { inputs: input_def.inputs }).$el);
|
||||
portlet.append(
|
||||
$("<div/>")
|
||||
.addClass("ui-form-info")
|
||||
.addClass("form-text text-muted")
|
||||
.html(input_def.help)
|
||||
);
|
||||
this.app.on("expand", input_id => {
|
||||
|
||||
@@ -9,7 +9,7 @@ export default Backbone.View.extend({
|
||||
initialize: function(options) {
|
||||
this.model = new Backbone.Model({
|
||||
initial_errors: false,
|
||||
cls: "ui-portlet-limited",
|
||||
cls: "ui-portlet",
|
||||
icon: null,
|
||||
always_refresh: true,
|
||||
status: "warning",
|
||||
@@ -131,8 +131,8 @@ export default Backbone.View.extend({
|
||||
icon: options.icon,
|
||||
title: options.title,
|
||||
title_id: options.title_id,
|
||||
cls: options.cls,
|
||||
operations: !options.hide_operations && options.operations,
|
||||
cls: options.cls,
|
||||
buttons: options.buttons,
|
||||
collapsible: options.collapsible,
|
||||
collapsed: options.collapsed,
|
||||
|
||||
@@ -35,7 +35,7 @@ var View = Backbone.View.extend({
|
||||
tooltip: options.submit_tooltip,
|
||||
title: options.submit_title || "Save",
|
||||
icon: options.submit_icon || "fa-save",
|
||||
cls: "btn btn-primary ui-clear-float",
|
||||
cls: "btn btn-primary",
|
||||
onclick: function() {
|
||||
self._submit(form);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import HISTORY_MODEL from "mvc/history/history-model";
|
||||
import HISTORY_VIEW_EDIT from "mvc/history/history-view-edit";
|
||||
import BASE_MVC from "mvc/base-mvc";
|
||||
import _l from "utils/localization";
|
||||
import * as _ from "underscore";
|
||||
|
||||
/* global Galaxy */
|
||||
/* global $ */
|
||||
|
||||
// ============================================================================
|
||||
/** session storage for history panel preferences (and to maintain state)
|
||||
@@ -386,7 +389,18 @@ var CurrentHistoryView = _super.extend(
|
||||
},
|
||||
// when the center panel is given a new view, clear the current indicator
|
||||
"center-panel:load": function(view) {
|
||||
this._setCurrentContentById();
|
||||
try {
|
||||
let hdaId = view.model.attributes.dataset_id || null;
|
||||
if (hdaId === null) {
|
||||
throw "Invalid id";
|
||||
}
|
||||
this._setCurrentContentById(`dataset-${hdaId}`);
|
||||
} catch (e) {
|
||||
this._setCurrentContentById();
|
||||
}
|
||||
},
|
||||
"activate-hda": function(hdaId) {
|
||||
this._setCurrentContentById(`dataset-${hdaId}`);
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -443,7 +457,7 @@ var CurrentHistoryView = _super.extend(
|
||||
/** unhide any hidden datasets */
|
||||
unhideHidden: function() {
|
||||
var self = this;
|
||||
if (confirm(_l("Really unhide all hidden datasets?"))) {
|
||||
if (window.confirm(_l("Really unhide all hidden datasets?"))) {
|
||||
// get all hidden, regardless of deleted/purged
|
||||
return self.model.contents
|
||||
._filterAndUpdate({ visible: false, deleted: "", purged: "" }, { visible: true })
|
||||
@@ -454,13 +468,13 @@ var CurrentHistoryView = _super.extend(
|
||||
}
|
||||
});
|
||||
}
|
||||
return jQuery.when();
|
||||
return $.when();
|
||||
},
|
||||
|
||||
/** delete any hidden datasets */
|
||||
deleteHidden: function() {
|
||||
var self = this;
|
||||
if (confirm(_l("Really delete all hidden datasets?"))) {
|
||||
if (window.confirm(_l("Really delete all hidden datasets?"))) {
|
||||
return self.model.contents._filterAndUpdate(
|
||||
// get all hidden, regardless of deleted/purged
|
||||
{ visible: false, deleted: "", purged: "" },
|
||||
@@ -468,7 +482,7 @@ var CurrentHistoryView = _super.extend(
|
||||
{ deleted: true, visible: true }
|
||||
);
|
||||
}
|
||||
return jQuery.when();
|
||||
return $.when();
|
||||
},
|
||||
|
||||
/** Return a string rep of the history */
|
||||
|
||||
@@ -646,7 +646,7 @@ export function historyEntry(options) {
|
||||
window.location = "${ switch_to_url }";
|
||||
}
|
||||
});
|
||||
// use_panels effects where the the center_panel() is rendered:
|
||||
// use_panels affects where the the center_panel() is rendered:
|
||||
// w/o it renders to the body, w/ it renders to #center - we need to adjust a few things for scrolling to work
|
||||
if (options.hasMasthead) {
|
||||
$("#center").addClass("flex-vertical-container");
|
||||
|
||||
@@ -10,7 +10,8 @@ export default Backbone.View.extend({
|
||||
this.content_list = {};
|
||||
this.$message = $("<div/>")
|
||||
.addClass("ui-limitloader")
|
||||
.append(`...only the first ${this.max} entries are visible.`);
|
||||
.append(`...only the first ${this.max} entries are visible.`)
|
||||
.hide();
|
||||
this.$container.append(this.$message);
|
||||
this.listenTo(this.collection, "reset", this._reset, this);
|
||||
this.listenTo(this.collection, "add", this._refresh, this);
|
||||
|
||||
@@ -346,7 +346,7 @@ const RULES = {
|
||||
},
|
||||
save: (component, rule) => {
|
||||
rule.target_column = component.addColumnSubstrTarget;
|
||||
rule.length = component.addColumnSubstrLength;
|
||||
rule.length = parseInt(component.addColumnSubstrLength);
|
||||
rule.substr_type = component.addColumnSubstrType;
|
||||
},
|
||||
apply: (rule, data, sources, columns) => {
|
||||
@@ -476,13 +476,13 @@ const RULES = {
|
||||
component.addFilterCountWhich = "first";
|
||||
component.addFilterCountInvert = false;
|
||||
} else {
|
||||
component.addFilterCountN = rule.count;
|
||||
component.addFilterCountN = parseInt(rule.count);
|
||||
component.addFilterCountWhich = rule.which;
|
||||
component.addFilterCountInvert = rule.inverse;
|
||||
}
|
||||
},
|
||||
save: (component, rule) => {
|
||||
rule.count = component.addFilterCountN;
|
||||
rule.count = parseInt(component.addFilterCountN);
|
||||
rule.which = component.addFilterCountWhich;
|
||||
rule.invert = component.addFilterCountInvert;
|
||||
},
|
||||
|
||||
@@ -82,13 +82,13 @@ export default FormBase.extend({
|
||||
if (!this.model.get("collapsible")) {
|
||||
this.$el.append(
|
||||
$("<div/>")
|
||||
.addClass("ui-margin-top-large")
|
||||
.addClass("mt-2")
|
||||
.append(this._footer())
|
||||
);
|
||||
}
|
||||
options.tool_errors &&
|
||||
this.message.update({
|
||||
status: 'danger',
|
||||
status: "danger",
|
||||
message: options.tool_errors,
|
||||
persistent: true
|
||||
});
|
||||
@@ -258,7 +258,8 @@ export default FormBase.extend({
|
||||
/** Templates */
|
||||
_templateHelp: function(options) {
|
||||
var $tmpl = $("<div/>")
|
||||
.addClass("ui-form-help")
|
||||
.addClass("form-help")
|
||||
.addClass("form-text")
|
||||
.append(options.help);
|
||||
$tmpl.find("a").attr("target", "_blank");
|
||||
$tmpl.find("img").each(function() {
|
||||
|
||||
@@ -26,7 +26,7 @@ var View = Backbone.View.extend({
|
||||
this.setElement(
|
||||
$("<div/>")
|
||||
.addClass("ui-form-composite")
|
||||
.append((this.$message = $("<div/>")))
|
||||
.append((this.$message = $("<div/>").addClass("mb-4")))
|
||||
.append((this.$header = $("<div/>")))
|
||||
.append((this.$steps = $("<div/>")))
|
||||
);
|
||||
@@ -71,7 +71,7 @@ var View = Backbone.View.extend({
|
||||
cls_disable: "fa fa-undo",
|
||||
errors: step.messages,
|
||||
initial_errors: true,
|
||||
cls: "ui-portlet-narrow",
|
||||
cls: "ui-portlet-section",
|
||||
hide_operations: true,
|
||||
needs_refresh: false,
|
||||
always_refresh: step.step_type != "tool"
|
||||
@@ -129,14 +129,14 @@ var View = Backbone.View.extend({
|
||||
this.wp_inputs = {};
|
||||
|
||||
function _ensureWorkflowParameter(wp_name) {
|
||||
return self.wp_inputs[wp_name] = self.wp_inputs[wp_name] || {
|
||||
return (self.wp_inputs[wp_name] = self.wp_inputs[wp_name] || {
|
||||
label: wp_name,
|
||||
name: wp_name,
|
||||
type: "text",
|
||||
color: `hsl( ${++wp_count * 100}, 70%, 30% )`,
|
||||
style: "ui-form-wp-source",
|
||||
links: []
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function _handleWorkflowParameter(value, callback) {
|
||||
@@ -228,14 +228,10 @@ var View = Backbone.View.extend({
|
||||
}
|
||||
});
|
||||
this.$header
|
||||
.addClass("ui-form-header")
|
||||
.addClass("h4")
|
||||
.empty()
|
||||
.append(
|
||||
new Ui.Label({
|
||||
title: `Workflow: ${this.model.get("name")}`
|
||||
}).$el
|
||||
)
|
||||
.append(this.execute_btn.$el);
|
||||
.append(`<b>Workflow: ${this.model.get("name")}<b>`)
|
||||
.append(this.execute_btn.$el.addClass("float-right mt-3"));
|
||||
},
|
||||
|
||||
/** Render message */
|
||||
@@ -274,7 +270,7 @@ var View = Backbone.View.extend({
|
||||
this.wp_form = new Form({
|
||||
title: "<b>Workflow Parameters</b>",
|
||||
inputs: this.wp_inputs,
|
||||
cls: "ui-portlet-narrow",
|
||||
cls: "ui-portlet-section",
|
||||
onchange: function() {
|
||||
_.each(self.wp_form.input_list, (input_def, i) => {
|
||||
_.each(input_def.links, step => {
|
||||
@@ -290,7 +286,7 @@ var View = Backbone.View.extend({
|
||||
/** Render workflow parameters */
|
||||
_renderHistory: function() {
|
||||
this.history_form = new Form({
|
||||
cls: "ui-portlet-narrow",
|
||||
cls: "ui-portlet-section",
|
||||
title: "<b>History Options</b>",
|
||||
inputs: [
|
||||
{
|
||||
@@ -327,7 +323,7 @@ var View = Backbone.View.extend({
|
||||
this.workflow_resource_parameters_form = null;
|
||||
if (!_.isEmpty(this.model.get("workflow_resource_parameters"))) {
|
||||
this.workflow_resource_parameters_form = new Form({
|
||||
cls: "ui-portlet-narrow",
|
||||
cls: "ui-portlet-section",
|
||||
title: "<b>Workflow Resource Options</b>",
|
||||
inputs: this.model.get("workflow_resource_parameters")
|
||||
});
|
||||
@@ -348,7 +344,7 @@ var View = Backbone.View.extend({
|
||||
this.display_use_cached_job_checkbox = display_use_cached_job_checkbox === "true";
|
||||
if (this.display_use_cached_job_checkbox) {
|
||||
this.job_options_form = new Form({
|
||||
cls: "ui-portlet-narrow",
|
||||
cls: "ui-portlet-section",
|
||||
title: "<b>Job re-use Options</b>",
|
||||
inputs: [
|
||||
{
|
||||
|
||||
@@ -55,8 +55,7 @@ var View = Backbone.View.extend({
|
||||
new Ui.Message({
|
||||
message: error_message,
|
||||
status: "danger",
|
||||
persistent: true,
|
||||
large: true
|
||||
persistent: true
|
||||
}).$el
|
||||
);
|
||||
} else {
|
||||
@@ -121,8 +120,8 @@ var View = Backbone.View.extend({
|
||||
icon: "fa-check",
|
||||
tooltip: `Execute: ${options.name} (${options.version})`,
|
||||
title: _l("Execute"),
|
||||
cls: "btn btn-primary ui-clear-float",
|
||||
wait_cls: "btn btn-info ui-clear-float",
|
||||
cls: "btn btn-primary",
|
||||
wait_cls: "btn btn-info",
|
||||
onclick: function() {
|
||||
execute_button.wait();
|
||||
form.portlet.disable();
|
||||
@@ -323,7 +322,7 @@ var View = Backbone.View.extend({
|
||||
var index = {};
|
||||
for (let i in job_def.inputs) {
|
||||
let input = job_def.inputs[i];
|
||||
if ($.isArray(input.values)) {
|
||||
if (input && $.isArray(input.values)) {
|
||||
for (let j of input.values) {
|
||||
if (j.src && !index[j.id]) {
|
||||
inputs.push(j);
|
||||
|
||||
@@ -828,7 +828,7 @@ var templates = {
|
||||
'<a class="<%- id %> tool-link" href="<%= link %>" target="<%- target %>" minsizehint="<%- min_width %>">',
|
||||
'<span class="labels">',
|
||||
"<% _.each( labels, function( label ){ %>",
|
||||
'<span class="badge badge-default badge-<%- label %>">',
|
||||
'<span class="badge badge-primary badge-<%- label %>">',
|
||||
"<%- label %>",
|
||||
"</span>",
|
||||
"<% }); %>",
|
||||
|
||||
@@ -153,7 +153,6 @@ var ToolShedRepositoryView = Backbone.View.extend({
|
||||
changeset: changeset
|
||||
};
|
||||
$.get(api_url, params, data => {
|
||||
data.cls = "ui-portlet-plain";
|
||||
var toolform = new FormView(data);
|
||||
Utils.deepeach(data.inputs, input => {
|
||||
if (input.type) {
|
||||
|
||||
@@ -5,7 +5,7 @@ import * as Backbone from "backbone";
|
||||
/* global $ */
|
||||
|
||||
/** This renders the default button which is used e.g. at the bottom of the upload modal. */
|
||||
var ButtonDefault = Backbone.View.extend({
|
||||
var Button = Backbone.View.extend({
|
||||
initialize: function(options) {
|
||||
this.model =
|
||||
(options && options.model) ||
|
||||
@@ -53,13 +53,17 @@ var ButtonDefault = Backbone.View.extend({
|
||||
this.$title.removeClass().addClass("title");
|
||||
if (options.wait) {
|
||||
this.$el.addClass(options.wait_cls).prop("disabled", true);
|
||||
this.$icon.addClass("fa-spinner fa-spin ui-margin-right");
|
||||
this.$icon.addClass("fa-spinner fa-spin mr-1");
|
||||
this.$title.html(options.wait_text);
|
||||
} else {
|
||||
this.$el.addClass(options.cls);
|
||||
this.$icon.addClass(options.icon);
|
||||
this.$title.html(options.title);
|
||||
options.icon && options.title && this.$icon.addClass("ui-margin-right");
|
||||
if (options.title) {
|
||||
this.$title.html(options.title);
|
||||
if (options.icon) {
|
||||
this.$icon.addClass("mr-1");
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -100,7 +104,7 @@ var ButtonDefault = Backbone.View.extend({
|
||||
});
|
||||
|
||||
/** This button allows the right-click/open-in-new-tab feature, its used e.g. for panel buttons. */
|
||||
var ButtonLink = ButtonDefault.extend({
|
||||
var ButtonLink = Button.extend({
|
||||
initialize: function(options) {
|
||||
this.model =
|
||||
(options && options.model) ||
|
||||
@@ -153,6 +157,7 @@ var ButtonCheck = Backbone.View.extend({
|
||||
}).set(options);
|
||||
this.setElement(
|
||||
$("<div/>")
|
||||
.addClass("mb-2")
|
||||
.append((this.$icon = $("<span/>")))
|
||||
.append((this.$title = $("<span/>")))
|
||||
);
|
||||
@@ -173,7 +178,7 @@ var ButtonCheck = Backbone.View.extend({
|
||||
this.$title.html(options.title);
|
||||
this.$icon
|
||||
.removeClass()
|
||||
.addClass("icon fa ui-margin-right")
|
||||
.addClass("icon fa mr-1")
|
||||
.addClass(options.icons[options.value]);
|
||||
},
|
||||
|
||||
@@ -195,56 +200,8 @@ var ButtonCheck = Backbone.View.extend({
|
||||
}
|
||||
});
|
||||
|
||||
/** This renders a differently styled, more compact button version. */
|
||||
var ButtonIcon = ButtonDefault.extend({
|
||||
initialize: function(options) {
|
||||
this.model =
|
||||
(options && options.model) ||
|
||||
new Backbone.Model({
|
||||
id: Utils.uid(),
|
||||
title: "",
|
||||
icon: "",
|
||||
visible: true,
|
||||
cls: "ui-button-icon",
|
||||
disabled: false
|
||||
}).set(options);
|
||||
this.setElement(
|
||||
$("<div/>").append(
|
||||
(this.$button = $("<div/>")
|
||||
.append((this.$icon = $("<i/>")))
|
||||
.append((this.$title = $("<span/>"))))
|
||||
)
|
||||
);
|
||||
this.listenTo(this.model, "change", this.render, this);
|
||||
this.render();
|
||||
},
|
||||
|
||||
render: function(options) {
|
||||
var options = this.model.attributes;
|
||||
this.$el
|
||||
.removeClass()
|
||||
.addClass(options.cls)
|
||||
.addClass(options.disabled && "disabled")
|
||||
.css("display", options.visible ? "inline-block" : "none")
|
||||
.attr("disabled", options.disabled)
|
||||
.attr("id", options.id)
|
||||
.off("click")
|
||||
.on("click", () => {
|
||||
$(".tooltip").hide();
|
||||
!options.disabled && options.onclick && options.onclick();
|
||||
});
|
||||
this.$button.addClass("button").tooltip({ title: options.tooltip || "", placement: "bottom" });
|
||||
this.$icon
|
||||
.removeClass()
|
||||
.addClass("icon fa")
|
||||
.addClass(options.icon);
|
||||
this.$title.addClass("title").html(options.title);
|
||||
options.icon && options.title && this.$icon.addClass("ui-margin-right");
|
||||
}
|
||||
});
|
||||
|
||||
/** This class creates a button with dropdown menu. */
|
||||
var ButtonMenu = ButtonDefault.extend({
|
||||
var ButtonMenu = Backbone.View.extend({
|
||||
$menu: null,
|
||||
initialize: function(options) {
|
||||
this.model =
|
||||
@@ -255,7 +212,7 @@ var ButtonMenu = ButtonDefault.extend({
|
||||
pull: "right",
|
||||
icon: null,
|
||||
onclick: null,
|
||||
cls: "ui-button-icon ui-button-menu",
|
||||
cls: "btn btn-secondary float-right",
|
||||
tooltip: "",
|
||||
target: "",
|
||||
href: "",
|
||||
@@ -266,7 +223,7 @@ var ButtonMenu = ButtonDefault.extend({
|
||||
this.collection = new Backbone.Collection();
|
||||
this.setElement(
|
||||
$("<div/>").append(
|
||||
(this.$root = $("<div/>")
|
||||
(this.$root = $("<button/>")
|
||||
.append((this.$icon = $("<i/>")))
|
||||
.append((this.$title = $("<span/>"))))
|
||||
)
|
||||
@@ -281,13 +238,12 @@ var ButtonMenu = ButtonDefault.extend({
|
||||
this.$el
|
||||
.removeClass()
|
||||
.addClass("dropdown")
|
||||
.addClass(options.cls)
|
||||
.attr("id", options.id)
|
||||
.css({
|
||||
display: options.visible && this.collection.where({ visible: true }).length > 0 ? "block" : "none"
|
||||
});
|
||||
this.$root
|
||||
.addClass("root button dropdown-toggle")
|
||||
.addClass(options.cls)
|
||||
.attr("data-toggle", "dropdown")
|
||||
.tooltip({ title: options.tooltip || "", placement: "bottom" })
|
||||
.off("click")
|
||||
@@ -300,11 +256,11 @@ var ButtonMenu = ButtonDefault.extend({
|
||||
.removeClass()
|
||||
.addClass("icon fa")
|
||||
.addClass(options.icon);
|
||||
this.$title
|
||||
.removeClass()
|
||||
.addClass("title")
|
||||
.html(options.title);
|
||||
options.icon && options.title && this.$icon.addClass("ui-margin-right");
|
||||
options.title &&
|
||||
this.$title
|
||||
.removeClass()
|
||||
.addClass("title ml-1")
|
||||
.html(options.title);
|
||||
this.$menu && this.$menu.remove();
|
||||
if (this.collection.length > 0) {
|
||||
this.$menu = $("<ul/>")
|
||||
@@ -324,7 +280,7 @@ var ButtonMenu = ButtonDefault.extend({
|
||||
})
|
||||
.append(
|
||||
$("<i/>")
|
||||
.addClass("fa")
|
||||
.addClass("fa mr-2")
|
||||
.addClass(suboptions.icon)
|
||||
.css("display", suboptions.icon ? "inline-block" : "none")
|
||||
)
|
||||
@@ -359,9 +315,8 @@ var ButtonMenu = ButtonDefault.extend({
|
||||
});
|
||||
|
||||
export default {
|
||||
ButtonDefault: ButtonDefault,
|
||||
Button: Button,
|
||||
ButtonLink: ButtonLink,
|
||||
ButtonIcon: ButtonIcon,
|
||||
ButtonCheck: ButtonCheck,
|
||||
ButtonMenu: ButtonMenu
|
||||
};
|
||||
|
||||
@@ -1,45 +1,35 @@
|
||||
// dependencies
|
||||
import Utils from "utils/utils";
|
||||
import Portlet from "mvc/ui/ui-portlet";
|
||||
import Ui from "mvc/ui/ui-misc";
|
||||
// ui list element
|
||||
var View = Backbone.View.extend({
|
||||
// create portlet to keep track of selected list elements
|
||||
initialize: function(options) {
|
||||
// link this
|
||||
var self = this;
|
||||
|
||||
// initialize options
|
||||
this.options = options;
|
||||
this.name = options.name || "element";
|
||||
this.multiple = options.multiple || false;
|
||||
|
||||
// create message handler
|
||||
this.message = new Ui.Message();
|
||||
this.message = new Ui.Message({ cls: "col mb-0" });
|
||||
|
||||
// create portlet
|
||||
this.portlet = new Portlet.View({ cls: "ui-portlet-section" });
|
||||
// create selections area
|
||||
this.selections = $("<div/>");
|
||||
|
||||
// create select field containing the options which can be inserted into the list
|
||||
this.select = new Ui.Select.View({ optional: options.optional });
|
||||
|
||||
// create insert new list element button
|
||||
this.button = new Ui.ButtonIcon({
|
||||
icon: "fa fa-sign-in",
|
||||
tooltip: `Insert new ${this.name}`,
|
||||
onclick: function() {
|
||||
self.add({
|
||||
id: self.select.value(),
|
||||
name: self.select.text()
|
||||
});
|
||||
}
|
||||
this.$button = $(`<button class="fa fa-sign-in"/>`);
|
||||
this.$button.on("click", () => {
|
||||
this.add({
|
||||
id: this.select.value(),
|
||||
name: this.select.text()
|
||||
});
|
||||
});
|
||||
|
||||
// build main element
|
||||
this.setElement(this._template(options));
|
||||
this.$(".ui-list-message").append(this.message.$el);
|
||||
this.$(".ui-list-portlet").append(this.portlet.$el);
|
||||
this.$(".ui-list-button").append(this.button.$el);
|
||||
this.$(".ui-list-selections").append(this.selections);
|
||||
this.$(".ui-list-button").append(this.$button);
|
||||
this.$(".ui-list-select").append(this.select.$el);
|
||||
},
|
||||
|
||||
@@ -47,7 +37,7 @@ var View = Backbone.View.extend({
|
||||
value: function(val) {
|
||||
// set new value
|
||||
if (val !== undefined) {
|
||||
this.portlet.empty();
|
||||
this.selections.empty();
|
||||
if ($.isArray(val)) {
|
||||
for (var i in val) {
|
||||
var v = val[i];
|
||||
@@ -96,17 +86,11 @@ var View = Backbone.View.extend({
|
||||
name: options.name
|
||||
})
|
||||
);
|
||||
$el.on("click", () => {
|
||||
$el.find("button").on("click", () => {
|
||||
$el.remove();
|
||||
self._refresh();
|
||||
});
|
||||
$el.on("mouseover", () => {
|
||||
$el.addClass("portlet-highlight");
|
||||
});
|
||||
$el.on("mouseout", () => {
|
||||
$el.removeClass("portlet-highlight");
|
||||
});
|
||||
this.portlet.append($el);
|
||||
this.selections.append($el);
|
||||
this._refresh();
|
||||
} else {
|
||||
this.message.update({
|
||||
@@ -129,36 +113,33 @@ var View = Backbone.View.extend({
|
||||
/** Refresh view */
|
||||
_refresh: function() {
|
||||
if (this.$(".ui-list-id").length > 0) {
|
||||
!this.multiple && this.button.disable();
|
||||
this.$(".ui-list-portlet").show();
|
||||
!this.multiple && this.$button.attr("disabled", true);
|
||||
} else {
|
||||
this.button.enable();
|
||||
this.$(".ui-list-portlet").hide();
|
||||
this.$button.attr("disabled", false);
|
||||
}
|
||||
this.options.onchange && this.options.onchange();
|
||||
},
|
||||
|
||||
/** Main Template */
|
||||
_template: function(options) {
|
||||
return (
|
||||
'<div class="ui-list">' +
|
||||
'<div class="ui-margin-top">' +
|
||||
'<span class="ui-list-button"/>' +
|
||||
'<span class="ui-list-select"/>' +
|
||||
"</div>" +
|
||||
'<div class="ui-list-message"/>' +
|
||||
'<div class="ui-list-portlet"/>' +
|
||||
"</div>"
|
||||
);
|
||||
return `<div class="ui-list container">
|
||||
<div class="row">
|
||||
<div class="col-1 pl-0 mb-2">
|
||||
<div class="ui-list-button"/>
|
||||
</div>
|
||||
<div class="ui-list-select col pr-0"/>
|
||||
</div>
|
||||
<div class="ui-list-message mt-2 row"/>
|
||||
<div class="ui-list-selections mt-2"/>
|
||||
</div>`;
|
||||
},
|
||||
|
||||
/** Row Template */
|
||||
_templateRow: function(options) {
|
||||
return `<div id="${
|
||||
options.id
|
||||
}" class="ui-list-id"><span class="ui-list-delete fa fa-trash"/><span class="ui-list-name">${
|
||||
options.name
|
||||
}</span></div>`;
|
||||
return `<div id="${options.id}" class="ui-list-id row mt-2">
|
||||
<button class="ui-list-delete fa fa-trash mr-3"/>
|
||||
<div class="ui-list-name">${options.name}</span>
|
||||
</div>`;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -8,32 +8,6 @@ import Drilldown from "mvc/ui/ui-drilldown";
|
||||
import Buttons from "mvc/ui/ui-buttons";
|
||||
import Modal from "mvc/ui/ui-modal";
|
||||
|
||||
/** Label wrapper */
|
||||
export var Label = Backbone.View.extend({
|
||||
tagName: "label",
|
||||
initialize: function(options) {
|
||||
this.model = (options && options.model) || new Backbone.Model(options);
|
||||
this.tagName = options.tagName || this.tagName;
|
||||
this.setElement($(`<${this.tagName}/>`));
|
||||
this.listenTo(this.model, "change", this.render, this);
|
||||
this.render();
|
||||
},
|
||||
title: function(new_title) {
|
||||
this.model.set("title", new_title);
|
||||
},
|
||||
value: function() {
|
||||
return this.model.get("title");
|
||||
},
|
||||
render: function() {
|
||||
this.$el
|
||||
.removeClass()
|
||||
.addClass("ui-label")
|
||||
.addClass(this.model.get("cls"))
|
||||
.html(this.model.get("title"));
|
||||
return this;
|
||||
}
|
||||
});
|
||||
|
||||
/** Displays messages used e.g. in the tool form */
|
||||
export var Message = Backbone.View.extend({
|
||||
initialize: function(options) {
|
||||
@@ -56,18 +30,11 @@ export var Message = Backbone.View.extend({
|
||||
this.model.set(options);
|
||||
},
|
||||
render: function() {
|
||||
var status = this.model.get("status");
|
||||
this.$el
|
||||
.removeClass()
|
||||
.addClass("ui-message")
|
||||
.addClass(`alert alert-${status} mt-2`)
|
||||
.addClass(this.model.get("cls"));
|
||||
var status = this.model.get("status");
|
||||
if (this.model.get("large")) {
|
||||
this.$el.addClass(
|
||||
`${(status == "success" && "done") || (status == "danger" && "error") || status}messagelarge`
|
||||
);
|
||||
} else {
|
||||
this.$el.addClass("alert").addClass(`alert-${status}`);
|
||||
}
|
||||
if (this.model.get("message")) {
|
||||
this.$el.html(this.messageForDisplay());
|
||||
this.$el[this.model.get("fade") ? "fadeIn" : "show"]();
|
||||
@@ -242,7 +209,7 @@ export var Upload = Backbone.View.extend({
|
||||
.append(
|
||||
(this.$file = $("<input/>")
|
||||
.attr("type", "file")
|
||||
.addClass("ui-margin-bottom"))
|
||||
.addClass("mb-1"))
|
||||
)
|
||||
.append(
|
||||
(this.$text = $("<textarea/>")
|
||||
@@ -287,8 +254,7 @@ export var Upload = Backbone.View.extend({
|
||||
* what we need where we need it, allowing for better package optimization.
|
||||
*/
|
||||
|
||||
export let Button = Buttons.ButtonDefault;
|
||||
export let ButtonIcon = Buttons.ButtonIcon;
|
||||
export let Button = Buttons.Button;
|
||||
export let ButtonCheck = Buttons.ButtonCheck;
|
||||
export let ButtonMenu = Buttons.ButtonMenu;
|
||||
export let ButtonLink = Buttons.ButtonLink;
|
||||
@@ -298,13 +264,11 @@ export let Radio = Options.Radio;
|
||||
export { Select, Slider, Drilldown };
|
||||
|
||||
export default {
|
||||
Button: Buttons.ButtonDefault,
|
||||
ButtonIcon: Buttons.ButtonIcon,
|
||||
Button: Buttons.Button,
|
||||
ButtonCheck: Buttons.ButtonCheck,
|
||||
ButtonMenu: Buttons.ButtonMenu,
|
||||
ButtonLink: Buttons.ButtonLink,
|
||||
Input: Input,
|
||||
Label: Label,
|
||||
Message: Message,
|
||||
UnescapedMessage: UnescapedMessage,
|
||||
Upload: Upload,
|
||||
|
||||
@@ -37,7 +37,7 @@ var Base = Backbone.View.extend({
|
||||
.empty()
|
||||
.removeClass()
|
||||
.addClass("ui-options")
|
||||
.append((this.$message = $("<div/>")))
|
||||
.append((this.$message = $("<div/>").addClass("mt-2")))
|
||||
.append((this.$menu = $("<div/>").addClass("ui-options-menu")))
|
||||
.append((this.$options = $(this._template())));
|
||||
|
||||
@@ -188,7 +188,7 @@ var Base = Backbone.View.extend({
|
||||
this.$message
|
||||
.show()
|
||||
.removeClass()
|
||||
.addClass(`ui-message alert alert-${status}`)
|
||||
.addClass(`alert alert-${status}`)
|
||||
.html(text);
|
||||
},
|
||||
|
||||
@@ -271,11 +271,13 @@ RadioButton.View = Base.extend({
|
||||
);
|
||||
}
|
||||
$el.append(
|
||||
$("<input/>").attr({
|
||||
type: "radio",
|
||||
name: this.model.id,
|
||||
value: pair.value
|
||||
})
|
||||
$("<input/>")
|
||||
.attr({
|
||||
type: "radio",
|
||||
name: this.model.id,
|
||||
value: pair.value
|
||||
})
|
||||
.hide()
|
||||
);
|
||||
if (pair.label) {
|
||||
$el.append(pair.label);
|
||||
|
||||
@@ -6,198 +6,47 @@ import * as _ from "underscore";
|
||||
import Utils from "utils/utils";
|
||||
|
||||
/* global $ */
|
||||
|
||||
var View = Backbone.View.extend({
|
||||
optionsDefault: {
|
||||
with_close: true,
|
||||
title: null,
|
||||
placement: "top",
|
||||
container: "body",
|
||||
body: null
|
||||
export default Backbone.View.extend({
|
||||
initialize: function(options) {
|
||||
this.options = _.defaults(options || {}, {
|
||||
title: null,
|
||||
placement: "top",
|
||||
container: "body"
|
||||
});
|
||||
this.uid = Utils.uid();
|
||||
this.$target = this.options.container;
|
||||
},
|
||||
|
||||
initialize: function(options) {
|
||||
this.setElement(this._template());
|
||||
this.uid = Utils.uid();
|
||||
this.options = _.defaults(options || {}, this.optionsDefault);
|
||||
this.options.container.parent().append(this.el);
|
||||
this.$title = this.$(".popover-title-label");
|
||||
this.$close = this.$(".popover-close");
|
||||
this.$body = this.$(".popover-content");
|
||||
|
||||
// add initial content
|
||||
if (this.options.body) {
|
||||
this.append(this.options.body);
|
||||
}
|
||||
/**
|
||||
* Show popover
|
||||
*/
|
||||
show: function($content) {
|
||||
let btn = "<i class='fa fa-times-circle'/>";
|
||||
$(this.$target).popover({
|
||||
title: `${this.options.title} ${btn}`,
|
||||
placement: this.options.placement,
|
||||
content: $content,
|
||||
html: true,
|
||||
trigger: "manual"
|
||||
});
|
||||
$(this.$target).popover("show");
|
||||
|
||||
// add event to hide if click is outside of popup and not on container
|
||||
var self = this;
|
||||
let $popover = $(this.$target.data("bs.popover").tip);
|
||||
$popover.find(".popover-header > i").on("click", () => this.hide());
|
||||
$("body").on(`mousedown.${this.uid}`, e => {
|
||||
// the 'is' for buttons that trigger popups
|
||||
// the 'has' for icons within a button that triggers a popup
|
||||
if (
|
||||
self.visible &&
|
||||
!$(self.options.container).is(e.target) &&
|
||||
!$(self.el).is(e.target) &&
|
||||
$(self.el).has(e.target).length === 0
|
||||
) {
|
||||
if (!$($popover).is(e.target) && $($popover).has(e.target).length === 0) {
|
||||
self.hide();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Render popover
|
||||
*/
|
||||
render: function() {
|
||||
this.$title.html(this.options.title);
|
||||
this.$el
|
||||
.removeClass()
|
||||
.addClass("ui-popover popover in")
|
||||
.addClass(this.options.placement);
|
||||
this.$el.css(this._get_placement(this.options.placement));
|
||||
|
||||
// configure close option
|
||||
var self = this;
|
||||
if (this.options.with_close) {
|
||||
this.$close
|
||||
.on("click", () => {
|
||||
self.hide();
|
||||
})
|
||||
.show();
|
||||
} else {
|
||||
this.$close.off().hide();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Set the popover title
|
||||
* @params{ String } newTitle - New popover title
|
||||
*/
|
||||
title: function(newTitle) {
|
||||
if (newTitle !== undefined) {
|
||||
this.options.title = newTitle;
|
||||
this.$title.html(newTitle);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Show popover
|
||||
*/
|
||||
show: function() {
|
||||
this.render();
|
||||
this.$el.show();
|
||||
this.visible = true;
|
||||
},
|
||||
|
||||
/**
|
||||
* Hide popover
|
||||
*/
|
||||
hide: function() {
|
||||
this.$el.hide();
|
||||
this.visible = false;
|
||||
},
|
||||
|
||||
/**
|
||||
* Append new content to the popover
|
||||
* @params{ Object } $el - Dom element
|
||||
*/
|
||||
append: function($el) {
|
||||
this.$body.append($el);
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove all content
|
||||
*/
|
||||
empty: function() {
|
||||
this.$body.empty();
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove popover
|
||||
*/
|
||||
remove: function() {
|
||||
$(this.$target).popover("dispose");
|
||||
$("body").off(`mousedown.${this.uid}`);
|
||||
this.$el.remove();
|
||||
},
|
||||
|
||||
/**
|
||||
* Improve popover location/placement
|
||||
*/
|
||||
_get_placement: function(placement) {
|
||||
// get popover dimensions
|
||||
var width = this._get_width(this.$el);
|
||||
var height = this.$el.height();
|
||||
|
||||
// get container details
|
||||
var $container = this.options.container;
|
||||
var container_width = this._get_width($container);
|
||||
var container_height = this._get_height($container);
|
||||
var container_position = $container.position();
|
||||
|
||||
// get position
|
||||
var top;
|
||||
|
||||
var left;
|
||||
top = left = 0;
|
||||
if (["top", "bottom"].indexOf(placement) != -1) {
|
||||
left = container_position.left - width + (container_width + width) / 2;
|
||||
switch (placement) {
|
||||
case "top":
|
||||
top = container_position.top - height - 5;
|
||||
break;
|
||||
case "bottom":
|
||||
top = container_position.top + container_height + 5;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
top = container_position.top - height + (container_height + height) / 2;
|
||||
switch (placement) {
|
||||
case "right":
|
||||
left = container_position.left + container_width;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return { top: top, left: left };
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns padding/margin corrected width
|
||||
*/
|
||||
_get_width: function($el) {
|
||||
return (
|
||||
$el.width() +
|
||||
parseInt($el.css("padding-left")) +
|
||||
parseInt($el.css("margin-left")) +
|
||||
parseInt($el.css("padding-right")) +
|
||||
parseInt($el.css("margin-right"))
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns padding corrected height
|
||||
*/
|
||||
_get_height: function($el) {
|
||||
return $el.height() + parseInt($el.css("padding-top")) + parseInt($el.css("padding-bottom"));
|
||||
},
|
||||
|
||||
/**
|
||||
* Return the popover template
|
||||
*/
|
||||
_template: function(options) {
|
||||
return (
|
||||
'<div class="ui-popover popover fade in">' +
|
||||
'<div class="arrow"/>' +
|
||||
'<div class="popover-title">' +
|
||||
'<div class="popover-title-label"/>' +
|
||||
'<div class="popover-close fa fa-times-circle"/>' +
|
||||
"</div>" +
|
||||
'<div class="popover-content"/>' +
|
||||
"</div>"
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
export default {
|
||||
View: View
|
||||
};
|
||||
|
||||
@@ -15,10 +15,9 @@ export var View = Backbone.View.extend({
|
||||
buttons: null,
|
||||
body: null,
|
||||
scrollable: true,
|
||||
nopadding: false,
|
||||
operations: null,
|
||||
collapsible: false,
|
||||
collapsible_button: false,
|
||||
collapsible_button: true,
|
||||
collapsed: false,
|
||||
onchange_title: null
|
||||
}).set(options);
|
||||
@@ -39,7 +38,7 @@ export var View = Backbone.View.extend({
|
||||
this.model.get("body") && this.append(this.model.get("body"));
|
||||
|
||||
// add icon for collapsible option
|
||||
this.collapsible_button = new Ui.ButtonIcon({
|
||||
this.collapsible_button = new Ui.Button({
|
||||
icon: "fa-eye",
|
||||
tooltip: "Collapse/Expand",
|
||||
cls: "ui-button-icon-plain",
|
||||
@@ -62,15 +61,12 @@ export var View = Backbone.View.extend({
|
||||
if (options.title_id) {
|
||||
this.$title.attr("id", options.title_id);
|
||||
}
|
||||
_.each([this.$content, this.$body], $el => {
|
||||
$el[options.nopadding ? "addClass" : "removeClass"]("no-padding");
|
||||
});
|
||||
|
||||
// render title icon
|
||||
if (options.icon) {
|
||||
this.$title_icon
|
||||
.removeClass()
|
||||
.addClass("portlet-title-icon fa")
|
||||
.addClass("portlet-title-icon fa mr-1")
|
||||
.addClass(options.icon)
|
||||
.show();
|
||||
} else {
|
||||
@@ -108,7 +104,7 @@ export var View = Backbone.View.extend({
|
||||
|
||||
// render operations
|
||||
this.$operations.empty;
|
||||
if (options.collapsible_button) {
|
||||
if (options.collapsible && options.collapsible_button) {
|
||||
this.$operations.append(this.collapsible_button.$el);
|
||||
}
|
||||
if (options.operations) {
|
||||
@@ -189,16 +185,14 @@ export var View = Backbone.View.extend({
|
||||
/** Collapse portlet */
|
||||
collapse: function() {
|
||||
this.collapsed = true;
|
||||
this.$content.height("0%");
|
||||
this.$body.hide();
|
||||
this.$content.hide();
|
||||
this.collapsible_button.setIcon("fa-eye-slash");
|
||||
},
|
||||
|
||||
/** Expand portlet */
|
||||
expand: function() {
|
||||
this.collapsed = false;
|
||||
this.$content.height("100%");
|
||||
this.$body.fadeIn("fast");
|
||||
this.$content.show();
|
||||
this.collapsible_button.setIcon("fa-eye");
|
||||
},
|
||||
|
||||
@@ -229,7 +223,7 @@ export var View = Backbone.View.extend({
|
||||
$("<div/>")
|
||||
.addClass("portlet-content")
|
||||
.append($("<div/>").addClass("portlet-body"))
|
||||
.append($("<div/>").addClass("portlet-buttons"))
|
||||
.append($("<div/>").addClass("portlet-buttons mt-3 mb-3"))
|
||||
)
|
||||
.append($("<div/>").addClass("portlet-backdrop"));
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ var View = Backbone.View.extend({
|
||||
const view = this;
|
||||
|
||||
// create insert new list element button
|
||||
this.browse_button = new Ui.ButtonIcon({
|
||||
this.browse_button = new Ui.Button({
|
||||
title: _l("Edit"),
|
||||
icon: "fa fa-edit",
|
||||
tooltip: _l("Edit Rules"),
|
||||
|
||||
@@ -145,7 +145,7 @@ var View = Backbone.View.extend({
|
||||
]
|
||||
});
|
||||
var $batch_div = $("<div/>")
|
||||
.addClass("ui-form-info")
|
||||
.addClass("form-text text-muted")
|
||||
.append($("<i/>").addClass("fa fa-sitemap"))
|
||||
.append(
|
||||
$("<span/>").html(
|
||||
|
||||
@@ -204,7 +204,7 @@ var View = Backbone.View.extend({
|
||||
}
|
||||
return `
|
||||
${_.escape(result.text)}
|
||||
<div class="ui-tags">
|
||||
<div>
|
||||
${_.reduce(
|
||||
filteredTags.slice(0, 5),
|
||||
(memo, tag) => {
|
||||
|
||||
@@ -14,9 +14,10 @@ var View = Backbone.View.extend({
|
||||
this.options = options;
|
||||
|
||||
// create insert new list element button
|
||||
this.browse_button = new Ui.ButtonIcon({
|
||||
this.browse_button = new Ui.Button({
|
||||
title: _l("Browse"),
|
||||
icon: "fa fa-sign-in",
|
||||
cls: "btn btn-secondary float-left",
|
||||
tooltip: _l("Browse GenomeSpace"),
|
||||
onclick: function() {
|
||||
self.browseGenomeSpace(options);
|
||||
@@ -28,8 +29,8 @@ var View = Backbone.View.extend({
|
||||
|
||||
// create elements
|
||||
this.setElement(this._template(options));
|
||||
this.$(".ui-gs-browse-button").append(this.browse_button.$el);
|
||||
this.$(".ui-gs-filename-textbox").append(this.filename_textbox.$el);
|
||||
this.$(".ui-browse-button").append(this.browse_button.$el);
|
||||
this.$(".ui-filename-textbox").append(this.filename_textbox.$el);
|
||||
},
|
||||
|
||||
/** Browse GenomeSpace */
|
||||
@@ -44,14 +45,10 @@ var View = Backbone.View.extend({
|
||||
|
||||
/** Main Template */
|
||||
_template: function(options) {
|
||||
return (
|
||||
'<div class="ui-gs-select-file">' +
|
||||
'<div class="ui-gs-browse-field">' +
|
||||
'<span class="ui-gs-browse-button" />' +
|
||||
'<span class="ui-gs-filename-textbox" />' +
|
||||
"</div>" +
|
||||
"</div>"
|
||||
);
|
||||
return `<div class="row">
|
||||
<div class="ui-browse-button col-3" />
|
||||
<div class="ui-filename-textbox col"/>
|
||||
</div>`;
|
||||
},
|
||||
|
||||
/** Return/Set currently selected genomespace filename */
|
||||
|
||||
@@ -113,14 +113,9 @@ var View = Backbone.View.extend({
|
||||
|
||||
/** Template */
|
||||
_template: function() {
|
||||
return (
|
||||
'<div class="ui-select-library">' +
|
||||
'<div class="library ui-margin-bottom">' +
|
||||
'<span class="library-title">Select Library</span>' +
|
||||
'<span class="library-select"/>' +
|
||||
"</div>" +
|
||||
"</div>"
|
||||
);
|
||||
return `<div class="ui-select-library">
|
||||
<div class="library-select mb-2"/>
|
||||
</div>`;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ var View = Backbone.View.extend({
|
||||
v == 13 ||
|
||||
v == 37 ||
|
||||
v == 39 ||
|
||||
(v >= 48 && v <= 57 && !pressed[16]) ||
|
||||
(v >= 48 && v <= 57) ||
|
||||
(v >= 96 && v <= 105) ||
|
||||
((v == 190 || v == 110) &&
|
||||
$(this)
|
||||
@@ -76,12 +76,9 @@ var View = Backbone.View.extend({
|
||||
}
|
||||
}
|
||||
if (this.has_slider) {
|
||||
this.$text.addClass("ui-form-slider-left");
|
||||
this.$slider.slider({ min: opts.min, max: opts.max, step: step }).on("slide", (event, ui) => {
|
||||
self.value(ui.value);
|
||||
});
|
||||
} else {
|
||||
this.$slider.hide();
|
||||
}
|
||||
|
||||
// add listeners
|
||||
@@ -91,8 +88,17 @@ var View = Backbone.View.extend({
|
||||
|
||||
render: function() {
|
||||
var value = this.model.get("value");
|
||||
this.has_slider && this.$slider.slider("value", value);
|
||||
value !== this.$text.val() && this.$text.val(value);
|
||||
if (this.has_slider) {
|
||||
this.$slider.slider("value", value);
|
||||
this.$slider.show();
|
||||
this.$text.addClass("col-3 mr-3");
|
||||
} else {
|
||||
this.$slider.hide();
|
||||
this.$text.removeClass("col-3 mr-3");
|
||||
}
|
||||
if (value !== this.$text.val()) {
|
||||
this.$text.val(value);
|
||||
}
|
||||
},
|
||||
|
||||
/** Set and return the current value */
|
||||
@@ -127,12 +133,12 @@ var View = Backbone.View.extend({
|
||||
|
||||
/** Slider template */
|
||||
_template: function() {
|
||||
return (
|
||||
'<div class="ui-form-slider">' +
|
||||
'<input class="ui-form-slider-text" type="text"/>' +
|
||||
'<div class="ui-form-slider-element"/>' +
|
||||
"</div>"
|
||||
);
|
||||
return `<div class="ui-form-slider container">
|
||||
<div class="row">
|
||||
<input class="ui-form-slider-text form-control" type="text"/>
|
||||
<div class="ui-form-slider-element col mt-1"/>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -7,15 +7,14 @@ var View = Backbone.View.extend({
|
||||
onchange: null,
|
||||
ondblclick: null,
|
||||
onconfirm: null,
|
||||
cls: "ui-table",
|
||||
selectable: true,
|
||||
cls_tr: ""
|
||||
cls: "grid",
|
||||
selectable: true
|
||||
});
|
||||
this.setElement(this._template());
|
||||
this.$thead = this.$("thead");
|
||||
this.$tbody = this.$("tbody");
|
||||
this.$tmessage = this.$("tmessage");
|
||||
this.row = this._row();
|
||||
this.row = $("<tr/>");
|
||||
this.row_count = 0;
|
||||
},
|
||||
|
||||
@@ -119,16 +118,11 @@ var View = Backbone.View.extend({
|
||||
this.row.hide();
|
||||
this.row.fadeIn();
|
||||
}
|
||||
this.row = this._row();
|
||||
this.row = $("<tr/>");
|
||||
this.row_count++;
|
||||
this._refresh();
|
||||
},
|
||||
|
||||
/** Helper to create new row */
|
||||
_row: function() {
|
||||
return $(`<tr class="${this.options.cls_tr}"></tr>`);
|
||||
},
|
||||
|
||||
/** Handles onclick events */
|
||||
_onclick: function(e) {
|
||||
var old_value = this.value();
|
||||
|
||||
@@ -143,7 +143,7 @@ export var View = Backbone.View.extend({
|
||||
/** Main template */
|
||||
_template: function() {
|
||||
return $("<div/>")
|
||||
.addClass("ui-tabs tabbable tabs-left")
|
||||
.addClass("tabbable tabs-left")
|
||||
.append(
|
||||
$("<ul/>")
|
||||
.attr("style", "display: flex")
|
||||
@@ -155,7 +155,7 @@ export var View = Backbone.View.extend({
|
||||
/** Tab template */
|
||||
_template_tab: function(options) {
|
||||
var $tmpl = $("<li/>")
|
||||
.addClass("tab-element nav-item")
|
||||
.addClass("nav-item")
|
||||
.attr("id", `tab-${options.id}`)
|
||||
.append(
|
||||
$("<a/>")
|
||||
@@ -166,15 +166,16 @@ export var View = Backbone.View.extend({
|
||||
options.icon &&
|
||||
$href.append(
|
||||
$("<i/>")
|
||||
.addClass("tab-icon fa")
|
||||
.addClass("fa")
|
||||
.addClass(options.icon)
|
||||
);
|
||||
$href.append(
|
||||
$("<span/>")
|
||||
.attr("id", `tab-title-text-${options.id}`)
|
||||
.addClass("tab-title-text")
|
||||
.append(options.title)
|
||||
);
|
||||
options.title &&
|
||||
$href.append(
|
||||
$("<span/>")
|
||||
.attr("id", `tab-title-text-${options.id}`)
|
||||
.addClass("tab-title-text ml-1")
|
||||
.append(options.title)
|
||||
);
|
||||
return $tmpl;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -32,7 +32,7 @@ export default Backbone.View.extend({
|
||||
this.$percentage = this.$(".upload-percentage");
|
||||
|
||||
// append popup to settings icon
|
||||
this.settings = new Popover.View({
|
||||
this.settings = new Popover({
|
||||
title: _l("Upload configuration"),
|
||||
container: this.$(".upload-settings"),
|
||||
placement: "bottom"
|
||||
@@ -151,13 +151,7 @@ export default Backbone.View.extend({
|
||||
|
||||
/** Attach file info popup */
|
||||
_showSettings: function() {
|
||||
if (!this.settings.visible) {
|
||||
this.settings.empty();
|
||||
this.settings.append(new UploadSettings(this).$el);
|
||||
this.settings.show();
|
||||
} else {
|
||||
this.settings.hide();
|
||||
}
|
||||
this.settings.show(new UploadSettings(this).$el);
|
||||
},
|
||||
|
||||
/** View template */
|
||||
|
||||
@@ -144,7 +144,7 @@ export default Backbone.View.extend({
|
||||
});
|
||||
|
||||
// add ftp file viewer
|
||||
this.ftp = new Popover.View({
|
||||
this.ftp = new Popover({
|
||||
title: _l("FTP files"),
|
||||
container: this.btnFtp.$el
|
||||
});
|
||||
@@ -308,32 +308,26 @@ export default Backbone.View.extend({
|
||||
|
||||
/** Show/hide ftp popup */
|
||||
_eventFtp: function() {
|
||||
if (!this.ftp.visible) {
|
||||
this.ftp.empty();
|
||||
var self = this;
|
||||
this.ftp.append(
|
||||
new UploadFtp({
|
||||
collection: this.collection,
|
||||
ftp_upload_site: this.ftp_upload_site,
|
||||
onadd: function(ftp_file) {
|
||||
return self.uploadbox.add([
|
||||
{
|
||||
mode: "ftp",
|
||||
name: ftp_file.path,
|
||||
size: ftp_file.size,
|
||||
path: ftp_file.path
|
||||
}
|
||||
]);
|
||||
},
|
||||
onremove: function(model_index) {
|
||||
self.collection.remove(model_index);
|
||||
}
|
||||
}).$el
|
||||
);
|
||||
this.ftp.show();
|
||||
} else {
|
||||
this.ftp.hide();
|
||||
}
|
||||
var self = this;
|
||||
this.ftp.show(
|
||||
new UploadFtp({
|
||||
collection: this.collection,
|
||||
ftp_upload_site: this.ftp_upload_site,
|
||||
onadd: function(ftp_file) {
|
||||
return self.uploadbox.add([
|
||||
{
|
||||
mode: "ftp",
|
||||
name: ftp_file.path,
|
||||
size: ftp_file.size,
|
||||
path: ftp_file.path
|
||||
}
|
||||
]);
|
||||
},
|
||||
onremove: function(model_index) {
|
||||
self.collection.remove(model_index);
|
||||
}
|
||||
}).$el
|
||||
);
|
||||
},
|
||||
|
||||
/** Create a new file */
|
||||
|
||||
@@ -91,14 +91,14 @@ export default Backbone.View.extend({
|
||||
});
|
||||
|
||||
// add ftp file viewer
|
||||
this.ftp = new Popover.View({
|
||||
title: "Choose FTP file:",
|
||||
container: this.$source.find(".ui-button-menu"),
|
||||
this.ftp = new Popover({
|
||||
title: "Select a file",
|
||||
container: this.$source.find(".dropdown"),
|
||||
placement: "right"
|
||||
});
|
||||
|
||||
// append popup to settings icon
|
||||
this.settings = new Popover.View({
|
||||
this.settings = new Popover({
|
||||
title: _l("Upload configuration"),
|
||||
container: this.$settings,
|
||||
placement: "bottom"
|
||||
@@ -256,41 +256,29 @@ export default Backbone.View.extend({
|
||||
|
||||
/** Show/hide ftp popup */
|
||||
_showFtp: function() {
|
||||
if (!this.ftp.visible) {
|
||||
var self = this;
|
||||
this.ftp.empty();
|
||||
this.ftp.append(
|
||||
new UploadFtp({
|
||||
ftp_upload_site: this.app.ftp_upload_site,
|
||||
onchange: function(ftp_file) {
|
||||
self.ftp.hide();
|
||||
if (self.model.get("status") != "running" && ftp_file) {
|
||||
self.model.reset({
|
||||
file_mode: "ftp",
|
||||
file_name: ftp_file.path,
|
||||
file_size: ftp_file.size,
|
||||
file_path: ftp_file.path
|
||||
});
|
||||
self._refreshReady();
|
||||
}
|
||||
var self = this;
|
||||
this.ftp.show(
|
||||
new UploadFtp({
|
||||
ftp_upload_site: this.app.ftp_upload_site,
|
||||
onchange: function(ftp_file) {
|
||||
self.ftp.hide();
|
||||
if (self.model.get("status") != "running" && ftp_file) {
|
||||
self.model.reset({
|
||||
file_mode: "ftp",
|
||||
file_name: ftp_file.path,
|
||||
file_size: ftp_file.size,
|
||||
file_path: ftp_file.path
|
||||
});
|
||||
self._refreshReady();
|
||||
}
|
||||
}).$el
|
||||
);
|
||||
this.ftp.show();
|
||||
} else {
|
||||
this.ftp.hide();
|
||||
}
|
||||
}
|
||||
}).$el
|
||||
);
|
||||
},
|
||||
|
||||
/** Show/hide settings popup */
|
||||
_showSettings: function() {
|
||||
if (!this.settings.visible) {
|
||||
this.settings.empty();
|
||||
this.settings.append(new UploadSettings(this).$el);
|
||||
this.settings.show();
|
||||
} else {
|
||||
this.settings.hide();
|
||||
}
|
||||
this.settings.show(new UploadSettings(this).$el);
|
||||
},
|
||||
|
||||
/** Template */
|
||||
|
||||
@@ -4,7 +4,6 @@ import Utils from "utils/utils";
|
||||
import UploadModel from "mvc/upload/upload-model";
|
||||
import UploadRow from "mvc/upload/composite/composite-row";
|
||||
import UploadExtension from "mvc/upload/upload-extension";
|
||||
import Popover from "mvc/ui/ui-popover";
|
||||
import Select from "mvc/ui/ui-select";
|
||||
import Ui from "mvc/ui/ui-misc";
|
||||
export default Backbone.View.extend({
|
||||
|
||||
@@ -36,7 +36,7 @@ export default Backbone.View.extend({
|
||||
this.$percentage = this.$(".upload-percentage");
|
||||
|
||||
// append popup to settings icon
|
||||
this.settings = new Popover.View({
|
||||
this.settings = new Popover({
|
||||
title: _l("Upload configuration"),
|
||||
container: this.$(".upload-settings"),
|
||||
placement: "bottom"
|
||||
@@ -220,6 +220,7 @@ export default Backbone.View.extend({
|
||||
this.model.set("enabled", status == "init");
|
||||
var enabled = this.model.get("enabled");
|
||||
this.$text_content.attr("disabled", !enabled);
|
||||
this.$title.attr("disabled", !enabled);
|
||||
if (enabled) {
|
||||
this.select_genome.enable();
|
||||
this.select_extension.enable();
|
||||
@@ -255,13 +256,7 @@ export default Backbone.View.extend({
|
||||
|
||||
/** Attach file info popup */
|
||||
_showSettings: function() {
|
||||
if (!this.settings.visible) {
|
||||
this.settings.empty();
|
||||
this.settings.append(new UploadSettings(this).$el);
|
||||
this.settings.show();
|
||||
} else {
|
||||
this.settings.hide();
|
||||
}
|
||||
this.settings.show(new UploadSettings(this).$el);
|
||||
},
|
||||
|
||||
/** Make extension popover */
|
||||
@@ -276,10 +271,44 @@ export default Backbone.View.extend({
|
||||
|
||||
/** View template */
|
||||
_template: function(options) {
|
||||
return `<tr id="upload-row-${
|
||||
options.id
|
||||
}" class="upload-row"><td><div class="upload-text-column"><div class="upload-mode"/><input class="upload-title"/><div class="upload-text"><div class="upload-text-info">You can tell Galaxy to download data from web by entering URL in this box (one per line). You can also directly paste the contents of a file.</div><textarea class="upload-text-content form-control"/></div></div></td><td><div class="upload-size"/></td><td><div class="upload-extension" style="float: left;"/>  <div class="upload-extension-info upload-icon-button fa fa-search"/></td><td><div class="upload-genome"/></td><td><div class="upload-settings upload-icon-button fa fa-gear"/></td><td><div class="upload-info"><div class="upload-info-text"/><div class="upload-info-progress progress"><div class="upload-progress-bar progress-bar progress-bar-success"/><div class="upload-percentage">0%</div></div></div></td><td><div class="upload-symbol ${
|
||||
this.status_classes.init
|
||||
}"/></td></tr>`;
|
||||
return `<tr id="upload-row-${options.id}" class="upload-row">
|
||||
<td>
|
||||
<div class="upload-text-column">
|
||||
<div class="upload-mode"/>
|
||||
<input class="upload-title ml-2 border rounded"/>
|
||||
<div class="upload-text">
|
||||
<div class="upload-text-info">
|
||||
You can tell Galaxy to download data from web by entering URL in this box (one per line). You can also directly paste the contents of a file.
|
||||
</div>
|
||||
<textarea class="upload-text-content form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="upload-size"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="upload-extension float-left mr-1"/>
|
||||
<div class="upload-extension-info upload-icon-button fa fa-search"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="upload-genome"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="upload-settings upload-icon-button fa fa-gear"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="upload-info">
|
||||
<div class="upload-info-text"/>
|
||||
<div class="upload-info-progress progress">
|
||||
<div class="upload-progress-bar progress-bar progress-bar-success"/>
|
||||
<div class="upload-percentage">0%</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="upload-symbol ${this.status_classes.init}"/>
|
||||
</td>
|
||||
</tr>`;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -140,7 +140,7 @@ export default Backbone.View.extend({
|
||||
});
|
||||
|
||||
// add ftp file viewer
|
||||
this.ftp = new Popover.View({
|
||||
this.ftp = new Popover({
|
||||
title: _l("FTP files"),
|
||||
container: this.btnFtp.$el
|
||||
});
|
||||
@@ -322,32 +322,26 @@ export default Backbone.View.extend({
|
||||
|
||||
/** Show/hide ftp popup */
|
||||
_eventFtp: function() {
|
||||
if (!this.ftp.visible) {
|
||||
this.ftp.empty();
|
||||
var self = this;
|
||||
this.ftp.append(
|
||||
new UploadFtp({
|
||||
collection: this.collection,
|
||||
ftp_upload_site: this.ftp_upload_site,
|
||||
onadd: function(ftp_file) {
|
||||
return self.uploadbox.add([
|
||||
{
|
||||
mode: "ftp",
|
||||
name: ftp_file.path,
|
||||
size: ftp_file.size,
|
||||
path: ftp_file.path
|
||||
}
|
||||
]);
|
||||
},
|
||||
onremove: function(model_index) {
|
||||
self.collection.remove(model_index);
|
||||
}
|
||||
}).$el
|
||||
);
|
||||
this.ftp.show();
|
||||
} else {
|
||||
this.ftp.hide();
|
||||
}
|
||||
var self = this;
|
||||
this.ftp.show(
|
||||
new UploadFtp({
|
||||
collection: this.collection,
|
||||
ftp_upload_site: this.ftp_upload_site,
|
||||
onadd: function(ftp_file) {
|
||||
return self.uploadbox.add([
|
||||
{
|
||||
mode: "ftp",
|
||||
name: ftp_file.path,
|
||||
size: ftp_file.size,
|
||||
path: ftp_file.path
|
||||
}
|
||||
]);
|
||||
},
|
||||
onremove: function(model_index) {
|
||||
self.collection.remove(model_index);
|
||||
}
|
||||
}).$el
|
||||
);
|
||||
},
|
||||
|
||||
/** Create a new file */
|
||||
|
||||
@@ -15,14 +15,12 @@ export default Backbone.View.extend({
|
||||
id: options.extension
|
||||
});
|
||||
this.extension_popup && this.extension_popup.remove();
|
||||
this.extension_popup = new Popover.View({
|
||||
this.extension_popup = new Popover({
|
||||
title: options.title,
|
||||
placement: options.placement || "bottom",
|
||||
container: options.$el
|
||||
});
|
||||
this.extension_popup.title(options.title);
|
||||
this.extension_popup.empty();
|
||||
this.extension_popup.append(this._templateDescription(description));
|
||||
this.extension_popup.show();
|
||||
this.extension_popup.show(this._templateDescription(description));
|
||||
},
|
||||
|
||||
/** Template for extensions description */
|
||||
|
||||
@@ -177,20 +177,44 @@ export default Backbone.View.extend({
|
||||
|
||||
/** Template of row */
|
||||
_templateRow: function(options) {
|
||||
return `<tr class="upload-ftp-row"><td class="_has_collection" style="display: none;"><div class="icon"/></td><td class="ftp-name">${_.escape(
|
||||
options.path
|
||||
)}</td><td class="ftp-size">${Utils.bytesToString(options.size)}</td><td class="ftp-time">${
|
||||
options.ctime
|
||||
}</td></tr>`;
|
||||
return `<tr class="upload-ftp-row">
|
||||
<td class="_has_collection" style="display: none;">
|
||||
<div class="icon"/>
|
||||
</td>
|
||||
<td class="ftp-name">${_.escape(options.path)}</td>
|
||||
<td class="ftp-size">${Utils.bytesToString(options.size)}</td>
|
||||
<td class="ftp-time">${options.ctime}</td>
|
||||
</tr>`;
|
||||
},
|
||||
|
||||
/** Template of main view */
|
||||
_template: function() {
|
||||
return `<div class="${this.model.get(
|
||||
"cls"
|
||||
)}"><div class="upload-ftp-wait fa fa-spinner fa-spin"/><div class="upload-ftp-help">${this.model.get(
|
||||
"help_text"
|
||||
)}</div><div class="upload-ftp-content"><span style="whitespace: nowrap; float: left;">Available files: </span><span style="whitespace: nowrap; float: right;"><span class="upload-icon fa fa-file-text-o"/><span class="upload-ftp-number"/> <span class="upload-icon fa fa-hdd-o"/><span class="upload-ftp-disk"/></span><table class="grid" style="float: left;"><thead><tr><th class="_has_collection" style="display: none;"><div class="upload-ftp-select-all"></th><th>Name</th><th>Size</th><th>Created</th></tr></thead><tbody class="upload-ftp-body"/></table></div><div class="upload-ftp-warning warningmessage">Your FTP directory does not contain any files.</div>`;
|
||||
("<div>");
|
||||
return `<div class="${this.model.get("cls")}">
|
||||
<div class="upload-ftp-wait fa fa-spinner fa-spin"/>
|
||||
<div class="upload-ftp-help">${this.model.get("help_text")}</div>
|
||||
<div class="upload-ftp-content">
|
||||
<span style="whitespace: nowrap; float: left;">Available files: </span>
|
||||
<span style="whitespace: nowrap; float: right;">
|
||||
<span class="upload-icon fa fa-file-text-o"/>
|
||||
<span class="upload-ftp-number"/>
|
||||
<span class="upload-icon fa fa-hdd-o"/>
|
||||
<span class="upload-ftp-disk"/>
|
||||
</span>
|
||||
<table class="grid" style="float: left;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="_has_collection" style="display: none;">
|
||||
<div class="upload-ftp-select-all">
|
||||
</th>
|
||||
<th>Name</th>
|
||||
<th>Size</th>
|
||||
<th>Created</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="upload-ftp-body"/>
|
||||
</table>
|
||||
</div>
|
||||
<div class="upload-ftp-warning warningmessage">Your FTP directory does not contain any files.</div>
|
||||
</div>`;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -23,7 +23,7 @@ export default Backbone.View.extend({
|
||||
this.$el.append($("<div/>").addClass("upload-settings-cover"));
|
||||
this.$el.append(
|
||||
$("<table/>")
|
||||
.addClass("upload-settings-table ui-table-striped")
|
||||
.addClass("upload-settings-table grid")
|
||||
.append("<tbody/>")
|
||||
);
|
||||
this.$cover = this.$(".upload-settings-cover");
|
||||
@@ -37,16 +37,15 @@ export default Backbone.View.extend({
|
||||
this.$table.empty();
|
||||
_.each(this.options.parameters, parameter => {
|
||||
var $checkbox = $("<div/>")
|
||||
.addClass(`upload-${parameter.id} upload-icon-button fa`)
|
||||
.addClass((self.model.get(parameter.id) && self.options.class_check) || self.options.class_uncheck)
|
||||
.addClass(`upload-${parameter.id} fa`)
|
||||
.addClass((self.model.get(parameter.id) && self.options.class_check) || self.options.class_uncheck);
|
||||
let $row = $("<tr/>")
|
||||
.append($("<td/>").append($checkbox))
|
||||
.append($("<td/>").append(parameter.title))
|
||||
.on("click", () => {
|
||||
self.model.get("enabled") && self.model.set(parameter.id, !self.model.get(parameter.id));
|
||||
});
|
||||
self.$table.append(
|
||||
$("<tr/>")
|
||||
.append($("<td/>").append($checkbox))
|
||||
.append($("<td/>").append(parameter.title))
|
||||
);
|
||||
self.$table.append($row);
|
||||
});
|
||||
this.$cover[(this.model.get("enabled") && "hide") || "show"]();
|
||||
}
|
||||
|
||||
@@ -45,25 +45,25 @@ var View = Backbone.View.extend({
|
||||
.append(
|
||||
$("<h4/>")
|
||||
.text("System Installed Builds")
|
||||
.addClass("ui-margin-top")
|
||||
.addClass("mt-1")
|
||||
)
|
||||
.append(this.installed_builds.$el))
|
||||
)
|
||||
.append(
|
||||
$("<h4/>")
|
||||
.text("Add a Custom Build")
|
||||
.addClass("ui-margin-top")
|
||||
.addClass("mt-4")
|
||||
)
|
||||
.append(
|
||||
$("<span/>")
|
||||
.addClass("ui-column")
|
||||
.addClass("row")
|
||||
.append(
|
||||
$("<div/>")
|
||||
.addClass("ui-column-left")
|
||||
.addClass("col")
|
||||
.append(this.message.$el)
|
||||
.append((this.$form = $("<div/>").addClass("ui-margin-top")))
|
||||
.append((this.$form = $("<div/>").addClass("mt-1")))
|
||||
)
|
||||
.append((this.$help = $("<div/>").addClass("ui-column-right")))
|
||||
.append((this.$help = $("<div/>").addClass("col m-2")))
|
||||
)
|
||||
);
|
||||
this.listenTo(this.collection, "add remove reset", () => {
|
||||
@@ -90,7 +90,7 @@ var View = Backbone.View.extend({
|
||||
self.table.add(model.id);
|
||||
self.table.add(model.get("count") !== undefined ? model.get("count") : "Processing...");
|
||||
self.table.add(
|
||||
new Ui.ButtonIcon({
|
||||
new Ui.Button({
|
||||
icon: "fa-trash-o",
|
||||
cls: "ui-button-icon-plain",
|
||||
tooltip: _l("Delete custom build."),
|
||||
@@ -186,7 +186,7 @@ var View = Backbone.View.extend({
|
||||
icon: "fa-save",
|
||||
tooltip: _l("Create new Build"),
|
||||
title: _l("Save"),
|
||||
cls: "btn btn-primary ui-clear-float",
|
||||
cls: "btn btn-primary",
|
||||
onclick: function() {
|
||||
var data = form.data.create();
|
||||
if (!data.id || !data.name) {
|
||||
|
||||
@@ -113,10 +113,9 @@ var View = Backbone.View.extend({
|
||||
var config = Galaxy.config;
|
||||
$.getJSON(`${Galaxy.root}api/users/${Galaxy.user.id}`, data => {
|
||||
self.$preferences = $("<div/>")
|
||||
.addClass("ui-panel")
|
||||
.append($("<h2/>").append("User preferences"))
|
||||
.append($("<p/>").append(`You are logged in as <strong>${_.escape(data.email)}</strong>.`))
|
||||
.append((self.$table = $("<table/>").addClass("ui-panel-table")));
|
||||
.append((self.$table = $("<table/>")));
|
||||
var message = QueryStringParsing.get("message");
|
||||
var status = QueryStringParsing.get("status");
|
||||
if (message && status) {
|
||||
@@ -161,19 +160,23 @@ var View = Backbone.View.extend({
|
||||
},
|
||||
|
||||
_templateLink: function(options) {
|
||||
return `<tr><td><div class="ui-panel-icon fa ${
|
||||
options.icon
|
||||
}"></td><td><a class="ui-panel-anchor" href="javascript:void(0)">${
|
||||
options.title
|
||||
}</a><div class="ui-form-info">${options.description}</div></td></tr>`;
|
||||
return `<tr>
|
||||
<td class="align-top">
|
||||
<i class="ml-3 mr-3 fa fa-lg ${options.icon}">
|
||||
</td>
|
||||
<td>
|
||||
<a href="javascript:void(0)"><b>${options.title}</b></a>
|
||||
<div class="form-text text-muted">${options.description}</div>
|
||||
</td>
|
||||
</tr>`;
|
||||
},
|
||||
|
||||
_templateFooter: function(options) {
|
||||
return `<p class="ui-panel-footer">You are using <strong>${
|
||||
return `<p class="mt-2">You are using <strong>${
|
||||
options.nice_total_disk_usage
|
||||
}</strong> of disk space in this Galaxy instance. ${
|
||||
Galaxy.config.enable_quotas ? `Your disk quota is: <strong>${options.quota}</strong>. ` : ""
|
||||
}Is your usage more than expected? See the <a href="https://galaxyproject.org/learn/managing-datasets/" target="_blank">documentation</a> for tips on how to find all of the data in your account.</p>`;
|
||||
}Is your usage more than expected? See the <a href="https://galaxyproject.org/learn/managing-datasets/" target="_blank"><b>documentation</b></a> for tips on how to find all of the data in your account.</p>`;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -27,11 +27,11 @@ export default Backbone.View.extend({
|
||||
<img class="charts-description-image"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="charts-description-title ui-form-info"/>
|
||||
<div class="charts-description-title"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="charts-description-text ui-form-info"/>
|
||||
<div class="charts-description-text"/>
|
||||
</div>`;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -25,11 +25,11 @@ export default Backbone.View.extend({
|
||||
icon: "fa fa-gear",
|
||||
tooltip: "Change settings.",
|
||||
$el: $("<div/>")
|
||||
.append(new Ui.Label({ title: "Provide a title:" }).$el)
|
||||
.append("<label><b>Provide a title</b><label>")
|
||||
.append(this.title.$el)
|
||||
.append(
|
||||
$("<div/>")
|
||||
.addClass("ui-form-info ui-margin-bottom")
|
||||
.addClass("form-text text-muted")
|
||||
.html("This title will appear in the list of 'Saved Visualizations'.")
|
||||
)
|
||||
.append(new Settings(this.app).$el)
|
||||
|
||||
@@ -63,7 +63,6 @@ var GroupView = Backbone.View.extend({
|
||||
self.chart.state("ok", "Metadata initialized...");
|
||||
self.form = new Form({
|
||||
inputs: inputs,
|
||||
cls: "ui-portlet-plain",
|
||||
onchange: function() {
|
||||
self.group.set(self.form.data.create());
|
||||
self.chart.set("modified", true);
|
||||
@@ -105,7 +104,6 @@ export default Backbone.View.extend({
|
||||
this.listenTo(this.chart.groups, "add", function(group) {
|
||||
self.repeat.add({
|
||||
id: group.id,
|
||||
cls: "ui-portlet-panel",
|
||||
$el: new GroupView(self.app, { group: group }).$el,
|
||||
ondel: function() {
|
||||
self.chart.groups.remove(group);
|
||||
|
||||
@@ -7,7 +7,7 @@ export default Backbone.View.extend({
|
||||
initialize: function(app) {
|
||||
this.app = app;
|
||||
this.model = new Backbone.Model({ visible: true });
|
||||
this.execute_button = new Ui.ButtonIcon({
|
||||
this.execute_button = new Ui.Button({
|
||||
icon: "fa-check-square",
|
||||
tooltip: "Confirm",
|
||||
onclick: () => {
|
||||
@@ -79,7 +79,7 @@ export default Backbone.View.extend({
|
||||
});
|
||||
}
|
||||
});
|
||||
this.left_button = new Ui.ButtonIcon({
|
||||
this.left_button = new Ui.Button({
|
||||
icon: "fa-angle-double-left",
|
||||
tooltip: "Show",
|
||||
onclick: () => {
|
||||
@@ -87,7 +87,7 @@ export default Backbone.View.extend({
|
||||
window.dispatchEvent(new Event("resize"));
|
||||
}
|
||||
});
|
||||
this.right_button = new Ui.ButtonIcon({
|
||||
this.right_button = new Ui.Button({
|
||||
icon: "fa-angle-double-right",
|
||||
tooltip: "Hide",
|
||||
onclick: () => {
|
||||
@@ -95,7 +95,7 @@ export default Backbone.View.extend({
|
||||
window.dispatchEvent(new Event("resize"));
|
||||
}
|
||||
});
|
||||
this.save_button = new Ui.ButtonIcon({
|
||||
this.save_button = new Ui.Button({
|
||||
icon: "fa-save",
|
||||
tooltip: "Save",
|
||||
onclick: () => {
|
||||
|
||||
@@ -26,7 +26,7 @@ export default Backbone.View.extend({
|
||||
} else {
|
||||
this.chart.settings.set("__use_panels", panel_option == "yes" ? "true" : "false");
|
||||
}
|
||||
this.$el.empty().addClass("ui-margin-bottom");
|
||||
this.$el.empty();
|
||||
if (_.size(inputs) > 0) {
|
||||
FormData.visitInputs(inputs, function(input, name) {
|
||||
var model_value = self.chart.settings.get(name);
|
||||
@@ -36,7 +36,6 @@ export default Backbone.View.extend({
|
||||
});
|
||||
this.form = new Form({
|
||||
inputs: inputs,
|
||||
cls: "ui-portlet-plain",
|
||||
onchange: function() {
|
||||
self.chart.settings.set(self.form.data.create());
|
||||
self.chart.trigger("redraw");
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import * as Toastr from "libs/toastr";
|
||||
|
||||
function Connector(handle1, handle2) {
|
||||
this.canvas = null;
|
||||
this.dragging = false;
|
||||
@@ -30,8 +32,11 @@ $.extend(Connector.prototype, {
|
||||
}
|
||||
$(this.canvas).remove();
|
||||
},
|
||||
destroyIfInvalid: function() {
|
||||
destroyIfInvalid: function(warn) {
|
||||
if (this.handle1 && this.handle2 && !this.handle2.attachable(this.handle1)) {
|
||||
if (warn) {
|
||||
Toastr.warning("Destroying a connection because collection type has changed.");
|
||||
}
|
||||
this.destroy();
|
||||
}
|
||||
},
|
||||
|
||||
@@ -42,7 +42,7 @@ var Tool = Backbone.View.extend({
|
||||
text_disable: "Set at Runtime",
|
||||
narrow: true,
|
||||
initial_errors: true,
|
||||
cls: "ui-portlet-narrow",
|
||||
cls: "ui-portlet-section",
|
||||
initialmodel: function(process, form) {
|
||||
self._customize(form);
|
||||
process.resolve();
|
||||
@@ -191,10 +191,27 @@ function _visit(head, head_list, output_id, options) {
|
||||
}
|
||||
}
|
||||
|
||||
function _makeRenameHelp(name_labels) {
|
||||
let help_section = `This action will rename the output dataset. Click <a href="https://galaxyproject.org/learn/advanced-workflow/variables/">here</a> for more information. Valid input variables are:`;
|
||||
let li = `
|
||||
<ul>
|
||||
${name_labels
|
||||
.map(
|
||||
name_label => `<li><strong>${name_label.name.replace(/\|/g, ".")}</strong>
|
||||
${name_label.label ? `(${name_label.label})` : ""}
|
||||
</li>`
|
||||
)
|
||||
.join("")}
|
||||
</ul>
|
||||
`;
|
||||
help_section += li;
|
||||
return help_section;
|
||||
}
|
||||
|
||||
/** Builds sub section with step actions/annotation */
|
||||
function _makeSection(output_id, options) {
|
||||
function _makeSection(output_id, label, options) {
|
||||
var extensions = [];
|
||||
var input_terminal_names = [];
|
||||
var name_label_map = [];
|
||||
var datatypes = options.datatypes;
|
||||
var node = options.node;
|
||||
var workflow = options.workflow;
|
||||
@@ -202,9 +219,10 @@ function _makeSection(output_id, options) {
|
||||
for (var key in datatypes) {
|
||||
extensions.push({ 0: datatypes[key], 1: datatypes[key] });
|
||||
}
|
||||
for (key in node.input_terminals) {
|
||||
input_terminal_names.push(node.input_terminals[key].name);
|
||||
for (var key in node.input_terminals) {
|
||||
name_label_map.push({ name: node.input_terminals[key].name, label: node.input_terminals[key].label });
|
||||
}
|
||||
var rename_help = _makeRenameHelp(name_label_map);
|
||||
extensions.sort((a, b) => (a.label > b.label ? 1 : a.label < b.label ? -1 : 0));
|
||||
extensions.unshift({
|
||||
0: "Sequences",
|
||||
@@ -220,7 +238,7 @@ function _makeSection(output_id, options) {
|
||||
});
|
||||
var output;
|
||||
var input_config = {
|
||||
title: `Configure Output: '${output_id}'`,
|
||||
title: `Configure Output: '${label}'`,
|
||||
type: "section",
|
||||
flat: true,
|
||||
inputs: [
|
||||
@@ -240,9 +258,7 @@ function _makeSection(output_id, options) {
|
||||
type: "text",
|
||||
value: "",
|
||||
ignore: "",
|
||||
help: `This action will rename the output dataset. Click <a href="https://galaxyproject.org/learn/advanced-workflow/variables/">here</a> for more information. Valid inputs are: <strong>${input_terminal_names
|
||||
.join(", ")
|
||||
.replace(/\|/g, ".")}</strong>.`
|
||||
help: rename_help
|
||||
},
|
||||
{
|
||||
action: "ChangeDatatypeAction",
|
||||
@@ -355,8 +371,9 @@ function _addSections(form) {
|
||||
help:
|
||||
"Upon completion of this step, delete non-starred outputs from completed workflow steps if they are no longer required as inputs."
|
||||
});
|
||||
for (var i in node.output_terminals) {
|
||||
inputs.push(_makeSection(i, options));
|
||||
for (let output_id in node.output_terminals) {
|
||||
let label = node.output_terminals[output_id].label || output_id;
|
||||
inputs.push(_makeSection(output_id, label, options));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ class Workflow {
|
||||
$.each(node.output_terminals, (ot_id, ot) => {
|
||||
if (node.post_job_actions[`HideDatasetAction${ot.name}`] === undefined) {
|
||||
node.addWorkflowOutput(ot.name);
|
||||
var callout = $(node.element).find(`.callout.${ot.name.replace(/(?=[()])/g, '\\')}`);
|
||||
var callout = $(node.element).find(`.callout.${ot.name.replace(/(?=[()])/g, "\\")}`);
|
||||
callout.find("img").attr("src", `${Galaxy.root}static/images/fugue/asterisk-small.png`);
|
||||
wf.has_changes = true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
// TODO; tie into Galaxy state?
|
||||
window.workflow_globals = window.workflow_globals || {};
|
||||
import * as Toastr from "libs/toastr";
|
||||
|
||||
function CollectionTypeDescription(collectionType) {
|
||||
this.collectionType = collectionType;
|
||||
@@ -131,6 +130,9 @@ var Terminal = Backbone.Model.extend({
|
||||
if (this.node) {
|
||||
this.node.markChanged();
|
||||
this.resetMappingIfNeeded();
|
||||
if (!connector.dragging) {
|
||||
connector.handle2.resetCollectionTypeSource();
|
||||
}
|
||||
}
|
||||
},
|
||||
redraw: function() {
|
||||
@@ -176,6 +178,17 @@ var Terminal = Backbone.Model.extend({
|
||||
this.terminalMapping.disableMapOver();
|
||||
},
|
||||
|
||||
resetCollectionTypeSource: function() {
|
||||
let node = this.node;
|
||||
_.each(node.output_terminals, function(output_terminal) {
|
||||
let type_source = output_terminal.attributes.collection_type_source;
|
||||
if (type_source && output_terminal.attributes.collection_type) {
|
||||
output_terminal.attributes.collection_type = null;
|
||||
output_terminal.update(output_terminal.attributes);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
resetMappingIfNeeded: function() {} // Subclasses should override this...
|
||||
});
|
||||
|
||||
@@ -438,6 +451,24 @@ var InputCollectionTerminal = BaseInputTerminal.extend({
|
||||
var other = connector.handle1;
|
||||
if (!other) {
|
||||
return;
|
||||
} else {
|
||||
let node = this.node;
|
||||
_.each(node.output_terminals, function(output_terminal) {
|
||||
if (output_terminal.attributes.collection_type_source && !connector.dragging) {
|
||||
if (other.isMappedOver()) {
|
||||
if (other.isCollection) {
|
||||
output_terminal.attributes.collection_type = other.terminalMapping.mapOver.append(
|
||||
other.collectionType
|
||||
).collectionType;
|
||||
} else {
|
||||
output_terminal.attributes.collection_type = other.terminalMapping.mapOver.collectionType;
|
||||
}
|
||||
} else {
|
||||
output_terminal.attributes.collection_type = other.attributes.collection_type;
|
||||
}
|
||||
output_terminal.update(output_terminal.attributes);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var effectiveMapOver = this._effectiveMapOver(other);
|
||||
@@ -523,14 +554,15 @@ var OutputCollectionTerminal = Terminal.extend({
|
||||
newCollectionType = ANY_COLLECTION_TYPE_DESCRIPTION;
|
||||
}
|
||||
|
||||
if (newCollectionType.collectionType != this.collectionType.collectionType) {
|
||||
_.each(this.connectors, connector => {
|
||||
// TODO: consider checking if connection valid before removing...
|
||||
Toastr.warning("Destroying a connection because collection type has changed.");
|
||||
connector.destroy();
|
||||
let oldCollectionType = this.collectionType;
|
||||
this.collectionType = newCollectionType;
|
||||
// we need to iterate over a copy, as we slice this.connectors in the process of destroying connections
|
||||
var connectors = this.connectors.slice(0);
|
||||
if (newCollectionType.collectionType != oldCollectionType.collectionType) {
|
||||
_.each(connectors, connector => {
|
||||
connector.destroyIfInvalid(true);
|
||||
});
|
||||
}
|
||||
this.collectionType = newCollectionType;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ var DataOutputView = Backbone.View.extend({
|
||||
this.nodeView = options.nodeView;
|
||||
|
||||
var output = this.output;
|
||||
var label = output.name;
|
||||
var label = output.label || output.name;
|
||||
var node = this.nodeView.node;
|
||||
|
||||
var isInput = output.extensions.indexOf("input") >= 0 || output.extensions.indexOf("input_collection") >= 0;
|
||||
|
||||
@@ -84,6 +84,7 @@ var BaseInputTerminalView = TerminalView.extend({
|
||||
|
||||
terminal.node = node;
|
||||
terminal.name = name;
|
||||
terminal.label = input.label;
|
||||
node.input_terminals[name] = terminal;
|
||||
},
|
||||
events: {
|
||||
@@ -185,6 +186,7 @@ var BaseOutputTerminalView = TerminalView.extend({
|
||||
this.$el.attr("id", id);
|
||||
terminal.node = node;
|
||||
terminal.name = name;
|
||||
terminal.label = output.label;
|
||||
node.output_terminals[name] = terminal;
|
||||
},
|
||||
events: {
|
||||
|
||||
@@ -278,46 +278,51 @@ export default Backbone.View.extend({
|
||||
let workflow_versions = JSON.parse(
|
||||
$.ajax({
|
||||
url: `${Galaxy.root}api/workflows/${self.options.id}/versions`,
|
||||
async: false,
|
||||
async: false
|
||||
}).responseText
|
||||
);
|
||||
|
||||
for (let i = 0; i < workflow_versions.length; i++) {
|
||||
let current_wf = workflow_versions[i];
|
||||
let version_text = `Version ${current_wf['version']}, ${current_wf['steps']} steps`;
|
||||
let version_text = `Version ${current_wf["version"]}, ${current_wf["steps"]} steps`;
|
||||
let selected = false;
|
||||
if (i == self.workflow.workflow_version) {
|
||||
version_text = `${version_text} (active)`;
|
||||
selected = true;
|
||||
};
|
||||
}
|
||||
_workflow_version_dropdown[version_text] = {
|
||||
version: i,
|
||||
selected: selected,
|
||||
}
|
||||
selected: selected
|
||||
};
|
||||
}
|
||||
return _workflow_version_dropdown
|
||||
}
|
||||
return _workflow_version_dropdown;
|
||||
};
|
||||
|
||||
this.build_version_select = function() {
|
||||
let versions = this.get_workflow_versions();
|
||||
$("#workflow-version-switch").empty();
|
||||
$.each(versions, function(k, v) {
|
||||
$('#workflow-version-switch').append($('<option></option>').html(k).val(v.version).selected(v.selected));
|
||||
$("#workflow-version-switch").append(
|
||||
$("<option></option>")
|
||||
.html(k)
|
||||
.val(v.version)
|
||||
.selected(v.selected)
|
||||
);
|
||||
});
|
||||
$("#workflow-version-switch").on('change', function () {
|
||||
$('#workflow-version-switch').unbind('change');
|
||||
$("#workflow-version-switch").on("change", function() {
|
||||
$("#workflow-version-switch").unbind("change");
|
||||
if (this.value != self.workflow.workflow_version) {
|
||||
if (self.workflow && self.workflow.has_changes) {
|
||||
let r = confirm("There are unsaved changes to your workflow which will be lost. Continue ?");
|
||||
if (r == false) {
|
||||
// We rebuild the version select list, to reset the selected version
|
||||
self.build_version_select();
|
||||
return
|
||||
return;
|
||||
}
|
||||
}
|
||||
self.load_workflow(self.options.id, this.value);
|
||||
}
|
||||
})
|
||||
});
|
||||
};
|
||||
|
||||
this.load_workflow = function load_workflow(id, version) {
|
||||
@@ -360,19 +365,21 @@ export default Backbone.View.extend({
|
||||
self.showWorkflowParameters();
|
||||
},
|
||||
error: function(response) {
|
||||
window.show_modal("Loading workflow failed.", response.err_msg, { Ok: function( response ){
|
||||
window.onbeforeunload = undefined;
|
||||
window.document.location = workflow_index;
|
||||
}})
|
||||
window.show_modal("Loading workflow failed.", response.err_msg, {
|
||||
Ok: function(response) {
|
||||
window.onbeforeunload = undefined;
|
||||
window.document.location = workflow_index;
|
||||
}
|
||||
});
|
||||
},
|
||||
beforeSubmit: function(data) {
|
||||
show_message("Loading workflow", "progress");
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Load workflow definition
|
||||
this.load_workflow(self.options.id, self.options.version)
|
||||
this.load_workflow(self.options.id, self.options.version);
|
||||
if (window.make_popupmenu) {
|
||||
make_popupmenu($("#workflow-options-button"), {
|
||||
Save: save_current_workflow,
|
||||
@@ -547,7 +554,7 @@ export default Backbone.View.extend({
|
||||
);
|
||||
_.each(this.options.workflows, workflow => {
|
||||
if (workflow.id !== self.options.id) {
|
||||
var copy = new Ui.ButtonIcon({
|
||||
var copy = new Ui.Button({
|
||||
icon: "fa fa-copy",
|
||||
cls: "ui-button-icon-plain",
|
||||
tooltip: _l("Copy and insert individual steps"),
|
||||
@@ -770,7 +777,7 @@ export default Backbone.View.extend({
|
||||
content.workflow = this.workflow;
|
||||
content.datatypes = this.datatypes;
|
||||
content.icon = WorkflowIcons[node.type];
|
||||
content.cls = "ui-portlet-narrow";
|
||||
content.cls = "ui-portlet-section";
|
||||
if (node) {
|
||||
var form_type = node.type == "tool" ? "Tool" : "Default";
|
||||
$el.append(new FormWrappers[form_type](content).form.$el);
|
||||
|
||||
@@ -16,6 +16,5 @@ import hc from "qunit/tests/history_contents_model_tests";
|
||||
import hda from "qunit/tests/hda_base_tests";
|
||||
import modal from "qunit/tests/modal_tests";
|
||||
import page from "qunit/tests/page_tests";
|
||||
import popover from "qunit/tests/popover_tests";
|
||||
import utils from "qunit/tests/utils_tests";
|
||||
import ui from "qunit/tests/ui_tests";
|
||||
|
||||
@@ -62,7 +62,7 @@ QUnit.test("tool-form", function(assert) {
|
||||
.parent()
|
||||
.click();
|
||||
assert.ok(
|
||||
form.$(".ui-message").html() ===
|
||||
form.$(".alert").html() ===
|
||||
'<span>This tool requires req_name_a (Version req_version_a) and req_name_b (Version req_version_b). Click <a target="_blank" href="https://galaxyproject.org/tools/requirements/">here</a> for more information.</span>',
|
||||
"Check requirements message"
|
||||
);
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/* global define */
|
||||
import testApp from "qunit/test-app";
|
||||
import Ui from "mvc/ui/ui-misc";
|
||||
import Popover from "mvc/ui/ui-popover";
|
||||
|
||||
QUnit.module("Popover test", {
|
||||
beforeEach: function() {
|
||||
testApp.create();
|
||||
var self = this;
|
||||
this.button = new Ui.Button({
|
||||
title: "Test button",
|
||||
onclick: function() {
|
||||
self.popover.show();
|
||||
}
|
||||
});
|
||||
this.$parent = $("<div/>").append(this.button.$el);
|
||||
this.popover = new Popover.View({
|
||||
title: "Test Title",
|
||||
body: "Test Body",
|
||||
placement: "bottom",
|
||||
container: this.button.$el
|
||||
});
|
||||
$("body").append(this.$parent);
|
||||
},
|
||||
afterEach: function() {
|
||||
testApp.destroy();
|
||||
}
|
||||
});
|
||||
|
||||
QUnit.test("test popover visibility", function(assert) {
|
||||
assert.ok(this.popover.$el.css("display") == "none", "Popover is hidden.");
|
||||
this.button.$el.trigger("click");
|
||||
assert.ok(this.popover.$el.css("display") == "block", "Popover is shown.");
|
||||
assert.ok(this.popover.$el.hasClass("bottom"), "Popover at bottom.");
|
||||
this.popover.hide();
|
||||
assert.ok(this.popover.$el.css("display") == "none", "Popover is hidden manually.");
|
||||
assert.ok(this.popover.$title.html() == "Test Title", "Initial title correct.");
|
||||
this.popover.title("New Title");
|
||||
assert.ok(this.popover.$title.html() == "New Title", "New title correct.");
|
||||
});
|
||||
@@ -100,20 +100,6 @@ QUnit.test("button-default", function(assert) {
|
||||
assert.ok(button.$title.html() == model.get("title"), "Shows correct regular title");
|
||||
});
|
||||
|
||||
QUnit.test("button-icon", function(assert) {
|
||||
var button = new Ui.ButtonIcon({ title: "title" });
|
||||
var model = button.model;
|
||||
$("body").prepend(button.$el);
|
||||
assert.ok(button.$title.html() == "title", "Has correct title");
|
||||
model.set("title", "_title");
|
||||
assert.ok(button.$title.html() == "_title", "Has correct new title");
|
||||
assert.ok(!button.$el.attr("disabled"), "Button active");
|
||||
model.set("disabled", true);
|
||||
assert.ok(button.$el.attr("disabled"), "Button disabled");
|
||||
model.set("disabled", false);
|
||||
assert.ok(!button.$el.attr("disabled"), "Button active, again");
|
||||
});
|
||||
|
||||
QUnit.test("button-check", function(assert) {
|
||||
var button = new Ui.ButtonCheck({ title: "title" });
|
||||
var model = button.model;
|
||||
@@ -630,16 +616,6 @@ QUnit.test("select-default", function(assert) {
|
||||
});
|
||||
});
|
||||
|
||||
QUnit.test("label", function(assert) {
|
||||
var label = new Ui.Label({
|
||||
title: "_title"
|
||||
});
|
||||
$("body").prepend(label.$el);
|
||||
assert.ok(label.$el.html() === "_title", "Correct title");
|
||||
label.model.set("title", "_new_title");
|
||||
assert.ok(label.$el.html() === "_new_title", "Correct new title");
|
||||
});
|
||||
|
||||
QUnit.test("slider", function(assert) {
|
||||
var input = new Slider.View({ min: 1, max: 100, value: 10 });
|
||||
$("body").prepend(input.$el);
|
||||
|
||||
@@ -40,15 +40,6 @@ QUnit.test("test adding/removing paste/fetch upload item", function(assert) {
|
||||
.hasClass("fa-trash-o"),
|
||||
"Should show regular trash icon."
|
||||
);
|
||||
$("#upload-row-0")
|
||||
.find(".upload-settings")
|
||||
.trigger("click");
|
||||
assert.ok(
|
||||
$("#upload-row-0")
|
||||
.find(".upload-settings-cover")
|
||||
.css("display") == "none",
|
||||
"Settings should be enabled."
|
||||
);
|
||||
$("#upload-row-0")
|
||||
.find(".popover-close")
|
||||
.trigger("click");
|
||||
@@ -59,17 +50,6 @@ QUnit.test("test adding/removing paste/fetch upload item", function(assert) {
|
||||
.hasClass("fa-exclamation-triangle"),
|
||||
"Upload attempt should have failed."
|
||||
);
|
||||
assert.ok(
|
||||
$("#upload-row-0")
|
||||
.find(".upload-settings")
|
||||
.trigger("click")
|
||||
);
|
||||
assert.ok(
|
||||
$("#upload-row-0")
|
||||
.find(".upload-settings-cover")
|
||||
.css("display") == "block",
|
||||
"Settings should be disabled."
|
||||
);
|
||||
$("#upload-row-0")
|
||||
.find(".upload-symbol")
|
||||
.trigger("click");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import jQuery from "jquery";
|
||||
("use_strict");
|
||||
import * as _ from "underscore";
|
||||
|
||||
var $ = jQuery;
|
||||
//============================================================================
|
||||
@@ -42,7 +42,14 @@ var faIconButton = options => {
|
||||
].join("");
|
||||
var $button = $(html).tooltip(options.tooltipConfig);
|
||||
if (_.isFunction(options.onclick)) {
|
||||
$button.click(options.onclick);
|
||||
$button.click(function(ev) {
|
||||
$button.tooltip("hide");
|
||||
$button
|
||||
.parent()
|
||||
.attr("tabindex", -1)
|
||||
.focus();
|
||||
options.onclick.apply(this, arguments);
|
||||
});
|
||||
}
|
||||
return $button;
|
||||
};
|
||||
|
||||
@@ -1,21 +1,15 @@
|
||||
// Bootstrap variables and core framework
|
||||
@import "../../../node_modules/bootstrap/scss/_functions.scss";
|
||||
@import "galaxy_bootstrap/variables.scss";
|
||||
@import "theme/blue.scss";
|
||||
@import "../../../node_modules/bootstrap/scss/bootstrap.scss";
|
||||
|
||||
// Bootstrap-related style overrides
|
||||
@import "overrides.scss";
|
||||
|
||||
// Fontawesome configuration.
|
||||
$fa-font-path: "../images/fonts";
|
||||
@import "../../../node_modules/font-awesome/scss/font-awesome.scss";
|
||||
|
||||
// Bootstrap-related style overrides
|
||||
@import "galaxy_bootstrap/overrides.scss";
|
||||
|
||||
// Galaxy specific variables
|
||||
@import "galaxy_variables.scss";
|
||||
|
||||
$white: #fff;
|
||||
$black: #000;
|
||||
|
||||
.fa-icon {
|
||||
// TODO: remove fa-icon and replace with fa
|
||||
@extend .fa;
|
||||
@@ -73,8 +67,8 @@ $black: #000;
|
||||
}
|
||||
|
||||
body {
|
||||
background: $base-bg;
|
||||
color: $base-text-color;
|
||||
background: $body-bg;
|
||||
color: $text-color;
|
||||
margin: 10px;
|
||||
|
||||
// For panel layout pages
|
||||
@@ -159,13 +153,13 @@ body {
|
||||
}
|
||||
#left {
|
||||
left: 0px;
|
||||
width: 250px;
|
||||
width: $panel-width;
|
||||
z-index: 200;
|
||||
border-right: solid $layout-border-color 1px;
|
||||
border-right: $layout-border;
|
||||
}
|
||||
#center {
|
||||
left: 250 + $border-default-color_padding;
|
||||
right: 250 + $border-default-color_padding;
|
||||
left: $panel-width;
|
||||
right: $panel-width;
|
||||
overflow: hidden;
|
||||
z-index: 1;
|
||||
.center-container {
|
||||
@@ -177,7 +171,7 @@ body {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 10px;
|
||||
padding: $margin-h $margin-v;
|
||||
overflow: auto;
|
||||
}
|
||||
.center-frame {
|
||||
@@ -189,10 +183,18 @@ body {
|
||||
}
|
||||
|
||||
#right {
|
||||
width: 250px;
|
||||
width: $panel-width;
|
||||
right: 0px;
|
||||
z-index: 200;
|
||||
border-left: solid $layout-border-color 1px;
|
||||
border-left: $layout-border;
|
||||
}
|
||||
|
||||
#left,
|
||||
#right,
|
||||
.unified-panel {
|
||||
background: $panel-bg-color;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#left,
|
||||
@@ -205,30 +207,19 @@ body {
|
||||
|
||||
.unified-panel-header {
|
||||
@extend .unselectable;
|
||||
@extend .m-2;
|
||||
height: $panel_header_height;
|
||||
z-index: 1000;
|
||||
text-shadow: rgba(255, 255, 255, 0.8) 0 1px 0;
|
||||
background: $panel-header-bg-color;
|
||||
border-bottom: solid $layout-border-color 1px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
font-size: 1rem;
|
||||
font-weight: bold;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
color: $panel-header-text-color;
|
||||
a {
|
||||
color: $panel-header-text-color;
|
||||
}
|
||||
.fa {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.unified-panel-header-inner {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
@@ -241,6 +232,13 @@ body {
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
width: 1.2rem;
|
||||
text-align: center;
|
||||
padding: 0px;
|
||||
&:not(:last-child) {
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
// Fade to maroon on hover
|
||||
&:hover {
|
||||
color: maroon;
|
||||
@@ -258,15 +256,18 @@ body {
|
||||
}
|
||||
}
|
||||
|
||||
.unified-panel-controls {
|
||||
padding: 0 $margin-v;
|
||||
}
|
||||
|
||||
.unified-panel-footer {
|
||||
@extend .unselectable;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
position: relative;
|
||||
height: $panel_footer_height;
|
||||
line-height: $panel_footer_height;
|
||||
width: 100%;
|
||||
z-index: 1000; // Above #dd-helper
|
||||
border-top: solid $layout-border-color 1px;
|
||||
border-top: $layout-border;
|
||||
background: $navbar-default-bg;
|
||||
|
||||
color: #555;
|
||||
@@ -319,14 +320,14 @@ body {
|
||||
line-height: $panel_footer_height;
|
||||
width: $panel_footer_height - 5;
|
||||
background: none;
|
||||
border-right: solid $layout-border-color 1px;
|
||||
border-top: solid $layout-border-color 1px;
|
||||
border-right: $layout-border;
|
||||
border-top: $layout-border;
|
||||
background: $navbar-default-bg;
|
||||
&.right {
|
||||
left: inherit;
|
||||
right: 0;
|
||||
border-right: none;
|
||||
border-left: solid $border-default-color 1px;
|
||||
border-left: $layout_border;
|
||||
&.right:before {
|
||||
content: "\f054";
|
||||
}
|
||||
@@ -342,6 +343,7 @@ body {
|
||||
|
||||
div.unified-panel-body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0px;
|
||||
flex: 1;
|
||||
}
|
||||
@@ -378,11 +380,11 @@ div.unified-panel-body-background {
|
||||
height: $panel-message-height;
|
||||
line-height: $panel-message-height;
|
||||
padding: 0px;
|
||||
padding-left: 26px;
|
||||
padding-left: 2.5rem;
|
||||
background-color: $state-danger-bg;
|
||||
background-image: url(error_small.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 6px 50%;
|
||||
background-position: 0.5rem 50%;
|
||||
}
|
||||
|
||||
.panel-warning-message {
|
||||
@@ -396,8 +398,12 @@ div.unified-panel-body-background {
|
||||
}
|
||||
|
||||
.panel-info-message {
|
||||
background-image: url(info_small.png);
|
||||
background-image: url(info_icon.svg);
|
||||
background-size: 1.5rem;
|
||||
background-color: $state-info-bg;
|
||||
svg:path {
|
||||
fill: black;
|
||||
}
|
||||
}
|
||||
|
||||
// Masthead
|
||||
@@ -753,7 +759,7 @@ button {
|
||||
padding: 4px;
|
||||
font-size: $font-size-base;
|
||||
line-height: $line-height-base;
|
||||
color: $gray;
|
||||
color: $gray-700;
|
||||
border: 1px solid $input-border;
|
||||
padding-left: 14px !important;
|
||||
padding-right: 14px;
|
||||
@@ -773,19 +779,19 @@ button {
|
||||
position: absolute;
|
||||
display: none;
|
||||
right: 6px;
|
||||
top: 9px;
|
||||
top: 5px;
|
||||
font-size: 1.4em;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
#tool-search {
|
||||
position: relative;
|
||||
margin: 10px;
|
||||
margin: 10px 0;
|
||||
|
||||
#search-clear-btn {
|
||||
position: absolute;
|
||||
right: 6px;
|
||||
top: 6px;
|
||||
top: 5px;
|
||||
display: block;
|
||||
font-size: 1.4em !important;
|
||||
text-decoration: none;
|
||||
@@ -969,7 +975,7 @@ table.colored th {
|
||||
|
||||
table.colored tr.header {
|
||||
background: $table-heading-bg;
|
||||
color: contrast($complement-color-3);
|
||||
color: contrast(spin($base-color-3, 180));
|
||||
background-repeat: repeat-x;
|
||||
background-position: top;
|
||||
border-bottom: solid $table-border-color 1px;
|
||||
@@ -1431,7 +1437,7 @@ ul.dropdown-menu {
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
line-height: $line-height-base;
|
||||
color: $gray-light;
|
||||
color: $gray-500;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
@@ -1605,7 +1611,7 @@ div.permissionContainer {
|
||||
}
|
||||
background: $panel-bg-color;
|
||||
min-height: 100%;
|
||||
padding: 5px 10px;
|
||||
padding: $margin-h $margin-v;
|
||||
}
|
||||
|
||||
div.toolSectionPad {
|
||||
@@ -1625,7 +1631,8 @@ div.toolSectionDetailsInner {
|
||||
}
|
||||
|
||||
div.toolSectionTitle {
|
||||
font-weight: bold;
|
||||
font-weight: 500;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
div.toolPanelLabel {
|
||||
@@ -1639,10 +1646,9 @@ div.toolPanelLabel {
|
||||
div.toolTitle {
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
margin-left: 16px;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
display: list-item;
|
||||
list-style: square outside;
|
||||
display: block;
|
||||
.labels {
|
||||
float: right;
|
||||
margin-left: 2px;
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
.charts-client {
|
||||
.charts-buttons {
|
||||
float: right;
|
||||
margin: 5px 0px;
|
||||
@extend .float-right;
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
z-index: 1000;
|
||||
.ui-button-icon {
|
||||
display: block;
|
||||
margin-right: 5px;
|
||||
width: 170px;
|
||||
top: 4px;
|
||||
.btn {
|
||||
background: white;
|
||||
color: #666;
|
||||
border-color: white;
|
||||
border: none;
|
||||
.icon {
|
||||
font-size: 1.2em;
|
||||
line-height: 1.2em;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
.fa-check-square {
|
||||
color: $state-success-text;
|
||||
@@ -30,6 +30,7 @@
|
||||
position: absolute;
|
||||
margin: 40px 20px 50px 10px;
|
||||
width: 50%;
|
||||
word-break: break-word;
|
||||
}
|
||||
.text {
|
||||
position: relative;
|
||||
@@ -60,18 +61,18 @@
|
||||
width: 30%;
|
||||
height: 100vh;
|
||||
padding-bottom: 32px;
|
||||
padding-top: 32px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.ui-message {
|
||||
margin: 5px;
|
||||
width: auto;
|
||||
.alert {
|
||||
@extend .m-2;
|
||||
}
|
||||
.charts-editor {
|
||||
display: block;
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
padding: 5px 10px 10px 5px;
|
||||
padding: 5px 10px 30px 5px;
|
||||
.charts-description {
|
||||
margin-bottom: 20px;
|
||||
.charts-description-image-td {
|
||||
@@ -90,18 +91,6 @@
|
||||
word-break: break-word;
|
||||
}
|
||||
}
|
||||
.tab-icon {
|
||||
margin-right: 0px;
|
||||
color: #666;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
.portlet-content {
|
||||
padding: 0px;
|
||||
}
|
||||
.ui-table-section,
|
||||
.ui-portlet-panel .portlet-content {
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
$frame-default-border: darken($gray-lighter, $border-darken-percent);
|
||||
$frame-zindex: 1000;
|
||||
$frame-default-border: $gray-300;
|
||||
|
||||
.galaxy-frame {
|
||||
.corner {
|
||||
@@ -11,7 +12,7 @@ $frame-default-border: darken($gray-lighter, $border-darken-percent);
|
||||
}
|
||||
|
||||
.frame-background {
|
||||
z-index: $zindex-navbar;
|
||||
z-index: $frame-zindex;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
@@ -23,7 +24,7 @@ $frame-default-border: darken($gray-lighter, $border-darken-percent);
|
||||
}
|
||||
|
||||
.frame-shadow {
|
||||
z-index: $zindex-navbar + 1;
|
||||
z-index: $frame-zindex + 1;
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
@@ -37,7 +38,7 @@ $frame-default-border: darken($gray-lighter, $border-darken-percent);
|
||||
panel menu button
|
||||
*/
|
||||
.frame-menu {
|
||||
z-index: $zindex-navbar + 5;
|
||||
z-index: $frame-zindex + 5;
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
color: gold;
|
||||
@@ -57,7 +58,7 @@ $frame-default-border: darken($gray-lighter, $border-darken-percent);
|
||||
*/
|
||||
|
||||
.frame {
|
||||
z-index: $zindex-navbar + 2;
|
||||
z-index: $frame-zindex + 2;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
background: $white;
|
||||
|
||||
@@ -1,201 +0,0 @@
|
||||
// Everything is derived from $base-color
|
||||
// Caveat: currently only works for light colored backgrounds, scss provides functions (contrast) that could be used to improve this
|
||||
|
||||
// Base color -- Based on the Galaxy masthead color
|
||||
$base-color-1: #2c3143;
|
||||
$base-color-2: lighten($base-color-1, 25%);
|
||||
$base-color-3: lighten($base-color-1, 50%);
|
||||
|
||||
// DB: complement-colors 1, 2 currently unused
|
||||
//$complement-color-1: spin($base-color-1, 180);
|
||||
//$complement-color-2: spin($base-color-2, 180);
|
||||
$complement-color-3: spin($base-color-3, 180);
|
||||
|
||||
$base-color: $base-color-2;
|
||||
|
||||
// Default border bolor, this is between gray-light and gray-lighter -- classic Galaxy border color
|
||||
$border-default-color: lighten(black, 75%);
|
||||
|
||||
// When making borders for components with other colors, how much to darken
|
||||
$border-darken-percent: 40%;
|
||||
|
||||
// Grays
|
||||
|
||||
// These come from Bootstrap 4 _variables.scss
|
||||
$white: #fff !default;
|
||||
$gray-100: #f8f9fa !default;
|
||||
$gray-200: #e9ecef !default;
|
||||
$gray-300: #dee2e6 !default;
|
||||
$gray-400: #ced4da !default;
|
||||
$gray-500: #adb5bd !default;
|
||||
$gray-600: #868e96 !default;
|
||||
$gray-700: #495057 !default;
|
||||
$gray-800: #343a40 !default;
|
||||
$gray-900: #212529 !default;
|
||||
$black: #000 !default;
|
||||
|
||||
// These are from Boostrap 2/3 but are used in Galaxy styles, map them to the
|
||||
// closest gray level defined in Bootstrap 4.
|
||||
$gray-darker: $gray-900;
|
||||
$gray-dark: $gray-800;
|
||||
$gray: $gray-700;
|
||||
$gray-light: $gray-500;
|
||||
$gray-lighter: $gray-200;
|
||||
|
||||
// Brand colors
|
||||
// -------------------------
|
||||
|
||||
// Galaxy color history: when first moving to bootstrap, we derived a set of
|
||||
// colors for Galaxy by starting with the Galaxy masthead color (see
|
||||
// $base-color above), and mixing it with the boostrap default colors. The
|
||||
// default colors, and their variable names, have all since changed through
|
||||
// bootstrap 3 and bootstrap 4. We've saved those colors so we can replicate
|
||||
// our current color scheme.
|
||||
|
||||
// These are the Galaxy primary colors original derived by mixing the Galaxy
|
||||
// $base-color with Bootstrap 2 and 3 colors. These are now hardcoded as the
|
||||
// derivations get increasingly complicated with each release. See the history
|
||||
// of this file and `base.less` for details.
|
||||
$galaxy-bs3-primary: #25537b;
|
||||
$galaxy-bs3-success: #3a873a;
|
||||
$galaxy-bs3-warning: #ae7628;
|
||||
$galaxy-bs3-danger: #c8524f;
|
||||
$galaxy-bs3-info: #3189a3;
|
||||
|
||||
// Lightening and saturating gets to alert backgrounds that are *very close*
|
||||
// to the Boostrap 3 Galaxy styles.
|
||||
$brand-primary: $galaxy-bs3-primary;
|
||||
$brand-success: saturate(lighten($galaxy-bs3-success, 5%), 30%);
|
||||
$brand-info: saturate(lighten($galaxy-bs3-info, 10%), 30%);
|
||||
$brand-warning: saturate(lighten($galaxy-bs3-warning, 10%), 30%);
|
||||
$brand-danger: saturate(lighten($galaxy-bs3-danger, 10%), 30%);
|
||||
|
||||
// These variables don't actually determine the colors in Bootstrap 4, instead
|
||||
// they use a map called $theme-colors, so here we override that
|
||||
|
||||
$theme-colors: ();
|
||||
$theme-colors: map-merge(
|
||||
(
|
||||
"primary": $brand-primary,
|
||||
"secondary": $gray-300,
|
||||
"success": $brand-success,
|
||||
"info": $brand-info,
|
||||
"warning": $brand-warning,
|
||||
"danger": $brand-danger,
|
||||
"light": $gray-100,
|
||||
"dark": $gray-800
|
||||
),
|
||||
$theme-colors
|
||||
);
|
||||
|
||||
// This is the default but we need to use it here.
|
||||
$theme-color-interval: 5% !default;
|
||||
|
||||
// Alerts and states
|
||||
|
||||
$alert-bg-level: -13 !default;
|
||||
$alert-border-level: -6 !default;
|
||||
$alert-color-level: 8 !default;
|
||||
|
||||
// These are not Bootstrap styles but are used extensively in Galaxy. This
|
||||
// duplicated the way that Bootstrap 4 alerts are derived.
|
||||
|
||||
$state-warning-text: theme-color-level("warning", $alert-color-level);
|
||||
$state-warning-bg: theme-color-level("warning", $alert-bg-level);
|
||||
$state-warning-border: theme-color-level("warning", $alert-border-level);
|
||||
|
||||
$state-danger-text: theme-color-level("danger", $alert-color-level);
|
||||
$state-danger-bg: theme-color-level("danger", $alert-bg-level);
|
||||
$state-danger-border: theme-color-level("danger", $alert-border-level);
|
||||
|
||||
$state-info-text: theme-color-level("info", $alert-color-level);
|
||||
$state-info-bg: theme-color-level("info", $alert-bg-level);
|
||||
$state-info-border: theme-color-level("info", $alert-border-level);
|
||||
|
||||
$state-success-text: theme-color-level("success", $alert-color-level);
|
||||
$state-success-bg: theme-color-level("success", $alert-bg-level);
|
||||
$state-success-border: theme-color-level("success", $alert-border-level);
|
||||
|
||||
// Body text and link colors
|
||||
|
||||
$body-bg: $white;
|
||||
$text-color: $gray-dark;
|
||||
|
||||
$link-color: #303030;
|
||||
$link-hover-color: darken($link-color, 15%);
|
||||
|
||||
// Fonts and sizes
|
||||
|
||||
$font-family-sans-serif: "Lucida Grande", verdana, arial, helvetica, sans-serif; //JT "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
//$font-family-serif: Georgia, "Times New Roman", Times, serif;
|
||||
$font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace;
|
||||
$font-family-base: $font-family-sans-serif;
|
||||
|
||||
$font-size-base: 0.75rem; // default 1rem
|
||||
|
||||
$h1-font-size: $font-size-base * 2; // default 2.5
|
||||
$h2-font-size: $font-size-base * 1.75; // default 2
|
||||
$h3-font-size: $font-size-base * 1.5; // default 1.75
|
||||
$h4-font-size: $font-size-base * 1.25; // default 1.5
|
||||
$h5-font-size: $font-size-base; // default 1.25
|
||||
$h6-font-size: $font-size-base * 0.85; // default 1
|
||||
|
||||
// This is the default for $line-height-base, but we use $line-height-computed
|
||||
// in base.css, that should be removed.
|
||||
$line-height-base: 1.5; // for scaling, as a multiplier -- not concrete units.
|
||||
$line-height-computed: floor($font-size-base * $line-height-base);
|
||||
$line-height-computed-px: 16px;
|
||||
|
||||
$headings-font-weight: 800; // default 500
|
||||
$headings-line-height: 1.1; // default 1.2
|
||||
|
||||
// Increase contrast of dropdown items
|
||||
$dropdown-link-hover-color: white;
|
||||
$dropdown-link-hover-bg: $brand-primary;
|
||||
$dropdown-link-active-color: gold;
|
||||
|
||||
// BOOTSTRAP 4 STYLE REFACTORING BREAK POINT
|
||||
// Anything that is actually used should be moved above this line and
|
||||
// documented, everything else should be removed.
|
||||
|
||||
// JT: I've deleted a lot of unused variables from below but there are still
|
||||
// likely some left.
|
||||
|
||||
// Components
|
||||
// -------------------------
|
||||
|
||||
$padding-base-vertical: 0.25rem;
|
||||
$padding-base-horizontal: 0.625rem;
|
||||
|
||||
$line-height-large: 1.33;
|
||||
|
||||
$border-radius-base: 0.1875rem;
|
||||
$border-radius-large: 0.3125rem;
|
||||
|
||||
// Tables
|
||||
// -------------------------
|
||||
|
||||
$table-border-color: $border-default-color; // table and cell border
|
||||
|
||||
// Buttons
|
||||
// -------------------------
|
||||
|
||||
$btn-default-color: #333;
|
||||
$btn-default-bg: darken($white, 5%);
|
||||
$btn-default-border: $border-default-color;
|
||||
|
||||
// Forms
|
||||
// -------------------------
|
||||
|
||||
$input-bg: $white;
|
||||
$input-bg-disabled: $gray-lighter;
|
||||
|
||||
// COMPONENT VARIABLES
|
||||
// --------------------------------------------------
|
||||
|
||||
// Z-index master list
|
||||
// -------------------------
|
||||
// Used for a bird's eye view of components dependent on the z-axis
|
||||
// Try to avoid customizing these :)
|
||||
|
||||
$zindex-navbar: 1000;
|
||||
@@ -1,56 +0,0 @@
|
||||
// Additional variables that are not used by bootstrap but are used
|
||||
// in Galaxy stylesheets
|
||||
|
||||
$base-bg: $white;
|
||||
$base-text-color: $black;
|
||||
|
||||
// Masthead
|
||||
|
||||
$masthead-height: 2.5rem;
|
||||
|
||||
// Side panels
|
||||
|
||||
$panel-bg-color: #dfe5f9;
|
||||
$panel-text-color: $gray-900;
|
||||
$side-panel-bg: $panel-bg-color;
|
||||
|
||||
$panel-header-bg-color: $gray-lighter;
|
||||
$panel-header-text-color: #555;
|
||||
|
||||
$panel-message-height: 2rem; //1.875rem;
|
||||
|
||||
$layout_top_padding: 0px;
|
||||
$border-default-color_padding: 0px;
|
||||
|
||||
$panel_header_height: 2rem;
|
||||
$panel_footer_height: 25px;
|
||||
|
||||
$layout-border-color: $gray-900; // darken($border-default-color, 15%);
|
||||
|
||||
// Forms
|
||||
|
||||
$form-heading-bg: $complement-color-3;
|
||||
$form-border: $complement-color-3;
|
||||
|
||||
$table-heading-bg: $complement-color-3;
|
||||
$table-border: $complement-color-3;
|
||||
$table-bg-accent: #f9f9f9; // for striping
|
||||
|
||||
// Additional state colors
|
||||
|
||||
$state-default-bg: $gray-lighter;
|
||||
$state-default-border: $border-default-color;
|
||||
|
||||
$state-paused-bg: #d9edf7;
|
||||
|
||||
$state-running-border: #aaaa66;
|
||||
$state-running-bg: #ffffcc;
|
||||
|
||||
$navbar-height: 36px; // 2.062500rem;
|
||||
$navbar-default-bg: $gray-lighter; // JT #f8f8f8;
|
||||
$navbar-default-border: darken($navbar-default-bg, $border-darken-percent);
|
||||
|
||||
@import "theme/blue.scss";
|
||||
|
||||
// Theme: plain
|
||||
//@import "theme/plain.scss";
|
||||
@@ -3,7 +3,7 @@
|
||||
@extend .flex-vertical-container;
|
||||
|
||||
> .controls {
|
||||
margin: 8px 8px 1px;
|
||||
margin: $margin-h $margin-v;
|
||||
padding: 0px;
|
||||
flex: 0 0 auto;
|
||||
|
||||
@@ -374,25 +374,6 @@
|
||||
|
||||
// ---------------------------------------------------------------------------- analyze data page - right panel
|
||||
#right.history-right-panel {
|
||||
background-color: $panel-bg-color;
|
||||
.unified-panel-header {
|
||||
.unified-panel-header-inner {
|
||||
.panel-header-buttons {
|
||||
.panel-header-button {
|
||||
display: inline-block;
|
||||
height: $icon-btn-size;
|
||||
width: $icon-btn-size;
|
||||
text-align: center;
|
||||
line-height: $icon-btn-size - 3;
|
||||
font-size: 1.2em;
|
||||
padding: 0px;
|
||||
&:not(:last-child) {
|
||||
margin-right: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.unified-panel-body {
|
||||
display: -webkit-flex;
|
||||
.middle {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
@import "galaxy_bootstrap/variables.scss";
|
||||
@import "galaxy_variables.scss";
|
||||
@import "theme/blue.scss";
|
||||
|
||||
.library_style_container {
|
||||
width: 95%;
|
||||
@@ -31,7 +30,7 @@
|
||||
}
|
||||
li.folderRow,
|
||||
li.datasetRow {
|
||||
border-top: solid 1px $table-border;
|
||||
border-top: solid 1px $table-border-color;
|
||||
}
|
||||
li.folderRow:hover,
|
||||
li.datasetRow:hover {
|
||||
|
||||
@@ -28,9 +28,9 @@ $vertical-gap: 8px;
|
||||
}
|
||||
|
||||
$spacing-top: 6px;
|
||||
$spacing-right: 10px;
|
||||
$spacing-right: $margin-v * 0.5;
|
||||
$spacing-bottom: 6px;
|
||||
$spacing-left: 8px;
|
||||
$spacing-left: $margin-v * 0.5;
|
||||
.padded {
|
||||
padding: $spacing-top $spacing-right $spacing-bottom $spacing-left;
|
||||
}
|
||||
@@ -61,11 +61,9 @@ $vertical-gap: 8px;
|
||||
float: left;
|
||||
// always initially hidden and zero width
|
||||
display: none;
|
||||
width: 32px;
|
||||
width: 15px;
|
||||
height: 32px;
|
||||
//HACK: neg. on the bottom due to padding-bottom in title-bar - very tweakish
|
||||
margin: 0px 0px - ($spacing-bottom) 0px;
|
||||
padding: ($spacing-top + 2) 0px 2px ($spacing-left - 1);
|
||||
margin: 9px;
|
||||
font-size: 80%;
|
||||
color: $btn-default-color;
|
||||
cursor: pointer;
|
||||
|
||||
@@ -11,6 +11,10 @@ pre {
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.alert {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.btn.hover {
|
||||
$btn: hover();
|
||||
}
|
||||
@@ -62,31 +66,6 @@ input[type="radio"] {
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
||||
NOTE: these styles do not currently work.
|
||||
|
||||
.modal {
|
||||
position: absolute;
|
||||
top: 50px;
|
||||
width: 660px;
|
||||
margin-left: -330px;
|
||||
}
|
||||
|
||||
.modal:after {
|
||||
content: "";
|
||||
height: 0px;
|
||||
position: relative;
|
||||
top: 50px;
|
||||
display: block;
|
||||
border: solid transparent 1px;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
height: auto;
|
||||
max-height: none;
|
||||
}
|
||||
*/
|
||||
|
||||
// Scroll modal body.
|
||||
.modal-body {
|
||||
@@ -1,20 +1,156 @@
|
||||
// Override colors to closely resemble the style as of Fall 2013
|
||||
// Everything is derived from $base-color
|
||||
// Caveat: currently only works for light colored backgrounds, scss provides functions (contrast) that could be used to improve this
|
||||
|
||||
$layout-border-color: #999;
|
||||
// Base color -- Based on the Galaxy masthead color
|
||||
$base-color-1: #2c3143;
|
||||
$base-color-2: lighten($base-color-1, 25%);
|
||||
$base-color-3: lighten($base-color-1, 50%);
|
||||
$base-color: $base-color-2;
|
||||
|
||||
// Default border bolor, this is between gray-light and gray-lighter -- classic Galaxy border color
|
||||
$border-default-color: lighten(black, 75%);
|
||||
|
||||
// Grays from Bootstrap 4 _variables.scss
|
||||
$white: #fff !default;
|
||||
$gray-100: #f8f9fa !default;
|
||||
$gray-200: #e9ecef !default;
|
||||
$gray-300: #dee2e6 !default;
|
||||
$gray-400: #ced4da !default;
|
||||
$gray-500: #adb5bd !default;
|
||||
$gray-600: #6c757d !default;
|
||||
$gray-700: #495057 !default;
|
||||
$gray-800: #343a40 !default;
|
||||
$gray-900: #212529 !default;
|
||||
$black: #000 !default;
|
||||
|
||||
// Brand colors
|
||||
$brand-primary: #25537b;
|
||||
$brand-success: #66cc66;
|
||||
$brand-info: #2077b3;
|
||||
$brand-warning: #fe7f02;
|
||||
$brand-danger: #e31a1e;
|
||||
|
||||
// These variables don't actually determine the colors in Bootstrap 4, instead
|
||||
// they use a map called $theme-colors, so here we override that
|
||||
$theme-colors: ();
|
||||
$theme-colors: map-merge(
|
||||
(
|
||||
"primary": $brand-primary,
|
||||
"secondary": $gray-300,
|
||||
"success": $brand-success,
|
||||
"info": $brand-info,
|
||||
"warning": $brand-warning,
|
||||
"danger": $brand-danger,
|
||||
"light": $gray-100,
|
||||
"dark": $gray-800
|
||||
),
|
||||
$theme-colors
|
||||
);
|
||||
|
||||
// This is the default but we need to use it here.
|
||||
$theme-color-interval: 5% !default;
|
||||
|
||||
// Alerts and states
|
||||
$alert-bg-level: -12 !default;
|
||||
$alert-border-level: -6 !default;
|
||||
$alert-color-level: 8 !default;
|
||||
|
||||
// These are not Bootstrap styles but are used extensively in Galaxy. This
|
||||
// duplicated the way that Bootstrap 4 alerts are derived.
|
||||
|
||||
$state-warning-text: theme-color-level("warning", $alert-color-level);
|
||||
$state-warning-bg: theme-color-level("warning", $alert-bg-level);
|
||||
$state-warning-border: theme-color-level("warning", $alert-border-level);
|
||||
|
||||
$state-danger-text: theme-color-level("danger", $alert-color-level);
|
||||
$state-danger-bg: theme-color-level("danger", $alert-bg-level);
|
||||
$state-danger-border: theme-color-level("danger", $alert-border-level);
|
||||
|
||||
$state-info-text: theme-color-level("info", $alert-color-level);
|
||||
$state-info-bg: theme-color-level("info", $alert-bg-level);
|
||||
$state-info-border: theme-color-level("info", $alert-border-level);
|
||||
|
||||
$state-success-text: theme-color-level("success", $alert-color-level);
|
||||
$state-success-bg: theme-color-level("success", $alert-bg-level);
|
||||
$state-success-border: theme-color-level("success", $alert-border-level);
|
||||
|
||||
// Fonts and sizes
|
||||
$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif,
|
||||
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
$font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace;
|
||||
$font-family-base: $font-family-sans-serif;
|
||||
$font-size-base: 0.8rem; // default 1rem
|
||||
|
||||
// Header font sizes
|
||||
$h1-font-size: $font-size-base * 2; // default 2.5
|
||||
$h2-font-size: $font-size-base * 1.75; // default 2
|
||||
$h3-font-size: $font-size-base * 1.5; // default 1.75
|
||||
$h4-font-size: $font-size-base * 1.25; // default 1.5
|
||||
$h5-font-size: $font-size-base; // default 1.25
|
||||
$h6-font-size: $font-size-base * 0.85; // default 1
|
||||
|
||||
// Increase contrast of dropdown items
|
||||
$dropdown-link-hover-color: white;
|
||||
$dropdown-link-hover-bg: $brand-primary;
|
||||
$dropdown-link-active-color: gold;
|
||||
|
||||
// Additional variables that are not used by bootstrap but are used
|
||||
// in Galaxy stylesheets
|
||||
$body-bg: $white;
|
||||
$text-color: $gray-900;
|
||||
|
||||
// Masthead
|
||||
$masthead-height: 3rem;
|
||||
|
||||
// Side panels
|
||||
$panel-bg-color: $gray-100; // #dfe5f9;
|
||||
$panel-text-color: $gray-900;
|
||||
$panel-header-bg-color: $gray-100;
|
||||
$panel-header-text-color: #555;
|
||||
$panel-message-height: 2.5rem; //1.875rem;
|
||||
$panel-width: 18rem;
|
||||
$panel_header_height: 2.5rem;
|
||||
$panel_footer_height: 25px;
|
||||
|
||||
// Layout
|
||||
$layout_top_padding: 0px;
|
||||
$layout-border-color: $gray-900;
|
||||
$layout-border: none;
|
||||
|
||||
// Borders
|
||||
$border-radius-base: 0.1875rem;
|
||||
$border-radius-large: 0.3125rem;
|
||||
|
||||
// Buttons
|
||||
$btn-default-color: #333;
|
||||
$btn-default-bg: darken($white, 5%);
|
||||
$btn-default-border: $border-default-color;
|
||||
|
||||
// Forms
|
||||
$form-heading-bg: #ebd9b2;
|
||||
$form-border: darken($form-heading-bg, 20%);
|
||||
|
||||
$table-heading-bg: #ebd9b2;
|
||||
// Table
|
||||
$table-heading-bg: $panel-bg-color;
|
||||
$table-bg-accent: #f9f9f9; // for striping
|
||||
$table-border-color: darken($table-heading-bg, 20%);
|
||||
|
||||
// Additional state colors
|
||||
$state-default-bg: $gray-200;
|
||||
$state-default-border: $border-default-color;
|
||||
$state-paused-bg: #d9edf7;
|
||||
$state-running-border: #aaaa66;
|
||||
$state-running-bg: #ffffcc;
|
||||
|
||||
// Navbar
|
||||
$navbar-height: 36px; // 2.062500rem;
|
||||
$navbar-default-bg: $gray-100; // JT #f8f8f8;
|
||||
$navbar-default-border: darken($navbar-default-bg, 20%);
|
||||
|
||||
// Margins
|
||||
$spacer: 1rem; // Not sure why this is not coming from Bootstrap
|
||||
$margin-v: $spacer * 1.5;
|
||||
$margin-h: $spacer;
|
||||
|
||||
// Inputs
|
||||
$input-border: #aaa;
|
||||
|
||||
a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
// Label is used in places it probably shouldn't be (grid cells), replace with data- attributes and remove this.
|
||||
label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
@@ -1,406 +0,0 @@
|
||||
$panel-bg-color: white;
|
||||
$side-panel-bg: white;
|
||||
$base-text-color: black;
|
||||
|
||||
$brand-primary: #8181f3;
|
||||
$base-color-1: black;
|
||||
$navbar-inverse-color: black;
|
||||
$navbar-inverse-bg: white;
|
||||
$navbar-inverse-link-color: black;
|
||||
$navbar-inverse-link-hover-color: $gray-dark;
|
||||
$jumbotron-bg: white;
|
||||
|
||||
$form-heading-bg: black;
|
||||
$border-radius-large: 0px;
|
||||
$border-radius-base: 0px;
|
||||
$input-border-radius: 0px;
|
||||
// y'all're seriously obsesed with round edges.
|
||||
* {
|
||||
border-radius: 0px !important;
|
||||
}
|
||||
.state-icon {
|
||||
border-radius: 8px !important;
|
||||
}
|
||||
|
||||
// Tables
|
||||
$table-heading-bg: black;
|
||||
$table-border-color: black;
|
||||
th a {
|
||||
color: white;
|
||||
&:hover {
|
||||
color: black;
|
||||
background: white;
|
||||
}
|
||||
}
|
||||
|
||||
.jumbotron {
|
||||
box-shadow: 0 0 11px black;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
li.dropdown:hover a.dropdown-toggle:focus {
|
||||
color: white;
|
||||
}
|
||||
|
||||
#masthead .navbar-brand a {
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
$navbar-hover-thingy-link-color: darken(white, 10%);
|
||||
$navbar-hover-thingy-background: lighten(black, 10%);
|
||||
|
||||
#masthead {
|
||||
.nav > li > a {
|
||||
&:hover {
|
||||
color: $navbar-hover-thingy-link-color !important;
|
||||
}
|
||||
}
|
||||
.navbar-tabs {
|
||||
.toggle {
|
||||
color: $navbar-hover-thingy-link-color !important;
|
||||
}
|
||||
.dropdown-note {
|
||||
color: $navbar-hover-thingy-link-color !important;
|
||||
}
|
||||
}
|
||||
li.dropdown:hover {
|
||||
background: $navbar-hover-thingy-background;
|
||||
}
|
||||
li.dropdown > a:hover .caret {
|
||||
border-top-color: $navbar-hover-thingy-link-color !important;
|
||||
border-bottom-color: $navbar-hover-thingy-link-color !important;
|
||||
}
|
||||
li.dropdown.active > a:hover {
|
||||
color: $navbar-hover-thingy-link-color !important;
|
||||
background: $navbar-hover-thingy-background !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Tool links
|
||||
|
||||
a.tool-link {
|
||||
//display: block;
|
||||
//padding: 0.5em;
|
||||
|
||||
&:hover {
|
||||
background: $gray-lighter;
|
||||
}
|
||||
}
|
||||
|
||||
$navbar-default-bg: white;
|
||||
|
||||
#masthead {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
||||
.search-clear.fa.fa-times-circle {
|
||||
color: #d82c2c;
|
||||
}
|
||||
|
||||
div.toolMenuContainer {
|
||||
padding-left: 0px !important;
|
||||
padding-right: 0px !important;
|
||||
|
||||
#tool-search {
|
||||
padding-left: 1em;
|
||||
background: white;
|
||||
//border-bottom: 1px solid $gray-light
|
||||
top: 65px; // seems to be the real / correct value.
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
#tool-search-query {
|
||||
border: 1px solid transparent;
|
||||
background: #eee;
|
||||
|
||||
&:focus,
|
||||
&:active {
|
||||
background: white;
|
||||
border: 1px solid black;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#tool-search {
|
||||
padding-left: 1em;
|
||||
background: white;
|
||||
//border-bottom: 1px solid $gray-light
|
||||
top: 65px; // seems to be the real / correct value.
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
div.search div.search-input input {
|
||||
border: 1px solid transparent;
|
||||
background: #eee;
|
||||
|
||||
&:focus,
|
||||
&:active {
|
||||
background: white;
|
||||
border: 1px solid black;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Easy to click tool section titles
|
||||
div.toolSectionWrapper {
|
||||
margin-bottom: 0px !important;
|
||||
padding-bottom: 0px !important;
|
||||
padding-left: 0px;
|
||||
border-left: 1px solid black;
|
||||
margin-left: 0.2em;
|
||||
|
||||
div.toolSectionTitle {
|
||||
padding-left: 0.2em;
|
||||
border-left: 2px solid black;
|
||||
}
|
||||
}
|
||||
|
||||
div.toolTitleNoSection {
|
||||
margin-bottom: 0px !important;
|
||||
padding-bottom: 0px !important;
|
||||
padding-left: 0.5em;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
div.toolSectionTitle,
|
||||
div.toolSectionWrapper {
|
||||
a {
|
||||
padding-top: 0.4em;
|
||||
padding-bottom: 0.4em;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
div.toolPanelLabel {
|
||||
margin-left: 0.7em !important;
|
||||
}
|
||||
div.toolSectionBody div.toolPanelLabel {
|
||||
margin-left: 1em !important;
|
||||
}
|
||||
|
||||
div.toolTitle,
|
||||
div.toolTitleNoSection {
|
||||
margin-left: 0em !important;
|
||||
padding-left: 1em !important;
|
||||
padding-top: 0px !important;
|
||||
padding-bottom: 0px !important;
|
||||
|
||||
a {
|
||||
font-weight: normal;
|
||||
padding-top: 0.4em;
|
||||
padding-bottom: 0.4em;
|
||||
display: block;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: $gray-lighter;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
background: $brand-primary !important;
|
||||
border: 1px solid black !important;
|
||||
color: contrast($brand-primary) !important;
|
||||
}
|
||||
|
||||
// Adjust older tool forms
|
||||
.toolFormTitle,
|
||||
.form .form-title {
|
||||
color: white;
|
||||
a {
|
||||
color: white !important;
|
||||
border: 1px solid white !important;
|
||||
}
|
||||
}
|
||||
// portlets
|
||||
.portlet-header {
|
||||
.portlet-operations > div {
|
||||
color: white !important;
|
||||
background: transparent;
|
||||
}
|
||||
.portlet-title {
|
||||
color: white !important;
|
||||
}
|
||||
}
|
||||
.ui-portlet-repeat {
|
||||
border-left-width: 1px !important;
|
||||
}
|
||||
.form-row .help,
|
||||
.toolParamHelp {
|
||||
color: $gray-dark !important;
|
||||
}
|
||||
|
||||
// History
|
||||
$state-default-text: $gray-dark;
|
||||
$state-default-bg: $gray-lighter;
|
||||
$state-default-border: $border-default-color;
|
||||
|
||||
$state-paused-border: $gray-lighter;
|
||||
$state-paused-bg: white;
|
||||
|
||||
$state-running-border: black;
|
||||
$state-running-bg: $gray-light;
|
||||
|
||||
$state-danger-border: black;
|
||||
$state-danger-bg: lighten(red, 5%);
|
||||
|
||||
$state-success-border: black;
|
||||
$state-success-bg: lighten(green, 15%);
|
||||
|
||||
.current-history-panel {
|
||||
.annotation-display {
|
||||
.annotation {
|
||||
border: 1px solid $gray-light !important;
|
||||
background: white !important;
|
||||
|
||||
textarea {
|
||||
border: none;
|
||||
}
|
||||
textarea:focus {
|
||||
background: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a.icon-btn,
|
||||
div.icon-btn,
|
||||
div.icon-btn > a {
|
||||
background: transparent;
|
||||
color: black;
|
||||
border: 0px;
|
||||
}
|
||||
a.icon-btn:hover {
|
||||
background: $gray-light;
|
||||
}
|
||||
|
||||
ul.list-items {
|
||||
border: 0px;
|
||||
|
||||
.dataset {
|
||||
border: 0px;
|
||||
|
||||
div.summary {
|
||||
.help-text {
|
||||
color: black;
|
||||
}
|
||||
.job-error-text {
|
||||
background: $gray-darker;
|
||||
color: white;
|
||||
border: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.dataset-peek {
|
||||
background: $gray-darker !important;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.primary-actions,
|
||||
.left,
|
||||
.right {
|
||||
a.icon-btn,
|
||||
div.icon-btn,
|
||||
div.icon-btn > a {
|
||||
background: transparent;
|
||||
color: white;
|
||||
border: 0px;
|
||||
}
|
||||
a.icon-btn:hover {
|
||||
background: $gray-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.warnings {
|
||||
div {
|
||||
border: 1px solid black;
|
||||
background-color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.dataset.state-running {
|
||||
.title-bar {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
.dataset.state-paused,
|
||||
.dataset.state-new,
|
||||
.dataset.state-queued {
|
||||
.title-bar {
|
||||
color: black;
|
||||
}
|
||||
.primary-actions,
|
||||
.left,
|
||||
.right {
|
||||
a.icon-btn,
|
||||
div.icon-btn,
|
||||
div.icon-btn > a {
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.current-history-panel .list-item.history-content.current-content {
|
||||
border-left: 5px solid $gray-darker !important;
|
||||
}
|
||||
|
||||
// Modals
|
||||
//
|
||||
div.modal {
|
||||
div.modal-footer {
|
||||
button {
|
||||
border: 1px solid black;
|
||||
background: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Select2
|
||||
|
||||
.select2-container {
|
||||
box-shadow: none;
|
||||
|
||||
ul.select2-choices {
|
||||
border: 1px solid $gray-dark;
|
||||
box-shadow: none;
|
||||
|
||||
li.select2-search-choice {
|
||||
background: white;
|
||||
color: black;
|
||||
border: 1px solid black;
|
||||
}
|
||||
}
|
||||
}
|
||||
// pages
|
||||
.unified-panel-header {
|
||||
.panel-header-text {
|
||||
color: black !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Library
|
||||
.library_style_container tr:hover td {
|
||||
background-color: $gray-lighter !important;
|
||||
}
|
||||
|
||||
.library_style_container tr.dark td {
|
||||
background-color: $gray-light !important;
|
||||
border-bottom-color: $gray-light !important;
|
||||
}
|
||||
|
||||
// Pagination
|
||||
.pagination > .active > a {
|
||||
background-color: $brand-primary !important;
|
||||
}
|
||||
|
||||
.pagination a {
|
||||
padding-left: 0.8em !important;
|
||||
padding-right: 0.8em !important;
|
||||
}
|
||||
@@ -6,11 +6,7 @@
|
||||
-ms-user-select: none; /* IE10+ */
|
||||
}
|
||||
|
||||
// remove padding
|
||||
.no-padding {
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
// prevents transitions i.e. when reseting a progress bar
|
||||
.no-transition {
|
||||
-webkit-transition: none !important;
|
||||
-moz-transition: none !important;
|
||||
@@ -19,6 +15,7 @@
|
||||
transition: none !important;
|
||||
}
|
||||
|
||||
// rotates an element i.e. used for font-awesome icons
|
||||
.fa-rotate-45 {
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
@@ -28,79 +25,11 @@
|
||||
}
|
||||
|
||||
// default margins
|
||||
$ui-margin-vertical: 5px;
|
||||
$ui-margin-vertical-large: 10px;
|
||||
$ui-margin-horizontal: 5px;
|
||||
$ui-margin-horizontal-small: 4px;
|
||||
$ui-margin-horizontal-large: 10px;
|
||||
|
||||
// helpers
|
||||
.ui-clear-float {
|
||||
clear: both !important;
|
||||
float: none !important;
|
||||
}
|
||||
|
||||
// margins
|
||||
.ui-margin-top {
|
||||
padding-top: $ui-margin-vertical !important;
|
||||
}
|
||||
|
||||
.ui-margin-top-large {
|
||||
padding-top: $ui-margin-vertical-large !important;
|
||||
}
|
||||
|
||||
.ui-margin-bottom {
|
||||
margin-bottom: $ui-margin-vertical !important;
|
||||
}
|
||||
|
||||
.ui-margin-right {
|
||||
margin-right: $ui-margin-horizontal-small !important;
|
||||
}
|
||||
|
||||
.ui-margin-both {
|
||||
@extend .ui-margin-top;
|
||||
@extend .ui-margin-bottom;
|
||||
}
|
||||
|
||||
// non-interactive elements
|
||||
.ui-error {
|
||||
-moz-border-radius: $border-radius-base;
|
||||
border-radius: $border-radius-base;
|
||||
background: $state-danger-bg;
|
||||
padding: $ui-margin-vertical;
|
||||
}
|
||||
|
||||
.ui-label {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.ui-tags {
|
||||
word-wrap: break-word;
|
||||
padding-right: 25px;
|
||||
}
|
||||
|
||||
.ui-column {
|
||||
.ui-column-left {
|
||||
width: 49%;
|
||||
float: left;
|
||||
.ui-message {
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
.ui-column-right {
|
||||
width: 49%;
|
||||
float: right;
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-message {
|
||||
padding: 2px 10px 2px 10px;
|
||||
margin-top: $ui-margin-vertical-large;
|
||||
margin-bottom: 0px;
|
||||
width: 100%;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
$ui-margin-vertical: $margin-v * 0.25;
|
||||
$ui-margin-vertical-large: $margin-v * 0.5;
|
||||
$ui-margin-horizontal: $margin-h;
|
||||
$ui-margin-horizontal-small: $margin-h * 0.5;
|
||||
$ui-margin-horizontal-large: $margin-v * 2;
|
||||
|
||||
.ui-modal {
|
||||
display: none;
|
||||
@@ -123,34 +52,10 @@ $ui-margin-horizontal-large: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-modal-styled {
|
||||
@extend .ui-modal;
|
||||
ul {
|
||||
list-style-type: square;
|
||||
padding: 5px 25px;
|
||||
}
|
||||
}
|
||||
|
||||
// icons
|
||||
.ui-icon {
|
||||
font-size: 1.2em;
|
||||
width: 1.2em;
|
||||
}
|
||||
.ui-icon-button {
|
||||
@extend .ui-icon;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
// buttons
|
||||
.ui-button-default {
|
||||
float: right;
|
||||
.icon {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
.progress {
|
||||
height: 4px;
|
||||
margin: 0px;
|
||||
margin-top: 2px;
|
||||
.progress-bar {
|
||||
@extend .no-transition;
|
||||
background: darken($state-success-bg, 30%);
|
||||
@@ -158,121 +63,25 @@ $ui-margin-horizontal-large: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-button-icon {
|
||||
@extend .icon-btn;
|
||||
@extend .no-highlight;
|
||||
height: auto !important;
|
||||
width: auto !important;
|
||||
float: right;
|
||||
ul {
|
||||
i {
|
||||
width: 1.2em;
|
||||
font-size: 1.2em;
|
||||
margin-right: $ui-margin-horizontal;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
}
|
||||
.button {
|
||||
margin-right: $ui-margin-horizontal;
|
||||
margin-left: $ui-margin-horizontal;
|
||||
.title {
|
||||
position: relative;
|
||||
font-size: 0.8em;
|
||||
font-weight: normal;
|
||||
top: -1px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
}
|
||||
.button.disabled {
|
||||
opacity: 0.65;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-button-menu {
|
||||
.dropdown-menu {
|
||||
min-width: 50px;
|
||||
}
|
||||
.dropdown-item {
|
||||
text-align: left;
|
||||
}
|
||||
.dropdown-toggle::after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-button-icon-plain {
|
||||
@extend .icon-btn;
|
||||
@extend .p-0;
|
||||
border: none !important;
|
||||
background: none !important;
|
||||
height: inherit !important;
|
||||
width: inherit !important;
|
||||
padding-right: 3px !important;
|
||||
float: right;
|
||||
}
|
||||
|
||||
// side panel
|
||||
.ui-side-panel {
|
||||
color: $base-text-color;
|
||||
background: $side-panel-bg;
|
||||
padding: 10px;
|
||||
min-height: 100%;
|
||||
.ui-side-section-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-side-section-body {
|
||||
.ui-side-section-body-title {
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
margin-left: 16px;
|
||||
margin-right: 10px;
|
||||
display: list-item;
|
||||
list-style: square outside;
|
||||
}
|
||||
.ui-side-section-body-title:last-child {
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// panel
|
||||
.ui-panel {
|
||||
.ui-panel-table {
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
.ui-panel-icon {
|
||||
margin: 10px;
|
||||
margin-right: 20px;
|
||||
font-size: 1.6em;
|
||||
}
|
||||
.ui-panel-anchor {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
.ui-panel-footer {
|
||||
margin-top: 10px;
|
||||
.ui-button-check {
|
||||
.icon {
|
||||
font-size: 1.2em;
|
||||
width: 1em;
|
||||
}
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
// tabs
|
||||
.ui-tabs {
|
||||
.tab-operations {
|
||||
float: right;
|
||||
margin-bottom: 4px;
|
||||
.ui-button-icon {
|
||||
margin-left: 4px;
|
||||
}
|
||||
}
|
||||
.tab-element {
|
||||
cursor: pointer;
|
||||
}
|
||||
.tab-icon {
|
||||
font-size: 1.1em;
|
||||
margin-right: $ui-margin-horizontal;
|
||||
}
|
||||
.tab-delete {
|
||||
font-size: 0.8em;
|
||||
margin-left: $ui-margin-horizontal;
|
||||
.tabbable {
|
||||
.nav-item {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
@@ -307,57 +116,6 @@ $ui-margin-horizontal-large: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
// tables
|
||||
.ui-table {
|
||||
@extend .grid;
|
||||
tbody {
|
||||
cursor: pointer;
|
||||
td {
|
||||
// TODO: Fixme -- figure out what this actually pulled in.
|
||||
//@extend .grid.tbody.td;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ui-table-striped {
|
||||
@extend .table;
|
||||
@extend .table-striped;
|
||||
width: 100%;
|
||||
margin-bottom: 0px;
|
||||
th {
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
td {
|
||||
margin: 0px;
|
||||
padding: 0.5rem;
|
||||
.ui-button-icon {
|
||||
line-height: 1.2em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ui-table-plain {
|
||||
@extend .ui-table;
|
||||
table-layout: fixed;
|
||||
|
||||
tbody {
|
||||
cursor: auto !important;
|
||||
td {
|
||||
padding: 0px !important;
|
||||
border: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-table-section {
|
||||
border-left: solid 3px $form-heading-bg;
|
||||
border-radius: $border-radius-large !important;
|
||||
margin-bottom: $ui-margin-vertical;
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
// table form elements
|
||||
.ui-form-element {
|
||||
margin-top: $ui-margin-vertical;
|
||||
@@ -411,9 +169,6 @@ $ui-margin-horizontal-large: 10px;
|
||||
box-shadow: none !important;
|
||||
height: auto !important;
|
||||
}
|
||||
.workflow-right .right-content {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-form-element-disabled {
|
||||
@@ -423,142 +178,45 @@ $ui-margin-horizontal-large: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-form-separator {
|
||||
font-weight: bold;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.ui-form-help {
|
||||
overflow: auto;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.ui-form-info {
|
||||
@extend .toolParamHelp;
|
||||
clear: both !important;
|
||||
word-wrap: break-word;
|
||||
i {
|
||||
font-size: 1.2em;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
.ui-form-title {
|
||||
clear: both;
|
||||
font-weight: bold;
|
||||
padding-right: $ui-margin-horizontal;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-form-error {
|
||||
display: none;
|
||||
.ui-form-error-text {
|
||||
padding-left: $ui-margin-horizontal;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-form-section {
|
||||
border-left: solid 3px $form-heading-bg;
|
||||
border-radius: $border-radius-large !important;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.ui-form-composite {
|
||||
max-width: 900px;
|
||||
height: 100%;
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
.ui-form-header {
|
||||
@extend h3;
|
||||
margin-top: 0px;
|
||||
.ui-label {
|
||||
width: calc(100% - 200px);
|
||||
}
|
||||
}
|
||||
.ui-steps {
|
||||
overflow: auto;
|
||||
margin-top: 15px;
|
||||
border: dashed 1px darken($form-heading-bg, 30%);
|
||||
border-radius: $border-radius-base;
|
||||
padding: $ui-margin-horizontal;
|
||||
.ui-portlet-narrow {
|
||||
.portlet-header {
|
||||
padding: 1px 5px 0px 8px;
|
||||
}
|
||||
padding: 0px $ui-margin-horizontal 0px $ui-margin-horizontal;
|
||||
.portlet-content {
|
||||
padding: 0px $ui-margin-horizontal 0px $ui-margin-horizontal;
|
||||
}
|
||||
.ui-table-section,
|
||||
.ui-portlet-repeat .portlet-content {
|
||||
padding-left: $ui-margin-horizontal-large;
|
||||
}
|
||||
}
|
||||
}
|
||||
.ui-message {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
// portlets
|
||||
.ui-portlet {
|
||||
border: solid $form-border 1px;
|
||||
border-radius: $border-radius-base;
|
||||
position: relative;
|
||||
clear: both;
|
||||
width: auto;
|
||||
height: auto;
|
||||
.portlet-header {
|
||||
background: $form-heading-bg;
|
||||
border-bottom: solid $form-border 1px;
|
||||
padding: 2px 8px;
|
||||
overflow: visible;
|
||||
width: 100%;
|
||||
@extend .card;
|
||||
border: none;
|
||||
height: 100%;
|
||||
.portlet-header:first-child {
|
||||
@extend .card-header;
|
||||
@extend .rounded;
|
||||
background: $gray-200;
|
||||
.portlet-title {
|
||||
word-wrap: break-word;
|
||||
display: inline;
|
||||
vertical-align: middle;
|
||||
font-weight: bold;
|
||||
.portlet-title-text {
|
||||
vertical-align: middle;
|
||||
line-height: 22px;
|
||||
}
|
||||
.portlet-title-text.no-highlight.collapsible {
|
||||
.portlet-title-text.collapsible {
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.portlet-title-icon {
|
||||
font-size: 1.2em;
|
||||
vertical-align: middle;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
.portlet-operations {
|
||||
.ui-button-icon {
|
||||
margin-left: $ui-margin-horizontal;
|
||||
button {
|
||||
@extend .ml-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
.portlet-content {
|
||||
height: inherit;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
clear: both;
|
||||
.portlet-body {
|
||||
padding: 0px;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
.portlet-buttons {
|
||||
margin-top: $ui-margin-vertical-large;
|
||||
margin-bottom: $ui-margin-vertical-large;
|
||||
> .btn {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.portlet-buttons {
|
||||
button {
|
||||
@extend .float-left;
|
||||
@extend .mr-1;
|
||||
}
|
||||
}
|
||||
.portlet-content.nopadding,
|
||||
.portlet-body.nopadding {
|
||||
padding: 0px;
|
||||
> .portlet-content {
|
||||
@extend .card-body;
|
||||
@extend .p-0;
|
||||
}
|
||||
.portlet-backdrop {
|
||||
display: none;
|
||||
@@ -573,212 +231,52 @@ $ui-margin-horizontal-large: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-portlet-repeat {
|
||||
@extend .ui-portlet;
|
||||
border: none;
|
||||
border-left: solid 3px $form-heading-bg;
|
||||
border-radius: $border-radius-large;
|
||||
margin-bottom: $ui-margin-vertical;
|
||||
.portlet-header {
|
||||
background: $form-heading-bg;
|
||||
border-radius: $border-radius-large;
|
||||
border-bottom-left-radius: 0px;
|
||||
border-top-left-radius: 0px;
|
||||
padding: 0px 2px;
|
||||
.portlet-title-text {
|
||||
vertical-align: middle;
|
||||
line-height: 20px !important;
|
||||
}
|
||||
}
|
||||
.portlet-content {
|
||||
padding-right: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-portlet-panel {
|
||||
@extend .ui-portlet-repeat;
|
||||
margin-top: $ui-margin-vertical;
|
||||
border-left: solid 3px $side-panel-bg;
|
||||
.portlet-header {
|
||||
background: $side-panel-bg;
|
||||
border-bottom: solid darken($side-panel-bg, 10%) 1px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-portlet-section {
|
||||
@extend .ui-portlet-panel;
|
||||
.portlet-highlight {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-portlet-narrow {
|
||||
@extend .ui-portlet-limited;
|
||||
border: none;
|
||||
margin-bottom: $ui-margin-vertical-large;
|
||||
.portlet-header {
|
||||
border-radius: $border-radius-base;
|
||||
.portlet-operations {
|
||||
.ui-button-icon {
|
||||
margin-left: 3px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.ui-portlet-repeat {
|
||||
.portlet-header {
|
||||
border-radius: $border-radius-large;
|
||||
border-bottom-left-radius: 0px;
|
||||
border-top-left-radius: 0px;
|
||||
}
|
||||
}
|
||||
.portlet-content {
|
||||
padding: 0px;
|
||||
}
|
||||
.ui-table-section,
|
||||
.ui-portlet-repeat .portlet-content {
|
||||
padding-left: $ui-margin-horizontal;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-portlet-limited {
|
||||
@extend .ui-portlet;
|
||||
max-width: 900px;
|
||||
}
|
||||
|
||||
.ui-portlet-plain {
|
||||
@extend .ui-portlet;
|
||||
@extend .mb-2;
|
||||
border: none;
|
||||
.portlet-content {
|
||||
padding: 0px;
|
||||
border-left: solid 3px $gray-200;
|
||||
border-radius: $border-radius-large;
|
||||
.portlet-header:first-child {
|
||||
background: $gray-200;
|
||||
@extend .rounded-0;
|
||||
border-top-right-radius: $border-radius-large !important;
|
||||
padding: 5px;
|
||||
}
|
||||
> .portlet-content {
|
||||
@extend .pl-2;
|
||||
@extend .pr-0;
|
||||
}
|
||||
}
|
||||
|
||||
// popovers
|
||||
.ui-popover {
|
||||
.popover {
|
||||
max-width: 700px;
|
||||
display: none;
|
||||
opacity: 1;
|
||||
margin-top: 0.5rem;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1010;
|
||||
display: none;
|
||||
padding: 1px;
|
||||
text-align: left;
|
||||
background-color: #ffffff;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
border-radius: 0.25rem;
|
||||
-webkit-box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.2);
|
||||
white-space: normal;
|
||||
.popover-close {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 7px;
|
||||
font-size: 1.2em;
|
||||
cursor: pointer;
|
||||
}
|
||||
.popover-title {
|
||||
margin: 0;
|
||||
padding: 0.5em 1rem;
|
||||
font-size: inherit;
|
||||
font-weight: normal;
|
||||
line-height: 1rem;
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
border-radius: 0.25rem 0.25rem 0 0;
|
||||
}
|
||||
.popover-content {
|
||||
padding: 0.6em 1rem;
|
||||
}
|
||||
.arrow {
|
||||
border-width: 0.68rem;
|
||||
}
|
||||
.arrow::after {
|
||||
border-width: 0.68rem;
|
||||
content: "";
|
||||
}
|
||||
.arrow,
|
||||
.arrow::after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-color: transparent;
|
||||
border-bottom-color: transparent;
|
||||
border-style: solid;
|
||||
}
|
||||
&.bottom {
|
||||
.arrow {
|
||||
left: 50%;
|
||||
margin-left: -0.65rem;
|
||||
border-top-width: 0;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.25);
|
||||
top: -0.72rem;
|
||||
}
|
||||
|
||||
.arrow::after {
|
||||
content: " ";
|
||||
top: 0.05rem;
|
||||
margin-left: -0.6rem;
|
||||
border-top-width: 0;
|
||||
border-bottom-color: #ffffff;
|
||||
}
|
||||
}
|
||||
&.top {
|
||||
margin-top: -0.6rem;
|
||||
.arrow {
|
||||
left: 50%;
|
||||
margin-left: -0.65rem;
|
||||
border-width: 0.4rem;
|
||||
border-bottom-width: 0;
|
||||
border-top-color: #999;
|
||||
border-top-color: rgba(0, 0, 0, 0.25);
|
||||
bottom: -0.65rem;
|
||||
}
|
||||
.arrow::after {
|
||||
content: " ";
|
||||
bottom: 0.05rem;
|
||||
margin-left: -0.6rem;
|
||||
border-bottom-width: 0;
|
||||
border-top-color: #ffffff;
|
||||
.popover-header {
|
||||
i {
|
||||
@extend .float-right;
|
||||
@extend .pl-4;
|
||||
font-size: 1.1em;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// input elements
|
||||
.ui-input {
|
||||
width: 100%;
|
||||
display: block;
|
||||
@extend .form-control;
|
||||
@extend .pt-1;
|
||||
@extend .pl-2;
|
||||
height: $input-height;
|
||||
padding: $padding-base-vertical $ui-margin-horizontal !important;
|
||||
font-size: $font-size-base;
|
||||
line-height: $line-height-base;
|
||||
color: $input-color;
|
||||
border: 1px solid $input-border;
|
||||
border-radius: $input-border-radius;
|
||||
@include box-shadow(inset 0 1px 1px rgba(0, 0, 0, 0.075));
|
||||
background-image: none;
|
||||
background: transparent;
|
||||
-webkit-appearance: none;
|
||||
-moz-border-radius: $border-radius-base;
|
||||
&[disabled],
|
||||
&[readonly],
|
||||
fieldset[disabled] & {
|
||||
cursor: not-allowed;
|
||||
background-color: $input-bg-disabled;
|
||||
background-color: $gray-200;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-input-basic {
|
||||
@extend .ui-input;
|
||||
@include box-shadow(inset 0 -1px 1px rgba(0, 0, 0, 0.075));
|
||||
}
|
||||
|
||||
.ui-textarea {
|
||||
@extend .ui-input;
|
||||
height: 100px !important;
|
||||
@@ -838,46 +336,6 @@ $ui-margin-horizontal-large: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-form-slider {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
.ui-form-slider-text {
|
||||
@extend .ui-input;
|
||||
}
|
||||
|
||||
.ui-form-slider-left {
|
||||
float: left;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.ui-form-slider-element {
|
||||
width: calc(100% - 110px);
|
||||
float: left;
|
||||
top: 8px;
|
||||
left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-radiobutton {
|
||||
top: -2px;
|
||||
input {
|
||||
display: none;
|
||||
}
|
||||
label {
|
||||
padding: 2px 10px;
|
||||
margin: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-button-check {
|
||||
.icon {
|
||||
font-size: 1.2em;
|
||||
width: 1.2em;
|
||||
}
|
||||
cursor: pointer;
|
||||
margin-bottom: $ui-margin-vertical;
|
||||
}
|
||||
|
||||
.ui-color-picker {
|
||||
.ui-color-picker-header {
|
||||
cursor: pointer;
|
||||
@@ -937,78 +395,29 @@ $ui-margin-horizontal-large: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-list {
|
||||
.ui-list-select {
|
||||
float: left;
|
||||
width: calc(100% - 30px);
|
||||
}
|
||||
.ui-list-button {
|
||||
.ui-button-icon {
|
||||
margin-top: 3px;
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
.ui-list-message,
|
||||
.ui-list-portlet {
|
||||
clear: both;
|
||||
padding-top: 1px;
|
||||
}
|
||||
.ui-list-id {
|
||||
cursor: pointer;
|
||||
margin-top: 5px;
|
||||
.ui-list-delete {
|
||||
font-size: 1.2em;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ui-gs-select-file {
|
||||
.ui-gs-filename-textbox {
|
||||
float: right;
|
||||
width: calc(100% - 76px);
|
||||
}
|
||||
.ui-gs-browse-button {
|
||||
float: left;
|
||||
.ui-button-icon {
|
||||
margin-top: 3px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
.ui-gs-browse-field {
|
||||
height: $input-height;
|
||||
line-height: $line-height-base;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-select {
|
||||
position: relative;
|
||||
.icon-dropdown {
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
right: 8px;
|
||||
top: 0.7rem;
|
||||
right: 0.5rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
.icon-resize {
|
||||
display: none;
|
||||
}
|
||||
select {
|
||||
position: relative;
|
||||
top: 0px;
|
||||
height: 27px;
|
||||
width: 100%;
|
||||
padding-right: 20px;
|
||||
@extend .ui-input-basic;
|
||||
@extend .ui-input;
|
||||
cursor: pointer;
|
||||
padding-left: 5px;
|
||||
-webkit-appearance: none;
|
||||
-moz-border-radius: $border-radius-base;
|
||||
}
|
||||
.select2-container {
|
||||
width: 100%;
|
||||
.select2-choice {
|
||||
height: 27px;
|
||||
@extend .ui-input-basic;
|
||||
padding-left: 5px;
|
||||
@extend .ui-input;
|
||||
background-image: none;
|
||||
background: transparent;
|
||||
-webkit-appearance: none;
|
||||
-moz-border-radius: $border-radius-base;
|
||||
line-height: 1.5rem;
|
||||
.select2-arrow {
|
||||
display: none;
|
||||
}
|
||||
@@ -1017,36 +426,29 @@ $ui-margin-horizontal-large: 10px;
|
||||
.select2-container-multi {
|
||||
.select2-choices {
|
||||
@extend .ui-input;
|
||||
padding: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ui-select-multiple {
|
||||
.icon-resize {
|
||||
display: block;
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
right: 0px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
right: 0rem;
|
||||
cursor: row-resize;
|
||||
i {
|
||||
position: absolute;
|
||||
right: 3px;
|
||||
bottom: 2px;
|
||||
right: 0.2rem;
|
||||
bottom: 0.2rem;
|
||||
}
|
||||
}
|
||||
select {
|
||||
height: 80px;
|
||||
@include box-shadow(inset 0 1px 1px rgba(0, 0, 0, 0.075));
|
||||
min-height: 8rem;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-select-content {
|
||||
.ui-options {
|
||||
float: left;
|
||||
padding-top: 2px;
|
||||
@extend .float-left;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1069,45 +471,11 @@ $ui-margin-horizontal-large: 10px;
|
||||
background: lighten($state-success-bg, 10%) !important;
|
||||
}
|
||||
|
||||
.ui-limitloader {
|
||||
padding: 10px;
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
display: none;
|
||||
}
|
||||
|
||||
// global select2 adjustments
|
||||
.select2-container .select2-choice,
|
||||
.select2-container .select2-choices {
|
||||
// select2 adjustments
|
||||
.select2-drop-active,
|
||||
.select2-drop-above.select2-drop-active {
|
||||
border: 1px solid $input-border;
|
||||
}
|
||||
.select2-dropdown-open .select2-choice,
|
||||
.select2-dropdown-open .select2-choices {
|
||||
border: 1px solid $input-border;
|
||||
border-bottom-left-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
}
|
||||
.select2-dropdown-open.select2-drop-above .select2-choice,
|
||||
.select2-dropdown-open.select2-drop-above .select2-choices {
|
||||
border: 1px solid $input-border;
|
||||
border-top-left-radius: 0px;
|
||||
border-top-right-radius: 0px;
|
||||
}
|
||||
.select2-drop-active {
|
||||
border: 1px solid $input-border;
|
||||
border-radius: $input-border-radius;
|
||||
border-top-left-radius: 0px;
|
||||
border-top-right-radius: 0px;
|
||||
.select2-search {
|
||||
padding-top: 5px;
|
||||
}
|
||||
}
|
||||
.select2-drop.select2-drop-above.select2-drop-active {
|
||||
border: 1px solid $input-border;
|
||||
border-radius: $input-border-radius;
|
||||
border-bottom-left-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
.select2-search {
|
||||
padding-top: 0px;
|
||||
@extend .pt-1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
}
|
||||
.panel-header-button {
|
||||
position: absolute;
|
||||
width: 31px;
|
||||
width: 31px !important;
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
padding: 0px;
|
||||
@@ -45,13 +45,23 @@
|
||||
color: $table-border-color !important;
|
||||
}
|
||||
}
|
||||
.upload-icon {
|
||||
font-size: 1.2em;
|
||||
width: 1.2em;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
cursor: default;
|
||||
}
|
||||
.upload-icon-button {
|
||||
@extend .upload-icon;
|
||||
cursor: pointer;
|
||||
}
|
||||
.upload-box {
|
||||
width: 100%;
|
||||
height: 310px;
|
||||
text-align: center;
|
||||
overflow: scroll;
|
||||
font-size: $font-size-base;
|
||||
line-height: $line-height-large;
|
||||
-moz-border-radius: $border-radius-large;
|
||||
border-radius: $border-radius-large;
|
||||
border: 1px dashed $btn-default-border;
|
||||
@@ -86,6 +96,7 @@
|
||||
word-wrap: break-word;
|
||||
font-size: $font-size-sm;
|
||||
float: left;
|
||||
background: inherit;
|
||||
}
|
||||
/* Add back in lenght of extension, genome, and settings. */
|
||||
.upload-title-extended {
|
||||
@@ -109,11 +120,8 @@
|
||||
font-size: $font-size-sm;
|
||||
}
|
||||
.upload-mode {
|
||||
font-size: 1.2em;
|
||||
width: 1.2em;
|
||||
float: left;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
@extend .upload-icon;
|
||||
@extend .float-left;
|
||||
}
|
||||
.upload-text-column {
|
||||
position: relative;
|
||||
@@ -146,7 +154,7 @@
|
||||
width: 100%;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
line-height: 1.55em;
|
||||
line-height: 1.6em;
|
||||
.progress-bar {
|
||||
border-radius: inherit;
|
||||
-moz-border-radius: inherit;
|
||||
@@ -163,7 +171,6 @@
|
||||
}
|
||||
.upload-rule-option {
|
||||
padding-top: 20px;
|
||||
|
||||
.upload-rule-option-title {
|
||||
font-weight: bold;
|
||||
padding-bottom: 5px;
|
||||
@@ -178,14 +185,6 @@
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
.upload-icon {
|
||||
@extend .ui-icon;
|
||||
}
|
||||
.upload-icon-button {
|
||||
@extend .ui-icon-button;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
.upload-view-composite {
|
||||
@@ -196,8 +195,9 @@
|
||||
width: 175px;
|
||||
}
|
||||
.upload-source {
|
||||
.ui-button-menu {
|
||||
width: 70px !important;
|
||||
width: 80px;
|
||||
.btn {
|
||||
padding: 0px 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -233,7 +233,6 @@
|
||||
}
|
||||
}
|
||||
.upload-ftp-row:hover {
|
||||
@extend .grid;
|
||||
@extend .current;
|
||||
}
|
||||
th {
|
||||
@@ -274,6 +273,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
.upload-table {
|
||||
@extend .table;
|
||||
@extend .table-striped;
|
||||
td {
|
||||
padding: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.upload-settings {
|
||||
position: relative;
|
||||
.upload-settings-cover {
|
||||
@@ -286,6 +293,12 @@
|
||||
opacity: 0.4;
|
||||
cursor: no-drop;
|
||||
}
|
||||
tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
tr:hover {
|
||||
@extend .current;
|
||||
}
|
||||
}
|
||||
|
||||
.upload-footer {
|
||||
|
||||
@@ -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 179.5176,40.035156 A 138.9825,138.9825 0 0 0 40.5352,179.01758 138.9825,138.9825 0 0 0 179.5176,318 138.9825,138.9825 0 0 0 318.5,179.01758 138.9825,138.9825 0 0 0 179.5176,40.035156 Z m -54.6797,47.087891 55.4512,60.787113 55.4492,-60.787113 29.5508,26.957033 -57.9297,63.50586 57.9297,63.50586 -29.5508,26.95898 -55.4512,-60.78711 -55.4492,60.78711 -29.5508,-26.95898 57.9297,-63.50586 -57.9297,-63.50586 29.5508,-26.957033 z" fill="#ff4343" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/></svg:g></svg>
|
||||
|
After Width: | Height: | Size: 730 B |
@@ -1,20 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="24in"
|
||||
width="4in"
|
||||
height="4in"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.43"
|
||||
inkscape:version="0.91 r13725"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/Users/james/Desktop"
|
||||
sodipodi:docname="galaxy_icons.svg"
|
||||
inkscape:export-filename="/Users/james/Desktop/galaxy_icons.png"
|
||||
inkscape:export-xdpi="90"
|
||||
@@ -28,20 +28,21 @@
|
||||
borderopacity="1"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.87055056"
|
||||
inkscape:cx="1969.2512"
|
||||
inkscape:cy="134.59503"
|
||||
inkscape:zoom="0.61878453"
|
||||
inkscape:cx="134.27218"
|
||||
inkscape:cy="180.48242"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:current-layer="layer5"
|
||||
inkscape:showpageshadow="false"
|
||||
showgrid="true"
|
||||
showguides="false"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="956"
|
||||
inkscape:window-height="784"
|
||||
inkscape:window-x="161"
|
||||
inkscape:window-y="46"
|
||||
inkscape:grid-points="true">
|
||||
inkscape:window-width="1438"
|
||||
inkscape:window-height="821"
|
||||
inkscape:window-x="74"
|
||||
inkscape:window-y="109"
|
||||
inkscape:grid-points="true"
|
||||
inkscape:window-maximized="0">
|
||||
<sodipodi:guide
|
||||
orientation="vertical"
|
||||
position="400"
|
||||
@@ -107,239 +108,64 @@
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:label="ok_icon"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#04cd00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path1307"
|
||||
sodipodi:cx="205"
|
||||
sodipodi:cy="205"
|
||||
sodipodi:rx="134.28572"
|
||||
sodipodi:ry="134.28572"
|
||||
d="M 339.28572 205 A 134.28572 134.28572 0 1 1 70.714279,205 A 134.28572 134.28572 0 1 1 339.28572 205 z"
|
||||
transform="matrix(1.034976,0,0,1.034976,-31.24154,-32.6701)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#838383;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path2220"
|
||||
sodipodi:cx="205"
|
||||
sodipodi:cy="205"
|
||||
sodipodi:rx="134.28572"
|
||||
sodipodi:ry="134.28572"
|
||||
d="M 339.28572 205 A 134.28572 134.28572 0 1 1 70.714279,205 A 134.28572 134.28572 0 1 1 339.28572 205 z"
|
||||
transform="matrix(1.034976,0,0,1.034976,1047.812,-33.15258)" />
|
||||
<rect
|
||||
style="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"
|
||||
id="rect2224"
|
||||
width="277"
|
||||
height="278"
|
||||
x="401"
|
||||
y="43"
|
||||
ry="103"
|
||||
rx="103" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 498.7868,172 L 541.58579,172 L 541.58579,278.00505"
|
||||
id="path2230"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:40.00038147;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2232"
|
||||
sodipodi:cx="501.33871"
|
||||
sodipodi:cy="84.935463"
|
||||
sodipodi:rx="6.3639612"
|
||||
sodipodi:ry="6.3639612"
|
||||
d="M 507.70268 84.935463 A 6.3639612 6.3639612 0 1 1 494.97475,84.935463 A 6.3639612 6.3639612 0 1 1 507.70268 84.935463 z"
|
||||
transform="matrix(1.0731,0,0,0.951722,-0.622656,25.52899)" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#ffb400;fill-opacity:1;stroke:none;stroke-width:50;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2254"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="885.29767"
|
||||
sodipodi:cy="14.931891"
|
||||
sodipodi:r1="517.84943"
|
||||
sodipodi:r2="344.36987"
|
||||
sodipodi:arg1="0.50762901"
|
||||
sodipodi:arg2="1.5548266"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0.22"
|
||||
inkscape:randomized="0"
|
||||
d="M 1337.846,266.66192 C 1289.0223,354.43494 991.22247,357.65394 890.79693,359.25785 C 790.37139,360.86176 492.62068,367.15437 441.01889,280.98526 C 389.41709,194.81614 535.52926,-64.695565 584.35301,-152.46859 C 633.17675,-240.24161 776.60255,-501.2476 877.02809,-502.8515 C 977.45363,-504.45541 1129.1413,-248.1627 1180.7431,-161.99359 C 1232.3449,-75.824474 1386.6698,178.8889 1337.846,266.66192 z "
|
||||
transform="matrix(0.306393,0,0,0.318225,624.2074,203.0224)" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 113.97056,196.98066 L 168.17157,236.85786 L 248.34315,104.65685"
|
||||
id="path2270"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 1177.1421,96.07107 L 1263.1421,190 L 1317.1217,162.2807"
|
||||
id="path2272"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2280"
|
||||
width="29.446899"
|
||||
height="21"
|
||||
x="1140.5531"
|
||||
y="170"
|
||||
ry="0" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2326"
|
||||
width="29.446899"
|
||||
height="21"
|
||||
x="1351.5531"
|
||||
y="169.77354"
|
||||
ry="0" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2328"
|
||||
width="29.446899"
|
||||
height="21"
|
||||
x="60.260208"
|
||||
y="-1271.2715"
|
||||
ry="0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2330"
|
||||
width="29.446899"
|
||||
height="21"
|
||||
x="270"
|
||||
y="-1270.5857"
|
||||
ry="0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2332"
|
||||
width="131"
|
||||
height="52"
|
||||
x="100"
|
||||
y="-920.58582"
|
||||
ry="0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:40;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2334"
|
||||
width="39.027634"
|
||||
height="52"
|
||||
x="250"
|
||||
y="-919.87872"
|
||||
ry="0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ff4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path2338"
|
||||
sodipodi:cx="205"
|
||||
sodipodi:cy="205"
|
||||
sodipodi:rx="134.28572"
|
||||
sodipodi:ry="134.28572"
|
||||
d="M 339.28572 205 A 134.28572 134.28572 0 1 1 70.714279,205 A 134.28572 134.28572 0 1 1 339.28572 205 z"
|
||||
transform="matrix(1.034976,0,0,1.034976,1409.347,-33.15258)" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 1552.0629,100.60072 L 1692.5138,254.57128"
|
||||
id="path2348"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:40;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 1692.5138,100.60072 L 1552.0629,254.57128"
|
||||
id="path2357"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#838383;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path2359"
|
||||
sodipodi:cx="205"
|
||||
sodipodi:cy="205"
|
||||
sodipodi:rx="134.28572"
|
||||
sodipodi:ry="134.28572"
|
||||
d="M 339.28572 205 A 134.28572 134.28572 0 1 1 70.714279,205 A 134.28572 134.28572 0 1 1 339.28572 205 z"
|
||||
transform="matrix(1.034976,0,0,1.034976,1768.416,-30.36099)" />
|
||||
<g
|
||||
id="g2389">
|
||||
id="g3381">
|
||||
<title
|
||||
id="title3385">OkIcon</title>
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2373"
|
||||
d="M 1930,170.49538 L 1860,155 C 1857.0248,172.3719 1855.5,189.5625 1860,206 L 1930,189.58727 C 1929.1741,183.22331 1928.9462,176.85934 1930,170.49538 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2375"
|
||||
d="M 1941,146.46593 L 1888.1259,98.046542 C 1875.1851,112.76897 1868.0802,127.49141 1862.6259,142.21384 L 1931.4541,163 C 1933.471,155.74098 1937.1235,150.93552 1941,146.46593 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2377"
|
||||
d="M 1963.7479,130.36947 L 1942.1673,62 C 1927,66 1912.7224,73.141087 1898,87.50001 L 1947.2139,139.91545 C 1952.1833,135.10778 1957.8405,132.36324 1963.7479,130.36947 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g2394"
|
||||
transform="matrix(0,1,-1,0,2161,-1801.748)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2396"
|
||||
d="M 1930,170.49538 L 1860,155 C 1857.0248,172.3719 1855.5,189.5625 1860,206 L 1930,189.58727 C 1929.1741,183.22331 1928.9462,176.85934 1930,170.49538 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2398"
|
||||
d="M 1941,146.46593 L 1888.1259,98.046542 C 1875.1851,112.76897 1868.0802,127.49141 1862.6259,142.21384 L 1931.4541,163 C 1933.471,155.74098 1937.1235,150.93552 1941,146.46593 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2400"
|
||||
d="M 1963.7479,130.36947 L 1942.1673,62 C 1927,66 1912.7224,73.141087 1898,87.50001 L 1947.2139,139.91545 C 1952.1833,135.10778 1957.8405,132.36324 1963.7479,130.36947 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g2402"
|
||||
transform="matrix(-1,0,0,-1,3962.168,360.1885)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2404"
|
||||
d="M 1930,170.49538 L 1860,155 C 1857.0248,172.3719 1855.5,189.5625 1860,206 L 1930,189.58727 C 1929.1741,183.22331 1928.9462,176.85934 1930,170.49538 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2406"
|
||||
d="M 1941,146.46593 L 1888.1259,98.046542 C 1875.1851,112.76897 1868.0802,127.49141 1862.6259,142.21384 L 1931.4541,163 C 1933.471,155.74098 1937.1235,150.93552 1941,146.46593 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2408"
|
||||
d="M 1963.7479,130.36947 L 1942.1673,62 C 1927,66 1912.7224,73.141087 1898,87.50001 L 1947.2139,139.91545 C 1952.1833,135.10778 1957.8405,132.36324 1963.7479,130.36947 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g2410"
|
||||
transform="matrix(0,-1,1,0,1800.429,2161.522)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2412"
|
||||
d="M 1930,170.49538 L 1860,155 C 1857.0248,172.3719 1855.5,189.5625 1860,206 L 1930,189.58727 C 1929.1741,183.22331 1928.9462,176.85934 1930,170.49538 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2414"
|
||||
d="M 1941,146.46593 L 1888.1259,98.046542 C 1875.1851,112.76897 1868.0802,127.49141 1862.6259,142.21384 L 1931.4541,163 C 1933.471,155.74098 1937.1235,150.93552 1941,146.46593 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2416"
|
||||
d="M 1963.7479,130.36947 L 1942.1673,62 C 1927,66 1912.7224,73.141087 1898,87.50001 L 1947.2139,139.91545 C 1952.1833,135.10778 1957.8405,132.36324 1963.7479,130.36947 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
style="fill:#04cd00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 180.92773,40.517578 A 138.9825,138.9825 0 0 0 41.945312,179.5 138.9825,138.9825 0 0 0 180.92773,318.48242 138.9825,138.9825 0 0 0 319.91016,179.5 138.9825,138.9825 0 0 0 180.92773,40.517578 Z m 50.31446,53.767578 34.20117,20.742184 -91.50977,150.90039 -71.81445,-52.83789 23.70313,-32.21875 36.58593,26.91797 68.83399,-113.503904 z"
|
||||
id="path1307"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer5"
|
||||
inkscape:label="error_icon">
|
||||
<path
|
||||
style="fill:#ff4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 179.5176,40.035156 A 138.9825,138.9825 0 0 0 40.5352,179.01758 138.9825,138.9825 0 0 0 179.5176,318 138.9825,138.9825 0 0 0 318.5,179.01758 138.9825,138.9825 0 0 0 179.5176,40.035156 Z m -54.6797,47.087891 55.4512,60.787113 55.4492,-60.787113 29.5508,26.957033 -57.9297,63.50586 57.9297,63.50586 -29.5508,26.95898 -55.4512,-60.78711 -55.4492,60.78711 -29.5508,-26.95898 57.9297,-63.50586 -57.9297,-63.50586 29.5508,-26.957033 z"
|
||||
id="path2338"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="wait_icon">
|
||||
<path
|
||||
style="fill:#838383;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 179.9824,40.035156 A 138.9825,138.9825 0 0 0 41,179.01758 138.9825,138.9825 0 0 0 179.9824,318 138.9825,138.9825 0 0 0 318.9648,179.01758 138.9825,138.9825 0 0 0 179.9824,40.035156 Z m -9.7109,20.22461 21,0 0,29.447265 -21,0 0,-29.447265 z m -58.3789,22.304687 75.6933,82.671877 40.4004,-20.7461 18.2715,35.58204 -67.5586,34.6914 -96.3086,-105.1875 29.502,-27.011717 z m 159.6601,87.208987 29.4473,0 0,21 -29.4473,0 0,-21 z M 60.5527,170 90,170 l 0,21 -29.4473,0 0,-21 z m 109.0332,100 21,0 0,29.44727 -21,0 0,-29.44727 z"
|
||||
id="path2220"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="info_icon">
|
||||
<path
|
||||
style="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"
|
||||
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"
|
||||
id="rect2224"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssssssssssssssccccccc" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="warn_icon">
|
||||
<path
|
||||
style="fill:#ffb400;fill-opacity:1;stroke:none;stroke-width:50;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 174.92188,43.001953 C 144.15219,43.512356 100.20925,126.57234 85.25,154.50391 70.29075,182.43548 25.5216,265.01828 41.33203,292.43945 57.14246,319.86062 148.37095,317.85806 179.14062,317.34766 209.91031,316.83725 301.154,315.81243 316.1133,287.88086 331.0725,259.94929 283.7889,178.89382 267.97852,151.47266 252.16809,124.05149 205.69155,42.491551 174.92188,43.001953 Z M 150.58594,100 l 52,0 0,131 -52,0 0,-131 z m -0.70703,150 52,0 0,39.02734 -52,0 0,-39.02734 z"
|
||||
id="path2254"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 7.0 KiB |
@@ -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 |
@@ -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:g><svg:title>OkIcon</svg:title><svg:path d="M 180.92773,40.517578 A 138.9825,138.9825 0 0 0 41.945312,179.5 138.9825,138.9825 0 0 0 180.92773,318.48242 138.9825,138.9825 0 0 0 319.91016,179.5 138.9825,138.9825 0 0 0 180.92773,40.517578 Z m 50.31446,53.767578 34.20117,20.742184 -91.50977,150.90039 -71.81445,-52.83789 23.70313,-32.21875 36.58593,26.91797 68.83399,-113.503904 z" fill="#04cd00" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/></svg:g></svg:g></svg>
|
||||
|
After Width: | Height: | Size: 678 B |
@@ -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 179.9824,40.035156 A 138.9825,138.9825 0 0 0 41,179.01758 138.9825,138.9825 0 0 0 179.9824,318 138.9825,138.9825 0 0 0 318.9648,179.01758 138.9825,138.9825 0 0 0 179.9824,40.035156 Z m -9.7109,20.22461 21,0 0,29.447265 -21,0 0,-29.447265 z m -58.3789,22.304687 75.6933,82.671877 40.4004,-20.7461 18.2715,35.58204 -67.5586,34.6914 -96.3086,-105.1875 29.502,-27.011717 z m 159.6601,87.208987 29.4473,0 0,21 -29.4473,0 0,-21 z M 60.5527,170 90,170 l 0,21 -29.4473,0 0,-21 z m 109.0332,100 21,0 0,29.44727 -21,0 0,-29.44727 z" fill="#838383" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/></svg:g></svg>
|
||||
|
After Width: | Height: | Size: 824 B |
@@ -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 174.92188,43.001953 C 144.15219,43.512356 100.20925,126.57234 85.25,154.50391 70.29075,182.43548 25.5216,265.01828 41.33203,292.43945 57.14246,319.86062 148.37095,317.85806 179.14062,317.34766 209.91031,316.83725 301.154,315.81243 316.1133,287.88086 331.0725,259.94929 283.7889,178.89382 267.97852,151.47266 252.16809,124.05149 205.69155,42.491551 174.92188,43.001953 Z M 150.58594,100 l 52,0 0,131 -52,0 0,-131 z m -0.70703,150 52,0 0,39.02734 -52,0 0,-39.02734 z" fill="#ffb400" fill-opacity="1" stroke="none" stroke-width="50" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/></svg:g></svg>
|
||||
|
After Width: | Height: | Size: 796 B |