2016-11-30 243 views
1

我正在嘗試生成我的項目報告。這些報告在餅圖的幫助下顯示。我收到了正確的數據,但第一個請求中餅圖沒有更新。我必須發送2-3個請求,然後更新餅圖。 我的js代碼是在這裏:數據更改時餅圖數據未更新

//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的控制器代碼:

//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; 
       } 

回答

0

問題解決了。這是由於google.charts.setOnLoadCallback(drawLeadSummeryChart);引起的。 因爲我在同一個jQuery中多次使用setOnLoadCallback。 由於這種情況,它總是在控制檯"Uncaught Error: Container is not defined"中顯示錯誤,並且無法加載響應。所以我只是檢查從查看頁面的ID長度大於0.如果它大於那麼執行setOnLoadCallback。代碼如下:

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