2013-02-05 4 views
0

하이 차트 원형 차트를 사용하는 페이지가 있는데 날짜 선택기 드롭 다운으로 차트를 업데이트하려고합니다. 나는 막대 차트와 그 위대한 작업을위한 비슷한 구현을했습니다. 주의하십시오 (이것은 PHP 클래스에서 나오므로 연결과 결합하지 않습니다).Ajax의 Highcharts 원형 차트

<script type='text/javascript'> 

        function drawPie(data) 
        { 
         var chart; 
         alert('called'); 
         var options = { 
          chart: { 
           renderTo: 'PieChart', 
           plotBackgroundColor: null, 
           plotBorderWidth: null, 
           plotShadow: false, 
           height: 350 
          }, 
          title: { 
           text: 'Product Popularity' 
          }, 
          tooltip: { 
           pointFormat: '{series.name}: <b>{point.percentage}%</b>', 
           percentageDecimals: 1 
          }, 
          plotOptions: { 
           pie: { 
            allowPointSelect: true, 
            cursor: 'pointer', 
            dataLabels: {enabled: false}, 
            showInLegend: true 
           } 
          }, 
          series: [{ 
           type: 'pie', 
           name: 'Product Popularity', 
           data: data 

          }] 
         } 
         chart = new Highcharts.Chart(options); 
         $('#ProductPieMod div.mod_content').css('height', $('#PieChart').css('height')); 
        } 
       $(document).ready(function(){ 
        drawPie(" . $this->get_data($this->date) . "); 

        $('#ProductPieMod_date').on('change', function(){ 
         var val = parseInt($(this).val()); 
         switch(val) 
         { 
          case 0: 
           var date = Date.today(); 
           break; 
          case 1: 
           var date = Date.parse('last week'); 
           break; 
          case 2: 
           var date = Date.today().moveToFirstDayOfMonth(); 
           break; 
          case 3: 
           var date = Date.parse('January').moveToFirstDayOfMonth(); 
           break; 
          default: 
           var date = Date.today(); 
         } 
         var info; 
         $.ajax({ 
          type: 'POST', 
          url: '". matry::base_to('utilities/dhs/manager_dash') . "', 
          async: false, 
          dataType: 'json', 
          data: {date: date.toString('M/dd/yyyy'), module: 'ProductPieMod'}, 
          success: function(data) 
          { 
           drawPie(data); 
          } 
         }); 

        }); 
       }); 
       </script> 

내 아약스는 다음과 같은 문자열을 반환 :

[['FASTCLIX LANCING DEVICE', 62.5],['FREESTYLE LANCING DEVICE', 25],['ONETOUCH DELICA LANCING DEVICE', 12.5]]

또한,이 차트는 초기에 동일한 방법, 잘을 사용하여 만들어집니다. 그것은 방금 중단 드롭 다운 (onChange 이벤트를 실행)을 사용할 때.

업데이트 은 나뿐만 아니라이의 바이올린을 만들었습니다 http://jsfiddle.net/SHReZ/1/

+1

highcharts 라이브러리가 있습니다. 그것은 당신이 비록 html과 javascript 모두를 볼 수있게 해줌으로써 –

+0

작업해야하는 데 도움이 – Mike

+0

이 작동하고 왜 이것이 lib를 가지지 않는가? 귀하의 바이올린을 사용하여 : [그 데모] (http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/pie-basic/) –

답변

1

Firts, 당신은 다음, 당신이 추첨하기 전에 차트를 파괴 할 필요가 chart VAR document.ready에 핸들러의 범위를 배치해야합니다. 또한

$(document).ready(function() { 
    var chart; 

    function drawPie(data) { 
     console.log('called'); 
     var options = { 
      chart: { 
       renderTo: 'PieChart', 
       plotBackgroundColor: null, 
       plotBorderWidth: null, 
       plotShadow: false, 
       height: 350 
      }, 
      title: { 
       text: 'Product Popularity' 
      }, 
      tooltip: { 
       pointFormat: '{series.name}: <b>{point.percentage}%</b>', 
       percentageDecimals: 1 
      }, 
      plotOptions: { 
       pie: { 
        allowPointSelect: true, 
        cursor: 'pointer', 
        dataLabels: { 
         enabled: false 
        }, 
        showInLegend: true 
       } 
      }, 
      series: [{ 
       type: 'pie', 
       name: 'Product Popularity', 
       data: data 
      }] 
     }; 
     if (chart !== undefined) chart.destroy(); 
     chart = new Highcharts.Chart(options); 
     $('#ProductPieMod div.mod_content').css('height', $('#PieChart').css('height')); 
    } 


    drawPie([ 
     ['ONETOUCH DELICA LANCING DEVICE', 27.78], 
     ['FREESTYLE LANCING DEVICE', 20.83], 
     ['Nova Max Ketone Test Strips Health and', 11.11], 
     ['ONETOUCH ULTRASOFT LANCING DEVICE 2PK', 11.11] 
    ]); 
    //get data from https://gist.github.com/zba/4712055 , delay 4 
    $.post('/gh/gist/response.html/4712055', { 
     delay: 4 
    }, function (data) { 
     drawPie(data); 
    }, 'json'); 

}); 

fiddle

here 차트를 파괴하지만 색상을 변경하지 데모 훨씬

당신의 바이올린이 아닌, 그것은 '그들이 돈 때문에 도움이되지 않습니다 바이올린
+0

고마워, 나는 여전히 같은 결과를 얻고있다. 그것은 마치 데이터 섹션을 올바르게 구문 분석하지 않는 것과 같습니다. 데이터 배열의 각 문자에 대해 새로운 시리즈 요소를 만듭니다 (즉, [F의 슬라이스에 대한 슬라이스] [ – Mike

+0

]에 대한 하나의 슬라이스) 내 데모 또는 코드가 작동하지 않습니다. –

+0

데이터가 문제가되는 것과 같으면 [작동해야합니다] (http://jsfiddle.net/oceog/SHReZ/7/) –