The problem stems from your ChartRangeFilter, and is ultimately 3-fold. First, the container ID is specified incorrectly, the object key should be "containerId", not "containerID". Second, you need to use the "filterColumnIndex" option when using a column index, not the "filterColumnLabel" option (which would take a column label instead). Third, the base columns are not appropriate for a LineChart (which the ChartRangeFilter draws internally), so you have to use the ui.chartView.columns option to change the chart's view. Put together, they look like this:
var rangeSlider = new google.visualization.ControlWrapper({
'controlType': 'ChartRangeFilter',
'containerId': 'Filter',
'options': {
'filterColumnIndex':2,
ui: {
chartView: {
columns: [2, {
type: 'number',
calc: function () {return 0;}
}]
}
}
}
});
I wish I could give you good hints for diagnosing this stuff, but a lot of it just comes down to familiarity with the API. In this case, I found out where the problem was by drawing each element one at a time until I found something that failed. As an example, I added this after your chart declaration:
chart.setDataTable(data); // give the chart some data to draw with
chart.draw(); // draw the chart
return; // return from the function so the rest of the code doesn't execute
The chart draw fine, so I repeated this with the ChartRangeFilter, and got an error message that was more helpful in Chrome's developer console:
Uncaught Error: The container #null is null or not defined.
This lead me to the problem with the "containerId" parameter. I then repeated this process fixing one item at a time until I had the complete solution.