mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #4213 from bgruening/improve_search_plugin
Improve search plugin
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/** Masthead Collection **/
|
||||
define(['layout/generic-nav-view', 'mvc/webhooks', 'utils/localization'], function( GenericNav, Webhooks, _l ) {
|
||||
define(['layout/generic-nav-view', 'mvc/webhooks', 'utils/localization', 'utils/utils'], function( GenericNav, Webhooks, _l, Utils ) {
|
||||
var Collection = Backbone.Collection.extend({
|
||||
model: Backbone.Model.extend({
|
||||
defaults: {
|
||||
@@ -137,6 +137,9 @@ var Collection = Backbone.Collection.extend({
|
||||
else if( Galaxy.masthead ) {
|
||||
Galaxy.masthead.collection.add(obj);
|
||||
}
|
||||
|
||||
// Append masthead script and styles to Galaxy main
|
||||
Utils.appendScriptStyle( webhook );
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -277,6 +277,18 @@ define( [], function() {
|
||||
+ minutes;
|
||||
};
|
||||
|
||||
/** Append script and style tags to Galaxy main application */
|
||||
function appendScriptStyle( data ) {
|
||||
// create a script tag inside head tag
|
||||
if( data.script && data.script !== "" ) {
|
||||
$( '<script/>', { type: 'text/javascript' } ).text( data.script ).appendTo( 'head' );
|
||||
}
|
||||
// create a style tag inside head tag
|
||||
if( data.styles && data.styles !== "" ) {
|
||||
$( '<style/>', { type: 'text/css' } ).text( data.styles ).appendTo( 'head' );
|
||||
}
|
||||
};
|
||||
|
||||
/** Get querystrings from url */
|
||||
function getQueryString( key ) {
|
||||
return decodeURIComponent( window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent( key ).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1") );
|
||||
@@ -299,6 +311,7 @@ define( [], function() {
|
||||
isJSON: isJSON,
|
||||
clone: clone,
|
||||
linkify: linkify,
|
||||
appendScriptStyle: appendScriptStyle,
|
||||
getQueryString: getQueryString
|
||||
};
|
||||
});
|
||||
|
||||
@@ -4,19 +4,4 @@ type:
|
||||
activate: true
|
||||
|
||||
icon: fa-search
|
||||
tooltip: Click to activate search and press Ctrl + Alt + q to open the overlay
|
||||
|
||||
function: >
|
||||
$.getJSON(Galaxy.root + "api/webhooks", function( data ) {
|
||||
for( var item in data ) {
|
||||
var webhook = data[item];
|
||||
if( webhook.name === "searchover" ) {
|
||||
if( webhook.script && !window.static_search ) {
|
||||
$( '<script/>', { type: 'text/javascript' } ).text( webhook.script ).appendTo( 'head' );
|
||||
$( '<style/>', { type: 'text/css' } ).text( webhook.styles ).appendTo( 'head' );
|
||||
window.static_search = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
tooltip: Toggle search overlay
|
||||
|
||||
@@ -22,6 +22,7 @@ $(document).ready(function() {
|
||||
var self = this,
|
||||
filter_classes = {},
|
||||
$el_search_text = $( '.txtbx-search-data' );
|
||||
|
||||
filter_classes = {
|
||||
'all': '.all-filter',
|
||||
'tools': '.tool-filter',
|
||||
@@ -30,42 +31,42 @@ $(document).ready(function() {
|
||||
'workflow': '.workflow-filter',
|
||||
'removeditems': '.removeditems-filter'
|
||||
};
|
||||
// Register event for invoking overlay
|
||||
this.parentElement.on( 'keydown', function( e ) {
|
||||
self.invokeOverlay( e, self );
|
||||
|
||||
// Open search overlay on click of magnifier icon in the masthead
|
||||
self.parentElement.find( 'ul#searchover a' ).on( 'click', function( e ) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if ( $( '.search-screen-overlay' ).is( ':visible' ) ){
|
||||
self.removeOverlay();
|
||||
} else{
|
||||
self.clearSearchResults();
|
||||
self.showOverlay();
|
||||
self.showSearchResult();
|
||||
// Default selected filter
|
||||
self.setActiveFilter( '.all-filter' );
|
||||
self.showDefaultLinks();
|
||||
}
|
||||
});
|
||||
|
||||
// Register events for search textbox
|
||||
// Remove the overlay on escape button click
|
||||
self.parentElement.on( 'keydown', function( e ) {
|
||||
// Check for escape button - "27"
|
||||
if ( e.which === 27 || e.keyCode === 27 ) {
|
||||
self.removeOverlay();
|
||||
}
|
||||
});
|
||||
|
||||
// Register event for search textbox
|
||||
$el_search_text.on( 'keyup', function( e ) {
|
||||
self.triggerEvents( e, self );
|
||||
});
|
||||
|
||||
// Register events for fliter clicks
|
||||
// Register event for fliter clicks
|
||||
for( var item in filter_classes ) {
|
||||
self.clickEvents( filter_classes[ item ], item, self );
|
||||
}
|
||||
},
|
||||
|
||||
/** Invoke the search overlay */
|
||||
invokeOverlay: function( e, self ) {
|
||||
var class_allfilter = '.all-filter';
|
||||
if( e ) {
|
||||
e.stopPropagation();
|
||||
// Click of ctrl + alt + q shows search overlay
|
||||
if ( ( e.which === 81 || e.keyCode === 81 ) && e.ctrlKey && e.altKey ) {
|
||||
self.clearSearchResults();
|
||||
self.showOverlay();
|
||||
self.showSearchResult();
|
||||
self.setActiveFilter( class_allfilter );
|
||||
self.showDefaultLinks();
|
||||
}
|
||||
// Remove the overlay and hides the search screen on clicking escape key
|
||||
else if ( e.which === 27 || e.keyCode === 27 ) {
|
||||
self.removeOverlay();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/** Display favourites and most used tools if present for home filter */
|
||||
showDefaultLinks: function() {
|
||||
var class_search_results = '.search-results',
|
||||
@@ -255,7 +256,7 @@ $(document).ready(function() {
|
||||
showOverlay: function() {
|
||||
var $el_search_textbox = $( '.txtbx-search-data' );
|
||||
$( '.search-screen-overlay' ).show();
|
||||
$( '.search-screen' ).show();
|
||||
$( '.search-screen' ).show();
|
||||
$el_search_textbox.val( "" );
|
||||
$el_search_textbox.focus();
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
|
||||
define([],function(){function a(a){return'<iframe src="'+a+'" frameborder="0" style="width: 100%; height: 100%;"/>'}function b(a,c){for(var d in a){var e=a[d];if(_.isObject(e)){var f=c(e);f&&(a[d]=f),b(e,c)}}}function c(a){var b,c,d,e;return c=/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim,b=a.replace(c,'<a href="$1" target="_blank">$1</a>'),d=/(^|[^\/])(www\.[\S]+(\b|$))/gim,b=b.replace(d,'$1<a href="http://$2" target="_blank">$2</a>'),e=/(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim,b=b.replace(e,'<a href="mailto:$1">$1</a>')}function d(a){return JSON.parse(JSON.stringify(a)||null)}function e(a){return/^[\],:{}\s]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))}function f(a){return $("<div/>").text(a).html()}function g(a){if(a instanceof Array||(a=[a]),0===a.length)return!0;for(var b in a)if(["__null__","__undefined__",null,void 0].indexOf(a[b])>-1)return!0;return!1}function h(a){if($.isArray(a)){var a=a.toString().replace(/,/g,", "),b=a.lastIndexOf(", ");return-1!=b&&(a=a.substr(0,b)+" or "+a.substr(b+2)),a}return""}function i(a){top.__utils__get__=top.__utils__get__||{};var b=JSON.stringify(a);a.cache&&top.__utils__get__[b]?(a.success&&a.success(top.__utils__get__[b]),window.console.debug("utils.js::get() - Fetching from cache ["+a.url+"].")):j({url:a.url,data:a.data,success:function(c){top.__utils__get__[b]=c,a.success&&a.success(c)},error:function(b,c){a.error&&a.error(b,c)}})}function j(a){var b={contentType:"application/json",type:a.type||"GET",data:a.data||{},url:a.url};"GET"==b.type||"DELETE"==b.type?($.isEmptyObject(b.data)||(b.url+=-1==b.url.indexOf("?")?"?":"&",b.url+=$.param(b.data,!0)),b.data=null):(b.dataType="json",b.url=b.url,b.data=JSON.stringify(b.data)),$.ajax(b).done(function(b){if("string"==typeof b)try{b=b.replace("Infinity,",'"Infinity",'),b=jQuery.parseJSON(b)}catch(c){console.debug(c)}a.success&&a.success(b)}).fail(function(b){var c=null;try{c=jQuery.parseJSON(b.responseText)}catch(d){c=b.responseText}a.error&&a.error(c,b.status)}).always(function(){a.complete&&a.complete()})}function k(a,b){var c=$('<div class="'+a+'"></div>');c.appendTo(":eq(0)");var d=c.css(b);return c.remove(),d}function l(a){$('link[href^="'+a+'"]').length||$('<link href="'+Galaxy.root+a+'" rel="stylesheet">').appendTo("head")}function m(a,b){return a?_.defaults(a,b):b}function n(a,b){for(var c=1,d=0;b>d;d++)c*=10;return Math.round(a*c)/c}function o(a,b,c){c=void 0!==c?c:1;var d="";if(a>=v)a/=v,d="TB";else if(a>=u)a/=u,d="GB";else if(a>=t)a/=t,d="MB";else if(a>=s)a/=s,d="KB";else{if(!(a>0))return b?"0 b":"<strong>-</strong>";d="b"}var e="b"==d?a:n(a,c);return b?e+" "+d:"<strong>"+e+"</strong> "+d}function p(){return top.__utils__uid__=top.__utils__uid__||0,"uid-"+top.__utils__uid__++}function q(){var a=new Date,b=(a.getHours()<10?"0":"")+a.getHours(),c=(a.getMinutes()<10?"0":"")+a.getMinutes();return datetime=a.getDate()+"/"+(a.getMonth()+1)+"/"+a.getFullYear()+", "+b+":"+c}function r(a){return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]"+encodeURIComponent(a).replace(/[\.\+\*]/g,"\\$&")+"(?:\\=([^&]*))?)?.*$","i"),"$1"))}var s=1024,t=s*s,u=t*s,v=u*s;return{cssLoadFile:l,cssGetAttribute:k,get:i,merge:m,iframe:a,bytesToString:o,uid:p,time:q,request:j,sanitize:f,textify:h,isEmpty:g,deepeach:b,isJSON:e,clone:d,linkify:c,getQueryString:r}});
|
||||
define([],function(){function a(a){return'<iframe src="'+a+'" frameborder="0" style="width: 100%; height: 100%;"/>'}function b(a,c){for(var d in a){var e=a[d];if(_.isObject(e)){var f=c(e);f&&(a[d]=f),b(e,c)}}}function c(a){var b,c,d,e;return c=/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim,b=a.replace(c,'<a href="$1" target="_blank">$1</a>'),d=/(^|[^\/])(www\.[\S]+(\b|$))/gim,b=b.replace(d,'$1<a href="http://$2" target="_blank">$2</a>'),e=/(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim,b=b.replace(e,'<a href="mailto:$1">$1</a>')}function d(a){return JSON.parse(JSON.stringify(a)||null)}function e(a){return/^[\],:{}\s]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))}function f(a){return $("<div/>").text(a).html()}function g(a){if(a instanceof Array||(a=[a]),0===a.length)return!0;for(var b in a)if(["__null__","__undefined__",null,void 0].indexOf(a[b])>-1)return!0;return!1}function h(a){if($.isArray(a)){var a=a.toString().replace(/,/g,", "),b=a.lastIndexOf(", ");return-1!=b&&(a=a.substr(0,b)+" or "+a.substr(b+2)),a}return""}function i(a){top.__utils__get__=top.__utils__get__||{};var b=JSON.stringify(a);a.cache&&top.__utils__get__[b]?(a.success&&a.success(top.__utils__get__[b]),window.console.debug("utils.js::get() - Fetching from cache ["+a.url+"].")):j({url:a.url,data:a.data,success:function(c){top.__utils__get__[b]=c,a.success&&a.success(c)},error:function(b,c){a.error&&a.error(b,c)}})}function j(a){var b={contentType:"application/json",type:a.type||"GET",data:a.data||{},url:a.url};"GET"==b.type||"DELETE"==b.type?($.isEmptyObject(b.data)||(b.url+=-1==b.url.indexOf("?")?"?":"&",b.url+=$.param(b.data,!0)),b.data=null):(b.dataType="json",b.url=b.url,b.data=JSON.stringify(b.data)),$.ajax(b).done(function(b){if("string"==typeof b)try{b=b.replace("Infinity,",'"Infinity",'),b=jQuery.parseJSON(b)}catch(c){console.debug(c)}a.success&&a.success(b)}).fail(function(b){var c=null;try{c=jQuery.parseJSON(b.responseText)}catch(d){c=b.responseText}a.error&&a.error(c,b.status)}).always(function(){a.complete&&a.complete()})}function k(a,b){var c=$('<div class="'+a+'"></div>');c.appendTo(":eq(0)");var d=c.css(b);return c.remove(),d}function l(a){$('link[href^="'+a+'"]').length||$('<link href="'+Galaxy.root+a+'" rel="stylesheet">').appendTo("head")}function m(a,b){return a?_.defaults(a,b):b}function n(a,b){for(var c=1,d=0;b>d;d++)c*=10;return Math.round(a*c)/c}function o(a,b,c){c=void 0!==c?c:1;var d="";if(a>=w)a/=w,d="TB";else if(a>=v)a/=v,d="GB";else if(a>=u)a/=u,d="MB";else if(a>=t)a/=t,d="KB";else{if(!(a>0))return b?"0 b":"<strong>-</strong>";d="b"}var e="b"==d?a:n(a,c);return b?e+" "+d:"<strong>"+e+"</strong> "+d}function p(){return top.__utils__uid__=top.__utils__uid__||0,"uid-"+top.__utils__uid__++}function q(){var a=new Date,b=(a.getHours()<10?"0":"")+a.getHours(),c=(a.getMinutes()<10?"0":"")+a.getMinutes();return datetime=a.getDate()+"/"+(a.getMonth()+1)+"/"+a.getFullYear()+", "+b+":"+c}function r(a){a.script&&""!==a.script&&$("<script/>",{type:"text/javascript"}).text(a.script).appendTo("head"),a.styles&&""!==a.styles&&$("<style/>",{type:"text/css"}).text(a.styles).appendTo("head")}function s(a){return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]"+encodeURIComponent(a).replace(/[\.\+\*]/g,"\\$&")+"(?:\\=([^&]*))?)?.*$","i"),"$1"))}var t=1024,u=t*t,v=u*t,w=v*t;return{cssLoadFile:l,cssGetAttribute:k,get:i,merge:m,iframe:a,bytesToString:o,uid:p,time:q,request:j,sanitize:f,textify:h,isEmpty:g,deepeach:b,isJSON:e,clone:d,linkify:c,appendScriptStyle:r,getQueryString:s}});
|
||||
//# sourceMappingURL=../../maps/utils/utils.js.map
|
||||
Reference in New Issue
Block a user