Hi Folks,

A new page feature has been added

.pageloading-mask div {
    height: 100%;
    background: url(pageloader-mask.gif) no-repeat center center;
}

and its nice but I have an instance where itas gone out of state and my page is 
getting stuck on render.

My website demo

http://psinh.ddns.net:9011/psi/home

after logging in administrator/administrator

list Years link on left nav block

and the List.java page gets hung within the pageloadingmask logic

I dont know whats tripping it up

I free'd up my formState=NONE which brought some relief to my gallery images 
but this bug just started and I am not sure whats causing it.

Here is the list page.

If you spot anything I would sure like to know. THANKS  (it only seems to 
happen on LIST page only)

------ List.tml ------  List.java below ---------------
<t:layout title="title" 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"; 
xmlns:p="tapestry:parameter">

    <h1>${title}</h1>

    <nav class="navbar navbar-default" role="navigation">
        <div class="container-fluid">
        <t:if test="modelSearch.searchable">
            <t:form t:id="fulltextSearch" class="navbar-form navbar-left" 
role="search">
                <t:zone t:id="termsZone">
                    <div class="form-group">
                        <t:textfield t:id="searchTerms" 
value="modelSearch.searchTerms" t:mixins="tynamo/zoneUpdater" 
t:clientEvent="change" t:event="searchTermsChanged" t:zone="termsZone" 
class="form-control"/>
                    </div>
                    <button type="submit" class="btn btn-default" 
onclick="$(searchFilterForm).submit()">Search</button>
                    <t:delegate to="resultcountBlock"/>
                </t:zone>
            </t:form>
            <p:else >
                <t:delegate to="resultcountBlock"/>
            </p:else>
        </t:if>
        <div class="container-fluid" style="margin-right:20px">
            <ul class="nav navbar-nav navbar-right">
                <li>
                    <t:pagelink page="Add" context="beanType">
                        <i class="fa fa-plus"></i>
                        ${newlinkMessage}</t:pagelink>
                </li>
            </ul>
        </div>
        </div>
    </nav>

    <t:block t:id="resultcountBlock">
        <t:if test="modelSearch.searchCriteriaSet">
            ${modelSearch.gridDataSource.availableRows} results (<t:actionlink 
t:id="resetSearchCriteria">${beanCount} total</t:actionlink> )
        </t:if>
    </t:block>

    <br/>
    <br/>

    <t:grid t:id="grid" source="modelSearch.gridDataSource" row="bean" 
inPlace="true" add="__id__" reorder="__id__" t:mixins="tynamo/BeanModelAdvisor">
    <p:__id__header>
        </p:__id__header>
        <p:__id__cell>
            <t:pagelink t:page="Show" 
context="showPageContext"><t:tynamo.identifier object="bean"/></t:pagelink>
        </p:__id__cell>
        <p:empty>
            <div class="panel panel-info">
                <div class="panel-heading">
                    <h3 class="panel-title">There is no data to display.</h3>
                </div>
                <div class="panel-body" align="center">
                    There is no data to display. You can <t:pagelink page="Add" 
context="beanType">add some</t:pagelink>
                </div>
            </div>
        </p:empty>
    </t:grid>


    <br/>
    <br/>
    <div t:id="modelSearch"/>

</t:layout>

-----------------------------------------------------------

package org.tynamo.psi.psi.pages;

import org.apache.tapestry5.Block;
import org.apache.tapestry5.EventConstants;
import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SetupRender;
import org.apache.tapestry5.corelib.components.Grid;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;
import org.tynamo.hibernate.components.HibernateModelSearch;
import org.tynamo.routing.annotations.At;
import org.tynamo.services.PersistenceService;
import org.tynamo.util.TynamoMessages;
import org.tynamo.util.Utils;

/**
 * Page for listing elements of a given type.
 *
 * @note:
 * When extending this page for customization purposes, it's better to copy & 
paste code than trying to use inheritance.
 *
 */
@At("/{0}")
public class List
{

    @Inject
    private PersistenceService persistenceService;

    @Inject
    private Messages messages;

    @Property(write = false)
    private Class beanType;

    @Property
    private Object bean;

    @Inject
    @Property
    private Block resultcountBlock;

    @InjectComponent
    private Grid grid;

    @Component(parameters = "beanType=beanType")
    @Property(write = false)
    private HibernateModelSearch modelSearch;

    @OnEvent(EventConstants.ACTIVATE)
    Object onActivate(Class clazz)
    {
        if (clazz == null) return Utils.new404(messages);
        this.beanType = clazz;
        return null;
    }

    @OnEvent(EventConstants.PASSIVATE)
    Object[] passivate()
    {
        return new Object[]{beanType};
    }

    /**
     * This is where you can perform any one-time per-render setup for your 
component. This is a good place to read
     * component parameters and use them to set temporary instance variables.
     * More info: http://tapestry.apache.org/tapestry5.1/guide/rendering.html
     * {@see org.apache.tapestry5.annotations.SetupRender}
     */
    @SetupRender
    void setupRender()
    {
        //grid.reset();
    }

    public Object[] getShowPageContext()
    {
        return new Object[]{beanType, bean};
    }

    public String getTitle()
    {
        return TynamoMessages.list(messages, beanType);
    }

    public String getNewLinkMessage()
    {
        return TynamoMessages.add(messages, beanType);
    }

    void onActionFromResetSearchCriteria() {
        modelSearch.resetSearchCriteria();
    }

    @Inject
    private Request request;

    void onSearchTermsChanged() {
        String searchTerms = request.getParameter("param");
        if (searchTerms != null) modelSearch.setSearchTerms(searchTerms);
        // return request.isXHR() ? termZone.getBody() : null;
    }

    public int getBeanCount() {
        return persistenceService.count(beanType);
    }

}



                                          

Reply via email to