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

jQuery Discussion :

Système d'alertes déclenchées sur la date et l'heure


Sujet :

jQuery

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut Système d'alertes déclenchées sur la date et l'heure
    Bonjour,
    je réfléchis actuellement à un système de gestion d'alertes,
    qui seraient gérées par le client donc en js.

    L'utilisateur créer des alertes avec un titre, un texte, une date et une heure.
    > c'est enregistré en Base de données.
    au chargement de la page on charge toutes les alertes.
    Et lorsque vient la date et l'heure d'une alerte elle s'affiche (ex: dans un modal de bootstrap).
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 112
    Points
    44 112
    Par défaut
    Bonjour,
    je serais tenté de dire ... c'est bien ... oui ... et alors ?

    Tiens je l'ai dit !

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Bien dit Mec

    L'idée serait-elle de parcourir un array (Json) toutes les minutes ?
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 634
    Points : 66 650
    Points
    66 650
    Billets dans le blog
    1
    Par défaut
    pourquoi charger toutes les alertes ?

    Autant avoir un ajax qui interroge ta table des alertes avec un paramètre date/heure .

    Tu le lances au chargement puis toutes les minutes si besoin ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Ouais bonne idée,
    Je vais voir ca...
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  6. #6
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Ok merci de l'idée Psychadelic
    J'ai regardé ca, c'est intérressant
    Par contre coté compatibilité des navigateurs, je crains d'avoir des utilisateurs Edge et IE,
    (je sais ca craint).
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Salut,
    Pour ce système d'alerte je vais utiliser le time stamp,
    aussi je galère un peu (beaucoup, passionnément...)
    entre le format php et le format js
    ca n'a pas l'air d'être les même formats, non ?

    Je fait
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    time_js=Math.round(time_php/1000);
    Puis
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var date = new Date(time_js); 
                var heure = date.getHours(); if (heure<10) {heure='0'+heure;}
                var minute = date.getMinutes(); if (minute<10) {minute='0'+minute;}
                var jour = date.getDay(); if (jour<10) {jour='0'+jour;}
                var mois = date.getMonth(); if (mois<10) {mois='0'+mois;}
                var annee = date.getFullYear();
                console.log(heure+' '+minute+' '+jour+' '+mois+' '+annee);
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 112
    Points
    44 112
    Par défaut
    Citation Envoyé par feelwatt
    L'idée serait-elle de parcourir un array (Json) toutes les minutes ?
    J'ai du mal à comprendre la démarche dans le sens où si l'on sait(*) qu'une alarme va se déclencher dans 1H pourquoi interroger toutes les minutes.
    (*) cela se calcule aisément.

    Citation Envoyé par SpaceFrog
    pourquoi charger toutes les alertes ?
    Sauf s'il existe 106 alarmes, tout charger, sous forme JSON par exemple, limitera au final le flux transmis.

    Je partirais sur quelque chose comme
    • Chargement des alarmes et initialisation ;
    • Lancement d'un setTimeout avec comme délai la différence entre l'heure présumée des alarmes et l'heure de l'initialisation de la page ;
    • Lorsque la limite est atteinte, on affiche et on supprime l'alarme de la liste à traiter.


    Voilà en substance ce que cela pourrait donner :
    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
    // exemple format des alarmes
    const dataAlarmes = [
      {"date": "", "time": 0, "mess": "Il est l'heure de se réveiller !"},
      {"date": "", "time": 0, "mess": "Ton petit déjeuner t'attend !"},
      {"date": "", "time": 0, "mess": "La brosse à dents s'impatiente !"},
      {"date": "", "time": 0, "mess": "Comme d'hab tu es en retard !"},
      {"date": "", "time": 0, "mess": "Oups !! sorry on est dimanche !"}
    ];
    /**
     * Affichage écran du message
     */
    function showAlarm(data) {
      const oDest = document.getElementById("alarm");
      const codeHTML  = "<p><i><sup>" + data.date.toLocaleString() + "</sup></i><br>" + data.mess;
      oDest.insertAdjacentHTML("beforeend",codeHTML)  
    }
    /**
     * Une façon de gérer les alarmes
     */
    function getAlarm() {
      const time = new Date().getTime();
      dataAlarmes.forEach((al, ind) => {
        const alarmTime = al.time;
        if (time >= alarmTime) {
          // affichage écran
          showAlarm(al);
          // supprime de la liste
          dataAlarmes.splice(ind, 1);
        }
        else {
          // supprime timer en cours
          if (al.timer) clearTimeout(al.timer);
          // relance la demande
          const delai = (alarmTime - time);
          al.timer = setTimeout(getAlarm, delai);
        }
      });
    }
    // initialisation data pour test
    dataAlarmes.forEach((al, ind) => {
      const date = new Date();
      date.setTime(date.getTime() + (3000 * (ind + 1)));
      al.date = date;
      al.time = date.getTime();
    });
    // lance l'action
    getAlarm();
    Il va de soit que le formatage des alarmes est à aménager suivant le besoin, mais l'idée est là.

    La gestion est bien sûr améliorable, puisque dans le code ci-dessus il n'y en a pas, notamment en ce qui concerne, la saisie d'une nouvelle alarme ou la suppression d'une alarme en cours, mais je pense que la trame resterait la même.

    Par contre coté compatibilité des navigateurs, je crains d'avoir des utilisateurs Edge et IE,
    Dans ce cas les corrections du code seraient minimes.

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    Par défaut
    Salut,
    Yep noSmoking,

    la trame est bonne, super (il faut que je m'y penche).


    Par contre coté compatibilité des navigateurs, je crains d'avoir des utilisateurs Edge et IE,
    Dans ce cas les corrections du code seraient minimes.
    > C'était pour la proposition de Psychadelic > ... et la compatibilité des navigateurs


    Pour info j'ai vu une différence entre :
    getDate > retourne jour
    getDay > retourne jour-1

    La biz
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

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

Discussions similaires

  1. Système de statistiques basé sur la date ?
    Par VeenZ dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/04/2014, 22h31
  2. Réponses: 8
    Dernier message: 04/10/2013, 09h43
  3. [XL-2003] Créer une zone d'alerte sur des dates
    Par graphikris dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/03/2013, 13h45
  4. opération sur les dates et les heures
    Par beb1982 dans le forum C
    Réponses: 15
    Dernier message: 03/09/2007, 21h47
  5. msgbox d'alerte sur des dates!!!
    Par T'chab dans le forum Access
    Réponses: 6
    Dernier message: 04/05/2006, 17h36

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