in wiki-interface/ui/js/forms.js [338:398]
function sendSolutionDatabase() {
document.getElementById("main-content").style.display = "none";
document.getElementById("loading").style.display = "block";
fetch('/api/v1/solutiondatabase', {
method: 'GET'
})
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(responseData => {
let mermaidDiagram = responseData.pageContent.match(/```mermaid\n(.*?)\n```/gs, (match, mermaidCode) => {
return `${mermaidCode.trim().toString()}`;
});
let renderedHTML = marked.parse(responseData.pageContent, { breaks: true })
if (mermaidDiagram !== null && mermaidDiagram !== undefined && mermaidDiagram.length > 0) {
let modifiedMessage = mermaidDiagram.toString().replace(/```mermaid\n(.*?)\n```/gs, (match, mermaidCode) => {
return `<div class="mermaid">${mermaidCode.trim()}</div>`;
});
const parser = new DOMParser();
const doc = parser.parseFromString(renderedHTML, 'text/html');
const codeElements = doc.querySelectorAll('code.language-mermaid');
codeElements.forEach(codeElement => {
const newElement = parser.parseFromString(modifiedMessage, 'text/html').body.firstChild; //Parse testString into a node
if (!newElement) {
console.error("Error: Test string did not parse correctly. Is it valid HTML?")
}
codeElement.replaceWith(newElement);
});
document.getElementById('ratingContent').innerHTML = doc.body.innerHTML;
setTimeout(() => { //Added a small delay
mermaid.init(); // Or mermaidAPI.render if using that approach.
}, 5000); // Adjust the delay (in milliseconds) as needed
} else {
document.getElementById('ratingContent').innerHTML = renderedHTML;
}
document.getElementById('ratingTransactionId').value = responseData.transactionId;
document.getElementById('ratingDocumentId').value = responseData.documentId;
document.getElementById('ratingPagePath').value = responseData.pagePath;
document.getElementById('ratingPageContent').value = responseData.pageContent;
document.getElementById('ratingMimeType').value = "markdown";
document.getElementById("loading").style.display = "none";
document.getElementById("rating-content").style.display = "block";
})
.catch(error => {
console.error('There was a problem with the fetch operation:', error);
// Handle errors here (e.g., display an error message to the user)
});
}