From 7efbf7ceedc4529ff3a163fa6bbeaab9686e18ac Mon Sep 17 00:00:00 2001 From: juanf <juanf> Date: Tue, 22 Jul 2014 11:25:24 +0000 Subject: [PATCH] SSDM-623: Copy parents and children when duplicating subexperiments/samples (ongoing work). SVN: 32125 --- .../1/as/webapps/newbrowser/html/index.html | 6 ++-- .../newbrowser/html/js/views/SampleForm.js | 28 +++++++++++++++---- .../StickersNavigatorController.js} | 2 +- .../StickersNavigatorModel.js} | 2 +- .../StickersNavigatorView.js} | 2 +- .../reporting-plugins/newbrowserapi/script.py | 16 +++++++++++ 6 files changed, 44 insertions(+), 12 deletions(-) rename plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/{Examine/ExamineController.js => StickersNavigator/StickersNavigatorController.js} (93%) rename plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/{Examine/ExamineModel.js => StickersNavigator/StickersNavigatorModel.js} (94%) rename plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/{Examine/ExamineView.js => StickersNavigator/StickersNavigatorView.js} (99%) diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html index 24cfb9b4102..e813714558b 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html @@ -99,9 +99,9 @@ <script type="text/javascript" src="./js/views/StorageManager/widgets/GridModel.js"></script> <script type="text/javascript" src="./js/views/StorageManager/widgets/GridView.js"></script> <!-- - <script type="text/javascript" src="./js/views/Examine/ExamineController.js"></script> - <script type="text/javascript" src="./js/views/Examine/ExamineModel.js"></script> - <script type="text/javascript" src="./js/views/Examine/ExamineView.js"></script> + <script type="text/javascript" src="./js/views/StickersNavigator/StickersNavigatorController.js"></script> + <script type="text/javascript" src="./js/views/StickersNavigator/StickersNavigatorModel.js"></script> + <script type="text/javascript" src="./js/views/StickersNavigator/StickersNavigatorView.js"></script> --> <script type="text/javascript" src="./js/views/SpaceForm/SpaceFormController.js"></script> diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleForm.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleForm.js index b659e5be264..287007aa069 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleForm.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleForm.js @@ -300,7 +300,17 @@ function SampleForm(serverFacade, inspector, containerId, profile, sampleTypeCod $( "#copyButton" ).click(function() { var component = "<div class='form-horizontal'>" component += "<legend>Duplicate Entity</legend>"; - component += "<span class='glyphicon glyphicon-warning-sign'></span> The duplicate will not have parents or children: <br><br>"; + component += "<div class='form-inline'>"; + component += "<div class='form-group col-md-9'>"; + component += "<label class='control-label col-md-2'>Options </label>"; + component += "<div class='" + localReference.controlColumnClass + "'>"; + component += "<span class='checkbox'><label><input type='checkbox' id='linkParentsOnCopy' checked> Link Parents </label></span>"; + component += " "; + component += "<span class='checkbox'><label><input type='checkbox' id='copyChildrenOnCopy' checked> Copy Children </label></span>"; + component += "</div>"; + component += "</div>"; + component += "</div>"; + component += "<br /><br />"; component += "<div class='form-group col-md-9'>"; component += "<label class='control-label " + localReference.labelColumnClass+ "'>Code (*):</label>"; component += "<div class='" + localReference.controlColumnClass + "'>"; @@ -324,10 +334,12 @@ function SampleForm(serverFacade, inspector, containerId, profile, sampleTypeCod $("#copyAccept").on("click", function(event) { var newSampleCodeForCopy = $("#newSampleCodeForCopy"); + var linkParentsOnCopy = $("#linkParentsOnCopy")[0].checked; + var copyChildrenOnCopy = $("#copyChildrenOnCopy")[0].checked; var isValid = newSampleCodeForCopy[0].checkValidity(); if(isValid) { var newSampleCodeForCopyValue = newSampleCodeForCopy.val(); - localReference.createSample(newSampleCodeForCopyValue); + localReference.createSample(newSampleCodeForCopyValue, linkParentsOnCopy, copyChildrenOnCopy); Util.unblockUI(); } else { Util.showError("Invalid code.", function() {}, true); @@ -658,7 +670,7 @@ function SampleForm(serverFacade, inspector, containerId, profile, sampleTypeCod } } - this.createSample = function(isCopyWithNewCode) { + this.createSample = function(isCopyWithNewCode, linkParentsOnCopy, copyChildrenOnCopy) { Util.blockUI(); var localReference = this; @@ -798,10 +810,14 @@ function SampleForm(serverFacade, inspector, containerId, profile, sampleTypeCod }; if(isCopyWithNewCode) { - parameters["method"] = "insertSample"; + parameters["method"] = "copySample"; parameters["sampleCode"] = isCopyWithNewCode; - parameters["sampleParents"] = []; - parameters["sampleChildren"] = []; + if(!linkParentsOnCopy) { + parameters["sampleParents"] = []; + } + if(!copyChildrenOnCopy) { + parameters["sampleChildren"] = []; + } parameters["sampleChildrenNew"] = []; parameters["sampleChildrenRemoved"] = []; } diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/Examine/ExamineController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/StickersNavigator/StickersNavigatorController.js similarity index 93% rename from plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/Examine/ExamineController.js rename to plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/StickersNavigator/StickersNavigatorController.js index 7187e3e5867..3182ee2fd5d 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/Examine/ExamineController.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/StickersNavigator/StickersNavigatorController.js @@ -14,7 +14,7 @@ * limitations under the License. */ -function ExamineController(mainController) { +function StickersNavigatorController(mainController) { this._mainController = mainController; this._examineModel = new ExamineModel(); this._examineView = new ExamineView(this._examineModel); diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/Examine/ExamineModel.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/StickersNavigator/StickersNavigatorModel.js similarity index 94% rename from plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/Examine/ExamineModel.js rename to plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/StickersNavigator/StickersNavigatorModel.js index a2886ae057a..a20f4483db6 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/Examine/ExamineModel.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/StickersNavigator/StickersNavigatorModel.js @@ -14,6 +14,6 @@ * limitations under the License. */ -function ExamineModel() { +function StickersNavigatorModel() { this.inspectedEntities = new Array(); } \ No newline at end of file diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/Examine/ExamineView.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/StickersNavigator/StickersNavigatorView.js similarity index 99% rename from plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/Examine/ExamineView.js rename to plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/StickersNavigator/StickersNavigatorView.js index e52ad94f925..e691e597459 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/Examine/ExamineView.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/StickersNavigator/StickersNavigatorView.js @@ -14,7 +14,7 @@ * limitations under the License. */ -function ExamineView(examineModel) { +function StickersNavigatorView(examineModel) { this._examineModel = examineModel; this.repaint = function($container) { diff --git a/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py b/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py index c07d2a143a2..cf85511d05c 100644 --- a/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py +++ b/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py @@ -37,6 +37,8 @@ def process(tr, parameters, tableBuilder): if method == "updateExperiment": isOk = insertUpdateExperiment(tr, parameters, tableBuilder); + if method == "copySample": + isOk = copySample(tr, parameters, tableBuilder); if method == "insertSample": isOk = insertUpdateSample(tr, parameters, tableBuilder); if method == "updateSample": @@ -148,6 +150,20 @@ def insertDataSet(tr, parameters, tableBuilder): #Return from the call return True; +def copySample(tr, parameters, tableBuilder): + #Store Children to copy later + sampleChildren = parameters.get("sampleChildren"); #List<String> Identifiers are in SPACE/CODE format + parameters.put("sampleChildren", []); #List<String> Identifiers are in SPACE/CODE format + + #Create new Sample + parameters.put("method", "insertSample"); #List<String> Identifiers are in SPACE/CODE format + insertUpdateSample(tr, parameters, tableBuilder); + + #Copy children and attach to Sample + + + return True; + def insertUpdateSample(tr, parameters, tableBuilder): #Mandatory parameters -- GitLab