Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trigger jQuery Qtip on FullCalendar dayClick

I have a jquery fullcalendar. I would like to trigger jquery QTip (or other jquery solution (such as a lightbox)) when I click on a day to bring up a list of options. This question is similar to this question already posted, however different enough to warrant a new question.

There is an event callback for this but I am unsure how to integrate this with jQuery Qtip...

    $('#calendar').fullCalendar({
    dayClick: function(date, allDay, jsEvent, view) {

        if (allDay) {
            alert('Clicked on the entire day: ' + date);
        }else{
            alert('Clicked on the slot: ' + date);
        }

        alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY);

        alert('Current view: ' + view.name);

        // change the day's background color just for fun
        $(this).css('background-color', 'red');

    }
});

This obviously brings up alerts and changes the colour of the clicked cell red.

Here is another example showing QTip being integrated to hover on events.

    $('#calendar').fullCalendar({
    ...
    eventRender: function(event, element, view)
    {
        element.qtip({ content: "My Event: " + event.title });
    }
   ...
 });

This example shows the hover callback being used to trigger QTIP.

Now I just need to combine these two examples...

UPDATE 26/05/2010

Craig on the Qtip forums has suggested using the viewDisplay callback as an alternative to the DayClick callback which seems to be causing all sorts of problems. (Locking up the browser being the most prominent).

Here is the post:

Here is the code:

viewDisplay: function() {
                  var calendar = $(this);

                $(this).qtip({
                   content: 'TEST',
                   position: {
                 my: 'top center',
                 at: 'top center'
                   },
                   show: 'click',
                   hide: 'click',
                   style: {
                 tip: true
                   }
                })
         },

This method shows a tooltip when a day is clicked. A few problems however.

  1. As far as I can tell there is no date information accesible through this callback, making it hard to show a tooltip specific to the date clicked.
  2. There is no X and Y click information accessible through this callback making it near impossible to put the tip next to the date clicked.

All help is very much appreciated!

Thanks,

Tim

like image 557
Tim Avatar asked May 11 '10 04:05

Tim


3 Answers

I am working with fullCalendar and Qtip for a week now, and to me knepe's solution should work in ideal case.

You can check first whether the function is actually getting called or not. Try something like :

$('#calendar').fullCalendar({
    dayClick: function(date, allDay, jsEvent, view) {
         alert(date);
        }
});

If clicking on a day gives you an alert with that date, then the problem lies with Qtip implementation. If you don't get an alert, the problem is with fullCalendar implementation.

As suggested by knepe, 'show: click' should show the Qtip. But if it is not, try :

show: { when: { event: 'click' } }

Lastly, don't forget to check the docs : http://craigsworks.com/projects/qtip/docs/reference/#show

like image 115
Lionheart Avatar answered Nov 06 '22 23:11

Lionheart


If the popup does not work for you, try to use an older version of jquery.

I tried with jquery-1.4 and it does now work. I tried with jquery-1.2.6 and it works perfectly.

See a discussion about using older jquery for making qtips work with fullcalendar

like image 2
phauly Avatar answered Nov 07 '22 00:11

phauly


I see two possibilities that might work out. One, you add an invisible div to the document, 20px times 20px or so. In the day click callback, you position that in the middle of the day table cell in question (get hold of it by means of $('td.fc-day' + dayNr)) and make it visible (you could also position it at the mouse pointer, maybe). Then call click() on it to make the tooltip appear.

Second possibility: You call qtip on every table cell (by $('div.fc-content').find('td') or so) and don't use dayClick at all. Or, you combine both ideas and trigger the event for qtip in the dayClick callback.

I would go for possibility one, I guess, because it involves fewer event listeners. However, it assumes you have the same tooltip regardless of the specific day (but the tooltip can also be configured before you show it).

Hope that makes any sense.

like image 1
Tom Bartel Avatar answered Nov 07 '22 00:11

Tom Bartel