Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d5c0786a55 |
@@ -79,7 +79,7 @@
|
|||||||
{# Футер #}<footer class="footer mt-auto py-2 mt-4">
|
{# Футер #}<footer class="footer mt-auto py-2 mt-4">
|
||||||
<div class="container d-flex justify-content-between align-items-center">
|
<div class="container d-flex justify-content-between align-items-center">
|
||||||
<span class="text-muted small nowrap me-2">© Sergei Erjemin, 2025–{% now 'Y' %}.</span>
|
<span class="text-muted small nowrap me-2">© Sergei Erjemin, 2025–{% now 'Y' %}.</span>
|
||||||
<nobr class="text-muted small mx-2"><i class="bi bi-tags me-1" title="Версия библиотеки etpgrf / Версия сайта"></i><a href="/changelog">v0.1.4 / v0.2.2</a></nobr>
|
<nobr class="text-muted small mx-2"><i class="bi bi-tags me-1" title="Версия библиотеки etpgrf / Версия сайта"></i><a href="/changelog">v0.1.4 / v0.2.3</a></nobr>
|
||||||
{# Сводная статистика (HTMX) #}<span class="text-muted small ms-2" hx-get="{% url 'stats_summary' %}" hx-trigger="load">
|
{# Сводная статистика (HTMX) #}<span class="text-muted small ms-2" hx-get="{% url 'stats_summary' %}" hx-trigger="load">
|
||||||
...
|
...
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -38,10 +38,18 @@
|
|||||||
|
|
||||||
{# ГЛАВНОЕ ПОЛЕ ВВОДА #}
|
{# ГЛАВНОЕ ПОЛЕ ВВОДА #}
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label fw-bold small text-muted ls-1">
|
<div class="d-flex justify-content-between align-items-end mb-2">
|
||||||
|
<label class="form-label fw-bold small text-muted ls-1 mb-0">
|
||||||
<i class="bi bi-file-text me-1"></i> Исходный текст:
|
<i class="bi bi-file-text me-1"></i> Исходный текст:
|
||||||
</label>
|
</label>
|
||||||
<textarea class="form-control" name="text" rows="10" placeholder="Вставьте текст сюда..."></textarea>
|
<div class="d-flex align-items-center">
|
||||||
|
<span id="char-count" class="small text-muted me-3 nowrap">0 симв.</span>
|
||||||
|
<button type="button" id="btn-clear" class="btn btn-sm btn-outline-secondary" title="Очистить поле">
|
||||||
|
<i class="bi bi-trash me-1"></i> Очистить
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<textarea class="form-control" name="text" id="source-text" rows="10" placeholder="Вставьте текст сюда..."></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{# Блок настроек (Collapse) #}
|
{# Блок настроек (Collapse) #}
|
||||||
|
|||||||
@@ -23,6 +23,34 @@ const btnCopy = document.getElementById('btn-copy');
|
|||||||
const sourceTextarea = document.querySelector('textarea[name="text"]');
|
const sourceTextarea = document.querySelector('textarea[name="text"]');
|
||||||
const processingTimeSpan = document.getElementById('processing-time');
|
const processingTimeSpan = document.getElementById('processing-time');
|
||||||
|
|
||||||
|
// --- ОЧИСТКА И СЧЕТЧИК ---
|
||||||
|
const btnClear = document.getElementById('btn-clear');
|
||||||
|
const charCount = document.getElementById('char-count');
|
||||||
|
|
||||||
|
if (sourceTextarea && charCount) {
|
||||||
|
function updateCharCount() {
|
||||||
|
const count = sourceTextarea.value.length;
|
||||||
|
// Форматируем число с разделителями тысяч (1 234)
|
||||||
|
charCount.textContent = `${count.toLocaleString('ru-RU')} симв.`;
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceTextarea.addEventListener('input', updateCharCount);
|
||||||
|
|
||||||
|
// Инициализация с задержкой, чтобы браузер успел восстановить состояние формы
|
||||||
|
setTimeout(updateCharCount, 100);
|
||||||
|
|
||||||
|
if (btnClear) {
|
||||||
|
btnClear.addEventListener('click', () => {
|
||||||
|
sourceTextarea.value = '';
|
||||||
|
updateCharCount();
|
||||||
|
sourceTextarea.focus();
|
||||||
|
|
||||||
|
// Сбрасываем результат (триггерим событие input, чтобы сработал существующий обработчик)
|
||||||
|
sourceTextarea.dispatchEvent(new Event('input'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const themeCompartment = new Compartment();
|
const themeCompartment = new Compartment();
|
||||||
function getTheme() {
|
function getTheme() {
|
||||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? oneDark : [];
|
return window.matchMedia('(prefers-color-scheme: dark)').matches ? oneDark : [];
|
||||||
|
|||||||
Reference in New Issue
Block a user