src/main/webapp/issue-editor.js

changeset 409
109850e92e95
parent 408
179bda934121
--- 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');

mercurial