function sendSolutionOverview()

in wiki-interface/ui/js/forms.js [275:335]


function sendSolutionOverview() {
    document.getElementById("main-content").style.display = "none";
    document.getElementById("loading").style.display = "block";

    fetch('/api/v1/solutionoverview', {
        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)
        });
}