Merge pull request #4213 from bgruening/improve_search_plugin

Improve search plugin
This commit is contained in:
John Chilton
2017-06-22 15:49:00 -04:00
committed by GitHub
10 changed files with 56 additions and 54 deletions
+4 -1
View File
@@ -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 );
}
});
});
+13
View File
@@ -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 -1
View File
@@ -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