Напоминалка о событиях
Реализуйте напоминалку о событиях. Проект включает в себя таблицу с событиями (название, дата, время), добавление, редактирование и удаление записей, звуковые уведомления в день события. Продумайте структуру хранения данных и реализацию логики в коде JavaScript. Вся логика должна выполняться на клиенте без перезагрузки страницы. Скачать верстку для проекта.
Основные возможности проекта
- Таблица с запланированными событиями (название, дата, время).
- Добавление, редактирование и удаление событий.
- Звуковые уведомления в день события (в момент наступления).
- Данные хранятся в localStorage.
Главная страница
На странице должна быть таблица со списком запланированных событий. Каждая запись должна содержать:
- Название события.
- Дата события.
- Время события.
- Кнопки действий: редактировать, удалить.
Добавление события
Над таблицей должна быть форма для добавления нового события с полями:
- Название события (инпут).
- Дата события — мини-календарь (выбор дня; без нативного input type="date").
- Время события — отдельные переключатели часа и минут (без нативного input type="time").
- Кнопка "Добавить событие".
Редактирование события
При нажатии на кнопку "Редактировать" открывается форма с текущими данными события. После редактирования и нажатия на кнопку "Сохранить" запись обновляется.
Удаление события
При нажатии на кнопку "Удалить" появляется подтверждение (confirm), после чего событие удаляется из таблицы.
Уведомления
Сайт отслеживает время событий и выдает уведомления:
- В момент наступления события (когда текущее время совпадает с временем события) - звуковой сигнал и уведомление на экране.
- Уведомления работают, пока страница открыта в браузере.
Хранение данных
Все события должны храниться в локальном хранилище браузера (localStorage). При загрузке страницы данные загружаются из хранилища, при изменении - сохраняются обратно.
Дополнительные возможности
- Сортировка по дате (ближайшие события вверху).
- Выделение событий, которые наступят сегодня.
- Фильтр: показать события за сегодня, за неделю, все.