Theme
arya
luna-amber
luna-blue
luna-green
luna-pink
nova-dark
nova-light
saga
vela
Waypoint
Using Waypoints to track user engagement and ad views. The Waypoint component uses the current layout pane as scroll context. Furthemore, it is used in combination with p:ajax.

Note: The offset "bottom-in-view" is an alias name for the offset function from the first example with infinite scrolling.

Lorem Ipsum Dolor

I'm an ad! (ID:0166844)

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus xyx rtel supepr sey reror.

I'm an ad! (ID:8675309)

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed. Test Consectetuer Adipiscing Elit, consectetuer elit, consectetuer adipiscing.

Sit Amet

Sit Amet habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed. Test Consectetuer Adipiscing Elit, consectetuer elit, consectetuer adipiscing.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

I'm an ad! (ID:1702555)

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

I'm an ad! (ID:5112346)

Consectetuer Adipiscing Elit

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed. Test Consectetuer Adipiscing Elit, consectetuer elit, consectetuer adipiscing.

Aenean

Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc, cbuiewe dyxyxew Assdle upsula quite dsenda webald, Aksuid sind luidd svbnm yxcdqw el ijghfdf dklioe otvet nam sendrt Klimprt, second third aplogi beret treidsd ne. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum.

I'm an ad! (ID:3334906)

Aliquam tincidunt mauris eu risus. Donec consectetuer ligula vulputate sem tristique cursus. Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique. Waypoint eu vulputate magna eros eu erat. Aliquam erat volutpat. Aliquam tincidunt mauris eu risus. Donec consectetuer ligula vulputate sem tristique cursus. Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique. Waypoint eu vulputate magna eros eu erat. Aliquam erat volutpat.

Vestibulum

Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus sit amet est et sapien ullamcorper pharetra. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus. Hello said dkrew qwq ncki juewewe, upsum el.

I'm an ad! (ID:0098873)

Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi tri ssev. Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi tri elektron. Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi.

Aliquam tincidunt mauris eu risus. Donec consectetuer ligula vulputate sem tristique cursus. Donec ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique. Waypoint eu vulputate magna eros eu erat. Aliquam erat volutpat.

Source

<p:growl id="growl"/>
    
<h:panelGroup id="wrapper" layout="block">
    <h:panelGroup id="container" layout="block">
        <div class="article">
            <h2>Lorem Ipsum Dolor</h2>
            <h:panelGroup id="ad1" layout="block" class="ad-unit">
                <f:attribute name="analyticsid" value="0166844"/>
                I'm an ad! (ID:0166844)
            </h:panelGroup>            
            <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero
               sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. 
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, 
               commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, 
               eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar 
               facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, 
               eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan 
               porttitor, facilisis luctus, metus xyx rtel supepr sey reror.</p>
               <h:panelGroup id="ad2" layout="block" class="ad-unit">
                   <f:attribute name="analyticsid" value="8675309"/>
                   I'm an ad! (ID:8675309)
               </h:panelGroup>
            <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed.
               Test Consectetuer Adipiscing Elit, consectetuer elit, consectetuer adipiscing.</p>            
        </div>
        <div class="article">
            <h2>Sit Amet</h2>
            <p>Sit Amet habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed.
               Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed.
               Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed.
               Test Consectetuer Adipiscing Elit, consectetuer elit, consectetuer adipiscing.</p>            
            <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. 
               Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero 
               sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.
               Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. 
               Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero 
               sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
               <h:panelGroup id="ad3" layout="block" class="ad-unit">
                   <f:attribute name="analyticsid" value="1702555"/>
                   I'm an ad! (ID:1702555)
               </h:panelGroup>            
            <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. 
               Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero 
               sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.
               Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed.
               Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed.
               Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero 
               sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
               <h:panelGroup id="ad4" layout="block" class="ad-unit">
                   <f:attribute name="analyticsid" value="5112346"/>
                   I'm an ad! (ID:5112346)
               </h:panelGroup>            
        </div>
        <div class="article">
            <h2>Consectetuer Adipiscing Elit</h2>
            <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed.
               Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed.
               Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed.
               Test Consectetuer Adipiscing Elit, consectetuer elit, consectetuer adipiscing.</p>
        </div>
        <div class="article">
            <h2>Aenean</h2>
            <p>Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum
               vulputate, nunc, cbuiewe dyxyxew Assdle upsula quite dsenda webald, Aksuid sind luidd svbnm
               yxcdqw el ijghfdf dklioe otvet nam sendrt Klimprt, second third aplogi beret treidsd ne.
               Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, 
               commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum.</p>
               <h:panelGroup id="ad5" layout="block" class="ad-unit">
                   <f:attribute name="analyticsid" value="3334906"/>
                   I'm an ad! (ID:3334906)
               </h:panelGroup>            
            <p>Aliquam tincidunt mauris eu risus. Donec consectetuer ligula vulputate sem tristique cursus.
               Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate
               sem tristique. Waypoint eu vulputate magna eros eu erat. Aliquam erat volutpat.
               Aliquam tincidunt mauris eu risus. Donec consectetuer ligula vulputate sem tristique cursus.
               Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate
               sem tristique. Waypoint eu vulputate magna eros eu erat. Aliquam erat volutpat.</p>
        </div>
        <div class="article">
            <h2>Vestibulum</h2>
            <p>Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros
               eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus,
               metus sit amet est et sapien ullamcorper pharetra. Aliquam erat volutpat. Nam dui mi, tincidunt
               quis, accumsan porttitor, facilisis luctus. Hello said dkrew qwq ncki juewewe, upsum el.</p>
               <h:panelGroup id="ad6" layout="block" class="ad-unit">
                   <f:attribute name="analyticsid" value="0098873"/>
                   I'm an ad! (ID:0098873)
               </h:panelGroup>            
            <p>Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem
               tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi tri ssev.
               Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem
               tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi tri elektron.
               Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem
               tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi.</p>
            <p>Aliquam tincidunt mauris eu risus. Donec consectetuer ligula vulputate sem tristique cursus.
               Donec ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate
               sem tristique. Waypoint eu vulputate magna eros eu erat. Aliquam erat volutpat.</p>            
        </div>
    </h:panelGroup>
</h:panelGroup>
    
<pe:waypoint id="waypoint1" for="@(.ad-unit)" forContext="@(#mainForm .pe-layout-pane-content)"
             offset="'bottom-in-view'" triggerOnce="true">
    <p:ajax event="reached" onstart="$(cfg.ext.waypoint).addClass('active')"
            listener="#{scrollAnalyticsController.adInView}" update="growl"/>
</pe:waypoint>
    
<pe:waypoint id="waypoint2" for="container" forContext="@(#mainForm .pe-layout-pane-content)"
             offset="function(){return $.waypoints('viewportHeight') - $(this).height()}">
    <pe:javascript event="reached" execute="$('#article-finished').toggleClass('hiding', ext.direction === 'up');"/>
</pe:waypoint>

<h:outputScript id="waypointScript" target="body">
/* <![CDATA[ */
    $(document).ready(function() {
        $('body').append($("<div class='ui-widget ui-widget-header hiding' id='article-finished'>" +
            "Congrats! You have finished reading the articles.</div>"));
    });
/* ]]> */
</h:outputScript>
    
<h:outputStylesheet id="waypointCSS">
    #wrapper {
        width: 460px;
        margin: 0 auto 0 auto;
        overflow: hidden;
    }
    
    .ad-unit {
        padding :10px;
        margin: 16px 0;
        border: 1px solid #000;
        color: #000;
        text-align: center;
        height: 40px;
        line-height: 40px;
        background: #fafad2;
        -webkit-transition: background-color 500ms ease-in-out;
        -moz-transition: background-color 500ms ease-in-out;
        transition: background-color 500ms ease-in-out;
    }
    
    .ad-unit.active {
        background: #faa7a7;
    }
    
    #article-finished {
        position: fixed;
        z-index: 999;
        bottom: 20px;
        right: 20px;
        padding: 15px;
        font-weight: bold;
        font-size: 14px;
        border: solid 2px;
        width: 300px;
        -webkit-transition: right 700ms ease-in-out;
        -moz-transition: right 700ms ease-in-out;
        transition: right 700ms ease-in-out;
    }
    
    #article-finished.hiding {
        right: -340px;
    }
</h:outputStylesheet>
            
Components and more
Documentation pe:waypoint
Attributes (move mouse over the names to see data types)
Name Description
id Unique identifier of the component in a namingContainer.
rendered Boolean value to specify the rendering of the component, when set to false component will not be rendered.
binding An EL expression referring to a server side UIComponent instance in a backing bean.
widgetVar Name of the client side widget.
for The target component registered as waypoint. If null, the parent component will be taken as target. Default is null.
forContext The context defines which scrollable element the waypoint belongs to and acts within. It can be a component or plain HTML element like a div. Default is window if nothing specified.
enabled If false, this waypoint will be created but will be disabled from triggering. You can call widget's method "enable" to turn it back on. Default is true.
horizontal Default waypoints live on the vertical axis. Their offset is calculated in relation to the top of the viewport and they listen for vertical scroll changes. If horizontal is set to true, offset is calculated in relation to the left of the viewport and listens for horizontal scroll changes. For instance, the value 50 means "when the left side of this element reaches 50px from the left side of the viewport". Default is false.
offset This option determines how far the top of the element must be from the top of the viewport to trigger a waypoint (callback function). It can be a number, which is taken as a number of pixels (can be also negativ, e.g. -10), a string representing a percentage of the viewport height (e.g. '50%') or a function that will return a number of pixels. Default is 0.
continuous If true, and multiple waypoints are triggered in one scroll, this waypoint will trigger even if it is not the last waypoint reached. If false, it will only trigger if it is the last waypoint. Default is true.
triggerOnce If true, the waypoint will be destroyed when triggered. Default is false.
Events (move mouse over the names to see classes)
Name Description
reachedfired when the user scrolls past the element.
PrimeFaces Extensions Showcase - © 2011-2023,PrimeFaces: 13.0.0,PrimeFaces Extensions: 13.0.1,JSF: Apache MyFaces JSF-2.3 Core Impl 2.3.10,Server: jetty/9.4.36.v20210114,Build time: 2023-09-11 19:07