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);
}
}