diff --git a/client/gulpfile.js b/client/gulpfile.js
index ce3c9988cd8..3ab2d749cd1 100644
--- a/client/gulpfile.js
+++ b/client/gulpfile.js
@@ -7,8 +7,10 @@ var uglify = require('gulp-uglify');
var paths = {
scripts: ['galaxy/scripts/**/*.js',
- '!galaxy/scripts/apps/**/*.js'
- ]
+ '!galaxy/scripts/apps/**/*.js',
+ '!galaxy/scripts/libs/**/*.js'
+ ],
+ libs: ['galaxy/scripts/libs/**/*.js']
};
gulp.task('scripts', function() {
@@ -20,6 +22,12 @@ gulp.task('scripts', function() {
.pipe(gulp.dest('../static/scripts/'));
});
+gulp.task('libs', function() {
+ return gulp.src(paths.libs)
+ .pipe(uglify())
+ .pipe(gulp.dest('../static/scripts/libs/'));
+});
+
gulp.task('clean', function(){
//Wipe out all scripts that aren't handled by webpack
return del(['../static/scripts/**/*.js',
@@ -31,4 +39,4 @@ gulp.task('watch', function(){
gulp.watch(paths.scripts, ['scripts']);
});
-gulp.task('default', ['clean', 'scripts']);
+gulp.task('default', ['clean', 'scripts', 'libs']);
diff --git a/static/maps/mvc/workflow/workflow-canvas.js.map b/static/maps/mvc/workflow/workflow-canvas.js.map
index 90dda886d73..f521ecce102 100644
--- a/static/maps/mvc/workflow/workflow-canvas.js.map
+++ b/static/maps/mvc/workflow/workflow-canvas.js.map
@@ -1 +1 @@
-{"version":3,"sources":["mvc/workflow/workflow-canvas.js"],"names":["define","CanvasManager","app","canvas_viewport","overview","this","cv","find","cc","ov","ScrollPanel","panel","extend","$","init_drag","prototype","x","y","self","min","width","move","max","Math","css","top","background-position-y","update_viewport_overlay","each","scroll_panel","x_adjust","bind","y_adjust","position","p","offset","d","offsetY","offsetX","draw_overview","e","hasClass","removeClass","in_h","height","in_w","o_w","oc","left","o_h","new_x_offset","pageX","new_y_offset","pageY","addClass","workflow","fit_canvas_to_nodes","op","offsetParent","opo","new_size","cc_pos","canvas_el","cv_w","c","get","parent","getContext","shift_h","cv_h","size","shift_w","ceil","attr","nodes","strokeStyle","id","node","lineWidth","node_element","w","h","fillStyle","workflow_outputs","undefined","length","fillRect","clearTimeout","test","onmove","timeout","panel_pos","panel_w","panel_h","viewport","viewport_w","viewport_h","viewport_offset","min_x","min_y","max_x","p_min_x","p_min_y","p_max_y","p_max_x","close_dist","nudge","t","moved","setTimeout","stop"],"mappings":"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","file":"../../../scripts/mvc/workflow/workflow-canvas.js","sourcesContent":["define([], function() {\n function CanvasManager( app, canvas_viewport, overview ) {\n this.app = app;\n this.cv = canvas_viewport;\n this.cc = this.cv.find( \"#canvas-container\" );\n this.overview = overview;\n this.oc = overview.find( \"#overview-canvas\" );\n this.ov = overview.find( \"#overview-viewport\" );\n // Make overview box draggable\n this.init_drag();\n }\n $.extend( CanvasManager.prototype, {\n init_drag : function () {\n var self = this;\n var move = function( x, y ) {\n x = Math.min( x, self.cv.width() / 2 );\n x = Math.max( x, - self.cc.width() + self.cv.width() / 2 );\n y = Math.min( y, self.cv.height() / 2 );\n y = Math.max( y, - self.cc.height() + self.cv.height() / 2 );\n self.cc.css( {\n left: x,\n top: y\n });\n self.cv.css( { \"background-position-x\": x,\n \"background-position-y\": y\n });\n self.update_viewport_overlay();\n };\n // Dragging within canvas background\n this.cc.each( function() {\n this.scroll_panel = new ScrollPanel( this );\n });\n var x_adjust, y_adjust;\n this.cv.bind( \"dragstart\", function() {\n var o = $(this).offset();\n var p = self.cc.position();\n y_adjust = p.top - o.top;\n x_adjust = p.left - o.left;\n }).bind( \"drag\", function( e, d ) {\n move( d.offsetX + x_adjust, d.offsetY + y_adjust );\n }).bind( \"dragend\", function() {\n self.app.workflow.fit_canvas_to_nodes();\n self.draw_overview();\n });\n this.overview.click( function( e ) {\n if (self.overview.hasClass('blockaclick')){\n self.overview.removeClass('blockaclick');\n } else {\n var in_w = self.cc.width(),\n in_h = self.cc.height(),\n o_w = self.oc.width(),\n o_h = self.oc.height(),\n new_x_offset = e.pageX - self.oc.offset().left - self.ov.width() / 2,\n new_y_offset = e.pageY - self.oc.offset().top - self.ov.height() / 2;\n move( - ( new_x_offset / o_w * in_w ),\n - ( new_y_offset / o_h * in_h ) );\n self.app.workflow.fit_canvas_to_nodes();\n self.draw_overview();\n }\n });\n // Dragging for overview pane\n this.ov.bind( \"drag\", function( e, d ) {\n var in_w = self.cc.width(),\n in_h = self.cc.height(),\n o_w = self.oc.width(),\n o_h = self.oc.height(),\n new_x_offset = d.offsetX - self.overview.offset().left,\n new_y_offset = d.offsetY - self.overview.offset().top;\n move( - ( new_x_offset / o_w * in_w ),\n - ( new_y_offset / o_h * in_h ) );\n }).bind( \"dragend\", function() {\n self.overview.addClass('blockaclick');\n self.app.workflow.fit_canvas_to_nodes();\n self.draw_overview();\n });\n // Dragging for overview border (resize)\n $(\"#overview-border\").bind( \"drag\", function( e, d ) {\n var op = $(this).offsetParent();\n var opo = op.offset();\n var new_size = Math.max( op.width() - ( d.offsetX - opo.left ),\n op.height() - ( d.offsetY - opo.top ) );\n $(this).css( {\n width: new_size,\n height: new_size\n });\n self.draw_overview();\n });\n\n /* Disable dragging for child element of the panel so that resizing can\n only be done by dragging the borders */\n $(\"#overview-border div\").bind(\"drag\", function() { });\n\n },\n update_viewport_overlay: function() {\n var cc = this.cc,\n cv = this.cv,\n oc = this.oc,\n ov = this.ov,\n in_w = cc.width(),\n in_h = cc.height(),\n o_w = oc.width(),\n o_h = oc.height(),\n cc_pos = cc.position();\n ov.css( {\n left: - ( cc_pos.left / in_w * o_w ),\n top: - ( cc_pos.top / in_h * o_h ),\n // Subtract 2 to account for borders (maybe just change box sizing style instead?)\n width: ( cv.width() / in_w * o_w ) - 2,\n height: ( cv.height() / in_h * o_h ) - 2\n });\n },\n draw_overview: function() {\n var canvas_el = $(\"#overview-canvas\"),\n size = canvas_el.parent().parent().width(),\n c = canvas_el.get(0).getContext(\"2d\"),\n in_w = $(\"#canvas-container\").width(),\n in_h = $(\"#canvas-container\").height();\n var o_h, shift_h, o_w, shift_w;\n // Fit canvas into overview area\n var cv_w = this.cv.width();\n var cv_h = this.cv.height();\n if ( in_w < cv_w && in_h < cv_h ) {\n // Canvas is smaller than viewport\n o_w = in_w / cv_w * size;\n shift_w = ( size - o_w ) / 2;\n o_h = in_h / cv_h * size;\n shift_h = ( size - o_h ) / 2;\n } else if ( in_w < in_h ) {\n // Taller than wide\n shift_h = 0;\n o_h = size;\n o_w = Math.ceil( o_h * in_w / in_h );\n shift_w = ( size - o_w ) / 2;\n } else {\n // Wider than tall\n o_w = size;\n shift_w = 0;\n o_h = Math.ceil( o_w * in_h / in_w );\n shift_h = ( size - o_h ) / 2;\n }\n canvas_el.parent().css( {\n left: shift_w,\n top: shift_h,\n width: o_w,\n height: o_h\n });\n canvas_el.attr( \"width\", o_w );\n canvas_el.attr( \"height\", o_h );\n // Draw overview\n $.each( this.app.workflow.nodes, function( id, node ) {\n c.fillStyle = \"#D2C099\";\n c.strokeStyle = \"#D8B365\";\n c.lineWidth = 1;\n var node_element = $(node.element),\n position = node_element.position(),\n x = position.left / in_w * o_w,\n y = position.top / in_h * o_h,\n w = node_element.width() / in_w * o_w,\n h = node_element.height() / in_h * o_h;\n if (node.errors){\n c.fillStyle = \"#FFCCCC\";\n c.strokeStyle = \"#AA6666\";\n } else if (node.workflow_outputs !== undefined && node.workflow_outputs.length > 0){\n c.fillStyle = \"#E8A92D\";\n c.strokeStyle = \"#E8A92D\";\n }\n c.fillRect( x, y, w, h );\n c.strokeRect( x, y, w, h );\n });\n this.update_viewport_overlay();\n }\n });\n\n // FIXME: merge scroll panel into CanvasManager, clean up hardcoded stuff.\n function ScrollPanel( panel ) {\n this.panel = panel;\n }\n $.extend( ScrollPanel.prototype, {\n test: function( e, onmove ) {\n clearTimeout( this.timeout );\n var x = e.pageX,\n y = e.pageY,\n // Panel size and position\n panel = $(this.panel),\n panel_pos = panel.position(),\n panel_w = panel.width(),\n panel_h = panel.height(),\n // Viewport size and offset\n viewport = panel.parent(),\n viewport_w = viewport.width(),\n viewport_h = viewport.height(),\n viewport_offset = viewport.offset(),\n // Edges of viewport (in page coordinates)\n min_x = viewport_offset.left,\n min_y = viewport_offset.top,\n max_x = min_x + viewport.width(),\n max_y = min_y + viewport.height(),\n // Legal panel range\n p_min_x = - ( panel_w - ( viewport_w / 2 ) ),\n p_min_y = - ( panel_h - ( viewport_h / 2 )),\n p_max_x = ( viewport_w / 2 ),\n p_max_y = ( viewport_h / 2 ),\n // Did the panel move?\n moved = false,\n // Constants\n close_dist = 5,\n nudge = 23;\n if ( x - close_dist < min_x ) {\n if ( panel_pos.left < p_max_x ) {\n var t = Math.min( nudge, p_max_x - panel_pos.left );\n panel.css( \"left\", panel_pos.left + t );\n moved = true;\n }\n } else if ( x + close_dist > max_x ) {\n if ( panel_pos.left > p_min_x ) {\n var t = Math.min( nudge, panel_pos.left - p_min_x );\n panel.css( \"left\", panel_pos.left - t );\n moved = true;\n }\n } else if ( y - close_dist < min_y ) {\n if ( panel_pos.top < p_max_y ) {\n var t = Math.min( nudge, p_max_y - panel_pos.top );\n panel.css( \"top\", panel_pos.top + t );\n moved = true;\n }\n } else if ( y + close_dist > max_y ) {\n if ( panel_pos.top > p_min_y ) {\n var t = Math.min( nudge, panel_pos.top - p_min_x );\n panel.css( \"top\", ( panel_pos.top - t ) + \"px\" );\n moved = true;\n }\n }\n if ( moved ) {\n // Keep moving even if mouse doesn't move\n onmove();\n var panel = this;\n this.timeout = setTimeout( function() { panel.test( e, onmove ); }, 50 );\n }\n },\n stop: function( e, ui ) {\n clearTimeout( this.timeout );\n }\n });\n return CanvasManager;\n});\n"]}
\ No newline at end of file
+{"version":3,"sources":["mvc/workflow/workflow-canvas.js"],"names":["define","CanvasManager","app","canvas_viewport","overview","this","cv","find","cc","ov","ScrollPanel","panel","extend","$","init_drag","prototype","x","y","self","min","width","move","max","Math","css","top","background-position-y","update_viewport_overlay","each","scroll_panel","x_adjust","bind","y_adjust","position","p","offset","d","offsetY","offsetX","draw_overview","e","hasClass","removeClass","in_h","height","in_w","o_w","oc","left","o_h","new_x_offset","pageX","new_y_offset","pageY","addClass","workflow","fit_canvas_to_nodes","op","offsetParent","opo","new_size","cc_pos","canvas_el","cv_w","c","get","parent","getContext","shift_h","cv_h","size","shift_w","ceil","attr","nodes","strokeStyle","id","node","lineWidth","node_element","w","h","fillStyle","workflow_outputs","undefined","length","fillRect","clearTimeout","test","onmove","timeout","panel_pos","panel_w","panel_h","viewport","viewport_w","viewport_h","viewport_offset","min_x","min_y","max_x","p_min_x","p_min_y","p_max_y","p_max_x","close_dist","nudge","t","moved","setTimeout","stop"],"mappings":"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","file":"../../../scripts/mvc/workflow/workflow-canvas.js","sourcesContent":["define([], function() {\n function CanvasManager( app, canvas_viewport, overview ) {\n this.app = app;\n this.cv = canvas_viewport;\n this.cc = this.cv.find( \"#canvas-container\" );\n this.overview = overview;\n this.oc = overview.find( \"#overview-canvas\" );\n this.ov = overview.find( \"#overview-viewport\" );\n // Make overview box draggable\n this.init_drag();\n }\n $.extend( CanvasManager.prototype, {\n init_drag : function () {\n var self = this;\n var move = function( x, y ) {\n x = Math.min( x, self.cv.width() / 2 );\n x = Math.max( x, - self.cc.width() + self.cv.width() / 2 );\n y = Math.min( y, self.cv.height() / 2 );\n y = Math.max( y, - self.cc.height() + self.cv.height() / 2 );\n self.cc.css( {\n left: x,\n top: y\n });\n self.cv.css( { \"background-position-x\": x,\n \"background-position-y\": y\n });\n self.update_viewport_overlay();\n };\n // Dragging within canvas background\n this.cc.each( function() {\n this.scroll_panel = new ScrollPanel( this );\n });\n var x_adjust, y_adjust;\n this.cv.bind( \"dragstart\", function() {\n var o = $(this).offset();\n var p = self.cc.position();\n y_adjust = p.top - o.top;\n x_adjust = p.left - o.left;\n }).bind( \"drag\", function( e, d ) {\n move( d.offsetX + x_adjust, d.offsetY + y_adjust );\n }).bind( \"dragend\", function() {\n self.app.workflow.fit_canvas_to_nodes();\n self.draw_overview();\n });\n this.overview.click( function( e ) {\n if (self.overview.hasClass('blockaclick')){\n self.overview.removeClass('blockaclick');\n } else {\n var in_w = self.cc.width(),\n in_h = self.cc.height(),\n o_w = self.oc.width(),\n o_h = self.oc.height(),\n new_x_offset = e.pageX - self.oc.offset().left - self.ov.width() / 2,\n new_y_offset = e.pageY - self.oc.offset().top - self.ov.height() / 2;\n move( - ( new_x_offset / o_w * in_w ),\n - ( new_y_offset / o_h * in_h ) );\n self.app.workflow.fit_canvas_to_nodes();\n self.draw_overview();\n }\n });\n // Dragging for overview pane\n this.ov.bind( \"drag\", function( e, d ) {\n var in_w = self.cc.width(),\n in_h = self.cc.height(),\n o_w = self.oc.width(),\n o_h = self.oc.height(),\n new_x_offset = d.offsetX - self.overview.offset().left,\n new_y_offset = d.offsetY - self.overview.offset().top;\n move( - ( new_x_offset / o_w * in_w ),\n - ( new_y_offset / o_h * in_h ) );\n }).bind( \"dragend\", function() {\n self.overview.addClass('blockaclick');\n self.app.workflow.fit_canvas_to_nodes();\n self.draw_overview();\n });\n // Dragging for overview border (resize)\n $(\"#overview-border\").bind( \"drag\", function( e, d ) {\n var op = $(this).offsetParent();\n var opo = op.offset();\n var new_size = Math.max( op.width() - ( d.offsetX - opo.left ),\n op.height() - ( d.offsetY - opo.top ) );\n $(this).css( {\n width: new_size,\n height: new_size\n });\n self.draw_overview();\n });\n\n /* Disable dragging for child element of the panel so that resizing can\n only be done by dragging the borders */\n $(\"#overview-border div\").bind(\"drag\", function() { });\n\n },\n update_viewport_overlay: function() {\n var cc = this.cc,\n cv = this.cv,\n oc = this.oc,\n ov = this.ov,\n in_w = cc.width(),\n in_h = cc.height(),\n o_w = oc.width(),\n o_h = oc.height(),\n cc_pos = cc.position();\n ov.css( {\n left: - ( cc_pos.left / in_w * o_w ),\n top: - ( cc_pos.top / in_h * o_h ),\n // Subtract 2 to account for borders (maybe just change box sizing style instead?)\n width: ( cv.width() / in_w * o_w ) - 2,\n height: ( cv.height() / in_h * o_h ) - 2\n });\n },\n draw_overview: function() {\n var canvas_el = $(\"#overview-canvas\"),\n size = canvas_el.parent().parent().width(),\n c = canvas_el.get(0).getContext(\"2d\"),\n in_w = $(\"#canvas-container\").width(),\n in_h = $(\"#canvas-container\").height();\n var o_h, shift_h, o_w, shift_w;\n // Fit canvas into overview area\n var cv_w = this.cv.width();\n var cv_h = this.cv.height();\n if ( in_w < cv_w && in_h < cv_h ) {\n // Canvas is smaller than viewport\n o_w = in_w / cv_w * size;\n shift_w = ( size - o_w ) / 2;\n o_h = in_h / cv_h * size;\n shift_h = ( size - o_h ) / 2;\n } else if ( in_w < in_h ) {\n // Taller than wide\n shift_h = 0;\n o_h = size;\n o_w = Math.ceil( o_h * in_w / in_h );\n shift_w = ( size - o_w ) / 2;\n } else {\n // Wider than tall\n o_w = size;\n shift_w = 0;\n o_h = Math.ceil( o_w * in_h / in_w );\n shift_h = ( size - o_h ) / 2;\n }\n canvas_el.parent().css( {\n left: shift_w,\n top: shift_h,\n width: o_w,\n height: o_h\n });\n canvas_el.attr( \"width\", o_w );\n canvas_el.attr( \"height\", o_h );\n // Draw overview\n $.each( this.app.workflow.nodes, function( id, node ) {\n c.fillStyle = \"#D2C099\";\n c.strokeStyle = \"#D8B365\";\n c.lineWidth = 1;\n var node_element = $(node.element),\n position = node_element.position(),\n x = position.left / in_w * o_w,\n y = position.top / in_h * o_h,\n w = node_element.width() / in_w * o_w,\n h = node_element.height() / in_h * o_h;\n if (node.errors){\n c.fillStyle = \"#FFCCCC\";\n c.strokeStyle = \"#AA6666\";\n } else if (node.workflow_outputs !== undefined && node.workflow_outputs.length > 0){\n c.fillStyle = \"#E8A92D\";\n c.strokeStyle = \"#E8A92D\";\n }\n c.fillRect( x, y, w, h );\n c.strokeRect( x, y, w, h );\n });\n this.update_viewport_overlay();\n }\n });\n\n // FIXME: merge scroll panel into CanvasManager, clean up hardcoded stuff.\n function ScrollPanel( panel ) {\n this.panel = panel;\n }\n $.extend( ScrollPanel.prototype, {\n test: function( e, onmove ) {\n clearTimeout( this.timeout );\n var x = e.pageX,\n y = e.pageY,\n // Panel size and position\n panel = $(this.panel),\n panel_pos = panel.position(),\n panel_w = panel.width(),\n panel_h = panel.height(),\n // Viewport size and offset\n viewport = panel.parent(),\n viewport_w = viewport.width(),\n viewport_h = viewport.height(),\n viewport_offset = viewport.offset(),\n // Edges of viewport (in page coordinates)\n min_x = viewport_offset.left,\n min_y = viewport_offset.top,\n max_x = min_x + viewport.width(),\n max_y = min_y + viewport.height(),\n // Legal panel range\n p_min_x = - ( panel_w - ( viewport_w / 2 ) ),\n p_min_y = - ( panel_h - ( viewport_h / 2 )),\n p_max_x = ( viewport_w / 2 ),\n p_max_y = ( viewport_h / 2 ),\n // Did the panel move?\n moved = false,\n // Constants\n close_dist = 5,\n nudge = 23;\n if ( x - close_dist < min_x ) {\n if ( panel_pos.left < p_max_x ) {\n var t = Math.min( nudge, p_max_x - panel_pos.left );\n panel.css( \"left\", panel_pos.left + t );\n moved = true;\n }\n } else if ( x + close_dist > max_x ) {\n if ( panel_pos.left > p_min_x ) {\n var t = Math.min( nudge, panel_pos.left - p_min_x );\n panel.css( \"left\", panel_pos.left - t );\n moved = true;\n }\n } else if ( y - close_dist < min_y ) {\n if ( panel_pos.top < p_max_y ) {\n var t = Math.min( nudge, p_max_y - panel_pos.top );\n panel.css( \"top\", panel_pos.top + t );\n moved = true;\n }\n } else if ( y + close_dist > max_y ) {\n if ( panel_pos.top > p_min_y ) {\n var t = Math.min( nudge, panel_pos.top - p_min_x );\n panel.css( \"top\", ( panel_pos.top - t ) + \"px\" );\n moved = true;\n }\n }\n if ( moved ) {\n // Keep moving even if mouse doesn't move\n onmove();\n var panel = this;\n this.timeout = setTimeout( function() { panel.test( e, onmove ); }, 50 );\n }\n },\n stop: function( e, ui ) {\n clearTimeout( this.timeout );\n }\n });\n return CanvasManager;\n});\n"]}
\ No newline at end of file
diff --git a/static/scripts/libs/backbone.js b/static/scripts/libs/backbone.js
index 9daf2799f6f..8a2ff6e3541 100644
--- a/static/scripts/libs/backbone.js
+++ b/static/scripts/libs/backbone.js
@@ -1,2 +1 @@
-"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};!function(t){var e="object"==("undefined"==typeof self?"undefined":_typeof(self))&&self.self===self&&self||"object"==("undefined"==typeof global?"undefined":_typeof(global))&&global.global===global&&global;if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(i,n,s){e.Backbone=t(e,s,i,n)});else if("undefined"!=typeof exports){var i,n=require("underscore");try{i=require("jquery")}catch(t){}t(e,exports,n,i)}else e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}(function(t,e,i,n){var s=t.Backbone,r=Array.prototype.slice;e.VERSION="1.3.3",e.$=n,e.noConflict=function(){return t.Backbone=s,this},e.emulateHTTP=!1,e.emulateJSON=!1;var o=function(t,e,n){switch(t){case 1:return function(){return i[e](this[n])};case 2:return function(t){return i[e](this[n],t)};case 3:return function(t,s){return i[e](this[n],h(t,this),s)};case 4:return function(t,s,r){return i[e](this[n],h(t,this),s,r)};default:return function(){var t=r.call(arguments);return t.unshift(this[n]),i[e].apply(i,t)}}},a=function(t,e,n){i.each(e,function(e,s){i[s]&&(t.prototype[s]=o(e,s,n))})},h=function(t,e){return i.isFunction(t)?t:i.isObject(t)&&!e._isModel(t)?u(t):i.isString(t)?function(e){return e.get(t)}:t},u=function(t){var e=i.matches(t);return function(t){return e(t.attributes)}},l=e.Events={},c=/\s+/,d=function t(e,n,s,r,o){var a,h=0;if(s&&"object"===(void 0===s?"undefined":_typeof(s))){void 0!==r&&"context"in o&&void 0===o.context&&(o.context=r);for(a=i.keys(s);h=e||t>0&&(x>e||x==e&&I>=r)&&p<=e)&&(O<0||I>C)&&(O=z,C=t<0?I:b,t<0?x:p),h+=24}O>=0&&u([O],c+1)}};u([i.cirTreeOffset+48],1)},s.prototype.readWigData=function(e,r,t){var n,i=t-r;if(i<=25e3||0===this.zoomLevels.length)n=this.getUnzoomedView();else for(var o=0;ot.field-3)return o[t.field-3]==e},[{offset:y,size:p}],r)}m+=c}return r([])}for(var b=null,v=0;v=e||t>0&&(x>e||x==e&&I>=r)&&p<=e)&&(O<0||I>C)&&(O=z,C=t<0?I:b,t<0?x:p),h+=24}O>=0&&u([O],c+1)}};u([i.cirTreeOffset+48],1)},s.prototype.readWigData=function(e,r,t){var n,i=t-r;if(i<=25e3||0===this.zoomLevels.length)n=this.getUnzoomedView();else for(var o=0;ot.field-3)return o[t.field-3]==e},[{offset:y,size:p}],r)}m+=c}return r([])}for(var b=null,v=0;v15?(this.inflateEnd(t),-2):(this.wbits=i,t.istate.blocks=new e(t,0!=t.istate.nowrap?null:this,1<>4)>t.istate.wbits){t.istate.mode=13,t.msg="invalid window size",t.istate.marker=5;break}t.istate.mode=1;case 1:if(0==t.avail_in)return e;if(e=i,t.avail_in--,t.total_in++,n=255&t.next_in[t.next_in_index++],((t.istate.method<<8)+n)%31!=0){t.istate.mode=13,t.msg="incorrect header check",t.istate.marker=5;break}if(0==(32&n)){t.istate.mode=7;break}t.istate.mode=2;case 2:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need=(255&t.next_in[t.next_in_index++])<<24&4278190080,t.istate.mode=3;case 3:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need+=(255&t.next_in[t.next_in_index++])<<16&16711680,t.istate.mode=4;case 4:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need+=(255&t.next_in[t.next_in_index++])<<8&65280,t.istate.mode=5;case 5:return 0==t.avail_in?e:(e=i,t.avail_in--,t.total_in++,t.istate.need+=255&t.next_in[t.next_in_index++],t.adler=t.istate.need,t.istate.mode=6,2);case 6:return t.istate.mode=13,t.msg="need dictionary",t.istate.marker=0,-2;case 7:if(-3==(e=t.istate.blocks.proc(t,e))){t.istate.mode=13,t.istate.marker=0;break}if(e==x&&(e=i),e!=u)return e;if(e=i,t.istate.blocks.reset(t,t.istate.was),0!=t.istate.nowrap){t.istate.mode=12;break}t.istate.mode=8;case 8:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need=(255&t.next_in[t.next_in_index++])<<24&4278190080,t.istate.mode=9;case 9:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need+=(255&t.next_in[t.next_in_index++])<<16&16711680,t.istate.mode=10;case 10:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need+=(255&t.next_in[t.next_in_index++])<<8&65280,t.istate.mode=11;case 11:if(0==t.avail_in)return e;if(e=i,t.avail_in--,t.total_in++,t.istate.need+=255&t.next_in[t.next_in_index++],t.istate.was[0]!=t.istate.need){t.istate.mode=13,t.msg="incorrect data check",t.istate.marker=5;break}t.istate.mode=12;case 12:return u;case 13:return-3;default:return-2}},i.prototype.inflateSetDictionary=function(t,i,e){var n=0,s=e;return null==t||null==t.istate||6!=t.istate.mode?-2:t._adler.adler32(1,i,0,e)!=t.adler?-3:(t.adler=t._adler.adler32(0,null,0,0),s>=1<>>16&65535)!=(65535&n))return this.mode=13,t.msg="invalid stored block lengths",i=-3,this.bitb=n,this.bitk=s,t.avail_in=l,t.total_in+=h-t.next_in_index,t.next_in_index=h,this.write=_,this.inflate_flush(t,i);this.left=65535&n,n=s=0,this.mode=0!=this.left?2:0!=this.last?7:w;break;case 2:if(0==l)return this.bitb=n,this.bitk=s,t.avail_in=l,t.total_in+=h-t.next_in_index,t.next_in_index=h,write=_,this.inflate_flush(t,i);if(0==d&&(_==end&&0!=read&&(_=0,d=_29||(e>>5&31)>29)return this.mode=9,t.msg="too many length or distance symbols",i=-3,this.bitb=n,this.bitk=s,t.avail_in=l,t.total_in+=h-t.next_in_index,t.next_in_index=h,this.write=_,this.inflate_flush(t,i);if(e=258+(31&e)+(e>>5&31),null==this.blens||this.blens.length>>=3,s-=3}for(;this.index<19;)this.blens[E[this.index++]]=0;if(this.bb[0]=7,(e=this.inftree.inflate_trees_bits(this.blens,this.bb,this.tb,this.hufts,t))!=x)return i=e,-3==i&&(this.blens=null,this.mode=9),this.bitb=n,this.bitk=s,t.avail_in=l,t.total_in+=h-t.next_in_index,t.next_in_index=h,write=_,this.inflate_flush(t,i);this.index=0,this.mode=5;case 5:for(;;){if(e=this.table,!(this.index<258+(31&e)+(e>>5&31)))break;var k,m,y;for(e=this.bb[0];s15?(this.inflateEnd(t),-2):(this.wbits=i,t.istate.blocks=new e(t,0!=t.istate.nowrap?null:this,1<>4)>t.istate.wbits){t.istate.mode=13,t.msg="invalid window size",t.istate.marker=5;break}t.istate.mode=1;case 1:if(0==t.avail_in)return e;if(e=i,t.avail_in--,t.total_in++,n=255&t.next_in[t.next_in_index++],((t.istate.method<<8)+n)%31!=0){t.istate.mode=13,t.msg="incorrect header check",t.istate.marker=5;break}if(0==(32&n)){t.istate.mode=7;break}t.istate.mode=2;case 2:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need=(255&t.next_in[t.next_in_index++])<<24&4278190080,t.istate.mode=3;case 3:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need+=(255&t.next_in[t.next_in_index++])<<16&16711680,t.istate.mode=4;case 4:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need+=(255&t.next_in[t.next_in_index++])<<8&65280,t.istate.mode=5;case 5:return 0==t.avail_in?e:(e=i,t.avail_in--,t.total_in++,t.istate.need+=255&t.next_in[t.next_in_index++],t.adler=t.istate.need,t.istate.mode=6,2);case 6:return t.istate.mode=13,t.msg="need dictionary",t.istate.marker=0,-2;case 7:if(-3==(e=t.istate.blocks.proc(t,e))){t.istate.mode=13,t.istate.marker=0;break}if(e==x&&(e=i),e!=u)return e;if(e=i,t.istate.blocks.reset(t,t.istate.was),0!=t.istate.nowrap){t.istate.mode=12;break}t.istate.mode=8;case 8:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need=(255&t.next_in[t.next_in_index++])<<24&4278190080,t.istate.mode=9;case 9:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need+=(255&t.next_in[t.next_in_index++])<<16&16711680,t.istate.mode=10;case 10:if(0==t.avail_in)return e;e=i,t.avail_in--,t.total_in++,t.istate.need+=(255&t.next_in[t.next_in_index++])<<8&65280,t.istate.mode=11;case 11:if(0==t.avail_in)return e;if(e=i,t.avail_in--,t.total_in++,t.istate.need+=255&t.next_in[t.next_in_index++],t.istate.was[0]!=t.istate.need){t.istate.mode=13,t.msg="incorrect data check",t.istate.marker=5;break}t.istate.mode=12;case 12:return u;case 13:return-3;default:return-2}},i.prototype.inflateSetDictionary=function(t,i,e){var n=0,s=e;return null==t||null==t.istate||6!=t.istate.mode?-2:t._adler.adler32(1,i,0,e)!=t.adler?-3:(t.adler=t._adler.adler32(0,null,0,0),s>=1<>>16&65535)!=(65535&n))return this.mode=13,t.msg="invalid stored block lengths",i=-3,this.bitb=n,this.bitk=s,t.avail_in=l,t.total_in+=h-t.next_in_index,t.next_in_index=h,this.write=_,this.inflate_flush(t,i);this.left=65535&n,n=s=0,this.mode=0!=this.left?2:0!=this.last?7:w;break;case 2:if(0==l)return this.bitb=n,this.bitk=s,t.avail_in=l,t.total_in+=h-t.next_in_index,t.next_in_index=h,write=_,this.inflate_flush(t,i);if(0==d&&(_==end&&0!=read&&(_=0,d=_29||(e>>5&31)>29)return this.mode=9,t.msg="too many length or distance symbols",i=-3,this.bitb=n,this.bitk=s,t.avail_in=l,t.total_in+=h-t.next_in_index,t.next_in_index=h,this.write=_,this.inflate_flush(t,i);if(e=258+(31&e)+(e>>5&31),null==this.blens||this.blens.length>>=3,s-=3}for(;this.index<19;)this.blens[E[this.index++]]=0;if(this.bb[0]=7,(e=this.inftree.inflate_trees_bits(this.blens,this.bb,this.tb,this.hufts,t))!=x)return i=e,-3==i&&(this.blens=null,this.mode=9),this.bitb=n,this.bitk=s,t.avail_in=l,t.total_in+=h-t.next_in_index,t.next_in_index=h,write=_,this.inflate_flush(t,i);this.index=0,this.mode=5;case 5:for(;;){if(e=this.table,!(this.index<258+(31&e)+(e>>5&31)))break;var k,m,y;for(e=this.bb[0];s
0?i.floor(R*(i.abs(g-m)/y))+1:1,g0;o-=s)t.splice(o,0,r);return t.join("")},d=function(t,i,e){var s;for(s=i.length;s--;)if((!e||null!==i[s])&&i[s]!==t)return!1;return!0},c=function(t){return e.isArray(t)?t:[t]},u=function(i){var e;t.createStyleSheet?t.createStyleSheet().cssText=i:(e=t.createElement("style"),e.type="text/css",t.getElementsByTagName("head")[0].appendChild(e),e["string"==typeof t.body.style.WebkitAppearance?"innerText":"innerHTML"]=i)},e.fn.simpledraw=function(i,s,r,n){var a,o;if(r&&(a=this.data("_jqs_vcanvas")))return a;if(!1===e.fn.sparkline.canvas)return!1;if(void 0===e.fn.sparkline.canvas){var h=t.createElement("canvas");if(h.getContext&&h.getContext("2d"))e.fn.sparkline.canvas=function(t,i,e,s){return new q(t,i,e,s)};else{if(!t.namespaces||t.namespaces.v)return e.fn.sparkline.canvas=!1,!1;t.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),e.fn.sparkline.canvas=function(t,i,e,s){return new I(t,i,e)}}}return void 0===i&&(i=e(this).innerWidth()),void 0===s&&(s=e(this).innerHeight()),a=e.fn.sparkline.canvas(i,s,this,n),o=e(this).data("_jqs_mhandler"),o&&o.registerCanvas(a),a},e.fn.cleardraw=function(){var t=this.data("_jqs_vcanvas");t&&t.reset()},e.RangeMapClass=v=r({init:function(t){var i,e,s=[];for(i in t)t.hasOwnProperty(i)&&"string"==typeof i&&i.indexOf(":")>-1&&(e=i.split(":"),e[0]=0===e[0].length?-1/0:parseFloat(e[0]),e[1]=0===e[1].length?1/0:parseFloat(e[1]),e[2]=t[i],s.push(e));this.map=t,this.rangelist=s||!1},get:function(t){var i,e,s,r=this.rangelist;if(void 0!==(s=this.map[t]))return s;if(r)for(i=r.length;i--;)if(e=r[i],e[0]<=t&&e[1]>=t)return e[2]}}),e.range_map=function(t){return new v(t)},m=r({init:function(t,i){var s=e(t);this.$el=s,this.options=i,this.currentPageX=0,this.currentPageY=0,this.el=t,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!i.get("disableTooltips"),this.highlightEnabled=!i.get("disableHighlight")},registerSparkline:function(t){this.splist.push(t),this.over&&this.updateDisplay()},registerCanvas:function(t){var i=e(t.canvas);this.canvas=t,this.$canvas=i,i.mouseenter(e.proxy(this.mouseenter,this)),i.mouseleave(e.proxy(this.mouseleave,this)),i.click(e.proxy(this.mouseclick,this))},reset:function(t){this.splist=[],this.tooltip&&t&&(this.tooltip.remove(),this.tooltip=void 0)},mouseclick:function(t){var i=e.Event("sparklineClick");i.originalEvent=t,i.sparklines=this.splist,this.$el.trigger(i)},mouseenter:function(i){e(t.body).unbind("mousemove.jqs"),e(t.body).bind("mousemove.jqs",e.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=i.pageX,this.currentPageY=i.pageY,this.currentEl=i.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new x(this.options),this.tooltip.updatePosition(i.pageX,i.pageY)),this.updateDisplay()},mouseleave:function(){e(t.body).unbind("mousemove.jqs");var i,s,r=this.splist,n=r.length,a=!1;for(this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null),s=0;sthis.canvasWidth||e>this.canvasHeight||i<0||e<0?null:(s=this.getRegion(t,i,e),r!==s&&(void 0!==r&&n&&this.removeHighlight(),this.currentRegion=s,void 0!==s&&n&&this.renderHighlight(),!0))},clearRegionHighlight:function(){return void 0!==this.currentRegion&&(this.removeHighlight(),this.currentRegion=void 0,!0)},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(t){},getCurrentRegionTooltip:function(){var t,i,s,r,a,o,h,l,g,p,d,u,c,f,v=this.options,m="",x=[];if(void 0===this.currentRegion)return"";if(t=this.getCurrentRegionFields(),d=v.get("tooltipFormatter"))return d(this,v,t);if(v.get("tooltipChartTitle")&&(m+=''+a+"