Board index JavaServer Faces General p:schedule is causing my page to blink

p:schedule is causing my page to blink

Components, Ajax Framework, Utilities and More.


Posts: 5683
My PF3.0M3 JSF web app is pretty well AJAXified, and I really would like to use p:schedule to display a calendar of charter orders populated with events that contain trip_date, return_date, and customer name. When I attempt to load a page with p:schedule, the entire page blinks, possibly because I am using AJAX to load the page via dynamic ui:include after selecting menu option, and I think I read somewhere that AJAX is not allowed with p:Schedule. Please see my code below and confirm or advise.

index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
   
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title><h:outputText value="MCMS"/></title>
        <h:outputStylesheet name="#{PageNavigationController.css}"/>
    </h:head>

    <h:body>
       
        <ui:include src="/header_menubar.xhtml"/>
       
        <p:outputPanel id="pageContentPanel" style="width: 100%; height: 100%">
<!--           
            <p:ajaxStatus>
                <f:facet name="start">
                    <p:outputPanel layout="block" style="z-index:9999; position: absolute; top: 15px; left: 94%;">
                        <p:graphicImage value="/resources/images/loading3.gif" />
                    </p:outputPanel>
                </f:facet>
               
                <f:facet name="error">
                    <p:outputPanel layout="block" style="text-align: center !important;">
                        <h:outputText value="Error on partial page refresh." />
                    </p:outputPanel>
                </f:facet>
               
                <f:facet name="complete">
                   
                </f:facet>
            </p:ajaxStatus>           
-->
            <p:outputPanel layout="block">
                <ui:include src="#{PageNavigationController.page}"/>
            </p:outputPanel>

            <p:messages showDetail="true" showSummary="true" />

        </p:outputPanel>
       
    </h:body>

</html>



header_menubar.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
   
    <ui:composition>
       
        <h:form>
           
            <p:menubar id="pageMenuBar">
               
                <p:submenu label="Orders">
                    <p:menuitem value="Add" update="pageContentPanel"
                                actionListener="#{pf_ordersController.prepareCreate}"/>
                    <p:submenu label="Browse">
                        <p:submenu label="By">
                            <p:menuitem value="Calendar" update="pageContentPanel"
                                        actionListener="#{pf_ordersController.browseOrdersByCalendar}"/>
                            <p:menuitem value="Table" update="pageContentPanel"
                                        actionListener="#{pf_ordersController.browseOrdersByTable}"/>
                        </p:submenu>
                        <p:menuitem value="All" update="pageContentPanel"
                                    actionListener="#{pf_ordersController.browseOrdersAll}"/>
                        <p:submenu label="Booking Status">
                            <p:menuitem value="Definite" update="pageContentPanel"
                                        actionListener="#{pf_ordersController.browseOrdersDefinite}"
                                        helpText="Orders that are CONFIRMED" />
                            <p:menuitem value="Tentative" update="pageContentPanel"
                                        actionListener="#{pf_ordersController.browseOrdersTentative}"
                                        helpText="Orders where CONTRACT or INVOICE SENT" />
                            <p:menuitem value="Quote" update="pageContentPanel"
                                        actionListener="#{pf_ordersController.browseOrdersQuote}"
                                        helpText="Orders where QUOTE SENT" />
                        </p:submenu>
                        <p:menuitem value="Confirmed" update="pageContentPanel"
                                    actionListener="#{pf_ordersController.browseOrdersConfirmed}"/>
                        <p:menuitem value="Contract Not Sent" update="pageContentPanel"
                                    actionListener="#{pf_ordersController.browseOrdersContractNotSent}"/>
                        <p:menuitem value="Delete" update="pageContentPanel"
                                    actionListener="#{pf_ordersController.browseOrdersDelete}"/>
                        <p:menuitem value="Invoice Not Sent" update="pageContentPanel"
                                    actionListener="#{pf_ordersController.browseOrdersInvoiceNotSent}"/>
                        <p:menuitem value="Need Pricing" update="pageContentPanel"
                                    actionListener="#{pf_ordersController.browseOrdersNeedPricing}"/>
                        <p:menuitem value="No Customer" update="pageContentPanel"
                                    actionListener="#{pf_ordersController.browseOrdersNoCustomer}"/>
                        <p:menuitem value="Quote Not Sent" update="pageContentPanel"
                                    actionListener="#{pf_ordersController.browseOrdersQuoteNotSent}"/>
                    </p:submenu>
                </p:submenu>
               
                <p:submenu label="Customers">
                    <p:menuitem value="Add" update="pageContentPanel"
                                actionListener="#{pf_customerController.prepareCreate}"/>
                    <p:menuitem value="Browse" update="pageContentPanel"
                                actionListener="#{pf_customerController.prepareList}"/>
                </p:submenu>
               
                <p:submenu label="Charges">
                    <p:menuitem value="Add" update="pageContentPanel"
                                actionListener="#{pf_chargesController.prepareCreate}"/>
                    <p:menuitem value="Browse" update="pageContentPanel"
                                actionListener="#{pf_chargesController.prepareList}"/>
                </p:submenu>
               
                <p:submenu label="Services">
                    <p:menuitem value="Add" update="pageContentPanel"
                                actionListener="#{pf_serviceController.prepareCreate}"/>
                    <p:menuitem value="Browse" update="pageContentPanel"
                                actionListener="#{pf_serviceController.prepareList}"/>
                </p:submenu>
               
                <p:submenu label="Drivers">
                    <p:menuitem value="Add" update="pageContentPanel"
                                actionListener="#{pf_driverController.prepareCreate}"/>
                    <p:menuitem value="Browse" update="pageContentPanel"
                                actionListener="#{pf_driverController.prepareList}"/>
                </p:submenu>
               
                <p:submenu label="Subcontractors">
                    <p:menuitem value="Add" update="pageContentPanel"
                                actionListener="#{pf_subcontractorController.prepareCreate}"/>
                    <p:menuitem value="Browse" update="pageContentPanel"
                                actionListener="#{pf_subcontractorController.prepareList}"/>
                </p:submenu>
               
                <p:submenu label="Vehicles">
                    <p:menuitem value="Add" update="pageContentPanel"
                                actionListener="#{pf_vehicleController.prepareCreate}"/>
                    <p:menuitem value="Browse" update="pageContentPanel"
                                actionListener="#{pf_vehicleController.prepareList}"/>
                </p:submenu>
               
            </p:menubar>
           
        </h:form>
           
    </ui:composition>
   
</html>



pf_BrowseCalendar.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
   
    <ui:composition>
       
        <h:form id="ordersBrowseForm" onkeypress="disableEnterKey(event)" >
           
            <p:panel header="ORDERS #{pf_ordersController.browseOption}">
               
                <p:schedule value="#{pf_ordersController.lazyScheduleModel}" />

            </p:panel>
           
        </h:form>
       
        <script language="JavaScript">
        function disableEnterKey(e)
        {
             var key;
             if(window.event)
                  key = window.event.keyCode;     //IE
             else
                  key = e.which;     //firefox
             if(key == 13)
                  return false;
             else
                  return true;
        }
        </script>       

    </ui:composition>

</html>




pf_OrdersController.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jsf.orders;

import java.io.Serializable;
import java.text.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.SelectItem;

import jpa.entities.Destination;
import jpa.entities.Orders;
import jpa.entities.OrderNotes;

import jpa.session.OrdersFacade;
import jpa.session.OrderNotesFacade;

import jsf.util.JsfUtil;

import org.primefaces.event.DateSelectEvent;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.LazyScheduleModel;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.ScheduleModel;
import pf.MessagesController;
import pf.PageNavigationController;

/* *** VIEWSCOPED as per BalusC
 * *** http://stackoverflow.com/questions/3180400/recommended-jsf-2-0-crud-frameworks
 * *** http://balusc.blogspot.com/2010/06/benefits-and-pitfalls-of-viewscoped.html
 */
@ManagedBean(name = "pf_ordersController")
@ViewScoped
public class pf_OrdersController implements Serializable {

    private Orders current;
    private OrderNotes currentNotes;
   
    private Orders[] selectedRows;
   
    private LazyDataModel<Orders> lazyModel;
    private ScheduleModel lazyScheduleModel;
   
    @EJB
    private OrdersFacade ejbFacade;
    @EJB
    private OrderNotesFacade ejbFacadeNotes;
   
    private PageNavigationController pageNavigation;
    private MessagesController messages;
   
    private String filterCustomer, filterCustomerPointOfContact, filterDestination;
    private Date filterTripDateFrom, filterTripDateTo;
   
    private String rowPanelStyle;
    private String tableName;
   
    private Boolean browse, add, edit, view, viewToAdd, viewToEdit, addToViewEdit;
   
    /*
     * BROWSE options: All, Confirmed, Delete, Need Pricing, Quote Not Sent
     *
     * Confirmed         orders.confirmed = 'Y'
     * Contract Not Sent orders.confirmed = 'N' and orders.contract_sent = 'N' and orders.total_cost > 0
     * Delete            orders.delete = 'Y' (Yes) *** DO NOT COPY THESE ORDERS via mcmsdbtransfer
     * Invoice Not Sent  orders.confirmed = 'N' and orders.invoice_sent = 'N' and orders.total_cost > 0
     * Need Pricing      orders.total_cost = 0.00  *** CUSTOMER = 'NEED QUOTE'; exclude NO CUSTOMER from this list
     * No Customer       orders.customerId.customerName = 'NO CUSTOMER'
     * Quote Not Sent    orders.confirmed = 'N' and orders.quote_sent = 'N' and orders.total_cost > 0
     *
     */
    private Boolean browseAll, browseConfirmed, browseContractNotSent, browseDefinite, browseDelete, browseInvoiceNotSent;
    private Boolean browseNeedPricing, browseNoCustomer, browseQuote, browseQuoteNotSent, browseTentative;
    private Boolean browseByCalendar, browseByTable;
   
    private String browseOption, browseByCalendarIcon, browseByTableIcon;
   
    // embed HTML in h:outputText via escape="false"
    // <h:outputText escape="false" value="..." />
    private static String br = "<br>";
    private static String iconCheck = "ui-icon-check";
   
    public pf_OrdersController() {
       
        lazyModel = null;
        current = null;
        currentNotes = null;
       
        messages = new MessagesController();

        filterCustomer = "";
        filterCustomerPointOfContact = "";
        filterDestination = "";
        filterTripDateFrom = new Date();
        filterTripDateTo = new Date();
       
        tableName = "orders";
       
        browse = false;
        add = false;
        edit = false;
        view = false;
        viewToAdd = false;
        viewToEdit = false;
        addToViewEdit = false;
       
        // BROWSE ORDERS options: default = ALL
        browseAll = true;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = false;
       
        browseByCalendar = false;
        browseByTable = true;
       
        browseOption = "";
       
        // BROWSE ORDERS BY option: default = TABLE
        browseByCalendarIcon = "";
        browseByTableIcon = iconCheck;
       
        lazyScheduleModel = new LazyScheduleModel() {

            @Override
            public void loadEvents(Date start, Date end) {
                try {
                    // filter by
                    String tripDateFrom = getDateFromDateTime(start);
                    String tripDateTo = getDateFromDateTime(end);
                    List<Orders> filteredList = getFacade().filterBy(browseAll, browseConfirmed, browseContractNotSent, browseDefinite,
                                                                     browseInvoiceNotSent, browseNeedPricing, browseNoCustomer,
                                                                     browseQuote, browseQuoteNotSent, browseTentative,
                                                                     filterCustomer, filterCustomerPointOfContact, filterDestination,
                                                                     tripDateFrom, tripDateTo);
                    Integer listSize = filteredList.size();
                    for (int i = 0; i <= listSize; i++) {
                        Orders order = filteredList.get(i);
                        String title = order.getCustomerId().getCustomerName();
                        Date tripDate = order.getTripDateTime();
                        Date returnDate = order.getReturnDateTime();
                        addEvent(new DefaultScheduleEvent(title, tripDate, returnDate));
                    }
                } catch (ParseException parseException) {
                    parseException.printStackTrace();
                    messages.addFormErrorMsg("Error parsing Trip Date", (parseException.getMessage() != null) ? parseException.getMessage() : "");
                } catch (Exception e) {
                    e.printStackTrace();
                    messages.addFormErrorMsg("Error retrieving list of Orders", (e.getMessage() != null) ? e.getMessage() : "");
                }
            }

        };
       
    } // pf_OrdersController()

    public void browseOrdersAll() {
        browseAll = true;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = false;
        prepareList();
    }

    public void browseOrdersByCalendar() {
        browseByCalendar = true;
        browseByTable = false;
       
        browseByCalendarIcon = (browseByCalendar ? iconCheck : "");
        browseByTableIcon = (browseByTable ? iconCheck : "");
        prepareList();
    }

    public void browseOrdersByTable() {
        browseByTable = true;
        browseByCalendar = false;
       
        browseByCalendarIcon = (browseByCalendar ? iconCheck : "");
        browseByTableIcon = (browseByTable ? iconCheck : "");
        prepareList();
    }

    public void browseOrdersConfirmed() {
        browseAll = false;
        browseConfirmed = true;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = false;
        prepareList();
    }

    public void browseOrdersContractNotSent() {
        browseAll = false;
        browseConfirmed = false;
        browseContractNotSent = true;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = false;
        prepareList();
    }

    public void browseOrdersDefinite() {
        browseAll = false;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = true;
        browseTentative = false;
        browseQuote = false;
        prepareList();
    }

    public void browseOrdersDelete() {
        browseAll = false;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = true;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = false;
        /*
         * DO NOT COPY THESE ORDERS via mcmsdbtransfer
         */
        //prepareList();
    }

    public void browseOrdersInvoiceNotSent() {
        browseAll = false;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = true;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = false;
        prepareList();
    }

    public void browseOrdersNeedPricing() {
        browseAll = false;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = true;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = false;
        prepareList();
    }

    public void browseOrdersNoCustomer() {
        browseAll = false;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = true;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = false;
        prepareList();
    }

    public void browseOrdersQuote() {
        browseAll = false;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = true;
        prepareList();
    }

    public void browseOrdersQuoteNotSent() {
        browseAll = false;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = true;
       
        browseDefinite = false;
        browseTentative = false;
        browseQuote = false;
        prepareList();
    }

    public void browseOrdersTentative() {
        browseAll = false;
        browseConfirmed = false;
        browseContractNotSent = false;
        browseDelete = false;
        browseInvoiceNotSent = false;
        browseNeedPricing = false;
        browseNoCustomer = false;
        browseQuoteNotSent = false;
       
        browseDefinite = false;
        browseTentative = true;
        browseQuote = false;
        prepareList();
    }

    public String getBrowseOption() {
        if (browseAll) {
            browseOption = "";
        }
        else if (browseConfirmed) {
            browseOption = " (CONFIRMED)";
        }
        else if (browseContractNotSent) {
            browseOption = " (CONTRACT NOT SENT)";
        }
        else if (browseDefinite) {
            browseOption = " (BOOKING STATUS: DEFINITE)";
        }
        else if (browseInvoiceNotSent) {
            browseOption = " (INVOICE NOT SENT)";
        }
        else if (browseNeedPricing) {
            browseOption = " (NEED PRICING)";
        }
        else if (browseNoCustomer) {
            browseOption = " (NO CUSTOMER)";
        }
        else if (browseQuote) {
            browseOption = " (BOOKING STATUS: QUOTE)";
        }
        else if (browseQuoteNotSent) {
            browseOption = " (QUOTE NOT SENT)";
        }
        else if (browseTentative) {
            browseOption = " (BOOKING STATUS: TENTATIVE)";
        }
        return browseOption;
    }
   
    public String getBrowseByCalendarIcon() {
        return browseByCalendarIcon;
    }

    public String getBrowseByTableIcon() {
        return browseByTableIcon;
    }

    public LazyDataModel<Orders> getLazyModel() {
       
        try {
            /* *** MAY NEED TO REMOVE if (lazyModel == null) *** */
            if (lazyModel == null) {
               
                // filter by
                String tripDateFrom = getDateFromDateTime(filterTripDateFrom);
                String tripDateTo = getDateFromDateTime(filterTripDateTo);
                lazyModel = new LazyOrdersDataModel(getFacade().filterBy(browseAll, browseConfirmed, browseContractNotSent, browseDefinite,
                                                                         browseInvoiceNotSent, browseNeedPricing, browseNoCustomer,
                                                                         browseQuote, browseQuoteNotSent, browseTentative,
                                                                         filterCustomer, filterCustomerPointOfContact, filterDestination,
                                                                         tripDateFrom, tripDateTo));

            } // lazyModel == null
        } catch (ParseException parseException) {
            parseException.printStackTrace();
            messages.addFormErrorMsg("Error parsing Trip Date", (parseException.getMessage() != null) ? parseException.getMessage() : "");
        } catch (Exception e) {
            e.printStackTrace();
            messages.addFormErrorMsg("Error retrieving list of Orders", (e.getMessage() != null) ? e.getMessage() : "");
        }
        return lazyModel;
    }
   
    public void setLazyModel(LazyDataModel<Orders> lazyModel) {
        this.lazyModel = lazyModel;
    }

    public ScheduleModel getLazyScheduleModel() {
       
        return lazyScheduleModel;
    }
   
    public Boolean getAdd() {
        return add;
    }

    public void setAdd(Boolean add) {
        this.add = add;
    }

    public Boolean getBrowse() {
        return browse;
    }

    public void setBrowse(Boolean browse) {
        this.browse = browse;
    }

    public Boolean getEdit() {
        return edit;
    }

    public void setEdit(Boolean edit) {
        this.edit = edit;
    }

    public Boolean getView() {
        return view;
    }

    public void setView(Boolean view) {
        this.view = view;
    }
   
    private String getDateFromDateTime (Date date) throws ParseException {

        DateFormat formatter;
        String myDate;

        formatter = new SimpleDateFormat("yyyy-MM-dd");
        myDate = formatter.format(date); 

        return myDate;

    } // getYearFromDate
   
    public String getDestinationListDisplay(List<Destination> destinationList) {
        String destination = null;
        if (destinationList != null) {
            for (Destination d : destinationList) {
                if (d.getDestinationTx() != null) {
                    if (destination == null)
                        destination = d.getDestinationTx();
                    else
                        destination += br + d.getDestinationTx();
                }
            }
        }
        if (destination == null)
            destination = new String();
        return destination;
    }

    private OrdersFacade getFacade() {
        return ejbFacade;
    }

    public String getFilterCustomer() {
        return filterCustomer;
    }
   
    public void setFilterCustomer(String filterCustomer) {
        this.filterCustomer = filterCustomer;
    }

    public String getFilterCustomerPointOfContact() {
        return filterCustomerPointOfContact;
    }

    public void setFilterCustomerPointOfContact(String filterCustomerPointOfContact) {
        this.filterCustomerPointOfContact = filterCustomerPointOfContact;
    }

    public String getFilterDestination() {
        return filterDestination;
    }

    public void setFilterDestination(String filterDestination) {
        this.filterDestination = filterDestination;
    }

    public Date getFilterTripDateFrom() {
        return filterTripDateFrom;
    }

    public void setFilterTripDateFrom(Date filterTripDateFrom) {
        this.filterTripDateFrom = filterTripDateFrom;
    }

    public void filterTripDateFromSelected(DateSelectEvent event) {
        filterTripDateFrom = event.getDate();
        if (filterTripDateFrom.after(filterTripDateTo))
            filterTripDateTo = filterTripDateFrom;
        prepareList();
    }
   
    public Date getFilterTripDateTo() {
        return filterTripDateTo;
    }

    public void setFilterTripDateTo(Date filterTripDateTo) {
        this.filterTripDateTo = filterTripDateTo;
    }

    public void filterTripDateToSelected(DateSelectEvent event) {
        filterTripDateTo = event.getDate();
        if (filterTripDateTo.before(filterTripDateFrom)) {
            messages.addFormInfoMsg("Please select Trip Date TO that occurs on same day or after Trip Date FROM.", "");
        }
        else
            prepareList();
    }
   
    public String getNotesDisplay(String notesTx) {
        if (notesTx == null)
            notesTx = new String();
        else
            notesTx = "<pre>" + notesTx + "</pre>";
        return notesTx;
    }

    public String getNotesTx() {
        if (currentNotes == null)
            currentNotes = new OrderNotes(1);
       
        if (currentNotes.getNotesTx() == null)
            currentNotes.setNotesTx("");
           
        return currentNotes.getNotesTx();
    }

    public void setNotesTx(String NotesTx) {
        if (currentNotes == null)
            currentNotes = new OrderNotes(1);
       
        if (currentNotes.getNotesTx() == null)
            currentNotes.setNotesTx("");
       
        currentNotes.setNotesTx(NotesTx);
    }
   
    private PageNavigationController getPageNavigation () {
       
        // get reference to MessagesController managed/session bean
        pageNavigation = (PageNavigationController)
                FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("PageNavigationController");
        return pageNavigation;
    }

    public String getRowPanelStyle() {
/*
        if (messages.anyFormMsg())
            rowPanelStyle = "width:500px !important;";
        else
            rowPanelStyle = "width:350px !important;";
*/
        rowPanelStyle = "width:600px !important;";
        return rowPanelStyle;
    }

    public Orders getSelected() {
        if (current == null) {
            current = new Orders();
            currentNotes = null;
        }
        else {
            if (currentNotes == null)
                currentNotes = current.getNotesId();
        }
        return current;
    }
   
    public Orders[] getSelectedRows() {
        return selectedRows;
    }
   
    public void setSelectedRows(Orders[] selectedRows) {
        this.selectedRows = selectedRows;
    }

    public String getTableName() {
        return tableName;
    }
   
    public String clearFilter() {
        filterCustomer = "";
        filterCustomerPointOfContact = "";
        filterDestination = "";
        filterTripDateFrom = new Date();
        filterTripDateTo = new Date();
        return prepareList();
    }

    public String prepareCancel() {
        if (add) {
            if (getPageNavigation().isPreviousPage("/orders/pf_Browse.xhtml")) {
                if (viewToAdd)
                    prepareView();
                else {
                    getPageNavigation().cancelPage();
                    prepareList();
                }
            }
            else {
                getPageNavigation().setToBlankPage();
            }
        }
        else if (edit) {
            if (viewToEdit)
                prepareView();
            else {
                prepareList();
            }
        }
        else {
            prepareList();
        }
        return null;
    }

    public String prepareList() {
        recreateModel();
        browse = true;
        add = false;
        edit = false;
        view = false;
        viewToAdd = false;
        viewToEdit = false;
        addToViewEdit = false;
        if (browseByCalendar)
            getPageNavigation().setPage("/orders/pf_BrowseCalendar.xhtml");
        else
            getPageNavigation().setPage("/orders/pf_Browse.xhtml");
        return null;
    }

    public String prepareView() {
        if (!addToViewEdit && add) addToViewEdit = true;
        if (!addToViewEdit) {
            if (selectedRows == null || selectedRows.length != 1) {
                messages.addFormInfoMsg("Please select ONE row to view.", "");
                return null;
            }
            else
                current = selectedRows[0];
        }
       
        currentNotes = current.getNotesId();
        browse = false;
        add = false;
        edit = false;
        view = true;
        viewToAdd = false;
        viewToEdit = false;
        getPageNavigation().setPage("/orders/pf_View.xhtml");
       
        return null;
    }

    public String prepareCreate() {
        current = new Orders();
        currentNotes = null;
        viewToAdd = view;
        browse = false;
        add = true;
        edit = false;
        view = false;
        getPageNavigation().setPage("/orders/pf_Add.xhtml");
        return null;
    }

    public String create() {
        try {
            // create OrderNotes, first
            if (currentNotes != null) {
                ejbFacadeNotes.create(currentNotes);
                current.setNotesId(currentNotes);
            }
            // set createdDt to current date/time
            current.setCreatedDt(new Date());
            String ordersName = "";
            /*
             * Exception below is thrown when adding new orders rows to database table
             *
             * Internal Exception: java.sql.SQLIntegrityConstraintViolationException: The statement was aborted
             * because it would have caused a duplicate key value in a unique or primary key constraint or
             * unique index identified by 'ORDER_PK' defined on 'ORDER'.
             *
             * see below articles:
             *
             * http://old.nabble.com/Auto-Increment-Constraint-Error-td18355172.html
             * http://db.apache.org/derby/docs/dev/ref/rrefsqlj81859.html#rrefsqlj81859__rrefsqlj37860
             *
             */
            current.setOrderId(1);
            getFacade().create(current);
            messages.addFormInfoMsg("ORDER added successfully", ordersName);
            prepareView();
        } catch (Exception e) {
            e.printStackTrace();
            messages.addFormErrorMsg("Error adding ORDER", (e.getMessage() != null) ? e.getMessage() : "");
        }
        return null;
    }

    public String prepareEdit() {
        if (!addToViewEdit && add) addToViewEdit = true;
        if (!addToViewEdit) {
            if (selectedRows == null || selectedRows.length != 1) {
                messages.addFormInfoMsg("Please select ONE row to edit.", "");
                return null;
            }
            else
                current = selectedRows[0];
        }
       
        currentNotes = current.getNotesId();
        viewToEdit = view;
        browse = false;
        add = false;
        edit = true;
        view = false;
        getPageNavigation().setPage("/orders/pf_Edit.xhtml");
       
        return null;
    }

    public String update() {
        try {
            // create OrderNotes, first
            if (currentNotes != null) {
                if (current.getNotesId() == null) {
                    ejbFacadeNotes.create(currentNotes);
                    current.setNotesId(currentNotes);
                }
                else {
                    ejbFacadeNotes.edit(currentNotes);
                }
            }
            // set changedDt to current date/time
            String ordersName = "";
            current.setChangedDt(new Date());
            getFacade().edit(current);
            messages.addFormInfoMsg("ORDER updated successfully", ordersName);
        } catch (Exception e) {
            e.printStackTrace();
            messages.addFormErrorMsg("Error updating ORDER", (e.getMessage() != null) ? e.getMessage() : "");
        }
        return prepareView();
    }

    public String confirmDelete() {
        // if no row selected
        if (current == null)
            messages.addFormInfoMsg("Please select row to delete.", "");
        else
            getPageNavigation().setPage("/orders/pf_ConfirmDelete.xhtml");

        return null;
    }

    public String confirmDeleteSelectedRows() {
        // if no rows selected
        if (selectedRows.length == 0)
            messages.addFormInfoMsg("No rows selected.", "");
        else
            getPageNavigation().setPage("/orders/pf_ConfirmDelete.xhtml");

        return null;
    }

    /*
     * delete() not used at all, since /orders/pf_ConfirmDelete.xhtml
     * calls deleteSelectedRows()
     */
    public String delete() {
        performDelete();
        prepareList();
        return null;
    }
   
    private void performDelete() {
        try {
            // to display in SUCCESSFUL delete msg
            String ordersName = "";
            currentNotes = current.getNotesId();
           
            getFacade().remove(current);
            if (currentNotes != null) {
                ejbFacadeNotes.remove(currentNotes);
            }
           
            // SUCCESSFUL delete msg
            messages.addFormInfoMsg("ORDER deleted successfully", ordersName);
           
        } catch (Exception e) {
            e.printStackTrace();
            messages.addFormErrorMsg("Error deleting ORDER", (e.getMessage() != null) ? e.getMessage() : "");
        }
    }

    public String deleteSelectedRows() {
        performDeleteSelectedRows();
        prepareList();
        return null;
    }
   
    private void performDeleteSelectedRows() {
        try {
           
            for (int row = 0; row < selectedRows.length; row++) {
                Orders orders = selectedRows[row];
                OrderNotes orderNotes = orders.getNotesId();
                getFacade().remove(orders);
                if (orderNotes != null) {
                    ejbFacadeNotes.remove(orderNotes);
                }
            }
            messages.addFormInfoMsg("Selected ORDERS deleted successfully", "");
        } catch (Exception e) {
            e.printStackTrace();
            messages.addFormErrorMsg("Error deleting selected ORDERS", (e.getMessage() != null) ? e.getMessage() : "");
        }
    }

    private void recreateModel() {
        lazyModel = null;
        lazyScheduleModel = null;
        current = null;
        currentNotes = null;
        selectedRows = null;
       
    }

    public SelectItem[] getItemsAvailableSelectMany() {
        return JsfUtil.getSelectItems(ejbFacade.findAll(), false);
    }

    /*
     * returned List<Orders> to populate <p:selectOneMenu />
     * <f:selectItems value="#{pf_ordersController.itemsAvailableSelectOne}"
     *                var="orders" itemLabel="#{orders.ordersName}" itemValue="#{orders}"/>
     * http://stackoverflow.com/questions/4595280/jsf-selectonemenu-with-noselectionoption-using-label-as-value
     */
    public List<Orders> getItemsAvailableSelectOne() {
        return getFacade().findAll();
    }
   
    /*
     * Deleted @FacesConverter(...) annotation from jsf.OrdersController.java
     */
    @FacesConverter(forClass = Orders.class)
    public static class OrdersControllerConverter implements Converter {

        public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
            if (value == null || value.length() == 0) {
                return null;
            }
            pf_OrdersController controller = (pf_OrdersController) facesContext.getApplication().getELResolver().
                    getValue(facesContext.getELContext(), null, "pf_ordersController");
            return controller.ejbFacade.find(getKey(value));
        }

        java.lang.Integer getKey(String value) {
            java.lang.Integer key;
            key = Integer.valueOf(value);
            return key;
        }

        String getStringKey(java.lang.Integer value) {
            StringBuffer sb = new StringBuffer();
            sb.append(value);
            return sb.toString();
        }

        public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
            if (object == null) {
                return null;
            }
            if (object instanceof Orders) {
                Orders o = (Orders) object;
                return getStringKey(o.getOrderId());
            } else {
                throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + pf_OrdersController.class.getName());
            }
        }
    }
}




Thanks,
Howard
Howard

PrimeFaces 4.0.x, Extensions 1.2.1, Push (Atmosphere 2.1.1)
TomEE 1.6.1 (Tomcat 7.0.53), MyFaces Core 2.2.2
JUEL 2.2.6 | OmniFaces | EclipseLink-JPA/Derby | Chrome

Java EE 6 Tutorial|NetBeans|Google|Stackoverflow|PrimeFaces|Apache


Posts: 5683
I have made multiple changes in attempt to get this p:schedule working in my JSF PrimeFaces app. The behavior is still the same. Someone, please help me.
Howard

PrimeFaces 4.0.x, Extensions 1.2.1, Push (Atmosphere 2.1.1)
TomEE 1.6.1 (Tomcat 7.0.53), MyFaces Core 2.2.2
JUEL 2.2.6 | OmniFaces | EclipseLink-JPA/Derby | Chrome

Java EE 6 Tutorial|NetBeans|Google|Stackoverflow|PrimeFaces|Apache


Posts: 5683
I've inserted System.out.println() in the following method, and I don't see it called at all. p:schedule is not populated with events, and p:schedule is making the page refresh repeatedly/infinitely for some reason.

public ScheduleModel getLazyScheduleModel() {
       
        return lazyScheduleModel;
}
Howard

PrimeFaces 4.0.x, Extensions 1.2.1, Push (Atmosphere 2.1.1)
TomEE 1.6.1 (Tomcat 7.0.53), MyFaces Core 2.2.2
JUEL 2.2.6 | OmniFaces | EclipseLink-JPA/Derby | Chrome

Java EE 6 Tutorial|NetBeans|Google|Stackoverflow|PrimeFaces|Apache


Return to General