From f293400a706542fbc43ee685254b5c119841eccf Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Fri, 28 Feb 2014 15:18:19 +0000
Subject: [PATCH] BIS-675 / SP-1214 : ELN UI - Ask to save changes if work can
 be lost (Ask to save changes on Sample Form + Data Set Form)

SVN: 30796
---
 .../newbrowser/html/js/views/DataSetForm.js   |  2 ++
 .../newbrowser/html/js/views/SampleForm.js    | 20 +++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataSetForm.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataSetForm.js
index 22b44dc2c9f..3b2c20bdc93 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataSetForm.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/DataSetForm.js
@@ -73,10 +73,12 @@ function DataSetForm(serverFacade, containerId, profile, sample, mode) {
 		$dataSetTypeFieldSet.append($('<legend>').text('Type Info'));
 		
 		var $dataSetTypeDropDownObj = this._getDropDownForField('DATASET_TYPE', this.dataSetTypes);
+		
 		$dataSetTypeDropDownObj.change(function() { 
 			localInstance._repaintMetadata(
 					localInstance._getDataSetType($('#DATASET_TYPE').val())
 			);
+			localInstance.isFormDirty = true;
 		});
 		
 		var $dataSetTypeDropDown = $('<div>', { class : 'control-group'});
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 25bbcecc45d..06babf65fc4 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
@@ -537,6 +537,25 @@ function SampleForm(serverFacade, inspector, containerId, profile, sampleTypeCod
 		if (this.mode === SampleFormMode.VIEW) {
 			this.enableEditButtonEvent();
 		}
+		
+		//Events to take care of a dirty form
+		$("#sampleSpaceProject").change(function(event) {
+			localInstance.isFormDirty = true;
+		});
+		$("#sampleCode").change(function(event) {
+			localInstance.isFormDirty = true;
+		});
+		
+		for(var i = 0; i < sampleType.propertyTypeGroups.length; i++) {
+			var propertyTypeGroup = sampleType.propertyTypeGroups[i];
+			for(var j = 0; j < propertyTypeGroup.propertyTypes.length; j++) {
+				var propertyType = propertyTypeGroup.propertyTypes[j];
+				var $field = $("#"+propertyType.code.replace('$','\\$').replace(/\./g,'\\.'));
+				$field.change(function(event) {
+					localInstance.isFormDirty = true;
+				});
+			}
+		}
 	}
 	
 	this.showSamplesWithoutPage = function(event) {
@@ -681,6 +700,7 @@ function SampleForm(serverFacade, inspector, containerId, profile, sampleTypeCod
 			}
 			
 			Util.showSuccess(sampleTypeDisplayName + " " + message, callbackOk);
+			this.isFormDirty = false;
 		} else { //This should never happen
 			Util.showError("Unknown Error.", function() {Util.unblockUI();});
 		}
-- 
GitLab