rss
twitter
  • Showcase
  • Carrières
  • Support
  • GitLab
  • Espace client
  • Contact

Horaires personnalisés avec wdCalendar

10

INDEX

Pré-requis

– Utiliser le super plugin jQuery de calendrier : wdCalendar !
– Le fichier a modifier est jquery.calendar.js
– Notre but est de personnaliser les horaires du calendrier dans la vue par jour / semaine, par exemple au lieu de minuit à 24h, on va afficher de 7h à 21h.

Les cycles horaires

Dans la page, faire un rechercher remplacer sur :

var i = 0; i < 24; i++

Remplacer par :

var i = 7; i < 21; i++

L’affichage des plages

Équation à retenir : 1h = 42px

Les hauteurs sont générés dans des blocs de ce type :

ht.push("<div style=\"margin-bottom: -1008px; height:1008px\" class=\"tg-today\">&nbsp;</div>");

Dans notre exemple, faire un rechercher-remplacer de 1008px par 588px (14h x 42px)

Compenser le calcul

Lorsque l’on créé un événement en drag’n’drop, le calcul de la durée est effectué selon la position dans la grille.
On doit donc compenser la customisation de notre grille, ça se passe dans la fonction gH.

Dans notre exemple au lieu de commencer à 0h, la journée commence à 7h. On doit compenser +7h dans le return :

return { sh: t2{{+7}}, sm: t3, eh: t5{{+7}}, em: t6, h: sy2 - sy1 };

Compenser l’affichage

La grille calcule maintenant les horaires correctement, mais l’affichage est un peu biaisé : si on clique sur 7h, l’événement commence bien à 7h mais s’affiche à 14h! On doit modifier la fonction gP :

return (h-7) * 42 + parseInt(m / 60 * 42);

Et voilà !
img2

Voir en ligne : Article basé sur les commentaires du forum du projet

DATE 26 Juin 2012
by : Germain
Author / Auteur

Social Share / Partager

    10 Comments
    1. Superbiche 7 janvier 2013 at 12 h 10 min Répondre

      Superbe tutoriel !!!
      Si je puis me permettre quelques ajouts afin de récupérer les heures de début et fin sur une DB
      1 : en utilisant les outils Ajax de jQuery, on peut externaliser la configuration de base du calendar (en la faisant générer par PHP depuis une base de données par exemple, grâce à la fonction json_encode() ) et la récupérer avec $.getJSON.
      2 : dans la configuration de base, ajouter une ligne « customHours » (sans « ) sous « loadDateR : [], », et l’utiliser dans les remplacements (i < 24)
      3 : prévoir dans les fonctions gH et gP de récupérer ces valeurs d’une manière ou d’une autre. Personnellement je vais parser un 2eme JSON en AJAX (en utilisant non-pas $.getJSON mais $.ajax et en forçant le paramètre "async" à false, pour que gH et gP attendent les résultats avant de faire leur return.). Je pense prévoir une lecture de cette info par cookie si cela s’avère plus rapide.
      En tout cas bravo pour ces conseils bien dispensés qui m’ont évité des jours de fouilles !
      Bonne continuation !

    2. Superbiche 7 janvier 2013 at 12 h 11 min Répondre

      EDIT du message précédent : la méthode AJAX pour les méthodes gH et gP sont inutiles puisqu’on a accès aux options…. je me jette

    3. Anais 7 mars 2013 at 11 h 03 min Répondre

      Pour cette phrase : ‘return { sh: t2{{+7}}, sm: t3, eh: t5{{+7}}, em: t6, h: sy2 – sy1 };’
      ca me met erreur de syntaxe! pouvez me dire pourquoi ca ne fonctionne pas?
      Merci d’avance

      • Germain 19 mars 2013 at 22 h 34 min Répondre

        Bonjour, avez-vous plus de précisions sur l’erreur ?
        Est-ce qu’une expression plus simple comme celle-ci fonctionne :
        return { sh: t2, sm: t3, eh: t5, em: t6, h: ts2 – ts1 };

        • Antoine 10 avril 2013 at 12 h 55 min Répondre

          Bonjour,

          Cette expression simplifiée a résolu le même problème chez moi, cependant je n’arrive plus à créer d’évènements en cliquant directement sur le calendrier (sauf évènement durant toute la journée).

          Une idée d’où cela pourrait venir ? (je n’ai modifié que ce qui est indiqué ici 🙂 )

          Merci d’avance.

          • Antoine 10 avril 2013 at 13 h 03 min Répondre

            Problème résolu, ce ne sont pas les bonnes variables en fait (puisque l’on est dans la fonction gH), au final la ligne à modifier (pour mon cas, pour une journée de 8 à 22H), sera :

            return { sh: t2+8, sm: t3, eh: t5+8, em: t6, h: y2 – y1 };

    4. Crow 28 novembre 2014 at 0 h 13 min Répondre

      salut j’ai essayé de réduire les plages horaires de 8h à 18h en suivant les instructions : ca fonctionne mais quand je fais un glisser deplacé sur un événement il ne s’affiche plus ! Savez-vous ou se situe le problème?

      • Germain 28 novembre 2014 at 13 h 09 min Répondre

        Qu’indique la console ?

    5. Crow 29 novembre 2014 at 0 h 25 min Répondre

      vous faites référence à quelle console? Euh… en tout cas j’ai un message « Success » qui confirme que le update s’est bien passé mais ensuite l’événement disparaît automatiquement du calendrier mais existe tjrs dans la table de la bd. Si vous me passez votre mail je peux vous envoyer le code comme cela vous verrez mieux

    6. Crow 30 novembre 2014 at 0 h 01 min Répondre

      Désolé d’insister mais au fait tout ce que je veux savoir c’est est ce que ca marche pour vous le drag and drop? J’ai besoin de ce calendrier pour un projet scolaire que je dois rendre très bientôt et j’ai déja fait bcp de modif avec lui j’ai pas assez de temps pour en prendre un autre. Please help

    Leave a Reply / Répondre Annuler la réponse

    *
    *

    More in Front-end : javascript, jQuery

    • jQuery UI : autocomplete qui "start with" au lieu de "contains"
    • jQuery Supersized plugin : load images from a nested list
    • jQuery : vérif checkbox cochée, choix dans liste select
    • jQuery browser version detection quick memo

    Search the blog

    Blog categories

    • Front-end : HTML, CSS (13)
    • Workflow (1)
    • Front-end : javascript, jQuery (33)
    • Back-end : PHP, CMS (42)
    • Back-end : SQL, MySQL (20)
    • Sysadmin : Linux, Apache, GIT (75)
    • Designers : tools, advice (2)
    • Desktop : OS X (37)
    • Desktop : Microsoft (12)
    • Uncategorized (8)

    ITALIC™ Resources

    • Paramètres de connexion au serveur mail
    • Graphistes : séduire un développeur web
    • Dév front : nos bonnes pratiques
    • Mailing : nos (bonnes ?) pratiques
    • Environnement de travail Mac

    Recent posts

    • Autoriser le chargement de contenus mixtes non-https dans Chrome (Mac)
    • Afficher les logs MySQL
    • Recevoir un mail lors de la connexion root à un serveur
    • Changer l’interclassement de plusieurs tables MySQL à la fois (ou presque
    • Maildev : tester l’envoi de mails durant ses développements
    © 2008-2017 ITALIC™ • 8 bis rue Abel • 75012 PARIS • Tel +33 (0)1 48 44 46 35 • RCS PARIS 508 228 772 • Powered by WordPress & GoodLayers
    Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site web.
    Cookie settingsACCEPTER
    Manage consent

    Privacy Overview

    This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
    Necessary
    Toujours activé
    Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
    Non-necessary
    Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
    Enregistrer & appliquer