p:schedule is causing my page to blink

UI Components for JSF
Post Reply
smithh032772
Posts: 6144
Joined: 10 Sep 2011, 21:10

21 Oct 2011, 21:11

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

Code: Select all

<?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

Code: Select all

<?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

Code: Select all

<?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

Code: Select all

/*
 * 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 6.0, Extensions 6.0.0, Push (Atmosphere 2.4.0)
TomEE+ 1.7.4 (Tomcat 7.0.68), MyFaces Core 2.2.9, JDK8
JUEL 2.2.7 | OmniFaces | EclipseLink-JPA/Derby | Chrome

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

smithh032772
Posts: 6144
Joined: 10 Sep 2011, 21:10

22 Oct 2011, 17:35

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 6.0, Extensions 6.0.0, Push (Atmosphere 2.4.0)
TomEE+ 1.7.4 (Tomcat 7.0.68), MyFaces Core 2.2.9, JDK8
JUEL 2.2.7 | OmniFaces | EclipseLink-JPA/Derby | Chrome

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

smithh032772
Posts: 6144
Joined: 10 Sep 2011, 21:10

22 Oct 2011, 17:42

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.

Code: Select all

public ScheduleModel getLazyScheduleModel() {
        
        return lazyScheduleModel;
}
Howard

PrimeFaces 6.0, Extensions 6.0.0, Push (Atmosphere 2.4.0)
TomEE+ 1.7.4 (Tomcat 7.0.68), MyFaces Core 2.2.9, JDK8
JUEL 2.2.7 | OmniFaces | EclipseLink-JPA/Derby | Chrome

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

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 27 guests