diff --git a/client/galaxy/scripts/mvc/list/list-view.js b/client/galaxy/scripts/mvc/list/list-view.js index 2fae7e18af3..2021ab45256 100644 --- a/client/galaxy/scripts/mvc/list/list-view.js +++ b/client/galaxy/scripts/mvc/list/list-view.js @@ -69,7 +69,7 @@ var ListPanel = Backbone.View.extend( BASE_MVC.LoggableMixin ).extend(/** @lends this.searchFor = attributes.searchFor || ''; /** loading indicator */ - this.indicator = new LoadingIndicator( this.$el ); + // this.indicator = new LoadingIndicator( this.$el ); /** currently showing selectors on items? */ this.selecting = ( attributes.selecting !== undefined )? attributes.selecting : true; @@ -730,7 +730,7 @@ var ListPanel = Backbone.View.extend( BASE_MVC.LoggableMixin ).extend(/** @lends this.debug( '_showLoadingIndicator', this.indicator, msg, speed, callback ); speed = ( speed !== undefined )?( speed ):( this.fxSpeed ); if( !this.indicator ){ - this.indicator = new LoadingIndicator( this.$el, this.$el.parent() ); + this.indicator = new LoadingIndicator( this.$el ); this.debug( '\t created', this.indicator ); } if( !this.$el.is( ':visible' ) ){ diff --git a/static/maps/mvc/list/list-view.js.map b/static/maps/mvc/list/list-view.js.map index e0188973c44..5eab7c1dfb9 100644 --- a/static/maps/mvc/list/list-view.js.map +++ b/static/maps/mvc/list/list-view.js.map @@ -1 +1 @@ -{"version":3,"file":"list-view.js","sources":["../../../src/mvc/list/list-view.js"],"names":["define","LIST_ITEM","LoadingIndicator","BASE_MVC","_l","logNamespace","ListPanel","Backbone","View","extend","LoggableMixin","_logNamespace","viewClass","ListItemView","collectionClass","Collection","tagName","className","fxSpeed","emptyMsg","noneFoundMsg","searchPlaceholder","initialize","attributes","logger","this","log","_","has","filters","searchFor","indicator","$el","selecting","undefined","selected","lastSelected","dragItems","views","collection","$scrollContainer","title","subtitle","_setUpListeners","freeViews","each","view","off","on","error","model","xhr","options","msg","details","console","loading","_showLoadingIndicator","loading-done","_hideLoadingIndicator","once","trigger","arguments","_setUpCollectionListeners","_setUpViewListeners","listenTo","reset","renderItems","add","addItemView","remove","removeItemView","info","view:selected","ev","shiftKey","lastSelectedView","viewFromModelId","selectRange","altKey","showSelectors","push","id","view:de-selected","without","render","speed","$newRender","_buildNewRender","_setUpBehaviors","_queueNewRender","debug","$","templates","el","_renderControls","_renderTitle","_renderSubtitle","_renderSearch","$controls","controls","find","replaceWith","panel","queue","next","fadeOut","_swapNewRender","fadeIn","empty","attr","append","children","$where","tooltip","placement","_renderMultiselectActionMenu","$menu","actions","multiselectActions","length","$newMenu","join","$actions","map","action","html","click","preventDefault","func","parent","$list","$messages","$emptyMessage","$whereTo","_filterCollection","itemModel","_createItemView","_attachItems","hide","_renderEmptyMessage","show","filter","bind","_filterItem","every","fn","call","matchesAll","ViewClass","_getItemViewClass","_getItemViewOptions","_setUpItemViewListeners","expanded","selectable","contains","draggable","args","Array","prototype","slice","apply","v","json","getSelectedModels","toJSON","dataTransfer","setData","JSON","stringify","text","expandAll","expand","collapseAll","collapse","_attachView","slideDown","viewFromModel","i","viewsWhereModel","properties","key","hasOwnProperty","viewRange","viewA","viewB","indexA","indexOf","indexB","searchInput","placeholder","initialVal","onfirstsearch","_firstSearch","onsearch","searchItems","onclear","clearSearch","val","THROTTLE_SELECTORS_AT","showSelector","hideSelectors","slideUp","hideSelector","toggleSelectors","selectAll","event","select","deselectAll","deselect","range","getSelectedViews","constructor","callback","is","scrollPosition","scrollTop","scrollTo","pos","animate","scrollToTop","scrollToItem","itemTop","offsetTop","scrollToId","events","click .select-all","click .deselect-all","toString","elTemplate","wrapTemplate","controlsTemplate","ModelListPanel","modelCollectionKey","setModel","freeModel","oldModelId","get","_setUpModelListeners","stopListening","unshift","clone"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"list-view.js","sources":["../../../src/mvc/list/list-view.js"],"names":["define","LIST_ITEM","LoadingIndicator","BASE_MVC","_l","logNamespace","ListPanel","Backbone","View","extend","LoggableMixin","_logNamespace","viewClass","ListItemView","collectionClass","Collection","tagName","className","fxSpeed","emptyMsg","noneFoundMsg","searchPlaceholder","initialize","attributes","logger","this","log","_","has","filters","searchFor","selecting","undefined","selected","lastSelected","dragItems","views","collection","$scrollContainer","title","subtitle","_setUpListeners","freeViews","each","view","off","on","error","model","xhr","options","msg","details","console","loading","_showLoadingIndicator","loading-done","_hideLoadingIndicator","once","trigger","arguments","_setUpCollectionListeners","_setUpViewListeners","listenTo","reset","renderItems","add","addItemView","remove","removeItemView","info","view:selected","ev","shiftKey","lastSelectedView","viewFromModelId","selectRange","altKey","showSelectors","push","id","view:de-selected","without","render","speed","$newRender","_buildNewRender","_setUpBehaviors","_queueNewRender","debug","$","templates","el","_renderControls","_renderTitle","_renderSubtitle","_renderSearch","$controls","controls","find","replaceWith","panel","queue","next","$el","fadeOut","_swapNewRender","fadeIn","empty","attr","append","children","$where","tooltip","placement","_renderMultiselectActionMenu","$menu","actions","multiselectActions","length","$newMenu","join","$actions","map","action","html","click","preventDefault","func","parent","$list","$messages","$emptyMessage","$whereTo","_filterCollection","itemModel","_createItemView","_attachItems","hide","_renderEmptyMessage","show","filter","bind","_filterItem","every","fn","call","matchesAll","ViewClass","_getItemViewClass","_getItemViewOptions","_setUpItemViewListeners","expanded","selectable","contains","draggable","args","Array","prototype","slice","apply","v","json","getSelectedModels","toJSON","dataTransfer","setData","JSON","stringify","text","expandAll","expand","collapseAll","collapse","_attachView","slideDown","viewFromModel","i","viewsWhereModel","properties","key","hasOwnProperty","viewRange","viewA","viewB","indexA","indexOf","indexB","searchInput","placeholder","initialVal","onfirstsearch","_firstSearch","onsearch","searchItems","onclear","clearSearch","val","THROTTLE_SELECTORS_AT","showSelector","hideSelectors","slideUp","hideSelector","toggleSelectors","selectAll","event","select","deselectAll","deselect","range","getSelectedViews","constructor","callback","indicator","is","scrollPosition","scrollTop","scrollTo","pos","animate","scrollToTop","scrollToItem","itemTop","offsetTop","scrollToId","events","click .select-all","click .deselect-all","toString","elTemplate","wrapTemplate","controlsTemplate","ModelListPanel","modelCollectionKey","setModel","freeModel","oldModelId","get","_setUpModelListeners","stopListening","unshift","clone"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/bundled/analysis.bundled.js b/static/scripts/bundled/analysis.bundled.js index cf7905aa51a..14a893aa7b2 100644 --- a/static/scripts/bundled/analysis.bundled.js +++ b/static/scripts/bundled/analysis.bundled.js @@ -1,24828 +1,12 @@ -webpackJsonp([0,1],[ -/* 0 */ -/*!*****************************************!*\ - !*** ./galaxy/scripts/apps/analysis.js ***! - \*****************************************/ -/***/ function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(_, Backbone) { - var jQuery = __webpack_require__( /*! jquery */ 3 ), - $ = jQuery, - GalaxyApp = __webpack_require__( /*! galaxy */ 4 ).GalaxyApp, - QUERY_STRING = __webpack_require__( /*! utils/query-string-parsing */ 11 ), - PANEL = __webpack_require__( /*! layout/panel */ 12 ), - ToolPanel = __webpack_require__( /*! ./tool-panel */ 13 ), - HistoryPanel = __webpack_require__( /*! ./history-panel */ 60 ), - PAGE = __webpack_require__( /*! layout/page */ 100 ), - ToolForm = __webpack_require__( /*! mvc/tool/tool-form */ 20 ), - Tours = __webpack_require__( /*! mvc/tours */ 103 ); - - /** define the 'Analyze Data'/analysis/main/home page for Galaxy - * * has a masthead - * * a left tool menu to allow the user to load tools in the center panel - * * a right history menu that shows the user's current data - * * a center panel - * Both panels (generally) persist while the center panel shows any - * UI needed for the current step of an analysis, like: - * * tool forms to set tool parameters, - * * tables showing the contents of datasets - * * etc. - */ - window.app = function app( options, bootstrapped ){ - window.Galaxy = new GalaxyApp( options, bootstrapped ); - Galaxy.debug( 'analysis app' ); - // TODO: use router as App base (combining with Galaxy) - - // .................................................... panels and page - var config = options.config, - toolPanel = new ToolPanel({ - el : '#left', - userIsAnonymous : Galaxy.user.isAnonymous(), - search_url : config.search_url, - toolbox : config.toolbox, - toolbox_in_panel : config.toolbox_in_panel, - stored_workflow_menu_entries : config.stored_workflow_menu_entries, - nginx_upload_path : config.nginx_upload_path, - ftp_upload_site : config.ftp_upload_site, - default_genome : config.default_genome, - default_extension : config.default_extension, - }), - centerPanel = new PANEL.CenterPanel({ - el : '#center' - }), - historyPanel = new HistoryPanel({ - el : '#right', - galaxyRoot : Galaxy.root, - userIsAnonymous : Galaxy.user.isAnonymous(), - allow_user_dataset_purge: config.allow_user_dataset_purge, - }), - analysisPage = new PAGE.PageLayoutView( _.extend( options, { - el : 'body', - left : toolPanel, - center : centerPanel, - right : historyPanel, - })); - - // .................................................... decorate the galaxy object - // TODO: most of this is becoming unnecessary as we move to apps - Galaxy.page = analysisPage; - Galaxy.params = Galaxy.config.params; - - // add tool panel to Galaxy object - Galaxy.toolPanel = toolPanel.tool_panel; - Galaxy.upload = toolPanel.uploadButton; - - Galaxy.currHistoryPanel = historyPanel.historyView; - Galaxy.currHistoryPanel.listenToGalaxy( Galaxy ); - - //HACK: move there - Galaxy.app = { - display : function( view, target ){ - // TODO: Remove this line after select2 update - $( '.select2-hidden-accessible' ).remove(); - centerPanel.display( view ); - }, - }; - - // .................................................... routes - /** */ - var router = new ( Backbone.Router.extend({ - // TODO: not many client routes at this point - fill and remove from server. - // since we're at root here, this may be the last to be routed entirely on the client. - initialize : function( options ){ - this.options = options; - }, - - /** override to parse query string into obj and send to each route */ - execute: function( callback, args, name ){ - Galaxy.debug( 'router execute:', callback, args, name ); - var queryObj = QUERY_STRING.parse( args.pop() ); - args.push( queryObj ); - if( callback ){ - callback.apply( this, args ); - } - }, - - routes : { - '(/)' : 'home', - // TODO: remove annoying 'root' from root urls - '(/)root*' : 'home', - '(/)tours(/)(:tour_id)' : 'show_tours', - }, - - show_tours : function( tour_id ){ - if (tour_id){ - Tours.giveTour(tour_id); - } - else{ - centerPanel.display( new Tours.ToursView() ); - } - }, - - /** */ - home : function( params ){ - // TODO: to router, remove Globals - // load a tool by id (tool_id) or rerun a previous tool execution (job_id) - if( params.tool_id || params.job_id ) { - if ( params.tool_id === 'upload1' ) { - Galaxy.upload.show(); - this._loadCenterIframe( 'welcome' ); - } else { - this._loadToolForm( params ); - } - } else { - // show the workflow run form - if( params.workflow_id ){ - this._loadCenterIframe( 'workflow/run?id=' + params.workflow_id ); - // load the center iframe with controller.action: galaxy.org/?m_c=history&m_a=list -> history/list - } else if( params.m_c ){ - this._loadCenterIframe( params.m_c + '/' + params.m_a ); - // show the workflow run form - } else { - this._loadCenterIframe( 'welcome' ); - } - } - }, - - /** load the center panel with a tool form described by the given params obj */ - _loadToolForm : function( params ){ - //TODO: load tool form code async - params.id = params.tool_id; - centerPanel.display( new ToolForm.View( params ) ); - }, - - /** load the center panel iframe using the given url */ - _loadCenterIframe : function( url, root ){ - root = root || Galaxy.root; - url = root + url; - centerPanel.$( '#galaxy_main' ).prop( 'src', url ); - }, - - }))( options ); - - // .................................................... when the page is ready - // render and start the router - $(function(){ - analysisPage - .render() - .right.historyView.loadCurrentHistory(); - - // use galaxy to listen to history size changes and then re-fetch the user's total size (to update the quota meter) - // TODO: we have to do this here (and after every page.render()) because the masthead is re-created on each - // page render. It's re-created each time because there is no render function and can't be re-rendered without - // re-creating it. - Galaxy.listenTo( analysisPage.right.historyView, 'history-size-change', function(){ - // fetch to update the quota meter adding 'current' for any anon-user's id - Galaxy.user.fetch({ url: Galaxy.user.urlRoot() + '/' + ( Galaxy.user.id || 'current' ) }); - }); - analysisPage.right.historyView.connectToQuotaMeter( analysisPage.masthead.quotaMeter ); - - // start the router - which will call any of the routes above - Backbone.history.start({ - root : Galaxy.root, - pushState : true, - }); - }); - }; - - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! underscore */ 1), __webpack_require__(/*! libs/backbone */ 2))) - -/***/ }, -/* 1 */, -/* 2 */, -/* 3 */, -/* 4 */, -/* 5 */, -/* 6 */, -/* 7 */, -/* 8 */, -/* 9 */, -/* 10 */, -/* 11 */, -/* 12 */, -/* 13 */ -/*!*******************************************!*\ - !*** ./galaxy/scripts/apps/tool-panel.js ***! - \*******************************************/ -/***/ function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function($, _) {var LeftPanel = __webpack_require__( /*! layout/panel */ 12 ).LeftPanel, - Tools = __webpack_require__( /*! mvc/tool/tools */ 14 ), - Upload = __webpack_require__( /*! mvc/upload/upload-view */ 48 ), - _l = __webpack_require__( /*! utils/localization */ 7 ); - - /* Builds the tool menu panel on the left of the analysis page */ - var ToolPanel = LeftPanel.extend({ - - title : _l( 'Tools' ), - - initialize: function( options ){ - LeftPanel.prototype.initialize.call( this, options ); - this.log( this + '.initialize:', options ); - - /** @type {Object[]} descriptions of user's workflows to be shown in the tool menu */ - this.stored_workflow_menu_entries = options.stored_workflow_menu_entries || []; - - // create tool search, tool panel, and tool panel view. - var tool_search = new Tools.ToolSearch({ - search_url : options.search_url, - hidden : false - }); - var tools = new Tools.ToolCollection( options.toolbox ); - this.tool_panel = new Tools.ToolPanel({ - tool_search : tool_search, - tools : tools, - layout : options.toolbox_in_panel - }); - this.tool_panel_view = new Tools.ToolPanelView({ model: this.tool_panel }); - - // add upload modal - this.uploadButton = new Upload({ - nginx_upload_path : options.nginx_upload_path, - ftp_upload_site : options.ftp_upload_site, - default_genome : options.default_genome, - default_extension : options.default_extension, - }); - }, - - render : function(){ - var self = this; - LeftPanel.prototype.render.call( self ); - self.$( '.panel-header-buttons' ).append( self.uploadButton.$el ); - - // if there are tools, render panel and display everything - if (self.tool_panel.get( 'layout' ).size() > 0) { - self.tool_panel_view.render(); - //TODO: why the hide/show? - self.$( '.toolMenu' ).show(); - } - self.$( '.toolMenuContainer' ).prepend( self.tool_panel_view.$el ); - - self._renderWorkflowMenu(); - - // if a tool link has the minsizehint attribute, handle it here (gen. by hiding the tool panel) - self.$( 'a[minsizehint]' ).click( function() { - if ( parent.handle_minwidth_hint ) { - parent.handle_minwidth_hint( $( self ).attr( 'minsizehint' ) ); - } - }); - }, - - /** build the dom for the workflow portion of the tool menu */ - _renderWorkflowMenu : function(){ - var self = this; - // add internal workflow list - self.$( '#internal-workflows' ).append( self._templateTool({ - title : _l( 'All workflows' ), - href : 'workflow/list_for_run' - })); - _.each( self.stored_workflow_menu_entries, function( menu_entry ){ - self.$( '#internal-workflows' ).append( self._templateTool({ - title : menu_entry.stored_workflow.name, - href : 'workflow/run?id=' + menu_entry.encoded_stored_workflow_id - })); - }); - }, - - /** build a link to one tool */ - _templateTool: function( tool ) { - return [ - '
', - // global - '', tool.title, '', - '
' - ].join(''); - }, - - /** override to include inital menu dom and workflow section */ - _templateBody : function(){ - return [ - '
', - '
', - '', - '
', - '
', - '
', - '', _l( 'Workflows' ), '', - '
', - '
', - '
', - '
', - '
', - '
' - ].join(''); - }, - - toString : function(){ return 'ToolPanel'; } - }); - - module.exports = ToolPanel; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! jquery */ 3), __webpack_require__(/*! underscore */ 1))) - -/***/ }, -/* 14 */ -/*!******************************************!*\ - !*** ./galaxy/scripts/mvc/tool/tools.js ***! - \******************************************/ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(Backbone, $) {/** - * Model, view, and controller objects for Galaxy tools and tool panel. - */ - - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ - __webpack_require__(/*! libs/underscore */ 1), - __webpack_require__(/*! viz/trackster/util */ 15), - __webpack_require__(/*! mvc/dataset/data */ 16), - __webpack_require__(/*! mvc/tool/tool-form */ 20) - - ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, util, data, ToolForm) { - 'use strict'; - - /** - * Mixin for tracking model visibility. - */ - var VisibilityMixin = { - hidden: false, - - show: function() { - this.set("hidden", false); - }, - - hide: function() { - this.set("hidden", true); - }, - - toggle: function() { - this.set("hidden", !this.get("hidden")); - }, - - is_visible: function() { - return !this.attributes.hidden; - } - - }; - - /** - * A tool parameter. - */ - var ToolParameter = Backbone.Model.extend({ - defaults: { - name: null, - label: null, - type: null, - value: null, - html: null, - num_samples: 5 - }, - - initialize: function(options) { - this.attributes.html = unescape(this.attributes.html); - }, - - copy: function() { - return new ToolParameter(this.toJSON()); - }, - - set_value: function(value) { - this.set('value', value || ''); - } - }); - - var ToolParameterCollection = Backbone.Collection.extend({ - model: ToolParameter - }); - - /** - * A data tool parameter. - */ - var DataToolParameter = ToolParameter.extend({}); - - /** - * An integer tool parameter. - */ - var IntegerToolParameter = ToolParameter.extend({ - set_value: function(value) { - this.set('value', parseInt(value, 10)); - }, - - /** - * Returns samples from a tool input. - */ - get_samples: function() { - return d3.scale.linear() - .domain([this.get('min'), this.get('max')]) - .ticks(this.get('num_samples')); - } - }); - - var FloatToolParameter = IntegerToolParameter.extend({ - set_value: function(value) { - this.set('value', parseFloat(value)); - } - }); - - /** - * A select tool parameter. - */ - var SelectToolParameter = ToolParameter.extend({ - /** - * Returns tool options. - */ - get_samples: function() { - return _.map(this.get('options'), function(option) { - return option[0]; - }); - } - }); - - // Set up dictionary of parameter types. - ToolParameter.subModelTypes = { - 'integer': IntegerToolParameter, - 'float': FloatToolParameter, - 'data': DataToolParameter, - 'select': SelectToolParameter - }; - - /** - * A Galaxy tool. - */ - var Tool = Backbone.Model.extend({ - // Default attributes. - defaults: { - id: null, - name: null, - description: null, - target: null, - inputs: [], - outputs: [] - }, - - urlRoot: Galaxy.root + 'api/tools', - - initialize: function(options) { - - // Set parameters. - this.set('inputs', new ToolParameterCollection(_.map(options.inputs, function(p) { - var p_class = ToolParameter.subModelTypes[p.type] || ToolParameter; - return new p_class(p); - }))); - }, - - /** - * - */ - toJSON: function() { - var rval = Backbone.Model.prototype.toJSON.call(this); - - // Convert inputs to JSON manually. - rval.inputs = this.get('inputs').map(function(i) { return i.toJSON(); }); - return rval; - }, - - /** - * Removes inputs of a particular type; this is useful because not all inputs can be handled by - * client and server yet. - */ - remove_inputs: function(types) { - var tool = this, - incompatible_inputs = tool.get('inputs').filter( function(input) { - return ( types.indexOf( input.get('type') ) !== -1); - }); - tool.get('inputs').remove(incompatible_inputs); - }, - - /** - * Returns object copy, optionally including only inputs that can be sampled. - */ - copy: function(only_samplable_inputs) { - var copy = new Tool(this.toJSON()); - - // Return only samplable inputs if flag is set. - if (only_samplable_inputs) { - var valid_inputs = new Backbone.Collection(); - copy.get('inputs').each(function(input) { - if (input.get_samples()) { - valid_inputs.push(input); - } - }); - copy.set('inputs', valid_inputs); - } - - return copy; - }, - - apply_search_results: function(results) { - ( _.indexOf(results, this.attributes.id) !== -1 ? this.show() : this.hide() ); - return this.is_visible(); - }, - - /** - * Set a tool input's value. - */ - set_input_value: function(name, value) { - this.get('inputs').find(function(input) { - return input.get('name') === name; - }).set('value', value); - }, - - /** - * Set many input values at once. - */ - set_input_values: function(inputs_dict) { - var self = this; - _.each(_.keys(inputs_dict), function(input_name) { - self.set_input_value(input_name, inputs_dict[input_name]); - }); - }, - - /** - * Run tool; returns a Deferred that resolves to the tool's output(s). - */ - run: function() { - return this._run(); - }, - - /** - * Rerun tool using regions and a target dataset. - */ - rerun: function(target_dataset, regions) { - return this._run({ - action: 'rerun', - target_dataset_id: target_dataset.id, - regions: regions - }); - }, - - /** - * Returns input dict for tool's inputs. - */ - get_inputs_dict: function() { - var input_dict = {}; - this.get('inputs').each(function(input) { - input_dict[input.get('name')] = input.get('value'); - }); - return input_dict; - }, - - /** - * Run tool; returns a Deferred that resolves to the tool's output(s). - * NOTE: this method is a helper method and should not be called directly. - */ - _run: function(additional_params) { - // Create payload. - var payload = _.extend({ - tool_id: this.id, - inputs: this.get_inputs_dict() - }, additional_params); - - // Because job may require indexing datasets, use server-side - // deferred to ensure that job is run. Also use deferred that - // resolves to outputs from tool. - var run_deferred = $.Deferred(), - ss_deferred = new util.ServerStateDeferred({ - ajax_settings: { - url: this.urlRoot, - data: JSON.stringify(payload), - dataType: "json", - contentType: 'application/json', - type: "POST" - }, - interval: 2000, - success_fn: function(response) { - return response !== "pending"; - } - }); - - // Run job and resolve run_deferred to tool outputs. - $.when(ss_deferred.go()).then(function(result) { - run_deferred.resolve(new data.DatasetCollection(result)); - }); - return run_deferred; - } - }); - _.extend(Tool.prototype, VisibilityMixin); - - /** - * Tool view. - */ - var ToolView = Backbone.View.extend({ - - }); - - /** - * Wrap collection of tools for fast access/manipulation. - */ - var ToolCollection = Backbone.Collection.extend({ - model: Tool - }); - - /** - * Label or section header in tool panel. - */ - var ToolSectionLabel = Backbone.Model.extend(VisibilityMixin); - - /** - * Section of tool panel with elements (labels and tools). - */ - var ToolSection = Backbone.Model.extend({ - defaults: { - elems: [], - open: false - }, - - clear_search_results: function() { - _.each(this.attributes.elems, function(elt) { - elt.show(); - }); - - this.show(); - this.set("open", false); - }, - - apply_search_results: function(results) { - var all_hidden = true, - cur_label; - _.each(this.attributes.elems, function(elt) { - if (elt instanceof ToolSectionLabel) { - cur_label = elt; - cur_label.hide(); - } - else if (elt instanceof Tool) { - if (elt.apply_search_results(results)) { - all_hidden = false; - if (cur_label) { - cur_label.show(); - } - } - } - }); - - if (all_hidden) { - this.hide(); - } - else { - this.show(); - this.set("open", true); - } - } - }); - _.extend(ToolSection.prototype, VisibilityMixin); - - /** - * Tool search that updates results when query is changed. Result value of null - * indicates that query was not run; if not null, results are from search using - * query. - */ - var ToolSearch = Backbone.Model.extend({ - defaults: { - search_hint_string: "search tools", - min_chars_for_search: 3, - clear_btn_url: "", - search_url: "", - visible: true, - query: "", - results: null, - // ESC (27) will clear the input field and tool search filters - clear_key: 27 - }, - - urlRoot: Galaxy.root + 'api/tools', - - initialize: function() { - this.on("change:query", this.do_search); - }, - - /** - * Do the search and update the results. - */ - do_search: function() { - var query = this.attributes.query; - - // If query is too short, do not search. - if (query.length < this.attributes.min_chars_for_search) { - this.set("results", null); - return; - } - - // Do search via AJAX. - var q = query; - // Stop previous ajax-request - if (this.timer) { - clearTimeout(this.timer); - } - // Start a new ajax-request in X ms - $("#search-clear-btn").hide(); - $("#search-spinner").show(); - var self = this; - this.timer = setTimeout(function () { - // log the search to analytics if present - if ( typeof ga !== 'undefined' ) { - ga( 'send', 'pageview', Galaxy.root + '?q=' + q ); - } - $.get( self.urlRoot, { q: q }, function (data) { - self.set("results", data); - $("#search-spinner").hide(); - $("#search-clear-btn").show(); - }, "json" ); - }, 400 ); - }, - - clear_search: function() { - this.set("query", ""); - this.set("results", null); - } - - }); - _.extend(ToolSearch.prototype, VisibilityMixin); - - /** - * Tool Panel. - */ - var ToolPanel = Backbone.Model.extend({ - - initialize: function(options) { - this.attributes.tool_search = options.tool_search; - this.attributes.tool_search.on("change:results", this.apply_search_results, this); - this.attributes.tools = options.tools; - this.attributes.layout = new Backbone.Collection( this.parse(options.layout) ); - }, - - /** - * Parse tool panel dictionary and return collection of tool panel elements. - */ - parse: function(response) { - // Recursive function to parse tool panel elements. - var self = this, - // Helper to recursively parse tool panel. - parse_elt = function(elt_dict) { - var type = elt_dict.model_class; - // There are many types of tools; for now, anything that ends in 'Tool' - // is treated as a generic tool. - if ( type.indexOf('Tool') === type.length - 4 ) { - return self.attributes.tools.get(elt_dict.id); - } - else if (type === 'ToolSection') { - // Parse elements. - var elems = _.map(elt_dict.elems, parse_elt); - elt_dict.elems = elems; - return new ToolSection(elt_dict); - } - else if (type === 'ToolSectionLabel') { - return new ToolSectionLabel(elt_dict); - } - }; - - return _.map(response, parse_elt); - }, - - clear_search_results: function() { - this.get('layout').each(function(panel_elt) { - if (panel_elt instanceof ToolSection) { - panel_elt.clear_search_results(); - } - else { - // Label or tool, so just show. - panel_elt.show(); - } - }); - }, - - apply_search_results: function() { - var results = this.get('tool_search').get('results'); - if (results === null) { - this.clear_search_results(); - return; - } - - var cur_label = null; - this.get('layout').each(function(panel_elt) { - if (panel_elt instanceof ToolSectionLabel) { - cur_label = panel_elt; - cur_label.hide(); - } - else if (panel_elt instanceof Tool) { - if (panel_elt.apply_search_results(results)) { - if (cur_label) { - cur_label.show(); - } - } - } - else { - // Starting new section, so clear current label. - cur_label = null; - panel_elt.apply_search_results(results); - } - }); - } - }); - - /** - * View classes for Galaxy tools and tool panel. - * - * Views use the templates defined below for rendering. Views update as needed - * based on (a) model/collection events and (b) user interactions; in this sense, - * they are controllers are well and the HTML is the real view in the MVC architecture. - */ - - /** - * Base view that handles visibility based on model's hidden attribute. - */ - var BaseView = Backbone.View.extend({ - initialize: function() { - this.model.on("change:hidden", this.update_visible, this); - this.update_visible(); - }, - update_visible: function() { - ( this.model.attributes.hidden ? this.$el.hide() : this.$el.show() ); - } - }); - - /** - * Link to a tool. - */ - var ToolLinkView = BaseView.extend({ - tagName: 'div', - - render: function() { - // create element - var $link = $('
'); - $link.append(templates.tool_link(this.model.toJSON())); - - // open upload dialog for upload tool - if (this.model.id === 'upload1') { - $link.find('a').on('click', function(e) { - e.preventDefault(); - Galaxy.upload.show(); - }); - } - else if ( this.model.get( 'model_class' ) === 'Tool' ) { // regular tools - var self = this; - $link.find('a').on('click', function(e) { - e.preventDefault(); - var form = new ToolForm.View( { id : self.model.id, version : self.model.get('version') } ); - form.deferred.execute(function() { - Galaxy.app.display( form ); - }); - }); - } - - // add element - this.$el.append($link); - return this; - } - }); - - /** - * Panel label/section header. - */ - var ToolSectionLabelView = BaseView.extend({ - tagName: 'div', - className: 'toolPanelLabel', - - render: function() { - this.$el.append( $("").text(this.model.attributes.text) ); - return this; - } - }); - - /** - * Panel section. - */ - var ToolSectionView = BaseView.extend({ - tagName: 'div', - className: 'toolSectionWrapper', - - initialize: function() { - BaseView.prototype.initialize.call(this); - this.model.on("change:open", this.update_open, this); - }, - - render: function() { - // Build using template. - this.$el.append( templates.panel_section(this.model.toJSON()) ); - - // Add tools to section. - var section_body = this.$el.find(".toolSectionBody"); - _.each(this.model.attributes.elems, function(elt) { - if (elt instanceof Tool) { - var tool_view = new ToolLinkView({model: elt, className: "toolTitle"}); - tool_view.render(); - section_body.append(tool_view.$el); - } - else if (elt instanceof ToolSectionLabel) { - var label_view = new ToolSectionLabelView({model: elt}); - label_view.render(); - section_body.append(label_view.$el); - } - else { - // TODO: handle nested section bodies? - } - }); - return this; - }, - - events: { - 'click .toolSectionTitle > a': 'toggle' - }, - - /** - * Toggle visibility of tool section. - */ - toggle: function() { - this.model.set("open", !this.model.attributes.open); - }, - - /** - * Update whether section is open or close. - */ - update_open: function() { - (this.model.attributes.open ? - this.$el.children(".toolSectionBody").slideDown("fast") : - this.$el.children(".toolSectionBody").slideUp("fast") - ); - } - }); - - var ToolSearchView = Backbone.View.extend({ - tagName: 'div', - id: 'tool-search', - className: 'bar', - - events: { - 'click': 'focus_and_select', - 'keyup :input': 'query_changed', - 'click #search-clear-btn': 'clear' - }, - - render: function() { - this.$el.append( templates.tool_search(this.model.toJSON()) ); - if (!this.model.is_visible()) { - this.$el.hide(); - } - this.$el.find('[title]').tooltip(); - return this; - }, - - focus_and_select: function() { - this.$el.find(":input").focus().select(); - }, - - clear: function() { - this.model.clear_search(); - this.$el.find(":input").val(''); - this.focus_and_select(); - return false; - }, - - query_changed: function( evData ) { - // check for the 'clear key' (ESC) first - if( ( this.model.attributes.clear_key ) && - ( this.model.attributes.clear_key === evData.which ) ){ - this.clear(); - return false; - } - this.model.set("query", this.$el.find(":input").val()); - } - }); - - /** - * Tool panel view. Events triggered include: - * tool_link_click(click event, tool_model) - */ - var ToolPanelView = Backbone.View.extend({ - tagName: 'div', - className: 'toolMenu', - - /** - * Set up view. - */ - initialize: function() { - this.model.get('tool_search').on("change:results", this.handle_search_results, this); - }, - - render: function() { - var self = this; - - // Render search. - var search_view = new ToolSearchView( { model: this.model.get('tool_search') } ); - search_view.render(); - self.$el.append(search_view.$el); - - // Render panel. - this.model.get('layout').each(function(panel_elt) { - if (panel_elt instanceof ToolSection) { - var section_title_view = new ToolSectionView({model: panel_elt}); - section_title_view.render(); - self.$el.append(section_title_view.$el); - } - else if (panel_elt instanceof Tool) { - var tool_view = new ToolLinkView({model: panel_elt, className: "toolTitleNoSection"}); - tool_view.render(); - self.$el.append(tool_view.$el); - } - else if (panel_elt instanceof ToolSectionLabel) { - var label_view = new ToolSectionLabelView({model: panel_elt}); - label_view.render(); - self.$el.append(label_view.$el); - } - }); - - // Setup tool link click eventing. - self.$el.find("a.tool-link").click(function(e) { - // Tool id is always the first class. - var - tool_id = $(this).attr('class').split(/\s+/)[0], - tool = self.model.get('tools').get(tool_id); - - self.trigger("tool_link_click", e, tool); - }); - - return this; - }, - - handle_search_results: function() { - var results = this.model.get('tool_search').get('results'); - if (results && results.length === 0) { - $("#search-no-results").show(); - } - else { - $("#search-no-results").hide(); - } - } - }); - - /** - * View for working with a tool: setting parameters and inputs and executing the tool. - */ - var ToolFormView = Backbone.View.extend({ - className: 'toolForm', - - render: function() { - this.$el.children().remove(); - this.$el.append( templates.tool_form(this.model.toJSON()) ); - } - }); - - /** - * Integrated tool menu + tool execution. - */ - var IntegratedToolMenuAndView = Backbone.View.extend({ - className: 'toolMenuAndView', - - initialize: function() { - this.tool_panel_view = new ToolPanelView({collection: this.collection}); - this.tool_form_view = new ToolFormView(); - }, - - render: function() { - // Render and append tool panel. - this.tool_panel_view.render(); - this.tool_panel_view.$el.css("float", "left"); - this.$el.append(this.tool_panel_view.$el); - - // Append tool form view. - this.tool_form_view.$el.hide(); - this.$el.append(this.tool_form_view.$el); - - // On tool link click, show tool. - var self = this; - this.tool_panel_view.on("tool_link_click", function(e, tool) { - // Prevents click from activating link: - e.preventDefault(); - // Show tool that was clicked on: - self.show_tool(tool); - }); - }, - - /** - * Fetch and display tool. - */ - show_tool: function(tool) { - var self = this; - tool.fetch().done( function() { - self.tool_form_view.model = tool; - self.tool_form_view.render(); - self.tool_form_view.$el.show(); - $('#left').width("650px"); - }); - } - }); - - // TODO: move into relevant views - var templates = { - // the search bar at the top of the tool panel - tool_search : _.template([ - '', - ' ', - //TODO: replace with icon - '', - ].join('')), - - // the category level container in the tool panel (e.g. 'Get Data', 'Text Manipulation') - panel_section : _.template([ - '
', - '<%- name %>', - '
', - '