declare let Ladda:any; declare var rnErrorResolver; class ErrorResolver{ public analyzeButton; constructor(){ this.analyzeButton=Ladda.create( document.querySelector( '#analyze' )) ; jQuery('.issueType').change((e)=>{ if(jQuery(e.currentTarget).val()=='order') { jQuery('#orderDetail').slideDown(200,()=>{jQuery('#orderNumber').focus();}); this.CheckOrderNumber(); }else{ jQuery('#orderDetail').slideUp(); jQuery('#analyze').slideDown(); } }); jQuery('#orderNumber').on('input',()=>{ this.CheckOrderNumber(); }); jQuery('#analyze').click(()=>{this.Analyze();}) } private CheckOrderNumber() { if( jQuery('#orderNumber').val()=='') { jQuery('#analyze').slideUp(); }else jQuery('#analyze').slideDown(); } private Analyze() { this.analyzeButton.start(); jQuery.post(ajaxurl,{action:'rednao_wcpdfinv_diagnose_error',nonce:rnErrorResolver.nonce,invoiceId:jQuery('#templateName').val(),testType:jQuery('.issueType:checked').val(),orderNumber:jQuery('#orderNumber').val()},(response)=>{ alert('Sorry the error couuldn\'t be captured, please contact support to resolve this issue'); this.analyzeButton.stop(); }).fail(()=>{ jQuery.post(ajaxurl,{action:'rednao_wcpdfinv_get_latest_error',nonce:rnErrorResolver.nonce},(response)=>{ if(response=='') { alert('Sorry the error couuldn\'t be captured, please contact support to resolve this issue'); this.analyzeButton.stop(); } try{ let error=JSON.parse(response); this.PrintError(error); this.analyzeButton.stop(); }catch(exception) { alert('Sorry the error couuldn\'t be captured, please contact support to resolve this issue'); this.analyzeButton.stop(); } }).fail(()=>{ alert('Sorry the error couuldn\'t be captured, please contact support to resolve this issue'); this.analyzeButton.stop(); }); }); } private PrintError(error: any) { jQuery('#edErrorMessage').text(error.ErrorMessage); jQuery('#edErrorNumber').text(error.ErrorNumber); jQuery('#edErrorFile').text(error.ErrorFile); jQuery('#edErrorLine').text(error.ErrorLine); jQuery('#edErrorContext').text(JSON.stringify(error.ErrorContext)); jQuery('#edErrorDetail').html(this.GetStringFromArray(error.Detail)); jQuery('#ErrorDetail').css('display','block'); } EscapeHtml(string) { var entityMap = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '/': '/', '`': '`', '=': '=' }; return string.replace(/[&<>"'`=\/]/g, function (s) { return entityMap[s]; }); }; private GetStringFromArray(Detail: any) { try{ let parsedDetail=JSON.parse(Detail); let text=''; for(let element of parsedDetail) { for(let property in element) { text+=''+this.EscapeHtml(property.toString())+':'+this.EscapeHtml(element[property].toString())+'
'; } text+='


'; } return text; }catch(Exception) { return Detail; } } } jQuery(()=>{ new ErrorResolver(); }); declare let ajaxurl:any;