2012-04-21 52 views
2

我準備了一個帶有屏幕截圖的簡單測試用例,演示了我的問題,並且可能缺少一點點,只有幾行代碼。使用jQuery滑塊更改Google圖表viewWindow

我有一個圖表,表示在幾周的網頁遊戲中的勝利和損失。

I.e.縱軸代表遊戲分數,橫軸代表週數。

我的AJAX腳本返回52周的數據,但我想添加一個滑塊,並允許用戶更改周的觀察數到任意數量的12和52

screenshot

之間可以有人請告知我,如何修改change函數?

$("#money_slider").slider({ 
    min: 12, 
    max: 52, 
    change: function(event, ui) { 
     // XXX what to do here with 
     // hAxis.viewWindow.min and .max? 
    } 
}); 

下面是我完整的測試情況下,只需將它保存到一個.html文件,你就可以嘗試在瀏覽器中:

<!DOCTYPE HTML> 
<html> 
<style type="text/css"> 
    h3,p,div { 
     text-align: center; 
    } 

    #slider { 
     width: 700px; 
     margin-left: auto; 
     margin-right: auto; 
    } 
</style> 
<style type="text/css" title="currentStyle"> 
     @import "https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css"; 
</style> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script> 
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/jquery.dataTables.min.js"></script> 
<script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart'],'language':'ru'}]}"></script> 
<script type="text/javascript"> 

google.setOnLoadCallback(drawChart); 

$(function() { 
    $('#slider').slider({ 
     disabled: true, 
     range: 'min', 
     min: 12, 
     max: 52, 
     change: function(event, ui) { 
      // XXX what to do here with 
      // hAxis.viewWindow.min and .max? 
      $("#header").text("debug=" + ui.value); 
     } 
    }); 
}); 

function drawChart() { 
     var jsonData = '{"cols":[{"label":"Week number","type":"string"},{"label":"Week leader","type":"number"},{"label":"Your win","type":"number"},{"label":"Your loss","type":"number"}],"rows":[{"c":[{"v":"2011-33"},{"v":10671},{"v":0},{"v":-3113}]},{"c":[{"v":"2011-34"},{"v":7975},{"v":0},{"v":-2113}]},{"c":[{"v":"2011-35"},{"v":11009},{"v":0},{"v":-2244}]},{"c":[{"v":"2011-36"},{"v":10679},{"v":0},{"v":-689}]},{"c":[{"v":"2011-37"},{"v":11197},{"v":305},{"v":0}]},{"c":[{"v":"2011-38"},{"v":6762},{"v":419},{"v":0}]},{"c":[{"v":"2011-39"},{"v":7823},{"v":0},{"v":-1563}]},{"c":[{"v":"2011-40"},{"v":10171},{"v":1152},{"v":0}]},{"c":[{"v":"2011-41"},{"v":9903},{"v":0},{"v":-1008}]},{"c":[{"v":"2011-42"},{"v":5940},{"v":0},{"v":-1332}]},{"c":[{"v":"2011-43"},{"v":7979},{"v":0},{"v":-593}]},{"c":[{"v":"2011-44"},{"v":7833},{"v":0},{"v":-653}]},{"c":[{"v":"2011-45"},{"v":9691},{"v":0},{"v":-562}]},{"c":[{"v":"2011-46"},{"v":8836},{"v":0},{"v":-1686}]},{"c":[{"v":"2011-47"},{"v":10358},{"v":0},{"v":-2120}]},{"c":[{"v":"2011-48"},{"v":9956},{"v":0},{"v":-1353}]},{"c":[{"v":"2011-49"},{"v":8787},{"v":160},{"v":0}]},{"c":[{"v":"2011-50"},{"v":9590},{"v":0},{"v":0}]},{"c":[{"v":"2011-51"},{"v":8931},{"v":887},{"v":0}]},{"c":[{"v":"2011-52"},{"v":8529},{"v":0},{"v":-1434}]},{"c":[{"v":"2012-01"},{"v":8680},{"v":0},{"v":-1416}]},{"c":[{"v":"2012-02"},{"v":9932},{"v":0},{"v":-169}]},{"c":[{"v":"2012-03"},{"v":8334},{"v":0},{"v":-3149}]},{"c":[{"v":"2012-04"},{"v":8077},{"v":217},{"v":0}]},{"c":[{"v":"2012-05"},{"v":7788},{"v":0},{"v":-3683}]},{"c":[{"v":"2012-06"},{"v":10070},{"v":113},{"v":0}]},{"c":[{"v":"2012-07"},{"v":8318},{"v":1704},{"v":0}]},{"c":[{"v":"2012-08"},{"v":8208},{"v":0},{"v":-104}]},{"c":[{"v":"2012-09"},{"v":11561},{"v":272},{"v":0}]},{"c":[{"v":"2012-10"},{"v":7797},{"v":0},{"v":0}]},{"c":[{"v":"2012-11"},{"v":9893},{"v":0},{"v":-90}]},{"c":[{"v":"2012-12"},{"v":9197},{"v":0},{"v":-191}]},{"c":[{"v":"2012-13"},{"v":7287},{"v":651},{"v":0}]},{"c":[{"v":"2012-14"},{"v":7072},{"v":646},{"v":0}]},{"c":[{"v":"2012-15"},{"v":7183},{"v":0},{"v":-907}]},{"c":[{"v":"2012-16"},{"v":6021},{"v":0},{"v":-993}]}]}'; 

     var data = new google.visualization.DataTable(jsonData); 
     var options = { 
      width: 700, 
      height: 500, 
      legend: {position: 'top'}, 
      areaOpacity: 1.0, 
      vAxis: {format: '$#'}, 
      hAxis: {title: 'Week number', titleTextStyle: {color: 'blue'}, slantedText: true}, 
      colors: ['CCFFCC', '66CC66', 'FF9999'], 
      animation: {duration: 1000, easing: 'out'} 
     }; 

     var chart = new google.visualization.SteppedAreaChart(document.getElementById('money')); 
     google.visualization.events.addListener(chart, 'ready', function() { 
      $('#slider').slider('enable'); 
     }); 
     chart.draw(data, options); 
} 
</script> 
</head> 

<body> 
<h3 id="header">Money</h3> 
<div id="money"></div> 
<div id="slider"></div> 
</body> 
</html> 

我讀過the Google example(底部),但不要饒舌它。

回答

1

自己的解決方案(已經呈現在Opera 11.62的問題,但 - 我已經申請a bug #882爲):

<!DOCTYPE HTML> 
<html> 
<style type="text/css"> 
    h3,p,div { 
     text-align: center; 
    } 

    #slider { 
     width: 700px; 
     margin-left: auto; 
     margin-right: auto; 
    } 
</style> 
<style type="text/css" title="currentStyle"> 
     @import "https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css"; 
</style> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script> 
<script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart'],'language':'ru'}]}"></script> 
<script type="text/javascript"> 

google.setOnLoadCallback(initChart); 

var jsonData = '{"cols":[{"label":"Week number","type":"string"},{"label":"Week leader","type":"number"},{"label":"Your win","type":"number"},{"label":"Your loss","type":"number"}],"rows":[{"c":[{"v":"2011-33"},{"v":10671},{"v":0},{"v":-3113}]},{"c":[{"v":"2011-34"},{"v":7975},{"v":0},{"v":-2113}]},{"c":[{"v":"2011-35"},{"v":11009},{"v":0},{"v":-2244}]},{"c":[{"v":"2011-36"},{"v":10679},{"v":0},{"v":-689}]},{"c":[{"v":"2011-37"},{"v":11197},{"v":305},{"v":0}]},{"c":[{"v":"2011-38"},{"v":6762},{"v":419},{"v":0}]},{"c":[{"v":"2011-39"},{"v":7823},{"v":0},{"v":-1563}]},{"c":[{"v":"2011-40"},{"v":10171},{"v":1152},{"v":0}]},{"c":[{"v":"2011-41"},{"v":9903},{"v":0},{"v":-1008}]},{"c":[{"v":"2011-42"},{"v":5940},{"v":0},{"v":-1332}]},{"c":[{"v":"2011-43"},{"v":7979},{"v":0},{"v":-593}]},{"c":[{"v":"2011-44"},{"v":7833},{"v":0},{"v":-653}]},{"c":[{"v":"2011-45"},{"v":9691},{"v":0},{"v":-562}]},{"c":[{"v":"2011-46"},{"v":8836},{"v":0},{"v":-1686}]},{"c":[{"v":"2011-47"},{"v":10358},{"v":0},{"v":-2120}]},{"c":[{"v":"2011-48"},{"v":9956},{"v":0},{"v":-1353}]},{"c":[{"v":"2011-49"},{"v":8787},{"v":160},{"v":0}]},{"c":[{"v":"2011-50"},{"v":9590},{"v":0},{"v":0}]},{"c":[{"v":"2011-51"},{"v":8931},{"v":887},{"v":0}]},{"c":[{"v":"2011-52"},{"v":8529},{"v":0},{"v":-1434}]},{"c":[{"v":"2012-01"},{"v":8680},{"v":0},{"v":-1416}]},{"c":[{"v":"2012-02"},{"v":9932},{"v":0},{"v":-169}]},{"c":[{"v":"2012-03"},{"v":8334},{"v":0},{"v":-3149}]},{"c":[{"v":"2012-04"},{"v":8077},{"v":217},{"v":0}]},{"c":[{"v":"2012-05"},{"v":7788},{"v":0},{"v":-3683}]},{"c":[{"v":"2012-06"},{"v":10070},{"v":113},{"v":0}]},{"c":[{"v":"2012-07"},{"v":8318},{"v":1704},{"v":0}]},{"c":[{"v":"2012-08"},{"v":8208},{"v":0},{"v":-104}]},{"c":[{"v":"2012-09"},{"v":11561},{"v":272},{"v":0}]},{"c":[{"v":"2012-10"},{"v":7797},{"v":0},{"v":0}]},{"c":[{"v":"2012-11"},{"v":9893},{"v":0},{"v":-90}]},{"c":[{"v":"2012-12"},{"v":9197},{"v":0},{"v":-191}]},{"c":[{"v":"2012-13"},{"v":7287},{"v":651},{"v":0}]},{"c":[{"v":"2012-14"},{"v":7072},{"v":646},{"v":0}]},{"c":[{"v":"2012-15"},{"v":7183},{"v":0},{"v":-907}]},{"c":[{"v":"2012-16"},{"v":6021},{"v":0},{"v":-993}]}]}'; 

var data = new google.visualization.DataTable(jsonData); 
var chart; 
var options = { 
    width: 700, 
    height: 500, 
    legend: {position: 'top'}, 
    areaOpacity: 1.0, 
    vAxis: {format: '$#'}, 
    hAxis: {title: 'Week number', titleTextStyle: {color: 'blue'}, slantedText: true, viewWindow: {min: 20, max: 35}}, 
    colors: ['CCFFCC', '66CC66', 'FF9999'], 
    animation: {duration: 1000, easing: 'out'} 
}; 

$(function() { 
    $('#slider').slider({ 
     disabled: true, 
     range: 'min', 
     value: 20, 
     min: 0, 
     max: 20, 
     change: function(event, ui) { 
      $('#header').text('debug=' + ui.value); 
      options.hAxis.viewWindow.min = ui.value; 
      drawChart(); 
     } 
    }); 
}); 

function initChart() { 
    chart = new google.visualization.SteppedAreaChart(document.getElementById('money')); 
    google.visualization.events.addListener(chart, 'ready', function() { 
     $('#slider').slider('enable'); 
    }); 
    drawChart(); 
} 
function drawChart() { 
    chart.draw(data, options); 
} 
</script> 
</head> 

<body> 
<h3 id="header">Money</h3> 
<div id="money"></div> 
<div id="slider"></div> 
</body> 
</html>