feat: улучшена обработка ошибок валидации событий
- Добавлено подробное логирование payload и response при ошибках - Специальная обработка 400 ошибок с детализацией по полям - Alert показывает конкретные поля с ошибками валидации - Помогает диагностировать проблемы типа start_date == end_date для all_day событий
This commit is contained in:
parent
67a331439c
commit
7f6d2e8c13
@ -1331,6 +1331,9 @@ export function initCalendarWidget(options = {}) {
|
||||
updateWeekLists();
|
||||
} catch (err) {
|
||||
console.error('Create event error', err);
|
||||
console.error('Payload sent:', payload);
|
||||
console.error('Response data:', err?.data);
|
||||
|
||||
if (err && err.status === 403) {
|
||||
const where = state?.type === 'dept' ? `отделе «${currentDeptLabel()}»` : 'компании';
|
||||
alert(
|
||||
@ -1339,6 +1342,24 @@ export function initCalendarWidget(options = {}) {
|
||||
'.\n' +
|
||||
'Попросите руководителя назначить вам роль «Управлять календарём отдела».'
|
||||
);
|
||||
} else if (err && err.status === 400) {
|
||||
// Детальная информация о валидации
|
||||
const errors = err?.data?.errors || err?.data;
|
||||
const detail = err?.data?.detail || '';
|
||||
let errorMsg = 'Ошибка валидации события:\n\n';
|
||||
|
||||
if (detail) {
|
||||
errorMsg += detail + '\n\n';
|
||||
}
|
||||
|
||||
if (typeof errors === 'object' && errors !== null) {
|
||||
for (const [field, messages] of Object.entries(errors)) {
|
||||
const msgs = Array.isArray(messages) ? messages : [messages];
|
||||
errorMsg += `${field}: ${msgs.join(', ')}\n`;
|
||||
}
|
||||
}
|
||||
|
||||
alert(errorMsg || 'Не удалось сохранить событие. Проверьте введенные данные.');
|
||||
} else {
|
||||
const detail =
|
||||
err?.data?.detail || (typeof err?.data === 'string' ? err.data : '');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user