Identify links in visualizations plugins descriptions

This commit is contained in:
guerler
2016-08-30 21:04:32 -04:00
parent 5cae6f7735
commit 71fe20ab04
8 changed files with 301 additions and 289 deletions
+266 -255
View File
@@ -2,286 +2,297 @@
* Galaxy utilities comprises small functions, which at this point
* do not require their own classes/files
*/
define( [], function() {
// dependencies
define([], function() {
/** Builds a basic iframe */
function iframe( src ) {
return '<iframe src="' + src + '" frameborder="0" style="width: 100%; height: 100%;"/>';
}
/** Builds a basic iframe
*/
function iframe( src ) {
return '<iframe src="' + src + '" frameborder="0" style="width: 100%; height: 100%;"/>';
}
/** Traverse through json
*/
function deepeach( dict, callback ) {
for( var i in dict ) {
var d = dict[ i ];
if( _.isObject( d ) ) {
var new_dict = callback( d );
new_dict && ( dict[ i ] = new_dict );
deepeach( d, callback );
/** Traverse through json */
function deepeach( dict, callback ) {
for( var i in dict ) {
var d = dict[ i ];
if( _.isObject( d ) ) {
var new_dict = callback( d );
new_dict && ( dict[ i ] = new_dict );
deepeach( d, callback );
}
}
}
}
/** Clone */
function clone( obj ) {
return JSON.parse( JSON.stringify( obj ) || null );
}
/** Identifies urls and replaces them with anchors */
function linkify( inputText ) {
var replacedText, replacePattern1, replacePattern2, replacePattern3;
/**
* Check if a string is a json string
* @param{String} text - Content to be validated
*/
function isJSON(text) {
return /^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''));
};
// URLs starting with http://, https://, or ftp://
replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>');
/**
* Sanitize/escape a string
* @param{String} content - Content to be sanitized
*/
function sanitize(content) {
return $('<div/>').text(content).html();
};
// URLs starting with "www." (without // before it, or it'd re-link the ones done above).
replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim;
replacedText = replacedText.replace(replacePattern2, '$1<a href="http://$2" target="_blank">$2</a>');
/**
* Checks if a value or list of values is `empty`
* usually used for selectable options
* @param{String} value - Value or list to be validated
*/
function isEmpty ( value ) {
if ( !( value instanceof Array ) ) {
value = [ value ];
// Change email addresses to mailto:: links.
replacePattern3 = /(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim;
replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$1">$1</a>');
return replacedText;
}
if ( value.length === 0 ) {
return true;
/** Clone */
function clone( obj ) {
return JSON.parse( JSON.stringify( obj ) || null );
}
for( var i in value ) {
if ( [ '__null__', '__undefined__', null, undefined ].indexOf( value[ i ] ) > -1 ) {
/**
* Check if a string is a json string
* @param{String} text - Content to be validated
*/
function isJSON(text) {
return /^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''));
};
/**
* Sanitize/escape a string
* @param{String} content - Content to be sanitized
*/
function sanitize(content) {
return $('<div/>').text(content).html();
};
/**
* Checks if a value or list of values is `empty`
* usually used for selectable options
* @param{String} value - Value or list to be validated
*/
function isEmpty ( value ) {
if ( !( value instanceof Array ) ) {
value = [ value ];
}
if ( value.length === 0 ) {
return true;
}
}
return false;
};
/**
* Convert list to pretty string
* @param{String} lst - List of strings to be converted in human readable list sentence
*/
function textify( lst ) {
if ( $.isArray( lst ) ) {
var lst = lst.toString().replace( /,/g, ', ' );
var pos = lst.lastIndexOf( ', ' );
if ( pos != -1 ) {
lst = lst.substr( 0, pos ) + ' or ' + lst.substr( pos + 2 );
}
return lst;
}
return '';
};
/**
* Request handler for GET
* @param{String} url - Url request is made to
* @param{Function} success - Callback on success
* @param{Function} error - Callback on error
* @param{Boolean} cache - Use cached data if available
*/
function get (options) {
top.__utils__get__ = top.__utils__get__ || {};
var cache_key = JSON.stringify( options );
if (options.cache && top.__utils__get__[cache_key]) {
options.success && options.success(top.__utils__get__[cache_key]);
window.console.debug('utils.js::get() - Fetching from cache [' + options.url + '].');
} else {
request({
url : options.url,
data : options.data,
success : function(response) {
top.__utils__get__[cache_key] = response;
options.success && options.success(response);
},
error : function(response) {
options.error && options.error(response);
for( var i in value ) {
if ( [ '__null__', '__undefined__', null, undefined ].indexOf( value[ i ] ) > -1 ) {
return true;
}
});
}
};
/**
* Request handler
* @param{String} method - Request method ['GET', 'POST', 'DELETE', 'PUT']
* @param{String} url - Url request is made to
* @param{Object} data - Data send to url
* @param{Function} success - Callback on success
* @param{Function} error - Callback on error
*/
function request (options) {
// prepare ajax
var ajaxConfig = {
contentType : 'application/json',
type : options.type || 'GET',
data : options.data || {},
url : options.url
}
// encode data into url
if ( ajaxConfig.type == 'GET' || ajaxConfig.type == 'DELETE' ) {
if ( !$.isEmptyObject(ajaxConfig.data) ) {
ajaxConfig.url += ajaxConfig.url.indexOf('?') == -1 ? '?' : '&';
ajaxConfig.url += $.param(ajaxConfig.data, true);
}
ajaxConfig.data = null;
} else {
ajaxConfig.dataType = 'json';
ajaxConfig.url = ajaxConfig.url;
ajaxConfig.data = JSON.stringify(ajaxConfig.data);
}
return false;
};
// make request
$.ajax(ajaxConfig).done(function(response) {
if (typeof response === 'string') {
/**
* Convert list to pretty string
* @param{String} lst - List of strings to be converted in human readable list sentence
*/
function textify( lst ) {
if ( $.isArray( lst ) ) {
var lst = lst.toString().replace( /,/g, ', ' );
var pos = lst.lastIndexOf( ', ' );
if ( pos != -1 ) {
lst = lst.substr( 0, pos ) + ' or ' + lst.substr( pos + 2 );
}
return lst;
}
return '';
};
/**
* Request handler for GET
* @param{String} url - Url request is made to
* @param{Function} success - Callback on success
* @param{Function} error - Callback on error
* @param{Boolean} cache - Use cached data if available
*/
function get (options) {
top.__utils__get__ = top.__utils__get__ || {};
var cache_key = JSON.stringify( options );
if (options.cache && top.__utils__get__[cache_key]) {
options.success && options.success(top.__utils__get__[cache_key]);
window.console.debug('utils.js::get() - Fetching from cache [' + options.url + '].');
} else {
request({
url : options.url,
data : options.data,
success : function(response) {
top.__utils__get__[cache_key] = response;
options.success && options.success(response);
},
error : function(response) {
options.error && options.error(response);
}
});
}
};
/**
* Request handler
* @param{String} method - Request method ['GET', 'POST', 'DELETE', 'PUT']
* @param{String} url - Url request is made to
* @param{Object} data - Data send to url
* @param{Function} success - Callback on success
* @param{Function} error - Callback on error
*/
function request (options) {
// prepare ajax
var ajaxConfig = {
contentType : 'application/json',
type : options.type || 'GET',
data : options.data || {},
url : options.url
}
// encode data into url
if ( ajaxConfig.type == 'GET' || ajaxConfig.type == 'DELETE' ) {
if ( !$.isEmptyObject(ajaxConfig.data) ) {
ajaxConfig.url += ajaxConfig.url.indexOf('?') == -1 ? '?' : '&';
ajaxConfig.url += $.param(ajaxConfig.data, true);
}
ajaxConfig.data = null;
} else {
ajaxConfig.dataType = 'json';
ajaxConfig.url = ajaxConfig.url;
ajaxConfig.data = JSON.stringify(ajaxConfig.data);
}
// make request
$.ajax(ajaxConfig).done(function(response) {
if (typeof response === 'string') {
try {
response = response.replace('Infinity,', '"Infinity",');
response = jQuery.parseJSON(response);
} catch (e) {
console.debug(e);
}
}
options.success && options.success(response);
}).fail(function(response) {
var response_text = null;
try {
response = response.replace('Infinity,', '"Infinity",');
response = jQuery.parseJSON(response);
response_text = jQuery.parseJSON(response.responseText);
} catch (e) {
console.debug(e);
response_text = response.responseText;
}
options.error && options.error(response_text, response);
}).always(function() {
options.complete && options.complete();
});
};
/**
* Read a property value from CSS
* @param{String} classname - CSS class
* @param{String} name - CSS property
*/
function cssGetAttribute (classname, name) {
var el = $('<div class="' + classname + '"></div>');
el.appendTo(':eq(0)');
var value = el.css(name);
el.remove();
return value;
};
/**
* Load a CSS file
* @param{String} url - Url of CSS file
*/
function cssLoadFile (url) {
if (!$('link[href^="' + url + '"]').length) {
$('<link href="' + Galaxy.root + url + '" rel="stylesheet">').appendTo('head');
}
options.success && options.success(response);
}).fail(function(response) {
var response_text = null;
try {
response_text = jQuery.parseJSON(response.responseText);
} catch (e) {
response_text = response.responseText;
};
/**
* Safely merge to dictionaries
* @param{Object} options - Target dictionary
* @param{Object} optionsDefault - Source dictionary
*/
function merge (options, optionsDefault) {
if (options) {
return _.defaults(options, optionsDefault);
} else {
return optionsDefault;
}
options.error && options.error(response_text, response);
}).always(function() {
options.complete && options.complete();
});
};
};
/**
* Read a property value from CSS
* @param{String} classname - CSS class
* @param{String} name - CSS property
*/
function cssGetAttribute (classname, name) {
var el = $('<div class="' + classname + '"></div>');
el.appendTo(':eq(0)');
var value = el.css(name);
el.remove();
return value;
};
/**
* Load a CSS file
* @param{String} url - Url of CSS file
*/
function cssLoadFile (url) {
if (!$('link[href^="' + url + '"]').length) {
$('<link href="' + Galaxy.root + url + '" rel="stylesheet">').appendTo('head');
/**
* Round floaing point 'number' to 'numPlaces' number of decimal places.
* @param{Object} number a floaing point number
* @param{Object} numPlaces number of decimal places
*/
function roundToDecimalPlaces( number, numPlaces ){
var placesMultiplier = 1;
for( var i=0; i<numPlaces; i++ ){
placesMultiplier *= 10;
}
return Math.round( number * placesMultiplier ) / placesMultiplier;
}
};
/**
* Safely merge to dictionaries
* @param{Object} options - Target dictionary
* @param{Object} optionsDefault - Source dictionary
*/
function merge (options, optionsDefault) {
if (options) {
return _.defaults(options, optionsDefault);
} else {
return optionsDefault;
}
};
// calculate on import
var kb = 1024,
mb = kb * kb,
gb = mb * kb,
tb = gb * kb;
/**
* Format byte size to string with units
* @param{Integer} size - Size in bytes
* @param{Boolean} normal_font - Switches font between normal and bold
*/
function bytesToString (size, normal_font, numberPlaces) {
numberPlaces = numberPlaces !== undefined? numberPlaces: 1;
// identify unit
var unit = "";
if (size >= tb){ size = size / tb; unit = 'TB'; } else
if (size >= gb){ size = size / gb; unit = 'GB'; } else
if (size >= mb){ size = size / mb; unit = 'MB'; } else
if (size >= kb){ size = size / kb; unit = 'KB'; } else
if (size > 0){ unit = 'b'; }
else { return normal_font? '0 b': '<strong>-</strong>'; }
// return formatted string
var rounded = unit == 'b'? size: roundToDecimalPlaces( size, numberPlaces );
if (normal_font) {
return rounded + ' ' + unit;
} else {
return '<strong>' + rounded + '</strong> ' + unit;
}
};
/** Create a unique id */
function uid(){
top.__utils__uid__ = top.__utils__uid__ || 0;
return 'uid-' + top.__utils__uid__++;
};
/**
* Round floaing point 'number' to 'numPlaces' number of decimal places.
* @param{Object} number a floaing point number
* @param{Object} numPlaces number of decimal places
*/
function roundToDecimalPlaces( number, numPlaces ){
var placesMultiplier = 1;
for( var i=0; i<numPlaces; i++ ){
placesMultiplier *= 10;
}
return Math.round( number * placesMultiplier ) / placesMultiplier;
}
// calculate on import
var kb = 1024,
mb = kb * kb,
gb = mb * kb,
tb = gb * kb;
/**
* Format byte size to string with units
* @param{Integer} size - Size in bytes
* @param{Boolean} normal_font - Switches font between normal and bold
*/
function bytesToString (size, normal_font, numberPlaces) {
numberPlaces = numberPlaces !== undefined? numberPlaces: 1;
// identify unit
var unit = "";
if (size >= tb){ size = size / tb; unit = 'TB'; } else
if (size >= gb){ size = size / gb; unit = 'GB'; } else
if (size >= mb){ size = size / mb; unit = 'MB'; } else
if (size >= kb){ size = size / kb; unit = 'KB'; } else
if (size > 0){ unit = 'b'; }
else { return normal_font? '0 b': '<strong>-</strong>'; }
// return formatted string
var rounded = unit == 'b'? size: roundToDecimalPlaces( size, numberPlaces );
if (normal_font) {
return rounded + ' ' + unit;
} else {
return '<strong>' + rounded + '</strong> ' + unit;
}
};
/**
* Create a unique id
*/
function uid(){
top.__utils__uid__ = top.__utils__uid__ || 0;
return 'uid-' + top.__utils__uid__++;
};
/**
* Create a time stamp
*/
function time() {
var d = new Date();
var hours = (d.getHours() < 10 ? "0" : "") + d.getHours();
var minutes = (d.getMinutes() < 10 ? "0" : "") + d.getMinutes()
return datetime = d.getDate() + "/"
+ (d.getMonth() + 1) + "/"
+ d.getFullYear() + ", "
+ hours + ":"
+ minutes;
};
return {
cssLoadFile: cssLoadFile,
cssGetAttribute: cssGetAttribute,
get: get,
merge: merge,
iframe: iframe,
bytesToString: bytesToString,
uid: uid,
time: time,
request: request,
sanitize: sanitize,
textify: textify,
isEmpty: isEmpty,
deepeach: deepeach,
isJSON: isJSON,
clone: clone
};
/** Create a time stamp */
function time() {
var d = new Date();
var hours = (d.getHours() < 10 ? "0" : "") + d.getHours();
var minutes = (d.getMinutes() < 10 ? "0" : "") + d.getMinutes()
return datetime = d.getDate() + "/"
+ (d.getMonth() + 1) + "/"
+ d.getFullYear() + ", "
+ hours + ":"
+ minutes;
};
return {
cssLoadFile: cssLoadFile,
cssGetAttribute: cssGetAttribute,
get: get,
merge: merge,
iframe: iframe,
bytesToString: bytesToString,
uid: uid,
time: time,
request: request,
sanitize: sanitize,
textify: textify,
isEmpty: isEmpty,
deepeach: deepeach,
isJSON: isJSON,
clone: clone,
linkify: linkify
};
});
@@ -1,5 +1,5 @@
/** This class renders the chart configuration form. */
define( [], function() {
define( [ 'utils/utils' ], function( Utils ) {
return Backbone.View.extend({
initialize: function( app, options ) {
var self = this;
@@ -15,7 +15,7 @@ define( [], function() {
render: function() {
this.$image.attr( 'src', remote_root + 'src/visualizations/' + this.app.split( this.chart.get( 'type' ) ) + '/logo.png' );
this.$title.html( this.chart.definition.title + ' (' + this.chart.definition.library + ')' );
this.$text.html( this.chart.definition.description || this.chart.definition.category );
this.$text.html( Utils.linkify( this.chart.definition.description || '' ) );
},
_template: function() {
return '<div class="charts-description">' +
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"utils.js","sources":["../../src/utils/utils.js"],"names":["define","iframe","src","deepeach","dict","callback","i","d","_","isObject","new_dict","clone","obj","JSON","parse","stringify","isJSON","text","test","replace","sanitize","content","$","html","isEmpty","value","Array","length","undefined","indexOf","textify","lst","isArray","toString","pos","lastIndexOf","substr","get","options","top","__utils__get__","cache_key","cache","success","window","console","debug","url","request","data","response","error","ajaxConfig","contentType","type","isEmptyObject","param","dataType","ajax","done","jQuery","parseJSON","e","fail","response_text","responseText","always","complete","cssGetAttribute","classname","name","el","appendTo","css","remove","cssLoadFile","Galaxy","root","merge","optionsDefault","defaults","roundToDecimalPlaces","number","numPlaces","placesMultiplier","Math","round","bytesToString","size","normal_font","numberPlaces","unit","tb","gb","mb","kb","rounded","uid","__utils__uid__","time","Date","hours","getHours","minutes","getMinutes","datetime","getDate","getMonth","getFullYear"],"mappings":"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"}
{"version":3,"file":"utils.js","sources":["../../src/utils/utils.js"],"names":["define","iframe","src","deepeach","dict","callback","i","d","_","isObject","new_dict","linkify","inputText","replacedText","replacePattern1","replacePattern2","replacePattern3","replace","clone","obj","JSON","parse","stringify","isJSON","text","test","sanitize","content","$","html","isEmpty","value","Array","length","undefined","indexOf","textify","lst","isArray","toString","pos","lastIndexOf","substr","get","options","top","__utils__get__","cache_key","cache","success","window","console","debug","url","request","data","response","error","ajaxConfig","contentType","type","isEmptyObject","param","dataType","ajax","done","jQuery","parseJSON","e","fail","response_text","responseText","always","complete","cssGetAttribute","classname","name","el","appendTo","css","remove","cssLoadFile","Galaxy","root","merge","optionsDefault","defaults","roundToDecimalPlaces","number","numPlaces","placesMultiplier","Math","round","bytesToString","size","normal_font","numberPlaces","unit","tb","gb","mb","kb","rounded","uid","__utils__uid__","time","Date","hours","getHours","minutes","getMinutes","datetime","getDate","getMonth","getFullYear"],"mappings":"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"}
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){return JSON.parse(JSON.stringify(a)||null)}function d(a){return/^[\],:{}\s]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))}function e(a){return $("<div/>").text(a).html()}function f(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 g(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 h(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+"].")):i({url:a.url,data:a.data,success:function(c){top.__utils__get__[b]=c,a.success&&a.success(c)},error:function(b){a.error&&a.error(b)}})}function i(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)}).always(function(){a.complete&&a.complete()})}function j(a,b){var c=$('<div class="'+a+'"></div>');c.appendTo(":eq(0)");var d=c.css(b);return c.remove(),d}function k(a){$('link[href^="'+a+'"]').length||$('<link href="'+Galaxy.root+a+'" rel="stylesheet">').appendTo("head")}function l(a,b){return a?_.defaults(a,b):b}function m(a,b){for(var c=1,d=0;b>d;d++)c*=10;return Math.round(a*c)/c}function n(a,b,c){c=void 0!==c?c:1;var d="";if(a>=t)a/=t,d="TB";else if(a>=s)a/=s,d="GB";else if(a>=r)a/=r,d="MB";else if(a>=q)a/=q,d="KB";else{if(!(a>0))return b?"0 b":"<strong>-</strong>";d="b"}var e="b"==d?a:m(a,c);return b?e+" "+d:"<strong>"+e+"</strong> "+d}function o(){return top.__utils__uid__=top.__utils__uid__||0,"uid-"+top.__utils__uid__++}function p(){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}var q=1024,r=q*q,s=r*q,t=s*q;return{cssLoadFile:k,cssGetAttribute:j,get:h,merge:l,iframe:a,bytesToString:n,uid:o,time:p,request:i,sanitize:e,textify:g,isEmpty:f,deepeach:b,isJSON:d,clone:c}});
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){a.error&&a.error(b)}})}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)}).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>=u)a/=u,d="TB";else if(a>=t)a/=t,d="GB";else if(a>=s)a/=s,d="MB";else if(a>=r)a/=r,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}var r=1024,s=r*r,t=s*r,u=t*r;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}});
//# sourceMappingURL=../../maps/utils/utils.js.map