define(["jquery", "underscore", "backbone", "collections/Filters", "views/portals/PortalSectionView", "views/DataCatalogViewWithFilters", "views/filters/FilterGroupsView"], function($, _, Backbone, Filters, PortalSectionView, DataCatalogView, FilterGroupsView){ /** * @class PortalDataView * @classdesc The PortalDataView is a view to render the * portal data tab (within PortalView) to display all the datasets related to this portal. * @classcategory Views/Portals * @extends PortalSectionView * @constructor */ var PortalDataView = PortalSectionView.extend( /** @lends PortalDataView.prototype */{ tagName: "div", /** * The Portal associated with this view * @type {PortalModel} */ model: null, /** * An array of subviews in this view * @type {Backbone.View[]} */ subviews: [], /** * The display name for this Section * @type {string} */ uniqueSectionLabel: "Data", render: function(){ if( this.id ){ this.$el.attr("id", this.id); } var searchResults; var searchModel = this.model.get("searchModel"); //Set some options on the searchResults searchResults = this.model.get("searchResults"); //If Solr joins are disabled, get the documents and id facets for the PortalMetricsView if( !MetacatUI.appModel.get("enableSolrJoins") ){ //Get the documents values as a facet so we can get all the data object IDs searchResults.facet = ["documents", "id"]; } //Retrieve only 5 result rows searchResults.rows = 25; //Hide the Filters that are part of the Collection definition. var searchFilters = this.model.get("searchModel").get("filters"); searchFilters.each(function(searchFilter){ //Check if this Filter model is also part of the definition filters collection if( this.model.get("definitionFilters").contains(searchFilter) ){ searchFilter.set("isInvisible", true); } }, this); //Render the filters var filterGroupsView = new FilterGroupsView({ filterGroups: this.model.get("filterGroups"), filters: this.model.get("searchModel").get("filters") }); this.$el.append(filterGroupsView.el); filterGroupsView.render(); this.subviews.push(filterGroupsView); //Create a DataCatalogView var dataCatalogView = new DataCatalogView({ mode: "map", searchModel: this.model.get("searchModel"), searchResults: searchResults, mapModel: this.model.get("mapModel"), isSubView: true, filters: false, fixedHeight: true, filterGroupsView: filterGroupsView }); this.$el.append(dataCatalogView.el); this.$el.data("view", this); dataCatalogView.render(); } }); return PortalDataView; });