mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-22 20:19:21 +00:00
Catch JSON exceptions
This commit is contained in:
parent
1e2637ab48
commit
e54998128f
@ -137,9 +137,30 @@ ComunicWeb.common.api = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
//Prepare result
|
|
||||||
var result = JSON.parse(apiXHR.responseText);
|
//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
|
//We check if we got any error
|
||||||
if(result.error){
|
if(result.error){
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
ComunicWeb.common.error.submitError = function(errorLevel, errorMessage, errorCode, errorData){
|
ComunicWeb.common.error.submitError = function(errorLevel, errorMessage, errorCode, errorData){
|
||||||
//Prepare API request
|
//Prepare API request
|
||||||
var apiURI = "webApp/reportError";
|
/*var apiURI = "webApp/reportError";
|
||||||
var params = {
|
var params = {
|
||||||
"errorLevel": errorLevel,
|
"errorLevel": errorLevel,
|
||||||
"errorMessage": errorMessage,
|
"errorMessage": errorMessage,
|
||||||
@ -27,7 +27,7 @@ ComunicWeb.common.error.submitError = function(errorLevel, errorMessage, errorCo
|
|||||||
nextAction = function(){};
|
nextAction = function(){};
|
||||||
|
|
||||||
//Send API request
|
//Send API request
|
||||||
ComunicWeb.common.api.makeAPIrequest(apiURI, params, requireLoginToken, nextAction);
|
ComunicWeb.common.api.makeAPIrequest(apiURI, params, requireLoginToken, nextAction);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -98,4 +98,75 @@ ComunicWeb.common.error.pageNotFound = function(additionnalData, targetElement){
|
|||||||
|
|
||||||
//Everything seems to be OK
|
//Everything seems to be OK
|
||||||
return true;
|
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){},
|
createLoadingCallout: function(target){},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create dialog skeleton
|
||||||
|
*/
|
||||||
|
createDialogSkeleton: function(info){},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create and display a confirmation dialog
|
* Create and display a confirmation dialog
|
||||||
*/
|
*/
|
||||||
@ -133,6 +138,11 @@ var ComunicWeb = {
|
|||||||
* Handle a 404 not found error
|
* Handle a 404 not found error
|
||||||
*/
|
*/
|
||||||
pageNotFound: function(additionnalData, targetElement){},
|
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
|
* Create a confirmation dialog
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user