google.charts.load('current', {
callback: function () {
var dataTable = new google.visualization.DataTable({
cols: [
{label: 'Date', type: 'date'},
{label: '+', type: 'number'},
{label: '-', type: 'number'},
],
rows: [
{c:[{v: new Date(2016, 2, 13)}, {v: null}, {v: -100}]},
{c:[{v: new Date(2016, 3, 18)}, {v: 50}, {v: null}]},
{c:[{v: new Date(2016, 4, 21)}, {v: 50}, {v: null}]},
{c:[{v: new Date(2016, 5, 20)}, {v: null}, {v: -200}]},
{c:[{v: new Date(2016, 6, 23)}, {v: 50}, {v: null}]},
{c:[{v: new Date(2016, 7, 12)}, {v: 100}, {v: null}]},
{c:[{v: new Date(2016, 8, 28)}, {v: 200}, {v: null}]},
{c:[{v: new Date(2016, 8, 28)}, {v: null}, {v: -1000}]}
]
});
var options = {
title: 'Transaction Chart'
};
var slider = new google.visualization.ControlWrapper({
controlType: 'DateRangeFilter',
containerId: 'filter_div',
dataTable: dataTable,
options: {
filterColumnIndex: 0,
ui: {
format: {pattern: 'yyyy-MM-dd'}
}
}
});
google.visualization.events.addListener(slider, 'ready', drawChart);
google.visualization.events.addListener(slider, 'statechange', drawChart);
slider.draw();
function drawChart() {
var range = slider.getState();
var dataView = new google.visualization.DataView(slider.getDataTable());
dataView.setColumns([{
calc: 'stringify',
sourceColumn: 0,
type: 'string'
}, 1, 2]);
dataView.setRows(dataTable.getFilteredRows([{
column: 0,
minValue: range.lowValue,
maxValue: range.highValue
}]));
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(dataView, options);
}
},
packages: ['controls', 'corechart']
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="filter_div"></div>
<div id="chart_div"></div>