Xor

 
<<< Назад

Календарь-планировщик

Предлагается обществу вариант доработанного модуля Календаря с новыми функциями

Добрый день!

На повестке дня - работа с календарём. Очень мне не хватало в существующем модуле возможности задать ещё и время для задачи. Была проведена в связи с этим некоторая доработка модуля.
Вот ссылка на гит ссылка.
Что получилось:

  • добавилось время начала/конца задачи
  • задача может занимать и несколько дней
  • добавилась возможность добавить напоминание к задаче
  • добавилась возможность включать задачи в иерархию (об этом позже)

    И после того, как у задач возникло время начала с минутами, неожиданно пришла простая мысль - добавить признак автозавершения задачи, коль уже встроена возможность запускать по готовности код.
    В результате к функциям модуля добавилась фича - теперь он может ещё быть и планировщиком!

    Разрешение времени запуска задач - минута. Если задача разовая, код выполнится один раз в назначенное время, задача пометится признаком Готово. А с функцией повтора задач можно организовать и ежеминутное выполнение заданий. Есть возможность настроить повторение задачи на каждые N минут, часов, дней, месяцев, лет, на запуск по определенным дням недели. Тут при наступлении времени выполнения происходит запуск кода задачи, делается отметка в логе об отработке и вычисляется новое время начала задачи в зависимости от заданного периода повторения. Если у такой периодической задачи существует относительное напоминание (напомнить за 5 минут, за день, и т.д.), то оно тоже перенесется на новый срок.

    Модуль подписан на событие MINUTELY. Каждую минуту он проверяет наступление времени начала/окончания задачи/события или напоминания, выполняет действия по ним при совпадении, вычисляет новый срок для истекшей повторяющейся задачи и т.п. Всего 5 запросов к базе в минуту

    В модуле есть два вида сущностей, доставшихся нам из предыдущего модуля - события и задачи.
    Для себя я их определяю так: событие - это что-то внешнее, на время его начала и завершения мы повлиять не можем. Типа 8 Марта). Событие по-любому начнется и завершится в указанное заранее время. А задача - мы можем выполнить ее досрочно, а можем и не выполнить в срок.

    С точки зрения планировщика они отличаются в данной реализации следующим:
    старт привязанного кода (если он есть) у события происходит по его окончании, а у задачи - по времени фактического выполнения её или же по её началу при установленном признаке автозавершения. Для задачи с автозавершением немного не логично, но так проще человеку при планировании - если задача выполняется автоматически, нагляднее указать время начала.

    Задачки можно включать в иерархию - назначить одной или нескольким задачам одну главную. Подзадачи, в свою очередь, могут быть главными задачами для других. Иерархия - инструмент упорядочивания задач наряду с категориями. Плюс добавлена опция для главной задачи - автозакрытие при закрытии всех подзадач. Это даёт ёще один мощный инструмент планирования.

    Проект сейчас уже работоспособен. У себя пользуюсь. Реализована форма редактирования задачи/события (спасибо Смоку)

pic0
и форма-обзор типа дашборда по делам

pic1

На дашборд планируется добавить функционал поиска.
Не определился пока с возможностью добавления кода не только к началу задачи, но и к концу
Буду рад замечаниям и предложениям.

PS. Уже замечен баг при инсталле модуля - я обнаружил, что при инсталле не обновляется тип поля DUE в таблице calendar_events, не смотря на явно прописанное

calendar_events: DUE datetime

Приходится менять тип поля вручную, иначе время начала не сохраняется и всегда равно 00:00 (

PPS Спасибо Руслану Бегу за помощь в тестировании модуля! Результаты тестирования - замороченое деление на события и задачи. Принято решение перейти на единую сущность планирования - оставить только задачи. Календарные события при этом превращаются в задачи на один день, их отделение от других возможно выделением в отдельную категорию. В части задач - добавление кода на начало и конец задачи - это позволит перекрыть такие вещи, как активация/деактивация режима одной задачей. При тестовой эксплуатации выявлена слабость внутреннего планировщика, кроме простейших повторов из списка периодов с какой-либо кратностью было предложено внедрить систему записи повторов, принятую в Кроне, для продвинутых юзеров. Не хватает настройки Повторять до. Просят сделать по-гибче напоминалки - сделать возможность их периодического повторения. И, самое трудное - просят написать доки и инструкции(
Наверное, стоит сделать новый модуль с учётом всего сказанного выше.

Обсуждение (3) (21)

Смотрите так же:
12.02.2024 Китайская панель в подрозетник с экраном 480*480
29.10.2023 MQTT в МДМ - способ обработки топика через метод
03.04.2023 Todoer: обмен данными с Яндекс календарём
31.03.2023 Todoer: календарь на год
30.03.2023 Todoer: анонс + программное создание задачи
08.05.2022 Глобальный поиск - добавление своих сущностей. Upd Внедрено
05.01.2022 Яндекс Лампочка в Yandex Devices - добавление сцен
18.04.2021 Переезд на мастер спустя год
24.03.2021 Ещё о старте/остановке МДМ в Винде
18.02.2021 Модуль Todoer
06.01.2021 Для виндузятников - перенос бд на рам-диск
01.08.2020 Irbis как терминал
18.05.2020 Китайская камера rtsp + vlc как перекодировщик для html
12.05.2020 Опыт интеграции МДМ с Я.Алисой ещё одним способом - без белого адреса, москита, ПУ.(дополнено)
07.05.2020 Поправим формат даты в Панели управления
11.04.2020 Баловство с шаблонами
26.03.2020 Простые правила - вариант модуля. ч. 2
25.03.2020 Простые правила - вариант модуля
20.12.2019 расширение средств работы с events updated
20.11.2019 По следам наших выступлений - сколько мы наэкономили?
04.11.2019 Группа как объект - экономим на коде - 2
26.10.2019 Прикручиваем Grafana к Мажордому
11.10.2019 Группа как объект - экономим на коде
25.09.2019 Если у вас нет телеги...
11.09.2019 Датчик присутствия из ип камеры
30.07.2019 Win-платформа-замена ffmpeg для получения скриншотов из rstp - потока
24.06.2019 Форматированный отчет в телеграм - имитация таблицы
30.04.2019 Используем зомбо-ящик в Мажордомо
24.03.2019 О среднем в Мажордомо
31.10.2018 Об "обделённых" пользователях Win-систем -- с точки зрения кэширования winTTS сообщений
16.09.2018 Перезагрузка Мажордомо в Win-системах

Домодедово, Россия

На форуме: xor