From 71615dc99b3b61ef1f2af17545de858ecaa1eb66 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 8 Nov 2016 14:17:03 +0000
Subject: [PATCH] SSDM-4172: Add button to expand file tree on all levels in
 data set detailed view

SVN: 37287
---
 .../js/views/DataSetForm/DataSetFormView.js   |  2 +-
 .../widgets/DatasetViewerController.js        |  5 ++-
 .../DataSetForm/widgets/DatasetViewerModel.js |  5 +--
 .../DataSetForm/widgets/DatasetViewerView.js  | 32 +++++++++++++++----
 .../js/views/SampleForm/SampleFormView.js     |  2 +-
 5 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/DataSetFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/DataSetFormView.js
index ff988f680f2..7cbff608951 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/DataSetFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/DataSetFormView.js
@@ -297,7 +297,7 @@ function DataSetFormView(dataSetFormController, dataSetFormModel) {
 		}
 		
 		if(this._dataSetFormModel.mode !== FormMode.CREATE) {
-			var dataSetViewer = new DataSetViewerController("filesViewer", profile, this._dataSetFormModel.sample, mainController.serverFacade, profile.getDefaultDataStoreURL(), [this._dataSetFormModel.dataSet], false, false);
+			var dataSetViewer = new DataSetViewerController("filesViewer", profile, this._dataSetFormModel.sample, mainController.serverFacade, profile.getDefaultDataStoreURL(), [this._dataSetFormModel.dataSet], false, true);
 			dataSetViewer.init();
 		}
 	}
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerController.js
index 69411a0a3fc..d17b069d91d 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerController.js
@@ -26,10 +26,9 @@
  * @param {String} datastoreDownloadURL The datastore url in format http://localhost:8889/datastore_server.
  * @param {Map} datasets API result with the datasets to show.
  * @param {Boolean} enableUpload If true, the button to create datasets is shown, this will require the sample to be present.
- * @param {Boolean} enableOpenDataset If true, pressing on a row opens the dataset form on view mode for the given dataset.
  */
-function DataSetViewerController(containerId, profile, sample, serverFacade, datastoreDownloadURL, datasets, enableUpload, enableOpenDataset) {
-	this._datasetViewerModel = new DataSetViewerModel(containerId, profile, sample, serverFacade, datastoreDownloadURL, datasets, enableUpload, enableOpenDataset);
+function DataSetViewerController(containerId, profile, sample, serverFacade, datastoreDownloadURL, datasets, enableUpload, enableDeepUnfolding) {
+	this._datasetViewerModel = new DataSetViewerModel(containerId, profile, sample, serverFacade, datastoreDownloadURL, datasets, enableUpload, enableDeepUnfolding);
 	this._datasetViewerView = new DataSetViewerView(this, this._datasetViewerModel);
 	
 	this.init = function() {
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerModel.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerModel.js
index 5fa76fce317..919acd3fa77 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerModel.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerModel.js
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-function DataSetViewerModel(containerId, profile, sample, serverFacade, datastoreDownloadURL, datasets, enableUpload, enableOpenDataset) {
+function DataSetViewerModel(containerId, profile, sample, serverFacade, datastoreDownloadURL, datasets, 
+		enableUpload, enableDeepUnfolding) {
 	this.containerId = containerId;
 	this.containerIdTitle = containerId + "-title";
 	this.containerIdContent = containerId + "-content";
@@ -26,7 +27,7 @@ function DataSetViewerModel(containerId, profile, sample, serverFacade, datastor
 	this.datasets = datasets;
 	
 	this.enableUpload = enableUpload;
-	this.enableOpenDataset = enableOpenDataset;
+	this.enableDeepUnfolding = enableDeepUnfolding;
 	this.sampleDataSets = {};
 	this.datastoreDownloadURL = datastoreDownloadURL;
 	
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js
index b96b73fc5ff..01f21e5727c 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/DatasetViewerView.js
@@ -38,23 +38,41 @@ function DataSetViewerView(dataSetViewerController, dataSetViewerModel) {
 		
 		$containerTitle.append($("<div>").append($uploadButton));
 		
-		// Title / Container Content
+		// Container Content
 		var $containerContent = $("<div>", {"id" : this._dataSetViewerModel.containerIdContent });
-		$containerContent.append($("<legend>").append("Datasets:"));
 		$mainContainer.append($containerTitle).append($containerContent);
 		
-		var $container = $("#"+this._dataSetViewerModel.containerIdContent);
-		$container.empty();
-		
 		var $filesContainer = $("<div>");
-		$container.append($filesContainer);
+		$containerContent.append($filesContainer);
+		if (this._dataSetViewerModel.enableDeepUnfolding) {
+			var b = FormUtil.getButtonWithText("Expand all levels", function() {
+				_this._expandAll();
+			});
+			$filesContainer.append(b);
+			var $treeContainer = $("<div>");
+			$filesContainer.append($treeContainer);
+			$filesContainer = $treeContainer;
+		}
 		this.repaintFilesAsTree($filesContainer);
 	}
 	
+	this._expandAll = function() {
+		var _this = this;
+		var tree = $("#filestree").fancytree("getTree");
+		_this._expandDeep(tree.getRootNode());
+	}
+	
+	this._expandDeep = function(node) {
+		var _this = this;
+		node.setExpanded(true).done(function() {
+			node.visit(function(n) {_this._expandDeep(n);});
+		})
+	}
+	
 	this.repaintFilesAsTree = function($container) {
 		$container.empty();
 		var _this = this;
-		var $tree = $("<div>", { "id" : "tree" });
+		var $tree = $("<div>", { "id" : "filestree" });
 		$container.append($tree);
 		
 		var treeModel = [];
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js
index b837d578cac..49905a9d1ab 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js
@@ -455,7 +455,7 @@ function SampleFormView(sampleFormController, sampleFormModel) {
 			this._reloadPreviewImage();
 			
 			// Dataset Viewer
-			this._sampleFormModel.dataSetViewer = new DataSetViewerController("dataSetViewerContainer", profile, this._sampleFormModel.sample, mainController.serverFacade, profile.getDefaultDataStoreURL(), this._sampleFormModel.datasets, false, true);
+			this._sampleFormModel.dataSetViewer = new DataSetViewerController("dataSetViewerContainer", profile, this._sampleFormModel.sample, mainController.serverFacade, profile.getDefaultDataStoreURL(), this._sampleFormModel.datasets, false, false);
 			this._sampleFormModel.dataSetViewer.init();
 		}
 		
-- 
GitLab