diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js index 5f1b7719b5b89056d236e4cca8c035a16a1ba2c0..9c7bdfb737a152919b74dbf7bdeb8bee295429c2 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js @@ -384,7 +384,18 @@ function MainController(profile) { } this._showSamplesPage = function(experimentIdentifier) { - var sampleTableController = new SampleTableController(this, experimentIdentifier + " Samples", experimentIdentifier); + var sampleTableController = null; + + if(experimentIdentifier === "null") { //Fix for reloads when there is text on the url + experimentIdentifier = null; + } + + if(experimentIdentifier) { + sampleTableController = new SampleTableController(this, experimentIdentifier + " Samples", experimentIdentifier); + } else { + sampleTableController = new SampleTableController(this, "Sample Browser", null); + } + sampleTableController.init($("#mainContainer")); this.currentView = sampleTableController; } diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableController.js index 6334d0c9a9cc9847a97a24d7c792bab27ec64b7d..a7445a7459e273103a987e417204923e6dac549d 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableController.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableController.js @@ -22,21 +22,28 @@ function SampleTableController(parentController, title, experimentIdentifier) { this.init = function($container) { var _this = this; Util.blockUI(); - this._loadExperimentData(function() { + + var callback = function() { _this._sampleTableView.repaint($container); Util.unblockUI(); - }); + }; + + if(this._sampleTableModel.experimentIdentifier) { + this._loadExperimentData(callback); + } else { + callback(); + } } this._loadExperimentData = function(callback) { var _this = this; mainController.serverFacade.searchWithExperiment(this._sampleTableModel.experimentIdentifier, function(experimentSamples) { - _this._sampleTableModel.allSamplesFromExperiment = experimentSamples; + _this._sampleTableModel.allSamples = experimentSamples; for(var i = 0; i < experimentSamples.length; i++) { - if(_this._sampleTableModel.sampleTypesOnExperiment[experimentSamples[i].sampleTypeCode]) { - _this._sampleTableModel.sampleTypesOnExperiment[experimentSamples[i].sampleTypeCode] = _this._sampleTableModel.sampleTypesOnExperiment[experimentSamples[i].sampleTypeCode] + 1; + if(_this._sampleTableModel.sampleTypes[experimentSamples[i].sampleTypeCode]) { + _this._sampleTableModel.sampleTypes[experimentSamples[i].sampleTypeCode] = _this._sampleTableModel.sampleTypes[experimentSamples[i].sampleTypeCode] + 1; } else { - _this._sampleTableModel.sampleTypesOnExperiment[experimentSamples[i].sampleTypeCode] = 1; + _this._sampleTableModel.sampleTypes[experimentSamples[i].sampleTypeCode] = 1; } } callback(); @@ -44,11 +51,11 @@ function SampleTableController(parentController, title, experimentIdentifier) { } this._reloadTableWithSampleType = function(selectedSampleTypeCode) { - if(sampleTypeCode !== '') { //Verify something selected + if(selectedSampleTypeCode !== '') { //Verify something selected //Get samples from type var samples = []; - for (var idx = 0; idx < this._sampleTableModel.allSamplesFromExperiment.length; idx++) { - var sampleToCheckType = this._sampleTableModel.allSamplesFromExperiment[idx]; + for (var idx = 0; idx < this._sampleTableModel.allSamples.length; idx++) { + var sampleToCheckType = this._sampleTableModel.allSamples[idx]; if(sampleToCheckType.sampleTypeCode === selectedSampleTypeCode) { samples.push(sampleToCheckType); } diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableModel.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableModel.js index 6edb9a5a168d12d786270152236ec398b2533230..a6e69426402eded8340c008e0b1c446d9acb6d76 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableModel.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableModel.js @@ -17,6 +17,6 @@ function SampleTableModel(title, experimentIdentifier) { this.title = title; this.experimentIdentifier = experimentIdentifier; - this.sampleTypesOnExperiment = {}; - this.allSamplesFromExperiment = new Array(); + this.sampleTypes = {}; + this.allSamples = new Array(); } \ No newline at end of file diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableView.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableView.js index 7ef7832231458a4c12b2a3774f377389add97e50..a7d8d5d76f44ad58d164b76447390c6089b60ad1 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableView.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable/SampleTableView.js @@ -26,7 +26,12 @@ function SampleTableView(sampleTableController, sampleTableModel) { } var $toolbox = $("<div>", { 'id' : 'toolBoxContainer', class : 'toolBox'}); - $toolbox.append(this._getExperimentSampleTypesDropdown()).append(" ").append(this._getOptionsMenu()); + + if(this._sampleTableModel.experimentIdentifier) { + $toolbox.append(this._getExperimentSampleTypesDropdown()).append(" ").append(this._getOptionsMenu()); + } else { + $toolbox.append(this._getAllSampleTypesDropdown()); + } $container.append($toolbox); $container.append(this._tableContainer); @@ -72,7 +77,7 @@ function SampleTableView(sampleTableController, sampleTableModel) { var _this = this; var $sampleTypesSelector = $('<select>', { 'id' : 'sampleTypeCodesToShow', class : 'form-control' }); $sampleTypesSelector.append($('<option>', { 'value' : '' }).text('')); - for(sampleTypeCode in this._sampleTableModel.sampleTypesOnExperiment) { + for(sampleTypeCode in this._sampleTableModel.sampleTypes) { $sampleTypesSelector.append($('<option>', { 'value' : sampleTypeCode }).text(sampleTypeCode)); } $sampleTypesSelector.change(function(event) { @@ -83,6 +88,20 @@ function SampleTableView(sampleTableController, sampleTableModel) { return $("<span>").append($sampleTypesSelector); } + this._getAllSampleTypesDropdown = function() { + var _this = this; + var $sampleTypesSelector = FormUtil.getSampleTypeDropdown(null, false); + $sampleTypesSelector.change(function() { + var sampleTypeToShow = $(this).val(); + mainController.serverFacade.searchWithType(sampleTypeToShow, null, function(samples) { + _this._sampleTableModel.allSamples = samples; + _this._sampleTableController._reloadTableWithSampleType(sampleTypeToShow); + }); + }); + + return $("<span>").append($sampleTypesSelector); + } + // // Menu Operations // diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SideMenu/SideMenuWidgetController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SideMenu/SideMenuWidgetController.js index d555d89068c096bc754dd895117f20134e9360e8..791cb01c9bff006cdd8a221f0df6f539ae4e4836 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SideMenu/SideMenuWidgetController.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SideMenu/SideMenuWidgetController.js @@ -293,10 +293,13 @@ function SideMenuWidgetController(mainController) { //Fill Utils + _this._sideMenuWidgetModel.menuStructure.newMenuIfSelected.children.push( + new SideMenuWidgetComponent(false, true, "Utils", "Utils", _this._sideMenuWidgetModel.menuStructure, null, null, null, "") + ); + _this._sideMenuWidgetModel.menuStructure.newMenuIfSelected.children.push( + new SideMenuWidgetComponent(true, false, "Sample Browser", "Sample Browser", _this._sideMenuWidgetModel.menuStructure, null, "showSamplesPage", null, "") + ); if (profile.storagesConfiguration["isEnabled"]) { - _this._sideMenuWidgetModel.menuStructure.newMenuIfSelected.children.push( - new SideMenuWidgetComponent(false, true, "Utils", "Utils", _this._sideMenuWidgetModel.menuStructure, null, null, null, "") - ); _this._sideMenuWidgetModel.menuStructure.newMenuIfSelected.children.push( new SideMenuWidgetComponent(true, false, "Storage Manager", "Storage Manager", _this._sideMenuWidgetModel.menuStructure, null, "showStorageManager", null, "") );