Fullcalendar v5 отображает только одну подсказку о событии
Я пытаюсь отобразить некоторые события в v5 fullcalendar. Вот мой код:
document.addEventListener('DOMContentLoaded',function(){
var cUI= document.getElementById('calendar');
var c= new FullCalendar.Calendar(cUI,{
themeSystem: 'bootstrap',
headerToolbar:{
left:'prev,next today',
center:'title',
right:'',
},
events:[
{% for v in vacation %}
{
{% if v.id_cause.cause_name == 'Vacations' %}
backgroundColor : 'blue',
borderColor : 'blue',
{% else %}
backgroundColor : 'darkgreen',
borderColor : 'darkgreen',
{% endif %}
textColor : 'gray',
title:"{{ v.startT }} - {{ v.endT }}",
start: "{{ v.startD | date:'Y-m-d' }}",
end: "{{ v.endD | date:'Y-m-d' }}",
description:"{{v.id_cause.cause_name}} {{v.cause_text}}",
},
{% endfor %}
],
{% comment %} eventDidMount: function(info) {
var tooltip = tippy('.fc-event-title-container',{
content: info.event.extendedProps.description,
placement: 'top',
interactive: true,
});
}, {% endcomment %}
});
c.render();
c.setOption('locale','en');
});
Отрисовывает календарь и советы, однако повторяет один и тот же совет для всех событий, но цвета для разных названий причин отображаются по-разному, так что я не понимаю, в чем дело, он отображает все события с их данными правильно, но советы не работают. Кстати, я на django 3. Может быть, откатиться к предыдущей версии полного календаря с eventRender, вместо eventDidMount? Спасибо за помощь
Предоставляя селектор класса .fc-event-title-container
tippy, вы прикрепляете каждую всплывающую подсказку ко всем событиям (потому что все они имеют этот класс). Таким образом, в итоге каждая всплывающая подсказка прикрепляется к каждому событию.
При отображении они перекрываются, и иногда вы можете видеть фрагменты текста для разных из них, а иногда только для самого последнего, в зависимости от того, как именно они отображаются в tippy.
Вам нужно указать только конкретный элемент события, к которому вы хотите прикрепить подсказку. Поскольку tippy будет принимать объект элемента (вместо строки селектора) в качестве входных данных, это просто, поскольку аргументы обратного вызова eventDidMount
предоставляют вам правильный объект элемента напрямую.
Имеет смысл сделать это таким образом, а не использовать селектор, потому что элементы событий FullCalendar HTML не имеют индивидуальных уникальных идентификаторов в разметке.
Код:
eventDidMount: function (info) {
var tooltip = tippy(info.el, {
content: info.event.extendedProps.description,
placement: "top",
interactive: true
});
}
Работающая демонстрация: https://codepen.io/ADyson82/pen/yLoPjqX