diff --git a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormController.js b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormController.js index 04d58540d748587f5d12ba8aefc0a9644b1ece1e..a2833be7517ae94b83ad8ddee5cfdbe115db96c6 100644 --- a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormController.js +++ b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormController.js @@ -16,14 +16,14 @@ function DataSetFormController() { this._container = null; - this._sample = null; + this._sampleOrExperiment = null; this._dataSetFormModel = null; this._dataSetFormView = null; - this.init = function($container, sample) { + this.init = function($container, sampleOrExperiment) { this._container = $container; - this._sample = sample; - this._dataSetFormModel = new DataSetFormModel(sample); + this._sampleOrExperiment = sampleOrExperiment; + this._dataSetFormModel = new DataSetFormModel(sampleOrExperiment); this._dataSetFormView = new DataSetFormView(this, this._dataSetFormModel); var _this = this; @@ -38,17 +38,6 @@ function DataSetFormController() { }); } - this._addCommentsWidget = function($container) { - var commentsController = new CommentsController(this._dataSetFormModel.dataSet, this._dataSetFormModel.mode, this._dataSetFormModel); - if(this._dataSetFormModel.mode !== FormMode.VIEW || - this._dataSetFormModel.mode === FormMode.VIEW && !commentsController.isEmpty()) { - commentsController.init($container); - return true; - } else { - return false; - } - } - this._getDataSetType = function(typeCode) { for(var i = 0; i < this._dataSetFormModel.dataSetTypes.length; i++) { if(this._dataSetFormModel.dataSetTypes[i].code === typeCode) { @@ -81,15 +70,14 @@ function DataSetFormController() { } var method = "insertDataSet"; - var sampleIdentifier = this._dataSetFormModel.sample.identifier; var dataSetTypeCode = $('#DATASET_TYPE').val(); + var parameters = { //API Method "sessionToken" : openBIS.getSession(), "method" : method, //Identification Info - "sampleIdentifier" : sampleIdentifier, //Use for creation "dataSetType" : dataSetTypeCode, "filenames" : _this._dataSetFormModel.files, "folderName" : folderName, @@ -100,6 +88,13 @@ function DataSetFormController() { "sessionID" : openBIS.getSession(), "openBISURL" : openBIS._internal.openbisUrl }; + + var sampleOrExperimentIdentifier = this._dataSetFormModel.sampleOrExperiment.identifier; + if(sampleOrExperimentIdentifier.split("/").length === 3) { + parameters["sampleIdentifier"] = sampleOrExperimentIdentifier; + } else if(sampleOrExperimentIdentifier.split("/").length === 4) { + parameters["experimentIdentifier"] = sampleOrExperimentIdentifier; + } if(this._dataSetFormModel.dataStores.length > 0) { openBIS.createReportFromAggregationService(this._dataSetFormModel.dataStores[0].code, "dataset-uploader-api", parameters, function(response) { @@ -122,7 +117,7 @@ function DataSetFormController() { } else if (response.result.columns[0].title === "STATUS" && response.result.rows[0][0].value === "OK") { //Success Case Util.showSuccess("DataSet Created.", function() { Util.unblockUI(); - _this.init(_this._container, _this._sample); + _this.init(_this._container, _this._sampleOrExperiment); }); } else { //This should never happen diff --git a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormModel.js b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormModel.js index fa5546122edae4b68705801ceef0d5302788058f..3a63233a3df0784ab7bd51026c75f5071fee85a1 100644 --- a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormModel.js +++ b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormModel.js @@ -14,10 +14,10 @@ * limitations under the License. */ -function DataSetFormModel(sample) { +function DataSetFormModel(sampleOrExperiment) { this.isFormDirty = false; - this.sample = sample; + this.sampleOrExperiment = sampleOrExperiment; this.dataSet = { properties : {} }; this.dataStores = []; diff --git a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormView.js b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormView.js index 6dc8336bb8554f0638cff25f8a5b77a1d81eed97..d87061a8b0adbd18bc8394a838ee36bb1d612a31 100644 --- a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormView.js +++ b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormView.js @@ -67,10 +67,7 @@ function DataSetFormView(dataSetFormController, dataSetFormModel) { ); $dataSetTypeFieldSet.append($dataSetTypeDropDown); - var owner = this._dataSetFormModel.sample.identifier; - if(this._dataSetFormModel.sample.experimentIdentifierOrNull) { - owner = this._dataSetFormModel.sample.experimentIdentifierOrNull + "/" + this._dataSetFormModel.sample.code; - } + var owner = this._dataSetFormModel.sampleOrExperiment.identifier; $dataSetTypeFieldSet.append(FormUtil.getFieldForTextWithLabel(owner, "Sample")); // diff --git a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/plugin.properties b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/plugin.properties index 7879502e855bf271bf249e8738c2a5b84f784aee..4d322c83fcddb970ea875c960b73f6514c1cf0b0 100644 --- a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/plugin.properties +++ b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/plugin.properties @@ -1,4 +1,5 @@ webapp-folder = html -openbisui-contexts = sample-details-view +openbisui-contexts = sample-details-view, experiment-details-view sample-entity-types = .* +experiment-entity-types = .* label = DataSet Uploader \ No newline at end of file diff --git a/openbis/source/core-plugins/dataset-uploader/1/dss/reporting-plugins/dataset-uploader-api/dataset-uploader-api.py b/openbis/source/core-plugins/dataset-uploader/1/dss/reporting-plugins/dataset-uploader-api/dataset-uploader-api.py index 33efe8c629c887e53d3f555d6dd994ff0fe2f442..03c1d474fcdc46b710c52dc87ddac88f94ff902b 100644 --- a/openbis/source/core-plugins/dataset-uploader/1/dss/reporting-plugins/dataset-uploader-api/dataset-uploader-api.py +++ b/openbis/source/core-plugins/dataset-uploader/1/dss/reporting-plugins/dataset-uploader-api/dataset-uploader-api.py @@ -92,6 +92,7 @@ def getThreadProperties(transaction): def insertDataSet(tr, parameters, tableBuilder): #Mandatory parameters sampleIdentifier = parameters.get("sampleIdentifier"); #String + experimentIdentifier = parameters.get("experimentIdentifier"); #String dataSetType = parameters.get("dataSetType"); #String folderName = parameters.get("folderName"); #String fileNames = parameters.get("filenames"); #List<String> @@ -99,10 +100,14 @@ def insertDataSet(tr, parameters, tableBuilder): metadata = parameters.get("metadata"); #java.util.LinkedHashMap<String, String> where the key is the name #Create Dataset - dataSetSample = getSampleByIdentifierForUpdate(tr, sampleIdentifier); dataSet = tr.createNewDataSet(dataSetType); - dataSet.setSample(dataSetSample); - + if sampleIdentifier is not None: + dataSetSample = getSampleByIdentifierForUpdate(tr, sampleIdentifier); + dataSet.setSample(dataSetSample); + elif experimentIdentifier is not None: + dataSetExperiment = tr.getExperimentForUpdate(experimentIdentifier); + dataSet.setExperiment(dataSetExperiment); + #Assign Data Set properties for key in metadata.keySet(): propertyValue = unicode(metadata[key]);