Add AI text correction button to journal edit modal

This commit is contained in:
dev
2026-09-10 00:06:38 +03:00
parent 5ae476551d
commit 89152295ea
4 changed files with 165 additions and 36 deletions
+63 -35
View File
@@ -54,7 +54,9 @@
</div>
<div class="settings-row">
<div class="settings-field" style="flex:1">
<label>Что делала(а) <span style="color:#ef4444">*</span></label>
<label>Что делала(а) <span style="color:#ef4444">*</span>
<button type="button" id="aiCorrectBtn" class="ai-btn" title="Исправить ошибки ИИ">✨</button>
</label>
<textarea id="editDesc" class="settings-input" required></textarea>
</div>
</div>
@@ -73,49 +75,75 @@
</div>
</div>
<div class="modal-overlay" id="aiCorrectModal">
<div class="edit-modal" style="max-width:560px">
<h3>✨ Исправление текста</h3>
<div style="font-size:.85rem;color:var(--muted);margin-bottom:12px">ИИ предлагает вариант:</div>
<div id="aiSuggestion" style="background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;min-height:80px;max-height:300px;overflow:auto;white-space:pre-wrap;font-family:inherit"></div>
<div class="card-foot" style="justify-content:flex-end;gap:8px;margin-top:12px">
<button type="button" class="btn-primary ghost" id="aiRejectBtn">Отклонить</button>
<button type="button" class="btn-primary" id="aiAcceptBtn">Применить</button>
</div>
</div>
</div>
<div class="modal-overlay" id="linkModal">
<div class="edit-modal">
<div class="edit-modal" style="max-width:480px">
<div id="linkCreateView">
<h3>Создать ссылку</h3>
<div style="font-size:.85rem;color:var(--muted);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px;line-height:1.5" id="linkPreview"></div>
<div>
<label>Название ссылки</label>
<input type="text" id="linkNameInput">
</div>
<div>
<label>Группа (если выбрана)</label>
<input type="text" id="linkGroupPreview" readonly style="background:var(--bg);color:var(--muted);cursor:not-allowed">
</div>
<div>
<label>Ученик (необязательно)</label>
<input type="text" id="linkStudent" list="linkStudentList" placeholder="Все / введите имя..."><datalist id="linkStudentList"></datalist>
</div>
<div>
<label>Истекает через (дни)</label>
<input type="number" id="linkExpiresDays" min="1" max="365" value="7" placeholder="7">
</div>
<div>
<label>
<input type="checkbox" id="linkAnonymizeNames">
Показывать только инициалы учеников (анонимизировать)
</label>
</div>
<div>
<label>Пароль для доступа (необязательно)</label>
<input type="password" id="linkPassword" placeholder="Оставьте пустым для открытого доступа">
</div>
<div class="actions">
<button class="cancel" type="button" id="linkCreateCloseBtn">Отмена</button>
<button class="save" type="button" id="linkCreateSaveBtn">Создать</button>
<div class="settings-stack" style="gap:12px">
<div class="settings-row">
<div class="settings-field" style="flex:1">
<label>Название ссылки <span style="color:#ef4444">*</span></label>
<input type="text" id="linkNameInput" class="settings-input" required placeholder="Например: Апрельский журнал">
</div>
</div>
<div class="settings-row">
<div class="settings-field" style="flex:1">
<label>Группа (если выбрана)</label>
<input type="text" id="linkGroupPreview" class="settings-input" readonly style="background:var(--bg);color:var(--muted);cursor:not-allowed">
</div>
</div>
<div class="settings-row">
<div class="settings-field" style="flex:1">
<label>Ученик (необязательно)</label>
<input type="text" id="linkStudent" class="settings-input" list="linkStudentList" placeholder="Все / введите имя..."><datalist id="linkStudentList"></datalist>
</div>
</div>
<div class="settings-row">
<div class="settings-field" style="flex:1">
<label>Истекает через (дни)</label>
<input type="number" id="linkExpiresDays" class="settings-input" min="1" max="365" value="7" placeholder="7">
</div>
</div>
<div class="settings-row">
<div class="settings-field" style="flex:1">
<label style="display:flex;align-items:center;gap:8px;cursor:pointer">
<input type="checkbox" id="linkAnonymizeNames">
Показывать только инициалы учеников (анонимизировать)
</label>
</div>
</div>
<div class="settings-row">
<div class="settings-field" style="flex:1">
<label>Пароль для доступа (необязательно)</label>
<input type="password" id="linkPassword" class="settings-input" placeholder="Оставьте пустым для открытого доступа">
</div>
</div>
<div class="card-foot" style="justify-content:flex-end;gap:8px">
<button type="button" class="btn-primary ghost" id="linkCreateCloseBtn">Отмена</button>
<button type="button" class="btn-primary" id="linkCreateSaveBtn">Создать</button>
</div>
</div>
</div>
<div id="linkResultView" style="display:none">
<h3>Ссылка готова</h3>
<div style="font-size:.85rem;color:var(--muted);margin-bottom:8px">Открывается публичная страница с карточками — без входа и выбора параметров. Ссылку можно изменить или удалить в разделе «Ссылки».</div>
<input type="text" id="linkUrlResult" readonly style="font-size:.8rem;color:var(--accent)">
<div class="actions">
<a class="cancel-btn" href="links.html">К списку ссылок</a>
<button class="save" type="button" id="linkCopyBtn">Копировать</button>
<input type="text" id="linkUrlResult" class="settings-input" readonly style="font-size:.8rem;color:var(--accent)">
<div class="card-foot" style="justify-content:flex-end;gap:8px">
<a class="btn-primary ghost" href="links.html" style="text-decoration:none">К списку ссылок</a>
<button class="btn-primary" type="button" id="linkCopyBtn">Копировать</button>
</div>
</div>
</div>