mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-11-03 19:54:14 +00:00 
			
		
		
		
	Catch JSON exceptions
This commit is contained in:
		@@ -137,10 +137,31 @@ ComunicWeb.common.api = {
 | 
			
		||||
                    },
 | 
			
		||||
                };
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
                //Prepare result
 | 
			
		||||
            else {
 | 
			
		||||
 | 
			
		||||
                //Catch JSON parsing errors
 | 
			
		||||
                try {
 | 
			
		||||
 | 
			
		||||
                    //Parse result
 | 
			
		||||
                    var result = JSON.parse(apiXHR.responseText);
 | 
			
		||||
 | 
			
		||||
                } catch (error) {
 | 
			
		||||
                    
 | 
			
		||||
                    //Report error
 | 
			
		||||
                    ComunicWeb.common.error.syntaxtError(error, apiXHR.responseText);
 | 
			
		||||
 | 
			
		||||
                    //Set arbitray result content
 | 
			
		||||
                    result = {
 | 
			
		||||
                        error : {
 | 
			
		||||
                            code: 1,
 | 
			
		||||
                            message: "Invalid response",
 | 
			
		||||
                        },
 | 
			
		||||
                    };
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
            //We check if we got any error
 | 
			
		||||
            if(result.error){
 | 
			
		||||
                //Log error
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 */
 | 
			
		||||
ComunicWeb.common.error.submitError = function(errorLevel, errorMessage, errorCode, errorData){
 | 
			
		||||
	//Prepare API request
 | 
			
		||||
	var apiURI = "webApp/reportError";
 | 
			
		||||
	/*var apiURI = "webApp/reportError";
 | 
			
		||||
	var params = {
 | 
			
		||||
		"errorLevel": errorLevel,
 | 
			
		||||
		"errorMessage": errorMessage,
 | 
			
		||||
@@ -27,7 +27,7 @@ ComunicWeb.common.error.submitError = function(errorLevel, errorMessage, errorCo
 | 
			
		||||
	nextAction = function(){};
 | 
			
		||||
 | 
			
		||||
	//Send API request
 | 
			
		||||
	ComunicWeb.common.api.makeAPIrequest(apiURI, params, requireLoginToken, nextAction);
 | 
			
		||||
	ComunicWeb.common.api.makeAPIrequest(apiURI, params, requireLoginToken, nextAction);*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -99,3 +99,74 @@ ComunicWeb.common.error.pageNotFound = function(additionnalData, targetElement){
 | 
			
		||||
	//Everything seems to be OK
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Handles and display SyntaxtError
 | 
			
		||||
 * 
 | 
			
		||||
 * @param {SyntaxError} error The error
 | 
			
		||||
 * @param {string} additional Additionnal information to include with
 | 
			
		||||
 * the report
 | 
			
		||||
 */
 | 
			
		||||
ComunicWeb.common.error.syntaxtError = function(error, additional){
 | 
			
		||||
	
 | 
			
		||||
	//Create a modal dialog to report error
 | 
			
		||||
	var dialog = ComunicWeb.common.messages.createDialogSkeleton({
 | 
			
		||||
		type: "danger",
 | 
			
		||||
		title: "An error occurred"
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	//Display modal
 | 
			
		||||
	$(dialog.modal).modal("show");
 | 
			
		||||
 | 
			
		||||
	//Create close modal function
 | 
			
		||||
	var closeModal = function(){
 | 
			
		||||
		$(dialog.modal).modal('hide');
 | 
			
		||||
        emptyElem(dialog.modal);
 | 
			
		||||
        dialog.modal.remove();
 | 
			
		||||
	}
 | 
			
		||||
	dialog.closeModal.onclick = closeModal;
 | 
			
		||||
	dialog.cancelButton.onclick =  closeModal;
 | 
			
		||||
 | 
			
		||||
	//Create error container
 | 
			
		||||
	var errorContainer = createElem2({
 | 
			
		||||
		appendTo: dialog.modalBody,
 | 
			
		||||
		type: "div"
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	//Message
 | 
			
		||||
	createElem2({
 | 
			
		||||
		appendTo: errorContainer,
 | 
			
		||||
		type: "p",
 | 
			
		||||
		innerHTML: "An error has just occured. There are the details of the error. If this error occurs several times, please inform us at contact@communiquons.org ."
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	//Locate error
 | 
			
		||||
	createElem2({
 | 
			
		||||
		appendTo: errorContainer,
 | 
			
		||||
		type: "p",
 | 
			
		||||
		innerHTML: "<b>File:</b> "+error.fileName+" <b>Line:</b> " + error.lineNumber+ " <b>Column:</b> " + error.columnNumber
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	//Error message
 | 
			
		||||
	createElem2({
 | 
			
		||||
		appendTo: errorContainer,
 | 
			
		||||
		type: "p",
 | 
			
		||||
		innerHTML: "<b>Message:</b> " + error.message,
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	//Stack trace
 | 
			
		||||
	createElem2({
 | 
			
		||||
		appendTo: errorContainer,
 | 
			
		||||
		type: "pre",
 | 
			
		||||
		innerHTML: error.stack
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	//Check for additional information
 | 
			
		||||
	if(additional){
 | 
			
		||||
		createElem2({
 | 
			
		||||
			appendTo: errorContainer,
 | 
			
		||||
			type: "pre",
 | 
			
		||||
			innerHTML: "Additionnal information: \n " + additional
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -104,6 +104,11 @@ var ComunicWeb = {
 | 
			
		||||
			 */
 | 
			
		||||
			createLoadingCallout: function(target){},
 | 
			
		||||
 | 
			
		||||
			/**
 | 
			
		||||
			 * Create dialog skeleton
 | 
			
		||||
			 */
 | 
			
		||||
			createDialogSkeleton: function(info){},
 | 
			
		||||
 | 
			
		||||
			/**
 | 
			
		||||
			 * Create and display a confirmation dialog
 | 
			
		||||
			 */
 | 
			
		||||
@@ -133,6 +138,11 @@ var ComunicWeb = {
 | 
			
		||||
			 * Handle a 404 not found error
 | 
			
		||||
			 */
 | 
			
		||||
			pageNotFound: function(additionnalData, targetElement){},
 | 
			
		||||
 | 
			
		||||
			/**
 | 
			
		||||
			 * Handles and display SyntaxtError
 | 
			
		||||
			 */
 | 
			
		||||
			syntaxtError: function(error, additional){},
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
 
 | 
			
		||||
@@ -57,6 +57,93 @@ ComunicWeb.common.messages.createLoadingCallout = function(target){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create dialog skeleton
 | 
			
		||||
 * 
 | 
			
		||||
 * @param {object} info Information about the callout to create
 | 
			
		||||
 * @argument {string} type The type of modal
 | 
			
		||||
 * @param {string} title The title of the modal
 | 
			
		||||
 * @return {object} Information about the created dialog
 | 
			
		||||
 */
 | 
			
		||||
ComunicWeb.common.messages.createDialogSkeleton = function(info){
 | 
			
		||||
 | 
			
		||||
    data = {};
 | 
			
		||||
 | 
			
		||||
    //Get modal type
 | 
			
		||||
    var modalType = info.type ? info.type : "default";
 | 
			
		||||
 | 
			
		||||
    //Get modal title
 | 
			
		||||
    var modalTitle = info.title ? info.title : "";
 | 
			
		||||
 | 
			
		||||
    //Create a modal root
 | 
			
		||||
    data.modal = createElem2({
 | 
			
		||||
        type: "div",
 | 
			
		||||
        class: "modal modal-" + modalType
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    var modalDialog = createElem2({
 | 
			
		||||
        appendTo: data.modal,
 | 
			
		||||
        type: "div",
 | 
			
		||||
        class: "modal-dialog"
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    data.modalContent = createElem2({
 | 
			
		||||
        appendTo: modalDialog,
 | 
			
		||||
        type: "div",
 | 
			
		||||
        class: "modal-content",
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    //Modal header
 | 
			
		||||
    data.modalHeader = createElem2({
 | 
			
		||||
        appendTo: data.modalContent,
 | 
			
		||||
        type: "div",
 | 
			
		||||
        class: "modal-header"
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    data.closeModal = createElem2({
 | 
			
		||||
        appendTo: data.modalHeader,
 | 
			
		||||
        type: "button",
 | 
			
		||||
        class: "close",
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    createElem2({
 | 
			
		||||
        appendTo: data.closeModal,
 | 
			
		||||
        type: "span",
 | 
			
		||||
        innerHTML: "x"
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    //Modal title
 | 
			
		||||
    data.modalTitle = createElem2({
 | 
			
		||||
        appendTo: data.modalHeader,
 | 
			
		||||
        type: "h4",
 | 
			
		||||
        class: "modal-title",
 | 
			
		||||
        innerHTML: modalTitle
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    //Modal body
 | 
			
		||||
    data.modalBody = createElem2({
 | 
			
		||||
        appendTo: data.modalContent,
 | 
			
		||||
        type: "div",
 | 
			
		||||
        class: "modal-body",
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    //Modal footer
 | 
			
		||||
    data.modalFooter = createElem2({
 | 
			
		||||
        appendTo: data.modalContent,
 | 
			
		||||
        type: "div",
 | 
			
		||||
        class: "modal-footer"
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    data.cancelButton = createElem2({
 | 
			
		||||
        appendTo: data.modalFooter,
 | 
			
		||||
        type: "button",
 | 
			
		||||
        class: "btn btn-default",
 | 
			
		||||
        innerHTML: "Cancel"
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    return data;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Create a confirmation dialog
 | 
			
		||||
 * 
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user