IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

PrimeFaces Shedule add/resize/move


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut PrimeFaces Shedule add/resize/move
    Bonjour à tous ,

    J'ai encore des soucis avec le schedule de primefaces 3.2

    Tout d'abord à la création d'un événement je voulais y ajouter l'heure de début et de fin donc voila ce que j'ai fais :

    XHTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    <p:dialog widgetVar="detailModal" header="Event Details" showEffect="clip" hideEffect="clip">  
                  <h:panelGrid id="eventDetails" columns="2">  
                    <h:outputLabel for="title" value="Title:" />  
                    <p:inputText id="title" value="#{calendrierSessionBeanOld.event.title}" required="false"/>  
                    <h:outputLabel for="from" value="Du:" />  
                    <p:inputMask id="from" value="#{calendrierSessionBeanOld.event.startDate}" mask="99/99/9999">  
                      <f:convertDateTime pattern="dd/MM/yyyy" />  
                    </p:inputMask>                                  
                    <h:outputLabel for="to" value="Au:" />  
                    <p:inputMask id="to" value="#{calendrierSessionBeanOld.event.endDate}" mask="99/99/9999">  
                      <f:convertDateTime pattern="dd/MM/yyyy" />  
                    </p:inputMask> 
                    <h:outputLabel value="De:" />  
                    <p:calendar value="#{calendrierSessionBeanOld.heureDeb}" pattern="HH:mm" timeOnly="true" size="4"/>
                    <h:outputLabel value="A:" />  
                    <p:calendar value="#{calendrierSessionBeanOld.heureFin}" pattern="HH:mm" timeOnly="true" size="4"/>
                    <h:outputLabel for="allDay" value="All Day:" />  
                    <h:selectBooleanCheckbox id="allDay" value="#{calendrierSessionBeanOld.event.allDay}" />  
     
                   <p:commandButton type="reset" value="Reset" />  
                   <p:commandButton value="Save" actionListener="#{calendrierSessionBeanOld.addEvent()}" oncomplete="myschedule.update();detailModal.hide();"/>  
                 </h:panelGrid>
    BEAN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    public class CalendrierSessionBeanOld{
     
     
     
     
     
        private ScheduleModel eventModel;
        private int slot;
        private String view ;
        private Date date;
        private Date dateDebut;
        private Date dateFin;
     
        private ScheduleEvent event;
        private Date heureDeb;
        private Date heureFin;
     
    public void addEvent() {  
     
           dateDebut = event.getStartDate();
           dateFin = event.getEndDate();
     
             if(event.getId() == null){
                event.getStartDate().setTime(ajoutDeHeure(dateDebut, heureDeb).getTime());
                event.getEndDate().setTime(ajoutDeHeure(dateFin, heureFin).getTime());
                eventModel.addEvent(event);  
             }else{
                event.getStartDate().setTime(ajoutDeHeure(dateDebut, heureDeb).getTime());
                event.getEndDate().setTime(ajoutDeHeure(dateFin, heureFin).getTime());
                eventModel.updateEvent(event);  
             }
            event = new DefaultScheduleEvent();  
        } 
     
     
     
       public Date ajoutDeHeure(Date dateRef,Date heure){
          Date dateFinal = new Date();
     
           Calendar calendarDateRef=Calendar.getInstance();
          calendarDateRef.setTime(dateRef); 
     
           Calendar calendarDateHeure=Calendar.getInstance();
           calendarDateHeure.setTime(heure); 
     
          calendarDateRef.set(Calendar.HOUR,calendarDateHeure.get(Calendar.HOUR));
          calendarDateRef.set(Calendar.MINUTE,calendarDateHeure.get(Calendar.MINUTE));
     
     
          dateFinal.setTime(calendarDateRef.getTimeInMillis()); 
     
          return dateFinal;
       }
    Cela fonctionne et même sur plusieurs jour sauf quand l'heure de début ou de fin et après 12H (pb je pense d'AM/PM) je ne sais pas comment résoudre mon problème.


    Ensuite j'ai toujours un décalage d'une heure qui à mon avis est du à l'heure d'hiver/été mais la encore je ne sais pas comment faire ?


    Pour finir lorsqu'on utilise le eventResize je ne sais pas comment mettre à jour l'event quelqu'un aurait-il un exemple ?

    D'avance merci

  2. #2
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Salut,

    tu () es sûr que c'est bien ça que tu veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    calendarDateRef.set(Calendar.HOUR,calendarDateHeure.get(Calendar.HOUR));
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    calendarDateRef.add(Calendar.HOUR,calendarDateHeure.get(Calendar.HOUR));

    sinon sur tes instances de Calendar ... que donne un "getTimeZone()" en debug ? ainsi que la locale ?

  3. #3
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Autre piste de travail : essaye d'utiliser Apache Commons Date, qui travaille directement sur des Date et pas des Calendar, ce qui pourrait éviter d'avoir de problème de conversion pour satisfaire au ScheduleEvent de PrimeFaces.

    http://commons.apache.org/lang/api-r...DateUtils.html


    DateUtils fait partie de "Commons Lang" :
    http://commons.apache.org/lang/

    Tu as les méthodes utilitaires statiques "addHours(Date date, int amount)" et "addMinutes(Date date, int amount)" qui pourraient te servir.

  4. #4
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut
    Citation Envoyé par fxrobin Voir le message
    Salut,

    tu () es sûr que c'est bien ça que tu veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    calendarDateRef.set(Calendar.HOUR,calendarDateHeure.get(Calendar.HOUR));
    oui car je veux remplacer l'heure et non pas ajouter une durée

    Sinon voici le résultat du getTimeZone

    INFO: sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]


    je joint aussi le script du schedule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     <script type="text/javascript">
            PrimeFaces.locales ['fr'] = {
            closeText: 'Fermer',
            prevText: 'Précédent',
            nextText: 'Suivant',
            monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre' ],
            monthNamesShort: ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Jun', 'Jul', 'Aoû', 'Sep', 'Oct', 'Nov', 'Déc' ],
            dayNames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
            dayNamesShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
            dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
            weekHeader: 'Semaine',
            firstDay: 1,
            isRTL: false,
            showMonthAfterYear: false,
            yearSuffix:'',
            timeOnlyTitle: 'Choisir l\'heure',
            timeText: 'Heure',
            hourText: 'Heures',
            minuteText: 'Minutes',
            secondText: 'Secondes',
            currentText: 'Maintenant',
            ampm: false,
            month: 'Mois',
            week: 'Semaine',
            day: 'Jour',
            allDayText: 'Toute la journée'
            };
            </script>
    le AMPM est bien a FALSE

    c'est chouette de vous savoir sur ce forum

  5. #5
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    regarde ma réponse que j'ai faite dans l'intervalle, juste au dessus la tienne, concernant DateUtils

  6. #6
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut
    Citation Envoyé par fxrobin Voir le message
    regarde ma réponse que j'ai faite dans l'intervalle, juste au dessus la tienne, concernant DateUtils
    Alors effectivement il y avait un problème de conversion voila ce que donne le nouveau code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     public Date ajoutDeHeure(Date dateRef,Date heure){
          Date dateFinal = new Date();
     
         int i = (int) DateUtils.getFragmentInHours(heure, Calendar.DAY_OF_YEAR);
         dateFinal = DateUtils.setHours(dateRef,i);
     
          return dateFinal;
    En plus c'est bcp plus léger

    maintenant j'ai toujours le souci des une heure de décallage je lui met 14 H il me le place à 13H et les dates en entrée sont bonnes

    merci pour ton aide

  7. #7
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    dans ta partie JAVA est-ce que tu peux debugguer pour voir si la date finale contient la bonne heure, comme ça on isolerait le problème entre la partie purement "Date" de la partie "affichage PrimeFaces".

  8. #8
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut
    voila

    INFO: valeur en heure13
    INFO: date finalWed Apr 25 13:00:00 CEST 2012
    INFO: date de début chargée dans l'eventWed Apr 25 13:00:00 CEST 2012
    INFO: valeur en heure17
    INFO: date finalWed Apr 25 17:00:00 CEST 2012
    INFO: date de fin chargée dans l'eventWed Apr 25 17:00:00 CEST 2012

    il me l'a placé à midi et fin 16H

    j'ai mis le code ou l'event est chargé avec sa nouvelle heure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    dateDebut = event.getStartDate();
           dateFin = event.getEndDate();
     
             if(event.getId() == null){
                event.getStartDate().setTime(ajoutDeHeure(dateDebut, heureDeb).getTime());
                System.out.println("date de début chargée dans l'event"+event.getStartDate().toString());
                event.getEndDate().setTime(ajoutDeHeure(dateFin, heureFin).getTime());
                System.out.println("date de fin chargée dans l'event"+event.getEndDate().toString());
                eventModel.addEvent(event);  
             }else{
                event.getStartDate().setTime(ajoutDeHeure(dateDebut, heureDeb).getTime());
     
                event.getEndDate().setTime(ajoutDeHeure(dateFin, heureFin).getTime());
     
                eventModel.updateEvent(event);  
             }
            event = new DefaultScheduleEvent();  
        }

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Par défaut
    Voici un sujet qui t'aideras surement à ton problème d'heure d'été

    Lien

  10. #10
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Essaye en mettant l'heure de début et de fin dans un Calendar, et affiche l'instance de Calendar pour voir s'il prend en compte le TimeZone.

    ps : les dates, c'est chiant ... quand on a pas le choix ...

  11. #11
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut
    J'ai trouvé les dates que je renvoie sont en CEST normal .

    Sauf que par défaut le schedule est en CET .

    Facile suffit de mettre le parametre TimeZone du schedule en "CEST"

    et bien non ! il ne connait pas cette abréviation par contre "MESZ" c'est good.

    oui mais que se passera t-il au passage à l'heure d'hiver ?? et bien je suppose que ça ne marchera plus.

    Il va donc falloir que je change ce paramétre en fonction du timeZone

  12. #12
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut
    en fait je me suis avancé ca fonctionne avec EET mais pas MESZ

    en toute franchise ça commence à me les briser ces histoires de dates

  13. #13
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Salut,

    c'est résolu alors ?

  14. #14
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2011
    Messages : 33
    Par défaut
    Salut,

    Bon hier j'étais en réunion d'itération presque toute la journée donc pas eue le temps de me pencher sur le problème.

    Et ce matin j'ai trouvé la solution radicale

    Ouvrir la console Glassfish -> JVM -> optionJVM ->Ajouter " -Duser.timezone=UTC"

    et voila plus d'heure d'été/hiver juste des heures

    Bien sur on fait la même avec tomcat

    Ceci dit je pense qu'il y a un bug avec le schedule qui ne connait pas UTSC

    Je met le post en résolu mais si quelqu'un un jour à une autre solution ?

    merci pour ton aide

  15. #15
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Crystal report image move and resize
    Par CLion dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 08/09/2014, 02h57
  2. Primefaces Shedule slotMinute
    Par luperrot dans le forum JSF
    Réponses: 5
    Dernier message: 23/04/2012, 14h47
  3. composant move resize
    Par tintin62 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2009, 14h05
  4. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 23h23
  5. add int
    Par Bernybon dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/02/2004, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo