Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jquery - actions à intervalle régulier ...

... commençant n'importe quand.

    11 août 2019 à 15:28:05

    Bonjour,

    le pb serait simple sans les contraintes imposées.

    A la base il s'agit d'exécuter 3 actions dans une période d'1 minute. On dira que ces actions se passent à t=DEB puis t=ATTN et t=FIN

    L'intervalle entre la première et la deuxième étant :

    var interv_DEB_ATTN puis

    var interv_ATTN_FIN et

    var interv_FIN_DEB

    par exemple DEB -> 54sec ->ATTN -> 3sec -> FIN -> 3sec -> DEB et ainsi de suite.

    Les contraintes :

    L'heure de début est fixe pendant toute l'exécution mais doit être paramétrable car elle change tous les 3 mois et ce n'est jamais à la minute pile.

    Le lancement de l'application peut intervenir n'importe quand pendant le cycle et la synchronisation doit être immédiate, disons <1sec car celui qui lance ce module s'attend à voir immédiatement où il en est du cycle.

    Ci-dessous un code qui donne un résultat mais ne tient pas compte des contraintes. J'ai essayé pas mal de chose mais je ne m'en sors pas. Une simple piste serait la bienvenue.

    <?PHP
    
    session_start();
    
    $minute_recalcul=42;
    
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Horaire des rush</title>
    <link rel="shortcut icon" href="http://www.lceg.net/favicon.ico">
    <link rel="stylesheet" media="screen" type="text/css" href="CSS/CSS_RN1.css" />
    </head>
    <body class="body_horaire_rush" onload="self.focus();"> <!-- window.resizeTo(50,120);"-->
    <script src="http://code.jquery.com/jquery.js"></script>
        <script>
        $(function() {
    //var chrono;
    var minute_debRush;
    //var chrono_DEB=0;
    var intervalle_debRush_attnFinRush=54;
    var minute_attnFinRush;
    //var chrono_ATTN=chrono_DEB+intervalle_debRush_attnFinRush;
    var intervalle_debRush_rangezLocos=57;
    var minute_rangezLocos;
    //var chrono_RANGEZ=chrono_DEB+intervalle_debRush_rangezLocos;
    var pair;
    var pariT;
          function timing(){
    /*
    Début séquence à :
    'var minute_debRush' = '$minute_recalcul' = '$_SESSION['minute_recalcul']'
    jusqu'à :
    'var minute_attnFinRush' = 'var minute_debRush' + 32
    puis fin séquence à :
    'var minute_rangezLocos' + 37
    */
            var hms = new Date();
            var h, m, s, Htext, Mtext, Stext;
    var pair;
    var pariT;
            h = hms.getHours();
            if (h<10) {Htext="0" + h} else {Htext=h};
    if (h%2==0) {pair =true; pariT="paire"} else {pair=false; pariT="impaire"};
            m = hms.getMinutes();
            if (m<10) {Mtext="0" + m} else{Mtext=m};
            s = hms.getSeconds();
            if (s<10) {Stext="0" + s} else {Stext=s};
            $('#heure').html('&nbsp;'+Htext + ':' + Mtext + ':' + Stext+'&nbsp;');
    // Spécifique RN.
    minute_debRush=<?echo"$minute_recalcul";?>;
    minute_attnFinRush=(minute_debRush+intervalle_debRush_attnFinRush)%60;
    minute_rangezLocos=(minute_debRush+intervalle_debRush_rangezLocos)%60;
    if (s>=minute_attnFinRush) {
    $('#couleur').css({'background-color': 'orange'});
    $('#cons').html('Bientôt la fin du rush heure '+pariT);
    }
    if (s>=minute_rangezLocos) {
    $('#couleur').css({'background-color': 'red'});
    $('#cons').html('Rangez vos locos.');
    }
    if (s>=minute_debRush) {
    $('#couleur').css({'background-color': 'green'});
    $('#cons').html('Rush en cours heure '+pariT);
    }
    if (<?echo"$debug_hrp";?>) {
    $('#debug').html('deb='+minute_debRush+' attn='+minute_attnFinRush+' rangez='+minute_rangezLocos);
    }
    if (pair) $('#hpi').html('Heure paire');
    if (!pair) $('#hpi').html('Heure impaire');
          }
          setInterval(timing,1000); // 1sec
        });
        </script>
    <!------------->
    <!-- HORAIRE -->
    <!------------->
    <div align='center'><font size='-2' color='red'>En évaluation - pas calé sur les heures réelles de rush !</font></div>
    <div id='hpi' align='center'>zzz...</div>
    <table name='Horaire' align='center'>
    <tr>
    <td id='couleur' style='background-color: blue'>
    <div id="heure" align="center" class="texte_HoraireRush">...</div>
    </td>
    </tr>
    <?if ($debug_hrp) {?>
    <tr>
    <td style='background-color: white'>
    <div id="debug" align="center" class="texte_HoraireRush">...</div>
    </td>
    </tr>
    <?}?>
    </table>
    <div id='cons' align='center'>zzz...</div>
    <!--script src="http://code.jquery.com/jquery.js"></script-->
    <!--script src="http://code.jquery.com/jquery.min.js"></script-->
    </body>
    </html>



    Je vous remercie par avance.

    -
    Edité par Jean-ClaudeCHAMEROY 12 août 2019 à 10:58:15

    • Partager sur Facebook
    • Partager sur Twitter

    Jquery - actions à intervalle régulier ...

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown