22 lines
1.8 KiB
JavaScript
22 lines
1.8 KiB
JavaScript
|
|
// ═══════════════════════════════════════════════════════
|
|||
|
|
// Word Counter
|
|||
|
|
// ═══════════════════════════════════════════════════════
|
|||
|
|
async function updateCounter() {
|
|||
|
|
const text = document.getElementById('counterInput').value;
|
|||
|
|
const d = await apiPost('/api/text/stats', { text });
|
|||
|
|
if (d.success) {
|
|||
|
|
document.getElementById('counterResults').innerHTML = `
|
|||
|
|
<div class="ip-grid">
|
|||
|
|
<div class="ip-card"><div class="label">Characters</div><div class="value">${d.characters}</div></div>
|
|||
|
|
<div class="ip-card"><div class="label">No Spaces</div><div class="value">${d.charactersNoSpaces}</div></div>
|
|||
|
|
<div class="ip-card"><div class="label">Words</div><div class="value">${d.words}</div></div>
|
|||
|
|
<div class="ip-card"><div class="label">Sentences</div><div class="value">${d.sentences}</div></div>
|
|||
|
|
<div class="ip-card"><div class="label">Paragraphs</div><div class="value">${d.paragraphs}</div></div>
|
|||
|
|
<div class="ip-card"><div class="label">Lines</div><div class="value">${d.lines}</div></div>
|
|||
|
|
<div class="ip-card"><div class="label">Reading Time</div><div class="value">${d.readingTime}</div></div>
|
|||
|
|
</div>
|
|||
|
|
${d.topChars.length ? '<div class="panel-label" style="margin-top:14px;">Top Characters</div><div style="display:flex;gap:6px;flex-wrap:wrap;">' + d.topChars.map(([ch,n]) => `<span style="background:var(--bg-input);border:1px solid var(--border);padding:4px 10px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:0.8rem;"><strong style="color:var(--accent);">${ch}</strong> <span style="color:var(--text-muted);">×${n}</span></span>`).join('') + '</div>' : ''}`;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|