import CustomElement from "../../../shared-files/Framework/custom-element.decorator"; import NotificationResult from "../models/NotificationResult"; import CustomHTMLBaseElement from "../../../shared-files/CustomHTMLBaseElement"; import Colors from "../../../shared-files/Framework/Constants/Colors" @CustomElement({ selector: 'notification-result', template: `
`, style: ` /* result-box */ .result-box { position: relative; width: 100%; background: ${Colors.senary}; border: 1px solid ${Colors.tertiary}; box-sizing: border-box; border-radius: 4px; height: 470px; margin-top: 10px; overflow: auto; } * { color: ${Colors.font}; } .pad-10 { padding: 10px; } .label { font-size: 14px; } .loader { border: 10px solid white; border-top: 10px solid ${Colors.primary}; border-right: 10px solid ${Colors.primary}; border-bottom: 10px solid ${Colors.primary}; border-radius: 50%; width: 60px; height: 60px; animation: spin 3s linear infinite; margin: auto; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .hide-loader{ display:none; } .center { position: relative; height: 50px; background-color: ${Colors.senary}; top: 40%; } .firsttext { font-style: normal; font-weight: normal; font-size: 20px; line-height: 25px; text-align: center; color: ${Colors.font}; } .secondtext { background: ${Colors.senary}; box-sizing: border-box; border-radius: 4px; height: 34.53px; text-align: center; } .resultcontent { position: absolute; font-style: normal; font-weight: bold; font-size: 11px; line-height: 13px; color: ${Colors.primary}; } ul { list-style-type: none; padding: 0; } `, useShadow: false, }) export default class NotificationResultCustomElement extends CustomHTMLBaseElement { private mainDivElement: HTMLDivElement; constructor() { super(); } componentDidMount() { this.mainDivElement = this.getChildElement('.result-box'); this.initialResultText(); } addWaitingSpinner() { this.clearContent(); var outerDivElement = document.createElement("div"); outerDivElement.classList.add("center"); var innerDivElement = document.createElement("div"); innerDivElement.classList.add("loader"); var firstText = document.createElement('p'); firstText.innerText = 'Forbinder'; firstText.classList.add('firsttext'); var secondText = document.createElement('p'); secondText.innerHTML = 'Automatisk arkivering forbinder til din server...'; secondText.classList.add('secondtext'); outerDivElement.appendChild(innerDivElement); outerDivElement.appendChild(firstText); outerDivElement.appendChild(secondText); this.mainDivElement.appendChild(outerDivElement); } removeBusyWaiting() { this.clearContent() } initialResultText() { var outerDivElement = document.createElement("div"); outerDivElement.classList.add("center"); var firstText = document.createElement('p'); firstText.innerText = 'Afventer test'; firstText.classList.add('firsttext'); var secondText = document.createElement('p'); secondText.innerHTML = 'Venligst indtast dine oplysninger og test
forbindelsen til automatisk arkivering'; secondText.classList.add('secondtext'); outerDivElement.appendChild(firstText); outerDivElement.appendChild(secondText); this.mainDivElement.appendChild(outerDivElement); } AddNotificationResult(notificationResult: NotificationResult) { this.clearContent(); var div = this.addEventDiv(notificationResult); if (div != null) { this.mainDivElement.appendChild(div); } } clearContent() { this.mainDivElement.innerHTML = ""; } formatDate() { var date = new Date(); var hours = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds(); hours = hours % 12; hours = hours ? hours : 12; minutes = minutes < 10 ? 0 + minutes : minutes; var strTime = hours + ':' + minutes + ' ' + seconds + ' '; return date.getMonth() + 1 + "/" + date.getDate() + "/" + date.getFullYear() + " " + strTime; } AddNotificationResults(notificationResult: NotificationResult[]) { this.clearContent(); var sucessResults = 0; var failedResults = 0; notificationResult.forEach(dr => { if (dr.resultStatus === 'Success') { sucessResults += 1; } else { failedResults += 1; } }); var resultDivElement = document.createElement("div"); resultDivElement.classList.add("resultcontent"); var labelText = document.createTextNode(`Summary`); var unOrderedList = document.createElement("ul"); var nodesucess = document.createElement("LI"); var textnodeSuccess = document.createTextNode(`Number of Success notification Results : ${sucessResults}`); nodesucess.appendChild(textnodeSuccess); unOrderedList.appendChild(nodesucess); var nodefailed = document.createElement("LI"); var textnodeFailed = document.createTextNode(`Number of Failed notification Results : ${failedResults}`); nodefailed.appendChild(textnodeFailed); unOrderedList.appendChild(nodefailed); resultDivElement.appendChild(labelText); resultDivElement.appendChild(unOrderedList); this.mainDivElement.appendChild(resultDivElement); } createNotificationProfile(notificationResult :NotificationResult) { this.clearContent(); var resultDivElement = document.createElement("div"); resultDivElement.classList.add("resultcontent"); var paragraphElement = document.createElement("p"); paragraphElement.innerText = `Profile saved successfully!`; resultDivElement.appendChild(paragraphElement); this.mainDivElement.appendChild(resultDivElement); } private addEventDiv(notificationResult:NotificationResult): HTMLDivElement { if (notificationResult.eventLog != null) { var resultDivElement = document.createElement("div"); resultDivElement.classList.add("resultcontent"); var datetime = this.formatDate(); var labelText = document.createTextNode(`${datetime} - ${notificationResult.id}`); var unOrderedList = document.createElement("ul"); var eventList = (notificationResult.eventLog as string[]); eventList.forEach(event => { var node = document.createElement("LI"); var textnode = document.createTextNode(`$ ${event}`); node.appendChild(textnode); unOrderedList.appendChild(node); }); resultDivElement.appendChild(labelText); resultDivElement.appendChild(unOrderedList); return resultDivElement; } return null; } }