From 25ac7b85e1d42a9619c8aff03072b338f2d5d9a8 Mon Sep 17 00:00:00 2001 From: igor_nadein Date: Wed, 25 Feb 2026 02:25:56 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D1=80=D0=B0=D0=B7=D1=80=D0=B5=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D0=BF=D0=BE=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D1=8F=D1=8E=D1=89=D0=B8=D1=85=D1=81=D1=8F=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Убрана блокировка редактирования для существующих повторяющихся событий - loadRule() теперь заполняет поля формы параметрами из Rule: * frequency, interval, byweekday, count * isRecurring = true * useCount устанавливается если есть count - Удален readonly блок с информацией о повторении - Редактируемые поля теперь доступны для всех событий - При сохранении будет обновлен Rule через API Проблема: нельзя было изменять параметры повторения (частота, дни недели, count). Решение: все occurrences используют общий Rule - просто редактируем его параметры. --- frontend/src/components/EventModal.tsx | 63 +++++++------------------- 1 file changed, 17 insertions(+), 46 deletions(-) diff --git a/frontend/src/components/EventModal.tsx b/frontend/src/components/EventModal.tsx index 9d11827c..96c0165f 100644 --- a/frontend/src/components/EventModal.tsx +++ b/frontend/src/components/EventModal.tsx @@ -168,6 +168,17 @@ export function EventModal({ try { const rule = await apiClient.getRule(ruleId); setRuleDetails(rule); + + // Заполняем поля редактирования параметрами из загруженного правила + setEditingEvent((prev: any) => ({ + ...prev, + isRecurring: true, + frequency: rule.frequency, + interval: rule.params?.interval || 1, + byweekday: rule.params?.byweekday || [], + count: rule.params?.count || undefined, + useCount: !!rule.params?.count, + })); } catch (error) { console.error('Failed to load rule:', error); } @@ -427,49 +438,11 @@ export function EventModal({ {/* Повторяющееся событие */} - {editingEvent.id && ruleDetails ? ( - // Для существующих повторяющихся событий - readonly информация -
-
- - - - - - - Повторяющееся событие -
-
-
Частота: - {ruleDetails.frequency === 'DAILY' && 'Каждый день'} - {ruleDetails.frequency === 'WEEKLY' && 'Каждую неделю'} - {ruleDetails.frequency === 'MONTHLY' && 'Каждый месяц'} - {ruleDetails.frequency === 'YEARLY' && 'Каждый год'} -
- {ruleDetails.params?.interval && ruleDetails.params.interval > 1 && ( -
Интервал: {ruleDetails.params.interval}
- )} - {ruleDetails.params?.byweekday && ruleDetails.params.byweekday.length > 0 && ( -
Дни недели: - {ruleDetails.params.byweekday.map((d: number) => ['ПН','ВТ','СР','ЧТ','ПТ','СБ','ВС'][d]).join(', ')} -
- )} - {ruleDetails.params?.count && ( -
Повторений: {ruleDetails.params.count}
- )} -
-
- 💡 Редактирование параметров повторения пока не поддерживается -
-
- ) : (!editingEvent.id || !editingEvent.rule) && ( - <> - -
-
{editingEvent.isRecurring && (
@@ -628,8 +600,7 @@ export function EventModal({
)} - - )} + {/* Event Participants */} {showParticipants && (