expose state, stdout, stderr, uuid in the API

fix few bugs and UI/UX glitches
This commit is contained in:
Martin Cech
2017-10-20 16:27:00 -04:00
parent 76d187ae9a
commit f6737618e3
23 changed files with 123 additions and 64 deletions
@@ -541,7 +541,8 @@ define(
}
},
copyToClipboard: function() {
copyToClipboard: function(e) {
e.preventDefault();
var href = Backbone.history.location.href;
if (href.lastIndexOf("/permissions") !== -1) {
href = href.substr(0, href.lastIndexOf("/permissions"));
@@ -764,7 +765,7 @@ define(
'<% if (item.get("is_unrestricted")) { %>',
"<div>",
'This dataset is unrestricted so everybody with the link can access it. Just share <span class="copy-link-to-clipboard"><a>this page</a></span>.',
'This dataset is unrestricted so everybody with the link can access it. Just share <span class="copy-link-to-clipboard"><a href=""a>this page</a></span>.',
"</div>",
"<% } %>",
@@ -853,8 +854,34 @@ define(
'<td scope="row"><%= _.escape(item.get("tags")) %></td>',
"</tr>",
"<% } %>",
'<% if ( item.get("uuid") !== "ok" ) { %>',
"<tr>",
'<th scope="row">UUID</th>',
'<td scope="row"><%= _.escape(item.get("uuid")) %></td>',
"</tr>",
"<% } %>",
'<% if ( item.get("state") !== "ok" ) { %>',
"<tr>",
'<th scope="row">State</th>',
'<td scope="row"><%= _.escape(item.get("state")) %></td>',
"</tr>",
"<% } %>",
"</table>",
'<% if (item.get("job_stderr")) { %>',
"<h4>Job Standard Error</h4>",
'<pre class="code">',
'<%= _.escape(item.get("job_stderr")) %>',
"</pre>",
"<% } %>",
'<% if (item.get("job_stdout")) { %>',
"<h4>Job Standard Output</h4>",
'<pre class="code">',
'<%= _.escape(item.get("job_stdout")) %>',
"</pre>",
"<% } %>",
"<div>",
'<pre class="peek">',
"</pre>",
@@ -1154,9 +1181,9 @@ define(
"<h2>Dataset-related permissions</h2>",
'<div class="alert alert-warning">Changes made below will affect <strong>every</strong> library item that was created from this dataset and also every history this dataset is part of.</div>',
'<% if (!item.get("is_unrestricted")) { %>',
'<p>You can <span class="remove-restrictions"><a>remove all access restrictions</a></span> on this dataset.</p>',
'<p>You can <span class="remove-restrictions"><a href="">remove all access restrictions</a></span> on this dataset.</p>',
"<% } else { %>",
'<p>You can <span class="make-private"><a>make this dataset private</a></span> to you.</p>',
'<p>You can <span class="make-private"><a href="">make this dataset private</a></span> to you.</p>',
"<% } %>",
"<h4>Roles that can access the dataset</h4>",
'<div id="access_perm" class="access_perm roles-selection"></div>',
@@ -467,11 +467,12 @@ define(
'<th class="button_heading"></th>',
'<th style="text-align: center; width: 20px; " title="Check to select all datasets"><input id="select-all-checkboxes" style="margin: 0;" type="checkbox"></th>',
'<th><a class="sort-folder-link" title="Click to reverse order" href="#">name</a> <span title="Sorted alphabetically" class="sort-icon fa fa-sort-alpha-<%- order %>"></span></th>',
'<th style="width:25%;">description</th>',
'<th style="width:20%;">description</th>',
'<th style="width:5%;">data type</th>',
'<th style="width:10%;">size</th>',
'<th style="width:160px;">time updated (UTC)</th>',
'<th style="width:10%;"></th> ',
'<th style="width:5%;">state</th> ',
'<th style="width:150px;"></th> ',
"</thead>",
'<tbody id="folder_list_body">',
'<tr id="first_folder_item">',
@@ -485,6 +486,7 @@ define(
"<td></td>",
"<td></td>",
"<td></td>",
"<td></td>",
"</tr>",
"</tbody>",
"</table>",
@@ -17,10 +17,10 @@ define(
defaults: {
type: null,
visibility_config: {
edit_folder_btn: true,
edit_folder_btn: false,
save_folder_btn: false,
cancel_folder_btn: false,
permission_folder_btn: true
permission_folder_btn: false
},
edit_mode: false
},
@@ -306,32 +306,31 @@ define(
"<td>",
'<%- content_item.get("description") %>',
"</td>",
"<td></td>",
"<% } else if(edit_mode){ %>",
'<td><textarea rows="4" class="form-control input_folder_name" placeholder="name" ><%- content_item.get("name") %></textarea></td>',
'<td><textarea rows="4" class="form-control input_folder_description" placeholder="description" ><%- content_item.get("description") %></textarea></td>',
"<% } %>",
"<td>folder</td>",
"<td></td>",
"<td>",
'<%= _.escape(content_item.get("update_time")) %>',
"</td>",
"<td></td>",
"<td>",
"<% if(edit_mode) { %>", // start edit mode
'<button data-toggle="tooltip" data-placement="top" title="Save changes" class="primary-button btn-xs save_folder_btn" type="button" style="<% if(button_config.save_folder_btn === false) { print("display:none;") } %>">',
'<span class="fa fa-floppy-o"/>',
"&nbsp;Save",
'<span class="fa fa-floppy-o"/> Save',
"</button>",
'<button data-toggle="tooltip" data-placement="top" title="Discard changes" class="primary-button btn-xs cancel_folder_btn" type="button" style="<% if(button_config.cancel_folder_btn === false) { print("display:none;") } %>">',
'<span class="fa fa-times"/>',
"&nbsp;Cancel",
'<span class="fa fa-times"/> Cancel',
"</button>",
"<% } else if (!edit_mode){%>", // start no edit mode
'<button data-toggle="tooltip" data-placement="top" title="Modify \'<%- content_item.get("name") %>\'" class="primary-button btn-xs edit_folder_btn" type="button" style="<% if(button_config.edit_folder_btn === false) { print("display:none;") } %>">',
'<span class="fa fa-pencil"/>',
'<span class="fa fa-pencil"/> Edit',
"</button>",
'<a href="#/folders/<%- content_item.id %>/permissions">',
'<button data-toggle="tooltip" data-placement="top" class="primary-button btn-xs permission_folder_btn" title="Manage \'<%- content_item.get("name") %>\'" style="<% if(button_config.permission_folder_btn === false) { print("display:none;") } %>">',
'<span class="fa fa-group"/>',
'<button data-toggle="tooltip" data-placement="top" class="primary-button btn-xs permission_folder_btn" title="Permissions of \'<%- content_item.get("name") %>\'" style="<% if(button_config.permission_folder_btn === false) { print("display:none;") } %>">',
'<span class="fa fa-group"/> Manage',
"</button>",
"</a>",
"<% } %>", //end no edit mode
@@ -361,6 +360,11 @@ define(
'<td><%= _.escape(content_item.get("file_size")) %></td>',
'<td><%= _.escape(content_item.get("update_time")) %></td>',
"<td>",
'<% if ( content_item.get("state") !== "ok" ) { %>',
'<%= _.escape(content_item.get("state")) %>',
"<% } %>",
"</td>",
"<td>",
'<% if (content_item.get("is_unrestricted")) { %>',
'<span data-toggle="tooltip" data-placement="top" title="Unrestricted dataset" style="color:grey;" class="fa fa-globe fa-lg"/>',
"<% } %>",
@@ -372,8 +376,8 @@ define(
"<% } %>",
'<% if (content_item.get("can_manage")) { %>',
'<a href="#folders/<%- content_item.get("folder_id") %>/datasets/<%- content_item.id %>/permissions">',
'<button data-toggle="tooltip" data-placement="top" class="primary-button btn-xs permissions-dataset-btn" title="Manage permissions">',
'<span class="fa fa-group"/>',
'<button data-toggle="tooltip" data-placement="top" class="primary-button btn-xs permissions-dataset-btn" title="Permissions of \'<%- content_item.get("name") %>\'">',
'<span class="fa fa-group"/> Manage',
"</button>",
"</a>",
"<% } %>",
@@ -407,10 +411,14 @@ define(
'<%= _.escape(content_item.get("update_time")) %>',
"</td>",
"<td>",
'<% if ( content_item.get("state") !== "ok" ) { %>',
'<%= _.escape(content_item.get("state")) %>',
"<% } %>",
"</td>",
"<td>",
'<span data-toggle="tooltip" data-placement="top" title="Marked deleted" style="color:grey;" class="fa fa-ban fa-lg"/>',
'<button data-toggle="tooltip" data-placement="top" title="Undelete <%- content_item.get("name") %>" class="primary-button btn-xs undelete_dataset_btn" type="button" style="margin-left:1em;">',
'<span class="fa fa-unlock"/>',
"&nbsp;Undelete",
'<button data-toggle="tooltip" data-placement="top" title="Undelete \'<%- content_item.get("name") %>\'" class="primary-button btn-xs undelete_dataset_btn" type="button" style="margin-left:1em;">',
'<span class="fa fa-unlock"/> Undelete',
"</button>",
"</td>",
"</tr>"
@@ -439,11 +447,11 @@ define(
"<td>",
'<%= _.escape(content_item.get("update_time")) %>',
"</td>",
"<td></td>",
"<td>",
'<span data-toggle="tooltip" data-placement="top" title="Marked deleted" style="color:grey;" class="fa fa-ban fa-lg"/>',
'<button data-toggle="tooltip" data-placement="top" title="Undelete <%- content_item.get("name") %>" class="primary-button btn-xs undelete_folder_btn" type="button" style="margin-left:1em;">',
'<span class="fa fa-unlock"/>',
"&nbsp;Undelete",
'<button data-toggle="tooltip" data-placement="top" title="Undelete \'<%- content_item.get("name") %>\'" class="primary-button btn-xs undelete_folder_btn" type="button" style="margin-left:1em;">',
'<span class="fa fa-unlock"/> Undelete',
"</button>",
"</td>",
"</tr>"
@@ -112,7 +112,10 @@ define(
show_page: parseInt(this.options.show_page),
page_count: parseInt(this.options.page_count),
total_items_count: this.options.total_items_count,
items_shown: this.options.items_shown
items_shown: this.options.items_shown,
folder_page_size: Galaxy.libraries.preferences.get(
"folder_page_size"
)
})
);
},
@@ -1432,7 +1435,8 @@ define(
/**
* Show user the prompt to change the number of items shown on page.
*/
showPageSizePrompt: function() {
showPageSizePrompt: function(e) {
e.preventDefault();
var folder_page_size = prompt(
"How many items per page do you want to see?",
Galaxy.libraries.preferences.get("folder_page_size")
@@ -1886,11 +1890,10 @@ define(
"<% } %>",
"</ul>",
"<span>",
"&nbsp;showing&nbsp;",
'<a data-toggle="tooltip" data-placement="top" title="Click to change the number of items on page" class="page_size_prompt">',
"<%- items_shown %>",
"</a>",
"&nbsp;of <%- total_items_count %> items",
' <%- items_shown %> items shown <a href="" data-toggle="tooltip" data-placement="top" title="currently <%- folder_page_size %> per page" class="page_size_prompt">(change)</a>',
"</span>",
"<span>",
" <%- total_items_count %> total",
"</span>"
].join("")
);
@@ -264,7 +264,7 @@ define(["layout/masthead", "utils/utils", "libs/toastr"], function(
'<tr class="<% if(library.get("deleted") === true) { print("active") } %>" style="display:none;" data-id="<%- library.get("id") %>">',
"<% if(!edit_mode) { %>",
'<% if(library.get("deleted")) { %>',
'<td style="color:grey;"><span data-toggle="tooltip" data-placement="top" title="Marked deleted" style="color:grey;" class="fa fa-ban fa-lg deleted_lib_ico"> </span> <%- library.get("name") %></td>',
'<td style="color:grey;"><%- library.get("name") %></td>',
"<% } else { %>",
'<td><a href="#folders/<%- library.get("root_folder_id") %>"><%- library.get("name") %></a></td>',
"<% } %>",
@@ -293,14 +293,16 @@ define(["layout/masthead", "utils/utils", "libs/toastr"], function(
"<% } %>",
'<td class="right-center">',
'<% if( (library.get("public")) && (library.get("deleted") === false) ) { %>',
'<span data-toggle="tooltip" data-placement="top" title="Unrestricted library" style="color:grey;" class="fa fa-globe fa-lg public_lib_ico"> </span>',
'<span data-toggle="tooltip" data-placement="top" title="Unrestricted library" style="color:grey;" class="fa fa-globe fa-lg"> </span>',
"<% }%>",
'<button data-toggle="tooltip" data-placement="top" title="Modify \'<%- library.get("name") %>\'" class="primary-button btn-xs edit_library_btn" type="button" style="<% if(button_config.edit_library_btn === false) { print("display:none;") } %>"><span class="fa fa-pencil"></span></button>',
'<a href="#library/<%- library.get("id") %>/permissions"><button data-toggle="tooltip" data-placement="top" title="Manage \'<%- library.get("name") %>\'" class="primary-button btn-xs permission_library_btn" type="button" style="<% if(button_config.permission_library_btn === false) { print("display:none;") } %>"><span class="fa fa-group"></span></button></a>',
'<button data-toggle="tooltip" data-placement="top" title="Save changes" class="primary-button btn-xs save_library_btn" type="button" style="<% if(button_config.save_library_btn === false) { print("display:none;") } %>"><span class="fa fa-floppy-o"> Save</span></button>',
'<button data-toggle="tooltip" data-placement="top" title="Discard changes" class="primary-button btn-xs cancel_library_btn" type="button" style="<% if(button_config.cancel_library_btn === false) { print("display:none;") } %>"><span class="fa fa-times"> Cancel</span></button>',
'<button data-toggle="tooltip" data-placement="top" title="Delete <%- library.get("name") %>" class="primary-button btn-xs delete_library_btn" type="button" style="<% if(button_config.delete_library_btn === false) { print("display:none;") } %>"><span class="fa fa-trash-o"> Delete</span></button>',
'<button data-toggle="tooltip" data-placement="top" title="Undelete <%- library.get("name") %> " class="primary-button btn-xs undelete_library_btn" type="button" style="<% if(button_config.undelete_library_btn === false) { print("display:none;") } %>"><span class="fa fa-unlock"> Undelete</span></button>',
'<button data-toggle="tooltip" data-placement="top" title="Modify \'<%- library.get("name") %>\'" class="primary-button btn-xs edit_library_btn" type="button" style="<% if(button_config.edit_library_btn === false) { print("display:none;") } %>"><span class="fa fa-pencil"></span> Edit</button>',
'<a href="#library/<%- library.get("id") %>/permissions"><button data-toggle="tooltip" data-placement="top" title="Permissions of \'<%- library.get("name") %>\'" class="primary-button btn-xs permission_library_btn" type="button" style="<% if(button_config.permission_library_btn === false) { print("display:none;") } %>"><span class="fa fa-group"></span> Manage</button></a>',
'<button data-toggle="tooltip" data-placement="top" title="Save changes" class="primary-button btn-xs save_library_btn" type="button" style="<% if(button_config.save_library_btn === false) { print("display:none;") } %>"><span class="fa fa-floppy-o"></span> Save</button>',
'<button data-toggle="tooltip" data-placement="top" title="Discard changes" class="primary-button btn-xs cancel_library_btn" type="button" style="<% if(button_config.cancel_library_btn === false) { print("display:none;") } %>"><span class="fa fa-times"></span> Cancel</button>',
'<button data-toggle="tooltip" data-placement="top" title="Delete \'<%- library.get("name") %>\'" class="primary-button btn-xs delete_library_btn" type="button" style="<% if(button_config.delete_library_btn === false) { print("display:none;") } %>"><span class="fa fa-trash-o"></span> Delete</button>',
// For deleted libraries
'<span data-toggle="tooltip" data-placement="top" title="Marked deleted" style="color:grey; <% if(button_config.undelete_library_btn === false) { print("display:none;") } %>" class="fa fa-ban fa-lg"></span>',
'<button data-toggle="tooltip" data-placement="top" title="Undelete \'<%- library.get("name") %>\' " class="primary-button btn-xs undelete_library_btn" type="button" style="<% if(button_config.undelete_library_btn === false) { print("display:none;") } %>"><span class="fa fa-unlock"></span> Undelete</button>',
"</td>",
"</tr>"
].join("")
@@ -17,7 +17,7 @@ define(["libs/toastr", "mvc/library/library-model"], function(
"click #create_new_library_btn": "createLibraryFromModal",
"click #include_deleted_chk": "includeDeletedChecked",
"click #exclude_restricted_chk": "excludeRestrictedChecked",
"click #lib_page_size_prompt": "showPageSizePrompt",
"click .page_size_prompt": "showPageSizePrompt",
"keyup .library-search-input": "searchLibraries"
},
@@ -64,7 +64,10 @@ define(["libs/toastr", "mvc/library/library-model"], function(
show_page: parseInt(this.options.show_page),
page_count: parseInt(this.options.page_count),
total_libraries_count: this.options.total_libraries_count,
libraries_shown: this.options.libraries_shown
libraries_shown: this.options.libraries_shown,
library_page_size: Galaxy.libraries.preferences.get(
"library_page_size"
)
})
);
},
@@ -128,7 +131,8 @@ define(["libs/toastr", "mvc/library/library-model"], function(
/**
* Show user the propmpt to change the number of libs shown on page.
*/
showPageSizePrompt: function() {
showPageSizePrompt: function(e) {
e.preventDefault();
var library_page_size = prompt(
"How many libraries per page do you want to see?",
Galaxy.libraries.preferences.get("library_page_size")
@@ -281,8 +285,11 @@ define(["libs/toastr", "mvc/library/library-model"], function(
'<li class="disabled"><a href="#page/<% print( page_count ) %>"><span class="fa fa-angle-double-right"></span></a></li>',
"<% } %>",
"</ul>",
'<span id="lib_page_size_prompt">',
' showing <a data-toggle="tooltip" data-placement="top" title="Click to change the number of libraries on page"><%- libraries_shown %></a> of <%- total_libraries_count %> libraries',
"<span>",
' <%- libraries_shown %> libraries shown <a href="" data-toggle="tooltip" data-placement="top" title="currently <%- library_page_size %> per page" class="page_size_prompt">(change)</a>',
"</span>",
"<span>",
" <%- total_libraries_count %> total",
"</span>"
].join("")
);
+1 -1
View File
@@ -11,7 +11,7 @@ overflow: auto !important;
.fa{
font-size: 12px;
}
.fa-globe{
.fa-globe, .fa-shield, .fa-key, .fa-ban{
font-size: initial;
margin-left: 0.6em;
}
+14 -5
View File
@@ -195,17 +195,26 @@ class LibraryDatasetsManager(object):
if len(expired_ldda_versions) > 0:
rval['has_versions'] = True
rval['expired_versions'] = expired_ldda_versions
ldda = ld.library_dataset_dataset_association
if ldda.creating_job_associations:
if ldda.creating_job_associations[0].job.stdout:
rval['job_stdout'] = ldda.creating_job_associations[0].job.stdout.strip()
if ldda.creating_job_associations[0].job.stderr:
rval['job_stderr'] = ldda.creating_job_associations[0].job.stderr.strip()
if ldda.dataset.uuid:
rval['uuid'] = str(ldda.dataset.uuid)
rval['deleted'] = ld.deleted
rval['folder_id'] = 'F' + rval['folder_id']
rval['full_path'] = full_path
rval['file_size'] = util.nice_size(int(ld.library_dataset_dataset_association.get_size()))
rval['date_uploaded'] = ld.library_dataset_dataset_association.create_time.strftime("%Y-%m-%d %I:%M %p")
rval['file_size'] = util.nice_size(int(ldda.get_size()))
rval['date_uploaded'] = ldda.create_time.strftime("%Y-%m-%d %I:%M %p")
rval['can_user_modify'] = trans.app.security_agent.can_modify_library_item(current_user_roles, ld) or trans.user_is_admin()
rval['is_unrestricted'] = trans.app.security_agent.dataset_is_public(ld.library_dataset_dataset_association.dataset)
rval['tags'] = self.tag_manager.get_tags_str(ld.library_dataset_dataset_association.tags)
rval['is_unrestricted'] = trans.app.security_agent.dataset_is_public(ldda.dataset)
rval['tags'] = self.tag_manager.get_tags_str(ldda.tags)
# Manage dataset permission is always attached to the dataset itself, not the the ld or ldda to maintain consistency
rval['can_user_manage'] = trans.app.security_agent.can_manage_dataset(current_user_roles, ld.library_dataset_dataset_association.dataset) or trans.user_is_admin()
rval['can_user_manage'] = trans.app.security_agent.can_manage_dataset(current_user_roles, ldda.dataset) or trans.user_is_admin()
return rval
def _build_path(self, trans, folder):
@@ -109,6 +109,7 @@ class FolderContentsController(BaseAPIController, UsesLibraryMixin, UsesLibraryM
is_unrestricted=is_unrestricted,
is_private=is_private,
can_manage=can_manage,
state=library_dataset_dict['state'],
file_size=nice_size))
if content_item.library_dataset_dataset_association.message:
return_item.update(dict(message=content_item.library_dataset_dataset_association.message))
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
a{text-decoration:underline}label{font-weight:normal}.library_style_container{width:95%;margin:auto;margin-top:2em;overflow:auto !important}.library_style_container .fa{font-size:12px}.library_style_container .fa-globe{font-size:initial;margin-left:.6em}.library_style_container .libraryRow{background-color:#ebd9b2}.library_style_container .datasetHighlighted{background-color:#f9f9f9}.library_style_container .libraryItemDeleted-True{font-style:italic}.library_style_container div.libraryItemBody{padding:4px 4px 2px 4px}.library_style_container li.folderRow,.library_style_container li.datasetRow{border-top:solid 1px #c6bfa8}.library_style_container li.folderRow:hover,.library_style_container li.datasetRow:hover{background-color:#f9f9f9}.library_style_container td.right-center{vertical-align:middle !important;text-align:right}.library_style_container .library-genome-select{max-width:350px}.library_style_container .library-extension-select{max-width:140px}.library_style_container .library_table td{border-top:1px solid #5f6990 !important}.library_style_container .library_table th{border-bottom:2px solid #5f6990 !important}.library_style_container .library_table a{color:#0A143D}.library_style_container .library_table a:hover{color:maroon}.library_style_container tr.light td{background-color:white;color:black}.library_style_container tr.light:hover td{background-color:#f5e8cc}.library_style_container tr.dark td{background-color:#d6b161;color:white}.library_style_container tr.dark:hover td{background-color:#ebd4a4;color:white}.library_style_container a.dark{color:white}.library_style_container .dataset_table tr,.library_style_container .dataset_table th,.library_style_container .dataset_table td{border:none}.library_style_container .dataset_table .dataset-first-column{width:30%}.library_style_container th.button_heading{width:2em}.library_style_container .bigdrop.select2-container .select2-results{max-height:300px}.library_style_container .bigdrop .select2-results{max-height:300px}.library_style_container .select2-container-multi{width:100%}.library_style_container .roles-selection{width:66%}.library_style_container #library_toolbar{margin-bottom:.5em}.library_style_container #library_toolbar span{margin-right:.2em}.library_style_container #library_toolbar .toolbar-item{margin-left:1em}.library_style_container #libraries_element button,.library_style_container #folder_items_element button{margin-left:.5em}.library_style_container .help-button{float:right}.library_style_container .pagination-sm{height:15px}.library_style_container .library-paginator{margin-left:2em}.library_style_container .import-type-switch{text-decoration:underline}.library_style_container .libimport-select-none,.library_style_container .libimport-select-all{margin-left:.5em}.library_style_container .library-modal-item{width:90%;margin-left:1em;margin-right:1em}.library_style_container .paginator-bottom{width:27em;margin-left:auto;margin-right:auto;margin-top:2em;margin-bottom:2em}.modal-content #selected_history_content ul{list-style-type:none}#library-grid ul{list-style:none}#library-grid span.expandLink{padding-left:12px;display:inline-block;vertical-align:middle;background:url(../images/silk/resultset_next.png) no-repeat}#library-grid .folderRow.expanded span.expandLink{background:url(../images/silk/resultset_bottom.png) no-repeat}#library-grid .folderRow span.rowIcon{float:left;margin-right:5px;width:16px;height:16px;display:inline-block;vertical-align:middle;background:url(../images/silk/folder.png)}#library-grid .libraryItem-error{margin-right:2px;padding:0 2px 0 2px;border:1px solid #dd1b15;background:#f9c7c5}#library-grid .libraryItem-queued{margin-right:2px;padding:0 2px 0 2px;border:1px solid #bfbfbf;background:#eee}#library-grid .libraryItem-running{margin-right:2px;padding:0 2px 0 2px;border:1px solid #AAAA66;background:#FFFFCC}#library-grid .libraryItem-upload{margin-right:2px;padding:0 2px 0 2px;border:1px solid #119ac2;background:#a8e5f7}.libraryTitle th{text-align:left}.libraryTitle .rowTitle{padding:2px}
a{text-decoration:underline}label{font-weight:normal}.library_style_container{width:95%;margin:auto;margin-top:2em;overflow:auto !important}.library_style_container .fa{font-size:12px}.library_style_container .fa-globe,.library_style_container .fa-shield,.library_style_container .fa-key,.library_style_container .fa-ban{font-size:initial;margin-left:.6em}.library_style_container .libraryRow{background-color:#ebd9b2}.library_style_container .datasetHighlighted{background-color:#f9f9f9}.library_style_container .libraryItemDeleted-True{font-style:italic}.library_style_container div.libraryItemBody{padding:4px 4px 2px 4px}.library_style_container li.folderRow,.library_style_container li.datasetRow{border-top:solid 1px #c6bfa8}.library_style_container li.folderRow:hover,.library_style_container li.datasetRow:hover{background-color:#f9f9f9}.library_style_container td.right-center{vertical-align:middle !important;text-align:right}.library_style_container .library-genome-select{max-width:350px}.library_style_container .library-extension-select{max-width:140px}.library_style_container .library_table td{border-top:1px solid #5f6990 !important}.library_style_container .library_table th{border-bottom:2px solid #5f6990 !important}.library_style_container .library_table a{color:#0A143D}.library_style_container .library_table a:hover{color:maroon}.library_style_container tr.light td{background-color:white;color:black}.library_style_container tr.light:hover td{background-color:#f5e8cc}.library_style_container tr.dark td{background-color:#d6b161;color:white}.library_style_container tr.dark:hover td{background-color:#ebd4a4;color:white}.library_style_container a.dark{color:white}.library_style_container .dataset_table tr,.library_style_container .dataset_table th,.library_style_container .dataset_table td{border:none}.library_style_container .dataset_table .dataset-first-column{width:30%}.library_style_container th.button_heading{width:2em}.library_style_container .bigdrop.select2-container .select2-results{max-height:300px}.library_style_container .bigdrop .select2-results{max-height:300px}.library_style_container .select2-container-multi{width:100%}.library_style_container .roles-selection{width:66%}.library_style_container #library_toolbar{margin-bottom:.5em}.library_style_container #library_toolbar span{margin-right:.2em}.library_style_container #library_toolbar .toolbar-item{margin-left:1em}.library_style_container #libraries_element button,.library_style_container #folder_items_element button{margin-left:.5em}.library_style_container .help-button{float:right}.library_style_container .pagination-sm{height:15px}.library_style_container .library-paginator{margin-left:2em}.library_style_container .import-type-switch{text-decoration:underline}.library_style_container .libimport-select-none,.library_style_container .libimport-select-all{margin-left:.5em}.library_style_container .library-modal-item{width:90%;margin-left:1em;margin-right:1em}.library_style_container .paginator-bottom{width:27em;margin-left:auto;margin-right:auto;margin-top:2em;margin-bottom:2em}.modal-content #selected_history_content ul{list-style-type:none}#library-grid ul{list-style:none}#library-grid span.expandLink{padding-left:12px;display:inline-block;vertical-align:middle;background:url(../images/silk/resultset_next.png) no-repeat}#library-grid .folderRow.expanded span.expandLink{background:url(../images/silk/resultset_bottom.png) no-repeat}#library-grid .folderRow span.rowIcon{float:left;margin-right:5px;width:16px;height:16px;display:inline-block;vertical-align:middle;background:url(../images/silk/folder.png)}#library-grid .libraryItem-error{margin-right:2px;padding:0 2px 0 2px;border:1px solid #dd1b15;background:#f9c7c5}#library-grid .libraryItem-queued{margin-right:2px;padding:0 2px 0 2px;border:1px solid #bfbfbf;background:#eee}#library-grid .libraryItem-running{margin-right:2px;padding:0 2px 0 2px;border:1px solid #AAAA66;background:#FFFFCC}#library-grid .libraryItem-upload{margin-right:2px;padding:0 2px 0 2px;border:1px solid #119ac2;background:#a8e5f7}.libraryTitle th{text-align:left}.libraryTitle .rowTitle{padding:2px}