src/pyams_skin/resources/js/myams-error.js
changeset 557 bca7a7e058a3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-error.js	Thu Feb 13 11:43:31 2020 +0100
@@ -0,0 +1,73 @@
+/**
+ * MyAMS errors management
+ */
+(function($, globals) {
+
+	var ams = globals.MyAMS;
+
+	ams.error = {
+
+		/**
+		 * Default JQuery AJAX error handler
+		 */
+		ajax: function(event, response, request, error) {
+			/* user shouldn't be notified of aborted requests */
+			if (error === 'abort') {
+				return;
+			}
+			if (response && response.statusText && response.statusText.toUpperCase() === 'OK') {
+				return;
+			}
+			response = ams.ajax && ams.ajax.getResponse(response);
+			if (response) {
+				if (response.contentType === 'json') {
+					ams.ajax.handleJSON(response.data);
+				} else {
+					var title = error || event.statusText || event.type;
+					var message = response.responseText;
+					ams.skin && ams.skin.messageBox('error', {
+						title: ams.i18n.ERROR_OCCURED,
+						content: '<h4>' + title + '</h4><p>' + (message || '') + '</p>',
+						icon: 'fa fa-warning animated shake',
+						timeout: 10000
+					});
+				}
+				if (console) {
+					console.error && console.error(event);
+					console.debug && console.debug(response);
+				}
+			} else {
+				console.error && console.error("Missing MyAMS AJAX module!")
+			}
+		},
+
+		/**
+		 * Show AJAX error
+		 */
+		show: function(request, status, error) {
+			if (!error) {
+				return;
+			}
+			var response = ams.ajax && ams.ajax.getResponse(request);
+			if (response) {
+				if (response.contentType === 'json') {
+					ams.ajax.handleJSON(response.data);
+				} else {
+					ams.skin.messageBox('error', {
+						title: ams.i18n.ERRORS_OCCURED,
+						content: '<h4>' + status + '</h4><p>' + error + '</p>',
+						icon: "fa fa-warning animated shake",
+						timeout: 10000
+					});
+				}
+				if (console) {
+					console.error && console.error(error);
+					console.debug && console.debug(request);
+				}
+			} else {
+				console.error && console.error("Missing MyAMS AJAX module!")
+			}
+		}
+	};
+
+})(jQuery, this);