2016-11-30 13 views
1

Ich versuche, Berichte zu meinem Projekt zu erstellen. Diese Berichte werden mithilfe von Kreisdiagrammen angezeigt. Ich erhalte die richtigen Daten als Antwort, aber das Kreisdiagramm wird in der ersten Anfrage nicht aktualisiert. Ich muss 2-3 Anfrage mehr senden, dann aktualisiert es das Tortendiagramm. Mein js Code ist hier:Kreisdiagrammdaten werden nicht aktualisiert, wenn Daten geändert werden

//Pie chart for product 
      var dataLeadproduct = google.visualization.arrayToDataTable(pieproductdataLeadSummery); 
      var productLeadoptions = { 
       title: 'Top Product', 
       pieHole: 0, 
       pieSliceText: '', 
       pieSliceBorderColor: '#00ffffff', 
       colors: ['#FF772D', '#57c8f2', '#8175c7', '#ff6c60', '#A9D86E'], 
       chartArea: {left: 20, top: 10, width: '100%', height: '75%'}, 
       is3D: false, 
       reverseCategories: false, 
       'tooltip.text': 'value' 
      }; 
      var productLeadSummery = new google.visualization.PieChart(document.getElementById('leadsummeryproduct_piechart')); 
      productLeadSummery.draw(dataLeadproduct, productLeadoptions); 

CI Controller-Code:

//Product Pie Chart 
       $leadProduct_query = 'SELECT COUNT(lead_product_id) AS lead_product_count, lead_product_id FROM leads WHERE lead_id IN (' . implode(',', $leadsID) . ') AND lead_location_id ="' . $leadsummery_city . '" AND lead_progress LIKE \'%:"' . $leadsummery_stages . '";%\' AND lead_loan_amount >="' . $leadsummery_amount_from . '" AND lead_loan_amount <="' . $leadsummery_amount_to . '" AND lead_reg_date <="' . $leadsummery_startdate . '" AND lead_reg_date >="' . $leadsummery_enddate . '" GROUP BY lead_product_id ORDER BY COUNT(lead_product_id) DESC limit 5'; 
       $leadProduct = $this->db->query($leadProduct_query)->result_array(); 
       $leadProduct_count = count($leadProduct); 

       foreach ($leadProduct as $lp) { 
        $product_name[] = $this->Generalmodel->getfromid('products', 'product_name', $lp['lead_product_id']); 
        $pro_percent[] = round(($lp['lead_product_count']/$leads_count) * 100); 
       } 

       $tempLeadPro[] = array('Product Name', 'Count'); 
       for ($i = 0; $i < $leadProduct_count; $i++) { 
        $proData = array($product_name[$i], $pro_percent[$i]); 
        $tempLeadPro[] = $proData; 
        $leadSummeryProductpiedata = $tempLeadPro; 
       } 

Antwort

0

Problem gelöst. Es verursacht aufgrund google.charts.setOnLoadCallback(drawLeadSummeryChart);. Da ich setOnLoadCallback mehrmals in derselben jquery verwende. Aus diesem Grund zeigt es immer einen Fehler in der Konsole "Uncaught Error: Container is not defined" und kann keine Antwort laden. So überprüfe ich nur, dass die Länge der ID von der Ansichtsseite größer als 0 ist. Wenn sie größer ist, dann führe setOnLoadCallback aus. Code ist unten angegeben:

if ($('#IDFROMVIEWPAGE').length > 0) { 
       google.charts.setOnLoadCallback(drawLeadSummeryChart); 
      } 
Verwandte Themen