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 :

parser une date en milliseconde pour highcharts [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 63
    Par défaut parser une date en milliseconde pour highcharts
    bonjour

    a fin utiliser le live update pour highcharts librairies, je reçoit comme entrée (mysql timestamp(3)) a travers un appel ajax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ["2012-12-21 11:00:00.080",45]
    je veut afficher ce point dans mon graphe, mais avant je doit le convertir en date ou date objet (sans perdre la précision en milliseconde) pour qui il soit pris en compte par highcharts.

    est ce que quelqu’un peut me guider comment faire ca ?
    voici mon code

    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
    55
    56
    57
    58
     
    function requestData() {
     $.ajax ({
                type:"get" ,
            url: "<?php echo CController::createUrl('beam/GetSensorsDataLive') ?>",
            data: {"beamId" : "<?php echo $modelBeam['poutre_id'] ?>" },
             dataType: "json",
     
              success: function(response,point) {
              var series = chart.series[0], //// error here 
     
        shift = series.data.length > 20;// shift if the series is longer than 20
              chart.series[0].addPoint( point,true, false); // add the point
              setTimeout(requestData, 1000);    // call it again after one second
     
                                       },
                                     cache: false
        });
               }  
     
     $(document).ready(function() {
         var chart;
     
            chart = new Highcharts.Chart({
            chart: {
                renderTo: 'graph',
                type: 'spline',
                events: {
                    load: requestData   
                }
            },
     
            xAxis: {
              type: 'datetime',
              },
                  tooltip: {
     
                      formatter: function() {
     
                        return '<b>'+ this.series.name +'</b><br/>'+
     
                        Highcharts.dateFormat('%H:%M:%S:%m', this.x) +'<br/>'+
     
                        Highcharts.numberFormat(this.y, 2);
     
                }
     
            },  
     
     
                        series: [{
                name: 'Live Data From sensor <?php echo $modelBeam['poutre_id'] ;?>  ',
                 data:[] 
            }]
     
        });
     
    });
    merci !

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new Date("2012-12-21 11:00:00.080")
    Tout simplement

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 63
    Par défaut
    merci SylvainPV pour votre réponse

    mais ou insérer la fonction date dans mon code pour quelle change tous les point qui seront fetcher par appel ajax .

    merci encore une fois

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Ben au callback AJAX par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    success: function(response,point) {
         point[0] = new Date(point[0]);
    Par contre je ne comprends pas pourquoi ton appel AJAX te renvoie qu'un seul point et pas l'ensemble. Ah et aussi, évite de mettre du PHP dans du Javascript, c'est un cauchemar en lisibilité...

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 63
    Par défaut
    merci encore une fois

    est ce que je doit pas replacer " par T avant ?
    a propos pourquoi mon appel AJAX me renvoie qu'un seul point
    c est parce que j utilise le live update et a chaque appel je reçoit le dernier point dans ma table.

    merci

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 63
    Par défaut
    pour les intéressée voici le code que que j ai trouver pour formater le temps en milliseconde pour highcharts

    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
     
     
     success: function(point) {
    			  var darr = point[0].split('.')
    				  , dat=new Date(darr[0])
    				  , datestr = '';
    				dat.setMilliseconds(Math.round(darr[1]/1000));
    				datestr = [ [dat.getFullYear(),dat.getMonth()+1,dat.getDate()].join('-')
    							,' ', 
    			  [dat.getHours(),dat.getMinutes(),dat.getSeconds()].join(':')
    							,'.',
    							dat.getMilliseconds()
    						  ].join('');
    		      var series = chart.series[0],
    		      shift = series.data.length > 20;// shift if the series is longer than 20
                  chart.series[0].addPoint(eval(point),true, false); // add the point
                  setTimeout(requestData, 1000);    // call it again after one second
     
                                           },

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

Discussions similaires

  1. probleme pour parser une date
    Par stc074 dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2011, 00h52
  2. ajoute une date de reunion pour plusieur enregistrement
    Par popofpopof dans le forum VBA Access
    Réponses: 9
    Dernier message: 10/08/2007, 16h08
  3. Réponses: 2
    Dernier message: 04/09/2006, 08h36
  4. Requete a partir d'une date de naissance pour obtenir un age
    Par Fleur-Anne.Blain dans le forum Langage SQL
    Réponses: 11
    Dernier message: 10/08/2006, 12h40
  5. Parser une date avec un format
    Par titoine1978 dans le forum C++
    Réponses: 15
    Dernier message: 03/04/2006, 11h46

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