Forum Discussion

hcohen's avatar
hcohen
Guide
13 years ago

Looking for info on how to creating a mouse over bubble

Hi,

 

We are new to Lithium and noticed in Dev Nation that when you mouse over a topic you get a nice preview in a bubble.    How does one go about configuring something like this?   Does anyone have code they can share on setting this up? 

  • AdamN's avatar
    AdamN
    Khoros Oracle

    Hi hcohen,

     

    If you take a look at the sourcecode for the page, you can see the JavaScript/jQuery that actually controls this:

     

    ;(function($) {
            $(document).ready(function() {
            
                    var counter=0;
                    var renderedCssClass = "lia-panel-tooltip-tr-bl";
                    var fetchedElements = {};
                    $('h2.message-subject').each(function () {
                             var item = $(this);
                         var msgItem = item.parents('tr.lia-list-row');
                         var href = msgItem.attr('class');
                             
                         var UidIndex = href.indexOf("lia-js-data-messageUid-");
                             if(UidIndex != -1)
                             {
                                     UidIndex = UidIndex + 23;
                                 var msgId = href.slice(UidIndex, href.indexOf(" ", UidIndex));
                             }
                             else
                             {
                                    var msgId = "None";
                             }
                             var tipWidth = 250;
                             var itemWidthOffset = item.offset().right;
                         var position = 'top right';
                             if ((itemWidthOffset + tipWidth) > $(window).width()){
                                    position = 'top left';
                             }
                         
                         if (msgId!="null"){
                            var elementId = "lia_custom-tooltip1_" + counter + "_" + msgId;
                            $("#lia-panel-tooltip").append("<div id='" + elementId + "' style='hidden'></div>");
                            
                            $.ajax({
                                            url: "${community.urls.communityPrefix}/restapi/vc/?restapi.response_template=message_infobox&msg_id=" + msgId,
                                                    success: function(data) {
                                                            $("#" + elementId).append(data);
                                                            $("#" + elementId).hide();
                                                    
                                                    }
                                    
                                    });
                                    
                                    if (!$("#" + elementId).hasClass(renderedCssClass)) {
                                            $("#" + elementId).addClass(renderedCssClass);  
                                    }
                            var tooltipObj = item.tooltip({
                                    tip: "#" + elementId,
                                            position: position,
                                    onBeforeShow: function() {
                                            
                                             $("#" + elementId).show();
                                         
                                            }
                            });
                             
                            }
                            counter++;
                    });
            });
    })(LITHIUM.jQuery);

     Basically, for each message subject on the page, it's performing a few actions:

    1. Determine the message id associated with the subject.
    2. Set up a tooltip for the subject
    3. Make an ajax call to a custom endpoint to get the tooltip contents
    4. Update the tooltip with the contents
    5. Create the actual tooltip object

    The tooltip is using jQuery Tools Tooltip (http://jquerytools.org/demos/tooltip/index.html). So when a user hovers over the subject, the tooltip is shown rendering the content pulled in via the ajax call.

     

    Hopefully this will help get you started in the right direction!

     

    -Adam

    • Adam, is that how you all are doing it here in the Lithosphere? I'm noticing that it's in all of the (Li) forums that I've visited.
      • AdamN's avatar
        AdamN
        Khoros Oracle

        Hi Becky,

         

        Indeed, the code above was taken directly from here on the Lithosphere. A few of our customers have implemented similar customizations, and their exact code may differ slightly depending on their needs.

         

        Regards,

         

        Adam