Игорь Надеин
46030ccab9
refactor: вынести helpers и API client из calendarWidget.js
Проблемы:
- calendarWidget.js слишком большой (1730 строк)
- Утилиты и API клиент не переиспользуются
- Сложно тестировать и поддерживать
Решение:
1. Создан модуль helpers.js (176 строк):
- Утилиты работы с датами (toDate, startOfWeek, endOfWeek, overlaps)
- Утилиты работы с URL (eventsUrl, addRange)
- Утилиты форматирования (fmtWhen, truncate)
- Утилиты UI (setWeekdaysFromMask)
- Константы (DIGITS_RE, dayMs, hourMs)
2. Создан модуль apiClient.js (77 строк):
- fetchJSON - универсальный fetch с обработкой JSON
- apiGet - GET запрос к API
- apiDelete - DELETE запрос к API
3. Обновлён calendarWidget.js:
- Удалены дублирующиеся функции (134 строки)
- Добавлены импорты из новых модулей
- Все вызовы функций остались идентичными
Результаты:
✅ calendarWidget.js: 1730 → 1596 строк (-134, -8%)
✅ Создано 2 переиспользуемых модуля (253 строки)
✅ Улучшена тестируемость (юнит-тесты для helpers/apiClient)
✅ Повышена модульность (7/10 → 8/10)
✅ Полная обратная совместимость
Изменения:
- 4 files changed, 579 insertions(+), 162 deletions(-)
- Нет breaking changes
- Нет ошибок компиляции
2026-02-11 13:22:58 +03:00
..
2026-02-11 13:22:58 +03:00
2025-10-28 08:29:43 +03:00
2025-12-08 11:21:31 +03:00
2025-12-18 10:19:47 +03:00
2025-11-20 09:00:55 +03:00
2026-02-11 12:52:25 +03:00
2026-02-11 13:12:52 +03:00
2026-02-11 13:22:58 +03:00
2026-02-11 13:12:52 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2026-01-12 17:37:41 +03:00
2026-01-12 17:37:41 +03:00
2026-01-22 01:33:42 +03:00
2025-11-28 10:09:23 +03:00
2025-11-28 10:09:23 +03:00
2026-01-14 17:32:06 +03:00
2025-11-30 12:21:36 +03:00
2026-01-12 17:37:41 +03:00
2026-01-22 01:33:42 +03:00
2026-01-08 14:39:40 +03:00
2026-01-13 09:19:19 +03:00
2026-01-22 01:33:42 +03:00
2025-11-20 09:00:55 +03:00
2025-11-27 17:23:13 +03:00
2025-11-20 09:00:55 +03:00
2025-11-29 13:52:21 +03:00
2025-11-20 12:54:01 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2025-11-21 12:46:43 +03:00
2025-11-20 09:00:55 +03:00
2025-12-03 14:42:26 +03:00
2025-12-05 13:19:04 +03:00
2025-12-08 13:37:20 +03:00
2025-11-20 09:00:55 +03:00
2025-12-08 11:07:45 +03:00
2025-12-30 10:35:34 +03:00
2025-12-03 13:48:31 +03:00
2025-11-29 13:52:21 +03:00
2025-11-29 13:52:21 +03:00
2025-12-05 10:56:23 +03:00
2025-12-05 09:57:54 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2026-02-06 15:42:57 +03:00
2025-11-20 09:00:55 +03:00
2025-10-28 08:40:25 +03:00
2025-12-02 14:02:10 +03:00
2026-01-06 08:11:24 +03:00
2026-01-15 11:13:54 +03:00
2026-01-15 11:13:54 +03:00
2026-01-15 11:13:54 +03:00
2025-12-01 14:19:58 +03:00
2025-11-20 09:00:55 +03:00
2025-12-05 11:10:02 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2025-12-03 13:48:31 +03:00
2025-12-08 12:09:32 +03:00
2025-12-08 12:09:32 +03:00
2025-11-29 13:52:21 +03:00
2025-12-05 15:59:21 +03:00
2026-01-05 14:35:19 +03:00
2026-01-22 01:33:42 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2025-11-20 09:00:55 +03:00
2025-12-17 09:14:34 +03:00
2025-11-29 13:52:21 +03:00
2025-11-29 16:41:03 +03:00
2026-01-15 11:13:54 +03:00