mirror of https://github.com/masayuki0812/c3.git
Quite good looking graph derived from d3.js
http://c3js.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.6 KiB
92 lines
2.6 KiB
///<reference path="http://localhost/cockpit/js/playground/utils.js"></script> |
|
|
|
|
|
|
|
var chart; |
|
function refresh() { |
|
if (suspendRefresh) |
|
return; |
|
chart.load({ |
|
columns: [ |
|
["Value"].concat(zoom(column, currentZoom, "t=>Math.round(t.avg())".toLambda())), |
|
["xColumn"].concat(zoom(xColumn, currentZoom, "t=>t[0]".toLambda())), |
|
] |
|
}); |
|
} |
|
|
|
function getChart() { |
|
return chart; |
|
} |
|
function main() { |
|
var last = 0; |
|
var max = 10000; |
|
var column = Array.generate(max, function (i) { |
|
return last += Math.randomInt(-10, 10); |
|
}); |
|
var xColumn = Array.generateNumbers(0, max); |
|
var options = { |
|
bindto: "#divChart", |
|
//transition: { duration: 0 }, |
|
data: { |
|
columns: [ |
|
["Value"].concat(column), |
|
["x"].concat(xColumn), |
|
],//column |
|
type: "line", |
|
x: "x" |
|
}, |
|
zoom2: { |
|
enabled: true, |
|
//reducers: { |
|
// col: "t=>Math.round(t.avg())".toLambda(), |
|
// xColumns: "t=>t[0]".toLambda() |
|
//} |
|
} |
|
}; |
|
chart = c3ext.generate(options); |
|
|
|
|
|
var deltaY = 0; |
|
var leftRatio = 0; |
|
var el = $("#divChart"); |
|
var timer = new Timer(doZoom); |
|
el.mousewheel(function (e) { |
|
deltaY += e.deltaY; |
|
leftRatio = (e.offsetX - 70) / (e.currentTarget.offsetWidth - 70); |
|
console.log({ "e.offsetX": e.offsetX, "e.currentTarget.offsetWidth": e.currentTarget.offsetWidth, leftRatio: leftRatio }); |
|
timer.set(150); |
|
e.preventDefault(); |
|
//if(e.deltaY>0) |
|
// chart.zoom2.zoomIn(); |
|
//else if(e.deltaY<0) |
|
// chart.zoom2.zoomOut(); |
|
//console.log(e.deltaX, e.deltaY, e.deltaFactor); |
|
}); |
|
|
|
window.setInterval(refreshStatus, 1000); |
|
|
|
function refreshStatus() { |
|
var zoomInfo = chart.zoom2.getZoom(); |
|
var info = { |
|
reduced:chart.zoom2.maxItems(), |
|
actual:(zoomInfo.currentZoom[1]-zoomInfo.currentZoom[0]), |
|
range:zoomInfo.currentZoom[0] + "-" + zoomInfo.currentZoom[1], |
|
total: zoomInfo.totalItems |
|
}; |
|
$("#status").text(JSON.stringify(info, null, " ")); |
|
} |
|
function doZoom() { |
|
if (deltaY != 0) { |
|
var maxDelta = 10; |
|
var multiply = (maxDelta + deltaY) / maxDelta; |
|
//var factor = chart.zoom2.factor()*multiply; |
|
//factor= Math.ceil(factor*100) / 100; |
|
console.log({ deltaY: deltaY, multiply: multiply }); |
|
chart.zoom2.zoomAndPanByRatio(multiply, leftRatio);//0.5);//leftRatio); |
|
deltaY = 0; |
|
} |
|
} |
|
|
|
}; |
|
|
|
|
|
|