Problem with schedule component

UI Components for JSF
Post Reply
Rombau
Posts: 4
Joined: 02 Apr 2011, 18:12

02 Apr 2011, 18:28

Hello guys. I am new and this is my first message.

Firsly i want to felicity the PrimeFaces' Developement Team for their work.

I post this message because I need your help.

I have try to integrate the schedule component to my application but there ares some problem. Firstly the component doesn't works for chrome browser.
Secondly with other navigator i can just see the schedule but i can't see the event that i have create in my code or add new event. The dialog module don't appear.


This is my html page:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <!-- h:head>
        <style type="text/css" media="screen">@import "css/style.css";</style>
        <style type="text/css" media="screen">@import "css/table.css";</style>
    </h:head -->
    <h:body>
        <ui:composition template="layout.xhtml">

            <ui:define name="titre">Gestion des cours</ui:define>

            <ui:define name="centre">

                <h1>Cours</h1>



<h:form>

	<p:ajaxStatus style="height:24px;display:block;">
		<f:facet name="start">
			<h:graphicImage value="ee" />
		</f:facet>

		<f:facet name="complete">
			<h:outputText value="ee" />
		</f:facet>
	</p:ajaxStatus>

	<p:growl id="messages" showDetail="true" />

	<p:schedule value="#{scheduleController.eventModel}"
                editable="true" widgetVar="myschedule"
                eventSelectListener="#{scheduleController.onEventSelect}"
                dateSelectListener="#{scheduleController.onDateSelect}"
                eventMoveListener="#{scheduleController.onEventMove}"
                eventResizeListener="#{scheduleController.onEventResize}"
                onEventMoveUpdate="messages" onEventResizeUpdate="messages"
                onDateSelectUpdate="eventDetails" onDateSelectComplete="eventDialog.show()"
                onEventSelectUpdate="eventDetails" onEventSelectComplete="eventDialog.show()">

    </p:schedule>

    <p:dialog widgetVar="eventDialog" header="Event Details" showEffect="clip" hideEffect="clip">
        <h:panelGrid id="eventDetails" columns="2">
            <h:outputLabel for="title" value="Title:" />
            <p:inputText id="title" value="#{scheduleController.event.title}" />

            <h:outputLabel for="from" value="From:" />
            <p:inputMask id="from" mask="99/99/9999"
                value="#{scheduleController.event.startDate}" >
                <f:convertDateTime pattern="dd/MM/yyyy" />
            </p:inputMask>

            <h:outputLabel for="to" value="To:" />
            <p:inputMask id="to" mask="99/99/9999"
                value="#{scheduleController.event.endDate}" >
                <f:convertDateTime pattern="dd/MM/yyyy" />
            </p:inputMask>

            <h:outputLabel for="allDay" value="All Day:" />
            <h:selectBooleanCheckbox id="allDay"
                value="#{scheduleController.event.allDay}" />

            <p:commandButton type="reset" value="Reset" />
            <p:commandButton value="Save"
                oncomplete="myschedule.update();eventDialog.hide();"
                actionListener="#{scheduleController.addEvent}" />
        </h:panelGrid>
    </p:dialog>

</h:form>


                <table id="box-table-a" summary="Employee Pay Sheet">
                    <thead>
                        <tr>
                            <th scope="col">/</th>
                            <th scope="col">Lundi 14/02</th>
                            <th scope="col">Mardi 15/02</th>
                            <th scope="col">Mercredi 16/02</th>
                            <th scope="col">Jeudi 17/02</th>
                            <th scope="col">Vendredi 18/02</th>
                            <th scope="col">Samedi 19/02</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>8h-9h</td>
                            <td></td>
                            <td></td>
                            <td>Mathématiques <small>B01</small></td>
                            <td></td>
                            <td></td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>9h-10h</td>
                            <td>Mathématiques <small>B01</small></td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>10h-11h</td>
                            <td>Mathématiques <small>B01</small></td>
                            <td></td>
                            <td></td>
                            <td>Français <small>B12</small></td>
                            <td>Anglais <small>B33</small></td>
                            <td>Français <small>B12</small></td>
                        </tr>
                        <tr>
                            <td>11h-12h</td>
                            <td>Mathématiques <small>B01</small></td>
                            <td>Français <small>B12</small></td>
                            <td>Français <small>B12</small></td>
                            <td></td>
                            <td></td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>12h-14h</td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>14h-15h</td>
                            <td>Francais<small>B01</small></td>
                            <td>Anglais <small>B33</small></td>
                            <td>Anglais <small>B33</small></td>
                            <td></td>
                            <td></td>
                            <td></td>
                        </tr>


                    </tbody>
                </table>


                <div id="previous_next">
                    <div id="previous"><a href=""> Semaine précédente</a> </div>
                    <div id="next"><a href="">Semaine suivante </a></div>
                </div>



            </ui:define>
        </ui:composition>
    </h:body>
</html>
This is my java Bean

Code: Select all

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ecole.controleur;

/**
 *
 * @author Romain
 */

import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import javax.annotation.ManagedBean;

import javax.faces.application.FacesMessage;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.event.DateSelectEvent;
import org.primefaces.event.ScheduleEntryMoveEvent;
import org.primefaces.event.ScheduleEntryResizeEvent;
import org.primefaces.event.ScheduleEntrySelectEvent;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.LazyScheduleModel;
import org.primefaces.model.ScheduleEvent;
import org.primefaces.model.ScheduleModel;

@ManagedBean
@SessionScoped
public class ScheduleController implements Serializable{

        private ScheduleModel eventModel;

        private ScheduleModel lazyEventModel;

        private ScheduleEvent event = new DefaultScheduleEvent();

        private String theme;

        public ScheduleController() {
             
            eventModel = new DefaultScheduleModel();
           //     eventModel.addEvent(new DefaultScheduleEvent("Champions League Match", previousDay8Pm(), previousDay11Pm()));
           //     eventModel.addEvent(new DefaultScheduleEvent("Birthday Party", today1Pm(), today6Pm()));
           //     eventModel.addEvent(new DefaultScheduleEvent("Breakfast at Tiffanys", nextDay9Am(), nextDay11Am()));
           //     eventModel.addEvent(new DefaultScheduleEvent("Plant the new garden stuff", theDayAfter3Pm(), fourDaysLater3pm()));

                lazyEventModel = new LazyScheduleModel() {

                        @Override
                        public void loadEvents(Date start, Date end) {
                                clear();

                                Date random = getRandomDate(start);
                                addEvent(new DefaultScheduleEvent("Lazy Event 1", random, random));

                                random = getRandomDate(start);
                                addEvent(new DefaultScheduleEvent("Lazy Event 2", random, random));
                        }
                };
        }

        public Date getRandomDate(Date base) {
                Calendar date = Calendar.getInstance();
                date.setTime(base);
                date.add(Calendar.DATE, ((int) (Math.random()*30)) + 1);        //set random day of month
                return date.getTime();
        }

        public Date getInitialDate() {
                Calendar calendar = Calendar.getInstance();
                calendar.set(calendar.get(Calendar.YEAR), Calendar.FEBRUARY, calendar.get(Calendar.DATE), 0, 0, 0);

                return calendar.getTime();
        }

        public ScheduleModel getEventModel() {
                return eventModel;
        }

        public ScheduleModel getLazyEventModel() {
                return lazyEventModel;
        }

        private Calendar today() {
                Calendar calendar = Calendar.getInstance();
                calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), 0, 0, 0);

                return calendar;
        }

        private Date previousDay8Pm() {
                Calendar t = (Calendar) today().clone();
                t.set(Calendar.AM_PM, Calendar.PM);
                t.set(Calendar.DATE, t.get(Calendar.DATE) - 1);
                t.set(Calendar.HOUR, 8);

                return t.getTime();
        }

        private Date previousDay11Pm() {
                Calendar t = (Calendar) today().clone();
                t.set(Calendar.AM_PM, Calendar.PM);
                t.set(Calendar.DATE, t.get(Calendar.DATE) - 1);
                t.set(Calendar.HOUR, 11);

                return t.getTime();
        }

        private Date today1Pm() {
                Calendar t = (Calendar) today().clone();
                t.set(Calendar.AM_PM, Calendar.PM);
                t.set(Calendar.HOUR, 1);

                return t.getTime();
        }

        private Date theDayAfter3Pm() {
                Calendar t = (Calendar) today().clone();
                t.set(Calendar.DATE, t.get(Calendar.DATE) + 2);
                t.set(Calendar.AM_PM, Calendar.PM);
                t.set(Calendar.HOUR, 3);

                return t.getTime();
        }

        private Date today6Pm() {
                Calendar t = (Calendar) today().clone();
                t.set(Calendar.AM_PM, Calendar.PM);
                t.set(Calendar.HOUR, 6);

                return t.getTime();
        }

        private Date nextDay9Am() {
                Calendar t = (Calendar) today().clone();
                t.set(Calendar.AM_PM, Calendar.AM);
                t.set(Calendar.DATE, t.get(Calendar.DATE) + 1);
                t.set(Calendar.HOUR, 9);

                return t.getTime();
        }

        private Date nextDay11Am() {
                Calendar t = (Calendar) today().clone();
                t.set(Calendar.AM_PM, Calendar.AM);
                t.set(Calendar.DATE, t.get(Calendar.DATE) + 1);
                t.set(Calendar.HOUR, 11);

                return t.getTime();
        }

        private Date fourDaysLater3pm() {
                Calendar t = (Calendar) today().clone();
                t.set(Calendar.AM_PM, Calendar.PM);
                t.set(Calendar.DATE, t.get(Calendar.DATE) + 4);
                t.set(Calendar.HOUR, 3);

                return t.getTime();
        }

        public ScheduleEvent getEvent() {
                return event;
        }

        public void setEvent(ScheduleEvent event) {
                this.event = event;
        }

        public void addEvent(ActionEvent actionEvent) {
                if(event.getId() == null)
                        eventModel.addEvent(event);
                else
                        eventModel.updateEvent(event);

                event = new DefaultScheduleEvent();
        }

        public void onEventSelect(ScheduleEntrySelectEvent selectEvent) {
                event = selectEvent.getScheduleEvent();
        }

        public void onDateSelect(DateSelectEvent selectEvent) {
                event = new DefaultScheduleEvent(Math.random() + "", selectEvent.getDate(), selectEvent.getDate());
        }

        public void onEventMove(ScheduleEntryMoveEvent event) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Event moved", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());

                addMessage(message);
        }

        public void onEventResize(ScheduleEntryResizeEvent event) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Event resized", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());

                addMessage(message);
        }

        private void addMessage(FacesMessage message) {
                FacesContext.getCurrentInstance().addMessage(null, message);
        }

        public String getTheme() {
                return theme;
        }

        public void setTheme(String theme) {
                this.theme = theme;
        }
}
And this is my web.xml

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>ecole</display-name>
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>redmond</param-value>
    </context-param>
    <welcome-file-list>
        <welcome-file>utilisateurs.jsf</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

</web-app>
I use netbeans 6.9.1 with primefaces 2.2.1 And the Glassfish server with JSF

thanks for your help and sorry for my bad english

Rombau
Posts: 4
Joined: 02 Apr 2011, 18:12

02 Apr 2011, 19:38

I resolve my problem with chrome.

I have add this to my template page

Code: Select all

<f:view contentType="text/html">
But the others problems persist

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

03 Apr 2011, 11:39

Welcome to PrimeFaces,

What do you mean by "other navigator"?

Rombau
Posts: 4
Joined: 02 Apr 2011, 18:12

03 Apr 2011, 12:17

Other browser like firefox, opera and IE.

ArchiMage
Posts: 5
Joined: 14 Apr 2011, 06:54

14 Apr 2011, 08:03

I've same problem - Schedule is'nt editable in any browser of IE9, IE8, Chrome12, FF4.
Sample from your site used.

Primefaces 2.2
JSF 2.0
Glassfish 3.1

ora1521
Posts: 32
Joined: 12 Apr 2011, 13:44
Location: Warsaw, Poland

09 Jun 2011, 14:36

Hi,

I have the same problem. The trick with f:view was very useful with Chrome, but edditing is not working. :( Do you maybe have any hints? PF 3.0?

BR,

Lukasz

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 31 guests