Skip to content

Instantly share code, notes, and snippets.

@arisetyo
Created July 9, 2013 15:51
Show Gist options
  • Save arisetyo/5958501 to your computer and use it in GitHub Desktop.
Save arisetyo/5958501 to your computer and use it in GitHub Desktop.
Using Chart.js, Knockout.js, and jQuery for a chart with dynamic data
<!DOCTYPE html>
<html>
<head>
<script src="js/jquery-1.9.1.js"></script>
<script src="js/knockout-2.1.0.js"></script>
<script src="js/Chart.js"></script>
</head>
<body>
<div>
<canvas id="canvas" height="450" width="600"></canvas>
</div>
<div>
<button data-bind="click: function(){ loadDataset(1) }">Dataset 1</button>&nbsp;
<button data-bind="click: function(){ loadDataset(2) }">Dataset 2</button>
</div>
<script type="text/javascript">
function MainViewModel(data) {
var self = this;
var ctx = $("#canvas").get(0).getContext("2d");
self.lineChartData = ko.observable();
self.loadDataset = function(id) {
$.get("/data/"+id, function(data) {
self.lineChartData(data);
var myLine = new Chart(ctx).Line( vm.lineChartData() );
});
}
}
var vm = new MainViewModel();
ko.applyBindings(vm);
vm.loadDataset(1);
</script>
</body>
</html>
app.get('/data/:id', function(req, res) {
var data;
if(req.params.id==1) {
data = {
labels : ["January","February","March","April","May","June"],
datasets : [
{
fillColor : "rgba(220,220,220,0.5)",
strokeColor : "rgba(220,220,220,1)",
pointColor : "rgba(220,220,220,1)",
pointStrokeColor : "#fff",
data : [65,59,90,81,16,51]
}
]
};
}else{
data = {
labels : ["July","August","September","October","November","December"],
datasets : [
{
fillColor : "rgba(151,187,205,0.5)",
strokeColor : "rgba(151,187,205,1)",
pointColor : "rgba(151,187,205,1)",
pointStrokeColor : "#fff",
data : [28,48,40,19,96,27]
}
]
};
}
res.send( data );
});
@omguddu100
Copy link

Can You please run this code in jsfiddle ?? I'm getting some error ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment