yii2 fullcalendar добавить всплывающее окно к элементу - PullRequest
1 голос
/ 22 сентября 2019

Мне удалось добавить описание события с помощью кода

<script>
var JSEventClick = (function(calEvent, jsEvent, view) {
    for (var element of document.getElementsByClassName('fc-title')) {
    element.innerHTML += calEvent.nonstandard.field1
}
});
</script>

с помощью справки из ответа по этой ссылке - yii2 Fullcalendar - почему оповещение для CalEvent работает, но не для обновления innerHtml?

Теперь я пытаюсь добавить то же самое, что всплывающее окно при событии наведения мыши.

<?= \yii2fullcalendar\yii2fullcalendar::widget(array(
      'events'=> $events,
      'id'=>'calendar',

       'clientOptions' => [ 
        'editable' => true,
        'eventSources' => ['/eventcalendar/index'],
        'draggable' => true,
        'droppable' => true,
        'eventClick' => new JsExpression('JSEventClick'),
        ],

  ));?>

Это работает нормально.

, и связанный HTML выглядит так:

<td class="fc-event-container">
<a class="fc-day-grid-event fc-h-event fc-event fc-start fc-end fc-draggable fc-resizable">
<div class="fc-content"> 
<span class="fc-title">IPS Annual Day</span></div>
<div class="fc-resizer fc-end-resizer"></div></a></td>

Как мне этого добиться, информация в calEvent.nonstandard.field1 отображается как всплывающее окно при наведении мыши.

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Я нашел решение, которое работает для меня, и надеюсь, что другие найдут его полезным.

 <?php // echo $this->render('_search', ['model' => $searchModel]); ?>

    <?= \yii2fullcalendar\yii2fullcalendar::widget([
    'events' => $events,
    'eventRender' => new JsExpression(
    <<<'JS'
    (eventObj, $el)=>{
        $el.popover({
        title: eventObj.title,
            content: eventObj.nonstandard.field1,
            trigger: 'hover',
            placement: 'top',
            container: 'body'
    });
    }
JS
            )
        ]);

?>
  </div>

здесь field1 - это нестандартное поле, переданное в массив событий в контроллере.

0 голосов
/ 23 сентября 2019

Есть несколько обработчиков событий в полном плагине календаря:

  • eventClick
  • eventMouseEnter
  • eventMouseLeave

Так что вы можете попробовать

<?= \yii2fullcalendar\yii2fullcalendar::widget(array(
  'events'=> $events,
  'id'=>'calendar',

   'clientOptions' => [ 
    'editable' => true,
    'eventSources' => ['/eventcalendar/index'],
    'draggable' => true,
    'droppable' => true,
    'eventMouseEnter' => new JsExpression('JSEventClick'),
    ],

));?>

...