galaxy-commits
Threads by month
- ----- 2025 -----
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
September 2014
- 2 participants
- 236 discussions
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/4eb74e9e16ac/
Changeset: 4eb74e9e16ac
Branch: stable
User: martenson
Date: 2014-09-22 22:09:45+00:00
Summary: the removed select2 class overrule for edit hda attributes is needed afterall, I at least did rename it to specific to its usage so other select2 items can work normally
Affected #: 4 files
diff -r 9f15bf53a11b8a91301381d836271a0ac3b23e71 -r 4eb74e9e16ace20ca81d8d1ca6947cb0e9be7a04 static/scripts/galaxy.base.js
--- a/static/scripts/galaxy.base.js
+++ b/static/scripts/galaxy.base.js
@@ -236,8 +236,10 @@
$.fn.refresh_select2 = function() {
var select_elt = $(this);
- var options = { width: "resolve",
- closeOnSelect: !select_elt.is("[MULTIPLE]")
+ var options = { placeholder:'Click to select',
+ closeOnSelect: !select_elt.is("[MULTIPLE]"),
+ dropdownAutoWidth : true,
+ containerCssClass: 'select2-minwidth'
};
return select_elt.select2( options );
}
diff -r 9f15bf53a11b8a91301381d836271a0ac3b23e71 -r 4eb74e9e16ace20ca81d8d1ca6947cb0e9be7a04 static/scripts/packed/galaxy.base.js
--- a/static/scripts/packed/galaxy.base.js
+++ b/static/scripts/packed/galaxy.base.js
@@ -1,1 +1,1 @@
-(function(){var b=0;var c=["ms","moz","webkit","o"];for(var a=0;a<c.length&&!window.requestAnimationFrame;++a){window.requestAnimationFrame=window[c[a]+"RequestAnimationFrame"];window.cancelRequestAnimationFrame=window[c[a]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame){window.requestAnimationFrame=function(h,e){var d=new Date().getTime();var f=Math.max(0,16-(d-b));var g=window.setTimeout(function(){h(d+f)},f);b=d+f;return g}}if(!window.cancelAnimationFrame){window.cancelAnimationFrame=function(d){clearTimeout(d)}}}());if(!Array.indexOf){Array.prototype.indexOf=function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1}}function obj_length(c){if(c.length!==undefined){return c.length}var b=0;for(var a in c){b++}return b}$.fn.makeAbsolute=function(a){return this.each(function(){var b=$(this);var c=b.position();b.css({position:"absolute",marginLeft:0,marginTop:0,top:c.top,left:c.left,right:$(window).width()-(c.left+b.width())});if(a){b.remove().appendTo("body")}})};function make_popupmenu(b,c){var a=(b.data("menu_options"));b.data("menu_options",c);if(a){return}b.bind("click.show_popup",function(d){$(".popmenu-wrapper").remove();setTimeout(function(){var g=$("<ul class='dropdown-menu' id='"+b.attr("id")+"-menu'></ul>");var f=b.data("menu_options");if(obj_length(f)<=0){$("<li>No Options.</li>").appendTo(g)}$.each(f,function(j,i){if(i){var l=i.action||i;g.append($("<li></li>").append($("<a>").attr("href",i.url).html(j).click(l)))}else{g.append($("<li></li>").addClass("head").append($("<a href='#'></a>").html(j)))}});var h=$("<div class='popmenu-wrapper' style='position: absolute;left: 0; top: -1000;'></div>").append(g).appendTo("body");var e=d.pageX-h.width()/2;e=Math.min(e,$(document).scrollLeft()+$(window).width()-$(h).width()-5);e=Math.max(e,$(document).scrollLeft()+5);h.css({top:d.pageY,left:e})},10);setTimeout(function(){var f=function(h){$(h).bind("click.close_popup",function(){$(".popmenu-wrapper").remove();h.unbind("click.close_popup")})};f($(window.document));f($(window.top.document));for(var e=window.top.frames.length;e--;){var g=$(window.top.frames[e].document);f(g)}},50);return false})}function make_popup_menus(a){a=a||document;$(a).find("div[popupmenu]").each(function(){var b={};var d=$(this);d.find("a").each(function(){var g=$(this),i=g.get(0),e=i.getAttribute("confirm"),f=i.getAttribute("href"),h=i.getAttribute("target");if(!f){b[g.text()]=null}else{b[g.text()]={url:f,action:function(){if(!e||confirm(e)){if(h){window.open(f,h);return false}else{g.click()}}}}}});var c=$(a).find("#"+d.attr("popupmenu"));c.find("a").bind("click",function(f){f.stopPropagation();return true});make_popupmenu(c,b);c.addClass("popup");d.remove()})}function naturalSort(j,h){var p=/(-?[0-9\.]+)/g,k=j.toString().toLowerCase()||"",g=h.toString().toLowerCase()||"",l=String.fromCharCode(0),n=k.replace(p,l+"$1"+l).split(l),e=g.replace(p,l+"$1"+l).split(l),d=(new Date(k)).getTime(),o=d?(new Date(g)).getTime():null;if(o){if(d<o){return -1}else{if(d>o){return 1}}}var m,f;for(var i=0,c=Math.max(n.length,e.length);i<c;i++){m=parseFloat(n[i])||n[i];f=parseFloat(e[i])||e[i];if(m<f){return -1}else{if(m>f){return 1}}}return 0}$.fn.refresh_select2=function(){var b=$(this);var a={width:"resolve",closeOnSelect:!b.is("[MULTIPLE]")};return b.select2(a)};function replace_big_select_inputs(a,c,b){if(!jQuery.fn.select2){return}if(a===undefined){a=20}if(c===undefined){c=3000}b=b||$("select");b.each(function(){var e=$(this).not("[multiple]");var d=e.find("option").length;if((d<a)||(d>c)){return}if(e.hasClass("no-autocomplete")){return}e.refresh_select2()})}$.fn.make_text_editable=function(g){var d=("num_cols" in g?g.num_cols:30),c=("num_rows" in g?g.num_rows:4),e=("use_textarea" in g?g.use_textarea:false),b=("on_finish" in g?g.on_finish:null),f=("help_text" in g?g.help_text:null);var a=$(this);a.addClass("editable-text").click(function(l){if($(this).children(":input").length>0){return}a.removeClass("editable-text");var i=function(m){a.find(":input").remove();if(m!==""){a.text(m)}else{a.html("<br>")}a.addClass("editable-text");if(b){b(m)}};var h=("cur_text" in g?g.cur_text:a.text()),k,j;if(e){k=$("<textarea/>").attr({rows:c,cols:d}).text($.trim(h)).keyup(function(m){if(m.keyCode===27){i(h)}});j=$("<button/>").text("Done").click(function(){i(k.val());return false})}else{k=$("<input type='text'/>").attr({value:$.trim(h),size:d}).blur(function(){i(h)}).keyup(function(m){if(m.keyCode===27){$(this).trigger("blur")}else{if(m.keyCode===13){i($(this).val())}}m.stopPropagation()})}a.text("");a.append(k);if(j){a.append(j)}k.focus();k.select();l.stopPropagation()});if(f){a.attr("title",f).tooltip()}return a};function async_save_text(d,f,e,a,c,h,i,g,b){if(c===undefined){c=30}if(i===undefined){i=4}$("#"+d).click(function(){if($("#renaming-active").length>0){return}var l=$("#"+f),k=l.text(),j;if(h){j=$("<textarea></textarea>").attr({rows:i,cols:c}).text($.trim(k))}else{j=$("<input type='text'></input>").attr({value:$.trim(k),size:c})}j.attr("id","renaming-active");j.blur(function(){$(this).remove();l.show();if(b){b(j)}});j.keyup(function(n){if(n.keyCode===27){$(this).trigger("blur")}else{if(n.keyCode===13){var m={};m[a]=$(this).val();$(this).trigger("blur");$.ajax({url:e,data:m,error:function(){alert("Text editing for elt "+f+" failed")},success:function(o){if(o!==""){l.text(o)}else{l.html("<em>None</em>")}if(b){b(j)}}})}}});if(g){g(j)}l.hide();j.insertAfter(l);j.focus();j.select();return})}function init_history_items(d,a,c){var b=function(){try{var e=$.jStorage.get("history_expand_state");if(e){for(var g in e){$("#"+g+" div.historyItemBody").show()}}}catch(f){$.jStorage.deleteKey("history_expand_state")}if($.browser.mozilla){$("div.historyItemBody").each(function(){if(!$(this).is(":visible")){$(this).find("pre.peek").css("overflow","hidden")}})}d.each(function(){var j=this.id,h=$(this).children("div.historyItemBody"),i=h.find("pre.peek");$(this).find(".historyItemTitleBar > .historyItemTitle").wrap("<a href='javascript:void(0);'></a>").click(function(){var k;if(h.is(":visible")){if($.browser.mozilla){i.css("overflow","hidden")}h.slideUp("fast");if(!c){k=$.jStorage.get("history_expand_state");if(k){delete k[j];$.jStorage.set("history_expand_state",k)}}}else{h.slideDown("fast",function(){if($.browser.mozilla){i.css("overflow","auto")}});if(!c){k=$.jStorage.get("history_expand_state");if(!k){k={}}k[j]=true;$.jStorage.set("history_expand_state",k)}}return false})});$("#top-links > a.toggle").click(function(){var h=$.jStorage.get("history_expand_state");if(!h){h={}}$("div.historyItemBody:visible").each(function(){if($.browser.mozilla){$(this).find("pre.peek").css("overflow","hidden")}$(this).slideUp("fast");if(h){delete h[$(this).parent().attr("id")]}});$.jStorage.set("history_expand_state",h)}).show()};b()}function commatize(b){b+="";var a=/(\d+)(\d{3})/;while(a.test(b)){b=b.replace(a,"$1,$2")}return b}function reset_tool_search(a){var c=$("#galaxy_tools").contents();if(c.length===0){c=$(document)}$(this).removeClass("search_active");c.find(".toolTitle").removeClass("search_match");c.find(".toolSectionBody").hide();c.find(".toolTitle").show();c.find(".toolPanelLabel").show();c.find(".toolSectionWrapper").each(function(){if($(this).attr("id")!=="recently_used_wrapper"){$(this).show()}else{if($(this).hasClass("user_pref_visible")){$(this).show()}}});c.find("#search-no-results").hide();c.find("#search-spinner").hide();if(a){var b=c.find("#tool-search-query");b.val("search tools")}}var GalaxyAsync=function(a){this.url_dict={};this.log_action=(a===undefined?false:a)};GalaxyAsync.prototype.set_func_url=function(a,b){this.url_dict[a]=b};GalaxyAsync.prototype.set_user_pref=function(a,b){var c=this.url_dict[arguments.callee];if(c===undefined){return false}$.ajax({url:c,data:{pref_name:a,pref_value:b},error:function(){return false},success:function(){return true}})};GalaxyAsync.prototype.log_user_action=function(c,b,d){if(!this.log_action){return}var a=this.url_dict[arguments.callee];if(a===undefined){return false}$.ajax({url:a,data:{action:c,context:b,params:d},error:function(){return false},success:function(){return true}})};function init_refresh_on_change(){$("select[refresh_on_change='true']").off("change").change(function(){var a=$(this),e=a.val(),d=false,c=a.attr("refresh_on_change_values");if(c){c=c.split(",");var b=a.attr("last_selected_value");if($.inArray(e,c)===-1&&$.inArray(b,c)===-1){return}}$(window).trigger("refresh_on_change");$(document).trigger("convert_to_values");a.get(0).form.submit()});$(":checkbox[refresh_on_change='true']").off("click").click(function(){var a=$(this),e=a.val(),d=false,c=a.attr("refresh_on_change_values");if(c){c=c.split(",");var b=a.attr("last_selected_value");if($.inArray(e,c)===-1&&$.inArray(b,c)===-1){return}}$(window).trigger("refresh_on_change");a.get(0).form.submit()});$("a[confirm]").off("click").click(function(){return confirm($(this).attr("confirm"))})}$(document).ready(function(){init_refresh_on_change();if($.fn.tooltip){$(".unified-panel-header [title]").tooltip({placement:"bottom"});$("[title]").tooltip()}make_popup_menus();replace_big_select_inputs(20,1500);$("a").click(function(){var b=$(this);var c=(parent.frames&&parent.frames.galaxy_main);if((b.attr("target")=="galaxy_main")&&(!c)){var a=b.attr("href");if(a.indexOf("?")==-1){a+="?"}else{a+="&"}a+="use_panels=True";b.attr("href",a);b.attr("target","_self")}return b})});
\ No newline at end of file
+(function(){var b=0;var c=["ms","moz","webkit","o"];for(var a=0;a<c.length&&!window.requestAnimationFrame;++a){window.requestAnimationFrame=window[c[a]+"RequestAnimationFrame"];window.cancelRequestAnimationFrame=window[c[a]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame){window.requestAnimationFrame=function(h,e){var d=new Date().getTime();var f=Math.max(0,16-(d-b));var g=window.setTimeout(function(){h(d+f)},f);b=d+f;return g}}if(!window.cancelAnimationFrame){window.cancelAnimationFrame=function(d){clearTimeout(d)}}}());if(!Array.indexOf){Array.prototype.indexOf=function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1}}function obj_length(c){if(c.length!==undefined){return c.length}var b=0;for(var a in c){b++}return b}$.fn.makeAbsolute=function(a){return this.each(function(){var b=$(this);var c=b.position();b.css({position:"absolute",marginLeft:0,marginTop:0,top:c.top,left:c.left,right:$(window).width()-(c.left+b.width())});if(a){b.remove().appendTo("body")}})};function make_popupmenu(b,c){var a=(b.data("menu_options"));b.data("menu_options",c);if(a){return}b.bind("click.show_popup",function(d){$(".popmenu-wrapper").remove();setTimeout(function(){var g=$("<ul class='dropdown-menu' id='"+b.attr("id")+"-menu'></ul>");var f=b.data("menu_options");if(obj_length(f)<=0){$("<li>No Options.</li>").appendTo(g)}$.each(f,function(j,i){if(i){var l=i.action||i;g.append($("<li></li>").append($("<a>").attr("href",i.url).html(j).click(l)))}else{g.append($("<li></li>").addClass("head").append($("<a href='#'></a>").html(j)))}});var h=$("<div class='popmenu-wrapper' style='position: absolute;left: 0; top: -1000;'></div>").append(g).appendTo("body");var e=d.pageX-h.width()/2;e=Math.min(e,$(document).scrollLeft()+$(window).width()-$(h).width()-5);e=Math.max(e,$(document).scrollLeft()+5);h.css({top:d.pageY,left:e})},10);setTimeout(function(){var f=function(h){$(h).bind("click.close_popup",function(){$(".popmenu-wrapper").remove();h.unbind("click.close_popup")})};f($(window.document));f($(window.top.document));for(var e=window.top.frames.length;e--;){var g=$(window.top.frames[e].document);f(g)}},50);return false})}function make_popup_menus(a){a=a||document;$(a).find("div[popupmenu]").each(function(){var b={};var d=$(this);d.find("a").each(function(){var g=$(this),i=g.get(0),e=i.getAttribute("confirm"),f=i.getAttribute("href"),h=i.getAttribute("target");if(!f){b[g.text()]=null}else{b[g.text()]={url:f,action:function(){if(!e||confirm(e)){if(h){window.open(f,h);return false}else{g.click()}}}}}});var c=$(a).find("#"+d.attr("popupmenu"));c.find("a").bind("click",function(f){f.stopPropagation();return true});make_popupmenu(c,b);c.addClass("popup");d.remove()})}function naturalSort(j,h){var p=/(-?[0-9\.]+)/g,k=j.toString().toLowerCase()||"",g=h.toString().toLowerCase()||"",l=String.fromCharCode(0),n=k.replace(p,l+"$1"+l).split(l),e=g.replace(p,l+"$1"+l).split(l),d=(new Date(k)).getTime(),o=d?(new Date(g)).getTime():null;if(o){if(d<o){return -1}else{if(d>o){return 1}}}var m,f;for(var i=0,c=Math.max(n.length,e.length);i<c;i++){m=parseFloat(n[i])||n[i];f=parseFloat(e[i])||e[i];if(m<f){return -1}else{if(m>f){return 1}}}return 0}$.fn.refresh_select2=function(){var b=$(this);var a={placeholder:"Click to select",closeOnSelect:!b.is("[MULTIPLE]"),dropdownAutoWidth:true,containerCssClass:"select2-minwidth"};return b.select2(a)};function replace_big_select_inputs(a,c,b){if(!jQuery.fn.select2){return}if(a===undefined){a=20}if(c===undefined){c=3000}b=b||$("select");b.each(function(){var e=$(this).not("[multiple]");var d=e.find("option").length;if((d<a)||(d>c)){return}if(e.hasClass("no-autocomplete")){return}e.refresh_select2()})}$.fn.make_text_editable=function(g){var d=("num_cols" in g?g.num_cols:30),c=("num_rows" in g?g.num_rows:4),e=("use_textarea" in g?g.use_textarea:false),b=("on_finish" in g?g.on_finish:null),f=("help_text" in g?g.help_text:null);var a=$(this);a.addClass("editable-text").click(function(l){if($(this).children(":input").length>0){return}a.removeClass("editable-text");var i=function(m){a.find(":input").remove();if(m!==""){a.text(m)}else{a.html("<br>")}a.addClass("editable-text");if(b){b(m)}};var h=("cur_text" in g?g.cur_text:a.text()),k,j;if(e){k=$("<textarea/>").attr({rows:c,cols:d}).text($.trim(h)).keyup(function(m){if(m.keyCode===27){i(h)}});j=$("<button/>").text("Done").click(function(){i(k.val());return false})}else{k=$("<input type='text'/>").attr({value:$.trim(h),size:d}).blur(function(){i(h)}).keyup(function(m){if(m.keyCode===27){$(this).trigger("blur")}else{if(m.keyCode===13){i($(this).val())}}m.stopPropagation()})}a.text("");a.append(k);if(j){a.append(j)}k.focus();k.select();l.stopPropagation()});if(f){a.attr("title",f).tooltip()}return a};function async_save_text(d,f,e,a,c,h,i,g,b){if(c===undefined){c=30}if(i===undefined){i=4}$("#"+d).click(function(){if($("#renaming-active").length>0){return}var l=$("#"+f),k=l.text(),j;if(h){j=$("<textarea></textarea>").attr({rows:i,cols:c}).text($.trim(k))}else{j=$("<input type='text'></input>").attr({value:$.trim(k),size:c})}j.attr("id","renaming-active");j.blur(function(){$(this).remove();l.show();if(b){b(j)}});j.keyup(function(n){if(n.keyCode===27){$(this).trigger("blur")}else{if(n.keyCode===13){var m={};m[a]=$(this).val();$(this).trigger("blur");$.ajax({url:e,data:m,error:function(){alert("Text editing for elt "+f+" failed")},success:function(o){if(o!==""){l.text(o)}else{l.html("<em>None</em>")}if(b){b(j)}}})}}});if(g){g(j)}l.hide();j.insertAfter(l);j.focus();j.select();return})}function init_history_items(d,a,c){var b=function(){try{var e=$.jStorage.get("history_expand_state");if(e){for(var g in e){$("#"+g+" div.historyItemBody").show()}}}catch(f){$.jStorage.deleteKey("history_expand_state")}if($.browser.mozilla){$("div.historyItemBody").each(function(){if(!$(this).is(":visible")){$(this).find("pre.peek").css("overflow","hidden")}})}d.each(function(){var j=this.id,h=$(this).children("div.historyItemBody"),i=h.find("pre.peek");$(this).find(".historyItemTitleBar > .historyItemTitle").wrap("<a href='javascript:void(0);'></a>").click(function(){var k;if(h.is(":visible")){if($.browser.mozilla){i.css("overflow","hidden")}h.slideUp("fast");if(!c){k=$.jStorage.get("history_expand_state");if(k){delete k[j];$.jStorage.set("history_expand_state",k)}}}else{h.slideDown("fast",function(){if($.browser.mozilla){i.css("overflow","auto")}});if(!c){k=$.jStorage.get("history_expand_state");if(!k){k={}}k[j]=true;$.jStorage.set("history_expand_state",k)}}return false})});$("#top-links > a.toggle").click(function(){var h=$.jStorage.get("history_expand_state");if(!h){h={}}$("div.historyItemBody:visible").each(function(){if($.browser.mozilla){$(this).find("pre.peek").css("overflow","hidden")}$(this).slideUp("fast");if(h){delete h[$(this).parent().attr("id")]}});$.jStorage.set("history_expand_state",h)}).show()};b()}function commatize(b){b+="";var a=/(\d+)(\d{3})/;while(a.test(b)){b=b.replace(a,"$1,$2")}return b}function reset_tool_search(a){var c=$("#galaxy_tools").contents();if(c.length===0){c=$(document)}$(this).removeClass("search_active");c.find(".toolTitle").removeClass("search_match");c.find(".toolSectionBody").hide();c.find(".toolTitle").show();c.find(".toolPanelLabel").show();c.find(".toolSectionWrapper").each(function(){if($(this).attr("id")!=="recently_used_wrapper"){$(this).show()}else{if($(this).hasClass("user_pref_visible")){$(this).show()}}});c.find("#search-no-results").hide();c.find("#search-spinner").hide();if(a){var b=c.find("#tool-search-query");b.val("search tools")}}var GalaxyAsync=function(a){this.url_dict={};this.log_action=(a===undefined?false:a)};GalaxyAsync.prototype.set_func_url=function(a,b){this.url_dict[a]=b};GalaxyAsync.prototype.set_user_pref=function(a,b){var c=this.url_dict[arguments.callee];if(c===undefined){return false}$.ajax({url:c,data:{pref_name:a,pref_value:b},error:function(){return false},success:function(){return true}})};GalaxyAsync.prototype.log_user_action=function(c,b,d){if(!this.log_action){return}var a=this.url_dict[arguments.callee];if(a===undefined){return false}$.ajax({url:a,data:{action:c,context:b,params:d},error:function(){return false},success:function(){return true}})};function init_refresh_on_change(){$("select[refresh_on_change='true']").off("change").change(function(){var a=$(this),e=a.val(),d=false,c=a.attr("refresh_on_change_values");if(c){c=c.split(",");var b=a.attr("last_selected_value");if($.inArray(e,c)===-1&&$.inArray(b,c)===-1){return}}$(window).trigger("refresh_on_change");$(document).trigger("convert_to_values");a.get(0).form.submit()});$(":checkbox[refresh_on_change='true']").off("click").click(function(){var a=$(this),e=a.val(),d=false,c=a.attr("refresh_on_change_values");if(c){c=c.split(",");var b=a.attr("last_selected_value");if($.inArray(e,c)===-1&&$.inArray(b,c)===-1){return}}$(window).trigger("refresh_on_change");a.get(0).form.submit()});$("a[confirm]").off("click").click(function(){return confirm($(this).attr("confirm"))})}$(document).ready(function(){init_refresh_on_change();if($.fn.tooltip){$(".unified-panel-header [title]").tooltip({placement:"bottom"});$("[title]").tooltip()}make_popup_menus();replace_big_select_inputs(20,1500);$("a").click(function(){var b=$(this);var c=(parent.frames&&parent.frames.galaxy_main);if((b.attr("target")=="galaxy_main")&&(!c)){var a=b.attr("href");if(a.indexOf("?")==-1){a+="?"}else{a+="&"}a+="use_panels=True";b.attr("href",a);b.attr("target","_self")}return b})});
\ No newline at end of file
diff -r 9f15bf53a11b8a91301381d836271a0ac3b23e71 -r 4eb74e9e16ace20ca81d8d1ca6947cb0e9be7a04 static/style/blue/base.css
--- a/static/style/blue/base.css
+++ b/static/style/blue/base.css
@@ -1232,7 +1232,7 @@
.select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0) !important;width:1px !important;height:1px !important;border:0 !important;margin:0 !important;padding:0 !important;overflow:hidden !important;position:absolute !important;outline:0 !important;left:0px !important;top:0px !important}
.select2-display-none{display:none}
.select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}
-@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){.select2-search input,.select2-search-choice-close,.select2-container .select2-choice abbr,.select2-container .select2-choice .select2-arrow b{background-image:url('../images/select2x2.png') !important;background-repeat:no-repeat !important;background-size:60px 40px !important} .select2-search input{background-position:100% -21px !important}}.select2-container{min-width:256px}
+@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){.select2-search input,.select2-search-choice-close,.select2-container .select2-choice abbr,.select2-container .select2-choice .select2-arrow b{background-image:url('../images/select2x2.png') !important;background-repeat:no-repeat !important;background-size:60px 40px !important} .select2-search input{background-position:100% -21px !important}}.select2-minwidth{min-width:256px}
.galaxy-frame{}.galaxy-frame .corner{-moz-border-radius:5px;border-radius:5px}
.galaxy-frame .toggle{color:gold}
.galaxy-frame .frame-background{z-index:1000;position:absolute;display:none;top:0px;left:0px;height:100%;width:100%;opacity:0.6;background:#000;overflow:auto}
diff -r 9f15bf53a11b8a91301381d836271a0ac3b23e71 -r 4eb74e9e16ace20ca81d8d1ca6947cb0e9be7a04 static/style/src/less/base.less
--- a/static/style/src/less/base.less
+++ b/static/style/src/less/base.less
@@ -16,7 +16,7 @@
@import "select2.less";
/* fix for zero width select2 - remove when fixed there */
-.select2-container {
+.select2-minwidth {
min-width: 256px;
}
https://bitbucket.org/galaxy/galaxy-central/commits/548ab24667d6/
Changeset: 548ab24667d6
Branch: stable
User: jmchilton
Date: 2014-09-23 14:06:38+00:00
Summary: Merged in martenson/galaxy-stable-pr/stable (pull request #503)
[STABLE] fix for select2 bug with minimal width
Affected #: 4 files
diff -r 721a68434e8df24e7fd58d51b734ac7e0caac0a0 -r 548ab24667d6206780237bd807f7d857a484c461 static/scripts/galaxy.base.js
--- a/static/scripts/galaxy.base.js
+++ b/static/scripts/galaxy.base.js
@@ -236,8 +236,10 @@
$.fn.refresh_select2 = function() {
var select_elt = $(this);
- var options = { width: "resolve",
- closeOnSelect: !select_elt.is("[MULTIPLE]")
+ var options = { placeholder:'Click to select',
+ closeOnSelect: !select_elt.is("[MULTIPLE]"),
+ dropdownAutoWidth : true,
+ containerCssClass: 'select2-minwidth'
};
return select_elt.select2( options );
}
diff -r 721a68434e8df24e7fd58d51b734ac7e0caac0a0 -r 548ab24667d6206780237bd807f7d857a484c461 static/scripts/packed/galaxy.base.js
--- a/static/scripts/packed/galaxy.base.js
+++ b/static/scripts/packed/galaxy.base.js
@@ -1,1 +1,1 @@
-(function(){var b=0;var c=["ms","moz","webkit","o"];for(var a=0;a<c.length&&!window.requestAnimationFrame;++a){window.requestAnimationFrame=window[c[a]+"RequestAnimationFrame"];window.cancelRequestAnimationFrame=window[c[a]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame){window.requestAnimationFrame=function(h,e){var d=new Date().getTime();var f=Math.max(0,16-(d-b));var g=window.setTimeout(function(){h(d+f)},f);b=d+f;return g}}if(!window.cancelAnimationFrame){window.cancelAnimationFrame=function(d){clearTimeout(d)}}}());if(!Array.indexOf){Array.prototype.indexOf=function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1}}function obj_length(c){if(c.length!==undefined){return c.length}var b=0;for(var a in c){b++}return b}$.fn.makeAbsolute=function(a){return this.each(function(){var b=$(this);var c=b.position();b.css({position:"absolute",marginLeft:0,marginTop:0,top:c.top,left:c.left,right:$(window).width()-(c.left+b.width())});if(a){b.remove().appendTo("body")}})};function make_popupmenu(b,c){var a=(b.data("menu_options"));b.data("menu_options",c);if(a){return}b.bind("click.show_popup",function(d){$(".popmenu-wrapper").remove();setTimeout(function(){var g=$("<ul class='dropdown-menu' id='"+b.attr("id")+"-menu'></ul>");var f=b.data("menu_options");if(obj_length(f)<=0){$("<li>No Options.</li>").appendTo(g)}$.each(f,function(j,i){if(i){var l=i.action||i;g.append($("<li></li>").append($("<a>").attr("href",i.url).html(j).click(l)))}else{g.append($("<li></li>").addClass("head").append($("<a href='#'></a>").html(j)))}});var h=$("<div class='popmenu-wrapper' style='position: absolute;left: 0; top: -1000;'></div>").append(g).appendTo("body");var e=d.pageX-h.width()/2;e=Math.min(e,$(document).scrollLeft()+$(window).width()-$(h).width()-5);e=Math.max(e,$(document).scrollLeft()+5);h.css({top:d.pageY,left:e})},10);setTimeout(function(){var f=function(h){$(h).bind("click.close_popup",function(){$(".popmenu-wrapper").remove();h.unbind("click.close_popup")})};f($(window.document));f($(window.top.document));for(var e=window.top.frames.length;e--;){var g=$(window.top.frames[e].document);f(g)}},50);return false})}function make_popup_menus(a){a=a||document;$(a).find("div[popupmenu]").each(function(){var b={};var d=$(this);d.find("a").each(function(){var g=$(this),i=g.get(0),e=i.getAttribute("confirm"),f=i.getAttribute("href"),h=i.getAttribute("target");if(!f){b[g.text()]=null}else{b[g.text()]={url:f,action:function(){if(!e||confirm(e)){if(h){window.open(f,h);return false}else{g.click()}}}}}});var c=$(a).find("#"+d.attr("popupmenu"));c.find("a").bind("click",function(f){f.stopPropagation();return true});make_popupmenu(c,b);c.addClass("popup");d.remove()})}function naturalSort(j,h){var p=/(-?[0-9\.]+)/g,k=j.toString().toLowerCase()||"",g=h.toString().toLowerCase()||"",l=String.fromCharCode(0),n=k.replace(p,l+"$1"+l).split(l),e=g.replace(p,l+"$1"+l).split(l),d=(new Date(k)).getTime(),o=d?(new Date(g)).getTime():null;if(o){if(d<o){return -1}else{if(d>o){return 1}}}var m,f;for(var i=0,c=Math.max(n.length,e.length);i<c;i++){m=parseFloat(n[i])||n[i];f=parseFloat(e[i])||e[i];if(m<f){return -1}else{if(m>f){return 1}}}return 0}$.fn.refresh_select2=function(){var b=$(this);var a={width:"resolve",closeOnSelect:!b.is("[MULTIPLE]")};return b.select2(a)};function replace_big_select_inputs(a,c,b){if(!jQuery.fn.select2){return}if(a===undefined){a=20}if(c===undefined){c=3000}b=b||$("select");b.each(function(){var e=$(this).not("[multiple]");var d=e.find("option").length;if((d<a)||(d>c)){return}if(e.hasClass("no-autocomplete")){return}e.refresh_select2()})}$.fn.make_text_editable=function(g){var d=("num_cols" in g?g.num_cols:30),c=("num_rows" in g?g.num_rows:4),e=("use_textarea" in g?g.use_textarea:false),b=("on_finish" in g?g.on_finish:null),f=("help_text" in g?g.help_text:null);var a=$(this);a.addClass("editable-text").click(function(l){if($(this).children(":input").length>0){return}a.removeClass("editable-text");var i=function(m){a.find(":input").remove();if(m!==""){a.text(m)}else{a.html("<br>")}a.addClass("editable-text");if(b){b(m)}};var h=("cur_text" in g?g.cur_text:a.text()),k,j;if(e){k=$("<textarea/>").attr({rows:c,cols:d}).text($.trim(h)).keyup(function(m){if(m.keyCode===27){i(h)}});j=$("<button/>").text("Done").click(function(){i(k.val());return false})}else{k=$("<input type='text'/>").attr({value:$.trim(h),size:d}).blur(function(){i(h)}).keyup(function(m){if(m.keyCode===27){$(this).trigger("blur")}else{if(m.keyCode===13){i($(this).val())}}m.stopPropagation()})}a.text("");a.append(k);if(j){a.append(j)}k.focus();k.select();l.stopPropagation()});if(f){a.attr("title",f).tooltip()}return a};function async_save_text(d,f,e,a,c,h,i,g,b){if(c===undefined){c=30}if(i===undefined){i=4}$("#"+d).click(function(){if($("#renaming-active").length>0){return}var l=$("#"+f),k=l.text(),j;if(h){j=$("<textarea></textarea>").attr({rows:i,cols:c}).text($.trim(k))}else{j=$("<input type='text'></input>").attr({value:$.trim(k),size:c})}j.attr("id","renaming-active");j.blur(function(){$(this).remove();l.show();if(b){b(j)}});j.keyup(function(n){if(n.keyCode===27){$(this).trigger("blur")}else{if(n.keyCode===13){var m={};m[a]=$(this).val();$(this).trigger("blur");$.ajax({url:e,data:m,error:function(){alert("Text editing for elt "+f+" failed")},success:function(o){if(o!==""){l.text(o)}else{l.html("<em>None</em>")}if(b){b(j)}}})}}});if(g){g(j)}l.hide();j.insertAfter(l);j.focus();j.select();return})}function init_history_items(d,a,c){var b=function(){try{var e=$.jStorage.get("history_expand_state");if(e){for(var g in e){$("#"+g+" div.historyItemBody").show()}}}catch(f){$.jStorage.deleteKey("history_expand_state")}if($.browser.mozilla){$("div.historyItemBody").each(function(){if(!$(this).is(":visible")){$(this).find("pre.peek").css("overflow","hidden")}})}d.each(function(){var j=this.id,h=$(this).children("div.historyItemBody"),i=h.find("pre.peek");$(this).find(".historyItemTitleBar > .historyItemTitle").wrap("<a href='javascript:void(0);'></a>").click(function(){var k;if(h.is(":visible")){if($.browser.mozilla){i.css("overflow","hidden")}h.slideUp("fast");if(!c){k=$.jStorage.get("history_expand_state");if(k){delete k[j];$.jStorage.set("history_expand_state",k)}}}else{h.slideDown("fast",function(){if($.browser.mozilla){i.css("overflow","auto")}});if(!c){k=$.jStorage.get("history_expand_state");if(!k){k={}}k[j]=true;$.jStorage.set("history_expand_state",k)}}return false})});$("#top-links > a.toggle").click(function(){var h=$.jStorage.get("history_expand_state");if(!h){h={}}$("div.historyItemBody:visible").each(function(){if($.browser.mozilla){$(this).find("pre.peek").css("overflow","hidden")}$(this).slideUp("fast");if(h){delete h[$(this).parent().attr("id")]}});$.jStorage.set("history_expand_state",h)}).show()};b()}function commatize(b){b+="";var a=/(\d+)(\d{3})/;while(a.test(b)){b=b.replace(a,"$1,$2")}return b}function reset_tool_search(a){var c=$("#galaxy_tools").contents();if(c.length===0){c=$(document)}$(this).removeClass("search_active");c.find(".toolTitle").removeClass("search_match");c.find(".toolSectionBody").hide();c.find(".toolTitle").show();c.find(".toolPanelLabel").show();c.find(".toolSectionWrapper").each(function(){if($(this).attr("id")!=="recently_used_wrapper"){$(this).show()}else{if($(this).hasClass("user_pref_visible")){$(this).show()}}});c.find("#search-no-results").hide();c.find("#search-spinner").hide();if(a){var b=c.find("#tool-search-query");b.val("search tools")}}var GalaxyAsync=function(a){this.url_dict={};this.log_action=(a===undefined?false:a)};GalaxyAsync.prototype.set_func_url=function(a,b){this.url_dict[a]=b};GalaxyAsync.prototype.set_user_pref=function(a,b){var c=this.url_dict[arguments.callee];if(c===undefined){return false}$.ajax({url:c,data:{pref_name:a,pref_value:b},error:function(){return false},success:function(){return true}})};GalaxyAsync.prototype.log_user_action=function(c,b,d){if(!this.log_action){return}var a=this.url_dict[arguments.callee];if(a===undefined){return false}$.ajax({url:a,data:{action:c,context:b,params:d},error:function(){return false},success:function(){return true}})};function init_refresh_on_change(){$("select[refresh_on_change='true']").off("change").change(function(){var a=$(this),e=a.val(),d=false,c=a.attr("refresh_on_change_values");if(c){c=c.split(",");var b=a.attr("last_selected_value");if($.inArray(e,c)===-1&&$.inArray(b,c)===-1){return}}$(window).trigger("refresh_on_change");$(document).trigger("convert_to_values");a.get(0).form.submit()});$(":checkbox[refresh_on_change='true']").off("click").click(function(){var a=$(this),e=a.val(),d=false,c=a.attr("refresh_on_change_values");if(c){c=c.split(",");var b=a.attr("last_selected_value");if($.inArray(e,c)===-1&&$.inArray(b,c)===-1){return}}$(window).trigger("refresh_on_change");a.get(0).form.submit()});$("a[confirm]").off("click").click(function(){return confirm($(this).attr("confirm"))})}$(document).ready(function(){init_refresh_on_change();if($.fn.tooltip){$(".unified-panel-header [title]").tooltip({placement:"bottom"});$("[title]").tooltip()}make_popup_menus();replace_big_select_inputs(20,1500);$("a").click(function(){var b=$(this);var c=(parent.frames&&parent.frames.galaxy_main);if((b.attr("target")=="galaxy_main")&&(!c)){var a=b.attr("href");if(a.indexOf("?")==-1){a+="?"}else{a+="&"}a+="use_panels=True";b.attr("href",a);b.attr("target","_self")}return b})});
\ No newline at end of file
+(function(){var b=0;var c=["ms","moz","webkit","o"];for(var a=0;a<c.length&&!window.requestAnimationFrame;++a){window.requestAnimationFrame=window[c[a]+"RequestAnimationFrame"];window.cancelRequestAnimationFrame=window[c[a]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame){window.requestAnimationFrame=function(h,e){var d=new Date().getTime();var f=Math.max(0,16-(d-b));var g=window.setTimeout(function(){h(d+f)},f);b=d+f;return g}}if(!window.cancelAnimationFrame){window.cancelAnimationFrame=function(d){clearTimeout(d)}}}());if(!Array.indexOf){Array.prototype.indexOf=function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1}}function obj_length(c){if(c.length!==undefined){return c.length}var b=0;for(var a in c){b++}return b}$.fn.makeAbsolute=function(a){return this.each(function(){var b=$(this);var c=b.position();b.css({position:"absolute",marginLeft:0,marginTop:0,top:c.top,left:c.left,right:$(window).width()-(c.left+b.width())});if(a){b.remove().appendTo("body")}})};function make_popupmenu(b,c){var a=(b.data("menu_options"));b.data("menu_options",c);if(a){return}b.bind("click.show_popup",function(d){$(".popmenu-wrapper").remove();setTimeout(function(){var g=$("<ul class='dropdown-menu' id='"+b.attr("id")+"-menu'></ul>");var f=b.data("menu_options");if(obj_length(f)<=0){$("<li>No Options.</li>").appendTo(g)}$.each(f,function(j,i){if(i){var l=i.action||i;g.append($("<li></li>").append($("<a>").attr("href",i.url).html(j).click(l)))}else{g.append($("<li></li>").addClass("head").append($("<a href='#'></a>").html(j)))}});var h=$("<div class='popmenu-wrapper' style='position: absolute;left: 0; top: -1000;'></div>").append(g).appendTo("body");var e=d.pageX-h.width()/2;e=Math.min(e,$(document).scrollLeft()+$(window).width()-$(h).width()-5);e=Math.max(e,$(document).scrollLeft()+5);h.css({top:d.pageY,left:e})},10);setTimeout(function(){var f=function(h){$(h).bind("click.close_popup",function(){$(".popmenu-wrapper").remove();h.unbind("click.close_popup")})};f($(window.document));f($(window.top.document));for(var e=window.top.frames.length;e--;){var g=$(window.top.frames[e].document);f(g)}},50);return false})}function make_popup_menus(a){a=a||document;$(a).find("div[popupmenu]").each(function(){var b={};var d=$(this);d.find("a").each(function(){var g=$(this),i=g.get(0),e=i.getAttribute("confirm"),f=i.getAttribute("href"),h=i.getAttribute("target");if(!f){b[g.text()]=null}else{b[g.text()]={url:f,action:function(){if(!e||confirm(e)){if(h){window.open(f,h);return false}else{g.click()}}}}}});var c=$(a).find("#"+d.attr("popupmenu"));c.find("a").bind("click",function(f){f.stopPropagation();return true});make_popupmenu(c,b);c.addClass("popup");d.remove()})}function naturalSort(j,h){var p=/(-?[0-9\.]+)/g,k=j.toString().toLowerCase()||"",g=h.toString().toLowerCase()||"",l=String.fromCharCode(0),n=k.replace(p,l+"$1"+l).split(l),e=g.replace(p,l+"$1"+l).split(l),d=(new Date(k)).getTime(),o=d?(new Date(g)).getTime():null;if(o){if(d<o){return -1}else{if(d>o){return 1}}}var m,f;for(var i=0,c=Math.max(n.length,e.length);i<c;i++){m=parseFloat(n[i])||n[i];f=parseFloat(e[i])||e[i];if(m<f){return -1}else{if(m>f){return 1}}}return 0}$.fn.refresh_select2=function(){var b=$(this);var a={placeholder:"Click to select",closeOnSelect:!b.is("[MULTIPLE]"),dropdownAutoWidth:true,containerCssClass:"select2-minwidth"};return b.select2(a)};function replace_big_select_inputs(a,c,b){if(!jQuery.fn.select2){return}if(a===undefined){a=20}if(c===undefined){c=3000}b=b||$("select");b.each(function(){var e=$(this).not("[multiple]");var d=e.find("option").length;if((d<a)||(d>c)){return}if(e.hasClass("no-autocomplete")){return}e.refresh_select2()})}$.fn.make_text_editable=function(g){var d=("num_cols" in g?g.num_cols:30),c=("num_rows" in g?g.num_rows:4),e=("use_textarea" in g?g.use_textarea:false),b=("on_finish" in g?g.on_finish:null),f=("help_text" in g?g.help_text:null);var a=$(this);a.addClass("editable-text").click(function(l){if($(this).children(":input").length>0){return}a.removeClass("editable-text");var i=function(m){a.find(":input").remove();if(m!==""){a.text(m)}else{a.html("<br>")}a.addClass("editable-text");if(b){b(m)}};var h=("cur_text" in g?g.cur_text:a.text()),k,j;if(e){k=$("<textarea/>").attr({rows:c,cols:d}).text($.trim(h)).keyup(function(m){if(m.keyCode===27){i(h)}});j=$("<button/>").text("Done").click(function(){i(k.val());return false})}else{k=$("<input type='text'/>").attr({value:$.trim(h),size:d}).blur(function(){i(h)}).keyup(function(m){if(m.keyCode===27){$(this).trigger("blur")}else{if(m.keyCode===13){i($(this).val())}}m.stopPropagation()})}a.text("");a.append(k);if(j){a.append(j)}k.focus();k.select();l.stopPropagation()});if(f){a.attr("title",f).tooltip()}return a};function async_save_text(d,f,e,a,c,h,i,g,b){if(c===undefined){c=30}if(i===undefined){i=4}$("#"+d).click(function(){if($("#renaming-active").length>0){return}var l=$("#"+f),k=l.text(),j;if(h){j=$("<textarea></textarea>").attr({rows:i,cols:c}).text($.trim(k))}else{j=$("<input type='text'></input>").attr({value:$.trim(k),size:c})}j.attr("id","renaming-active");j.blur(function(){$(this).remove();l.show();if(b){b(j)}});j.keyup(function(n){if(n.keyCode===27){$(this).trigger("blur")}else{if(n.keyCode===13){var m={};m[a]=$(this).val();$(this).trigger("blur");$.ajax({url:e,data:m,error:function(){alert("Text editing for elt "+f+" failed")},success:function(o){if(o!==""){l.text(o)}else{l.html("<em>None</em>")}if(b){b(j)}}})}}});if(g){g(j)}l.hide();j.insertAfter(l);j.focus();j.select();return})}function init_history_items(d,a,c){var b=function(){try{var e=$.jStorage.get("history_expand_state");if(e){for(var g in e){$("#"+g+" div.historyItemBody").show()}}}catch(f){$.jStorage.deleteKey("history_expand_state")}if($.browser.mozilla){$("div.historyItemBody").each(function(){if(!$(this).is(":visible")){$(this).find("pre.peek").css("overflow","hidden")}})}d.each(function(){var j=this.id,h=$(this).children("div.historyItemBody"),i=h.find("pre.peek");$(this).find(".historyItemTitleBar > .historyItemTitle").wrap("<a href='javascript:void(0);'></a>").click(function(){var k;if(h.is(":visible")){if($.browser.mozilla){i.css("overflow","hidden")}h.slideUp("fast");if(!c){k=$.jStorage.get("history_expand_state");if(k){delete k[j];$.jStorage.set("history_expand_state",k)}}}else{h.slideDown("fast",function(){if($.browser.mozilla){i.css("overflow","auto")}});if(!c){k=$.jStorage.get("history_expand_state");if(!k){k={}}k[j]=true;$.jStorage.set("history_expand_state",k)}}return false})});$("#top-links > a.toggle").click(function(){var h=$.jStorage.get("history_expand_state");if(!h){h={}}$("div.historyItemBody:visible").each(function(){if($.browser.mozilla){$(this).find("pre.peek").css("overflow","hidden")}$(this).slideUp("fast");if(h){delete h[$(this).parent().attr("id")]}});$.jStorage.set("history_expand_state",h)}).show()};b()}function commatize(b){b+="";var a=/(\d+)(\d{3})/;while(a.test(b)){b=b.replace(a,"$1,$2")}return b}function reset_tool_search(a){var c=$("#galaxy_tools").contents();if(c.length===0){c=$(document)}$(this).removeClass("search_active");c.find(".toolTitle").removeClass("search_match");c.find(".toolSectionBody").hide();c.find(".toolTitle").show();c.find(".toolPanelLabel").show();c.find(".toolSectionWrapper").each(function(){if($(this).attr("id")!=="recently_used_wrapper"){$(this).show()}else{if($(this).hasClass("user_pref_visible")){$(this).show()}}});c.find("#search-no-results").hide();c.find("#search-spinner").hide();if(a){var b=c.find("#tool-search-query");b.val("search tools")}}var GalaxyAsync=function(a){this.url_dict={};this.log_action=(a===undefined?false:a)};GalaxyAsync.prototype.set_func_url=function(a,b){this.url_dict[a]=b};GalaxyAsync.prototype.set_user_pref=function(a,b){var c=this.url_dict[arguments.callee];if(c===undefined){return false}$.ajax({url:c,data:{pref_name:a,pref_value:b},error:function(){return false},success:function(){return true}})};GalaxyAsync.prototype.log_user_action=function(c,b,d){if(!this.log_action){return}var a=this.url_dict[arguments.callee];if(a===undefined){return false}$.ajax({url:a,data:{action:c,context:b,params:d},error:function(){return false},success:function(){return true}})};function init_refresh_on_change(){$("select[refresh_on_change='true']").off("change").change(function(){var a=$(this),e=a.val(),d=false,c=a.attr("refresh_on_change_values");if(c){c=c.split(",");var b=a.attr("last_selected_value");if($.inArray(e,c)===-1&&$.inArray(b,c)===-1){return}}$(window).trigger("refresh_on_change");$(document).trigger("convert_to_values");a.get(0).form.submit()});$(":checkbox[refresh_on_change='true']").off("click").click(function(){var a=$(this),e=a.val(),d=false,c=a.attr("refresh_on_change_values");if(c){c=c.split(",");var b=a.attr("last_selected_value");if($.inArray(e,c)===-1&&$.inArray(b,c)===-1){return}}$(window).trigger("refresh_on_change");a.get(0).form.submit()});$("a[confirm]").off("click").click(function(){return confirm($(this).attr("confirm"))})}$(document).ready(function(){init_refresh_on_change();if($.fn.tooltip){$(".unified-panel-header [title]").tooltip({placement:"bottom"});$("[title]").tooltip()}make_popup_menus();replace_big_select_inputs(20,1500);$("a").click(function(){var b=$(this);var c=(parent.frames&&parent.frames.galaxy_main);if((b.attr("target")=="galaxy_main")&&(!c)){var a=b.attr("href");if(a.indexOf("?")==-1){a+="?"}else{a+="&"}a+="use_panels=True";b.attr("href",a);b.attr("target","_self")}return b})});
\ No newline at end of file
diff -r 721a68434e8df24e7fd58d51b734ac7e0caac0a0 -r 548ab24667d6206780237bd807f7d857a484c461 static/style/blue/base.css
--- a/static/style/blue/base.css
+++ b/static/style/blue/base.css
@@ -1232,7 +1232,7 @@
.select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0) !important;width:1px !important;height:1px !important;border:0 !important;margin:0 !important;padding:0 !important;overflow:hidden !important;position:absolute !important;outline:0 !important;left:0px !important;top:0px !important}
.select2-display-none{display:none}
.select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}
-@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){.select2-search input,.select2-search-choice-close,.select2-container .select2-choice abbr,.select2-container .select2-choice .select2-arrow b{background-image:url('../images/select2x2.png') !important;background-repeat:no-repeat !important;background-size:60px 40px !important} .select2-search input{background-position:100% -21px !important}}.select2-container{min-width:256px}
+@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){.select2-search input,.select2-search-choice-close,.select2-container .select2-choice abbr,.select2-container .select2-choice .select2-arrow b{background-image:url('../images/select2x2.png') !important;background-repeat:no-repeat !important;background-size:60px 40px !important} .select2-search input{background-position:100% -21px !important}}.select2-minwidth{min-width:256px}
.galaxy-frame{}.galaxy-frame .corner{-moz-border-radius:5px;border-radius:5px}
.galaxy-frame .toggle{color:gold}
.galaxy-frame .frame-background{z-index:1000;position:absolute;display:none;top:0px;left:0px;height:100%;width:100%;opacity:0.6;background:#000;overflow:auto}
diff -r 721a68434e8df24e7fd58d51b734ac7e0caac0a0 -r 548ab24667d6206780237bd807f7d857a484c461 static/style/src/less/base.less
--- a/static/style/src/less/base.less
+++ b/static/style/src/less/base.less
@@ -16,7 +16,7 @@
@import "select2.less";
/* fix for zero width select2 - remove when fixed there */
-.select2-container {
+.select2-minwidth {
min-width: 256px;
}
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.
1
0

[galaxyproject/usegalaxy-playbook] d55ec9: Configure and install ucsc_build_sites.txt.
by GitHub 23 Sep '14
by GitHub 23 Sep '14
23 Sep '14
Branch: refs/heads/master
Home: https://github.com/galaxyproject/usegalaxy-playbook
Commit: d55ec9fe78081be632dd18d87770e624e9e0fc91
https://github.com/galaxyproject/usegalaxy-playbook/commit/d55ec9fe78081be6…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2014-09-23 (Tue, 23 Sep 2014)
Changed paths:
A files/galaxy/test.galaxyproject.org/config/ucsc_build_sites.txt
A files/galaxy/usegalaxy.org/config/ucsc_build_sites.txt
M production/group_vars/galaxyservers.yml
M stage/group_vars/galaxyservers.yml
Log Message:
-----------
Configure and install ucsc_build_sites.txt.
1
0

commit/galaxy-central: natefoo: Update tag latest_2014.08.11 for changeset 9f15bf53a11b
by commits-noreply@bitbucket.org 23 Sep '14
by commits-noreply@bitbucket.org 23 Sep '14
23 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/721a68434e8d/
Changeset: 721a68434e8d
Branch: stable
User: natefoo
Date: 2014-09-23 13:00:19+00:00
Summary: Update tag latest_2014.08.11 for changeset 9f15bf53a11b
Affected #: 1 file
diff -r 9f15bf53a11b8a91301381d836271a0ac3b23e71 -r 721a68434e8df24e7fd58d51b734ac7e0caac0a0 .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -18,4 +18,4 @@
81fbe25bd02edcd53065e8e4476dd1dfb5a72cf2 latest_2013.11.04
2a756ca2cb1826db7796018e77d12e2dd7b67603 latest_2014.02.10
ca45b78adb4152fc6e7395514d46eba6b7d0b838 release_2014.08.11
-9f495158c5ba45fcf61fc37d82aa8545eaba0bd5 latest_2014.08.11
+9f15bf53a11b8a91301381d836271a0ac3b23e71 latest_2014.08.11
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.
1
0

commit/galaxy-central: jmchilton: Continue flailing on environment variable configuraiton of Galaxy.
by commits-noreply@bitbucket.org 22 Sep '14
by commits-noreply@bitbucket.org 22 Sep '14
22 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/f721ff18d976/
Changeset: f721ff18d976
Branch: next-stable
User: jmchilton
Date: 2014-09-23 00:01:05+00:00
Summary: Continue flailing on environment variable configuraiton of Galaxy.
Expand variables earlier right in app_factory so middleware, etc... pick up defaults/overrrides.
In particular GALAXY_CONFIG_OVERRIDE_DEBUG should now work properly. GALAXY_CONFIG_DEBUG cannot be used because the sample config template overrides debug's default.
Thanks to Bjoern for the bug report.
Affected #: 2 files
diff -r d8fc0bf14dfeb6f59cef39e92984a46f2fafc4dc -r f721ff18d976e2876648310d59cb6b8c4f6f258b lib/galaxy/config.py
--- a/lib/galaxy/config.py
+++ b/lib/galaxy/config.py
@@ -13,7 +13,6 @@
import ConfigParser
from datetime import timedelta
from galaxy.web.formatting import expand_pretty_datetime_format
-from galaxy.util.properties import load_app_properties
from galaxy.util import string_as_bool
from galaxy.util import listify
from galaxy.util.dbkeys import GenomeBuilds
@@ -37,9 +36,6 @@
deprecated_options = ( 'database_file', )
def __init__( self, **kwargs ):
- kwargs = load_app_properties(
- kwds=kwargs
- )
self.config_dict = kwargs
self.root = kwargs.get( 'root_dir', '.' )
diff -r d8fc0bf14dfeb6f59cef39e92984a46f2fafc4dc -r f721ff18d976e2876648310d59cb6b8c4f6f258b lib/galaxy/webapps/galaxy/buildapp.py
--- a/lib/galaxy/webapps/galaxy/buildapp.py
+++ b/lib/galaxy/webapps/galaxy/buildapp.py
@@ -19,6 +19,7 @@
import galaxy.web.framework.webapp
from galaxy import util
from galaxy.util import asbool
+from galaxy.util.properties import load_app_properties
import logging
log = logging.getLogger( __name__ )
@@ -31,6 +32,9 @@
"""
Return a wsgi application serving the root object
"""
+ kwargs = load_app_properties(
+ kwds=kwargs
+ )
# Create the Galaxy application unless passed in
if 'app' in kwargs:
app = kwargs.pop( 'app' )
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.
1
0

commit/galaxy-central: jmchilton: Merge latest next-stable.
by commits-noreply@bitbucket.org 22 Sep '14
by commits-noreply@bitbucket.org 22 Sep '14
22 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/5cda4ac27e0a/
Changeset: 5cda4ac27e0a
User: jmchilton
Date: 2014-09-22 23:33:42+00:00
Summary: Merge latest next-stable.
Affected #: 5 files
diff -r f89efbcfd102b4aab4ffe29285348e3ee6a02cca -r 5cda4ac27e0a3c7b688e479a593698bfb3f0deb8 .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -18,4 +18,4 @@
81fbe25bd02edcd53065e8e4476dd1dfb5a72cf2 latest_2013.11.04
2a756ca2cb1826db7796018e77d12e2dd7b67603 latest_2014.02.10
ca45b78adb4152fc6e7395514d46eba6b7d0b838 release_2014.08.11
-21f2a42a06d7d2b8c408aed22c691f5e8b209311 latest_2014.08.11
+9f495158c5ba45fcf61fc37d82aa8545eaba0bd5 latest_2014.08.11
diff -r f89efbcfd102b4aab4ffe29285348e3ee6a02cca -r 5cda4ac27e0a3c7b688e479a593698bfb3f0deb8 lib/galaxy/config.py
--- a/lib/galaxy/config.py
+++ b/lib/galaxy/config.py
@@ -13,6 +13,7 @@
import ConfigParser
from datetime import timedelta
from galaxy.web.formatting import expand_pretty_datetime_format
+from galaxy.util.properties import load_app_properties
from galaxy.util import string_as_bool
from galaxy.util import listify
from galaxy.util.dbkeys import GenomeBuilds
@@ -20,9 +21,6 @@
log = logging.getLogger( __name__ )
-CONFIG_DEFAULT_PREFIX = "GALAXY_CONFIG_"
-CONFIG_OVERRIDE_PREFIX = "GALAXY_CONFIG_OVERRIDE_"
-
def resolve_path( path, root ):
"""If 'path' is relative make absolute by prepending 'root'"""
@@ -39,15 +37,9 @@
deprecated_options = ( 'database_file', )
def __init__( self, **kwargs ):
- for key in os.environ:
- if key.startswith( CONFIG_OVERRIDE_PREFIX ):
- config_key = key[ len( CONFIG_OVERRIDE_PREFIX ): ].lower()
- kwargs[ config_key ] = os.environ[ key ]
- elif key.startswith( CONFIG_DEFAULT_PREFIX ):
- config_key = key[ len( CONFIG_DEFAULT_PREFIX ): ].lower()
- if config_key not in kwargs:
- kwargs[ config_key ] = os.environ[ key ]
-
+ kwargs = load_app_properties(
+ kwds=kwargs
+ )
self.config_dict = kwargs
self.root = kwargs.get( 'root_dir', '.' )
diff -r f89efbcfd102b4aab4ffe29285348e3ee6a02cca -r 5cda4ac27e0a3c7b688e479a593698bfb3f0deb8 lib/galaxy/model/orm/scripts.py
--- a/lib/galaxy/model/orm/scripts.py
+++ b/lib/galaxy/model/orm/scripts.py
@@ -3,7 +3,6 @@
"""
import logging
import os.path
-from ConfigParser import SafeConfigParser
from galaxy import eggs
@@ -12,6 +11,7 @@
eggs.require( "SQLAlchemy" )
eggs.require( "sqlalchemy_migrate" )
+from galaxy.util.properties import load_app_properties
from galaxy.model.orm import dialect_to_egg
import pkg_resources
@@ -112,13 +112,13 @@
if cwd:
config_file = os.path.join( cwd, config_file )
- cp = SafeConfigParser()
- cp.read( config_file )
+ properties = load_app_properties( ini_file=config_file )
- if cp.has_option( "app:main", "%sdatabase_connection" % config_prefix):
- db_url = cp.get( "app:main", "%sdatabase_connection" % config_prefix )
- elif cp.has_option( "app:main", "%sdatabase_file" % config_prefix ):
- db_url = "sqlite:///%s?isolation_level=IMMEDIATE" % cp.get( "app:main", "database_file" )
+ if ("%sdatabase_connection" % config_prefix) in properties:
+ db_url = properties[ "%sdatabase_connection" % config_prefix ]
+ elif ("%sdatabase_file" % config_prefix) in properties:
+ database_file = properties[ "%sdatabase_file" % config_prefix ]
+ db_url = "sqlite:///%s?isolation_level=IMMEDIATE" % database_file
else:
db_url = "sqlite:///%s?isolation_level=IMMEDIATE" % default_sqlite_file
diff -r f89efbcfd102b4aab4ffe29285348e3ee6a02cca -r 5cda4ac27e0a3c7b688e479a593698bfb3f0deb8 lib/galaxy/util/properties.py
--- /dev/null
+++ b/lib/galaxy/util/properties.py
@@ -0,0 +1,41 @@
+""" Module used to blend ini, environment, and explicit dictionary properties
+to determine application configuration. Some hard coded defaults for Galaxy but
+this should be reusable by tool shed and pulsar as well.
+"""
+import os
+import os.path
+
+
+def load_app_properties(
+ kwds={},
+ ini_file=None,
+ ini_section="app:main",
+ config_prefix="GALAXY_CONFIG_"
+):
+ properties = kwds.copy() if kwds else {}
+ if ini_file:
+ defaults = {
+ 'here': os.path.dirname(os.path.abspath(ini_file)),
+ '__file__': os.path.abspath(ini_file)
+ }
+ # Mimic the way loadwsgi loads configuration files - needed for
+ # correctness given the very specific ways interpolation is handled.
+ from galaxy.util.pastescript.loadwsgi import NicerConfigParser
+ parser = NicerConfigParser(ini_file, defaults=defaults)
+ parser.optionxform = str # Don't lower-case keys
+ with open(ini_file) as f:
+ parser.read_file(f)
+
+ properties.update( dict( parser.items( ini_section ) ) )
+
+ override_prefix = "%sOVERRIDE_" % config_prefix
+ for key in os.environ:
+ if key.startswith( override_prefix ):
+ config_key = key[ len( override_prefix ): ].lower()
+ properties[ config_key ] = os.environ[ key ]
+ elif key.startswith( config_prefix ):
+ config_key = key[ len( config_prefix ): ].lower()
+ if config_key not in properties:
+ properties[ config_key ] = os.environ[ key ]
+
+ return properties
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.
1
0

commit/galaxy-central: jmchilton: Fix ORM scripts for 42f677bab2e4880b62758614fcb2c7dc27013788.
by commits-noreply@bitbucket.org 22 Sep '14
by commits-noreply@bitbucket.org 22 Sep '14
22 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/d8fc0bf14dfe/
Changeset: d8fc0bf14dfe
Branch: next-stable
User: jmchilton
Date: 2014-09-22 23:14:12+00:00
Summary: Fix ORM scripts for 42f677bab2e4880b62758614fcb2c7dc27013788.
Updating common Python module used by ORM scripts (create_db.sh/migrate_db.sh/db_shell.py) to allow the same configuration via enviornment variables as well. Thanks to Bjoern for the bug report/feature request.
Affected #: 3 files
diff -r fa3bb4ad3b09d41cddc20cf0158f228c97866c0e -r d8fc0bf14dfeb6f59cef39e92984a46f2fafc4dc lib/galaxy/config.py
--- a/lib/galaxy/config.py
+++ b/lib/galaxy/config.py
@@ -13,6 +13,7 @@
import ConfigParser
from datetime import timedelta
from galaxy.web.formatting import expand_pretty_datetime_format
+from galaxy.util.properties import load_app_properties
from galaxy.util import string_as_bool
from galaxy.util import listify
from galaxy.util.dbkeys import GenomeBuilds
@@ -20,9 +21,6 @@
log = logging.getLogger( __name__ )
-CONFIG_DEFAULT_PREFIX = "GALAXY_CONFIG_"
-CONFIG_OVERRIDE_PREFIX = "GALAXY_CONFIG_OVERRIDE_"
-
def resolve_path( path, root ):
"""If 'path' is relative make absolute by prepending 'root'"""
@@ -39,15 +37,9 @@
deprecated_options = ( 'database_file', )
def __init__( self, **kwargs ):
- for key in os.environ:
- if key.startswith( CONFIG_OVERRIDE_PREFIX ):
- config_key = key[ len( CONFIG_OVERRIDE_PREFIX ): ].lower()
- kwargs[ config_key ] = os.environ[ key ]
- elif key.startswith( CONFIG_DEFAULT_PREFIX ):
- config_key = key[ len( CONFIG_DEFAULT_PREFIX ): ].lower()
- if config_key not in kwargs:
- kwargs[ config_key ] = os.environ[ key ]
-
+ kwargs = load_app_properties(
+ kwds=kwargs
+ )
self.config_dict = kwargs
self.root = kwargs.get( 'root_dir', '.' )
diff -r fa3bb4ad3b09d41cddc20cf0158f228c97866c0e -r d8fc0bf14dfeb6f59cef39e92984a46f2fafc4dc lib/galaxy/model/orm/scripts.py
--- a/lib/galaxy/model/orm/scripts.py
+++ b/lib/galaxy/model/orm/scripts.py
@@ -3,7 +3,6 @@
"""
import logging
import os.path
-from ConfigParser import SafeConfigParser
from galaxy import eggs
@@ -12,6 +11,7 @@
eggs.require( "SQLAlchemy" )
eggs.require( "sqlalchemy_migrate" )
+from galaxy.util.properties import load_app_properties
from galaxy.model.orm import dialect_to_egg
import pkg_resources
@@ -112,13 +112,13 @@
if cwd:
config_file = os.path.join( cwd, config_file )
- cp = SafeConfigParser()
- cp.read( config_file )
+ properties = load_app_properties( ini_file=config_file )
- if cp.has_option( "app:main", "%sdatabase_connection" % config_prefix):
- db_url = cp.get( "app:main", "%sdatabase_connection" % config_prefix )
- elif cp.has_option( "app:main", "%sdatabase_file" % config_prefix ):
- db_url = "sqlite:///%s?isolation_level=IMMEDIATE" % cp.get( "app:main", "database_file" )
+ if ("%sdatabase_connection" % config_prefix) in properties:
+ db_url = properties[ "%sdatabase_connection" % config_prefix ]
+ elif ("%sdatabase_file" % config_prefix) in properties:
+ database_file = properties[ "%sdatabase_file" % config_prefix ]
+ db_url = "sqlite:///%s?isolation_level=IMMEDIATE" % database_file
else:
db_url = "sqlite:///%s?isolation_level=IMMEDIATE" % default_sqlite_file
diff -r fa3bb4ad3b09d41cddc20cf0158f228c97866c0e -r d8fc0bf14dfeb6f59cef39e92984a46f2fafc4dc lib/galaxy/util/properties.py
--- /dev/null
+++ b/lib/galaxy/util/properties.py
@@ -0,0 +1,41 @@
+""" Module used to blend ini, environment, and explicit dictionary properties
+to determine application configuration. Some hard coded defaults for Galaxy but
+this should be reusable by tool shed and pulsar as well.
+"""
+import os
+import os.path
+
+
+def load_app_properties(
+ kwds={},
+ ini_file=None,
+ ini_section="app:main",
+ config_prefix="GALAXY_CONFIG_"
+):
+ properties = kwds.copy() if kwds else {}
+ if ini_file:
+ defaults = {
+ 'here': os.path.dirname(os.path.abspath(ini_file)),
+ '__file__': os.path.abspath(ini_file)
+ }
+ # Mimic the way loadwsgi loads configuration files - needed for
+ # correctness given the very specific ways interpolation is handled.
+ from galaxy.util.pastescript.loadwsgi import NicerConfigParser
+ parser = NicerConfigParser(ini_file, defaults=defaults)
+ parser.optionxform = str # Don't lower-case keys
+ with open(ini_file) as f:
+ parser.read_file(f)
+
+ properties.update( dict( parser.items( ini_section ) ) )
+
+ override_prefix = "%sOVERRIDE_" % config_prefix
+ for key in os.environ:
+ if key.startswith( override_prefix ):
+ config_key = key[ len( override_prefix ): ].lower()
+ properties[ config_key ] = os.environ[ key ]
+ elif key.startswith( config_prefix ):
+ config_key = key[ len( config_prefix ): ].lower()
+ if config_key not in properties:
+ properties[ config_key ] = os.environ[ key ]
+
+ return properties
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.
1
0

commit/galaxy-central: guerler: Ui: Fix slider and option styles
by commits-noreply@bitbucket.org 22 Sep '14
by commits-noreply@bitbucket.org 22 Sep '14
22 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/f89efbcfd102/
Changeset: f89efbcfd102
User: guerler
Date: 2014-09-22 21:11:09+00:00
Summary: Ui: Fix slider and option styles
Affected #: 2 files
diff -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c -r f89efbcfd102b4aab4ffe29285348e3ee6a02cca static/style/blue/base.css
--- a/static/style/blue/base.css
+++ b/static/style/blue/base.css
@@ -148,7 +148,7 @@
.form-control::-moz-placeholder{color:#999}
.form-control:-ms-input-placeholder{color:#999}
.form-control::-webkit-input-placeholder{color:#999}
-.form-control,.ui-options,.ui-form-slider .ui-form-slider-text,.ui-input,.ui-textarea{display:block;width:100%;height:27px;padding:4px 10px;font-size:12px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #aaa;border-radius:3px;-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);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}
+.form-control,.ui-input,.ui-textarea,.ui-options,.ui-form-slider .ui-form-slider-text,.ui-select-multiple{display:block;width:100%;height:27px;padding:4px 10px;font-size:12px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #aaa;border-radius:3px;-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);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}
.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}
textarea.form-control{height:auto}
.form-group{margin-bottom:15px}
@@ -1279,12 +1279,7 @@
.upload-settings .upload-settings-cover{position:absolute;width:100%;height:100%;top:0px;left:0px;background:#fff;opacity:0.4;cursor:no-drop}
.no-highlight,.ui-button-icon,.ui-portlet,.ui-portlet-repeat{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none;}
.ui-error{-moz-border-radius:3px;border-radius:3px;background:#f9c7c5;padding:5px}
-.ui-options{height:100% !important}
.ui-table-form-error{display:none}.ui-table-form-error .ui-table-form-error-text{padding-left:5px}
-.ui-form-slider .ui-form-slider-text{width:100px;float:left}
-.ui-form-slider .ui-form-slider-element{width:calc(100% - 110px);float:left;top:8px;left:10px}
-.ui-radiobutton{width:100%}.ui-radiobutton label{height:23px;line-height:1em}
-.ui-radiobutton i{padding-right:5px}
.ui-table tbody{cursor:pointer}
.ui-table-plain tbody td{padding:5px 0px 5px 0px !important;border:none !important}
.ui-table-plain tbody{cursor:auto !important}
@@ -1299,7 +1294,6 @@
.ui-button-icon .button{margin-right:5px;margin-left:5px}.ui-button-icon .button .title{position:relative;font-size:0.8em;font-weight:normal;top:-1px}
.ui-button-icon .button.disabled{filter:alpha(opacity=65);opacity:.65;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);filter:alpha(opacity=65)}
.ui-button-icon-plain{border:none !important;background:none !important}
-.ui-textarea{height:100px !important}
.ui-tabs .ui-tabs-add{font-size:0.8em;margin-right:5px}
.ui-tabs .ui-tabs-delete{font-size:0.8em;margin-left:5px;cursor:pointer}
.ui-portlet,.ui-portlet-repeat,.ui-portlet-repeat{border:solid #d6b161 1px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;position:relative;clear:both;width:auto;height:100%}.ui-portlet .portlet-header{background:#ebd9b2;border-bottom:solid #d6b161 1px;padding:2px 8px;overflow:visible;float:right;width:100%}.ui-portlet .portlet-header h1,.ui-portlet .portlet-header h2,.ui-portlet .portlet-header h3,.ui-portlet .portlet-header h4,.ui-portlet .portlet-header h5,.ui-portlet .portlet-header h6{float:left;font-weight:normal;display:inline-block;vertical-align:middle;font-size:1em;margin:3px}.ui-portlet .portlet-header h1 .icon,.ui-portlet .portlet-header h2 .icon,.ui-portlet .portlet-header h3 .icon,.ui-portlet .portlet-header h4 .icon,.ui-portlet .portlet-header h5 .icon,.ui-portlet .portlet-header h6 .icon{font-size:1.2em}
@@ -1311,7 +1305,14 @@
.ui-portlet-repeat .portlet-content{padding:0px}.ui-portlet-repeat .portlet-content .content{padding:0px;padding-left:10px}
.ui-popover{max-width:700px;display:none}.ui-popover .popover-close{position:absolute;right:10px;top:7px;font-size:1.2em;cursor:pointer}
.ui-popover .popover-title{padding:4px 10px}
-.ui-select,.ui-select-multiple{position:relative;height:27px;overflow:hidden;border:1px solid #bfbfbf;-moz-border-radius:3px;border-radius:3px}.ui-select .button{position:relative;width:25px;height:100%;float:right;border-left:1px solid #bfbfbf;padding-left:9px;padding-top:4px;background:#f2f2f2}
+.ui-input,.ui-textarea,.ui-options,.ui-form-slider .ui-form-slider-text,.ui-select-multiple,.ui-textarea,.ui-options,.ui-form-slider .ui-form-slider-text,.ui-select-multiple{background:transparent}
+.ui-textarea{height:100px !important}
+.ui-options{height:100% !important}
+.ui-form-slider{display:inline-block;width:100%}.ui-form-slider .ui-form-slider-text{width:100px;float:left}
+.ui-form-slider .ui-form-slider-element{width:calc(100% - 110px);float:left;top:8px;left:10px}
+.ui-radiobutton{width:100%}.ui-radiobutton label{height:23px;line-height:1em}
+.ui-radiobutton i{padding-right:5px}
+.ui-select{position:relative;height:27px;overflow:hidden;border:1px solid #bfbfbf;-moz-border-radius:3px;border-radius:3px}.ui-select .button{position:relative;width:25px;height:100%;float:right;border-left:1px solid #bfbfbf;padding-left:9px;padding-top:4px;background:#f2f2f2}
.ui-select select{position:absolute;top:0px;height:100%;width:100%;padding-left:5px;cursor:pointer;background:transparent;border:0;border-radius:0;-webkit-appearance:none}
.ui-select-multiple{height:100% !important;width:100% !important}
.libraryRow{background-color:#ebd9b2}
diff -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c -r f89efbcfd102b4aab4ffe29285348e3ee6a02cca static/style/src/less/ui.less
--- a/static/style/src/less/ui.less
+++ b/static/style/src/less/ui.less
@@ -12,11 +12,6 @@
padding: 5px;
}
-.ui-options {
- &:extend(.form-control);
- height: 100% !important;
-}
-
.ui-table-form-error {
display: none;
.ui-table-form-error-text {
@@ -24,33 +19,6 @@
}
}
-.ui-form-slider {
- .ui-form-slider-text {
- &:extend(.form-control);
- width: 100px;
- float: left;
- }
-
- .ui-form-slider-element {
- width: ~'calc(100% - 110px)';
- float: left;
- top: 8px;
- left: 10px;
- }
-}
-
-.ui-radiobutton {
- width: 100%;
- label {
- height: 23px;
- line-height: 1em;
- }
-
- i {
- padding-right: 5px;
- }
-}
-
.ui-table {
&:extend(.grid);
@@ -143,15 +111,6 @@
background: none !important;
}
-.ui-input {
- &:extend(.form-control);
-}
-
-.ui-textarea {
- &:extend(.form-control);
- height: 100px !important;
-}
-
.ui-tabs {
.ui-tabs-add {
font-size : 0.8em;
@@ -266,6 +225,51 @@
}
}
+.ui-input {
+ &:extend(.form-control);
+ background: transparent;
+}
+
+.ui-textarea {
+ &:extend(.ui-input);
+ height: 100px !important;
+}
+
+.ui-options {
+ &:extend(.ui-input);
+ height: 100% !important;
+}
+
+
+.ui-form-slider {
+ display: inline-block;
+ width: 100%;
+ .ui-form-slider-text {
+ &:extend(.ui-input);
+ width: 100px;
+ float: left;
+ }
+
+ .ui-form-slider-element {
+ width: ~'calc(100% - 110px)';
+ float: left;
+ top: 8px;
+ left: 10px;
+ }
+}
+
+.ui-radiobutton {
+ width: 100%;
+ label {
+ height: 23px;
+ line-height: 1em;
+ }
+
+ i {
+ padding-right: 5px;
+ }
+}
+
.ui-select {
position: relative;
height: 27px;
@@ -300,7 +304,7 @@
}
.ui-select-multiple {
- &:extend(.ui-select);
+ &:extend(.ui-input);
height: 100% !important;
width: 100% !important;
}
\ No newline at end of file
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.
1
0

commit/galaxy-central: guerler: ToolForm: Ensure correct order of repeat blocks, adjust to api changes, add validation, fix minor issues
by commits-noreply@bitbucket.org 22 Sep '14
by commits-noreply@bitbucket.org 22 Sep '14
22 Sep '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/5636e8ac71d5/
Changeset: 5636e8ac71d5
User: guerler
Date: 2014-09-22 20:41:51+00:00
Summary: ToolForm: Ensure correct order of repeat blocks, adjust to api changes, add validation, fix minor issues
Affected #: 28 files
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/tools/tools-datasets.js
--- a/client/galaxy/scripts/mvc/tools/tools-datasets.js
+++ b/client/galaxy/scripts/mvc/tools/tools-datasets.js
@@ -24,7 +24,8 @@
});
},
- // filter datasets by data type
+ /** Filters datasets by data type.
+ */
filterType: function(options) {
options = options || {};
return this.currHistoryContents.filter(function(content){
@@ -43,7 +44,8 @@
});
},
- // filter datasets by id
+ /** Filter datasets by id.
+ */
filter: function(filter_id) {
return _.first( this.currHistoryContents.filter( function( content ){ return content.get( 'id' ) === filter_id; }) );
}
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/tools/tools-form.js
--- a/client/galaxy/scripts/mvc/tools/tools-form.js
+++ b/client/galaxy/scripts/mvc/tools/tools-form.js
@@ -1,4 +1,4 @@
-/*
+/**
This is the main class of the tool form plugin. It is referenced as 'app' in all lower level modules.
*/
define(['mvc/ui/ui-portlet', 'mvc/ui/ui-misc',
@@ -37,14 +37,14 @@
// creates the job handler
this.job_handler = new ToolJobs(this);
-
- // reset field list
+
+ // reset field list, which contains the input field elements
this.field_list = {};
- // reset sequential input definition list
+ // reset sequential input definition list, which contains the input definitions as provided from the api
this.input_list = {};
- // reset input element definition list
+ // reset input element list, which contains the dom elements of each input element (includes also the input field)
this.element_list = {};
// initialize datasets
@@ -190,8 +190,6 @@
// trigger refresh
self.refresh();
- //self.job_handler.submit();
- self.tree.finalize();
}
});
}
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/tools/tools-jobs.js
--- a/client/galaxy/scripts/mvc/tools/tools-jobs.js
+++ b/client/galaxy/scripts/mvc/tools/tools-jobs.js
@@ -1,4 +1,4 @@
-/*
+/**
This class handles job submissions and the error handling.
*/
define(['utils/utils'], function(Utils) {
@@ -12,7 +12,8 @@
this.options = Utils.merge(options, this.optionsDefault);
},
- // create job
+ /** Creates and submits a job request to the api
+ */
submit: function() {
// link this
var self = this;
@@ -26,6 +27,12 @@
// reset
this.app.reset();
+ // validate job definition
+ if (!this._validation(job_def)) {
+ console.debug('tools-jobs::submit - Submission canceled. Validation failed.');
+ return;
+ }
+
// post job
Utils.request('POST', galaxy_config.root + 'api/tools', job_def,
// success handler
@@ -42,7 +49,7 @@
function(response) {
console.debug(response);
if (response && response.message && response.message.data) {
- var error_messages = self.app.tree.match(response.message.data);
+ var error_messages = self.app.tree.matchResponse(response.message.data);
for (var id in error_messages) {
var error_text = error_messages[id];
if (!error_text) {
@@ -55,7 +62,35 @@
);
},
- // refresh history panel
+ /** Validate job definition
+ */
+ _validation: function(job_def) {
+ // get input parameters
+ var job_inputs = job_def.inputs;
+
+ // validation flag
+ var valid = true;
+
+ // check inputs
+ for (var job_input_id in job_inputs) {
+ // collect input field properties
+ var input = job_inputs[job_input_id];
+ var input_id = this.app.tree.match(job_input_id);
+ var input_field = this.app.field_list[input_id];
+
+ // check field validation
+ //if (input_field && input_field.validate && !input_field.validate()) {
+ this.app.element_list[input_id].error('Please verify this parameter.');
+ valid = false;
+ //}
+ }
+
+ // return result
+ return false;
+ },
+
+ /** Refreshes the history panel
+ */
_refreshHdas: function() {
if (parent.Galaxy && parent.Galaxy.currHistoryPanel) {
parent.Galaxy.currHistoryPanel.refreshContents();
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/tools/tools-repeat.js
--- a/client/galaxy/scripts/mvc/tools/tools-repeat.js
+++ b/client/galaxy/scripts/mvc/tools/tools-repeat.js
@@ -1,14 +1,16 @@
// dependencies
define(['utils/utils', 'mvc/ui/ui-table', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc'], function(Utils, Table, Portlet, Ui) {
-// return
+/** This class creates a ui component which enables the dynamic creation of portlets
+*/
var View = Backbone.View.extend({
// default options
optionsDefault : {
max : null
},
- // initialize
+ /** Initialize
+ */
initialize : function(options) {
// configure options
this.options = Utils.merge(options, this.optionsDefault);
@@ -48,12 +50,14 @@
this.list = {};
},
- // size
+ /** Number of repeat blocks
+ */
size: function() {
return _.size(this.list);
},
- // append
+ /** Add new repeat block
+ */
add: function(options) {
// delete button
var button_delete = new Ui.ButtonIcon({
@@ -101,12 +105,15 @@
}
},
- // delete
+ /** Delete repeat block
+ */
del: function(id) {
if (this.list[id]) {
// delete table row
var table_row = this.table.get('row_' + id);
table_row.remove();
+
+ // remove from list
delete this.list[id];
// enable new button
@@ -114,7 +121,8 @@
}
},
- // retitle
+ /** Retitle/Enumerate repeat blocks
+ */
retitle: function(new_title) {
var index = 0;
for (var id in this.list) {
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/tools/tools-section.js
--- a/client/galaxy/scripts/mvc/tools/tools-section.js
+++ b/client/galaxy/scripts/mvc/tools/tools-section.js
@@ -1,4 +1,4 @@
-/*
+/**
This class creates a tool form section and populates it with input elements. It also handles repeat blocks and conditionals by recursively creating new sub sections. New input elements can be plugged in by adding cases to the switch block defined in the _addRow() function.
*/
define(['utils/utils', 'mvc/ui/ui-table', 'mvc/ui/ui-misc', 'mvc/tools/tools-repeat', 'mvc/tools/tools-select-dataset'],
@@ -11,19 +11,24 @@
this.setElement(this._template(options));
},
- // set error text
+ /** Set error text
+ */
error: function(text) {
// set text
this.$el.find('.ui-table-form-error-text').html(text);
this.$el.find('.ui-table-form-error').fadeIn();
+ this.$el.addClass('ui-error');
},
- // reset
+ /** Reset this view
+ */
reset: function() {
this.$el.find('.ui-table-form-error').hide();
+ this.$el.removeClass('ui-error');
},
- // template
+ /** Main Template
+ */
_template: function(options) {
// create table element
var $input = $('<div class="ui-table-element"/>');
@@ -73,7 +78,8 @@
this.render();
},
- // update
+ /** Render section view
+ */
render: function() {
// reset table
this.table.delAll();
@@ -84,7 +90,8 @@
}
},
- // add table row
+ /** Add a new input element
+ */
_add: function(input) {
// link this
var self = this;
@@ -115,7 +122,8 @@
}
},
- // add conditional block
+ /** Add a conditional block
+ */
_addConditional: function(input_def) {
// add label to input definition root
input_def.label = input_def.test_param.label;
@@ -148,11 +156,15 @@
}
},
- // add repeat block
+ /** Add a repeat block
+ */
_addRepeat: function(input_def) {
// link this
var self = this;
+ // block index
+ var block_index = 0;
+
//
// create tab field
//
@@ -161,7 +173,7 @@
max : input_def.max,
onnew : function() {
// create id tag
- var sub_section_id = input_def.id + '-section-' + Utils.uuid();
+ var sub_section_id = input_def.id + '-section-' + (block_index++);
// create sub section
var sub_section = new View(self.app, {
@@ -199,7 +211,7 @@
//
for (var i = 0; i < input_def.min; i++) {
// create id tag
- var sub_section_id = input_def.id + '-section-' + Utils.uuid();
+ var sub_section_id = input_def.id + '-section-' + (block_index++);
// create sub section
var sub_section = new View(self.app, {
@@ -235,7 +247,8 @@
this.table.append(input_def.id);
},
- // add table row
+ /** Add a single field element
+ */
_addRow: function(field_type, input_def) {
// get id
var id = input_def.id;
@@ -333,7 +346,8 @@
return this.table.get(id)
},
- // conditional input field
+ /** Conditional input field selector
+ */
_field_conditional : function(input_def) {
// link this
var self = this;
@@ -385,7 +399,8 @@
});
},
- // data input field
+ /** Data input field
+ */
_field_data : function(input_def) {
// link this
var self = this;
@@ -398,16 +413,19 @@
id : 'field-' + id,
extensions : input_def.extensions,
multiple : input_def.multiple,
- onchange : function(value) {
+ onchange : function(dict) {
// pick the first dataset if multiple might be selected
- // TODO: iterate over all datasets and filter common/consistent columns
- if (value instanceof Array) {
- value = value[0];
- }
+ var value = dict.values[0].id;
// get referenced columns
var column_list = self.app.tree.references(id, 'data_column');
+ // check data column list
+ if (column_list.length <= 0) {
+ console.debug('tool-form::field_data() - Data column parameters unavailable.');
+ return;
+ }
+
// find selected dataset
var dataset = self.app.datasets.filter(value);
@@ -415,7 +433,7 @@
var meta = null;
// check dataset
- if (dataset && column_list.length > 0) {
+ if (dataset) {
// log selection
console.debug('tool-form::field_data() - Selected dataset ' + value + '.');
@@ -427,7 +445,6 @@
console.debug('tool-form::field_data() - FAILED: Could not find metadata for dataset ' + value + '.');
}
} else {
- // log failure
console.debug('tool-form::field_data() - FAILED: Could not find dataset ' + value + '.');
}
@@ -479,7 +496,8 @@
});
},
- // select field
+ /** Select/Checkbox/Radio options field
+ */
_field_select : function (input_def) {
// configure options fields
var options = [];
@@ -510,7 +528,8 @@
});
},
- // text input field
+ /** Text input field
+ */
_field_text : function(input_def) {
return new Ui.Input({
id : 'field-' + input_def.id,
@@ -518,7 +537,8 @@
});
},
- // slider field
+ /** Slider field
+ */
_field_slider: function(input_def) {
// calculate step size
var step = 1;
@@ -535,14 +555,16 @@
});
},
- // hidden field
+ /** Hidden field
+ */
_field_hidden : function(input_def) {
return new Ui.Hidden({
id : 'field-' + input_def.id
});
},
- // boolean field
+ /** Boolean field
+ */
_field_boolean : function(input_def) {
return new Ui.RadioButton.View({
id : 'field-' + input_def.id,
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/tools/tools-select-dataset.js
--- a/client/galaxy/scripts/mvc/tools/tools-select-dataset.js
+++ b/client/galaxy/scripts/mvc/tools/tools-select-dataset.js
@@ -11,13 +11,13 @@
this.setElement('<div/>');
// current selection
- this.current = 'dataset';
+ this.current = 'hda';
// create button
this.button_new = new Ui.RadioButton.View({
value : this.current,
- data : [ { icon: 'fa-file-o', label : 'Select datasets', value : 'dataset' },
- { icon: 'fa-files-o', label : 'Select a collection', value : 'collection' }],
+ data : [ { icon: 'fa-file-o', label : 'Select datasets', value : 'hda' },
+ { icon: 'fa-files-o', label : 'Select a collection', value : 'hdca' }],
onchange: function(value) {
self.current = value;
self.refresh();
@@ -94,29 +94,62 @@
});
},
- // value
+ /** Return the currently selected dataset values */
value : function () {
+ // identify select element
+ var select = null;
switch(this.current) {
- case 'dataset':
- return this.select_datasets.value();
- case 'collection':
- return this.select_collection.value();
+ case 'hda':
+ select = this.select_datasets;
+ break;
+ case 'hdca':
+ select = this.select_collection;
+ break;
+ }
+
+ // transform into an array
+ var id_list = select.value();
+ if (!(id_list instanceof Array)) {
+ id_list = [id_list];
+ }
+
+ // prepare result dict
+ var result = {
+ batch : !this.options.multiple,
+ values : []
+ }
+
+ // append to dataset ids
+ for (var i in id_list) {
+ result.values.push({
+ id : id_list[i],
+ src : this.current
+ });
+ }
+
+ // return
+ return result;
+ },
+
+ /** Validate current selection
+ */
+ validate: function() {
+ switch(this.current) {
+ case 'hda':
+ return this.select_datasets.validate();
+ case 'hdca':
+ return this.select_collection.validate();
}
},
- // render
- update: function(options) {
- this.select.update(options);
- },
-
- // refresh
+ /** Refreshes data selection view */
refresh: function() {
switch (this.current) {
- case 'dataset':
+ case 'hda':
this.select_datasets.$el.fadeIn();
this.select_collection.$el.hide();
break;
- case 'collection':
+ case 'hdca':
this.select_datasets.$el.hide();
this.select_collection.$el.fadeIn();
break;
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/tools/tools-tree.js
--- a/client/galaxy/scripts/mvc/tools/tools-tree.js
+++ b/client/galaxy/scripts/mvc/tools/tools-tree.js
@@ -67,11 +67,30 @@
switch (input.type) {
// handle repeats
case 'repeat':
+ // section identifier
+ var section_label = 'section-';
+
+ // collect repeat block identifiers
+ var block_indices = [];
+ var block_prefix = null;
+ for (var block_label in node) {
+ var pos = block_label.indexOf(section_label);
+ if (pos != -1) {
+ pos += section_label.length;
+ block_indices.push(parseInt(block_label.substr(pos)));
+ if (!block_prefix) {
+ block_prefix = block_label.substr(0, pos);
+ }
+ }
+ }
+
+ // sort repeat blocks
+ block_indices.sort(function(a,b) { return a - b; });
+
+ // add to response dictionary in created order
var index = 0;
- for (var i in node) {
- if (i.indexOf('section') != -1) {
- convert(job_input_id + '_' + index++, node[i]);
- }
+ for (var i in block_indices) {
+ convert(job_input_id + '_' + index++, node[block_prefix + block_indices[i]]);
}
break;
// handle conditionals
@@ -90,32 +109,6 @@
}
}
break;
- // handle data inputs
- case 'data':
- // create array for dataset ids
- var dataset_selection = null;
-
- // collect dataset ids from input field
- var value = self.app.field_list[input.id].value();
- if (typeof value === 'string') {
- dataset_selection = {
- id : value,
- src : 'hda'
- };
- } else {
- // create array of dataset dictionaries for api submission
- dataset_selection = [];
- for (var i in value) {
- dataset_selection.push({
- id : value[i],
- src : 'hda'
- });
- }
- }
-
- // add final array to job definition
- add(job_input_id, input.id, dataset_selection);
- break;
// handle boolean input
case 'boolean':
var value = self.app.field_list[input.id].value();
@@ -136,14 +129,20 @@
// start conversion
convert('', this.dict);
- console.log(this.job_def);
+
// return result
return this.job_def;
},
+ /** Match job definition identifier to input element identifier
+ */
+ match: function (job_input_id) {
+ return this.job_ids && this.job_ids[job_input_id];
+ },
+
/** Matches identifier from api response to input element
*/
- match: function(response) {
+ matchResponse: function(response) {
// final result dictionary
var result = {};
@@ -263,7 +262,7 @@
var id = $(child).attr('id');
// create new branch
- if ($(child).hasClass('section-row') || $(child).hasClass('tab-pane')) {
+ if ($(child).hasClass('section-row')) {
// create sub dictionary
dict[id] = {};
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/ui/ui-options.js
--- a/client/galaxy/scripts/mvc/ui/ui-options.js
+++ b/client/galaxy/scripts/mvc/ui/ui-options.js
@@ -1,7 +1,7 @@
// dependencies
define(['utils/utils'], function(Utils) {
-/** base class for options based ui elements **/
+/** Base class for options based ui elements **/
var OptionsBase = Backbone.View.extend({
// initialize
initialize: function(options) {
@@ -48,7 +48,8 @@
});
},
- // update options
+ /** Update options
+ */
update: function(options) {
// backup current value
var current = this._getValue();
@@ -80,7 +81,8 @@
this.value(current);
},
- // check if selected value exists (or any if multiple)
+ /** Check if selected value exists (or any if multiple)
+ */
exists: function(value) {
if (typeof value === 'string') {
value = [value];
@@ -93,7 +95,8 @@
return false;
},
- // first
+ /** Return first available option
+ */
first: function() {
var options = this.$el.find('input');
if (options.length > 0) {
@@ -103,14 +106,31 @@
}
},
- // change
+ /** Validate the selected option/options
+ */
+ validate: function() {
+ var current = this.value();
+ if (!(current instanceof Array)) {
+ current = [current];
+ }
+ for (var i in current) {
+ if (current[i] === 'null' || !current[i]) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ /** Trigger custom onchange callback function
+ */
_change: function() {
if (this.options.onchange) {
this.options.onchange(this._getValue());
}
},
- // refresh
+ /** Refresh options view
+ */
_refresh: function() {
// count remaining options
var remaining = this.$el.find('.ui-option').length;
@@ -123,7 +143,8 @@
}
},
- // get value
+ /** Return current selection
+ */
_getValue: function() {
// get selected values
var selected = this.$el.find(':checked');
@@ -148,7 +169,7 @@
}
});
-/** radio button field **/
+/** Radio button field **/
var Radio = {};
Radio.View = OptionsBase.extend({
// initialize
@@ -156,7 +177,8 @@
OptionsBase.prototype.initialize.call(this, options);
},
- // value
+ /** Return/Set current value
+ */
value: function (new_val) {
// check if its an array
if (typeof new_val === 'string') {
@@ -178,20 +200,22 @@
return this._getValue();
},
- // template for options
+ /** Template for options
+ */
_templateOption: function(pair) {
return '<div>' +
'<input type="radio" name="' + this.options.id + '" value="' + pair.value + '"/>' + pair.label + '<br>' +
'</div>';
},
- // template
+ /** Main template function
+ */
_template: function() {
return '<div class="ui-options"/>';
}
});
-/** checkbox options field **/
+/** Checkbox options field **/
var Checkbox = {};
Checkbox.View = Radio.View.extend({
// initialize
@@ -200,7 +224,8 @@
Radio.View.prototype.initialize.call(this, options);
},
- // template for options
+ /** Template for options
+ */
_templateOption: function(pair) {
return '<div>' +
'<input type="checkbox" name="' + this.options.id + '" value="' + pair.value + '"/>' + pair.label + '<br>' +
@@ -208,7 +233,7 @@
}
});
-/** radio button options field styled as classic buttons **/
+/** Radio button options field styled as classic buttons **/
var RadioButton = {};
RadioButton.View = OptionsBase.extend({
// initialize
@@ -216,7 +241,8 @@
OptionsBase.prototype.initialize.call(this, options);
},
- // value
+ /** Return/Set current value
+ */
value: function (new_val) {
// set new value
if (new_val !== undefined) {
@@ -229,7 +255,8 @@
return this._getValue();
},
- // template for options
+ /** Template for options
+ */
_templateOption: function(pair) {
var tmpl = '<label class="btn btn-default">';
if (pair.icon) {
@@ -240,7 +267,8 @@
return tmpl;
},
- // template
+ /** Main template function
+ */
_template: function() {
return '<div class="btn-group ui-radiobutton" data-toggle="buttons"/>';
}
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/ui/ui-portlet.js
--- a/client/galaxy/scripts/mvc/ui/ui-portlet.js
+++ b/client/galaxy/scripts/mvc/ui/ui-portlet.js
@@ -153,7 +153,7 @@
// fill regular modal template
_template: function(options) {
- var tmpl = '<div class="' + options.cls + '">';
+ var tmpl = '<div id="' + options.id + '" class="' + options.cls + '">';
if (options.title) {
tmpl += '<div id="portlet-header" class="portlet-header">' +
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c client/galaxy/scripts/mvc/ui/ui-select-default.js
--- a/client/galaxy/scripts/mvc/ui/ui-select-default.js
+++ b/client/galaxy/scripts/mvc/ui/ui-select-default.js
@@ -63,7 +63,8 @@
});
},
- // value
+ /** Return/Set current selection
+ */
value : function (new_value) {
if (new_value !== undefined) {
this.$select.val(new_value);
@@ -71,7 +72,8 @@
return this.$select.val();
},
- // first
+ /** Return the first select option
+ */
first: function() {
var options = this.$select.find('option');
if (options.length > 0) {
@@ -81,12 +83,29 @@
}
},
- // label
+ /** Validate the current selection
+ */
+ validate: function() {
+ var current = this.value();
+ if (!(current instanceof Array)) {
+ current = [current];
+ }
+ for (var i in current) {
+ if (current[i] === 'null' || !current[i]) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ /** Return the label/text of the current selection
+ */
text : function () {
return this.$select.find('option:selected').text();
},
- // show
+ /** Show the select field
+ */
show: function() {
this.$icon.removeClass();
this.$icon.addClass('fa fa-caret-down');
@@ -94,34 +113,40 @@
this.$el.show();
},
- // hide
+ /** Hide the select field
+ */
hide: function() {
this.$el.hide();
},
- // wait
+ /** Show a spinner indicating that the select options are currently loaded
+ */
wait: function() {
this.$icon.removeClass();
this.$icon.addClass('fa fa-spinner fa-spin');
this.$select.hide();
},
- // disabled
+ /** Returns true if the field is disabled
+ */
disabled: function() {
return this.$select.is(':disabled');
},
- // enable
+ /** Enable the select field
+ */
enable: function() {
this.$select.prop('disabled', false);
},
- // disable
+ /** Disable the select field
+ */
disable: function() {
this.$select.prop('disabled', true);
},
- // add
+ /** Add a select option
+ */
add: function(options) {
// add options
this.$select.append(this._templateOption(options));
@@ -130,7 +155,8 @@
this._refresh();
},
- // remove
+ /** Delete a select option
+ */
del: function(value) {
// remove option
this.$select.find('option[value=' + value + ']').remove();
@@ -140,7 +166,8 @@
this._refresh();
},
- // render
+ /** Update select options
+ */
update: function(options) {
// backup current value
var current = this.$select.val();
@@ -165,24 +192,28 @@
}
},
- // set on change event
+ /** Set the custom onchange callback function
+ */
setOnChange: function(callback) {
this.options.onchange = callback;
},
- // check if selected value exists
+ /** Check if a value is an existing option
+ */
exists: function(value) {
return this.$select.find('option[value="' + value + '"]').length > 0;
},
- // change
+ /** Trigger custom onchange callback
+ */
_change: function() {
if (this.options.onchange) {
this.options.onchange(this.$select.val());
}
},
- // refresh
+ /** Refresh the select view
+ */
_refresh: function() {
// remove placeholder
this.$select.find('option[value=null]').remove();
@@ -201,12 +232,14 @@
}
},
- // template option
+ /** Template for select options
+ */
_templateOption: function(options) {
return '<option value="' + options.value + '">' + options.label + '</option>';
},
- // template
+ /** Template for select view
+ */
_template: function(options) {
return '<div id="' + options.id + '">' +
'<div class="button">' +
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/tools/tools-datasets.js
--- a/static/scripts/mvc/tools/tools-datasets.js
+++ b/static/scripts/mvc/tools/tools-datasets.js
@@ -24,7 +24,8 @@
});
},
- // filter datasets by data type
+ /** Filters datasets by data type.
+ */
filterType: function(options) {
options = options || {};
return this.currHistoryContents.filter(function(content){
@@ -43,7 +44,8 @@
});
},
- // filter datasets by id
+ /** Filter datasets by id.
+ */
filter: function(filter_id) {
return _.first( this.currHistoryContents.filter( function( content ){ return content.get( 'id' ) === filter_id; }) );
}
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/tools/tools-form.js
--- a/static/scripts/mvc/tools/tools-form.js
+++ b/static/scripts/mvc/tools/tools-form.js
@@ -1,4 +1,4 @@
-/*
+/**
This is the main class of the tool form plugin. It is referenced as 'app' in all lower level modules.
*/
define(['mvc/ui/ui-portlet', 'mvc/ui/ui-misc',
@@ -37,14 +37,14 @@
// creates the job handler
this.job_handler = new ToolJobs(this);
-
- // reset field list
+
+ // reset field list, which contains the input field elements
this.field_list = {};
- // reset sequential input definition list
+ // reset sequential input definition list, which contains the input definitions as provided from the api
this.input_list = {};
- // reset input element definition list
+ // reset input element list, which contains the dom elements of each input element (includes also the input field)
this.element_list = {};
// initialize datasets
@@ -190,8 +190,6 @@
// trigger refresh
self.refresh();
- //self.job_handler.submit();
- self.tree.finalize();
}
});
}
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/tools/tools-jobs.js
--- a/static/scripts/mvc/tools/tools-jobs.js
+++ b/static/scripts/mvc/tools/tools-jobs.js
@@ -1,4 +1,4 @@
-/*
+/**
This class handles job submissions and the error handling.
*/
define(['utils/utils'], function(Utils) {
@@ -12,7 +12,8 @@
this.options = Utils.merge(options, this.optionsDefault);
},
- // create job
+ /** Creates and submits a job request to the api
+ */
submit: function() {
// link this
var self = this;
@@ -26,6 +27,12 @@
// reset
this.app.reset();
+ // validate job definition
+ if (!this._validation(job_def)) {
+ console.debug('tools-jobs::submit - Submission canceled. Validation failed.');
+ return;
+ }
+
// post job
Utils.request('POST', galaxy_config.root + 'api/tools', job_def,
// success handler
@@ -42,7 +49,7 @@
function(response) {
console.debug(response);
if (response && response.message && response.message.data) {
- var error_messages = self.app.tree.match(response.message.data);
+ var error_messages = self.app.tree.matchResponse(response.message.data);
for (var id in error_messages) {
var error_text = error_messages[id];
if (!error_text) {
@@ -55,7 +62,35 @@
);
},
- // refresh history panel
+ /** Validate job definition
+ */
+ _validation: function(job_def) {
+ // get input parameters
+ var job_inputs = job_def.inputs;
+
+ // validation flag
+ var valid = true;
+
+ // check inputs
+ for (var job_input_id in job_inputs) {
+ // collect input field properties
+ var input = job_inputs[job_input_id];
+ var input_id = this.app.tree.match(job_input_id);
+ var input_field = this.app.field_list[input_id];
+
+ // check field validation
+ //if (input_field && input_field.validate && !input_field.validate()) {
+ this.app.element_list[input_id].error('Please verify this parameter.');
+ valid = false;
+ //}
+ }
+
+ // return result
+ return false;
+ },
+
+ /** Refreshes the history panel
+ */
_refreshHdas: function() {
if (parent.Galaxy && parent.Galaxy.currHistoryPanel) {
parent.Galaxy.currHistoryPanel.refreshContents();
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/tools/tools-repeat.js
--- a/static/scripts/mvc/tools/tools-repeat.js
+++ b/static/scripts/mvc/tools/tools-repeat.js
@@ -1,14 +1,16 @@
// dependencies
define(['utils/utils', 'mvc/ui/ui-table', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc'], function(Utils, Table, Portlet, Ui) {
-// return
+/** This class creates a ui component which enables the dynamic creation of portlets
+*/
var View = Backbone.View.extend({
// default options
optionsDefault : {
max : null
},
- // initialize
+ /** Initialize
+ */
initialize : function(options) {
// configure options
this.options = Utils.merge(options, this.optionsDefault);
@@ -48,12 +50,14 @@
this.list = {};
},
- // size
+ /** Number of repeat blocks
+ */
size: function() {
return _.size(this.list);
},
- // append
+ /** Add new repeat block
+ */
add: function(options) {
// delete button
var button_delete = new Ui.ButtonIcon({
@@ -101,12 +105,15 @@
}
},
- // delete
+ /** Delete repeat block
+ */
del: function(id) {
if (this.list[id]) {
// delete table row
var table_row = this.table.get('row_' + id);
table_row.remove();
+
+ // remove from list
delete this.list[id];
// enable new button
@@ -114,7 +121,8 @@
}
},
- // retitle
+ /** Retitle/Enumerate repeat blocks
+ */
retitle: function(new_title) {
var index = 0;
for (var id in this.list) {
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/tools/tools-section.js
--- a/static/scripts/mvc/tools/tools-section.js
+++ b/static/scripts/mvc/tools/tools-section.js
@@ -1,4 +1,4 @@
-/*
+/**
This class creates a tool form section and populates it with input elements. It also handles repeat blocks and conditionals by recursively creating new sub sections. New input elements can be plugged in by adding cases to the switch block defined in the _addRow() function.
*/
define(['utils/utils', 'mvc/ui/ui-table', 'mvc/ui/ui-misc', 'mvc/tools/tools-repeat', 'mvc/tools/tools-select-dataset'],
@@ -11,19 +11,24 @@
this.setElement(this._template(options));
},
- // set error text
+ /** Set error text
+ */
error: function(text) {
// set text
this.$el.find('.ui-table-form-error-text').html(text);
this.$el.find('.ui-table-form-error').fadeIn();
+ this.$el.addClass('ui-error');
},
- // reset
+ /** Reset this view
+ */
reset: function() {
this.$el.find('.ui-table-form-error').hide();
+ this.$el.removeClass('ui-error');
},
- // template
+ /** Main Template
+ */
_template: function(options) {
// create table element
var $input = $('<div class="ui-table-element"/>');
@@ -73,7 +78,8 @@
this.render();
},
- // update
+ /** Render section view
+ */
render: function() {
// reset table
this.table.delAll();
@@ -84,7 +90,8 @@
}
},
- // add table row
+ /** Add a new input element
+ */
_add: function(input) {
// link this
var self = this;
@@ -115,7 +122,8 @@
}
},
- // add conditional block
+ /** Add a conditional block
+ */
_addConditional: function(input_def) {
// add label to input definition root
input_def.label = input_def.test_param.label;
@@ -148,11 +156,15 @@
}
},
- // add repeat block
+ /** Add a repeat block
+ */
_addRepeat: function(input_def) {
// link this
var self = this;
+ // block index
+ var block_index = 0;
+
//
// create tab field
//
@@ -161,7 +173,7 @@
max : input_def.max,
onnew : function() {
// create id tag
- var sub_section_id = input_def.id + '-section-' + Utils.uuid();
+ var sub_section_id = input_def.id + '-section-' + (block_index++);
// create sub section
var sub_section = new View(self.app, {
@@ -199,7 +211,7 @@
//
for (var i = 0; i < input_def.min; i++) {
// create id tag
- var sub_section_id = input_def.id + '-section-' + Utils.uuid();
+ var sub_section_id = input_def.id + '-section-' + (block_index++);
// create sub section
var sub_section = new View(self.app, {
@@ -235,7 +247,8 @@
this.table.append(input_def.id);
},
- // add table row
+ /** Add a single field element
+ */
_addRow: function(field_type, input_def) {
// get id
var id = input_def.id;
@@ -333,7 +346,8 @@
return this.table.get(id)
},
- // conditional input field
+ /** Conditional input field selector
+ */
_field_conditional : function(input_def) {
// link this
var self = this;
@@ -385,7 +399,8 @@
});
},
- // data input field
+ /** Data input field
+ */
_field_data : function(input_def) {
// link this
var self = this;
@@ -398,16 +413,19 @@
id : 'field-' + id,
extensions : input_def.extensions,
multiple : input_def.multiple,
- onchange : function(value) {
+ onchange : function(dict) {
// pick the first dataset if multiple might be selected
- // TODO: iterate over all datasets and filter common/consistent columns
- if (value instanceof Array) {
- value = value[0];
- }
+ var value = dict.values[0].id;
// get referenced columns
var column_list = self.app.tree.references(id, 'data_column');
+ // check data column list
+ if (column_list.length <= 0) {
+ console.debug('tool-form::field_data() - Data column parameters unavailable.');
+ return;
+ }
+
// find selected dataset
var dataset = self.app.datasets.filter(value);
@@ -415,7 +433,7 @@
var meta = null;
// check dataset
- if (dataset && column_list.length > 0) {
+ if (dataset) {
// log selection
console.debug('tool-form::field_data() - Selected dataset ' + value + '.');
@@ -427,7 +445,6 @@
console.debug('tool-form::field_data() - FAILED: Could not find metadata for dataset ' + value + '.');
}
} else {
- // log failure
console.debug('tool-form::field_data() - FAILED: Could not find dataset ' + value + '.');
}
@@ -479,7 +496,8 @@
});
},
- // select field
+ /** Select/Checkbox/Radio options field
+ */
_field_select : function (input_def) {
// configure options fields
var options = [];
@@ -510,7 +528,8 @@
});
},
- // text input field
+ /** Text input field
+ */
_field_text : function(input_def) {
return new Ui.Input({
id : 'field-' + input_def.id,
@@ -518,7 +537,8 @@
});
},
- // slider field
+ /** Slider field
+ */
_field_slider: function(input_def) {
// calculate step size
var step = 1;
@@ -535,14 +555,16 @@
});
},
- // hidden field
+ /** Hidden field
+ */
_field_hidden : function(input_def) {
return new Ui.Hidden({
id : 'field-' + input_def.id
});
},
- // boolean field
+ /** Boolean field
+ */
_field_boolean : function(input_def) {
return new Ui.RadioButton.View({
id : 'field-' + input_def.id,
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/tools/tools-select-dataset.js
--- a/static/scripts/mvc/tools/tools-select-dataset.js
+++ b/static/scripts/mvc/tools/tools-select-dataset.js
@@ -11,13 +11,13 @@
this.setElement('<div/>');
// current selection
- this.current = 'dataset';
+ this.current = 'hda';
// create button
this.button_new = new Ui.RadioButton.View({
value : this.current,
- data : [ { icon: 'fa-file-o', label : 'Select datasets', value : 'dataset' },
- { icon: 'fa-files-o', label : 'Select a collection', value : 'collection' }],
+ data : [ { icon: 'fa-file-o', label : 'Select datasets', value : 'hda' },
+ { icon: 'fa-files-o', label : 'Select a collection', value : 'hdca' }],
onchange: function(value) {
self.current = value;
self.refresh();
@@ -94,29 +94,62 @@
});
},
- // value
+ /** Return the currently selected dataset values */
value : function () {
+ // identify select element
+ var select = null;
switch(this.current) {
- case 'dataset':
- return this.select_datasets.value();
- case 'collection':
- return this.select_collection.value();
+ case 'hda':
+ select = this.select_datasets;
+ break;
+ case 'hdca':
+ select = this.select_collection;
+ break;
+ }
+
+ // transform into an array
+ var id_list = select.value();
+ if (!(id_list instanceof Array)) {
+ id_list = [id_list];
+ }
+
+ // prepare result dict
+ var result = {
+ batch : !this.options.multiple,
+ values : []
+ }
+
+ // append to dataset ids
+ for (var i in id_list) {
+ result.values.push({
+ id : id_list[i],
+ src : this.current
+ });
+ }
+
+ // return
+ return result;
+ },
+
+ /** Validate current selection
+ */
+ validate: function() {
+ switch(this.current) {
+ case 'hda':
+ return this.select_datasets.validate();
+ case 'hdca':
+ return this.select_collection.validate();
}
},
- // render
- update: function(options) {
- this.select.update(options);
- },
-
- // refresh
+ /** Refreshes data selection view */
refresh: function() {
switch (this.current) {
- case 'dataset':
+ case 'hda':
this.select_datasets.$el.fadeIn();
this.select_collection.$el.hide();
break;
- case 'collection':
+ case 'hdca':
this.select_datasets.$el.hide();
this.select_collection.$el.fadeIn();
break;
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/tools/tools-tree.js
--- a/static/scripts/mvc/tools/tools-tree.js
+++ b/static/scripts/mvc/tools/tools-tree.js
@@ -67,11 +67,30 @@
switch (input.type) {
// handle repeats
case 'repeat':
+ // section identifier
+ var section_label = 'section-';
+
+ // collect repeat block identifiers
+ var block_indices = [];
+ var block_prefix = null;
+ for (var block_label in node) {
+ var pos = block_label.indexOf(section_label);
+ if (pos != -1) {
+ pos += section_label.length;
+ block_indices.push(parseInt(block_label.substr(pos)));
+ if (!block_prefix) {
+ block_prefix = block_label.substr(0, pos);
+ }
+ }
+ }
+
+ // sort repeat blocks
+ block_indices.sort(function(a,b) { return a - b; });
+
+ // add to response dictionary in created order
var index = 0;
- for (var i in node) {
- if (i.indexOf('section') != -1) {
- convert(job_input_id + '_' + index++, node[i]);
- }
+ for (var i in block_indices) {
+ convert(job_input_id + '_' + index++, node[block_prefix + block_indices[i]]);
}
break;
// handle conditionals
@@ -90,32 +109,6 @@
}
}
break;
- // handle data inputs
- case 'data':
- // create array for dataset ids
- var dataset_selection = null;
-
- // collect dataset ids from input field
- var value = self.app.field_list[input.id].value();
- if (typeof value === 'string') {
- dataset_selection = {
- id : value,
- src : 'hda'
- };
- } else {
- // create array of dataset dictionaries for api submission
- dataset_selection = [];
- for (var i in value) {
- dataset_selection.push({
- id : value[i],
- src : 'hda'
- });
- }
- }
-
- // add final array to job definition
- add(job_input_id, input.id, dataset_selection);
- break;
// handle boolean input
case 'boolean':
var value = self.app.field_list[input.id].value();
@@ -136,14 +129,20 @@
// start conversion
convert('', this.dict);
- console.log(this.job_def);
+
// return result
return this.job_def;
},
+ /** Match job definition identifier to input element identifier
+ */
+ match: function (job_input_id) {
+ return this.job_ids && this.job_ids[job_input_id];
+ },
+
/** Matches identifier from api response to input element
*/
- match: function(response) {
+ matchResponse: function(response) {
// final result dictionary
var result = {};
@@ -263,7 +262,7 @@
var id = $(child).attr('id');
// create new branch
- if ($(child).hasClass('section-row') || $(child).hasClass('tab-pane')) {
+ if ($(child).hasClass('section-row')) {
// create sub dictionary
dict[id] = {};
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/ui/ui-options.js
--- a/static/scripts/mvc/ui/ui-options.js
+++ b/static/scripts/mvc/ui/ui-options.js
@@ -1,7 +1,7 @@
// dependencies
define(['utils/utils'], function(Utils) {
-/** base class for options based ui elements **/
+/** Base class for options based ui elements **/
var OptionsBase = Backbone.View.extend({
// initialize
initialize: function(options) {
@@ -48,7 +48,8 @@
});
},
- // update options
+ /** Update options
+ */
update: function(options) {
// backup current value
var current = this._getValue();
@@ -80,7 +81,8 @@
this.value(current);
},
- // check if selected value exists (or any if multiple)
+ /** Check if selected value exists (or any if multiple)
+ */
exists: function(value) {
if (typeof value === 'string') {
value = [value];
@@ -93,7 +95,8 @@
return false;
},
- // first
+ /** Return first available option
+ */
first: function() {
var options = this.$el.find('input');
if (options.length > 0) {
@@ -103,14 +106,31 @@
}
},
- // change
+ /** Validate the selected option/options
+ */
+ validate: function() {
+ var current = this.value();
+ if (!(current instanceof Array)) {
+ current = [current];
+ }
+ for (var i in current) {
+ if (current[i] === 'null' || !current[i]) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ /** Trigger custom onchange callback function
+ */
_change: function() {
if (this.options.onchange) {
this.options.onchange(this._getValue());
}
},
- // refresh
+ /** Refresh options view
+ */
_refresh: function() {
// count remaining options
var remaining = this.$el.find('.ui-option').length;
@@ -123,7 +143,8 @@
}
},
- // get value
+ /** Return current selection
+ */
_getValue: function() {
// get selected values
var selected = this.$el.find(':checked');
@@ -148,7 +169,7 @@
}
});
-/** radio button field **/
+/** Radio button field **/
var Radio = {};
Radio.View = OptionsBase.extend({
// initialize
@@ -156,7 +177,8 @@
OptionsBase.prototype.initialize.call(this, options);
},
- // value
+ /** Return/Set current value
+ */
value: function (new_val) {
// check if its an array
if (typeof new_val === 'string') {
@@ -178,20 +200,22 @@
return this._getValue();
},
- // template for options
+ /** Template for options
+ */
_templateOption: function(pair) {
return '<div>' +
'<input type="radio" name="' + this.options.id + '" value="' + pair.value + '"/>' + pair.label + '<br>' +
'</div>';
},
- // template
+ /** Main template function
+ */
_template: function() {
return '<div class="ui-options"/>';
}
});
-/** checkbox options field **/
+/** Checkbox options field **/
var Checkbox = {};
Checkbox.View = Radio.View.extend({
// initialize
@@ -200,7 +224,8 @@
Radio.View.prototype.initialize.call(this, options);
},
- // template for options
+ /** Template for options
+ */
_templateOption: function(pair) {
return '<div>' +
'<input type="checkbox" name="' + this.options.id + '" value="' + pair.value + '"/>' + pair.label + '<br>' +
@@ -208,7 +233,7 @@
}
});
-/** radio button options field styled as classic buttons **/
+/** Radio button options field styled as classic buttons **/
var RadioButton = {};
RadioButton.View = OptionsBase.extend({
// initialize
@@ -216,7 +241,8 @@
OptionsBase.prototype.initialize.call(this, options);
},
- // value
+ /** Return/Set current value
+ */
value: function (new_val) {
// set new value
if (new_val !== undefined) {
@@ -229,7 +255,8 @@
return this._getValue();
},
- // template for options
+ /** Template for options
+ */
_templateOption: function(pair) {
var tmpl = '<label class="btn btn-default">';
if (pair.icon) {
@@ -240,7 +267,8 @@
return tmpl;
},
- // template
+ /** Main template function
+ */
_template: function() {
return '<div class="btn-group ui-radiobutton" data-toggle="buttons"/>';
}
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/ui/ui-portlet.js
--- a/static/scripts/mvc/ui/ui-portlet.js
+++ b/static/scripts/mvc/ui/ui-portlet.js
@@ -153,7 +153,7 @@
// fill regular modal template
_template: function(options) {
- var tmpl = '<div class="' + options.cls + '">';
+ var tmpl = '<div id="' + options.id + '" class="' + options.cls + '">';
if (options.title) {
tmpl += '<div id="portlet-header" class="portlet-header">' +
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/mvc/ui/ui-select-default.js
--- a/static/scripts/mvc/ui/ui-select-default.js
+++ b/static/scripts/mvc/ui/ui-select-default.js
@@ -63,7 +63,8 @@
});
},
- // value
+ /** Return/Set current selection
+ */
value : function (new_value) {
if (new_value !== undefined) {
this.$select.val(new_value);
@@ -71,7 +72,8 @@
return this.$select.val();
},
- // first
+ /** Return the first select option
+ */
first: function() {
var options = this.$select.find('option');
if (options.length > 0) {
@@ -81,12 +83,29 @@
}
},
- // label
+ /** Validate the current selection
+ */
+ validate: function() {
+ var current = this.value();
+ if (!(current instanceof Array)) {
+ current = [current];
+ }
+ for (var i in current) {
+ if (current[i] === 'null' || !current[i]) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ /** Return the label/text of the current selection
+ */
text : function () {
return this.$select.find('option:selected').text();
},
- // show
+ /** Show the select field
+ */
show: function() {
this.$icon.removeClass();
this.$icon.addClass('fa fa-caret-down');
@@ -94,34 +113,40 @@
this.$el.show();
},
- // hide
+ /** Hide the select field
+ */
hide: function() {
this.$el.hide();
},
- // wait
+ /** Show a spinner indicating that the select options are currently loaded
+ */
wait: function() {
this.$icon.removeClass();
this.$icon.addClass('fa fa-spinner fa-spin');
this.$select.hide();
},
- // disabled
+ /** Returns true if the field is disabled
+ */
disabled: function() {
return this.$select.is(':disabled');
},
- // enable
+ /** Enable the select field
+ */
enable: function() {
this.$select.prop('disabled', false);
},
- // disable
+ /** Disable the select field
+ */
disable: function() {
this.$select.prop('disabled', true);
},
- // add
+ /** Add a select option
+ */
add: function(options) {
// add options
this.$select.append(this._templateOption(options));
@@ -130,7 +155,8 @@
this._refresh();
},
- // remove
+ /** Delete a select option
+ */
del: function(value) {
// remove option
this.$select.find('option[value=' + value + ']').remove();
@@ -140,7 +166,8 @@
this._refresh();
},
- // render
+ /** Update select options
+ */
update: function(options) {
// backup current value
var current = this.$select.val();
@@ -165,24 +192,28 @@
}
},
- // set on change event
+ /** Set the custom onchange callback function
+ */
setOnChange: function(callback) {
this.options.onchange = callback;
},
- // check if selected value exists
+ /** Check if a value is an existing option
+ */
exists: function(value) {
return this.$select.find('option[value="' + value + '"]').length > 0;
},
- // change
+ /** Trigger custom onchange callback
+ */
_change: function() {
if (this.options.onchange) {
this.options.onchange(this.$select.val());
}
},
- // refresh
+ /** Refresh the select view
+ */
_refresh: function() {
// remove placeholder
this.$select.find('option[value=null]').remove();
@@ -201,12 +232,14 @@
}
},
- // template option
+ /** Template for select options
+ */
_templateOption: function(options) {
return '<option value="' + options.value + '">' + options.label + '</option>';
},
- // template
+ /** Template for select view
+ */
_template: function(options) {
return '<div id="' + options.id + '">' +
'<div class="button">' +
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/packed/mvc/tools/tools-form.js
--- a/static/scripts/packed/mvc/tools/tools-form.js
+++ b/static/scripts/packed/mvc/tools/tools-form.js
@@ -1,1 +1,1 @@
-define(["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-datasets","mvc/tools/tools-section","mvc/tools/tools-tree","mvc/tools/tools-jobs"],function(h,l,j,a,f,d,i,k,c,g){var e=Backbone.Model.extend({initialize:function(m){this.url=galaxy_config.root+"api/tools/"+m.id+"?io_details=true"}});var b=Backbone.View.extend({main_el:"body",initialize:function(n){var m=this;this.options=n;this.model=new e({id:n.id});this.tree=new c(this);this.job_handler=new g(this);this.field_list={};this.input_list={};this.element_list={};this.datasets=new i({history_id:this.options.history_id,success:function(){m._initializeToolForm()}})},message:function(m){$(this.main_el).empty();$(this.main_el).append(d.message(m))},reset:function(){for(var m in this.element_list){this.element_list[m].reset()}},refresh:function(){this.tree.refresh();for(var m in this.field_list){this.field_list[m].trigger("change")}console.debug("tools-form::refresh() - Recreated tree structure. Refresh.")},_initializeToolForm:function(){var n=this;var o=new l.ButtonIcon({icon:"fa-question-circle",title:"Question?",tooltip:"Ask a question about this tool (Biostar)",onclick:function(){window.open(n.options.biostar_url+"/p/new/post/")}});var p=new l.ButtonIcon({icon:"fa-search",title:"Search",tooltip:"Search help for this tool (Biostar)",onclick:function(){window.open(n.options.biostar_url+"/t/"+n.options.id+"/")}});var m=new l.ButtonIcon({icon:"fa-share",title:"Share",tooltip:"Share this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C, Enter",galaxy_config.root+"root?tool_id="+n.options.id)}});this.model.fetch({error:function(q){console.debug("tools-form::_initializeToolForm() : Attempt to fetch tool model failed.")},success:function(){n.inputs=n.model.get("inputs");n.portlet=new h.View({icon:"fa-wrench",title:"<b>"+n.model.get("name")+"</b> "+n.model.get("description"),buttons:{execute:new l.ButtonIcon({icon:"fa-check",tooltip:"Execute the tool",title:"Execute",floating:"clear",onclick:function(){n.job_handler.submit()}})},operations:{button_question:o,button_search:p,button_share:m}});if(!n.options.biostar_url){o.$el.hide();p.$el.hide()}$(n.main_el).append(n.portlet.$el);if(n.options.help!=""){$(n.main_el).append(d.help(n.options.help))}if(n.options.citations){$(n.main_el).append(d.citations());var q=new j.ToolCitationCollection();q.tool_id=n.options.id;var r=new a.CitationListView({collection:q});r.render();q.fetch()}n.setElement(n.portlet.content());n.section=new k.View(n,{inputs:n.model.get("inputs"),cls:"ui-table-plain"});n.portlet.append(n.section.$el);n.refresh();n.tree.finalize()}})}});return{View:b}});
\ No newline at end of file
+define(["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-datasets","mvc/tools/tools-section","mvc/tools/tools-tree","mvc/tools/tools-jobs"],function(h,l,j,a,f,d,i,k,c,g){var e=Backbone.Model.extend({initialize:function(m){this.url=galaxy_config.root+"api/tools/"+m.id+"?io_details=true"}});var b=Backbone.View.extend({main_el:"body",initialize:function(n){var m=this;this.options=n;this.model=new e({id:n.id});this.tree=new c(this);this.job_handler=new g(this);this.field_list={};this.input_list={};this.element_list={};this.datasets=new i({history_id:this.options.history_id,success:function(){m._initializeToolForm()}})},message:function(m){$(this.main_el).empty();$(this.main_el).append(d.message(m))},reset:function(){for(var m in this.element_list){this.element_list[m].reset()}},refresh:function(){this.tree.refresh();for(var m in this.field_list){this.field_list[m].trigger("change")}console.debug("tools-form::refresh() - Recreated tree structure. Refresh.")},_initializeToolForm:function(){var n=this;var o=new l.ButtonIcon({icon:"fa-question-circle",title:"Question?",tooltip:"Ask a question about this tool (Biostar)",onclick:function(){window.open(n.options.biostar_url+"/p/new/post/")}});var p=new l.ButtonIcon({icon:"fa-search",title:"Search",tooltip:"Search help for this tool (Biostar)",onclick:function(){window.open(n.options.biostar_url+"/t/"+n.options.id+"/")}});var m=new l.ButtonIcon({icon:"fa-share",title:"Share",tooltip:"Share this tool",onclick:function(){prompt("Copy to clipboard: Ctrl+C, Enter",galaxy_config.root+"root?tool_id="+n.options.id)}});this.model.fetch({error:function(q){console.debug("tools-form::_initializeToolForm() : Attempt to fetch tool model failed.")},success:function(){n.inputs=n.model.get("inputs");n.portlet=new h.View({icon:"fa-wrench",title:"<b>"+n.model.get("name")+"</b> "+n.model.get("description"),buttons:{execute:new l.ButtonIcon({icon:"fa-check",tooltip:"Execute the tool",title:"Execute",floating:"clear",onclick:function(){n.job_handler.submit()}})},operations:{button_question:o,button_search:p,button_share:m}});if(!n.options.biostar_url){o.$el.hide();p.$el.hide()}$(n.main_el).append(n.portlet.$el);if(n.options.help!=""){$(n.main_el).append(d.help(n.options.help))}if(n.options.citations){$(n.main_el).append(d.citations());var q=new j.ToolCitationCollection();q.tool_id=n.options.id;var r=new a.CitationListView({collection:q});r.render();q.fetch()}n.setElement(n.portlet.content());n.section=new k.View(n,{inputs:n.model.get("inputs"),cls:"ui-table-plain"});n.portlet.append(n.section.$el);n.refresh()}})}});return{View:b}});
\ No newline at end of file
diff -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 -r 5636e8ac71d5955501e333dc6fa4693cc5905c1c static/scripts/packed/mvc/tools/tools-jobs.js
--- a/static/scripts/packed/mvc/tools/tools-jobs.js
+++ b/static/scripts/packed/mvc/tools/tools-jobs.js
@@ -1,1 +1,1 @@
-define(["utils/utils"],function(a){return Backbone.Model.extend({initialize:function(c,b){this.app=c;this.options=a.merge(b,this.optionsDefault)},submit:function(){var b=this;var c={tool_id:this.app.options.id,inputs:this.app.tree.finalize()};this.app.reset();a.request("POST",galaxy_config.root+"api/tools",c,function(d){if(!d.outputs||d.outputs.length==0){console.debug(d)}b.app.message({text:"A job has been successfully added to the queue. You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from 'running' to 'finished' if completed successfully or 'error' if problems were encountered."});b._refreshHdas()},function(d){console.debug(d);if(d&&d.message&&d.message.data){var g=b.app.tree.match(d.message.data);for(var f in g){var e=g[f];if(!e){e="Please verify this parameter."}b.app.element_list[f].error(e)}}})},_refreshHdas:function(){if(parent.Galaxy&&parent.Galaxy.currHistoryPanel){parent.Galaxy.currHistoryPanel.refreshContents()}}})});
\ No newline at end of file
+define(["utils/utils"],function(a){return Backbone.Model.extend({initialize:function(c,b){this.app=c;this.options=a.merge(b,this.optionsDefault)},submit:function(){var b=this;var c={tool_id:this.app.options.id,inputs:this.app.tree.finalize()};this.app.reset();if(!this._validation(c)){console.debug("tools-jobs::submit - Submission canceled. Validation failed.");return}a.request("POST",galaxy_config.root+"api/tools",c,function(d){if(!d.outputs||d.outputs.length==0){console.debug(d)}b.app.message({text:"A job has been successfully added to the queue. You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from 'running' to 'finished' if completed successfully or 'error' if problems were encountered."});b._refreshHdas()},function(d){console.debug(d);if(d&&d.message&&d.message.data){var g=b.app.tree.matchResponse(d.message.data);for(var f in g){var e=g[f];if(!e){e="Please verify this parameter."}b.app.element_list[f].error(e)}}})},_validation:function(g){var d=g.inputs;var f=true;for(var h in d){var c=d[h];var e=this.app.tree.match(h);var b=this.app.field_list[e];this.app.element_list[e].error("Please verify this parameter.");f=false}return false},_refreshHdas:function(){if(parent.Galaxy&&parent.Galaxy.currHistoryPanel){parent.Galaxy.currHistoryPanel.refreshContents()}}})});
\ No newline at end of file
This diff is so big that we needed to truncate the remainder.
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.
1
0
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/c0c00d69cae3/
Changeset: c0c00d69cae3
Branch: stable
User: martenson
Date: 2014-09-22 18:52:11+00:00
Summary: Fix of a bug involving mistaking ld with ldda and vice versa which (together with our incremental ID approach ) leads to an incorrect dataset being downloaded.
Affected #: 5 files
diff -r e9fab037f8b2d2fa916b517a79f14ab9188be43c -r c0c00d69cae3966a5c1e67abc3ba7aa67a735a64 lib/galaxy/webapps/galaxy/api/lda_datasets.py
--- a/lib/galaxy/webapps/galaxy/api/lda_datasets.py
+++ b/lib/galaxy/webapps/galaxy/api/lda_datasets.py
@@ -175,31 +175,30 @@
:param format: string representing requested archive format
:type format: string
- :param lddas[]: an array of encoded ids
- :type lddas[]: an array
+ :param ld_ids[]: an array of encoded ids
+ :type ld_ids[]: an array
:rtype: file
:returns: either archive with the requested datasets packed inside or a single uncompressed dataset
:raises: MessageException, ItemDeletionException, ItemAccessibilityException, HTTPBadRequest, OSError, IOError, ObjectNotFound
"""
- lddas = []
- datasets_to_download = kwd.get( 'ldda_ids%5B%5D', None )
+ library_datasets = []
+ datasets_to_download = kwd.get( 'ld_ids%5B%5D', None )
if datasets_to_download is None:
- datasets_to_download = kwd.get( 'ldda_ids', None )
-
+ datasets_to_download = kwd.get( 'ld_ids', None )
if ( datasets_to_download is not None ):
datasets_to_download = util.listify( datasets_to_download )
for dataset_id in datasets_to_download:
try:
- ldda = self.get_hda_or_ldda( trans, hda_ldda='ldda', dataset_id=dataset_id )
- lddas.append( ldda )
+ library_dataset = self.get_library_dataset( trans, id=dataset_id, check_ownership=False, check_accessible=True )
+ library_datasets.append( library_dataset )
except HTTPBadRequest, e:
- raise exceptions.RequestParameterInvalidException( 'Bad Request. ' + str( e.err_msg ) )
+ raise exceptions.RequestParameterInvalidException( 'Bad Request.' )
except HTTPInternalServerError, e:
- raise exceptions.InternalServerError( 'Internal error. ' + str( e.err_msg ) )
+ raise exceptions.InternalServerError( 'Internal error.' )
except Exception, e:
- raise exceptions.InternalServerError( 'Unknown error. ' + str( e ) )
+ raise exceptions.InternalServerError( 'Unknown error.' )
else:
raise exceptions.RequestParameterMissingException( 'Request has to contain a list of dataset ids to download.' )
@@ -237,7 +236,8 @@
raise exceptions.InternalServerError( "Unable to create archive for download." )
composite_extensions = trans.app.datatypes_registry.get_composite_extensions()
seen = []
- for ldda in lddas:
+ for ld in library_datasets:
+ ldda = ld.library_dataset_dataset_association
ext = ldda.extension
is_composite = ext in composite_extensions
path = ""
@@ -326,19 +326,21 @@
archive.wsgi_headeritems = trans.response.wsgi_headeritems()
return archive.stream
elif format == 'uncompressed':
- if len(lddas) != 1:
+ if len(library_datasets) != 1:
raise exceptions.RequestParameterInvalidException( "You can download only one uncompressed file at once." )
else:
- single_dataset = lddas[ 0 ]
- trans.response.set_content_type( single_dataset.get_mime() )
- fStat = os.stat( ldda.file_name )
+ single_ld = library_datasets[ 0 ]
+ ldda = single_ld.library_dataset_dataset_association
+ dataset = ldda.dataset
+ fStat = os.stat( dataset.file_name )
+ trans.response.set_content_type( ldda.get_mime() )
trans.response.headers[ 'Content-Length' ] = int( fStat.st_size )
valid_chars = '.,^_-()[]0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
fname = ldda.name
fname = ''.join( c in valid_chars and c or '_' for c in fname )[ 0:150 ]
trans.response.headers[ "Content-Disposition" ] = 'attachment; filename="%s"' % fname
try:
- return open( single_dataset.file_name )
+ return open( dataset.file_name )
except:
raise exceptions.InternalServerError( "This dataset contains no content." )
else:
diff -r e9fab037f8b2d2fa916b517a79f14ab9188be43c -r c0c00d69cae3966a5c1e67abc3ba7aa67a735a64 static/scripts/mvc/library/library-dataset-view.js
--- a/static/scripts/mvc/library/library-dataset-view.js
+++ b/static/scripts/mvc/library/library-dataset-view.js
@@ -80,7 +80,7 @@
downloadDataset: function(){
var url = '/api/libraries/datasets/download/uncompressed';
- var data = {'ldda_ids' : this.id};
+ var data = {'ld_ids' : this.id};
this.processDownload(url, data);
},
diff -r e9fab037f8b2d2fa916b517a79f14ab9188be43c -r c0c00d69cae3966a5c1e67abc3ba7aa67a735a64 static/scripts/mvc/library/library-foldertoolbar-view.js
--- a/static/scripts/mvc/library/library-foldertoolbar-view.js
+++ b/static/scripts/mvc/library/library-foldertoolbar-view.js
@@ -285,7 +285,7 @@
});
var url = '/api/libraries/datasets/download/' + format;
- var data = {'ldda_ids' : dataset_ids};
+ var data = {'ld_ids' : dataset_ids};
this.processDownload(url, data, 'get');
},
diff -r e9fab037f8b2d2fa916b517a79f14ab9188be43c -r c0c00d69cae3966a5c1e67abc3ba7aa67a735a64 static/scripts/packed/mvc/library/library-dataset-view.js
--- a/static/scripts/packed/mvc/library/library-dataset-view.js
+++ b/static/scripts/packed/mvc/library/library-dataset-view.js
@@ -1,1 +1,1 @@
-define(["libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(d,c,b){var a=Backbone.View.extend({el:"#center",model:null,options:{},events:{"click .toolbtn_modify_dataset":"enableModification","click .toolbtn_cancel_modifications":"render","click .toolbtn-download-dataset":"downloadDataset","click .toolbtn-import-dataset":"importIntoHistory","click .toolbtn-share-dataset":"shareDataset","click .toolbtn_save_modifications":"comingSoon","click .btn-remove-restrictions":"comingSoon","click .btn-make-private":"comingSoon","click .btn-share-dataset":"comingSoon"},initialize:function(e){this.options=_.extend(this.options,e);if(this.options.id){this.fetchDataset()}},fetchDataset:function(e){this.options=_.extend(this.options,e);this.model=new c.Item({id:this.options.id});var f=this;this.model.fetch({success:function(){if(f.options.show_permissions){f.showPermissions()}else{f.render()}},error:function(h,g){if(typeof g.responseJSON!=="undefined"){d.error(g.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}else{d.error("An error ocurred :(. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}}})},render:function(e){$(".tooltip").remove();this.options=_.extend(this.options,e);var f=this.templateDataset();this.$el.html(f({item:this.model}));$(".peek").html(this.model.get("peek"));$("#center [data-toggle]").tooltip()},enableModification:function(){$(".tooltip").remove();var e=this.templateModifyDataset();this.$el.html(e({item:this.model}));$(".peek").html(this.model.get("peek"));$("#center [data-toggle]").tooltip()},downloadDataset:function(){var e="/api/libraries/datasets/download/uncompressed";var f={ldda_ids:this.id};this.processDownload(e,f)},processDownload:function(f,g,h){if(f&&g){g=typeof g=="string"?g:$.param(g);var e="";$.each(g.split("&"),function(){var i=this.split("=");e+='<input type="hidden" name="'+i[0]+'" value="'+i[1]+'" />'});$('<form action="'+f+'" method="'+(h||"post")+'">'+e+"</form>").appendTo("body").submit().remove();d.info("Your download will begin soon")}},importIntoHistory:function(){this.refreshUserHistoriesList(function(e){var f=e.templateBulkImportInModal();e.modal=Galaxy.modal;e.modal.show({closing_events:true,title:"Import into History",body:f({histories:e.histories.models}),buttons:{Import:function(){e.importCurrentIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})},refreshUserHistoriesList:function(f){var e=this;this.histories=new c.GalaxyHistories();this.histories.fetch({success:function(){f(e)},error:function(h,g){if(typeof g.responseJSON!=="undefined"){d.error(g.responseJSON.err_msg)}else{d.error("An error ocurred :(")}}})},importCurrentIntoHistory:function(){var f=$(this.modal.elMain).find("select[name=dataset_import_single] option:selected").val();var g=new c.HistoryItem();g.url=g.urlRoot+f+"/contents";var e="/api/histories/"+f+"/set_as_current";$.ajax({url:e,type:"PUT"});g.save({content:this.id,source:"library"},{success:function(){Galaxy.modal.hide();d.success("Dataset imported. Click this to start analysing it.","",{onclick:function(){window.location="/"}})},error:function(i,h){if(typeof h.responseJSON!=="undefined"){d.error("Dataset not imported. "+h.responseJSON.err_msg)}else{d.error("An error occured! Dataset not imported. Please try again.")}}})},shareDataset:function(){d.info("Feature coming soon.")},goBack:function(){Galaxy.libraries.library_router.back()},showPermissions:function(){$(".tooltip").remove();var f=this.templateDatasetPermissions();this.$el.html(f({item:this.model}));var g=false;if(Galaxy.currUser){g=Galaxy.currUser.isAdmin()}var e=this;$.get("/api/libraries/datasets/"+e.id+"/permissions/current").done(function(j){var k=[];for(var m=0;m<j.length;m++){k.push(j[m]+":"+j[m])}if(g){var h={minimumInputLength:1,css:"access_perm",multiple:true,placeholder:"Click to select a role",container:e.$el.find("#access_perm"),ajax:{url:"/api/libraries/datasets/"+e.id+"/permissions",dataType:"json",quietMillis:100,data:function(i,p){return{q:i,page_limit:10,page:p}},results:function(q,p){var i=(p*10)<q.total;return{results:q.roles,more:i}}},formatResult:function l(i){return i.name+" type: "+i.type},formatSelection:function o(i){return i.name},initSelection:function(i,q){var p=[];$(i.val().split(",")).each(function(){var r=this.split(":");p.push({id:r[1],name:r[1]})});q(p)},initialData:k.join(","),dropdownCssClass:"bigdrop"};this.accessSelectObject=new b.View(h)}else{var n=this.templateAccessSelect();$.get("/api/libraries/datasets/"+e.id+"/permissions",function(i){$(".access_perm").html(n({options:i.roles}));this.accessSelectObject=$("#access_select").select2()}).fail(function(){d.error("An error occurred while fetching data with permissions. :(")})}}).fail(function(){d.error("An error occurred while fetching data with permissions. :(")});$("#center [data-toggle]").tooltip();$("#center").css("overflow","auto")},comingSoon:function(){d.warning("Feature coming soon")},templateDataset:function(){var e=[];e.push('<div class="library_style_container">');e.push(' <div id="library_toolbar">');e.push(' <button data-toggle="tooltip" data-placement="top" title="Download dataset" class="btn btn-default toolbtn-download-dataset primary-button" type="button"><span class="fa fa-download"></span> Download</span></button>');e.push(' <button data-toggle="tooltip" data-placement="top" title="Import dataset into history" class="btn btn-default toolbtn-import-dataset primary-button" type="button"><span class="fa fa-book"></span> to History</span></button>');e.push(' <button data-toggle="tooltip" data-placement="top" title="Modify dataset" class="btn btn-default toolbtn_modify_dataset primary-button" type="button"><span class="fa fa-pencil"></span> Modify</span></button>');e.push(' <a href="#folders/<%- item.get("folder_id") %>/datasets/<%- item.id %>/permissions"><button data-toggle="tooltip" data-placement="top" title="Change permissions" class="btn btn-default toolbtn_change_permissions primary-button" type="button"><span class="fa fa-group"></span> Permissions</span></button></a>');e.push(' <button data-toggle="tooltip" data-placement="top" title="Share dataset" class="btn btn-default toolbtn-share-dataset primary-button" type="button"><span class="fa fa-share"></span> Share</span></button>');e.push(" </div>");e.push('<ol class="breadcrumb">');e.push(' <li><a title="Return to the list of libraries" href="#">Libraries</a></li>');e.push(' <% _.each(item.get("full_path"), function(path_item) { %>');e.push(" <% if (path_item[0] != item.id) { %>");e.push(' <li><a title="Return to this folder" href="#/folders/<%- path_item[0] %>"><%- path_item[1] %></a></li> ');e.push("<% } else { %>");e.push(' <li class="active"><span title="You are here"><%- path_item[1] %></span></li>');e.push(" <% } %>");e.push(" <% }); %>");e.push("</ol>");e.push('<div class="dataset_table">');e.push(' <table class="grid table table-striped table-condensed">');e.push(" <tr>");e.push(' <th scope="row" id="id_row" data-id="<%= _.escape(item.get("ldda_id")) %>">Name</th>');e.push(' <td><%= _.escape(item.get("name")) %></td>');e.push(" </tr>");e.push(' <% if (item.get("data_type")) { %>');e.push(" <tr>");e.push(' <th scope="row">Data type</th>');e.push(' <td><%= _.escape(item.get("data_type")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("genome_build")) { %>');e.push(" <tr>");e.push(' <th scope="row">Genome build</th>');e.push(' <td><%= _.escape(item.get("genome_build")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("file_size")) { %>');e.push(" <tr>");e.push(' <th scope="row">Size</th>');e.push(' <td><%= _.escape(item.get("file_size")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("date_uploaded")) { %>');e.push(" <tr>");e.push(' <th scope="row">Date uploaded (UTC)</th>');e.push(' <td><%= _.escape(item.get("date_uploaded")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("uploaded_by")) { %>');e.push(" <tr>");e.push(' <th scope="row">Uploaded by</th>');e.push(' <td><%= _.escape(item.get("uploaded_by")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("metadata_data_lines")) { %>');e.push(" <tr>");e.push(' <th scope="row">Data Lines</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_data_lines")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("metadata_comment_lines")) { %>');e.push(" <tr>");e.push(' <th scope="row">Comment Lines</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_comment_lines")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("metadata_columns")) { %>');e.push(" <tr>");e.push(' <th scope="row">Number of Columns</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_columns")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("metadata_column_types")) { %>');e.push(" <tr>");e.push(' <th scope="row">Column Types</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_column_types")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("message")) { %>');e.push(" <tr>");e.push(' <th scope="row">Message</th>');e.push(' <td scope="row"><%= _.escape(item.get("message")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("misc_blurb")) { %>');e.push(" <tr>");e.push(' <th scope="row">Miscellaneous blurb</th>');e.push(' <td scope="row"><%= _.escape(item.get("misc_blurb")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("misc_info")) { %>');e.push(" <tr>");e.push(' <th scope="row">Miscellaneous information</th>');e.push(' <td scope="row"><%= _.escape(item.get("misc_info")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(" </table>");e.push(" <div>");e.push(' <pre class="peek">');e.push(" </pre>");e.push(" </div>");e.push("</div>");e.push("</div>");return _.template(e.join(""))},templateModifyDataset:function(){var e=[];e.push('<div class="library_style_container">');e.push(' <div id="library_toolbar">');e.push(' <button data-toggle="tooltip" data-placement="top" title="Cancel modifications" class="btn btn-default toolbtn_cancel_modifications primary-button" type="button"><span class="fa fa-times"></span> Cancel</span></button>');e.push(' <button data-toggle="tooltip" data-placement="top" title="Save modifications" class="btn btn-default toolbtn_save_modifications primary-button" type="button"><span class="fa fa-floppy-o"></span> Save</span></button>');e.push(" </div>");e.push('<ol class="breadcrumb">');e.push(' <li><a title="Return to the list of libraries" href="#">Libraries</a></li>');e.push(' <% _.each(item.get("full_path"), function(path_item) { %>');e.push(" <% if (path_item[0] != item.id) { %>");e.push(' <li><a title="Return to this folder" href="#/folders/<%- path_item[0] %>"><%- path_item[1] %></a></li> ');e.push("<% } else { %>");e.push(' <li class="active"><span title="You are here"><%- path_item[1] %></span></li>');e.push(" <% } %>");e.push(" <% }); %>");e.push("</ol>");e.push('<div class="dataset_table">');e.push('<p>For more editing options please import the dataset to history and use "Edit attributes" on it.</p>');e.push(' <table class="grid table table-striped table-condensed">');e.push(" <tr>");e.push(' <th scope="row" id="id_row" data-id="<%= _.escape(item.get("ldda_id")) %>">Name</th>');e.push(' <td><input class="input_dataset_name form-control" type="text" placeholder="name" value="<%= _.escape(item.get("name")) %>"></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Data type</th>');e.push(' <td><%= _.escape(item.get("data_type")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Genome build</th>');e.push(' <td><%= _.escape(item.get("genome_build")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Size</th>');e.push(' <td><%= _.escape(item.get("file_size")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Date uploaded (UTC)</th>');e.push(' <td><%= _.escape(item.get("date_uploaded")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Uploaded by</th>');e.push(' <td><%= _.escape(item.get("uploaded_by")) %></td>');e.push(" </tr>");e.push(' <tr scope="row">');e.push(' <th scope="row">Data Lines</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_data_lines")) %></td>');e.push(" </tr>");e.push(' <th scope="row">Comment Lines</th>');e.push(' <% if (item.get("metadata_comment_lines") === "") { %>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_comment_lines")) %></td>');e.push(" <% } else { %>");e.push(' <td scope="row">unknown</td>');e.push(" <% } %>");e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Number of Columns</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_columns")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Column Types</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_column_types")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Message</th>');e.push(' <td scope="row"><%= _.escape(item.get("message")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Miscellaneous information</th>');e.push(' <td scope="row"><%= _.escape(item.get("misc_info")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Miscellaneous blurb</th>');e.push(' <td scope="row"><%= _.escape(item.get("misc_blurb")) %></td>');e.push(" </tr>");e.push(" </table>");e.push("<div>");e.push(' <pre class="peek">');e.push(" </pre>");e.push("</div>");e.push("</div>");e.push("</div>");return _.template(e.join(""))},templateDatasetPermissions:function(){var e=[];e.push('<div class="library_style_container">');e.push(' <div id="library_toolbar">');e.push(' <a href="#folders/<%- item.get("folder_id") %>"><button data-toggle="tooltip" data-placement="top" title="Go back to folder" class="btn btn-default primary-button" type="button"><span class="fa fa-folder-open-o"></span> go to Folder</span></button></a>');e.push(' <a href="#folders/<%- item.get("folder_id") %>/datasets/<%- item.id %>"><button data-toggle="tooltip" data-placement="top" title="Go back to dataset" class="btn btn-default primary-button" type="button"><span class="fa fa-file-o"></span> see the Dataset</span></button><a>');e.push(" </div>");e.push('<ol class="breadcrumb">');e.push(' <li><a title="Return to the list of libraries" href="#">Libraries</a></li>');e.push(' <% _.each(item.get("full_path"), function(path_item) { %>');e.push(" <% if (path_item[0] != item.id) { %>");e.push(' <li><a title="Return to this folder" href="#/folders/<%- path_item[0] %>"><%- path_item[1] %></a></li> ');e.push("<% } else { %>");e.push(' <li class="active"><span title="You are here"><%- path_item[1] %></span></li>');e.push(" <% } %>");e.push(" <% }); %>");e.push("</ol>");e.push('<h1><%= _.escape(item.get("name")) %></h1>');e.push('<div class="alert alert-success">You have rights to change permissions on this dataset. That means you can control who can access it, who can modify it and also appoint others that can manage permissions on it.</div>');e.push('<div class="dataset_table">');e.push("<h2>Basic permissions</h2>");e.push("<p>You can remove all access restrictions on this dataset. ");e.push('<button data-toggle="tooltip" data-placement="top" title="Everybody will be able to see the dataset." class="btn btn-default btn-remove-restrictions primary-button" type="button"><span class="fa fa-globe"></span> Remove restrictions</span></button>');e.push("</p>");e.push("<p>You can make this dataset private to you. ");e.push('<button data-toggle="tooltip" data-placement="top" title="Only you will be able to see the dataset." class="btn btn-default btn-make-private primary-button" type="button"><span class="fa fa-key"></span> Make private</span></button>');e.push("</p>");e.push("<p>You can share this dataset with another Galaxy user. ");e.push('<button data-toggle="tooltip" data-placement="top" title="Only you and the other user will be able to see the dataset." class="btn btn-default btn-share-dataset primary-button" type="button"><span class="fa fa-share"></span> Share</span></button>');e.push("</p>");e.push("<h2>Advanced permissions</h2>");e.push("<p>You can assign any number of roles to any of the following three dataset permission types. However please read carefully the implications of such actions.</p>");e.push("<h3>Access Roles</h3>");e.push('<div class="alert alert-info">User has to have <strong>all these roles</strong> in order to see this dataset.</div>');e.push('<div id="access_perm" class="access_perm roles-selection"></div>');e.push('<button data-toggle="tooltip" data-placement="top" title="Save modifications" class="btn btn-default toolbtn_save_modifications primary-button" type="button"><span class="fa fa-floppy-o"></span> Save</span></button>');e.push("<h3>Modify Roles</h3>");e.push('<div class="alert alert-info">Users with <strong>any</strong> of these roles can modify the information about this dataset.</div>');e.push('<div id="modify_perm" class="modify_perm"></div>');e.push("<h3>Manage Roles</h3>");e.push('<div class="alert alert-info">Users with <strong>any</strong> of these roles can change permissions of this dataset.</div>');e.push('<div id="manage_perm" class="manage_perm"></div>');e.push("</div>");e.push("</div>");return _.template(e.join(""))},templateBulkImportInModal:function(){var e=[];e.push('<span id="history_modal_combo_bulk" style="width:90%; margin-left: 1em; margin-right: 1em; ">');e.push("Select history: ");e.push('<select id="dataset_import_single" name="dataset_import_single" style="width:50%; margin-bottom: 1em; "> ');e.push(" <% _.each(histories, function(history) { %>");e.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');e.push(" <% }); %>");e.push("</select>");e.push("</span>");return _.template(e.join(""))},templateAccessSelect:function(){var e=[];e.push('<select id="access_select" multiple>');e.push(" <% _.each(options, function(option) { %>");e.push(' <option value="<%- option.name %>"><%- option.name %></option>');e.push(" <% }); %>");e.push("</select>");return _.template(e.join(""))}});return{LibraryDatasetView:a}});
\ No newline at end of file
+define(["libs/toastr","mvc/library/library-model","mvc/ui/ui-select"],function(d,c,b){var a=Backbone.View.extend({el:"#center",model:null,options:{},events:{"click .toolbtn_modify_dataset":"enableModification","click .toolbtn_cancel_modifications":"render","click .toolbtn-download-dataset":"downloadDataset","click .toolbtn-import-dataset":"importIntoHistory","click .toolbtn-share-dataset":"shareDataset","click .toolbtn_save_modifications":"comingSoon","click .btn-remove-restrictions":"comingSoon","click .btn-make-private":"comingSoon","click .btn-share-dataset":"comingSoon"},initialize:function(e){this.options=_.extend(this.options,e);if(this.options.id){this.fetchDataset()}},fetchDataset:function(e){this.options=_.extend(this.options,e);this.model=new c.Item({id:this.options.id});var f=this;this.model.fetch({success:function(){if(f.options.show_permissions){f.showPermissions()}else{f.render()}},error:function(h,g){if(typeof g.responseJSON!=="undefined"){d.error(g.responseJSON.err_msg+" Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}else{d.error("An error ocurred :(. Click this to go back.","",{onclick:function(){Galaxy.libraries.library_router.back()}})}}})},render:function(e){$(".tooltip").remove();this.options=_.extend(this.options,e);var f=this.templateDataset();this.$el.html(f({item:this.model}));$(".peek").html(this.model.get("peek"));$("#center [data-toggle]").tooltip()},enableModification:function(){$(".tooltip").remove();var e=this.templateModifyDataset();this.$el.html(e({item:this.model}));$(".peek").html(this.model.get("peek"));$("#center [data-toggle]").tooltip()},downloadDataset:function(){var e="/api/libraries/datasets/download/uncompressed";var f={ld_ids:this.id};this.processDownload(e,f)},processDownload:function(f,g,h){if(f&&g){g=typeof g=="string"?g:$.param(g);var e="";$.each(g.split("&"),function(){var i=this.split("=");e+='<input type="hidden" name="'+i[0]+'" value="'+i[1]+'" />'});$('<form action="'+f+'" method="'+(h||"post")+'">'+e+"</form>").appendTo("body").submit().remove();d.info("Your download will begin soon")}},importIntoHistory:function(){this.refreshUserHistoriesList(function(e){var f=e.templateBulkImportInModal();e.modal=Galaxy.modal;e.modal.show({closing_events:true,title:"Import into History",body:f({histories:e.histories.models}),buttons:{Import:function(){e.importCurrentIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})},refreshUserHistoriesList:function(f){var e=this;this.histories=new c.GalaxyHistories();this.histories.fetch({success:function(){f(e)},error:function(h,g){if(typeof g.responseJSON!=="undefined"){d.error(g.responseJSON.err_msg)}else{d.error("An error ocurred :(")}}})},importCurrentIntoHistory:function(){var f=$(this.modal.elMain).find("select[name=dataset_import_single] option:selected").val();var g=new c.HistoryItem();g.url=g.urlRoot+f+"/contents";var e="/api/histories/"+f+"/set_as_current";$.ajax({url:e,type:"PUT"});g.save({content:this.id,source:"library"},{success:function(){Galaxy.modal.hide();d.success("Dataset imported. Click this to start analysing it.","",{onclick:function(){window.location="/"}})},error:function(i,h){if(typeof h.responseJSON!=="undefined"){d.error("Dataset not imported. "+h.responseJSON.err_msg)}else{d.error("An error occured! Dataset not imported. Please try again.")}}})},shareDataset:function(){d.info("Feature coming soon.")},goBack:function(){Galaxy.libraries.library_router.back()},showPermissions:function(){$(".tooltip").remove();var f=this.templateDatasetPermissions();this.$el.html(f({item:this.model}));var g=false;if(Galaxy.currUser){g=Galaxy.currUser.isAdmin()}var e=this;$.get("/api/libraries/datasets/"+e.id+"/permissions/current").done(function(j){var k=[];for(var m=0;m<j.length;m++){k.push(j[m]+":"+j[m])}if(g){var h={minimumInputLength:1,css:"access_perm",multiple:true,placeholder:"Click to select a role",container:e.$el.find("#access_perm"),ajax:{url:"/api/libraries/datasets/"+e.id+"/permissions",dataType:"json",quietMillis:100,data:function(i,p){return{q:i,page_limit:10,page:p}},results:function(q,p){var i=(p*10)<q.total;return{results:q.roles,more:i}}},formatResult:function l(i){return i.name+" type: "+i.type},formatSelection:function o(i){return i.name},initSelection:function(i,q){var p=[];$(i.val().split(",")).each(function(){var r=this.split(":");p.push({id:r[1],name:r[1]})});q(p)},initialData:k.join(","),dropdownCssClass:"bigdrop"};this.accessSelectObject=new b.View(h)}else{var n=this.templateAccessSelect();$.get("/api/libraries/datasets/"+e.id+"/permissions",function(i){$(".access_perm").html(n({options:i.roles}));this.accessSelectObject=$("#access_select").select2()}).fail(function(){d.error("An error occurred while fetching data with permissions. :(")})}}).fail(function(){d.error("An error occurred while fetching data with permissions. :(")});$("#center [data-toggle]").tooltip();$("#center").css("overflow","auto")},comingSoon:function(){d.warning("Feature coming soon")},templateDataset:function(){var e=[];e.push('<div class="library_style_container">');e.push(' <div id="library_toolbar">');e.push(' <button data-toggle="tooltip" data-placement="top" title="Download dataset" class="btn btn-default toolbtn-download-dataset primary-button" type="button"><span class="fa fa-download"></span> Download</span></button>');e.push(' <button data-toggle="tooltip" data-placement="top" title="Import dataset into history" class="btn btn-default toolbtn-import-dataset primary-button" type="button"><span class="fa fa-book"></span> to History</span></button>');e.push(' <button data-toggle="tooltip" data-placement="top" title="Modify dataset" class="btn btn-default toolbtn_modify_dataset primary-button" type="button"><span class="fa fa-pencil"></span> Modify</span></button>');e.push(' <a href="#folders/<%- item.get("folder_id") %>/datasets/<%- item.id %>/permissions"><button data-toggle="tooltip" data-placement="top" title="Change permissions" class="btn btn-default toolbtn_change_permissions primary-button" type="button"><span class="fa fa-group"></span> Permissions</span></button></a>');e.push(' <button data-toggle="tooltip" data-placement="top" title="Share dataset" class="btn btn-default toolbtn-share-dataset primary-button" type="button"><span class="fa fa-share"></span> Share</span></button>');e.push(" </div>");e.push('<ol class="breadcrumb">');e.push(' <li><a title="Return to the list of libraries" href="#">Libraries</a></li>');e.push(' <% _.each(item.get("full_path"), function(path_item) { %>');e.push(" <% if (path_item[0] != item.id) { %>");e.push(' <li><a title="Return to this folder" href="#/folders/<%- path_item[0] %>"><%- path_item[1] %></a></li> ');e.push("<% } else { %>");e.push(' <li class="active"><span title="You are here"><%- path_item[1] %></span></li>');e.push(" <% } %>");e.push(" <% }); %>");e.push("</ol>");e.push('<div class="dataset_table">');e.push(' <table class="grid table table-striped table-condensed">');e.push(" <tr>");e.push(' <th scope="row" id="id_row" data-id="<%= _.escape(item.get("ldda_id")) %>">Name</th>');e.push(' <td><%= _.escape(item.get("name")) %></td>');e.push(" </tr>");e.push(' <% if (item.get("data_type")) { %>');e.push(" <tr>");e.push(' <th scope="row">Data type</th>');e.push(' <td><%= _.escape(item.get("data_type")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("genome_build")) { %>');e.push(" <tr>");e.push(' <th scope="row">Genome build</th>');e.push(' <td><%= _.escape(item.get("genome_build")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("file_size")) { %>');e.push(" <tr>");e.push(' <th scope="row">Size</th>');e.push(' <td><%= _.escape(item.get("file_size")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("date_uploaded")) { %>');e.push(" <tr>");e.push(' <th scope="row">Date uploaded (UTC)</th>');e.push(' <td><%= _.escape(item.get("date_uploaded")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("uploaded_by")) { %>');e.push(" <tr>");e.push(' <th scope="row">Uploaded by</th>');e.push(' <td><%= _.escape(item.get("uploaded_by")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("metadata_data_lines")) { %>');e.push(" <tr>");e.push(' <th scope="row">Data Lines</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_data_lines")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("metadata_comment_lines")) { %>');e.push(" <tr>");e.push(' <th scope="row">Comment Lines</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_comment_lines")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("metadata_columns")) { %>');e.push(" <tr>");e.push(' <th scope="row">Number of Columns</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_columns")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("metadata_column_types")) { %>');e.push(" <tr>");e.push(' <th scope="row">Column Types</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_column_types")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("message")) { %>');e.push(" <tr>");e.push(' <th scope="row">Message</th>');e.push(' <td scope="row"><%= _.escape(item.get("message")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("misc_blurb")) { %>');e.push(" <tr>");e.push(' <th scope="row">Miscellaneous blurb</th>');e.push(' <td scope="row"><%= _.escape(item.get("misc_blurb")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(' <% if (item.get("misc_info")) { %>');e.push(" <tr>");e.push(' <th scope="row">Miscellaneous information</th>');e.push(' <td scope="row"><%= _.escape(item.get("misc_info")) %></td>');e.push(" </tr>");e.push(" <% } %>");e.push(" </table>");e.push(" <div>");e.push(' <pre class="peek">');e.push(" </pre>");e.push(" </div>");e.push("</div>");e.push("</div>");return _.template(e.join(""))},templateModifyDataset:function(){var e=[];e.push('<div class="library_style_container">');e.push(' <div id="library_toolbar">');e.push(' <button data-toggle="tooltip" data-placement="top" title="Cancel modifications" class="btn btn-default toolbtn_cancel_modifications primary-button" type="button"><span class="fa fa-times"></span> Cancel</span></button>');e.push(' <button data-toggle="tooltip" data-placement="top" title="Save modifications" class="btn btn-default toolbtn_save_modifications primary-button" type="button"><span class="fa fa-floppy-o"></span> Save</span></button>');e.push(" </div>");e.push('<ol class="breadcrumb">');e.push(' <li><a title="Return to the list of libraries" href="#">Libraries</a></li>');e.push(' <% _.each(item.get("full_path"), function(path_item) { %>');e.push(" <% if (path_item[0] != item.id) { %>");e.push(' <li><a title="Return to this folder" href="#/folders/<%- path_item[0] %>"><%- path_item[1] %></a></li> ');e.push("<% } else { %>");e.push(' <li class="active"><span title="You are here"><%- path_item[1] %></span></li>');e.push(" <% } %>");e.push(" <% }); %>");e.push("</ol>");e.push('<div class="dataset_table">');e.push('<p>For more editing options please import the dataset to history and use "Edit attributes" on it.</p>');e.push(' <table class="grid table table-striped table-condensed">');e.push(" <tr>");e.push(' <th scope="row" id="id_row" data-id="<%= _.escape(item.get("ldda_id")) %>">Name</th>');e.push(' <td><input class="input_dataset_name form-control" type="text" placeholder="name" value="<%= _.escape(item.get("name")) %>"></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Data type</th>');e.push(' <td><%= _.escape(item.get("data_type")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Genome build</th>');e.push(' <td><%= _.escape(item.get("genome_build")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Size</th>');e.push(' <td><%= _.escape(item.get("file_size")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Date uploaded (UTC)</th>');e.push(' <td><%= _.escape(item.get("date_uploaded")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Uploaded by</th>');e.push(' <td><%= _.escape(item.get("uploaded_by")) %></td>');e.push(" </tr>");e.push(' <tr scope="row">');e.push(' <th scope="row">Data Lines</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_data_lines")) %></td>');e.push(" </tr>");e.push(' <th scope="row">Comment Lines</th>');e.push(' <% if (item.get("metadata_comment_lines") === "") { %>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_comment_lines")) %></td>');e.push(" <% } else { %>");e.push(' <td scope="row">unknown</td>');e.push(" <% } %>");e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Number of Columns</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_columns")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Column Types</th>');e.push(' <td scope="row"><%= _.escape(item.get("metadata_column_types")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Message</th>');e.push(' <td scope="row"><%= _.escape(item.get("message")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Miscellaneous information</th>');e.push(' <td scope="row"><%= _.escape(item.get("misc_info")) %></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <th scope="row">Miscellaneous blurb</th>');e.push(' <td scope="row"><%= _.escape(item.get("misc_blurb")) %></td>');e.push(" </tr>");e.push(" </table>");e.push("<div>");e.push(' <pre class="peek">');e.push(" </pre>");e.push("</div>");e.push("</div>");e.push("</div>");return _.template(e.join(""))},templateDatasetPermissions:function(){var e=[];e.push('<div class="library_style_container">');e.push(' <div id="library_toolbar">');e.push(' <a href="#folders/<%- item.get("folder_id") %>"><button data-toggle="tooltip" data-placement="top" title="Go back to folder" class="btn btn-default primary-button" type="button"><span class="fa fa-folder-open-o"></span> go to Folder</span></button></a>');e.push(' <a href="#folders/<%- item.get("folder_id") %>/datasets/<%- item.id %>"><button data-toggle="tooltip" data-placement="top" title="Go back to dataset" class="btn btn-default primary-button" type="button"><span class="fa fa-file-o"></span> see the Dataset</span></button><a>');e.push(" </div>");e.push('<ol class="breadcrumb">');e.push(' <li><a title="Return to the list of libraries" href="#">Libraries</a></li>');e.push(' <% _.each(item.get("full_path"), function(path_item) { %>');e.push(" <% if (path_item[0] != item.id) { %>");e.push(' <li><a title="Return to this folder" href="#/folders/<%- path_item[0] %>"><%- path_item[1] %></a></li> ');e.push("<% } else { %>");e.push(' <li class="active"><span title="You are here"><%- path_item[1] %></span></li>');e.push(" <% } %>");e.push(" <% }); %>");e.push("</ol>");e.push('<h1><%= _.escape(item.get("name")) %></h1>');e.push('<div class="alert alert-success">You have rights to change permissions on this dataset. That means you can control who can access it, who can modify it and also appoint others that can manage permissions on it.</div>');e.push('<div class="dataset_table">');e.push("<h2>Basic permissions</h2>");e.push("<p>You can remove all access restrictions on this dataset. ");e.push('<button data-toggle="tooltip" data-placement="top" title="Everybody will be able to see the dataset." class="btn btn-default btn-remove-restrictions primary-button" type="button"><span class="fa fa-globe"></span> Remove restrictions</span></button>');e.push("</p>");e.push("<p>You can make this dataset private to you. ");e.push('<button data-toggle="tooltip" data-placement="top" title="Only you will be able to see the dataset." class="btn btn-default btn-make-private primary-button" type="button"><span class="fa fa-key"></span> Make private</span></button>');e.push("</p>");e.push("<p>You can share this dataset with another Galaxy user. ");e.push('<button data-toggle="tooltip" data-placement="top" title="Only you and the other user will be able to see the dataset." class="btn btn-default btn-share-dataset primary-button" type="button"><span class="fa fa-share"></span> Share</span></button>');e.push("</p>");e.push("<h2>Advanced permissions</h2>");e.push("<p>You can assign any number of roles to any of the following three dataset permission types. However please read carefully the implications of such actions.</p>");e.push("<h3>Access Roles</h3>");e.push('<div class="alert alert-info">User has to have <strong>all these roles</strong> in order to see this dataset.</div>');e.push('<div id="access_perm" class="access_perm roles-selection"></div>');e.push('<button data-toggle="tooltip" data-placement="top" title="Save modifications" class="btn btn-default toolbtn_save_modifications primary-button" type="button"><span class="fa fa-floppy-o"></span> Save</span></button>');e.push("<h3>Modify Roles</h3>");e.push('<div class="alert alert-info">Users with <strong>any</strong> of these roles can modify the information about this dataset.</div>');e.push('<div id="modify_perm" class="modify_perm"></div>');e.push("<h3>Manage Roles</h3>");e.push('<div class="alert alert-info">Users with <strong>any</strong> of these roles can change permissions of this dataset.</div>');e.push('<div id="manage_perm" class="manage_perm"></div>');e.push("</div>");e.push("</div>");return _.template(e.join(""))},templateBulkImportInModal:function(){var e=[];e.push('<span id="history_modal_combo_bulk" style="width:90%; margin-left: 1em; margin-right: 1em; ">');e.push("Select history: ");e.push('<select id="dataset_import_single" name="dataset_import_single" style="width:50%; margin-bottom: 1em; "> ');e.push(" <% _.each(histories, function(history) { %>");e.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');e.push(" <% }); %>");e.push("</select>");e.push("</span>");return _.template(e.join(""))},templateAccessSelect:function(){var e=[];e.push('<select id="access_select" multiple>');e.push(" <% _.each(options, function(option) { %>");e.push(' <option value="<%- option.name %>"><%- option.name %></option>');e.push(" <% }); %>");e.push("</select>");return _.template(e.join(""))}});return{LibraryDatasetView:a}});
\ No newline at end of file
diff -r e9fab037f8b2d2fa916b517a79f14ab9188be43c -r c0c00d69cae3966a5c1e67abc3ba7aa67a735a64 static/scripts/packed/mvc/library/library-foldertoolbar-view.js
--- a/static/scripts/packed/mvc/library/library-foldertoolbar-view.js
+++ b/static/scripts/packed/mvc/library/library-foldertoolbar-view.js
@@ -1,1 +1,1 @@
-define(["galaxy.masthead","utils/utils","libs/toastr","mvc/library/library-model"],function(b,d,e,c){var a=Backbone.View.extend({el:"#center",events:{"click #toolbtn_create_folder":"createFolderFromModal","click #toolbtn_bulk_import":"modalBulkImport","click .toolbtn_add_files":"addFilesToFolderModal","click #include_deleted_datasets_chk":"checkIncludeDeleted","click #toolbtn_bulk_delete":"deleteSelectedDatasets"},defaults:{can_add_library_item:false,contains_file:false,chain_call_control:{total_number:0,failed_number:0}},modal:null,histories:null,initialize:function(f){this.options=_.defaults(f||{},this.defaults);this.render()},render:function(g){this.options=_.extend(this.options,g);var i=false;var f=true;if(Galaxy.currUser){i=Galaxy.currUser.isAdmin();f=Galaxy.currUser.isAnonymous()}var h=this.templateToolBar();this.$el.html(h({id:this.options.id,admin_user:i,anonym:f}))},configureElements:function(f){this.options=_.extend(this.options,f);if(this.options.can_add_library_item===true){$(".add-library-items").show()}else{$(".add-library-items").hide()}if(this.options.contains_file===true){if(Galaxy.currUser){if(!Galaxy.currUser.isAnonymous()){$(".logged-dataset-manipulation").show();$(".dataset-manipulation").show()}else{$(".dataset-manipulation").show();$(".logged-dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}this.$el.find("[data-toggle]").tooltip()},createFolderFromModal:function(){event.preventDefault();event.stopPropagation();var f=this;var g=this.templateNewFolderInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Create New Folder",body:g(),buttons:{Create:function(){f.create_new_folder_event()},Close:function(){Galaxy.modal.hide()}}})},create_new_folder_event:function(){var f=this.serialize_new_folder();if(this.validate_new_folder(f)){var g=new c.FolderAsModel();url_items=Backbone.history.fragment.split("/");current_folder_id=url_items[url_items.length-1];g.url=g.urlRoot+"/"+current_folder_id;g.save(f,{success:function(h){Galaxy.modal.hide();e.success("Folder created");h.set({type:"folder"});Galaxy.libraries.folderListView.collection.add(h)},error:function(i,h){Galaxy.modal.hide();if(typeof h.responseJSON!=="undefined"){e.error(h.responseJSON.err_msg)}else{e.error("An error ocurred :(")}}})}else{e.error("Folder's name is missing")}return false},serialize_new_folder:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val()}},validate_new_folder:function(f){return f.name!==""},modalBulkImport:function(){var f=$("#folder_table").find(":checked");if(f.length===0){e.info("You have to select some datasets first")}else{this.refreshUserHistoriesList(function(g){var h=g.templateBulkImportInModal();g.modal=Galaxy.modal;g.modal.show({closing_events:true,title:"Import into History",body:h({histories:g.histories.models}),buttons:{Import:function(){g.importAllIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})}},refreshUserHistoriesList:function(g){var f=this;this.histories=new c.GalaxyHistories();this.histories.fetch({success:function(){g(f)},error:function(i,h){if(typeof h.responseJSON!=="undefined"){e.error(h.responseJSON.err_msg)}else{e.error("An error ocurred :(")}}})},importAllIntoHistory:function(){this.modal.disableButton("Import");this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var k=$("select[name=dataset_import_bulk] option:selected").val();this.options.last_used_history_id=k;var n=$("select[name=dataset_import_bulk] option:selected").text();var p=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){p.push(this.parentElement.parentElement.id)}});var o=this.templateImportIntoHistoryProgressBar();this.modal.$el.find(".modal-body").html(o({history_name:n}));var l=100/p.length;this.initProgress(l);var f=[];for(var h=p.length-1;h>=0;h--){var j=p[h];var m=new c.HistoryItem();m.url=m.urlRoot+k+"/contents";m.content=j;m.source="library";f.push(m)}this.options.chain_call_control.total_number=f.length;var g="/api/histories/"+k+"/set_as_current";$.ajax({url:g,type:"PUT"});this.chainCall(f,n)},chainCall:function(g,j){var f=this;var h=g.pop();if(typeof h==="undefined"){if(this.options.chain_call_control.failed_number===0){e.success("Selected datasets imported into history. Click this to start analysing it.","",{onclick:function(){window.location="/"}})}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){e.error("There was an error and no datasets were imported into history.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){e.warning("Some of the datasets could not be imported into history. Click this to see what was imported.","",{onclick:function(){window.location="/"}})}}}Galaxy.modal.hide();return}var i=$.when(h.save({content:h.content,source:h.source}));i.done(function(){f.updateProgress();f.chainCall(g,j)}).fail(function(){f.options.chain_call_control.failed_number+=1;f.updateProgress();f.chainCall(g,j)})},initProgress:function(f){this.progress=0;this.progressStep=f},updateProgress:function(){this.progress+=this.progressStep;$(".progress-bar-import").width(Math.round(this.progress)+"%");txt_representation=Math.round(this.progress)+"% Complete";$(".completion_span").text(txt_representation)},download:function(f,j){var h=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});var g="/api/libraries/datasets/download/"+j;var i={ldda_ids:h};this.processDownload(g,i,"get")},processDownload:function(g,h,i){if(g&&h){h=typeof h==="string"?h:$.param(h);var f="";$.each(h.split("&"),function(){var j=this.split("=");f+='<input type="hidden" name="'+j[0]+'" value="'+j[1]+'" />'});$('<form action="'+g+'" method="'+(i||"post")+'">'+f+"</form>").appendTo("body").submit().remove();e.info("Your download will begin soon")}},addFilesToFolderModal:function(){this.refreshUserHistoriesList(function(f){f.modal=Galaxy.modal;var g=f.templateAddFilesInModal();f.modal.show({closing_events:true,title:"Add datasets from history to "+f.options.folder_name,body:g({histories:f.histories.models}),buttons:{Add:function(){f.addAllDatasetsFromHistory()},Close:function(){Galaxy.modal.hide()}}});if(f.histories.models.length>0){f.fetchAndDisplayHistoryContents(f.histories.models[0].id);$("#dataset_add_bulk").change(function(h){f.fetchAndDisplayHistoryContents(h.target.value)})}else{e.error("An error ocurred :(")}})},fetchAndDisplayHistoryContents:function(h){var g=new c.HistoryContents({id:h});var f=this;g.fetch({success:function(j){var i=f.templateHistoryContents();f.histories.get(h).set({contents:j});f.modal.$el.find("#selected_history_content").html(i({history_contents:j.models.reverse()}))},error:function(){e.error("An error ocurred :(")}})},addAllDatasetsFromHistory:function(){this.modal.disableButton("Add");this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var f=[];this.modal.$el.find("#selected_history_content").find(":checked").each(function(){var i=$(this.parentElement).data("id");if(i){f.push(i)}});var l=this.options.folder_name;var k=this.templateAddingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(k({folder_name:l}));this.progressStep=100/f.length;this.progress=0;var j=[];for(var h=f.length-1;h>=0;h--){history_dataset_id=f[h];var g=new c.Item();g.url="/api/folders/"+this.options.id+"/contents";g.set({from_hda_id:history_dataset_id});j.push(g)}this.options.chain_call_control.total_number=j.length;this.chainCallAddingHdas(j)},chainCallAddingHdas:function(g){var f=this;this.added_hdas=new c.Folder();var h=g.pop();if(typeof h==="undefined"){if(this.options.chain_call_control.failed_number===0){e.success("Selected datasets from history added to the folder")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){e.error("There was an error and no datasets were added to the folder.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){e.warning("Some of the datasets could not be added to the folder")}}}Galaxy.modal.hide();return this.added_hdas}var i=$.when(h.save({from_hda_id:h.get("from_hda_id")}));i.done(function(j){Galaxy.libraries.folderListView.collection.add(j);f.updateProgress();f.chainCallAddingHdas(g)}).fail(function(){f.options.chain_call_control.failed_number+=1;f.updateProgress();f.chainCallAddingHdas(g)})},checkIncludeDeleted:function(f){if(f.target.checked){Galaxy.libraries.folderListView.fetchFolder({include_deleted:true})}else{Galaxy.libraries.folderListView.fetchFolder({include_deleted:false})}},deleteSelectedDatasets:function(){var f=$("#folder_table").find(":checked");if(f.length===0){e.info("You have to select some datasets first")}else{var j=this.templateDeletingDatasetsProgressBar();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Deleting selected datasets",body:j({}),buttons:{Close:function(){Galaxy.modal.hide()}}});this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var g=[];f.each(function(){if(this.parentElement.parentElement.id!==""){g.push(this.parentElement.parentElement.id)}});this.progressStep=100/g.length;this.progress=0;var l=[];for(var h=g.length-1;h>=0;h--){var k=new c.Item({id:g[h]});l.push(k)}this.options.chain_call_control.total_number=g.length;this.chainCallDeletingHdas(l)}},chainCallDeletingHdas:function(g){var f=this;this.deleted_lddas=new c.Folder();var h=g.pop();if(typeof h==="undefined"){if(this.options.chain_call_control.failed_number===0){e.success("Selected datasets deleted")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){e.error("There was an error and no datasets were deleted.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){e.warning("Some of the datasets could not be deleted")}}}Galaxy.modal.hide();return this.deleted_lddas}var i=$.when(h.destroy());i.done(function(k){Galaxy.libraries.folderListView.collection.remove(h.id);f.updateProgress();if(Galaxy.libraries.folderListView.options.include_deleted){var j=new c.Item(k);Galaxy.libraries.folderListView.collection.add(j)}f.chainCallDeletingHdas(g)}).fail(function(){f.options.chain_call_control.failed_number+=1;f.updateProgress();f.chainCallDeletingHdas(g)})},templateToolBar:function(){tmpl_array=[];tmpl_array.push('<div class="library_style_container">');tmpl_array.push('<div id="library_toolbar">');tmpl_array.push('<span data-toggle="tooltip" data-placement="top" class="logged-dataset-manipulation" title="Include deleted datasets" style="display:none;"><input id="include_deleted_datasets_chk" style="margin: 0;" type="checkbox"> include deleted</input></span>');tmpl_array.push('<div class="btn-group add-library-items" style="display:none;">');tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Create New Folder" id="toolbtn_create_folder" class="btn btn-default primary-button" type="button"><span class="fa fa-plus"></span><span class="fa fa-folder"></span></button>');tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Add Datasets to Current Folder" id="toolbtn_add_files" class="btn btn-default toolbtn_add_files primary-button" type="button"><span class="fa fa-plus"></span><span class="fa fa-file"></span></span></button>');tmpl_array.push("</div>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Import selected datasets into history" id="toolbtn_bulk_import" class="primary-button dataset-manipulation" style="margin-left: 0.5em; display:none;" type="button"><span class="fa fa-book"></span> to History</button>');tmpl_array.push(' <div id="toolbtn_dl" class="btn-group dataset-manipulation" style="margin-left: 0.5em; display:none; ">');tmpl_array.push(' <button title="Download selected datasets as archive" id="drop_toggle" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-download"></span> Download <span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li id="download_archive"><a href="#/folders/<%= id %>/download/tgz">.tar.gz</a></li>');tmpl_array.push(' <li id="download_archive"><a href="#/folders/<%= id %>/download/tbz">.tar.bz</a></li>');tmpl_array.push(' <li id="download_archive"><a href="#/folders/<%= id %>/download/zip">.zip</a></li>');tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Mark selected datasets deleted" id="toolbtn_bulk_delete" class="primary-button logged-dataset-manipulation" style="margin-left: 0.5em; display:none; " type="button"><span class="fa fa-times"></span> Delete</button>');tmpl_array.push(" </div>");tmpl_array.push(' <div id="folder_items_element">');tmpl_array.push(" </div>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateNewFolderInModal:function(){tmpl_array=[];tmpl_array.push('<div id="new_folder_modal">');tmpl_array.push("<form>");tmpl_array.push('<input type="text" name="Name" value="" placeholder="Name">');tmpl_array.push('<input type="text" name="Description" value="" placeholder="Description">');tmpl_array.push("</form>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateBulkImportInModal:function(){var f=[];f.push('<span id="history_modal_combo_bulk" style="width:90%; margin-left: 1em; margin-right: 1em; ">');f.push("Select history: ");f.push('<select id="dataset_import_bulk" name="dataset_import_bulk" style="width:50%; margin-bottom: 1em; "> ');f.push(" <% _.each(histories, function(history) { %>");f.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');f.push(" <% }); %>");f.push("</select>");f.push("</span>");return _.template(f.join(""))},templateImportIntoHistoryProgressBar:function(){var f=[];f.push('<div class="import_text">');f.push("Importing selected datasets to history <b><%= _.escape(history_name) %></b>");f.push("</div>");f.push('<div class="progress">');f.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');f.push(' <span class="completion_span">0% Complete</span>');f.push(" </div>");f.push("</div>");f.push("");return _.template(f.join(""))},templateAddingDatasetsProgressBar:function(){var f=[];f.push('<div class="import_text">');f.push("Adding selected datasets from history to library folder <b><%= _.escape(folder_name) %></b>");f.push("</div>");f.push('<div class="progress">');f.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');f.push(' <span class="completion_span">0% Complete</span>');f.push(" </div>");f.push("</div>");f.push("");return _.template(f.join(""))},templateDeletingDatasetsProgressBar:function(){var f=[];f.push('<div class="import_text">');f.push("</div>");f.push('<div class="progress">');f.push(' <div class="progress-bar progress-bar-delete" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');f.push(' <span class="completion_span">0% Complete</span>');f.push(" </div>");f.push("</div>");f.push("");return _.template(f.join(""))},templateAddFilesInModal:function(){var f=[];f.push('<div id="add_files_modal">');f.push('<div id="history_modal_combo_bulk">');f.push("Select history: ");f.push('<select id="dataset_add_bulk" name="dataset_add_bulk" style="width:66%; "> ');f.push(" <% _.each(histories, function(history) { %>");f.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');f.push(" <% }); %>");f.push("</select>");f.push("</div>");f.push('<div id="selected_history_content">');f.push("</div>");f.push("</div>");return _.template(f.join(""))},templateHistoryContents:function(){var f=[];f.push("Choose the datasets to import:");f.push("<ul>");f.push(" <% _.each(history_contents, function(history_item) { %>");f.push(' <li data-id="<%= _.escape(history_item.get("id")) %>">');f.push(' <input style="margin: 0;" type="checkbox"><%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %>');f.push(" </li>");f.push(" <% }); %>");f.push("</ul>");return _.template(f.join(""))}});return{FolderToolbarView:a}});
\ No newline at end of file
+define(["galaxy.masthead","utils/utils","libs/toastr","mvc/library/library-model"],function(b,d,e,c){var a=Backbone.View.extend({el:"#center",events:{"click #toolbtn_create_folder":"createFolderFromModal","click #toolbtn_bulk_import":"modalBulkImport","click .toolbtn_add_files":"addFilesToFolderModal","click #include_deleted_datasets_chk":"checkIncludeDeleted","click #toolbtn_bulk_delete":"deleteSelectedDatasets"},defaults:{can_add_library_item:false,contains_file:false,chain_call_control:{total_number:0,failed_number:0}},modal:null,histories:null,initialize:function(f){this.options=_.defaults(f||{},this.defaults);this.render()},render:function(g){this.options=_.extend(this.options,g);var i=false;var f=true;if(Galaxy.currUser){i=Galaxy.currUser.isAdmin();f=Galaxy.currUser.isAnonymous()}var h=this.templateToolBar();this.$el.html(h({id:this.options.id,admin_user:i,anonym:f}))},configureElements:function(f){this.options=_.extend(this.options,f);if(this.options.can_add_library_item===true){$(".add-library-items").show()}else{$(".add-library-items").hide()}if(this.options.contains_file===true){if(Galaxy.currUser){if(!Galaxy.currUser.isAnonymous()){$(".logged-dataset-manipulation").show();$(".dataset-manipulation").show()}else{$(".dataset-manipulation").show();$(".logged-dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}}else{$(".logged-dataset-manipulation").hide();$(".dataset-manipulation").hide()}this.$el.find("[data-toggle]").tooltip()},createFolderFromModal:function(){event.preventDefault();event.stopPropagation();var f=this;var g=this.templateNewFolderInModal();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Create New Folder",body:g(),buttons:{Create:function(){f.create_new_folder_event()},Close:function(){Galaxy.modal.hide()}}})},create_new_folder_event:function(){var f=this.serialize_new_folder();if(this.validate_new_folder(f)){var g=new c.FolderAsModel();url_items=Backbone.history.fragment.split("/");current_folder_id=url_items[url_items.length-1];g.url=g.urlRoot+"/"+current_folder_id;g.save(f,{success:function(h){Galaxy.modal.hide();e.success("Folder created");h.set({type:"folder"});Galaxy.libraries.folderListView.collection.add(h)},error:function(i,h){Galaxy.modal.hide();if(typeof h.responseJSON!=="undefined"){e.error(h.responseJSON.err_msg)}else{e.error("An error ocurred :(")}}})}else{e.error("Folder's name is missing")}return false},serialize_new_folder:function(){return{name:$("input[name='Name']").val(),description:$("input[name='Description']").val()}},validate_new_folder:function(f){return f.name!==""},modalBulkImport:function(){var f=$("#folder_table").find(":checked");if(f.length===0){e.info("You have to select some datasets first")}else{this.refreshUserHistoriesList(function(g){var h=g.templateBulkImportInModal();g.modal=Galaxy.modal;g.modal.show({closing_events:true,title:"Import into History",body:h({histories:g.histories.models}),buttons:{Import:function(){g.importAllIntoHistory()},Close:function(){Galaxy.modal.hide()}}})})}},refreshUserHistoriesList:function(g){var f=this;this.histories=new c.GalaxyHistories();this.histories.fetch({success:function(){g(f)},error:function(i,h){if(typeof h.responseJSON!=="undefined"){e.error(h.responseJSON.err_msg)}else{e.error("An error ocurred :(")}}})},importAllIntoHistory:function(){this.modal.disableButton("Import");this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var k=$("select[name=dataset_import_bulk] option:selected").val();this.options.last_used_history_id=k;var n=$("select[name=dataset_import_bulk] option:selected").text();var p=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){p.push(this.parentElement.parentElement.id)}});var o=this.templateImportIntoHistoryProgressBar();this.modal.$el.find(".modal-body").html(o({history_name:n}));var l=100/p.length;this.initProgress(l);var f=[];for(var h=p.length-1;h>=0;h--){var j=p[h];var m=new c.HistoryItem();m.url=m.urlRoot+k+"/contents";m.content=j;m.source="library";f.push(m)}this.options.chain_call_control.total_number=f.length;var g="/api/histories/"+k+"/set_as_current";$.ajax({url:g,type:"PUT"});this.chainCall(f,n)},chainCall:function(g,j){var f=this;var h=g.pop();if(typeof h==="undefined"){if(this.options.chain_call_control.failed_number===0){e.success("Selected datasets imported into history. Click this to start analysing it.","",{onclick:function(){window.location="/"}})}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){e.error("There was an error and no datasets were imported into history.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){e.warning("Some of the datasets could not be imported into history. Click this to see what was imported.","",{onclick:function(){window.location="/"}})}}}Galaxy.modal.hide();return}var i=$.when(h.save({content:h.content,source:h.source}));i.done(function(){f.updateProgress();f.chainCall(g,j)}).fail(function(){f.options.chain_call_control.failed_number+=1;f.updateProgress();f.chainCall(g,j)})},initProgress:function(f){this.progress=0;this.progressStep=f},updateProgress:function(){this.progress+=this.progressStep;$(".progress-bar-import").width(Math.round(this.progress)+"%");txt_representation=Math.round(this.progress)+"% Complete";$(".completion_span").text(txt_representation)},download:function(f,j){var h=[];$("#folder_table").find(":checked").each(function(){if(this.parentElement.parentElement.id!==""){h.push(this.parentElement.parentElement.id)}});var g="/api/libraries/datasets/download/"+j;var i={ld_ids:h};this.processDownload(g,i,"get")},processDownload:function(g,h,i){if(g&&h){h=typeof h==="string"?h:$.param(h);var f="";$.each(h.split("&"),function(){var j=this.split("=");f+='<input type="hidden" name="'+j[0]+'" value="'+j[1]+'" />'});$('<form action="'+g+'" method="'+(i||"post")+'">'+f+"</form>").appendTo("body").submit().remove();e.info("Your download will begin soon")}},addFilesToFolderModal:function(){this.refreshUserHistoriesList(function(f){f.modal=Galaxy.modal;var g=f.templateAddFilesInModal();f.modal.show({closing_events:true,title:"Add datasets from history to "+f.options.folder_name,body:g({histories:f.histories.models}),buttons:{Add:function(){f.addAllDatasetsFromHistory()},Close:function(){Galaxy.modal.hide()}}});if(f.histories.models.length>0){f.fetchAndDisplayHistoryContents(f.histories.models[0].id);$("#dataset_add_bulk").change(function(h){f.fetchAndDisplayHistoryContents(h.target.value)})}else{e.error("An error ocurred :(")}})},fetchAndDisplayHistoryContents:function(h){var g=new c.HistoryContents({id:h});var f=this;g.fetch({success:function(j){var i=f.templateHistoryContents();f.histories.get(h).set({contents:j});f.modal.$el.find("#selected_history_content").html(i({history_contents:j.models.reverse()}))},error:function(){e.error("An error ocurred :(")}})},addAllDatasetsFromHistory:function(){this.modal.disableButton("Add");this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var f=[];this.modal.$el.find("#selected_history_content").find(":checked").each(function(){var i=$(this.parentElement).data("id");if(i){f.push(i)}});var l=this.options.folder_name;var k=this.templateAddingDatasetsProgressBar();this.modal.$el.find(".modal-body").html(k({folder_name:l}));this.progressStep=100/f.length;this.progress=0;var j=[];for(var h=f.length-1;h>=0;h--){history_dataset_id=f[h];var g=new c.Item();g.url="/api/folders/"+this.options.id+"/contents";g.set({from_hda_id:history_dataset_id});j.push(g)}this.options.chain_call_control.total_number=j.length;this.chainCallAddingHdas(j)},chainCallAddingHdas:function(g){var f=this;this.added_hdas=new c.Folder();var h=g.pop();if(typeof h==="undefined"){if(this.options.chain_call_control.failed_number===0){e.success("Selected datasets from history added to the folder")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){e.error("There was an error and no datasets were added to the folder.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){e.warning("Some of the datasets could not be added to the folder")}}}Galaxy.modal.hide();return this.added_hdas}var i=$.when(h.save({from_hda_id:h.get("from_hda_id")}));i.done(function(j){Galaxy.libraries.folderListView.collection.add(j);f.updateProgress();f.chainCallAddingHdas(g)}).fail(function(){f.options.chain_call_control.failed_number+=1;f.updateProgress();f.chainCallAddingHdas(g)})},checkIncludeDeleted:function(f){if(f.target.checked){Galaxy.libraries.folderListView.fetchFolder({include_deleted:true})}else{Galaxy.libraries.folderListView.fetchFolder({include_deleted:false})}},deleteSelectedDatasets:function(){var f=$("#folder_table").find(":checked");if(f.length===0){e.info("You have to select some datasets first")}else{var j=this.templateDeletingDatasetsProgressBar();this.modal=Galaxy.modal;this.modal.show({closing_events:true,title:"Deleting selected datasets",body:j({}),buttons:{Close:function(){Galaxy.modal.hide()}}});this.options.chain_call_control.total_number=0;this.options.chain_call_control.failed_number=0;var g=[];f.each(function(){if(this.parentElement.parentElement.id!==""){g.push(this.parentElement.parentElement.id)}});this.progressStep=100/g.length;this.progress=0;var l=[];for(var h=g.length-1;h>=0;h--){var k=new c.Item({id:g[h]});l.push(k)}this.options.chain_call_control.total_number=g.length;this.chainCallDeletingHdas(l)}},chainCallDeletingHdas:function(g){var f=this;this.deleted_lddas=new c.Folder();var h=g.pop();if(typeof h==="undefined"){if(this.options.chain_call_control.failed_number===0){e.success("Selected datasets deleted")}else{if(this.options.chain_call_control.failed_number===this.options.chain_call_control.total_number){e.error("There was an error and no datasets were deleted.")}else{if(this.options.chain_call_control.failed_number<this.options.chain_call_control.total_number){e.warning("Some of the datasets could not be deleted")}}}Galaxy.modal.hide();return this.deleted_lddas}var i=$.when(h.destroy());i.done(function(k){Galaxy.libraries.folderListView.collection.remove(h.id);f.updateProgress();if(Galaxy.libraries.folderListView.options.include_deleted){var j=new c.Item(k);Galaxy.libraries.folderListView.collection.add(j)}f.chainCallDeletingHdas(g)}).fail(function(){f.options.chain_call_control.failed_number+=1;f.updateProgress();f.chainCallDeletingHdas(g)})},templateToolBar:function(){tmpl_array=[];tmpl_array.push('<div class="library_style_container">');tmpl_array.push('<div id="library_toolbar">');tmpl_array.push('<span data-toggle="tooltip" data-placement="top" class="logged-dataset-manipulation" title="Include deleted datasets" style="display:none;"><input id="include_deleted_datasets_chk" style="margin: 0;" type="checkbox"> include deleted</input></span>');tmpl_array.push('<div class="btn-group add-library-items" style="display:none;">');tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Create New Folder" id="toolbtn_create_folder" class="btn btn-default primary-button" type="button"><span class="fa fa-plus"></span><span class="fa fa-folder"></span></button>');tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Add Datasets to Current Folder" id="toolbtn_add_files" class="btn btn-default toolbtn_add_files primary-button" type="button"><span class="fa fa-plus"></span><span class="fa fa-file"></span></span></button>');tmpl_array.push("</div>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Import selected datasets into history" id="toolbtn_bulk_import" class="primary-button dataset-manipulation" style="margin-left: 0.5em; display:none;" type="button"><span class="fa fa-book"></span> to History</button>');tmpl_array.push(' <div id="toolbtn_dl" class="btn-group dataset-manipulation" style="margin-left: 0.5em; display:none; ">');tmpl_array.push(' <button title="Download selected datasets as archive" id="drop_toggle" type="button" class="primary-button dropdown-toggle" data-toggle="dropdown">');tmpl_array.push(' <span class="fa fa-download"></span> Download <span class="caret"></span>');tmpl_array.push(" </button>");tmpl_array.push(' <ul class="dropdown-menu" role="menu">');tmpl_array.push(' <li id="download_archive"><a href="#/folders/<%= id %>/download/tgz">.tar.gz</a></li>');tmpl_array.push(' <li id="download_archive"><a href="#/folders/<%= id %>/download/tbz">.tar.bz</a></li>');tmpl_array.push(' <li id="download_archive"><a href="#/folders/<%= id %>/download/zip">.zip</a></li>');tmpl_array.push(" </ul>");tmpl_array.push(" </div>");tmpl_array.push(' <button data-toggle="tooltip" data-placement="top" title="Mark selected datasets deleted" id="toolbtn_bulk_delete" class="primary-button logged-dataset-manipulation" style="margin-left: 0.5em; display:none; " type="button"><span class="fa fa-times"></span> Delete</button>');tmpl_array.push(" </div>");tmpl_array.push(' <div id="folder_items_element">');tmpl_array.push(" </div>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateNewFolderInModal:function(){tmpl_array=[];tmpl_array.push('<div id="new_folder_modal">');tmpl_array.push("<form>");tmpl_array.push('<input type="text" name="Name" value="" placeholder="Name">');tmpl_array.push('<input type="text" name="Description" value="" placeholder="Description">');tmpl_array.push("</form>");tmpl_array.push("</div>");return _.template(tmpl_array.join(""))},templateBulkImportInModal:function(){var f=[];f.push('<span id="history_modal_combo_bulk" style="width:90%; margin-left: 1em; margin-right: 1em; ">');f.push("Select history: ");f.push('<select id="dataset_import_bulk" name="dataset_import_bulk" style="width:50%; margin-bottom: 1em; "> ');f.push(" <% _.each(histories, function(history) { %>");f.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');f.push(" <% }); %>");f.push("</select>");f.push("</span>");return _.template(f.join(""))},templateImportIntoHistoryProgressBar:function(){var f=[];f.push('<div class="import_text">');f.push("Importing selected datasets to history <b><%= _.escape(history_name) %></b>");f.push("</div>");f.push('<div class="progress">');f.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');f.push(' <span class="completion_span">0% Complete</span>');f.push(" </div>");f.push("</div>");f.push("");return _.template(f.join(""))},templateAddingDatasetsProgressBar:function(){var f=[];f.push('<div class="import_text">');f.push("Adding selected datasets from history to library folder <b><%= _.escape(folder_name) %></b>");f.push("</div>");f.push('<div class="progress">');f.push(' <div class="progress-bar progress-bar-import" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');f.push(' <span class="completion_span">0% Complete</span>');f.push(" </div>");f.push("</div>");f.push("");return _.template(f.join(""))},templateDeletingDatasetsProgressBar:function(){var f=[];f.push('<div class="import_text">');f.push("</div>");f.push('<div class="progress">');f.push(' <div class="progress-bar progress-bar-delete" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 00%;">');f.push(' <span class="completion_span">0% Complete</span>');f.push(" </div>");f.push("</div>");f.push("");return _.template(f.join(""))},templateAddFilesInModal:function(){var f=[];f.push('<div id="add_files_modal">');f.push('<div id="history_modal_combo_bulk">');f.push("Select history: ");f.push('<select id="dataset_add_bulk" name="dataset_add_bulk" style="width:66%; "> ');f.push(" <% _.each(histories, function(history) { %>");f.push(' <option value="<%= _.escape(history.get("id")) %>"><%= _.escape(history.get("name")) %></option>');f.push(" <% }); %>");f.push("</select>");f.push("</div>");f.push('<div id="selected_history_content">');f.push("</div>");f.push("</div>");return _.template(f.join(""))},templateHistoryContents:function(){var f=[];f.push("Choose the datasets to import:");f.push("<ul>");f.push(" <% _.each(history_contents, function(history_item) { %>");f.push(' <li data-id="<%= _.escape(history_item.get("id")) %>">');f.push(' <input style="margin: 0;" type="checkbox"><%= _.escape(history_item.get("hid")) %>: <%= _.escape(history_item.get("name")) %>');f.push(" </li>");f.push(" <% }); %>");f.push("</ul>");return _.template(f.join(""))}});return{FolderToolbarView:a}});
\ No newline at end of file
https://bitbucket.org/galaxy/galaxy-central/commits/9f15bf53a11b/
Changeset: 9f15bf53a11b
Branch: stable
User: martenson
Date: 2014-09-22 19:17:51+00:00
Summary: putting back the removed exception messages
Affected #: 1 file
diff -r c0c00d69cae3966a5c1e67abc3ba7aa67a735a64 -r 9f15bf53a11b8a91301381d836271a0ac3b23e71 lib/galaxy/webapps/galaxy/api/lda_datasets.py
--- a/lib/galaxy/webapps/galaxy/api/lda_datasets.py
+++ b/lib/galaxy/webapps/galaxy/api/lda_datasets.py
@@ -194,11 +194,11 @@
library_dataset = self.get_library_dataset( trans, id=dataset_id, check_ownership=False, check_accessible=True )
library_datasets.append( library_dataset )
except HTTPBadRequest, e:
- raise exceptions.RequestParameterInvalidException( 'Bad Request.' )
+ raise exceptions.RequestParameterInvalidException( 'Bad Request. ' + str( e ) )
except HTTPInternalServerError, e:
- raise exceptions.InternalServerError( 'Internal error.' )
+ raise exceptions.InternalServerError( 'Internal error. ' + str( e ) )
except Exception, e:
- raise exceptions.InternalServerError( 'Unknown error.' )
+ raise exceptions.InternalServerError( 'Unknown error. ' + str( e ) )
else:
raise exceptions.RequestParameterMissingException( 'Request has to contain a list of dataset ids to download.' )
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.
1
0
4 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/6ccbeeccc70b/
Changeset: 6ccbeeccc70b
Branch: srma_memory
User: lance_parsons
Date: 2014-09-04 20:12:51+00:00
Summary: SRMA tool requires at least 2048m memory and LENIENT validation stringency
Affected #: 1 file
diff -r 9b6cccb3af2d6b13a1a1da7def87dcc19172be88 -r 6ccbeeccc70bc8e2e489f621d13a64f494ae2518 tools/sr_mapping/srma_wrapper.py
--- a/tools/sr_mapping/srma_wrapper.py
+++ b/tools/sr_mapping/srma_wrapper.py
@@ -142,6 +142,8 @@
else:
range = options.range
srma_cmds = "OFFSET=%s MIN_MAPQ=%s MINIMUM_ALLELE_PROBABILITY=%s MINIMUM_ALLELE_COVERAGE=%s RANGES=%s RANGE=%s CORRECT_BASES=%s USE_SEQUENCE_QUALITIES=%s MAX_HEAP_SIZE=%s" % ( options.offset, options.minMappingQuality, options.minAlleleProbability, options.minAlleleCoverage, ranges, range, options.correctBases, options.useSequenceQualities, options.maxHeapSize )
+
+ srma_cmds = "%s VALIDATION_STRINGENCY=LENIENT" % srma_cmds
# perform alignments
buffsize = 1048576
@@ -155,7 +157,7 @@
#create a temp output name, ending in .bam due to required naming conventions? unkown if required
output_bam_filename = os.path.join( tmp_dir, "%s.bam" % os.path.split( options.output )[-1] )
# generate commandline
- cmd = 'java -jar %s I=%s O=%s R=%s %s' % ( os.path.join( options.jarBin, options.jarFile ), input_bam_filename, output_bam_filename, reference_filepath_name, srma_cmds )
+ cmd = 'java -Xmx2048m -jar %s I=%s O=%s R=%s %s' % ( os.path.join( options.jarBin, options.jarFile ), input_bam_filename, output_bam_filename, reference_filepath_name, srma_cmds )
# need to nest try-except in try-finally to handle 2.4
try:
https://bitbucket.org/galaxy/galaxy-central/commits/bb4faa5a3b19/
Changeset: bb4faa5a3b19
User: jmchilton
Date: 2014-09-22 17:17:11+00:00
Summary: Merge pull request #489.
Thanks Lance!
Affected #: 1 file
diff -r 579d211c2b0fa8ef4195930cb999edbb9a0cf8eb -r bb4faa5a3b1957b2ea220a94ee2315e22354a3cf tools/sr_mapping/srma_wrapper.py
--- a/tools/sr_mapping/srma_wrapper.py
+++ b/tools/sr_mapping/srma_wrapper.py
@@ -142,6 +142,8 @@
else:
range = options.range
srma_cmds = "OFFSET=%s MIN_MAPQ=%s MINIMUM_ALLELE_PROBABILITY=%s MINIMUM_ALLELE_COVERAGE=%s RANGES=%s RANGE=%s CORRECT_BASES=%s USE_SEQUENCE_QUALITIES=%s MAX_HEAP_SIZE=%s" % ( options.offset, options.minMappingQuality, options.minAlleleProbability, options.minAlleleCoverage, ranges, range, options.correctBases, options.useSequenceQualities, options.maxHeapSize )
+
+ srma_cmds = "%s VALIDATION_STRINGENCY=LENIENT" % srma_cmds
# perform alignments
buffsize = 1048576
@@ -155,7 +157,7 @@
#create a temp output name, ending in .bam due to required naming conventions? unkown if required
output_bam_filename = os.path.join( tmp_dir, "%s.bam" % os.path.split( options.output )[-1] )
# generate commandline
- cmd = 'java -jar %s I=%s O=%s R=%s %s' % ( os.path.join( options.jarBin, options.jarFile ), input_bam_filename, output_bam_filename, reference_filepath_name, srma_cmds )
+ cmd = 'java -Xmx2048m -jar %s I=%s O=%s R=%s %s' % ( os.path.join( options.jarBin, options.jarFile ), input_bam_filename, output_bam_filename, reference_filepath_name, srma_cmds )
# need to nest try-except in try-finally to handle 2.4
try:
https://bitbucket.org/galaxy/galaxy-central/commits/35f770b6bed8/
Changeset: 35f770b6bed8
Branch: srma_memory
User: jmchilton
Date: 2014-09-22 17:18:07+00:00
Summary: Close branch.
Affected #: 0 files
https://bitbucket.org/galaxy/galaxy-central/commits/f9e429b15b0e/
Changeset: f9e429b15b0e
User: jmchilton
Date: 2014-09-22 17:20:49+00:00
Summary: Rework pull request #489 memory handling to respect deployer set _JAVA_OPTIONS.
As discussed here https://bitbucket.org/galaxy/galaxy-central/pull-request/489/srma-tool-requ…. Thanks to Bjoern for input.
Affected #: 1 file
diff -r bb4faa5a3b1957b2ea220a94ee2315e22354a3cf -r f9e429b15b0eacada3a248d14e9b9dcc9be67ed5 tools/sr_mapping/srma_wrapper.py
--- a/tools/sr_mapping/srma_wrapper.py
+++ b/tools/sr_mapping/srma_wrapper.py
@@ -157,8 +157,10 @@
#create a temp output name, ending in .bam due to required naming conventions? unkown if required
output_bam_filename = os.path.join( tmp_dir, "%s.bam" % os.path.split( options.output )[-1] )
# generate commandline
- cmd = 'java -Xmx2048m -jar %s I=%s O=%s R=%s %s' % ( os.path.join( options.jarBin, options.jarFile ), input_bam_filename, output_bam_filename, reference_filepath_name, srma_cmds )
-
+ java_opts = ''
+ if '_JAVA_OPTIONS' not in os.environ:
+ java_opts = '-Xmx2048m'
+ cmd = 'java %s -jar %s I=%s O=%s R=%s %s' % ( java_opts, os.path.join( options.jarBin, options.jarFile ), input_bam_filename, output_bam_filename, reference_filepath_name, srma_cmds )
# need to nest try-except in try-finally to handle 2.4
try:
try:
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.
1
0