Files
WinnieAPI-v2/public/js/tools/json.js
T

37 lines
2.1 KiB
JavaScript
Raw Normal View History

2026-05-01 20:02:13 +02:00
// ═══════════════════════════════════════════════════════
// JSON Formatter
// ═══════════════════════════════════════════════════════
async function formatJSON() {
const input = document.getElementById('jsonInput').value.trim();
if (!input) return setStatus('jsonStatus','error','Paste some JSON first.');
const iv = document.getElementById('jsonIndent').value;
const indent = iv === '\\t' ? '\t' : parseInt(iv);
const d = await apiPost('/api/json/format', { json: input, indent });
if (d.success) { document.getElementById('jsonOutput').value = d.result; setStatus('jsonStatus','success','Formatted ✓'); }
else setStatus('jsonStatus','error', d.error);
}
async function minifyJSON() {
const input = document.getElementById('jsonInput').value.trim();
if (!input) return setStatus('jsonStatus','error','Paste some JSON first.');
const d = await apiPost('/api/json/minify', { json: input });
if (d.success) { document.getElementById('jsonOutput').value = d.result; setStatus('jsonStatus','success','Minified ✓'); }
else setStatus('jsonStatus','error', d.error);
}
async function validateJSON() {
const input = document.getElementById('jsonInput').value.trim();
if (!input) return setStatus('jsonStatus','error','Paste some JSON first.');
const d = await apiPost('/api/json/validate', { json: input });
setStatus('jsonStatus', d.valid ? 'success' : 'error', d.message);
}
function clearJSON() {
document.getElementById('jsonInput').value=''; document.getElementById('jsonOutput').value='';
document.getElementById('jsonStatus').className='status';
}
// Keyboard shortcuts
document.getElementById('jsonInput').addEventListener('keydown', e => {
if(e.key==='Enter' && (e.ctrlKey||e.metaKey)) formatJSON();
if(e.key==='Tab') { e.preventDefault(); const t=e.target,s=t.selectionStart,en=t.selectionEnd; t.value=t.value.substring(0,s)+' '+t.value.substring(en); t.selectionStart=t.selectionEnd=s+2; }
});