src/pyams_skin/resources/js/myams.js
changeset 51 b06eea7cafc2
parent 49 58a1fc0b50a7
child 53 2ec1c452511a
--- a/src/pyams_skin/resources/js/myams.js	Tue Apr 14 16:40:13 2015 +0200
+++ b/src/pyams_skin/resources/js/myams.js	Wed Apr 15 15:41:45 2015 +0200
@@ -1594,6 +1594,20 @@
 	MyAMS.dialog = {
 
 		/**
+		 * List of registered 'hide' callbacks
+		 */
+		_hide_callbacks: [],
+
+		/**
+		 * Register a callback which should be called when a dialog is closed
+		 */
+		registerHideCallback: function(callback) {
+			var callbacks = ams.dialog._hide_callbacks;
+			if (callbacks.indexOf(callback) < 0)
+				callbacks.push(callback);
+		},
+
+		/**
 		 * Modal dialog opener
 		 */
 		open: function(source, options) {
@@ -1745,7 +1759,10 @@
 		 */
 		hidden: function(e) {
 			var modal = e.target;
-			$('.datepicker, .timepicker, .datetimepicker', modal).datetimepicker('destroy');
+			var callbacks = ams.dialog._hide_callbacks;
+			for (var index in callbacks) {
+				callbacks[index].call(modal);
+			}
 		}
 	};
 
@@ -1836,6 +1853,11 @@
 						context: result.context
 					});
 			}
+		},
+
+		/** Datetimepicker dialog cleaner callback */
+		datetimepickerDialogHiddenCallback: function() {
+			$('.datepicker, .timepicker, .datetimepicker', this).datetimepicker('destroy');
 		}
 	};
 
@@ -2375,6 +2397,7 @@
 								   function(first_load) {
 										if (first_load) {
 											ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker');
+											ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback);
 										}
 										datepickers.each(function() {
 											var input = $(this);
@@ -2406,6 +2429,7 @@
 								   function(first_load) {
 										if (first_load) {
 											ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker');
+											ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback);
 										}
 										datetimepickers.each(function() {
 											var input = $(this);
@@ -2437,6 +2461,7 @@
 								   function(first_load) {
 										if (first_load) {
 											ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker');
+											ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback);
 										}
 										timepickers.each(function() {
 											var input = $(this);