Timeline или календарь на JS с правилами и валидацией
Реализую все что ниже описано на JavaScript (Vue, но это не важно).
Есть задача: сделать шкалу времени, на которую будут помещаться события определенного типа (например работа, перерыв, отдых междусменный, отдых еженедельный) с определенной продолжительностью, все события строго последовательны и не пересекаются по времени (то есть закончилось одно - началось другое), для каждого типа события есть свои лимитации и правила, вот тут начинается самый сок:
- простая задача: Если сдвигаешь событие одно, в след за ним должны подвинуться остальные.
- сложная задача: например, пользователь решил сократить вдвое время еженедельного отдыха, а по правилам он тогда должен в течении недели "доотдыхать" это время, так вот как только он сократил это время, то на следующие 7 дней надо равномерно распределить эти часы автоматом. Это только вершина айсберга - правил намного больше в реальности, это просто что бы описать суть вопроса.
В плане визуализации проблем нет: есть visjs или google charts например и тд.
Весь вопрос в плане логики и алгоритмов, так как описывать это все с нуля просто ужасно.
Может кто-то знает какой-то плагин/библиотеку для подобных календарных вычислений? Я не требую что бы эта библиотека умела во все такие правила (такой просто нет наверное), мне бы какую-то основу с необходимым минимумом:
- соблюдение последовательности при изменении - предшествующее событие "толкает" последующие при перемещении во времени.
- возможность подсчитывать итоги по времени для каждого типа события - типа как в тайм-трекере.
Заранее спасибо всем за помощь!