15 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/9c3593e5bfbf/
Changeset: 9c3593e5bfbf
Branch: release_15.03
User: carlfeberhard
Date: 2015-03-04 14:23:19+00:00
Summary: UI, multi-history: swap 'done' and 'create' buttons for
better rtl intuition
Affected #: 3 files
diff -r 64266df71fa71e8b3279be512f97798c96beead2 -r
9c3593e5bfbf690f12e445562e0f8df7061cc776 client/galaxy/scripts/mvc/history/multi-panel.js
--- a/client/galaxy/scripts/mvc/history/multi-panel.js
+++ b/client/galaxy/scripts/mvc/history/multi-panel.js
@@ -1043,7 +1043,7 @@
mainTemplate : _.template([
'<div class="header flex-column-container">',
'<div class="control-column control-column-left
flex-column">',
- '<button class="create-new btn btn-default"
tabindex="4">', _l( 'Create new' ), '</button> ',
+ '<button class="done btn btn-default"
tabindex="1">', _l( 'Done' ), '</button>',
'<div id="search-histories"
class="search-control"></div>',
'<div id="search-datasets"
class="search-control"></div>',
'<a class="open-more-options btn btn-default"
tabindex="3">',
@@ -1055,7 +1055,7 @@
'<div class="header-info">',
'</div>',
'</div>',
'<div class="control-column control-column-right
flex-column">',
- '<button class="done btn btn-default"
tabindex="1">', _l( 'Done' ), '</button>',
+ '<button class="create-new btn btn-default"
tabindex="4">', _l( 'Create new' ), '</button> ',
'</div>',
'</div>',
// middle - where the columns go
diff -r 64266df71fa71e8b3279be512f97798c96beead2 -r
9c3593e5bfbf690f12e445562e0f8df7061cc776 static/scripts/mvc/history/multi-panel.js
--- a/static/scripts/mvc/history/multi-panel.js
+++ b/static/scripts/mvc/history/multi-panel.js
@@ -1043,7 +1043,7 @@
mainTemplate : _.template([
'<div class="header flex-column-container">',
'<div class="control-column control-column-left
flex-column">',
- '<button class="create-new btn btn-default"
tabindex="4">', _l( 'Create new' ), '</button> ',
+ '<button class="done btn btn-default"
tabindex="1">', _l( 'Done' ), '</button>',
'<div id="search-histories"
class="search-control"></div>',
'<div id="search-datasets"
class="search-control"></div>',
'<a class="open-more-options btn btn-default"
tabindex="3">',
@@ -1055,7 +1055,7 @@
'<div class="header-info">',
'</div>',
'</div>',
'<div class="control-column control-column-right
flex-column">',
- '<button class="done btn btn-default"
tabindex="1">', _l( 'Done' ), '</button>',
+ '<button class="create-new btn btn-default"
tabindex="4">', _l( 'Create new' ), '</button> ',
'</div>',
'</div>',
// middle - where the columns go
diff -r 64266df71fa71e8b3279be512f97798c96beead2 -r
9c3593e5bfbf690f12e445562e0f8df7061cc776 static/scripts/packed/mvc/history/multi-panel.js
--- a/static/scripts/packed/mvc/history/multi-panel.js
+++ b/static/scripts/packed/mvc/history/multi-panel.js
@@ -1,1 +1,1 @@
-define(["mvc/history/history-model","mvc/history/history-panel-edit","mvc/base-mvc","utils/ajax-queue","ui/mode-button","ui/search-input"],function(d,l,z,a){function
g(I,E){E=E||{};if(!(Galaxy&&Galaxy.modal)){return I.copy()}var
F=I.get("name"),C="Copy of '"+F+"'";function
D(K){if(!K){if(!Galaxy.modal.$("#invalid-title").size()){var
J=$("<p/>").attr("id","invalid-title").css({color:"red","margin-top":"8px"}).addClass("bg-danger").text(_l("Please
enter a valid history
title"));Galaxy.modal.$(".modal-body").append(J)}return false}return
K}function G(J){var K=$('<p><span class="fa fa-spinner
fa-spin"></span> Copying
history...</p>').css("margin-top","8px");Galaxy.modal.$(".modal-body").append(K);I.copy(true,J).fail(function(){alert(_l("History
could not be copied. Please contact a Galaxy
administrator"))}).always(function(){Galaxy.modal.hide()})}function H(){var
J=Galaxy.modal.$("#copy-modal-title").val();if(!D(J)){return}G(J)}Galaxy.modal.show(_.extend({title:_l("Copying
history")+' "'+F+'"',body:$(['<label
for="copy-modal-title">',_l("Enter a title for the copied
history"),":","</label><br />",'<input
id="copy-modal-title" class="form-control" style="width:
100%" value="',C,'"
/>'].join("")),buttons:{Cancel:function(){Galaxy.modal.hide()},Copy:H}},E));$("#copy-modal-title").focus().select();$("#copy-modal-title").on("keydown",function(J){if(J.keyCode===13){H()}})}var
B=Backbone.View.extend(z.LoggableMixin).extend({tagName:"div",className:"history-column
flex-column flex-row-container",id:function
q(){if(!this.model){return""}return"history-column-"+this.model.get("id")},initialize:function
c(C){C=C||{};this.purgeAllowed=!_.isUndefined(C.purgeAllowed)?C.purgeAllowed:false;this.panel=C.panel||this.createPanel(C);this.setUpListeners()},createPanel:function
u(D){D=_.extend({model:this.model,purgeAllowed:this.purgeAllowed,dragItems:true},D);var
C=new l.HistoryPanelEdit(D);C._renderEmptyMessage=this.__patch_renderEmptyMessage;return
C},__patch_renderEmptyMessage:function(E){var
D=this,F=_.chain(this.model.get("state_ids")).values().flatten().value().length,C=D.$emptyMessage(E);if(!_.isEmpty(D.hdaViews)){C.hide()}else{if(F&&!this.model.contents.length){C.empty().append($('<span
class="fa fa-spinner fa-spin"></span><i>loading
datasets...</i>')).show()}else{if(D.searchFor){C.text(D.noneFoundMsg).show()}else{C.text(D.emptyMsg).show()}}}return
C},setUpListeners:function f(){var
C=this;this.once("rendered",function(){C.trigger("rendered:initial",C)});this.setUpPanelListeners()},setUpPanelListeners:function
k(){var
C=this;this.listenTo(this.panel,{rendered:function(){C.trigger("rendered",C)}},this)},inView:function(C,D){var
F=this.$el.offset().left,E=F+this.$el.width();if(E<C){return false}if(F>D){return
false}return true},$panel:function e(){return
this.$(".history-panel")},render:function
A(D){D=(D!==undefined)?(D):("fast");var
C=this.model?this.model.toJSON():{};this.$el.html(this.template(C));this.renderPanel(D);this.setUpBehaviors();return
this},setUpBehaviors:function v(){},template:function
w(C){C=_.extend(C||{},{isCurrentHistory:this.currentHistory});return $(['<div
class="panel-controls clear
flex-row">',this.controlsLeftTemplate({history:C,view:this}),this.controlsRightTemplate({history:C,view:this}),"</div>",'<div
class="inner flex-row flex-column-container">','<div
id="history-',C.id,'" class="history-column history-panel
flex-column"></div>',"</div>"].join(""))},renderPanel:function
h(C){C=(C!==undefined)?(C):("fast");this.panel.setElement(this.$panel()).render(C);if(this.currentHistory){this.panel.$list().before(this.panel._renderDropTargetHelp())}return
this},events:{"click
.switch-to.btn":function(){this.model.setAsCurrent()},"click
.delete-history":function(){var
C=this;this.model._delete().fail(function(F,D,E){alert(_l("Could not delete the
history")+":\n"+E)}).done(function(D){C.render()})},"click
.undelete-history":function(){var
C=this;this.model.undelete().fail(function(F,D,E){alert(_l("Could not undelete the
history")+":\n"+E)}).done(function(D){C.render()})},"click
.purge-history":function(){if(confirm(_l("This will permanently remove the data.
Are you sure?"))){var
C=this;this.model.purge().fail(function(F,D,E){alert(_l("Could not purge the
history")+":\n"+E)}).done(function(D){C.render()})}},"click
.copy-history":"copy"},copy:function
s(){g(this.model)},controlsLeftTemplate:_.template(['<div
class="pull-left">',"<% if( data.history.isCurrentHistory ){
%>",'<strong class="current-label">',_l("Current
History"),"</strong>","<% } else {
%>",'<button class="switch-to btn
btn-default">',_l("Switch
to"),"</button>","<% }
%>","</div>"].join(""),{variable:"data"}),controlsRightTemplate:_.template(['<div
class="pull-right">',"<% if( !data.history.purged ){
%>",'<div class="panel-menu btn-group">','<button
type="button" class="btn btn-default dropdown-toggle"
data-toggle="dropdown">','<span
class="caret"></span>',"</button>",'<ul
class="dropdown-menu pull-right" role="menu">',"<% if(
!data.history.deleted ){ %>",'<li><a
href="javascript:void(0);"
class="copy-history">',_l("Copy"),"</a></li>",'<li><a
href="javascript:void(0);"
class="delete-history">',_l("Delete"),"</a></li>","<%
} else /* if is deleted */ { %>",'<li><a
href="javascript:void(0);"
class="undelete-history">',_l("Undelete"),"</a></li>","<%
} %>","<% if( data.view.purgeAllowed ){ %>",'<li><a
href="javascript:void(0);"
class="purge-history">',_l("Purge"),"</a></li>","<%
} %>","</ul>","</div>","<% }
%>","</div>"].join(""),{variable:"data"}),toString:function(){return"HistoryPanelColumn("+(this.panel?this.panel:"")+")"}});var
m=Backbone.View.extend(z.LoggableMixin).extend({className:"multi-panel-history",initialize:function
c(C){C=C||{};this.log(this+".init",C);this.$el.addClass(this.className);if(!C.currentHistoryId){throw
new Error(this+" requires a currentHistoryId in the
options")}this.currentHistoryId=C.currentHistoryId;this.options={columnWidth:312,borderWidth:1,columnGap:8,headerHeight:29,footerHeight:0,controlsHeight:20};this.order=C.order||"update";this._initSortOrders();this.hdaQueue=new
a.NamedAjaxQueue([],false);this.collection=null;this.setCollection(C.histories||[]);this.columnMap={};this.createColumns(C.columnOptions);this.setUpListeners()},_initSortOrders:function(){function
C(D,E){return function F(H,G,I){if(H.id===I){return -1}if(G.id===I){return
1}H=D(H);G=D(G);return
E.asc?((H===G)?(0):(H>G?1:-1)):((H===G)?(0):(H>G?-1:1))}}this.sortOrders={update:{text:_l("most
recent first"),fn:C(function(D){return
Date(D.get("update_time"))},{asc:false})},name:{text:_l("name, a to
z"),fn:C(function(D){return
D.get("name")},{asc:true})},"name-dsc":{text:_l("name, z to
a"),fn:C(function(D){return
D.get("name")},{asc:false})},size:{text:_l("size, large to
small"),fn:C(function(D){return
D.get("size")},{asc:false})},"size-dsc":{text:_l("size, small to
large"),fn:C(function(D){return D.get("size")},{asc:true})}};return
this.sortOrders},setUpListeners:function f(){},setCollection:function y(D){var
C=this;C.stopListening(C.collection);C.collection=D;C.sortCollection(C.order,{silent:true});C.setUpCollectionListeners();C.trigger("new-collection",C);return
C},setUpCollectionListeners:function(){var
C=this,D=C.collection;C.listenTo(D,{add:C.addAsCurrentColumn,"set-as-current":C.setCurrentHistory,"change:deleted
change:purged":C.handleDeletedHistory,sort:function(){C.renderColumns(0)}})},setCurrentHistory:function
p(D){var
C=this.columnMap[this.currentHistoryId];if(C){C.currentHistory=false;C.$el.height("")}this.currentHistoryId=D.id;var
E=this.columnMap[this.currentHistoryId];E.currentHistory=true;this.sortCollection();multipanel._recalcFirstColumnHeight();return
E},handleDeletedHistory:function
b(D){if(D.get("deleted")||D.get("purged")){this.log("handleDeletedHistory",this.collection.includeDeleted,D);var
C=this;column=C.columnMap[D.id];if(!column){return}if(column.model.id===this.currentHistoryId){}else{if(!C.collection.includeDeleted){C.removeColumn(column)}}}},sortCollection:function(C,D){if(!(C
in this.sortOrders)){C="update"}this.order=C;var
G=this.currentHistoryId,F=this.sortOrders[C];this.collection.comparator=function
E(I,H){return
F.fn(I,H,G)};this.$(".current-order").text(F.text);if(this.$(".more-options").is(":visible")){this.$(".open-more-options.btn").popover("show")}this.collection.sort(D);return
this.collection},create:function(C){return
this.collection.create({current:true})},createColumns:function r(D){D=D||{};var
C=this;this.columnMap={};C.collection.each(function(E,F){var
G=C.createColumn(E,D);C.columnMap[E.id]=G})},createColumn:function
t(E,C){C=_.extend({},C,{model:E,purgeAllowed:Galaxy.config.allow_user_dataset_purge});var
D=new
B(C);if(E.id===this.currentHistoryId){D.currentHistory=true}this.setUpColumnListeners(D);return
D},sortedFilteredColumns:function(C){C=C||this.filters;if(!C||!C.length){return
this.sortedColumns()}var D=this;return D.sortedColumns().filter(function(G,F){var
E=G.currentHistory||_.every(C.map(function(H){return H.call(G)}));return
E})},sortedColumns:function(){var D=this;var C=this.collection.map(function(F,E){return
D.columnMap[F.id]});return C},addColumn:function o(E,C){C=C!==undefined?C:true;var
D=this.createColumn(E);this.columnMap[E.id]=D;if(C){this.renderColumns()}return
D},addAsCurrentColumn:function o(E){var
D=this,C=this.addColumn(E,false);this.setCurrentHistory(E);C.once("rendered",function(){D.queueHdaFetch(C)});return
C},removeColumn:function
x(E,D){D=D!==undefined?D:true;this.log("removeColumn",E);if(!E){return}var
F=this,C=this.options.columnWidth+this.options.columnGap;E.$el.fadeOut("fast",function(){if(D){$(this).remove();F.$(".middle").width(F.$(".middle").width()-C);F.checkColumnsInView();F._recalcFirstColumnHeight()}F.stopListening(E.panel);F.stopListening(E);delete
F.columnMap[E.model.id];E.remove()})},setUpColumnListeners:function n(C){var
D=this;D.listenTo(C,{"in-view":D.queueHdaFetch});D.listenTo(C.panel,{"view:draggable:dragstart":function(H,F,E,G){D._dropData=JSON.parse(H.dataTransfer.getData("text"));D.currentColumnDropTargetOn()},"view:draggable:dragend":function(H,F,E,G){D._dropData=null;D.currentColumnDropTargetOff()},"droptarget:drop":function(G,H,F){var
I=D._dropData.filter(function(J){return
F.model.contents.isCopyable(J)});D._dropData=null;var E=new
a.NamedAjaxQueue();I.forEach(function(J){E.add({name:"copy-"+J.id,fn:function(){return
F.model.contents.copy(J)}})});E.start();E.done(function(J){F.model.fetch()})}})},columnMapLength:function(){return
Object.keys(this.columnMap).length},render:function
A(D){D=D!==undefined?D:this.fxSpeed;var
C=this;C.log(C+".render");C.$el.html(C.mainTemplate(C));C.renderColumns(D);C.setUpBehaviors();C.trigger("rendered",C);return
C},renderColumns:function j(F){F=F!==undefined?F:this.fxSpeed;var
E=this,C=E.sortedFilteredColumns();E.$(".middle").width(C.length*(this.options.columnWidth+this.options.columnGap)+this.options.columnGap+16);var
D=E.$(".middle");D.empty();C.forEach(function(H,G){H.$el.appendTo(D);H.delegateEvents();E.renderColumn(H,F)});if(this.searchFor&&C.length<=1){}else{E.checkColumnsInView();this._recalcFirstColumnHeight()}return
C},renderColumn:function(C,D){D=D!==undefined?D:this.fxSpeed;return
C.render(D)},queueHdaFetch:function
i(E){if(E.model.contents.length===0&&!E.model.get("empty")){var
C={},D=_.values(E.panel.storage.get("expandedIds")).join();if(D){C.dataset_details=D}this.hdaQueue.add({name:E.model.id,fn:function(){var
F=E.model.contents.fetch({data:C,silent:true});return
F.done(function(G){E.panel.renderItems()})}});if(!this.hdaQueue.running){this.hdaQueue.start()}}},queueHdaFetchDetails:function(C){if((C.model.contents.length===0&&!C.model.get("empty"))||(!C.model.contents.haveDetails())){this.hdaQueue.add({name:C.model.id,fn:function(){var
D=C.model.contents.fetch({data:{details:"all"},silent:true});return
D.done(function(E){C.panel.renderItems()})}});if(!this.hdaQueue.running){this.hdaQueue.start()}}},renderInfo:function(C){return
this.$(".header .header-info").text(C)},events:{"click
.done.btn":"close","click
.create-new.btn":"create","click
#include-deleted":"_clickToggleDeletedHistories","click .order
.set-order":"_chooseOrder","click
#toggle-deleted":"_clickToggleDeletedDatasets","click
#toggle-hidden":"_clickToggleHiddenDatasets"},close:function(D){var
C="/";if(Galaxy&&Galaxy.options&&Galaxy.options.root){C=Galaxy.options.root}else{if(galaxy_config&&galaxy_config.root){C=galaxy_config.root}}window.location=C},_clickToggleDeletedHistories:function(C){return
this.toggleDeletedHistories($(C.currentTarget).is(":checked"))},toggleDeletedHistories:function(C){if(C){window.location=Galaxy.options.root+"history/view_multiple?include_deleted_histories=True"}else{window.location=Galaxy.options.root+"history/view_multiple"}},_clickToggleDeletedDatasets:function(C){return
this.toggleDeletedDatasets($(C.currentTarget).is(":checked"))},toggleDeletedDatasets:function(C){C=C!==undefined?C:false;var
D=this;D.sortedFilteredColumns().forEach(function(F,E){_.delay(function(){F.panel.toggleShowDeleted(C,false)},E*200)})},_clickToggleHiddenDatasets:function(C){return
this.toggleHiddenDatasets($(C.currentTarget).is(":checked"))},toggleHiddenDatasets:function(C){C=C!==undefined?C:false;var
D=this;D.sortedFilteredColumns().forEach(function(F,E){_.delay(function(){F.panel.toggleShowHidden(C,false)},E*200)})},_chooseOrder:function(D){var
C=$(D.currentTarget).data("order");this.sortCollection(C)},setUpBehaviors:function(){var
D=this;D._moreOptionsPopover();D.$("#search-histories").searchInput({name:"search-histories",placeholder:_l("search
histories"),onsearch:function(E){D.searchFor=E;D.filters=[function(){return
this.model.matchesAll(D.searchFor)}];D.renderColumns(0)},onclear:function(E){D.searchFor=null;D.filters=[];D.renderColumns(0)}});D.$("#search-datasets").searchInput({name:"search-datasets",placeholder:_l("search
all
datasets"),onfirstsearch:function(E){D.hdaQueue.clear();D.$("#search-datasets").searchInput("toggle-loading");D.searchFor=E;D.sortedFilteredColumns().forEach(function(F){F.panel.searchItems(E);D.queueHdaFetchDetails(F)});D.hdaQueue.progress(function(F){D.renderInfo([_l("searching"),(F.curr+1),_l("of"),F.total].join("
"))});D.hdaQueue.deferred.done(function(){D.renderInfo("");D.$("#search-datasets").searchInput("toggle-loading")})},onsearch:function(E){D.searchFor=E;D.sortedFilteredColumns().forEach(function(F){F.panel.searchItems(E)})},onclear:function(E){D.searchFor=null;D.sortedFilteredColumns().forEach(function(F){F.panel.clearSearch()})}});$(window).resize(function(){D._recalcFirstColumnHeight()});var
C=_.debounce(_.bind(this.checkColumnsInView,this),100);this.$(".middle").parent().scroll(C)},_moreOptionsPopover:function(){return
this.$(".open-more-options.btn").popover({container:".header",placement:"bottom",html:true,content:$(this.optionsPopoverTemplate(this))})},_recalcFirstColumnHeight:function(){var
C=this.$(".history-column").first(),E=this.$(".middle").height(),D=C.find(".panel-controls").height();C.height(E).find(".inner").height(E-D)},_viewport:function(){var
C=this.$(".middle").parent().offset().left;return{left:C,right:C+this.$(".middle").parent().width()}},columnsInView:function(){var
C=this._viewport();return this.sortedFilteredColumns().filter(function(D){return
D.currentHistory||D.inView(C.left,C.right)})},checkColumnsInView:function(){this.columnsInView().forEach(function(C){C.trigger("in-view",C)})},currentColumnDropTargetOn:function(){var
C=this.columnMap[this.currentHistoryId];if(!C){return}C.panel.dataDropped=function(D){};C.panel.dropTargetOn()},currentColumnDropTargetOff:function(){var
C=this.columnMap[this.currentHistoryId];if(!C){return}C.panel.dataDropped=l.HistoryPanelEdit.prototype.dataDrop;C.panel.dropTarget=false;C.panel.$(".history-drop-target").remove()},toString:function(){return"MultiPanelColumns("+(this.columns?this.columns.length:0)+")"},mainTemplate:_.template(['<div
class="header flex-column-container">','<div
class="control-column control-column-left flex-column">','<button
class="create-new btn btn-default"
tabindex="4">',_l("Create new"),"</button>
",'<div id="search-histories"
class="search-control"></div>','<div
id="search-datasets"
class="search-control"></div>','<a
class="open-more-options btn btn-default"
tabindex="3">','<span class="fa
fa-ellipsis-h"></span>',"</a>","</div>",'<div
class="control-column control-column-center flex-column">','<div
class="header-info">',"</div>","</div>",'<div
class="control-column control-column-right flex-column">','<button
class="done btn btn-default"
tabindex="1">',_l("Done"),"</button>","</div>","</div>",'<div
class="outer-middle flex-row flex-row-container">','<div
class="middle flex-column-container
flex-row"></div>',"</div>",'<div
class="footer
flex-column-container">',"</div>"].join(""),{variable:"view"}),optionsPopoverTemplate:_.template(['<div
class="more-options">','<div class="order
btn-group">','<button type="button" class="btn
btn-default dropdown-toggle" data-toggle="dropdown">',_l("Order
histories by")+" ",'<span class="current-order"><%=
view.sortOrders[ view.order ].text %></span> ','<span
class="caret"></span>',"</button>",'<ul
class="dropdown-menu" role="menu">',"<% _.each(
view.sortOrders, function( order, key ){ %>",'<li><a
href="javascript:void(0);" class="set-order" data-order="<%=
key %>">',"<%= order.text
%>","</a></li>","<% });
%>","</ul>","</div>",'<div
class="checkbox"><label><input id="include-deleted"
type="checkbox"','<%= view.collection.includeDeleted? "
checked" : "" %>>',_l("Include deleted
histories"),"</label></div>","<hr
/>",'<div class="checkbox"><label><input
id="toggle-deleted" type="checkbox">',_l("Include deleted
datasets"),"</label></div>",'<div
class="checkbox"><label><input id="toggle-hidden"
type="checkbox">',_l("Include hidden
datasets"),"</label></div>","</div>"].join(""),{variable:"view"})});return{MultiPanelColumns:m}});
\ No newline at end of file
+define(["mvc/history/history-model","mvc/history/history-panel-edit","mvc/base-mvc","utils/ajax-queue","ui/mode-button","ui/search-input"],function(d,l,z,a){function
g(I,E){E=E||{};if(!(Galaxy&&Galaxy.modal)){return I.copy()}var
F=I.get("name"),C="Copy of '"+F+"'";function
D(K){if(!K){if(!Galaxy.modal.$("#invalid-title").size()){var
J=$("<p/>").attr("id","invalid-title").css({color:"red","margin-top":"8px"}).addClass("bg-danger").text(_l("Please
enter a valid history
title"));Galaxy.modal.$(".modal-body").append(J)}return false}return
K}function G(J){var K=$('<p><span class="fa fa-spinner
fa-spin"></span> Copying
history...</p>').css("margin-top","8px");Galaxy.modal.$(".modal-body").append(K);I.copy(true,J).fail(function(){alert(_l("History
could not be copied. Please contact a Galaxy
administrator"))}).always(function(){Galaxy.modal.hide()})}function H(){var
J=Galaxy.modal.$("#copy-modal-title").val();if(!D(J)){return}G(J)}Galaxy.modal.show(_.extend({title:_l("Copying
history")+' "'+F+'"',body:$(['<label
for="copy-modal-title">',_l("Enter a title for the copied
history"),":","</label><br />",'<input
id="copy-modal-title" class="form-control" style="width:
100%" value="',C,'"
/>'].join("")),buttons:{Cancel:function(){Galaxy.modal.hide()},Copy:H}},E));$("#copy-modal-title").focus().select();$("#copy-modal-title").on("keydown",function(J){if(J.keyCode===13){H()}})}var
B=Backbone.View.extend(z.LoggableMixin).extend({tagName:"div",className:"history-column
flex-column flex-row-container",id:function
q(){if(!this.model){return""}return"history-column-"+this.model.get("id")},initialize:function
c(C){C=C||{};this.purgeAllowed=!_.isUndefined(C.purgeAllowed)?C.purgeAllowed:false;this.panel=C.panel||this.createPanel(C);this.setUpListeners()},createPanel:function
u(D){D=_.extend({model:this.model,purgeAllowed:this.purgeAllowed,dragItems:true},D);var
C=new l.HistoryPanelEdit(D);C._renderEmptyMessage=this.__patch_renderEmptyMessage;return
C},__patch_renderEmptyMessage:function(E){var
D=this,F=_.chain(this.model.get("state_ids")).values().flatten().value().length,C=D.$emptyMessage(E);if(!_.isEmpty(D.hdaViews)){C.hide()}else{if(F&&!this.model.contents.length){C.empty().append($('<span
class="fa fa-spinner fa-spin"></span><i>loading
datasets...</i>')).show()}else{if(D.searchFor){C.text(D.noneFoundMsg).show()}else{C.text(D.emptyMsg).show()}}}return
C},setUpListeners:function f(){var
C=this;this.once("rendered",function(){C.trigger("rendered:initial",C)});this.setUpPanelListeners()},setUpPanelListeners:function
k(){var
C=this;this.listenTo(this.panel,{rendered:function(){C.trigger("rendered",C)}},this)},inView:function(C,D){var
F=this.$el.offset().left,E=F+this.$el.width();if(E<C){return false}if(F>D){return
false}return true},$panel:function e(){return
this.$(".history-panel")},render:function
A(D){D=(D!==undefined)?(D):("fast");var
C=this.model?this.model.toJSON():{};this.$el.html(this.template(C));this.renderPanel(D);this.setUpBehaviors();return
this},setUpBehaviors:function v(){},template:function
w(C){C=_.extend(C||{},{isCurrentHistory:this.currentHistory});return $(['<div
class="panel-controls clear
flex-row">',this.controlsLeftTemplate({history:C,view:this}),this.controlsRightTemplate({history:C,view:this}),"</div>",'<div
class="inner flex-row flex-column-container">','<div
id="history-',C.id,'" class="history-column history-panel
flex-column"></div>',"</div>"].join(""))},renderPanel:function
h(C){C=(C!==undefined)?(C):("fast");this.panel.setElement(this.$panel()).render(C);if(this.currentHistory){this.panel.$list().before(this.panel._renderDropTargetHelp())}return
this},events:{"click
.switch-to.btn":function(){this.model.setAsCurrent()},"click
.delete-history":function(){var
C=this;this.model._delete().fail(function(F,D,E){alert(_l("Could not delete the
history")+":\n"+E)}).done(function(D){C.render()})},"click
.undelete-history":function(){var
C=this;this.model.undelete().fail(function(F,D,E){alert(_l("Could not undelete the
history")+":\n"+E)}).done(function(D){C.render()})},"click
.purge-history":function(){if(confirm(_l("This will permanently remove the data.
Are you sure?"))){var
C=this;this.model.purge().fail(function(F,D,E){alert(_l("Could not purge the
history")+":\n"+E)}).done(function(D){C.render()})}},"click
.copy-history":"copy"},copy:function
s(){g(this.model)},controlsLeftTemplate:_.template(['<div
class="pull-left">',"<% if( data.history.isCurrentHistory ){
%>",'<strong class="current-label">',_l("Current
History"),"</strong>","<% } else {
%>",'<button class="switch-to btn
btn-default">',_l("Switch
to"),"</button>","<% }
%>","</div>"].join(""),{variable:"data"}),controlsRightTemplate:_.template(['<div
class="pull-right">',"<% if( !data.history.purged ){
%>",'<div class="panel-menu btn-group">','<button
type="button" class="btn btn-default dropdown-toggle"
data-toggle="dropdown">','<span
class="caret"></span>',"</button>",'<ul
class="dropdown-menu pull-right" role="menu">',"<% if(
!data.history.deleted ){ %>",'<li><a
href="javascript:void(0);"
class="copy-history">',_l("Copy"),"</a></li>",'<li><a
href="javascript:void(0);"
class="delete-history">',_l("Delete"),"</a></li>","<%
} else /* if is deleted */ { %>",'<li><a
href="javascript:void(0);"
class="undelete-history">',_l("Undelete"),"</a></li>","<%
} %>","<% if( data.view.purgeAllowed ){ %>",'<li><a
href="javascript:void(0);"
class="purge-history">',_l("Purge"),"</a></li>","<%
} %>","</ul>","</div>","<% }
%>","</div>"].join(""),{variable:"data"}),toString:function(){return"HistoryPanelColumn("+(this.panel?this.panel:"")+")"}});var
m=Backbone.View.extend(z.LoggableMixin).extend({className:"multi-panel-history",initialize:function
c(C){C=C||{};this.log(this+".init",C);this.$el.addClass(this.className);if(!C.currentHistoryId){throw
new Error(this+" requires a currentHistoryId in the
options")}this.currentHistoryId=C.currentHistoryId;this.options={columnWidth:312,borderWidth:1,columnGap:8,headerHeight:29,footerHeight:0,controlsHeight:20};this.order=C.order||"update";this._initSortOrders();this.hdaQueue=new
a.NamedAjaxQueue([],false);this.collection=null;this.setCollection(C.histories||[]);this.columnMap={};this.createColumns(C.columnOptions);this.setUpListeners()},_initSortOrders:function(){function
C(D,E){return function F(H,G,I){if(H.id===I){return -1}if(G.id===I){return
1}H=D(H);G=D(G);return
E.asc?((H===G)?(0):(H>G?1:-1)):((H===G)?(0):(H>G?-1:1))}}this.sortOrders={update:{text:_l("most
recent first"),fn:C(function(D){return
Date(D.get("update_time"))},{asc:false})},name:{text:_l("name, a to
z"),fn:C(function(D){return
D.get("name")},{asc:true})},"name-dsc":{text:_l("name, z to
a"),fn:C(function(D){return
D.get("name")},{asc:false})},size:{text:_l("size, large to
small"),fn:C(function(D){return
D.get("size")},{asc:false})},"size-dsc":{text:_l("size, small to
large"),fn:C(function(D){return D.get("size")},{asc:true})}};return
this.sortOrders},setUpListeners:function f(){},setCollection:function y(D){var
C=this;C.stopListening(C.collection);C.collection=D;C.sortCollection(C.order,{silent:true});C.setUpCollectionListeners();C.trigger("new-collection",C);return
C},setUpCollectionListeners:function(){var
C=this,D=C.collection;C.listenTo(D,{add:C.addAsCurrentColumn,"set-as-current":C.setCurrentHistory,"change:deleted
change:purged":C.handleDeletedHistory,sort:function(){C.renderColumns(0)}})},setCurrentHistory:function
p(D){var
C=this.columnMap[this.currentHistoryId];if(C){C.currentHistory=false;C.$el.height("")}this.currentHistoryId=D.id;var
E=this.columnMap[this.currentHistoryId];E.currentHistory=true;this.sortCollection();multipanel._recalcFirstColumnHeight();return
E},handleDeletedHistory:function
b(D){if(D.get("deleted")||D.get("purged")){this.log("handleDeletedHistory",this.collection.includeDeleted,D);var
C=this;column=C.columnMap[D.id];if(!column){return}if(column.model.id===this.currentHistoryId){}else{if(!C.collection.includeDeleted){C.removeColumn(column)}}}},sortCollection:function(C,D){if(!(C
in this.sortOrders)){C="update"}this.order=C;var
G=this.currentHistoryId,F=this.sortOrders[C];this.collection.comparator=function
E(I,H){return
F.fn(I,H,G)};this.$(".current-order").text(F.text);if(this.$(".more-options").is(":visible")){this.$(".open-more-options.btn").popover("show")}this.collection.sort(D);return
this.collection},create:function(C){return
this.collection.create({current:true})},createColumns:function r(D){D=D||{};var
C=this;this.columnMap={};C.collection.each(function(E,F){var
G=C.createColumn(E,D);C.columnMap[E.id]=G})},createColumn:function
t(E,C){C=_.extend({},C,{model:E,purgeAllowed:Galaxy.config.allow_user_dataset_purge});var
D=new
B(C);if(E.id===this.currentHistoryId){D.currentHistory=true}this.setUpColumnListeners(D);return
D},sortedFilteredColumns:function(C){C=C||this.filters;if(!C||!C.length){return
this.sortedColumns()}var D=this;return D.sortedColumns().filter(function(G,F){var
E=G.currentHistory||_.every(C.map(function(H){return H.call(G)}));return
E})},sortedColumns:function(){var D=this;var C=this.collection.map(function(F,E){return
D.columnMap[F.id]});return C},addColumn:function o(E,C){C=C!==undefined?C:true;var
D=this.createColumn(E);this.columnMap[E.id]=D;if(C){this.renderColumns()}return
D},addAsCurrentColumn:function o(E){var
D=this,C=this.addColumn(E,false);this.setCurrentHistory(E);C.once("rendered",function(){D.queueHdaFetch(C)});return
C},removeColumn:function
x(E,D){D=D!==undefined?D:true;this.log("removeColumn",E);if(!E){return}var
F=this,C=this.options.columnWidth+this.options.columnGap;E.$el.fadeOut("fast",function(){if(D){$(this).remove();F.$(".middle").width(F.$(".middle").width()-C);F.checkColumnsInView();F._recalcFirstColumnHeight()}F.stopListening(E.panel);F.stopListening(E);delete
F.columnMap[E.model.id];E.remove()})},setUpColumnListeners:function n(C){var
D=this;D.listenTo(C,{"in-view":D.queueHdaFetch});D.listenTo(C.panel,{"view:draggable:dragstart":function(H,F,E,G){D._dropData=JSON.parse(H.dataTransfer.getData("text"));D.currentColumnDropTargetOn()},"view:draggable:dragend":function(H,F,E,G){D._dropData=null;D.currentColumnDropTargetOff()},"droptarget:drop":function(G,H,F){var
I=D._dropData.filter(function(J){return
F.model.contents.isCopyable(J)});D._dropData=null;var E=new
a.NamedAjaxQueue();I.forEach(function(J){E.add({name:"copy-"+J.id,fn:function(){return
F.model.contents.copy(J)}})});E.start();E.done(function(J){F.model.fetch()})}})},columnMapLength:function(){return
Object.keys(this.columnMap).length},render:function
A(D){D=D!==undefined?D:this.fxSpeed;var
C=this;C.log(C+".render");C.$el.html(C.mainTemplate(C));C.renderColumns(D);C.setUpBehaviors();C.trigger("rendered",C);return
C},renderColumns:function j(F){F=F!==undefined?F:this.fxSpeed;var
E=this,C=E.sortedFilteredColumns();E.$(".middle").width(C.length*(this.options.columnWidth+this.options.columnGap)+this.options.columnGap+16);var
D=E.$(".middle");D.empty();C.forEach(function(H,G){H.$el.appendTo(D);H.delegateEvents();E.renderColumn(H,F)});if(this.searchFor&&C.length<=1){}else{E.checkColumnsInView();this._recalcFirstColumnHeight()}return
C},renderColumn:function(C,D){D=D!==undefined?D:this.fxSpeed;return
C.render(D)},queueHdaFetch:function
i(E){if(E.model.contents.length===0&&!E.model.get("empty")){var
C={},D=_.values(E.panel.storage.get("expandedIds")).join();if(D){C.dataset_details=D}this.hdaQueue.add({name:E.model.id,fn:function(){var
F=E.model.contents.fetch({data:C,silent:true});return
F.done(function(G){E.panel.renderItems()})}});if(!this.hdaQueue.running){this.hdaQueue.start()}}},queueHdaFetchDetails:function(C){if((C.model.contents.length===0&&!C.model.get("empty"))||(!C.model.contents.haveDetails())){this.hdaQueue.add({name:C.model.id,fn:function(){var
D=C.model.contents.fetch({data:{details:"all"},silent:true});return
D.done(function(E){C.panel.renderItems()})}});if(!this.hdaQueue.running){this.hdaQueue.start()}}},renderInfo:function(C){return
this.$(".header .header-info").text(C)},events:{"click
.done.btn":"close","click
.create-new.btn":"create","click
#include-deleted":"_clickToggleDeletedHistories","click .order
.set-order":"_chooseOrder","click
#toggle-deleted":"_clickToggleDeletedDatasets","click
#toggle-hidden":"_clickToggleHiddenDatasets"},close:function(D){var
C="/";if(Galaxy&&Galaxy.options&&Galaxy.options.root){C=Galaxy.options.root}else{if(galaxy_config&&galaxy_config.root){C=galaxy_config.root}}window.location=C},_clickToggleDeletedHistories:function(C){return
this.toggleDeletedHistories($(C.currentTarget).is(":checked"))},toggleDeletedHistories:function(C){if(C){window.location=Galaxy.options.root+"history/view_multiple?include_deleted_histories=True"}else{window.location=Galaxy.options.root+"history/view_multiple"}},_clickToggleDeletedDatasets:function(C){return
this.toggleDeletedDatasets($(C.currentTarget).is(":checked"))},toggleDeletedDatasets:function(C){C=C!==undefined?C:false;var
D=this;D.sortedFilteredColumns().forEach(function(F,E){_.delay(function(){F.panel.toggleShowDeleted(C,false)},E*200)})},_clickToggleHiddenDatasets:function(C){return
this.toggleHiddenDatasets($(C.currentTarget).is(":checked"))},toggleHiddenDatasets:function(C){C=C!==undefined?C:false;var
D=this;D.sortedFilteredColumns().forEach(function(F,E){_.delay(function(){F.panel.toggleShowHidden(C,false)},E*200)})},_chooseOrder:function(D){var
C=$(D.currentTarget).data("order");this.sortCollection(C)},setUpBehaviors:function(){var
D=this;D._moreOptionsPopover();D.$("#search-histories").searchInput({name:"search-histories",placeholder:_l("search
histories"),onsearch:function(E){D.searchFor=E;D.filters=[function(){return
this.model.matchesAll(D.searchFor)}];D.renderColumns(0)},onclear:function(E){D.searchFor=null;D.filters=[];D.renderColumns(0)}});D.$("#search-datasets").searchInput({name:"search-datasets",placeholder:_l("search
all
datasets"),onfirstsearch:function(E){D.hdaQueue.clear();D.$("#search-datasets").searchInput("toggle-loading");D.searchFor=E;D.sortedFilteredColumns().forEach(function(F){F.panel.searchItems(E);D.queueHdaFetchDetails(F)});D.hdaQueue.progress(function(F){D.renderInfo([_l("searching"),(F.curr+1),_l("of"),F.total].join("
"))});D.hdaQueue.deferred.done(function(){D.renderInfo("");D.$("#search-datasets").searchInput("toggle-loading")})},onsearch:function(E){D.searchFor=E;D.sortedFilteredColumns().forEach(function(F){F.panel.searchItems(E)})},onclear:function(E){D.searchFor=null;D.sortedFilteredColumns().forEach(function(F){F.panel.clearSearch()})}});$(window).resize(function(){D._recalcFirstColumnHeight()});var
C=_.debounce(_.bind(this.checkColumnsInView,this),100);this.$(".middle").parent().scroll(C)},_moreOptionsPopover:function(){return
this.$(".open-more-options.btn").popover({container:".header",placement:"bottom",html:true,content:$(this.optionsPopoverTemplate(this))})},_recalcFirstColumnHeight:function(){var
C=this.$(".history-column").first(),E=this.$(".middle").height(),D=C.find(".panel-controls").height();C.height(E).find(".inner").height(E-D)},_viewport:function(){var
C=this.$(".middle").parent().offset().left;return{left:C,right:C+this.$(".middle").parent().width()}},columnsInView:function(){var
C=this._viewport();return this.sortedFilteredColumns().filter(function(D){return
D.currentHistory||D.inView(C.left,C.right)})},checkColumnsInView:function(){this.columnsInView().forEach(function(C){C.trigger("in-view",C)})},currentColumnDropTargetOn:function(){var
C=this.columnMap[this.currentHistoryId];if(!C){return}C.panel.dataDropped=function(D){};C.panel.dropTargetOn()},currentColumnDropTargetOff:function(){var
C=this.columnMap[this.currentHistoryId];if(!C){return}C.panel.dataDropped=l.HistoryPanelEdit.prototype.dataDrop;C.panel.dropTarget=false;C.panel.$(".history-drop-target").remove()},toString:function(){return"MultiPanelColumns("+(this.columns?this.columns.length:0)+")"},mainTemplate:_.template(['<div
class="header flex-column-container">','<div
class="control-column control-column-left flex-column">','<button
class="done btn btn-default"
tabindex="1">',_l("Done"),"</button>",'<div
id="search-histories"
class="search-control"></div>','<div
id="search-datasets"
class="search-control"></div>','<a
class="open-more-options btn btn-default"
tabindex="3">','<span class="fa
fa-ellipsis-h"></span>',"</a>","</div>",'<div
class="control-column control-column-center flex-column">','<div
class="header-info">',"</div>","</div>",'<div
class="control-column control-column-right flex-column">','<button
class="create-new btn btn-default"
tabindex="4">',_l("Create new"),"</button>
","</div>","</div>",'<div
class="outer-middle flex-row flex-row-container">','<div
class="middle flex-column-container
flex-row"></div>',"</div>",'<div
class="footer
flex-column-container">',"</div>"].join(""),{variable:"view"}),optionsPopoverTemplate:_.template(['<div
class="more-options">','<div class="order
btn-group">','<button type="button" class="btn
btn-default dropdown-toggle" data-toggle="dropdown">',_l("Order
histories by")+" ",'<span class="current-order"><%=
view.sortOrders[ view.order ].text %></span> ','<span
class="caret"></span>',"</button>",'<ul
class="dropdown-menu" role="menu">',"<% _.each(
view.sortOrders, function( order, key ){ %>",'<li><a
href="javascript:void(0);" class="set-order" data-order="<%=
key %>">',"<%= order.text
%>","</a></li>","<% });
%>","</ul>","</div>",'<div
class="checkbox"><label><input id="include-deleted"
type="checkbox"','<%= view.collection.includeDeleted? "
checked" : "" %>>',_l("Include deleted
histories"),"</label></div>","<hr
/>",'<div class="checkbox"><label><input
id="toggle-deleted" type="checkbox">',_l("Include deleted
datasets"),"</label></div>",'<div
class="checkbox"><label><input id="toggle-hidden"
type="checkbox">',_l("Include hidden
datasets"),"</label></div>","</div>"].join(""),{variable:"view"})});return{MultiPanelColumns:m}});
\ No newline at end of file
https://bitbucket.org/galaxy/galaxy-central/commits/707c4d4eecb4/
Changeset: 707c4d4eecb4
Branch: release_15.03
User: dannon
Date: 2015-03-04 14:23:38+00:00
Summary: Update .gitignore to include run_api_tests.html
Affected #: 1 file
diff -r 9c3593e5bfbf690f12e445562e0f8df7061cc776 -r
707c4d4eecb47220b4684aac767b2f26683e2b32 .gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -85,6 +85,7 @@
# Test output
test-data-cache
run_functional_tests.html
+run_api_tests.html
test/tool_shed/tmp/*
.coverage
htmlcov
https://bitbucket.org/galaxy/galaxy-central/commits/3b52d89d37da/
Changeset: 3b52d89d37da
Branch: release_15.03
User: carlfeberhard
Date: 2015-03-04 18:13:29+00:00
Summary: Fix: in multi-history order properly instantiate Dates for comparison and
handle variadic better
Affected #: 3 files
diff -r 707c4d4eecb47220b4684aac767b2f26683e2b32 -r
3b52d89d37da33fc4b7cd050b914021eddd805f3 client/galaxy/scripts/mvc/history/multi-panel.js
--- a/client/galaxy/scripts/mvc/history/multi-panel.js
+++ b/client/galaxy/scripts/mvc/history/multi-panel.js
@@ -439,7 +439,7 @@
// default
update : {
text: _l( 'most recent first' ),
- fn: _comparator( function( h ){ return Date( h.get( 'update_time'
) ); }, { asc : false })
+ fn: _comparator( function( h ){ return new Date( h.get(
'update_time' ) ); }, { asc : false })
},
'name' : {
text: _l( 'name, a to z' ),
@@ -542,6 +542,7 @@
* (sorting the collection will re-render the panel)
*/
sortCollection : function( order, options ){
+ order = !_.isUndefined( order )? order : this.order;
if( !( order in this.sortOrders ) ){
order = 'update';
}
diff -r 707c4d4eecb47220b4684aac767b2f26683e2b32 -r
3b52d89d37da33fc4b7cd050b914021eddd805f3 static/scripts/mvc/history/multi-panel.js
--- a/static/scripts/mvc/history/multi-panel.js
+++ b/static/scripts/mvc/history/multi-panel.js
@@ -439,7 +439,7 @@
// default
update : {
text: _l( 'most recent first' ),
- fn: _comparator( function( h ){ return Date( h.get( 'update_time'
) ); }, { asc : false })
+ fn: _comparator( function( h ){ return new Date( h.get(
'update_time' ) ); }, { asc : false })
},
'name' : {
text: _l( 'name, a to z' ),
@@ -542,6 +542,7 @@
* (sorting the collection will re-render the panel)
*/
sortCollection : function( order, options ){
+ order = !_.isUndefined( order )? order : this.order;
if( !( order in this.sortOrders ) ){
order = 'update';
}
diff -r 707c4d4eecb47220b4684aac767b2f26683e2b32 -r
3b52d89d37da33fc4b7cd050b914021eddd805f3 static/scripts/packed/mvc/history/multi-panel.js
--- a/static/scripts/packed/mvc/history/multi-panel.js
+++ b/static/scripts/packed/mvc/history/multi-panel.js
@@ -1,1 +1,1 @@
-define(["mvc/history/history-model","mvc/history/history-panel-edit","mvc/base-mvc","utils/ajax-queue","ui/mode-button","ui/search-input"],function(d,l,z,a){function
g(I,E){E=E||{};if(!(Galaxy&&Galaxy.modal)){return I.copy()}var
F=I.get("name"),C="Copy of '"+F+"'";function
D(K){if(!K){if(!Galaxy.modal.$("#invalid-title").size()){var
J=$("<p/>").attr("id","invalid-title").css({color:"red","margin-top":"8px"}).addClass("bg-danger").text(_l("Please
enter a valid history
title"));Galaxy.modal.$(".modal-body").append(J)}return false}return
K}function G(J){var K=$('<p><span class="fa fa-spinner
fa-spin"></span> Copying
history...</p>').css("margin-top","8px");Galaxy.modal.$(".modal-body").append(K);I.copy(true,J).fail(function(){alert(_l("History
could not be copied. Please contact a Galaxy
administrator"))}).always(function(){Galaxy.modal.hide()})}function H(){var
J=Galaxy.modal.$("#copy-modal-title").val();if(!D(J)){return}G(J)}Galaxy.modal.show(_.extend({title:_l("Copying
history")+' "'+F+'"',body:$(['<label
for="copy-modal-title">',_l("Enter a title for the copied
history"),":","</label><br />",'<input
id="copy-modal-title" class="form-control" style="width:
100%" value="',C,'"
/>'].join("")),buttons:{Cancel:function(){Galaxy.modal.hide()},Copy:H}},E));$("#copy-modal-title").focus().select();$("#copy-modal-title").on("keydown",function(J){if(J.keyCode===13){H()}})}var
B=Backbone.View.extend(z.LoggableMixin).extend({tagName:"div",className:"history-column
flex-column flex-row-container",id:function
q(){if(!this.model){return""}return"history-column-"+this.model.get("id")},initialize:function
c(C){C=C||{};this.purgeAllowed=!_.isUndefined(C.purgeAllowed)?C.purgeAllowed:false;this.panel=C.panel||this.createPanel(C);this.setUpListeners()},createPanel:function
u(D){D=_.extend({model:this.model,purgeAllowed:this.purgeAllowed,dragItems:true},D);var
C=new l.HistoryPanelEdit(D);C._renderEmptyMessage=this.__patch_renderEmptyMessage;return
C},__patch_renderEmptyMessage:function(E){var
D=this,F=_.chain(this.model.get("state_ids")).values().flatten().value().length,C=D.$emptyMessage(E);if(!_.isEmpty(D.hdaViews)){C.hide()}else{if(F&&!this.model.contents.length){C.empty().append($('<span
class="fa fa-spinner fa-spin"></span><i>loading
datasets...</i>')).show()}else{if(D.searchFor){C.text(D.noneFoundMsg).show()}else{C.text(D.emptyMsg).show()}}}return
C},setUpListeners:function f(){var
C=this;this.once("rendered",function(){C.trigger("rendered:initial",C)});this.setUpPanelListeners()},setUpPanelListeners:function
k(){var
C=this;this.listenTo(this.panel,{rendered:function(){C.trigger("rendered",C)}},this)},inView:function(C,D){var
F=this.$el.offset().left,E=F+this.$el.width();if(E<C){return false}if(F>D){return
false}return true},$panel:function e(){return
this.$(".history-panel")},render:function
A(D){D=(D!==undefined)?(D):("fast");var
C=this.model?this.model.toJSON():{};this.$el.html(this.template(C));this.renderPanel(D);this.setUpBehaviors();return
this},setUpBehaviors:function v(){},template:function
w(C){C=_.extend(C||{},{isCurrentHistory:this.currentHistory});return $(['<div
class="panel-controls clear
flex-row">',this.controlsLeftTemplate({history:C,view:this}),this.controlsRightTemplate({history:C,view:this}),"</div>",'<div
class="inner flex-row flex-column-container">','<div
id="history-',C.id,'" class="history-column history-panel
flex-column"></div>',"</div>"].join(""))},renderPanel:function
h(C){C=(C!==undefined)?(C):("fast");this.panel.setElement(this.$panel()).render(C);if(this.currentHistory){this.panel.$list().before(this.panel._renderDropTargetHelp())}return
this},events:{"click
.switch-to.btn":function(){this.model.setAsCurrent()},"click
.delete-history":function(){var
C=this;this.model._delete().fail(function(F,D,E){alert(_l("Could not delete the
history")+":\n"+E)}).done(function(D){C.render()})},"click
.undelete-history":function(){var
C=this;this.model.undelete().fail(function(F,D,E){alert(_l("Could not undelete the
history")+":\n"+E)}).done(function(D){C.render()})},"click
.purge-history":function(){if(confirm(_l("This will permanently remove the data.
Are you sure?"))){var
C=this;this.model.purge().fail(function(F,D,E){alert(_l("Could not purge the
history")+":\n"+E)}).done(function(D){C.render()})}},"click
.copy-history":"copy"},copy:function
s(){g(this.model)},controlsLeftTemplate:_.template(['<div
class="pull-left">',"<% if( data.history.isCurrentHistory ){
%>",'<strong class="current-label">',_l("Current
History"),"</strong>","<% } else {
%>",'<button class="switch-to btn
btn-default">',_l("Switch
to"),"</button>","<% }
%>","</div>"].join(""),{variable:"data"}),controlsRightTemplate:_.template(['<div
class="pull-right">',"<% if( !data.history.purged ){
%>",'<div class="panel-menu btn-group">','<button
type="button" class="btn btn-default dropdown-toggle"
data-toggle="dropdown">','<span
class="caret"></span>',"</button>",'<ul
class="dropdown-menu pull-right" role="menu">',"<% if(
!data.history.deleted ){ %>",'<li><a
href="javascript:void(0);"
class="copy-history">',_l("Copy"),"</a></li>",'<li><a
href="javascript:void(0);"
class="delete-history">',_l("Delete"),"</a></li>","<%
} else /* if is deleted */ { %>",'<li><a
href="javascript:void(0);"
class="undelete-history">',_l("Undelete"),"</a></li>","<%
} %>","<% if( data.view.purgeAllowed ){ %>",'<li><a
href="javascript:void(0);"
class="purge-history">',_l("Purge"),"</a></li>","<%
} %>","</ul>","</div>","<% }
%>","</div>"].join(""),{variable:"data"}),toString:function(){return"HistoryPanelColumn("+(this.panel?this.panel:"")+")"}});var
m=Backbone.View.extend(z.LoggableMixin).extend({className:"multi-panel-history",initialize:function
c(C){C=C||{};this.log(this+".init",C);this.$el.addClass(this.className);if(!C.currentHistoryId){throw
new Error(this+" requires a currentHistoryId in the
options")}this.currentHistoryId=C.currentHistoryId;this.options={columnWidth:312,borderWidth:1,columnGap:8,headerHeight:29,footerHeight:0,controlsHeight:20};this.order=C.order||"update";this._initSortOrders();this.hdaQueue=new
a.NamedAjaxQueue([],false);this.collection=null;this.setCollection(C.histories||[]);this.columnMap={};this.createColumns(C.columnOptions);this.setUpListeners()},_initSortOrders:function(){function
C(D,E){return function F(H,G,I){if(H.id===I){return -1}if(G.id===I){return
1}H=D(H);G=D(G);return
E.asc?((H===G)?(0):(H>G?1:-1)):((H===G)?(0):(H>G?-1:1))}}this.sortOrders={update:{text:_l("most
recent first"),fn:C(function(D){return
Date(D.get("update_time"))},{asc:false})},name:{text:_l("name, a to
z"),fn:C(function(D){return
D.get("name")},{asc:true})},"name-dsc":{text:_l("name, z to
a"),fn:C(function(D){return
D.get("name")},{asc:false})},size:{text:_l("size, large to
small"),fn:C(function(D){return
D.get("size")},{asc:false})},"size-dsc":{text:_l("size, small to
large"),fn:C(function(D){return D.get("size")},{asc:true})}};return
this.sortOrders},setUpListeners:function f(){},setCollection:function y(D){var
C=this;C.stopListening(C.collection);C.collection=D;C.sortCollection(C.order,{silent:true});C.setUpCollectionListeners();C.trigger("new-collection",C);return
C},setUpCollectionListeners:function(){var
C=this,D=C.collection;C.listenTo(D,{add:C.addAsCurrentColumn,"set-as-current":C.setCurrentHistory,"change:deleted
change:purged":C.handleDeletedHistory,sort:function(){C.renderColumns(0)}})},setCurrentHistory:function
p(D){var
C=this.columnMap[this.currentHistoryId];if(C){C.currentHistory=false;C.$el.height("")}this.currentHistoryId=D.id;var
E=this.columnMap[this.currentHistoryId];E.currentHistory=true;this.sortCollection();multipanel._recalcFirstColumnHeight();return
E},handleDeletedHistory:function
b(D){if(D.get("deleted")||D.get("purged")){this.log("handleDeletedHistory",this.collection.includeDeleted,D);var
C=this;column=C.columnMap[D.id];if(!column){return}if(column.model.id===this.currentHistoryId){}else{if(!C.collection.includeDeleted){C.removeColumn(column)}}}},sortCollection:function(C,D){if(!(C
in this.sortOrders)){C="update"}this.order=C;var
G=this.currentHistoryId,F=this.sortOrders[C];this.collection.comparator=function
E(I,H){return
F.fn(I,H,G)};this.$(".current-order").text(F.text);if(this.$(".more-options").is(":visible")){this.$(".open-more-options.btn").popover("show")}this.collection.sort(D);return
this.collection},create:function(C){return
this.collection.create({current:true})},createColumns:function r(D){D=D||{};var
C=this;this.columnMap={};C.collection.each(function(E,F){var
G=C.createColumn(E,D);C.columnMap[E.id]=G})},createColumn:function
t(E,C){C=_.extend({},C,{model:E,purgeAllowed:Galaxy.config.allow_user_dataset_purge});var
D=new
B(C);if(E.id===this.currentHistoryId){D.currentHistory=true}this.setUpColumnListeners(D);return
D},sortedFilteredColumns:function(C){C=C||this.filters;if(!C||!C.length){return
this.sortedColumns()}var D=this;return D.sortedColumns().filter(function(G,F){var
E=G.currentHistory||_.every(C.map(function(H){return H.call(G)}));return
E})},sortedColumns:function(){var D=this;var C=this.collection.map(function(F,E){return
D.columnMap[F.id]});return C},addColumn:function o(E,C){C=C!==undefined?C:true;var
D=this.createColumn(E);this.columnMap[E.id]=D;if(C){this.renderColumns()}return
D},addAsCurrentColumn:function o(E){var
D=this,C=this.addColumn(E,false);this.setCurrentHistory(E);C.once("rendered",function(){D.queueHdaFetch(C)});return
C},removeColumn:function
x(E,D){D=D!==undefined?D:true;this.log("removeColumn",E);if(!E){return}var
F=this,C=this.options.columnWidth+this.options.columnGap;E.$el.fadeOut("fast",function(){if(D){$(this).remove();F.$(".middle").width(F.$(".middle").width()-C);F.checkColumnsInView();F._recalcFirstColumnHeight()}F.stopListening(E.panel);F.stopListening(E);delete
F.columnMap[E.model.id];E.remove()})},setUpColumnListeners:function n(C){var
D=this;D.listenTo(C,{"in-view":D.queueHdaFetch});D.listenTo(C.panel,{"view:draggable:dragstart":function(H,F,E,G){D._dropData=JSON.parse(H.dataTransfer.getData("text"));D.currentColumnDropTargetOn()},"view:draggable:dragend":function(H,F,E,G){D._dropData=null;D.currentColumnDropTargetOff()},"droptarget:drop":function(G,H,F){var
I=D._dropData.filter(function(J){return
F.model.contents.isCopyable(J)});D._dropData=null;var E=new
a.NamedAjaxQueue();I.forEach(function(J){E.add({name:"copy-"+J.id,fn:function(){return
F.model.contents.copy(J)}})});E.start();E.done(function(J){F.model.fetch()})}})},columnMapLength:function(){return
Object.keys(this.columnMap).length},render:function
A(D){D=D!==undefined?D:this.fxSpeed;var
C=this;C.log(C+".render");C.$el.html(C.mainTemplate(C));C.renderColumns(D);C.setUpBehaviors();C.trigger("rendered",C);return
C},renderColumns:function j(F){F=F!==undefined?F:this.fxSpeed;var
E=this,C=E.sortedFilteredColumns();E.$(".middle").width(C.length*(this.options.columnWidth+this.options.columnGap)+this.options.columnGap+16);var
D=E.$(".middle");D.empty();C.forEach(function(H,G){H.$el.appendTo(D);H.delegateEvents();E.renderColumn(H,F)});if(this.searchFor&&C.length<=1){}else{E.checkColumnsInView();this._recalcFirstColumnHeight()}return
C},renderColumn:function(C,D){D=D!==undefined?D:this.fxSpeed;return
C.render(D)},queueHdaFetch:function
i(E){if(E.model.contents.length===0&&!E.model.get("empty")){var
C={},D=_.values(E.panel.storage.get("expandedIds")).join();if(D){C.dataset_details=D}this.hdaQueue.add({name:E.model.id,fn:function(){var
F=E.model.contents.fetch({data:C,silent:true});return
F.done(function(G){E.panel.renderItems()})}});if(!this.hdaQueue.running){this.hdaQueue.start()}}},queueHdaFetchDetails:function(C){if((C.model.contents.length===0&&!C.model.get("empty"))||(!C.model.contents.haveDetails())){this.hdaQueue.add({name:C.model.id,fn:function(){var
D=C.model.contents.fetch({data:{details:"all"},silent:true});return
D.done(function(E){C.panel.renderItems()})}});if(!this.hdaQueue.running){this.hdaQueue.start()}}},renderInfo:function(C){return
this.$(".header .header-info").text(C)},events:{"click
.done.btn":"close","click
.create-new.btn":"create","click
#include-deleted":"_clickToggleDeletedHistories","click .order
.set-order":"_chooseOrder","click
#toggle-deleted":"_clickToggleDeletedDatasets","click
#toggle-hidden":"_clickToggleHiddenDatasets"},close:function(D){var
C="/";if(Galaxy&&Galaxy.options&&Galaxy.options.root){C=Galaxy.options.root}else{if(galaxy_config&&galaxy_config.root){C=galaxy_config.root}}window.location=C},_clickToggleDeletedHistories:function(C){return
this.toggleDeletedHistories($(C.currentTarget).is(":checked"))},toggleDeletedHistories:function(C){if(C){window.location=Galaxy.options.root+"history/view_multiple?include_deleted_histories=True"}else{window.location=Galaxy.options.root+"history/view_multiple"}},_clickToggleDeletedDatasets:function(C){return
this.toggleDeletedDatasets($(C.currentTarget).is(":checked"))},toggleDeletedDatasets:function(C){C=C!==undefined?C:false;var
D=this;D.sortedFilteredColumns().forEach(function(F,E){_.delay(function(){F.panel.toggleShowDeleted(C,false)},E*200)})},_clickToggleHiddenDatasets:function(C){return
this.toggleHiddenDatasets($(C.currentTarget).is(":checked"))},toggleHiddenDatasets:function(C){C=C!==undefined?C:false;var
D=this;D.sortedFilteredColumns().forEach(function(F,E){_.delay(function(){F.panel.toggleShowHidden(C,false)},E*200)})},_chooseOrder:function(D){var
C=$(D.currentTarget).data("order");this.sortCollection(C)},setUpBehaviors:function(){var
D=this;D._moreOptionsPopover();D.$("#search-histories").searchInput({name:"search-histories",placeholder:_l("search
histories"),onsearch:function(E){D.searchFor=E;D.filters=[function(){return
this.model.matchesAll(D.searchFor)}];D.renderColumns(0)},onclear:function(E){D.searchFor=null;D.filters=[];D.renderColumns(0)}});D.$("#search-datasets").searchInput({name:"search-datasets",placeholder:_l("search
all
datasets"),onfirstsearch:function(E){D.hdaQueue.clear();D.$("#search-datasets").searchInput("toggle-loading");D.searchFor=E;D.sortedFilteredColumns().forEach(function(F){F.panel.searchItems(E);D.queueHdaFetchDetails(F)});D.hdaQueue.progress(function(F){D.renderInfo([_l("searching"),(F.curr+1),_l("of"),F.total].join("
"))});D.hdaQueue.deferred.done(function(){D.renderInfo("");D.$("#search-datasets").searchInput("toggle-loading")})},onsearch:function(E){D.searchFor=E;D.sortedFilteredColumns().forEach(function(F){F.panel.searchItems(E)})},onclear:function(E){D.searchFor=null;D.sortedFilteredColumns().forEach(function(F){F.panel.clearSearch()})}});$(window).resize(function(){D._recalcFirstColumnHeight()});var
C=_.debounce(_.bind(this.checkColumnsInView,this),100);this.$(".middle").parent().scroll(C)},_moreOptionsPopover:function(){return
this.$(".open-more-options.btn").popover({container:".header",placement:"bottom",html:true,content:$(this.optionsPopoverTemplate(this))})},_recalcFirstColumnHeight:function(){var
C=this.$(".history-column").first(),E=this.$(".middle").height(),D=C.find(".panel-controls").height();C.height(E).find(".inner").height(E-D)},_viewport:function(){var
C=this.$(".middle").parent().offset().left;return{left:C,right:C+this.$(".middle").parent().width()}},columnsInView:function(){var
C=this._viewport();return this.sortedFilteredColumns().filter(function(D){return
D.currentHistory||D.inView(C.left,C.right)})},checkColumnsInView:function(){this.columnsInView().forEach(function(C){C.trigger("in-view",C)})},currentColumnDropTargetOn:function(){var
C=this.columnMap[this.currentHistoryId];if(!C){return}C.panel.dataDropped=function(D){};C.panel.dropTargetOn()},currentColumnDropTargetOff:function(){var
C=this.columnMap[this.currentHistoryId];if(!C){return}C.panel.dataDropped=l.HistoryPanelEdit.prototype.dataDrop;C.panel.dropTarget=false;C.panel.$(".history-drop-target").remove()},toString:function(){return"MultiPanelColumns("+(this.columns?this.columns.length:0)+")"},mainTemplate:_.template(['<div
class="header flex-column-container">','<div
class="control-column control-column-left flex-column">','<button
class="done btn btn-default"
tabindex="1">',_l("Done"),"</button>",'<div
id="search-histories"
class="search-control"></div>','<div
id="search-datasets"
class="search-control"></div>','<a
class="open-more-options btn btn-default"
tabindex="3">','<span class="fa
fa-ellipsis-h"></span>',"</a>","</div>",'<div
class="control-column control-column-center flex-column">','<div
class="header-info">',"</div>","</div>",'<div
class="control-column control-column-right flex-column">','<button
class="create-new btn btn-default"
tabindex="4">',_l("Create new"),"</button>
","</div>","</div>",'<div
class="outer-middle flex-row flex-row-container">','<div
class="middle flex-column-container
flex-row"></div>',"</div>",'<div
class="footer
flex-column-container">',"</div>"].join(""),{variable:"view"}),optionsPopoverTemplate:_.template(['<div
class="more-options">','<div class="order
btn-group">','<button type="button" class="btn
btn-default dropdown-toggle" data-toggle="dropdown">',_l("Order
histories by")+" ",'<span class="current-order"><%=
view.sortOrders[ view.order ].text %></span> ','<span
class="caret"></span>',"</button>",'<ul
class="dropdown-menu" role="menu">',"<% _.each(
view.sortOrders, function( order, key ){ %>",'<li><a
href="javascript:void(0);" class="set-order" data-order="<%=
key %>">',"<%= order.text
%>","</a></li>","<% });
%>","</ul>","</div>",'<div
class="checkbox"><label><input id="include-deleted"
type="checkbox"','<%= view.collection.includeDeleted? "
checked" : "" %>>',_l("Include deleted
histories"),"</label></div>","<hr
/>",'<div class="checkbox"><label><input
id="toggle-deleted" type="checkbox">',_l("Include deleted
datasets"),"</label></div>",'<div
class="checkbox"><label><input id="toggle-hidden"
type="checkbox">',_l("Include hidden
datasets"),"</label></div>","</div>"].join(""),{variable:"view"})});return{MultiPanelColumns:m}});
\ No newline at end of file
+define(["mvc/history/history-model","mvc/history/history-panel-edit","mvc/base-mvc","utils/ajax-queue","ui/mode-button","ui/search-input"],function(d,l,z,a){function
g(I,E){E=E||{};if(!(Galaxy&&Galaxy.modal)){return I.copy()}var
F=I.get("name"),C="Copy of '"+F+"'";function
D(K){if(!K){if(!Galaxy.modal.$("#invalid-title").size()){var
J=$("<p/>").attr("id","invalid-title").css({color:"red","margin-top":"8px"}).addClass("bg-danger").text(_l("Please
enter a valid history
title"));Galaxy.modal.$(".modal-body").append(J)}return false}return
K}function G(J){var K=$('<p><span class="fa fa-spinner
fa-spin"></span> Copying
history...</p>').css("margin-top","8px");Galaxy.modal.$(".modal-body").append(K);I.copy(true,J).fail(function(){alert(_l("History
could not be copied. Please contact a Galaxy
administrator"))}).always(function(){Galaxy.modal.hide()})}function H(){var
J=Galaxy.modal.$("#copy-modal-title").val();if(!D(J)){return}G(J)}Galaxy.modal.show(_.extend({title:_l("Copying
history")+' "'+F+'"',body:$(['<label
for="copy-modal-title">',_l("Enter a title for the copied
history"),":","</label><br />",'<input
id="copy-modal-title" class="form-control" style="width:
100%" value="',C,'"
/>'].join("")),buttons:{Cancel:function(){Galaxy.modal.hide()},Copy:H}},E));$("#copy-modal-title").focus().select();$("#copy-modal-title").on("keydown",function(J){if(J.keyCode===13){H()}})}var
B=Backbone.View.extend(z.LoggableMixin).extend({tagName:"div",className:"history-column
flex-column flex-row-container",id:function
q(){if(!this.model){return""}return"history-column-"+this.model.get("id")},initialize:function
c(C){C=C||{};this.purgeAllowed=!_.isUndefined(C.purgeAllowed)?C.purgeAllowed:false;this.panel=C.panel||this.createPanel(C);this.setUpListeners()},createPanel:function
u(D){D=_.extend({model:this.model,purgeAllowed:this.purgeAllowed,dragItems:true},D);var
C=new l.HistoryPanelEdit(D);C._renderEmptyMessage=this.__patch_renderEmptyMessage;return
C},__patch_renderEmptyMessage:function(E){var
D=this,F=_.chain(this.model.get("state_ids")).values().flatten().value().length,C=D.$emptyMessage(E);if(!_.isEmpty(D.hdaViews)){C.hide()}else{if(F&&!this.model.contents.length){C.empty().append($('<span
class="fa fa-spinner fa-spin"></span><i>loading
datasets...</i>')).show()}else{if(D.searchFor){C.text(D.noneFoundMsg).show()}else{C.text(D.emptyMsg).show()}}}return
C},setUpListeners:function f(){var
C=this;this.once("rendered",function(){C.trigger("rendered:initial",C)});this.setUpPanelListeners()},setUpPanelListeners:function
k(){var
C=this;this.listenTo(this.panel,{rendered:function(){C.trigger("rendered",C)}},this)},inView:function(C,D){var
F=this.$el.offset().left,E=F+this.$el.width();if(E<C){return false}if(F>D){return
false}return true},$panel:function e(){return
this.$(".history-panel")},render:function
A(D){D=(D!==undefined)?(D):("fast");var
C=this.model?this.model.toJSON():{};this.$el.html(this.template(C));this.renderPanel(D);this.setUpBehaviors();return
this},setUpBehaviors:function v(){},template:function
w(C){C=_.extend(C||{},{isCurrentHistory:this.currentHistory});return $(['<div
class="panel-controls clear
flex-row">',this.controlsLeftTemplate({history:C,view:this}),this.controlsRightTemplate({history:C,view:this}),"</div>",'<div
class="inner flex-row flex-column-container">','<div
id="history-',C.id,'" class="history-column history-panel
flex-column"></div>',"</div>"].join(""))},renderPanel:function
h(C){C=(C!==undefined)?(C):("fast");this.panel.setElement(this.$panel()).render(C);if(this.currentHistory){this.panel.$list().before(this.panel._renderDropTargetHelp())}return
this},events:{"click
.switch-to.btn":function(){this.model.setAsCurrent()},"click
.delete-history":function(){var
C=this;this.model._delete().fail(function(F,D,E){alert(_l("Could not delete the
history")+":\n"+E)}).done(function(D){C.render()})},"click
.undelete-history":function(){var
C=this;this.model.undelete().fail(function(F,D,E){alert(_l("Could not undelete the
history")+":\n"+E)}).done(function(D){C.render()})},"click
.purge-history":function(){if(confirm(_l("This will permanently remove the data.
Are you sure?"))){var
C=this;this.model.purge().fail(function(F,D,E){alert(_l("Could not purge the
history")+":\n"+E)}).done(function(D){C.render()})}},"click
.copy-history":"copy"},copy:function
s(){g(this.model)},controlsLeftTemplate:_.template(['<div
class="pull-left">',"<% if( data.history.isCurrentHistory ){
%>",'<strong class="current-label">',_l("Current
History"),"</strong>","<% } else {
%>",'<button class="switch-to btn
btn-default">',_l("Switch
to"),"</button>","<% }
%>","</div>"].join(""),{variable:"data"}),controlsRightTemplate:_.template(['<div
class="pull-right">',"<% if( !data.history.purged ){
%>",'<div class="panel-menu btn-group">','<button
type="button" class="btn btn-default dropdown-toggle"
data-toggle="dropdown">','<span
class="caret"></span>',"</button>",'<ul
class="dropdown-menu pull-right" role="menu">',"<% if(
!data.history.deleted ){ %>",'<li><a
href="javascript:void(0);"
class="copy-history">',_l("Copy"),"</a></li>",'<li><a
href="javascript:void(0);"
class="delete-history">',_l("Delete"),"</a></li>","<%
} else /* if is deleted */ { %>",'<li><a
href="javascript:void(0);"
class="undelete-history">',_l("Undelete"),"</a></li>","<%
} %>","<% if( data.view.purgeAllowed ){ %>",'<li><a
href="javascript:void(0);"
class="purge-history">',_l("Purge"),"</a></li>","<%
} %>","</ul>","</div>","<% }
%>","</div>"].join(""),{variable:"data"}),toString:function(){return"HistoryPanelColumn("+(this.panel?this.panel:"")+")"}});var
m=Backbone.View.extend(z.LoggableMixin).extend({className:"multi-panel-history",initialize:function
c(C){C=C||{};this.log(this+".init",C);this.$el.addClass(this.className);if(!C.currentHistoryId){throw
new Error(this+" requires a currentHistoryId in the
options")}this.currentHistoryId=C.currentHistoryId;this.options={columnWidth:312,borderWidth:1,columnGap:8,headerHeight:29,footerHeight:0,controlsHeight:20};this.order=C.order||"update";this._initSortOrders();this.hdaQueue=new
a.NamedAjaxQueue([],false);this.collection=null;this.setCollection(C.histories||[]);this.columnMap={};this.createColumns(C.columnOptions);this.setUpListeners()},_initSortOrders:function(){function
C(D,E){return function F(H,G,I){if(H.id===I){return -1}if(G.id===I){return
1}H=D(H);G=D(G);return
E.asc?((H===G)?(0):(H>G?1:-1)):((H===G)?(0):(H>G?-1:1))}}this.sortOrders={update:{text:_l("most
recent first"),fn:C(function(D){return new
Date(D.get("update_time"))},{asc:false})},name:{text:_l("name, a to
z"),fn:C(function(D){return
D.get("name")},{asc:true})},"name-dsc":{text:_l("name, z to
a"),fn:C(function(D){return
D.get("name")},{asc:false})},size:{text:_l("size, large to
small"),fn:C(function(D){return
D.get("size")},{asc:false})},"size-dsc":{text:_l("size, small to
large"),fn:C(function(D){return D.get("size")},{asc:true})}};return
this.sortOrders},setUpListeners:function f(){},setCollection:function y(D){var
C=this;C.stopListening(C.collection);C.collection=D;C.sortCollection(C.order,{silent:true});C.setUpCollectionListeners();C.trigger("new-collection",C);return
C},setUpCollectionListeners:function(){var
C=this,D=C.collection;C.listenTo(D,{add:C.addAsCurrentColumn,"set-as-current":C.setCurrentHistory,"change:deleted
change:purged":C.handleDeletedHistory,sort:function(){C.renderColumns(0)}})},setCurrentHistory:function
p(D){var
C=this.columnMap[this.currentHistoryId];if(C){C.currentHistory=false;C.$el.height("")}this.currentHistoryId=D.id;var
E=this.columnMap[this.currentHistoryId];E.currentHistory=true;this.sortCollection();multipanel._recalcFirstColumnHeight();return
E},handleDeletedHistory:function
b(D){if(D.get("deleted")||D.get("purged")){this.log("handleDeletedHistory",this.collection.includeDeleted,D);var
C=this;column=C.columnMap[D.id];if(!column){return}if(column.model.id===this.currentHistoryId){}else{if(!C.collection.includeDeleted){C.removeColumn(column)}}}},sortCollection:function(C,D){C=!_.isUndefined(C)?C:this.order;if(!(C
in this.sortOrders)){C="update"}this.order=C;var
G=this.currentHistoryId,F=this.sortOrders[C];this.collection.comparator=function
E(I,H){return
F.fn(I,H,G)};this.$(".current-order").text(F.text);if(this.$(".more-options").is(":visible")){this.$(".open-more-options.btn").popover("show")}this.collection.sort(D);return
this.collection},create:function(C){return
this.collection.create({current:true})},createColumns:function r(D){D=D||{};var
C=this;this.columnMap={};C.collection.each(function(E,F){var
G=C.createColumn(E,D);C.columnMap[E.id]=G})},createColumn:function
t(E,C){C=_.extend({},C,{model:E,purgeAllowed:Galaxy.config.allow_user_dataset_purge});var
D=new
B(C);if(E.id===this.currentHistoryId){D.currentHistory=true}this.setUpColumnListeners(D);return
D},sortedFilteredColumns:function(C){C=C||this.filters;if(!C||!C.length){return
this.sortedColumns()}var D=this;return D.sortedColumns().filter(function(G,F){var
E=G.currentHistory||_.every(C.map(function(H){return H.call(G)}));return
E})},sortedColumns:function(){var D=this;var C=this.collection.map(function(F,E){return
D.columnMap[F.id]});return C},addColumn:function o(E,C){C=C!==undefined?C:true;var
D=this.createColumn(E);this.columnMap[E.id]=D;if(C){this.renderColumns()}return
D},addAsCurrentColumn:function o(E){var
D=this,C=this.addColumn(E,false);this.setCurrentHistory(E);C.once("rendered",function(){D.queueHdaFetch(C)});return
C},removeColumn:function
x(E,D){D=D!==undefined?D:true;this.log("removeColumn",E);if(!E){return}var
F=this,C=this.options.columnWidth+this.options.columnGap;E.$el.fadeOut("fast",function(){if(D){$(this).remove();F.$(".middle").width(F.$(".middle").width()-C);F.checkColumnsInView();F._recalcFirstColumnHeight()}F.stopListening(E.panel);F.stopListening(E);delete
F.columnMap[E.model.id];E.remove()})},setUpColumnListeners:function n(C){var
D=this;D.listenTo(C,{"in-view":D.queueHdaFetch});D.listenTo(C.panel,{"view:draggable:dragstart":function(H,F,E,G){D._dropData=JSON.parse(H.dataTransfer.getData("text"));D.currentColumnDropTargetOn()},"view:draggable:dragend":function(H,F,E,G){D._dropData=null;D.currentColumnDropTargetOff()},"droptarget:drop":function(G,H,F){var
I=D._dropData.filter(function(J){return
F.model.contents.isCopyable(J)});D._dropData=null;var E=new
a.NamedAjaxQueue();I.forEach(function(J){E.add({name:"copy-"+J.id,fn:function(){return
F.model.contents.copy(J)}})});E.start();E.done(function(J){F.model.fetch()})}})},columnMapLength:function(){return
Object.keys(this.columnMap).length},render:function
A(D){D=D!==undefined?D:this.fxSpeed;var
C=this;C.log(C+".render");C.$el.html(C.mainTemplate(C));C.renderColumns(D);C.setUpBehaviors();C.trigger("rendered",C);return
C},renderColumns:function j(F){F=F!==undefined?F:this.fxSpeed;var
E=this,C=E.sortedFilteredColumns();E.$(".middle").width(C.length*(this.options.columnWidth+this.options.columnGap)+this.options.columnGap+16);var
D=E.$(".middle");D.empty();C.forEach(function(H,G){H.$el.appendTo(D);H.delegateEvents();E.renderColumn(H,F)});if(this.searchFor&&C.length<=1){}else{E.checkColumnsInView();this._recalcFirstColumnHeight()}return
C},renderColumn:function(C,D){D=D!==undefined?D:this.fxSpeed;return
C.render(D)},queueHdaFetch:function
i(E){if(E.model.contents.length===0&&!E.model.get("empty")){var
C={},D=_.values(E.panel.storage.get("expandedIds")).join();if(D){C.dataset_details=D}this.hdaQueue.add({name:E.model.id,fn:function(){var
F=E.model.contents.fetch({data:C,silent:true});return
F.done(function(G){E.panel.renderItems()})}});if(!this.hdaQueue.running){this.hdaQueue.start()}}},queueHdaFetchDetails:function(C){if((C.model.contents.length===0&&!C.model.get("empty"))||(!C.model.contents.haveDetails())){this.hdaQueue.add({name:C.model.id,fn:function(){var
D=C.model.contents.fetch({data:{details:"all"},silent:true});return
D.done(function(E){C.panel.renderItems()})}});if(!this.hdaQueue.running){this.hdaQueue.start()}}},renderInfo:function(C){return
this.$(".header .header-info").text(C)},events:{"click
.done.btn":"close","click
.create-new.btn":"create","click
#include-deleted":"_clickToggleDeletedHistories","click .order
.set-order":"_chooseOrder","click
#toggle-deleted":"_clickToggleDeletedDatasets","click
#toggle-hidden":"_clickToggleHiddenDatasets"},close:function(D){var
C="/";if(Galaxy&&Galaxy.options&&Galaxy.options.root){C=Galaxy.options.root}else{if(galaxy_config&&galaxy_config.root){C=galaxy_config.root}}window.location=C},_clickToggleDeletedHistories:function(C){return
this.toggleDeletedHistories($(C.currentTarget).is(":checked"))},toggleDeletedHistories:function(C){if(C){window.location=Galaxy.options.root+"history/view_multiple?include_deleted_histories=True"}else{window.location=Galaxy.options.root+"history/view_multiple"}},_clickToggleDeletedDatasets:function(C){return
this.toggleDeletedDatasets($(C.currentTarget).is(":checked"))},toggleDeletedDatasets:function(C){C=C!==undefined?C:false;var
D=this;D.sortedFilteredColumns().forEach(function(F,E){_.delay(function(){F.panel.toggleShowDeleted(C,false)},E*200)})},_clickToggleHiddenDatasets:function(C){return
this.toggleHiddenDatasets($(C.currentTarget).is(":checked"))},toggleHiddenDatasets:function(C){C=C!==undefined?C:false;var
D=this;D.sortedFilteredColumns().forEach(function(F,E){_.delay(function(){F.panel.toggleShowHidden(C,false)},E*200)})},_chooseOrder:function(D){var
C=$(D.currentTarget).data("order");this.sortCollection(C)},setUpBehaviors:function(){var
D=this;D._moreOptionsPopover();D.$("#search-histories").searchInput({name:"search-histories",placeholder:_l("search
histories"),onsearch:function(E){D.searchFor=E;D.filters=[function(){return
this.model.matchesAll(D.searchFor)}];D.renderColumns(0)},onclear:function(E){D.searchFor=null;D.filters=[];D.renderColumns(0)}});D.$("#search-datasets").searchInput({name:"search-datasets",placeholder:_l("search
all
datasets"),onfirstsearch:function(E){D.hdaQueue.clear();D.$("#search-datasets").searchInput("toggle-loading");D.searchFor=E;D.sortedFilteredColumns().forEach(function(F){F.panel.searchItems(E);D.queueHdaFetchDetails(F)});D.hdaQueue.progress(function(F){D.renderInfo([_l("searching"),(F.curr+1),_l("of"),F.total].join("
"))});D.hdaQueue.deferred.done(function(){D.renderInfo("");D.$("#search-datasets").searchInput("toggle-loading")})},onsearch:function(E){D.searchFor=E;D.sortedFilteredColumns().forEach(function(F){F.panel.searchItems(E)})},onclear:function(E){D.searchFor=null;D.sortedFilteredColumns().forEach(function(F){F.panel.clearSearch()})}});$(window).resize(function(){D._recalcFirstColumnHeight()});var
C=_.debounce(_.bind(this.checkColumnsInView,this),100);this.$(".middle").parent().scroll(C)},_moreOptionsPopover:function(){return
this.$(".open-more-options.btn").popover({container:".header",placement:"bottom",html:true,content:$(this.optionsPopoverTemplate(this))})},_recalcFirstColumnHeight:function(){var
C=this.$(".history-column").first(),E=this.$(".middle").height(),D=C.find(".panel-controls").height();C.height(E).find(".inner").height(E-D)},_viewport:function(){var
C=this.$(".middle").parent().offset().left;return{left:C,right:C+this.$(".middle").parent().width()}},columnsInView:function(){var
C=this._viewport();return this.sortedFilteredColumns().filter(function(D){return
D.currentHistory||D.inView(C.left,C.right)})},checkColumnsInView:function(){this.columnsInView().forEach(function(C){C.trigger("in-view",C)})},currentColumnDropTargetOn:function(){var
C=this.columnMap[this.currentHistoryId];if(!C){return}C.panel.dataDropped=function(D){};C.panel.dropTargetOn()},currentColumnDropTargetOff:function(){var
C=this.columnMap[this.currentHistoryId];if(!C){return}C.panel.dataDropped=l.HistoryPanelEdit.prototype.dataDrop;C.panel.dropTarget=false;C.panel.$(".history-drop-target").remove()},toString:function(){return"MultiPanelColumns("+(this.columns?this.columns.length:0)+")"},mainTemplate:_.template(['<div
class="header flex-column-container">','<div
class="control-column control-column-left flex-column">','<button
class="done btn btn-default"
tabindex="1">',_l("Done"),"</button>",'<div
id="search-histories"
class="search-control"></div>','<div
id="search-datasets"
class="search-control"></div>','<a
class="open-more-options btn btn-default"
tabindex="3">','<span class="fa
fa-ellipsis-h"></span>',"</a>","</div>",'<div
class="control-column control-column-center flex-column">','<div
class="header-info">',"</div>","</div>",'<div
class="control-column control-column-right flex-column">','<button
class="create-new btn btn-default"
tabindex="4">',_l("Create new"),"</button>
","</div>","</div>",'<div
class="outer-middle flex-row flex-row-container">','<div
class="middle flex-column-container
flex-row"></div>',"</div>",'<div
class="footer
flex-column-container">',"</div>"].join(""),{variable:"view"}),optionsPopoverTemplate:_.template(['<div
class="more-options">','<div class="order
btn-group">','<button type="button" class="btn
btn-default dropdown-toggle" data-toggle="dropdown">',_l("Order
histories by")+" ",'<span class="current-order"><%=
view.sortOrders[ view.order ].text %></span> ','<span
class="caret"></span>',"</button>",'<ul
class="dropdown-menu" role="menu">',"<% _.each(
view.sortOrders, function( order, key ){ %>",'<li><a
href="javascript:void(0);" class="set-order" data-order="<%=
key %>">',"<%= order.text
%>","</a></li>","<% });
%>","</ul>","</div>",'<div
class="checkbox"><label><input id="include-deleted"
type="checkbox"','<%= view.collection.includeDeleted? "
checked" : "" %>>',_l("Include deleted
histories"),"</label></div>","<hr
/>",'<div class="checkbox"><label><input
id="toggle-deleted" type="checkbox">',_l("Include deleted
datasets"),"</label></div>",'<div
class="checkbox"><label><input id="toggle-hidden"
type="checkbox">',_l("Include hidden
datasets"),"</label></div>","</div>"].join(""),{variable:"view"})});return{MultiPanelColumns:m}});
\ No newline at end of file
https://bitbucket.org/galaxy/galaxy-central/commits/6124337d8780/
Changeset: 6124337d8780
Branch: release_15.03
User: jmchilton
Date: 2015-03-04 16:09:29+00:00
Summary: API fixes for tools and datatypes.
By replacing _future_expose_api_anonymous with
_future_expose_api_anonymous_and_sessionless.
Affected #: 2 files
diff -r 3b52d89d37da33fc4b7cd050b914021eddd805f3 -r
6124337d87802e35fddfe2ebe90740aaeb5b5c40 lib/galaxy/webapps/galaxy/api/datatypes.py
--- a/lib/galaxy/webapps/galaxy/api/datatypes.py
+++ b/lib/galaxy/webapps/galaxy/api/datatypes.py
@@ -2,7 +2,7 @@
API operations allowing clients to determine datatype supported by Galaxy.
"""
-from galaxy.web import _future_expose_api_anonymous as expose_api_anonymous
+from galaxy.web import _future_expose_api_anonymous_and_sessionless as
expose_api_anonymous_and_sessionless
from galaxy import exceptions
from galaxy.web.base.controller import BaseAPIController
from galaxy.util import asbool
@@ -14,7 +14,7 @@
class DatatypesController( BaseAPIController ):
- @expose_api_anonymous
+ @expose_api_anonymous_and_sessionless
def index( self, trans, **kwd ):
"""
GET /api/datatypes
@@ -47,7 +47,7 @@
else:
raise
- @expose_api_anonymous
+ @expose_api_anonymous_and_sessionless
def mapping( self, trans, **kwd ):
'''
GET /api/datatypes/mapping
@@ -81,7 +81,7 @@
else:
raise
- @expose_api_anonymous
+ @expose_api_anonymous_and_sessionless
def sniffers( self, trans, **kwd ):
'''
GET /api/datatypes/sniffers
@@ -101,7 +101,7 @@
else:
raise
- @expose_api_anonymous
+ @expose_api_anonymous_and_sessionless
def converters( self, trans, **kwd ):
converters = []
for (source_type, targets) in
self._datatypes_registry.datatype_converters.iteritems():
diff -r 3b52d89d37da33fc4b7cd050b914021eddd805f3 -r
6124337d87802e35fddfe2ebe90740aaeb5b5c40 lib/galaxy/webapps/galaxy/api/tools.py
--- a/lib/galaxy/webapps/galaxy/api/tools.py
+++ b/lib/galaxy/webapps/galaxy/api/tools.py
@@ -4,6 +4,7 @@
from galaxy import web, util
from galaxy import managers
from galaxy.web import _future_expose_api_anonymous
+from galaxy.web import _future_expose_api_anonymous_and_sessionless
from galaxy.web import _future_expose_api
from galaxy.web.base.controller import BaseAPIController
from galaxy.web.base.controller import UsesVisualizationMixin
@@ -59,7 +60,7 @@
trans.response.status = 500
return { 'error': str( exc ) }
- @_future_expose_api_anonymous
+ @_future_expose_api_anonymous_and_sessionless
def show( self, trans, id, **kwd ):
"""
GET /api/tools/{tool_id}
@@ -129,7 +130,7 @@
"guid": tool.guid,
}
- @_future_expose_api_anonymous
+ @_future_expose_api_anonymous_and_sessionless
def citations( self, trans, id, **kwds ):
tool = self._get_tool( id, user=trans.user )
rval = []
https://bitbucket.org/galaxy/galaxy-central/commits/7b106ee2dc27/
Changeset: 7b106ee2dc27
Branch: release_15.03
User: dannon
Date: 2015-03-04 23:04:00+00:00
Summary: Python 2.6 has a bug in deepcopy that causes an error when attempting to copy
datasets between users (which uses deepcopy). Py2.7 worked fine. Now they both should.
Affected #: 1 file
diff -r 6124337d87802e35fddfe2ebe90740aaeb5b5c40 -r
7b106ee2dc277160751a366ee1013502cb20b800 lib/galaxy/model/custom_types.py
--- a/lib/galaxy/model/custom_types.py
+++ b/lib/galaxy/model/custom_types.py
@@ -182,6 +182,12 @@
list.__delslice__(self, start, stop)
self.changed()
+ def __copy__(self):
+ return MutationList(MutationObj.coerce(self._key, self[:]))
+
+ def __deepcopy__(self, memo):
+ return MutationList(MutationObj.coerce(self._key, copy.deepcopy(self[:])))
+
def append(self, value):
list.append(self, MutationObj.coerce(self._key, value))
self.changed()
https://bitbucket.org/galaxy/galaxy-central/commits/1a129062e6bd/
Changeset: 1a129062e6bd
Branch: release_15.03
User: dannon
Date: 2015-03-05 18:27:22+00:00
Summary: Tweaks to the password reset email template to help email clients not mangle
it, and when they do, to suggest copying and pasting.
Affected #: 1 file
diff -r 7b106ee2dc277160751a366ee1013502cb20b800 -r
1a129062e6bd8d96c2a6bf26145743c48c210089 lib/galaxy/webapps/galaxy/controllers/user.py
--- a/lib/galaxy/webapps/galaxy/controllers/user.py
+++ b/lib/galaxy/webapps/galaxy/controllers/user.py
@@ -41,10 +41,14 @@
PASSWORD_RESET_TEMPLATE = """
To reset your Galaxy password for the instance at %s, use the following link:
- <a href="%s">%s</a>
+<a href="%s">%s</a>
If you did not make this request, no action is necessary on your part, though
-you may want to notify an administrator."""
+you may want to notify an administrator.
+
+If you're having trouble using the link when clicking it from email client, you
+can also copy and paste it into your browser.
+"""
class UserOpenIDGrid( grids.Grid ):
https://bitbucket.org/galaxy/galaxy-central/commits/a0cf1347b197/
Changeset: a0cf1347b197
Branch: release_15.03
User: dan
Date: 2015-03-05 22:02:45+00:00
Summary: Fix for displaying Tools in ToolShed that use Dynamically Generated multiple
selects as checkboxes and for displaying select lists using old-style dynamic options.
Affected #: 1 file
diff -r 1a129062e6bd8d96c2a6bf26145743c48c210089 -r
a0cf1347b197c09736e576794044d77ed0807b68
templates/webapps/tool_shed/repository/tool_form.mako
--- a/templates/webapps/tool_shed/repository/tool_form.mako
+++ b/templates/webapps/tool_shed/repository/tool_form.mako
@@ -78,18 +78,21 @@
field.add_option( param.name, param.name )
field_html = field.get_html()
elif isinstance( param, SelectToolParameter ) and hasattr( param,
'data_ref' ):
- field = SelectField( param.name, display=param.display )
+ field = SelectField( param.name, display=param.display,
multiple=param.multiple )
field.add_option( param.data_ref, param.data_ref )
field_html = field.get_html( prefix )
elif isinstance( param, SelectToolParameter ) and param.is_dynamic:
- field = SelectField( param.name, display=param.display )
+ field = SelectField( param.name, display=param.display,
multiple=param.multiple )
dynamic_options = param.options
- if dynamic_options.index_file:
- option_label = "Dynamically generated from entries in file
%s" % str( dynamic_options.index_file )
- field.add_option( option_label, "none" )
- elif dynamic_options.missing_index_file:
- option_label = "Dynamically generated from entries in
missing file %s" % str( dynamic_options.missing_index_file )
- field.add_option( option_label, "none" )
+ if dynamic_options is not None:
+ if dynamic_options.index_file:
+ option_label = "Dynamically generated from entries in
file %s" % str( dynamic_options.index_file )
+ field.add_option( option_label, "none" )
+ elif dynamic_options.missing_index_file:
+ option_label = "Dynamically generated from entries in
missing file %s" % str( dynamic_options.missing_index_file )
+ field.add_option( option_label, "none" )
+ else:
+ field.add_option( "Dynamically generated from old-style
Dynamic Options.", "none" )
field_html = field.get_html( prefix )
else:
field = param.get_html_field( trans, None, other_values )
https://bitbucket.org/galaxy/galaxy-central/commits/7a76c46e4764/
Changeset: 7a76c46e4764
Branch: release_15.03
User: guerler
Date: 2015-03-06 03:15:21+00:00
Summary: Fix dataset and collection mapping for re-run in imported histories
Affected #: 1 file
diff -r a0cf1347b197c09736e576794044d77ed0807b68 -r
7a76c46e47640720982cc8b725731977de13d407 lib/galaxy/tools/__init__.py
--- a/lib/galaxy/tools/__init__.py
+++ b/lib/galaxy/tools/__init__.py
@@ -34,10 +34,10 @@
from galaxy.tools.actions.data_source import DataSourceToolAction
from galaxy.tools.actions.data_manager import DataManagerToolAction
from galaxy.tools.deps import build_dependency_manager
-from galaxy.tools.parameters import params_to_incoming, check_param, params_from_strings,
params_to_strings
+from galaxy.tools.parameters import params_to_incoming, check_param, params_from_strings,
params_to_strings, visit_input_values
from galaxy.tools.parameters import output_collect
from galaxy.tools.parameters.basic import (BaseURLToolParameter,
- DataToolParameter, HiddenToolParameter,
LibraryDatasetToolParameter,
+ DataToolParameter,
DataCollectionToolParameter, HiddenToolParameter, LibraryDatasetToolParameter,
SelectToolParameter, ToolParameter,
UnvalidatedValue,
IntegerToolParameter, FloatToolParameter)
from galaxy.tools.parameters.grouping import Conditional, ConditionalWhen, Repeat,
UploadDataset
@@ -52,7 +52,7 @@
from galaxy.tools.parameters.meta import expand_meta_parameters
from galaxy.util.bunch import Bunch
from galaxy.util.expressions import ExpressionContext
-from galaxy.util.hash_util import hmac_new
+from galaxy.util.hash_util import hmac_new, is_hashable
from galaxy.util.odict import odict
from galaxy.util.template import fill_template
from galaxy.web import url_for
@@ -2291,6 +2291,7 @@
try:
job_params = job.get_param_values( trans.app, ignore_errors = True )
job_messages = self.check_and_update_param_values( job_params, trans,
update_values=False )
+ self._map_source_to_history( trans, self.inputs, job_params )
tool_message = self._compare_tool_version(trans, job)
params_to_incoming( kwd, self.inputs, job_params, trans.app,
to_html=False )
except Exception, exception:
@@ -2564,6 +2565,59 @@
# return enriched tool model
return tool_model
+ def _map_source_to_history(self, trans, tool_inputs, params):
+ # Need to remap dataset parameters. Job parameters point to original
+ # dataset used; parameter should be the analygous dataset in the
+ # current history.
+ history = trans.get_history()
+ hda_source_dict = {} # Mapping from HDA in history to source HDAs.
+ for hda in history.datasets:
+ source_hda = hda.copied_from_history_dataset_association
+ while source_hda:#should this check library datasets as well?
+ #FIXME: could be multiple copies of a hda in a single history, this does
a better job of matching on cloned histories,
+ #but is still less than perfect when eg individual datasets are copied
between histories
+ if source_hda not in hda_source_dict or source_hda.hid == hda.hid:
+ hda_source_dict[ source_hda ] = hda
+ source_hda = source_hda.copied_from_history_dataset_association
+
+ # Ditto for dataset collections.
+ hdca_source_dict = {}
+ for hdca in history.dataset_collections:
+ source_hdca = hdca.copied_from_history_dataset_collection_association
+ while source_hdca:
+ if source_hdca not in hdca_source_dict or source_hdca.hid == hdca.hid:
+ hdca_source_dict[ source_hdca ] = hdca
+ source_hdca =
source_hdca.copied_from_history_dataset_collection_association
+
+ # Unpack unvalidated values to strings, they'll be validated when the
+ # form is submitted (this happens when re-running a job that was
+ # initially run by a workflow)
+ #This needs to be done recursively through grouping parameters
+ def rerun_callback( input, value, prefixed_name, prefixed_label ):
+ if isinstance( value, UnvalidatedValue ):
+ try:
+ return input.to_html_value( value.value, trans.app )
+ except Exception, e:
+ # Need to determine when (if ever) the to_html_value call could
fail.
+ log.debug( "Failed to use input.to_html_value to determine value
of unvalidated parameter, defaulting to string: %s" % ( e ) )
+ return str( value )
+ if isinstance( input, DataToolParameter ):
+ if isinstance(value,list):
+ values = []
+ for val in value:
+ if is_hashable( val ):
+ if val in history.datasets:
+ values.append( val )
+ elif val in hda_source_dict:
+ values.append( hda_source_dict[ val ])
+ return values
+ if is_hashable( value ) and value not in history.datasets and value in
hda_source_dict:
+ return hda_source_dict[ value ]
+ elif isinstance( input, DataCollectionToolParameter ):
+ if is_hashable( value ) and value not in history.dataset_collections and
value in hdca_source_dict:
+ return hdca_source_dict[ value ]
+ visit_input_values( tool_inputs, params, rerun_callback )
+
def _compare_tool_version( self, trans, job ):
"""
Compares a tool version with the tool version from a job (from ToolRunner).
https://bitbucket.org/galaxy/galaxy-central/commits/e1bc85412c91/
Changeset: e1bc85412c91
Branch: release_15.03
User: dan
Date: 2015-03-06 19:18:48+00:00
Summary: Make api/config /version usable as sessionless in addition to anonymous.
Affected #: 1 file
diff -r 7a76c46e47640720982cc8b725731977de13d407 -r
e1bc85412c91461a6a72b22b16bf88aca1d356d5 lib/galaxy/webapps/galaxy/api/configuration.py
--- a/lib/galaxy/webapps/galaxy/api/configuration.py
+++ b/lib/galaxy/webapps/galaxy/api/configuration.py
@@ -3,7 +3,7 @@
and configuration settings.
"""
-from galaxy.web import _future_expose_api_anonymous as expose_api_anonymous
+from galaxy.web import _future_expose_api_anonymous_and_sessionless as
expose_api_anonymous_and_sessionless
from galaxy.web import _future_expose_api as expose_api
from galaxy.web import require_admin
from galaxy.web.base.controller import BaseAPIController
@@ -21,7 +21,7 @@
self.config_serializer = ConfigSerializer( app )
self.admin_config_serializer = AdminConfigSerializer( app )
- @expose_api_anonymous
+ @expose_api_anonymous_and_sessionless
def index( self, trans, **kwd ):
"""
GET /api/configuration
@@ -33,7 +33,7 @@
serialization_params = self._parse_serialization_params( kwd, 'all' )
return self.get_config_dict( trans, is_admin, **serialization_params )
- @expose_api_anonymous
+ @expose_api_anonymous_and_sessionless
def version( self, trans, **kwds ):
"""
GET /api/version
https://bitbucket.org/galaxy/galaxy-central/commits/b0c8d3454fea/
Changeset: b0c8d3454fea
Branch: release_15.03
User: guerler
Date: 2015-03-06 20:24:31+00:00
Summary: Add resume option for job dependencies
Affected #: 4 files
diff -r e1bc85412c91461a6a72b22b16bf88aca1d356d5 -r
b0c8d3454feaf41137aafcdcb5d5c78342683822
client/galaxy/scripts/mvc/tools/tools-form-base.js
--- a/client/galaxy/scripts/mvc/tools/tools-form-base.js
+++ b/client/galaxy/scripts/mvc/tools/tools-form-base.js
@@ -295,6 +295,20 @@
});
}
+ // add remap button
+ if (this.options.job_id && this.options.job_remap) {
+ options.inputs['rerun_remap_job_id'] = {
+ label : 'Resume dependencies from this job',
+ name : 'rerun_remap_job_id',
+ type : 'select',
+ display : 'radio',
+ ignore : '__ignore__',
+ value : '__ignore__',
+ options : [['Yes', this.options.job_id], ['No',
'__ignore__']],
+ help : 'The previous run of this tool failed and other
tools were waiting for it to finish successfully, use this option to resume those tools
using the outputs of this tool run.'
+ }
+ }
+
// create tool form section
this.section = new ToolSection.View(self, {
inputs : options.inputs
diff -r e1bc85412c91461a6a72b22b16bf88aca1d356d5 -r
b0c8d3454feaf41137aafcdcb5d5c78342683822 lib/galaxy/tools/__init__.py
--- a/lib/galaxy/tools/__init__.py
+++ b/lib/galaxy/tools/__init__.py
@@ -1215,7 +1215,8 @@
if 'rerun_remap_job_id' in incoming:
try:
rerun_remap_job_id = trans.app.security.decode_id( incoming[
'rerun_remap_job_id' ] )
- except Exception:
+ except Exception, exception:
+ log.error( str( exception ) )
message = 'Failure executing tool (attempting to rerun invalid
job).'
return 'message.mako', dict( status='error',
message=message, refresh_frames=[] )
@@ -2296,6 +2297,7 @@
params_to_incoming( kwd, self.inputs, job_params, trans.app,
to_html=False )
except Exception, exception:
trans.response.status = 500
+ log.error( str( exception ) )
return { 'error': str( exception ) }
# create parameter object
@@ -2555,7 +2557,8 @@
'versions' : tool_versions,
'requirements' : tool_requirements,
'errors' : state_errors,
- 'state_inputs' : state_inputs
+ 'state_inputs' : state_inputs,
+ 'job_remap' : self._get_job_remap(job)
})
# check for errors
@@ -2565,6 +2568,18 @@
# return enriched tool model
return tool_model
+ def _get_job_remap ( self, job):
+ if job:
+ if job.state == job.states.ERROR:
+ return True
+ try:
+ if [ hda.dependent_jobs for hda in [ jtod.dataset for jtod in
job.output_datasets ] if hda.dependent_jobs ]:
+ return True
+ except Exception, exception:
+ log.error( str( exception ) )
+ pass
+ return False
+
def _map_source_to_history(self, trans, tool_inputs, params):
# Need to remap dataset parameters. Job parameters point to original
# dataset used; parameter should be the analygous dataset in the
diff -r e1bc85412c91461a6a72b22b16bf88aca1d356d5 -r
b0c8d3454feaf41137aafcdcb5d5c78342683822 static/scripts/mvc/tools/tools-form-base.js
--- a/static/scripts/mvc/tools/tools-form-base.js
+++ b/static/scripts/mvc/tools/tools-form-base.js
@@ -295,6 +295,20 @@
});
}
+ // add remap button
+ if (this.options.job_id && this.options.job_remap) {
+ options.inputs['rerun_remap_job_id'] = {
+ label : 'Resume dependencies from this job',
+ name : 'rerun_remap_job_id',
+ type : 'select',
+ display : 'radio',
+ ignore : '__ignore__',
+ value : '__ignore__',
+ options : [['Yes', this.options.job_id], ['No',
'__ignore__']],
+ help : 'The previous run of this tool failed and other
tools were waiting for it to finish successfully, use this option to resume those tools
using the outputs of this tool run.'
+ }
+ }
+
// create tool form section
this.section = new ToolSection.View(self, {
inputs : options.inputs
diff -r e1bc85412c91461a6a72b22b16bf88aca1d356d5 -r
b0c8d3454feaf41137aafcdcb5d5c78342683822
static/scripts/packed/mvc/tools/tools-form-base.js
--- a/static/scripts/packed/mvc/tools/tools-form-base.js
+++ b/static/scripts/packed/mvc/tools/tools-form-base.js
@@ -1,1 +1,1 @@
-define(["utils/utils","utils/deferred","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/citation/citation-model","mvc/citation/citation-view","mvc/tools","mvc/tools/tools-template","mvc/tools/tools-content","mvc/tools/tools-section","mvc/tools/tools-tree"],function(g,h,f,k,i,a,d,c,e,j,b){return
Backbone.View.extend({initialize:function(l){this.optionsDefault={is_dynamic:true,narrow:false,initial_errors:false,cls_portlet:"ui-portlet-limited"};this.options=g.merge(l,this.optionsDefault);console.debug(this.options);var
m=parent.Galaxy;if(m&&m.modal){this.modal=m.modal}else{this.modal=new
k.Modal.View()}if(m&&m.currUser){this.is_admin=m.currUser.get("is_admin")}else{this.is_admin=false}this.container=this.options.container||"body";this.deferred=new
h();this.setElement("<div/>");$(this.container).append(this.$el);this.build(this.options)},build:function(n){var
l=this;this.off("refresh");this.off("reset");this.field_list={};this.input_list={};this.element_list={};this.tree=new
b(this);this.content=new
e(this);l.options.inputs=n&&n.inputs;this._renderForm(n);var
m=this.tree.finalize();if(n.initial_errors){this._errors(n)}this.on("refresh",function(){l.deferred.reset();l.deferred.execute(function(){var
o=l.tree.finalize();if(!_.isEqual(o,m)){m=o;l._updateModel($.extend(true,{},m))}})});this.on("reset",function(){for(var
o in
this.element_list){this.element_list[o].reset()}})},reciept:function(l){$(this.container).empty();$(this.container).append(l)},highlight:function(m,n,l){var
o=this.element_list[m];if(o){o.error(n||"Please verify this
parameter.");if(!l){$("html,
body").animate({scrollTop:o.$el.offset().top-20},500)}}},_errors:function(n){this.trigger("reset");if(n&&n.errors){var
o=this.tree.matchResponse(n.errors);for(var m in this.element_list){var
l=this.element_list[m];if(o[m]){this.highlight(m,o[m],true)}}}},_renderForm:function(t){var
s=this;this.message=new k.Message();var m=new
k.ButtonMenu({icon:"fa-cubes",title:(!t.narrow&&"Versions")||null,tooltip:"Select
another tool version"});if(t.versions&&t.versions.length>1){for(var o in
t.versions){var q=t.versions[o];if(q!=t.version){m.addMenu({title:"Switch to
"+q,version:q,icon:"fa-cube",onclick:function(){s.options.id=s.options.id.replace(s.options.version,this.version);s.options.version=this.version;s.deferred.reset();s.deferred.execute(function(){s._buildModel()})}})}}}else{m.$el.hide()}var
p=new
k.ButtonMenu({icon:"fa-caret-down",title:(!t.narrow&&"Options")||null,tooltip:"View
available
options"});if(t.biostar_url){p.addMenu({icon:"fa-question-circle",title:"Question?",tooltip:"Ask
a question about this tool
(Biostar)",onclick:function(){window.open(t.biostar_url+"/p/new/post/")}});p.addMenu({icon:"fa-search",title:"Search",tooltip:"Search
help for this tool
(Biostar)",onclick:function(){window.open(t.biostar_url+"/local/search/page/?q="+t.name)}})}p.addMenu({icon:"fa-share",title:"Share",tooltip:"Share
this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C,
Enter",window.location.origin+galaxy_config.root+"root?tool_id="+t.id)}});if(this.is_admin){p.addMenu({icon:"fa-download",title:"Download",tooltip:"Download
this
tool",onclick:function(){window.location.href=galaxy_config.root+"api/tools/"+t.id+"/download"}})}if(t.requirements&&t.requirements.length>0){p.addMenu({icon:"fa-info-circle",title:"Requirements",tooltip:"Display
tool
requirements",onclick:function(){if(!this.visible){this.visible=true;s.message.update({persistent:true,message:c.requirements(t),status:"info"})}else{this.visible=false;s.message.update({message:""})}}})}if(this.options.sharable_url){p.addMenu({icon:"fa-external-link",title:"See
in Tool Shed",tooltip:"Access the
repository",onclick:function(){window.open(s.options.sharable_url)}})}this.section=new
j.View(s,{inputs:t.inputs});if(this.incompatible){this.$el.hide();$("#tool-form-classic").show();return}this.portlet=new
f.View({icon:"fa-wrench",title:"<b>"+t.name+"</b>
"+t.description+" (Galaxy Tool Version
"+t.version+")",cls:this.options.cls_portlet,operations:{menu:p,versions:m},buttons:this.buttons});this.portlet.append(this.message.$el.addClass("ui-margin-top"));this.portlet.append(this.section.$el);this.$el.empty();this.$el.append(this.portlet.$el);if(t.help!=""){this.$el.append(c.help(t.help))}if(t.citations){var
r=$("<div/>");var l=new i.ToolCitationCollection();l.tool_id=t.id;var
n=new
a.CitationListView({el:r,collection:l});n.render();l.fetch();this.$el.append(r)}if(t.message){this.message.update({persistent:true,status:"warning",message:t.message})}console.debug("tools-form-base::initialize()
- Completed.")}})});
\ No newline at end of file
+define(["utils/utils","utils/deferred","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/citation/citation-model","mvc/citation/citation-view","mvc/tools","mvc/tools/tools-template","mvc/tools/tools-content","mvc/tools/tools-section","mvc/tools/tools-tree"],function(g,h,f,k,i,a,d,c,e,j,b){return
Backbone.View.extend({initialize:function(l){this.optionsDefault={is_dynamic:true,narrow:false,initial_errors:false,cls_portlet:"ui-portlet-limited"};this.options=g.merge(l,this.optionsDefault);console.debug(this.options);var
m=parent.Galaxy;if(m&&m.modal){this.modal=m.modal}else{this.modal=new
k.Modal.View()}if(m&&m.currUser){this.is_admin=m.currUser.get("is_admin")}else{this.is_admin=false}this.container=this.options.container||"body";this.deferred=new
h();this.setElement("<div/>");$(this.container).append(this.$el);this.build(this.options)},build:function(n){var
l=this;this.off("refresh");this.off("reset");this.field_list={};this.input_list={};this.element_list={};this.tree=new
b(this);this.content=new
e(this);l.options.inputs=n&&n.inputs;this._renderForm(n);var
m=this.tree.finalize();if(n.initial_errors){this._errors(n)}this.on("refresh",function(){l.deferred.reset();l.deferred.execute(function(){var
o=l.tree.finalize();if(!_.isEqual(o,m)){m=o;l._updateModel($.extend(true,{},m))}})});this.on("reset",function(){for(var
o in
this.element_list){this.element_list[o].reset()}})},reciept:function(l){$(this.container).empty();$(this.container).append(l)},highlight:function(m,n,l){var
o=this.element_list[m];if(o){o.error(n||"Please verify this
parameter.");if(!l){$("html,
body").animate({scrollTop:o.$el.offset().top-20},500)}}},_errors:function(n){this.trigger("reset");if(n&&n.errors){var
o=this.tree.matchResponse(n.errors);for(var m in this.element_list){var
l=this.element_list[m];if(o[m]){this.highlight(m,o[m],true)}}}},_renderForm:function(t){var
s=this;this.message=new k.Message();var m=new
k.ButtonMenu({icon:"fa-cubes",title:(!t.narrow&&"Versions")||null,tooltip:"Select
another tool version"});if(t.versions&&t.versions.length>1){for(var o in
t.versions){var q=t.versions[o];if(q!=t.version){m.addMenu({title:"Switch to
"+q,version:q,icon:"fa-cube",onclick:function(){s.options.id=s.options.id.replace(s.options.version,this.version);s.options.version=this.version;s.deferred.reset();s.deferred.execute(function(){s._buildModel()})}})}}}else{m.$el.hide()}var
p=new
k.ButtonMenu({icon:"fa-caret-down",title:(!t.narrow&&"Options")||null,tooltip:"View
available
options"});if(t.biostar_url){p.addMenu({icon:"fa-question-circle",title:"Question?",tooltip:"Ask
a question about this tool
(Biostar)",onclick:function(){window.open(t.biostar_url+"/p/new/post/")}});p.addMenu({icon:"fa-search",title:"Search",tooltip:"Search
help for this tool
(Biostar)",onclick:function(){window.open(t.biostar_url+"/local/search/page/?q="+t.name)}})}p.addMenu({icon:"fa-share",title:"Share",tooltip:"Share
this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C,
Enter",window.location.origin+galaxy_config.root+"root?tool_id="+t.id)}});if(this.is_admin){p.addMenu({icon:"fa-download",title:"Download",tooltip:"Download
this
tool",onclick:function(){window.location.href=galaxy_config.root+"api/tools/"+t.id+"/download"}})}if(t.requirements&&t.requirements.length>0){p.addMenu({icon:"fa-info-circle",title:"Requirements",tooltip:"Display
tool
requirements",onclick:function(){if(!this.visible){this.visible=true;s.message.update({persistent:true,message:c.requirements(t),status:"info"})}else{this.visible=false;s.message.update({message:""})}}})}if(this.options.sharable_url){p.addMenu({icon:"fa-external-link",title:"See
in Tool Shed",tooltip:"Access the
repository",onclick:function(){window.open(s.options.sharable_url)}})}if(this.options.job_id&&this.options.job_remap){t.inputs.rerun_remap_job_id={label:"Resume
dependencies from this
job",name:"rerun_remap_job_id",type:"select",display:"radio",ignore:"__ignore__",value:"__ignore__",options:[["Yes",this.options.job_id],["No","__ignore__"]],help:"The
previous run of this tool failed and other tools were waiting for it to finish
successfully, use this option to resume those tools using the outputs of this tool
run."}}this.section=new
j.View(s,{inputs:t.inputs});if(this.incompatible){this.$el.hide();$("#tool-form-classic").show();return}this.portlet=new
f.View({icon:"fa-wrench",title:"<b>"+t.name+"</b>
"+t.description+" (Galaxy Tool Version
"+t.version+")",cls:this.options.cls_portlet,operations:{menu:p,versions:m},buttons:this.buttons});this.portlet.append(this.message.$el.addClass("ui-margin-top"));this.portlet.append(this.section.$el);this.$el.empty();this.$el.append(this.portlet.$el);if(t.help!=""){this.$el.append(c.help(t.help))}if(t.citations){var
r=$("<div/>");var l=new i.ToolCitationCollection();l.tool_id=t.id;var
n=new
a.CitationListView({el:r,collection:l});n.render();l.fetch();this.$el.append(r)}if(t.message){this.message.update({persistent:true,status:"warning",message:t.message})}console.debug("tools-form-base::initialize()
- Completed.")}})});
\ No newline at end of file
https://bitbucket.org/galaxy/galaxy-central/commits/86d7c97fb249/
Changeset: 86d7c97fb249
Branch: release_15.03
User: guerler
Date: 2015-03-06 20:28:22+00:00
Summary: Enable remap condition
Affected #: 1 file
diff -r b0c8d3454feaf41137aafcdcb5d5c78342683822 -r
86d7c97fb2492b13e4b6be5dbd829731e3e5ab18 lib/galaxy/tools/__init__.py
--- a/lib/galaxy/tools/__init__.py
+++ b/lib/galaxy/tools/__init__.py
@@ -2571,7 +2571,6 @@
def _get_job_remap ( self, job):
if job:
if job.state == job.states.ERROR:
- return True
try:
if [ hda.dependent_jobs for hda in [ jtod.dataset for jtod in
job.output_datasets ] if hda.dependent_jobs ]:
return True
https://bitbucket.org/galaxy/galaxy-central/commits/ba55d530ff7e/
Changeset: ba55d530ff7e
Branch: release_15.03
User: dannon
Date: 2015-03-06 20:49:14+00:00
Summary: Minor wording tweaks.
Affected #: 3 files
diff -r 86d7c97fb2492b13e4b6be5dbd829731e3e5ab18 -r
ba55d530ff7e7a7d4a5d1ec632ee39e5e201a003
client/galaxy/scripts/mvc/tools/tools-form-base.js
--- a/client/galaxy/scripts/mvc/tools/tools-form-base.js
+++ b/client/galaxy/scripts/mvc/tools/tools-form-base.js
@@ -133,12 +133,12 @@
highlight: function (input_id, message, silent) {
// get input field
var input_element = this.element_list[input_id];
-
+
// check input element
if (input_element) {
// mark error
input_element.error(message || 'Please verify this parameter.');
-
+
// scroll to first input element
if (!silent) {
$('html, body').animate({
@@ -153,7 +153,7 @@
_errors: function(options) {
// hide previous error statements
this.trigger('reset');
-
+
// highlight all errors
if (options && options.errors) {
var error_messages = this.tree.matchResponse(options.errors);
@@ -193,7 +193,7 @@
// here we update the tool version (some tools encode the
version also in the id)
self.options.id =
self.options.id.replace(self.options.version, this.version);
self.options.version = this.version;
-
+
// rebuild the model and form
self.deferred.reset();
self.deferred.execute(function(){self._buildModel()});
@@ -223,7 +223,7 @@
window.open(options.biostar_url + '/p/new/post/');
}
});
-
+
// create search button
menu_button.addMenu({
icon : 'fa-search',
@@ -305,7 +305,7 @@
ignore : '__ignore__',
value : '__ignore__',
options : [['Yes', this.options.job_id], ['No',
'__ignore__']],
- help : 'The previous run of this tool failed and other
tools were waiting for it to finish successfully, use this option to resume those tools
using the outputs of this tool run.'
+ help : 'The previous run of this tool failed and other
tools were waiting for it to finish successfully. Use this option to resume those tools
using the new output(s) of this tool run.'
}
}
diff -r 86d7c97fb2492b13e4b6be5dbd829731e3e5ab18 -r
ba55d530ff7e7a7d4a5d1ec632ee39e5e201a003 static/scripts/mvc/tools/tools-form-base.js
--- a/static/scripts/mvc/tools/tools-form-base.js
+++ b/static/scripts/mvc/tools/tools-form-base.js
@@ -133,12 +133,12 @@
highlight: function (input_id, message, silent) {
// get input field
var input_element = this.element_list[input_id];
-
+
// check input element
if (input_element) {
// mark error
input_element.error(message || 'Please verify this parameter.');
-
+
// scroll to first input element
if (!silent) {
$('html, body').animate({
@@ -153,7 +153,7 @@
_errors: function(options) {
// hide previous error statements
this.trigger('reset');
-
+
// highlight all errors
if (options && options.errors) {
var error_messages = this.tree.matchResponse(options.errors);
@@ -193,7 +193,7 @@
// here we update the tool version (some tools encode the
version also in the id)
self.options.id =
self.options.id.replace(self.options.version, this.version);
self.options.version = this.version;
-
+
// rebuild the model and form
self.deferred.reset();
self.deferred.execute(function(){self._buildModel()});
@@ -223,7 +223,7 @@
window.open(options.biostar_url + '/p/new/post/');
}
});
-
+
// create search button
menu_button.addMenu({
icon : 'fa-search',
@@ -305,7 +305,7 @@
ignore : '__ignore__',
value : '__ignore__',
options : [['Yes', this.options.job_id], ['No',
'__ignore__']],
- help : 'The previous run of this tool failed and other
tools were waiting for it to finish successfully, use this option to resume those tools
using the outputs of this tool run.'
+ help : 'The previous run of this tool failed and other
tools were waiting for it to finish successfully. Use this option to resume those tools
using the new output(s) of this tool run.'
}
}
diff -r 86d7c97fb2492b13e4b6be5dbd829731e3e5ab18 -r
ba55d530ff7e7a7d4a5d1ec632ee39e5e201a003
static/scripts/packed/mvc/tools/tools-form-base.js
--- a/static/scripts/packed/mvc/tools/tools-form-base.js
+++ b/static/scripts/packed/mvc/tools/tools-form-base.js
@@ -1,1 +1,1 @@
-define(["utils/utils","utils/deferred","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/citation/citation-model","mvc/citation/citation-view","mvc/tools","mvc/tools/tools-template","mvc/tools/tools-content","mvc/tools/tools-section","mvc/tools/tools-tree"],function(g,h,f,k,i,a,d,c,e,j,b){return
Backbone.View.extend({initialize:function(l){this.optionsDefault={is_dynamic:true,narrow:false,initial_errors:false,cls_portlet:"ui-portlet-limited"};this.options=g.merge(l,this.optionsDefault);console.debug(this.options);var
m=parent.Galaxy;if(m&&m.modal){this.modal=m.modal}else{this.modal=new
k.Modal.View()}if(m&&m.currUser){this.is_admin=m.currUser.get("is_admin")}else{this.is_admin=false}this.container=this.options.container||"body";this.deferred=new
h();this.setElement("<div/>");$(this.container).append(this.$el);this.build(this.options)},build:function(n){var
l=this;this.off("refresh");this.off("reset");this.field_list={};this.input_list={};this.element_list={};this.tree=new
b(this);this.content=new
e(this);l.options.inputs=n&&n.inputs;this._renderForm(n);var
m=this.tree.finalize();if(n.initial_errors){this._errors(n)}this.on("refresh",function(){l.deferred.reset();l.deferred.execute(function(){var
o=l.tree.finalize();if(!_.isEqual(o,m)){m=o;l._updateModel($.extend(true,{},m))}})});this.on("reset",function(){for(var
o in
this.element_list){this.element_list[o].reset()}})},reciept:function(l){$(this.container).empty();$(this.container).append(l)},highlight:function(m,n,l){var
o=this.element_list[m];if(o){o.error(n||"Please verify this
parameter.");if(!l){$("html,
body").animate({scrollTop:o.$el.offset().top-20},500)}}},_errors:function(n){this.trigger("reset");if(n&&n.errors){var
o=this.tree.matchResponse(n.errors);for(var m in this.element_list){var
l=this.element_list[m];if(o[m]){this.highlight(m,o[m],true)}}}},_renderForm:function(t){var
s=this;this.message=new k.Message();var m=new
k.ButtonMenu({icon:"fa-cubes",title:(!t.narrow&&"Versions")||null,tooltip:"Select
another tool version"});if(t.versions&&t.versions.length>1){for(var o in
t.versions){var q=t.versions[o];if(q!=t.version){m.addMenu({title:"Switch to
"+q,version:q,icon:"fa-cube",onclick:function(){s.options.id=s.options.id.replace(s.options.version,this.version);s.options.version=this.version;s.deferred.reset();s.deferred.execute(function(){s._buildModel()})}})}}}else{m.$el.hide()}var
p=new
k.ButtonMenu({icon:"fa-caret-down",title:(!t.narrow&&"Options")||null,tooltip:"View
available
options"});if(t.biostar_url){p.addMenu({icon:"fa-question-circle",title:"Question?",tooltip:"Ask
a question about this tool
(Biostar)",onclick:function(){window.open(t.biostar_url+"/p/new/post/")}});p.addMenu({icon:"fa-search",title:"Search",tooltip:"Search
help for this tool
(Biostar)",onclick:function(){window.open(t.biostar_url+"/local/search/page/?q="+t.name)}})}p.addMenu({icon:"fa-share",title:"Share",tooltip:"Share
this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C,
Enter",window.location.origin+galaxy_config.root+"root?tool_id="+t.id)}});if(this.is_admin){p.addMenu({icon:"fa-download",title:"Download",tooltip:"Download
this
tool",onclick:function(){window.location.href=galaxy_config.root+"api/tools/"+t.id+"/download"}})}if(t.requirements&&t.requirements.length>0){p.addMenu({icon:"fa-info-circle",title:"Requirements",tooltip:"Display
tool
requirements",onclick:function(){if(!this.visible){this.visible=true;s.message.update({persistent:true,message:c.requirements(t),status:"info"})}else{this.visible=false;s.message.update({message:""})}}})}if(this.options.sharable_url){p.addMenu({icon:"fa-external-link",title:"See
in Tool Shed",tooltip:"Access the
repository",onclick:function(){window.open(s.options.sharable_url)}})}if(this.options.job_id&&this.options.job_remap){t.inputs.rerun_remap_job_id={label:"Resume
dependencies from this
job",name:"rerun_remap_job_id",type:"select",display:"radio",ignore:"__ignore__",value:"__ignore__",options:[["Yes",this.options.job_id],["No","__ignore__"]],help:"The
previous run of this tool failed and other tools were waiting for it to finish
successfully, use this option to resume those tools using the outputs of this tool
run."}}this.section=new
j.View(s,{inputs:t.inputs});if(this.incompatible){this.$el.hide();$("#tool-form-classic").show();return}this.portlet=new
f.View({icon:"fa-wrench",title:"<b>"+t.name+"</b>
"+t.description+" (Galaxy Tool Version
"+t.version+")",cls:this.options.cls_portlet,operations:{menu:p,versions:m},buttons:this.buttons});this.portlet.append(this.message.$el.addClass("ui-margin-top"));this.portlet.append(this.section.$el);this.$el.empty();this.$el.append(this.portlet.$el);if(t.help!=""){this.$el.append(c.help(t.help))}if(t.citations){var
r=$("<div/>");var l=new i.ToolCitationCollection();l.tool_id=t.id;var
n=new
a.CitationListView({el:r,collection:l});n.render();l.fetch();this.$el.append(r)}if(t.message){this.message.update({persistent:true,status:"warning",message:t.message})}console.debug("tools-form-base::initialize()
- Completed.")}})});
\ No newline at end of file
+define(["utils/utils","utils/deferred","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/citation/citation-model","mvc/citation/citation-view","mvc/tools","mvc/tools/tools-template","mvc/tools/tools-content","mvc/tools/tools-section","mvc/tools/tools-tree"],function(g,h,f,k,i,a,d,c,e,j,b){return
Backbone.View.extend({initialize:function(l){this.optionsDefault={is_dynamic:true,narrow:false,initial_errors:false,cls_portlet:"ui-portlet-limited"};this.options=g.merge(l,this.optionsDefault);console.debug(this.options);var
m=parent.Galaxy;if(m&&m.modal){this.modal=m.modal}else{this.modal=new
k.Modal.View()}if(m&&m.currUser){this.is_admin=m.currUser.get("is_admin")}else{this.is_admin=false}this.container=this.options.container||"body";this.deferred=new
h();this.setElement("<div/>");$(this.container).append(this.$el);this.build(this.options)},build:function(n){var
l=this;this.off("refresh");this.off("reset");this.field_list={};this.input_list={};this.element_list={};this.tree=new
b(this);this.content=new
e(this);l.options.inputs=n&&n.inputs;this._renderForm(n);var
m=this.tree.finalize();if(n.initial_errors){this._errors(n)}this.on("refresh",function(){l.deferred.reset();l.deferred.execute(function(){var
o=l.tree.finalize();if(!_.isEqual(o,m)){m=o;l._updateModel($.extend(true,{},m))}})});this.on("reset",function(){for(var
o in
this.element_list){this.element_list[o].reset()}})},reciept:function(l){$(this.container).empty();$(this.container).append(l)},highlight:function(m,n,l){var
o=this.element_list[m];if(o){o.error(n||"Please verify this
parameter.");if(!l){$("html,
body").animate({scrollTop:o.$el.offset().top-20},500)}}},_errors:function(n){this.trigger("reset");if(n&&n.errors){var
o=this.tree.matchResponse(n.errors);for(var m in this.element_list){var
l=this.element_list[m];if(o[m]){this.highlight(m,o[m],true)}}}},_renderForm:function(t){var
s=this;this.message=new k.Message();var m=new
k.ButtonMenu({icon:"fa-cubes",title:(!t.narrow&&"Versions")||null,tooltip:"Select
another tool version"});if(t.versions&&t.versions.length>1){for(var o in
t.versions){var q=t.versions[o];if(q!=t.version){m.addMenu({title:"Switch to
"+q,version:q,icon:"fa-cube",onclick:function(){s.options.id=s.options.id.replace(s.options.version,this.version);s.options.version=this.version;s.deferred.reset();s.deferred.execute(function(){s._buildModel()})}})}}}else{m.$el.hide()}var
p=new
k.ButtonMenu({icon:"fa-caret-down",title:(!t.narrow&&"Options")||null,tooltip:"View
available
options"});if(t.biostar_url){p.addMenu({icon:"fa-question-circle",title:"Question?",tooltip:"Ask
a question about this tool
(Biostar)",onclick:function(){window.open(t.biostar_url+"/p/new/post/")}});p.addMenu({icon:"fa-search",title:"Search",tooltip:"Search
help for this tool
(Biostar)",onclick:function(){window.open(t.biostar_url+"/local/search/page/?q="+t.name)}})}p.addMenu({icon:"fa-share",title:"Share",tooltip:"Share
this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C,
Enter",window.location.origin+galaxy_config.root+"root?tool_id="+t.id)}});if(this.is_admin){p.addMenu({icon:"fa-download",title:"Download",tooltip:"Download
this
tool",onclick:function(){window.location.href=galaxy_config.root+"api/tools/"+t.id+"/download"}})}if(t.requirements&&t.requirements.length>0){p.addMenu({icon:"fa-info-circle",title:"Requirements",tooltip:"Display
tool
requirements",onclick:function(){if(!this.visible){this.visible=true;s.message.update({persistent:true,message:c.requirements(t),status:"info"})}else{this.visible=false;s.message.update({message:""})}}})}if(this.options.sharable_url){p.addMenu({icon:"fa-external-link",title:"See
in Tool Shed",tooltip:"Access the
repository",onclick:function(){window.open(s.options.sharable_url)}})}if(this.options.job_id&&this.options.job_remap){t.inputs.rerun_remap_job_id={label:"Resume
dependencies from this
job",name:"rerun_remap_job_id",type:"select",display:"radio",ignore:"__ignore__",value:"__ignore__",options:[["Yes",this.options.job_id],["No","__ignore__"]],help:"The
previous run of this tool failed and other tools were waiting for it to finish
successfully. Use this option to resume those tools using the new output(s) of this tool
run."}}this.section=new
j.View(s,{inputs:t.inputs});if(this.incompatible){this.$el.hide();$("#tool-form-classic").show();return}this.portlet=new
f.View({icon:"fa-wrench",title:"<b>"+t.name+"</b>
"+t.description+" (Galaxy Tool Version
"+t.version+")",cls:this.options.cls_portlet,operations:{menu:p,versions:m},buttons:this.buttons});this.portlet.append(this.message.$el.addClass("ui-margin-top"));this.portlet.append(this.section.$el);this.$el.empty();this.$el.append(this.portlet.$el);if(t.help!=""){this.$el.append(c.help(t.help))}if(t.citations){var
r=$("<div/>");var l=new i.ToolCitationCollection();l.tool_id=t.id;var
n=new
a.CitationListView({el:r,collection:l});n.render();l.fetch();this.$el.append(r)}if(t.message){this.message.update({persistent:true,status:"warning",message:t.message})}console.debug("tools-form-base::initialize()
- Completed.")}})});
\ No newline at end of file
https://bitbucket.org/galaxy/galaxy-central/commits/d11b8a1e7eb4/
Changeset: d11b8a1e7eb4
Branch: release_15.03
User: dannon
Date: 2015-03-06 21:04:43+00:00
Summary: Ensure path was well constructed (has value) before trying to determine
whether or not it exists.
Affected #: 1 file
diff -r ba55d530ff7e7a7d4a5d1ec632ee39e5e201a003 -r
d11b8a1e7eb4649b884655dbc583f9ce45f9f589
lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
--- a/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
+++ b/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
@@ -331,7 +331,7 @@
image can be defined in either a README.rst file contained in the repository or
the help section of a Galaxy tool config that
is contained in the repository. The following image definitions are all
supported. The former $PATH_TO_IMAGES is no longer
required, and is now ignored.
- .. image::
https://raw.github.com/galaxy/some_image.png
+ .. image::
https://raw.github.com/galaxy/some_image.png
.. image:: $PATH_TO_IMAGES/some_image.png
.. image:: /static/images/some_image.gif
.. image:: some_image.jpg
@@ -343,12 +343,13 @@
repository = suc.get_tool_shed_repository_by_id( trans.app, repository_id )
if repository:
repo_files_dir = repository.repo_files_directory( trans.app )
+ # The following line sometimes returns None. TODO: Figure out why.
path_to_file = suc.get_absolute_path_to_file_in_repository(
repo_files_dir, relative_path_to_image_file )
- if os.path.exists( path_to_file ):
+ if path_to_file and os.path.exists( path_to_file ):
file_name = os.path.basename( relative_path_to_image_file )
try:
extension = file_name.split( '.' )[ -1 ]
- except Exception, e:
+ except Exception:
extension = None
if extension:
mimetype =
trans.app.datatypes_registry.get_mimetype_by_extension( extension )
https://bitbucket.org/galaxy/galaxy-central/commits/aadd9d71e0c1/
Changeset: aadd9d71e0c1
Branch: release_15.03
User: dannon
Date: 2015-02-19 19:45:44+00:00
Summary: Cherry-pick e01310e3f82e67ea9048e547205fdbe5748d60ac over to release_15.03
Affected #: 1 file
diff -r d11b8a1e7eb4649b884655dbc583f9ce45f9f589 -r
aadd9d71e0c1e0dbdcaf3992c8f13d2b3cd7aa28
lib/galaxy/webapps/tool_shed/model/migrate/check.py
--- a/lib/galaxy/webapps/tool_shed/model/migrate/check.py
+++ b/lib/galaxy/webapps/tool_shed/model/migrate/check.py
@@ -1,4 +1,6 @@
-import sys, os.path, logging
+import logging
+import os.path
+import sys
from galaxy import eggs
@@ -38,7 +40,7 @@
try:
egg = dialect_to_egg[dialect]
try:
- pkg_resources.require( egg )
+ eggs.require( egg )
log.debug( "%s egg successfully loaded for %s dialect" % ( egg,
dialect ) )
except:
# If the module is in the path elsewhere (i.e. non-egg), it'll still
load.
https://bitbucket.org/galaxy/galaxy-central/commits/070468c42fbf/
Changeset: 070468c42fbf
Branch: release_15.03
User: guerler
Date: 2015-03-09 18:55:18+00:00
Summary: Fix select2 field arrow style
Affected #: 2 files
diff -r aadd9d71e0c1e0dbdcaf3992c8f13d2b3cd7aa28 -r
070468c42fbfed6b28c389e7df4a38dae9bf921b static/style/blue/base.css
--- a/static/style/blue/base.css
+++ b/static/style/blue/base.css
@@ -1471,7 +1471,7 @@
.ui-color-picker .ui-color-picker-view .ui-color-picker-panel .ui-color-picker-content
.line .ui-color-picker-box{cursor:pointer;float:left;margin-right:5px;border:solid 1px
#c0c0c0;width:15px;height:15px;border-radius:2px}.ui-color-picker .ui-color-picker-view
.ui-color-picker-panel .ui-color-picker-content .line .ui-color-picker-box
.ui-color-picker-check{color:black;font-size:1.2em;position:relative;left:1px}
.ui-select{position:relative}.ui-select .button{position:absolute;top:5px;right:5px}
.ui-select
select{position:relative;top:0px;height:27px;width:100%;padding-right:20px;cursor:pointer;padding-left:5px}
-.ui-select .select2-container{width:100%}.ui-select .select2-container
.select2-choice{height:27px;padding-left:5px}.ui-select .select2-container .select2-choice
.select2-arrow{background-image:none;background:transparent;border:none}.ui-select
.select2-container .select2-choice .select2-arrow b{background:none}
+.ui-select .select2-container{width:100%}.ui-select .select2-container
.select2-choice{height:27px;padding-left:5px}.ui-select .select2-container .select2-choice
.select2-arrow{display:none}
.ui-select .select2-container-multi .select2-choices{padding:0px}
.ui-select-multiple select{height:80px !important;-webkit-box-shadow:inset 0 1px 1px
rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}
.ui-select-content .ui-options{float:left;padding-top:2px}
diff -r aadd9d71e0c1e0dbdcaf3992c8f13d2b3cd7aa28 -r
070468c42fbfed6b28c389e7df4a38dae9bf921b static/style/src/less/ui.less
--- a/static/style/src/less/ui.less
+++ b/static/style/src/less/ui.less
@@ -506,12 +506,7 @@
&:extend(.ui-input-basic);
padding-left: 5px;
.select2-arrow {
- background-image: none;
- background: transparent;
- border: none;
- b {
- background: none;
- }
+ display: none;
}
}
}
Repository URL:
https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from
bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.