From 7877f349ab60802efb99e11a988c7ca4feec76e1 Mon Sep 17 00:00:00 2001 From: juanf <juanf> Date: Tue, 29 Sep 2015 09:17:15 +0000 Subject: [PATCH] SSDM-2450 : Add move option, to move samples between experiments/projects (ongoing work) SVN: 34729 --- .../html/js/controllers/MainController.js | 12 +++++- .../webapps/eln-lims/html/js/util/FormUtil.js | 19 ++++++--- .../js/views/DataGrid/SampleDataGridUtil.js | 4 +- .../widgets/MoveSampleController.js | 6 +-- .../SampleTable/widgets/MoveSampleModel.js | 3 +- .../SampleTable/widgets/MoveSampleView.js | 40 ++++++++++++++++--- 6 files changed, 67 insertions(+), 17 deletions(-) diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js index 129b22c0d7c..f126c09b890 100644 --- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js +++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js @@ -50,7 +50,12 @@ function MainController(profile) { //Others this.currentView = null; - + //Refresh Functionality + this.lastViewChange = null; + this.lastArg = null; + this.refreshView = function() { + this.changeView(this.lastViewChange, this.lastArg); + } // // Validates and enters the app // @@ -395,6 +400,11 @@ function MainController(profile) { var menuUniqueId = this.sideMenu.getCurrentNodeId(); var url = Util.getURLFor(menuUniqueId, newViewChange, arg); history.pushState(null, "", url); //History Push State + // + // Refresh Functionality + // + this.lastViewChange = newViewChange; + this.lastArg = arg; } // diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js index d60803b58f5..fc482f16bfe 100644 --- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js +++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js @@ -243,7 +243,7 @@ var FormUtil = new function() { $component.attr('required', ''); } - $component.append($("<option>").attr('value', '').attr('selected', '').text('')); + $component.append($("<option>").attr('value', '').attr('selected', '').text('Select an experiment type')); for(var i = 0; i < experimentTypes.length; i++) { var experimentType = experimentTypes[i]; if(profile.isExperimentTypeHidden(experimentType.code)) { @@ -320,7 +320,7 @@ var FormUtil = new function() { return $component; } - this.getProjectAndExperimentsDropdown = function(withProjects, withExperiments, callbackForComponent) { + this.getProjectAndExperimentsDropdown = function(withProjects, withExperiments, isRequired, callbackForComponent) { mainController.serverFacade.listSpacesWithProjectsAndRoleAssignments(null, function(dataWithSpacesAndProjects) { var spaces = dataWithSpacesAndProjects.result; var projectsToUse = []; @@ -354,9 +354,18 @@ var FormUtil = new function() { // // var $component = $("<select>", { class : 'form-control'}); - $component.attr('required', ''); - - $component.append($("<option>").attr('value', '').attr('selected', '').attr('disabled', '').text('')); + if(isRequired) { + $component.attr('required', ''); + } + var placeHolder = ""; + if(withProjects && withExperiments) { + placeHolder = "Select a project or experiment"; + } else if(withProjects) { + placeHolder = "Select a project"; + } else if(withExperiments) { + placeHolder = "Select an experiment"; + } + $component.append($("<option>").attr('value', '').attr('selected', '').attr('disabled', '').text(placeHolder)); for(var pIdx = 0; pIdx < projectsToUse.length; pIdx++) { var project = projectsToUse[pIdx]; var projectIdentifier = "/" + project.spaceCode + "/" + project.code; diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/SampleDataGridUtil.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/SampleDataGridUtil.js index d4333450c81..6dc00319936 100644 --- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/SampleDataGridUtil.js +++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/SampleDataGridUtil.js @@ -238,7 +238,9 @@ var SampleDataGridUtil = new function() { var $openHierarchy = $("<li>", { 'role' : 'presentation' }).append($("<a>", {'title' : 'Move'}).append("Move")); $openHierarchy.click(function(e) { - var moveSampleController = new MoveSampleController(data.permId) + var moveSampleController = new MoveSampleController(data.permId, function() { + mainController.refreshView(); + }); moveSampleController.init(); }); $list.append($openHierarchy); diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleController.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleController.js index 6fd34276528..ddcda0b2423 100644 --- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleController.js +++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleController.js @@ -14,8 +14,8 @@ * limitations under the License. */ -function MoveSampleController(samplePermId) { - this._moveSampleModel = new MoveSampleModel(samplePermId); +function MoveSampleController(samplePermId, successAction) { + this._moveSampleModel = new MoveSampleModel(samplePermId, successAction); this._moveSampleView = new MoveSampleView(this, this._moveSampleModel); this.init = function() { @@ -38,7 +38,7 @@ function MoveSampleController(samplePermId) { this._moveSampleModel.experimentIdentifier, this._moveSampleModel.experimentType, function(isOK) { if(isOK) { - Util.showSuccess("Sample " + _this._moveSampleModel.sample.identifier + " moved to " + _this._moveSampleModel.experimentIdentifier, function() { Util.unblockUI(); }); + Util.showSuccess("Sample " + _this._moveSampleModel.sample.identifier + " moved to " + _this._moveSampleModel.experimentIdentifier, function() { Util.unblockUI(); if(_this._moveSampleModel.successAction) { _this._moveSampleModel.successAction(); } }); } else { Util.showError("Sample " + _this._moveSampleModel.sample.identifier + " failed " + _this._moveSampleModel.experimentIdentifier, function() {}); } diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleModel.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleModel.js index b46ede9a9fd..10c5aec8fa7 100644 --- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleModel.js +++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleModel.js @@ -14,8 +14,9 @@ * limitations under the License. */ -function MoveSampleModel(samplePermId) { +function MoveSampleModel(samplePermId, successAction) { this.samplePermId = samplePermId; + this.successAction = successAction; this.sample = null; this.isNewExperiment = null; this.experimentIdentifier = null; diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleView.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleView.js index 0b40b6bca94..6e44df00b67 100644 --- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleView.js +++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleTable/widgets/MoveSampleView.js @@ -66,23 +66,51 @@ function MoveSampleView(moveSampleController, moveSampleModel) { } this.repaintNewExperiment = function() { + var _this = this; $experimentSection.empty(); - $experimentSection.append("Not Supported Yet"); + FormUtil.getProjectAndExperimentsDropdown(true, false, true, function($dropdown) { + //Fields + var $expTypeField = FormUtil.getExperimentTypeDropdown(null, true); + var $expNameField = FormUtil._getInputField('text', null, 'Future Experiment Name', null, true); + + //Events + var newExpEvent = function(event){ + var valueProject = $dropdown.val(); + var valueExperiment = $expNameField.val(); + _this._moveSampleModel.experimentIdentifier = valueProject + "/" + valueExperiment; + }; + var newTypeEVent = function(event) { + var value = $(event.target).val(); + _this._moveSampleModel.experimentType = value; + }; + + //Attach Events + $dropdown.change(newExpEvent); + $expNameField.keyup(newExpEvent); + $expTypeField.change(newTypeEVent); + + //Attach Fields + $experimentSection.append(FormUtil.getFieldForComponentWithLabel($dropdown, "Future Project")) + .append(FormUtil.getFieldForComponentWithLabel($expTypeField, "Future Experiment Type")) + .append(FormUtil.getFieldForComponentWithLabel($expNameField, "Future Experiment Name")); + }); + + + } this.repaintExistingExperiment = function() { var _this = this; $experimentSection.empty(); - var $expProjDropdown = $("<div>"); - $experimentSection.append(FormUtil.getFieldForComponentWithLabel($expProjDropdown, "Future Experiment")); - FormUtil.getProjectAndExperimentsDropdown(false, true, function($dropdown) { + FormUtil.getProjectAndExperimentsDropdown(false, true, true, function($dropdown) { + //Events $dropdown.change(function(event){ var value = $(event.target).val(); _this._moveSampleModel.experimentIdentifier = value; }); - $expProjDropdown.append($dropdown); + //Attach Fields + $experimentSection.append(FormUtil.getFieldForComponentWithLabel($dropdown, "Future Experiment")); }); - } } \ No newline at end of file -- GitLab