Yii Framework Forum: Highstock Γραφήματα - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Highstock Γραφήματα

#1 User is offline   marios 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 21-September 12
  • Location:Kavala, Greece

Posted 29 January 2013 - 06:18 AM

Χαίρεται σε όλους μετά από καιρό πάλι!!

Θα περιγράψω το πρόβλημα όσο πιο συνοπτικά και περιεκτικά γίνεται. Έχω έναν πίνακα (ΌΓΚΟΙ) που για κάθε όγκο που εξορύσσεται κρατείται η Ημ/νία στο αντίστοιχο πεδίο. Θέλω να βγάλω σε διάγραμμα Highstock την ημερήσια παραγωγή όγκων. Ο κώδικας ενός διαγράμματος Highstock χρησιμοποιώντας το extension που διαθέτει το Yii είναι:

$this->Widget('ext.highstock.HighstockWidget', array(
  'options'=>array(
    'theme'=>'grid',
    'rangeSelector'=>array('selected'=>1),
    'title'=>array('text'=>'USD to EUR exchange rate'),
    'xAxis'=>array('maxZoom'=>14 * 24 * 3600000 ),
    'yAxis'=>array('title'=>array('text'=>'Exchange rate')),
    'series'=>array(array('name'=>'USD to EUR','data'=>'js:usdeur')),
  )));
Yii::app()->clientscript->registerScript('highstock',"
var usdeur = [
[Date.UTC(2003,8,24),0.8709],
[Date.UTC(2003,8,25),0.872],
[Date.UTC(2003,8,26),0.8714],
[Date.UTC(2011,4,10),0.6945]
];
",CClientScript::POS_HEAD);



Προφανέστατα πρέπει να δημιουργήσω ζεύγη τιμών (Ημ/νιας και παραγωγής). Κολλάω,όμως, στην εισαγωγή των επιστρεφόμενων δεδομένων (από το κατάλληλο SQL ερώτημα που είναι

SELECT  `Volume_Mining_Date` , COUNT( id ) 
FROM volumes
GROUP BY DATE(  `Volume_Mining_Date` ) 
),


στο διάγραμμα Highstock. Σκέψη μου είναι να δημιουργήσω ένα δισδιάστατο πίνακα και να περνάω με χρήση επανάληψης τα δεδομένα στο διάγραμμα (αλλά πώς??). Όποιος έχει ασχοληθεί, ας βοηθήσει να φύγει λίγο το σκουπιδάκι που έχει μπει στο μυαλό μου και δεν μπορώ να το συντάξω σωστά!!


Βασικά παίρνω τα δεδομένα που θέλω σε δύο πίνακες και μορφοποιώ την ημερομηνία κατάλληλα (με κόμματα αντί για παύλες που είναι αποθηκευμένη στην MySQL), αλλά εξακολουθώ να μην μπορώ να τους εισάγω στο διάγραμμα.
0

#2 User is offline   marios 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 21-September 12
  • Location:Kavala, Greece

Posted 01 April 2013 - 09:32 AM

Είχα βρει λύση στο πρόβλημα πριν από καιρό, αλλά τώρα βρήκα την ευκαιρία να την γράψω μήπως και βοηθηθεί κάποιος που θα θέλει να χρησιμοποιήσει το widget στο μέλλον.

Έγραψα λοιπόν:

$this->Widget('ext.highstock.highstock.HighstockWidget', array(
        'dataProvider'=>$dataProvider,
        'options'=> array(
    		'theme' => 'dark-blue', 
        'rangeSelector'=>array('selected'=>1),
    		'credits' => array('enabled' => true),
        'title'=>array('text'=>'Ημερήσια Παραγωγή Όγκων'),
    		'xAxis'=>array('maxZoom'=>'4 * 3600000' ),  
    		'yAxis'=>array('title'=>array('text'=>'Τεμάχια')),
            'series'=>array(
                array(
                    'name'=>'Τεμάχια',
                    'dataResource'=>'data', 
                    'dateResource'=>'time', 
                )
            )
        )
    ));



Αυτό που έκανα ήταν να δημιουργήσω έναν βοηθητικό πίνακα ο οποίος θα γέμιζε κάθε φορά με τα επιθυμητά δεδομένα σύμφωνα με κάποια ερωτήματα SQL. Η στήλη 'data' του πίνακα περιείχε το σύνολο π.χ. των παραγόμενων προϊόντων ανά ημερομηνία σε αύξουσα διάταξη και η στήλη 'time' την ημερομηνία.
Το πρόβλημα ήταν ότι δεν μπορούσε να εισαχθεί στο διάγραμμα η ημερομηνία με την μορφή datetime, αλλά μόνο σε μορφή Unix_Timestamp, οπότε γράφοντας στον controller την εντολή

Yii::app()->db->createCommand("insert into stock_data (time, data) (SELECT UNIX_TIMESTAMP(Volume_Mining_Date),COUNT( id ) FROM volumes GROUP BY  Volume_Mining_Date)")->query();



λύθηκε το πρόβλημα. Η εντολή αυτή γεμίζει τον βοηθητικό πίνακα, από τον οποίο τραβάει δεδομένα το διάγραμμα, με τις επιθυμητές τιμές και μορφή δεδομένων.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users