fix: обязательная фотография в форме отправки; модалка редактирования шире и в две колонки; поддержка .jfif в прикреплении
This commit is contained in:
+24
-34
@@ -36,46 +36,36 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal-overlay" id="editModal">
|
<div class="modal-overlay" id="editModal">
|
||||||
<div class="edit-modal" style="max-width:480px">
|
<div class="edit-modal" style="max-width:720px">
|
||||||
<h3>Редактирование записи</h3>
|
<h3>Редактирование записи</h3>
|
||||||
<form id="editForm" class="settings-stack" style="gap:12px">
|
<form id="editForm" class="link-fields" style="gap:12px">
|
||||||
<div class="settings-row">
|
<div class="settings-field">
|
||||||
<div class="settings-field" style="flex:1">
|
<label>Фамилия и имя <span style="color:#ef4444">*</span></label>
|
||||||
<label>Фамилия и имя <span style="color:#ef4444">*</span></label>
|
<input type="text" id="editName" class="settings-input" list="studentEditList" required autocomplete="off">
|
||||||
<input type="text" id="editName" class="settings-input" list="studentEditList" required autocomplete="off">
|
<datalist id="studentEditList"></datalist>
|
||||||
<datalist id="studentEditList"></datalist>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-row">
|
<div class="settings-field">
|
||||||
<div class="settings-field" style="flex:1">
|
<label>Группа <span style="color:#ef4444">*</span></label>
|
||||||
<label>Группа <span style="color:#ef4444">*</span></label>
|
<select id="editGroup" class="settings-input" required></select>
|
||||||
<select id="editGroup" class="settings-input" required></select>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-row">
|
<div class="settings-field full">
|
||||||
<div class="settings-field" style="flex:1">
|
<label>Что делала(а) <span style="color:#ef4444">*</span>
|
||||||
<label>Что делала(а) <span style="color:#ef4444">*</span>
|
<button type="button" id="aiCorrectBtn" class="ai-btn" title="Исправить ошибки ИИ">✨</button>
|
||||||
<button type="button" id="aiCorrectBtn" class="ai-btn" title="Исправить ошибки ИИ">✨</button>
|
</label>
|
||||||
</label>
|
<textarea id="editDesc" class="settings-input" required></textarea>
|
||||||
<textarea id="editDesc" class="settings-input" required></textarea>
|
<div id="editAiStatus" class="ai-status" style="display:none"></div>
|
||||||
<div id="editAiStatus" class="ai-status" style="display:none"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-row">
|
<div class="settings-field">
|
||||||
<div class="settings-field" style="flex:1">
|
<label>Фотография</label>
|
||||||
<label>Фотография</label>
|
<input type="file" id="editPhoto" accept=".jpg,.jpeg,.png,.gif,.webp,.bmp,.avif,.ico,.heic,.heif,.jfif">
|
||||||
<input type="file" id="editPhoto" accept=".jpg,.jpeg,.png,.gif,.webp,.bmp,.avif,.ico,.heic,.heif,.jfif">
|
<div class="files-preview" id="editPhotoPreview"></div>
|
||||||
<div class="files-preview" id="editPhotoPreview"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-row">
|
<div class="settings-field">
|
||||||
<div class="settings-field" style="flex:1">
|
<label>Прикрепить файлы</label>
|
||||||
<label>Прикрепить файлы</label>
|
<input type="file" id="editFiles" multiple accept=".pdf,.doc,.docx,.txt,.md,.html,.htm,.zip,.rar,.7z,.jpg,.jpeg,.png,.gif,.webp,.bmp,.avif,.ico,.heic,.heif,.jfif">
|
||||||
<input type="file" id="editFiles" multiple accept=".pdf,.doc,.docx,.txt,.md,.html,.htm,.zip,.rar,.7z,.jpg,.jpeg,.png,.gif,.webp">
|
<div class="files-preview" id="editFilesPreview"></div>
|
||||||
<div class="files-preview" id="editFilesPreview"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="card-foot" style="justify-content:flex-end;gap:8px">
|
<div class="card-foot full" style="justify-content:flex-end;gap:8px">
|
||||||
<button type="button" class="btn-primary ghost" id="editCancelBtn">Отмена</button>
|
<button type="button" class="btn-primary ghost" id="editCancelBtn">Отмена</button>
|
||||||
<button type="submit" class="btn-primary">Сохранить</button>
|
<button type="submit" class="btn-primary">Сохранить</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+7
-1
@@ -146,12 +146,18 @@ function capture() {
|
|||||||
|
|
||||||
form.addEventListener('submit', async (e) => {
|
form.addEventListener('submit', async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
if (!capturedBlob) {
|
||||||
|
toast.textContent = 'Сначала сделайте фотографию';
|
||||||
|
toast.classList.add('show', 'error');
|
||||||
|
setTimeout(() => toast.classList.remove('show', 'error'), 3200);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const btn = document.getElementById('submitBtn');
|
const btn = document.getElementById('submitBtn');
|
||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
btn.textContent = 'Отправка...';
|
btn.textContent = 'Отправка...';
|
||||||
|
|
||||||
const fd = new FormData();
|
const fd = new FormData();
|
||||||
if (capturedBlob) fd.append('photo', capturedBlob, 'photo.jpg');
|
fd.append('photo', capturedBlob, 'photo.jpg');
|
||||||
selectedFiles.forEach(f => fd.append('files', f, f.name));
|
selectedFiles.forEach(f => fd.append('files', f, f.name));
|
||||||
fd.append('student_name', studentName || document.getElementById('nameInput').value);
|
fd.append('student_name', studentName || document.getElementById('nameInput').value);
|
||||||
fd.append('group_id', groupInput.value);
|
fd.append('group_id', groupInput.value);
|
||||||
|
|||||||
Reference in New Issue
Block a user