1 if (typeof jsf != 'undefined') { 2 (function(jQuery, richfaces, jsf) { 3 4 //JSF log adapter 5 var identifyElement = function(elt) { 6 var identifier = '<' + elt.tagName.toLowerCase(); 7 var e = jQuery(elt); 8 if (e.attr('id')) { 9 identifier += (' id=' + e.attr('id')); 10 } 11 if (e.attr('class')) { 12 identifier += (' class=' + e.attr('class')); 13 } 14 15 identifier += ' ...>'; 16 17 return identifier; 18 } 19 20 var formatPartialResponseElement = function(logElement, responseElement) { 21 var change = jQuery(responseElement); 22 23 logElement.append("Element <b>" + responseElement.nodeName + "</b>"); 24 if (change.attr("id")) { 25 logElement.append(document.createTextNode(" for id=" + change.attr("id"))); 26 } 27 28 jQuery(document.createElement("br")).appendTo(logElement); 29 jQuery("<span style='color:dimgray'></span>").appendTo(logElement).text(change.toXML()); 30 jQuery(document.createElement("br")).appendTo(logElement); 31 } 32 33 var formatPartialResponse = function(partialResponse) { 34 var logElement = jQuery(document.createElement("span")); 35 36 partialResponse.children().each(function() { 37 var responseElement = jQuery(this); 38 if (responseElement.is('changes')) { 39 logElement.append("Listing content of response <b>changes</b> element:<br />"); 40 responseElement.children().each(function() { 41 formatPartialResponseElement(logElement, this); 42 }); 43 } else { 44 formatPartialResponseElement(logElement, this); 45 } 46 }); 47 48 return logElement; 49 } 50 51 var jsfAjaxLogAdapter = function(data) { 52 try { 53 var log = richfaces.log; 54 55 var source = data.source; 56 var type = data.type; 57 58 var responseCode = data.responseCode; 59 var responseXML = data.responseXML; 60 var responseText = data.responseText; 61 62 if (type != 'error') { 63 log.info("Received '" + type + "' event from " + identifyElement(source)); 64 65 if (type == 'beforedomupdate') { 66 var partialResponse; 67 68 if (responseXML) { 69 partialResponse = jQuery(responseXML).children("partial-response"); 70 } 71 72 var responseTextEntry = jQuery("<span>Server returned responseText: </span><span style='color:dimgray'></span>").eq(1).text(responseText).end(); 73 74 if (partialResponse && partialResponse.length) { 75 log.debug(responseTextEntry); 76 log.info(formatPartialResponse(partialResponse)); 77 } else { 78 log.info(responseTextEntry); 79 } 80 } 81 } else { 82 var status = data.status; 83 log.error("Received '" + type + '@' + status + "' event from " + identifyElement(source)); 84 log.error("[" + data.responseCode + "] " + data.errorName + ": " + data.errorMessage); 85 } 86 } catch (e) { 87 //ignore logging errors 88 } 89 }; 90 91 var eventsListener = richfaces.createJSFEventsAdapter({ 92 begin: jsfAjaxLogAdapter, 93 beforedomupdate: jsfAjaxLogAdapter, 94 success: jsfAjaxLogAdapter, 95 complete: jsfAjaxLogAdapter, 96 error: jsfAjaxLogAdapter 97 }); 98 99 jsf.ajax.addOnEvent(eventsListener); 100 jsf.ajax.addOnError(eventsListener); 101 // 102 }(jQuery, RichFaces, jsf)); 103 };