--- a/src/main/webapp/issue-editor.js Tue Jan 06 19:14:24 2026 +0100 +++ b/src/main/webapp/issue-editor.js Tue Jan 06 20:08:54 2026 +0100 @@ -56,6 +56,44 @@ } } +function initMarkdownEditor(id) { + const btn_preview = document.getElementById(`${id}-btn-preview`); + const btn_edit = document.getElementById(`${id}-btn-edit`); + const textarea = document.getElementById(`${id}`); + const preview = document.getElementById(`${id}-preview`); + btn_preview.addEventListener('click', () => { + textarea.style.display = 'none'; + preview.style.display = 'block'; + textarea.dataset.original = textarea.value; + btn_preview.style.display = 'none'; + btn_edit.style.display = 'inline-block'; + const req = new XMLHttpRequest(); + req.addEventListener("load", (evt) => { + if (evt.target.status === 200) { + preview.innerHTML = evt.target.responseText; + } else { + // revert the button click as fallback + setTimeout(() => btn_edit.click(), 100); + } + }); + let url = baseHref + 'issues/preview-markdown'; + req.open("POST", url); + req.setRequestHeader("Content-Type", "text/plain"); + req.send(textarea.value); + }); + btn_edit.addEventListener('click', () => { + textarea.readOnly = false; + textarea.value = textarea.dataset.original; + textarea.style.display = 'block'; + preview.style.display = 'none'; + textarea.focus(); + btn_preview.style.display = 'inline-block'; + btn_edit.style.display = 'none'; + }); + btn_edit.style.display = 'none'; + preview.style.display = 'none'; +} + window.addEventListener("load", () => { toggleVariantStatus(); const sbox = document.getElementById('linkable-issues');