2013-10-27 6 views
5

मेरे पास पृष्ठ पर कई AmStockCharts हैं। वे रेखा ग्राफ हैं। जेएसओएन प्रारूप में डेटा MySQL डीबी से प्राप्त किया जाता है। यदि उपयोगकर्ता ग्राफ़ डॉट (बुलेट) पर क्लिक करता है तो एक फॉर्म दिखाया जाता है जहां उपयोगकर्ता डेटा को संशोधित कर सकता है और इसे सहेज सकता है। इस मामले में मुझे चार्ट को फिर से निकालना होगा और मैं इसे समझ नहीं सकता। मैं सभी चार्ट ठीक से तैयार हो जाओरेड्रो एमस्टॉक चार्ट

//drawing all charts there are 
var chart; 
$.getJSON('stats.php', function (data) { // get all data from all stats at once 
    var i=0; 
    for (chartData in data) { 
     i++; 
     chart = new AmCharts.AmStockChart(); 
     var dataSet = new AmChart.DataSet(); 
     dataSet.dataProvider = chartData; 
     // etc. etc. here are all the single graph parameters 
     $('#stats').append('<div id="chartdiv' + i + '"></div>'); 
     chart.write("chartdiv" + i); 
    } 
}); 

:

यहाँ कोड का टुकड़ा है। लेकिन यहां दो समस्याएं हैं। पहली समस्या है कि मैं उन्हें बाद में 'चार्ट' चर के रूप में एक्सेस नहीं कर सकता क्योंकि केवल खींचे गए अंतिम चार्ट को संदर्भित करता है। दूसरी समस्या यह है कि अगर मैं इस अंतिम चार्ट को फिर से निकालने का प्रयास करता हूं तो मुझे कोई परिणाम नहीं मिलता है।

function chart_redraw(stat) { 
    $.getJSON('stat.php?redraw=' + stat, function (data) { // get data for one particular stat 
    var dataSet = new AmCharts.DataSet(); 
    dataSet.dataProvider = data; 
    ... 
    chart.dataSets = [dataSet]; 

    var stockPanel = new AmChart.StockPanel(); 
    stockPanel.validateData(); 
    chart.panels = [stockPanel]; 

    chart.validateNow(); 
}); 

कि कुछ भी नहीं किया है, यानी चार्ट फिर से तैयार नहीं प्राप्त करता है:

चार्ट मैं निम्नलिखित की कोशिश की है पुनः बनाने के लिए।

function chartClick (event) { 
    var chartdiv = event.event.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id 
    $('#chart_n').val(chartdiv); 
    ... 
} 

और फिर इसका इस्तेमाल उस जगह पर है कि div और टोकरा नया एक से चार्ट दूर करने के लिए:

केवल एक चीज मैं कर सकता द्वारा क्लिक करें घटना पर एक छिपा इनपुट में चार्ट div स्टोर करने के लिए है लेकिन यह बहुत धीमा है तो validateData() होगा।

उत्तर

5

जब डेटा बदल गया है, तुम सब करने के लिए सेट डेटा के लिए नए डेटा सेट किया गया है की जरूरत है:

dataSet.dataProvider = yourDataArray; 

और फिर फोन

stockChart.validateData(); 

हालांकि अपने कोड भी पैनल/डाटासेट बदलना चाहिए ताकि, यह मेरे लिए थोड़ा अजीब है। क्या आपको कोई कंसोल त्रुटियां मिलती हैं? यदि नहीं, तो मुझे आपके मामले का पूरा कार्य स्रोत देखना होगा। लेकिन मैं अपना सुझाव काम करूंगा।

+0

ठीक है, मैं पूरी चीज नहीं बना सका लेकिन मैंने दो डेटा स्रोतों के साथ एक सरल कोड बनाया जो माना जाता है कि एक बटन पर क्लिक किया जाता है, फिर भी ग्राफ को दोबारा खींचा जाना चाहिए, लेकिन ऐसा नहीं होता है। यहां यह है: http://jsfiddle.net/33SDv/2/ – user164863

+3

आपको चार्ट.माइनडेटासेट = डेटासेट भी सेट करना चाहिए; क्योंकि यह पिछले डेटा सेट को याद करता है और इसका उपयोग करता है। – zeroin

संबंधित मुद्दे