I don't know what json_parse does for you (it's not in the standard js
library), but the JSON string by itself will work if you remove the
trailing semicolon at the end (see http://jsfiddle.net/asgallant/Ytwua/).
Note that the category picker doesn't work the way you want it to - it
filters based on values in a column, not adding and removing columns. A
while back, I wrote a hack that makes it do this, however:
http://jsfiddle.net/asgallant/WaUu2/
On Tuesday, June 26, 2012 2:59:54 PM UTC-4, Benjamin Press wrote:
>
> So, I'm trying to create a DataTable in a javascript file from the data
> I'm pulling from a text file. I pull and parse the data in a php file,
> which returns the json encoded version. This is then passed to the
> javascript function, parsed with json_parse(), then passed to
> google.visualization.DataTable(). I get the error "Table has no columns"
> twice in the div were the table should be.
>
> My php function build_overview_linegraph returns a properly formatted json
> string. I'll include a copy of the json as an attachment.
>
> I pass that string to the javascript function like so:
>
> <script type="text/javascript">
> alert('alarm');
> var alpha = '<?php echo
> build_overview_linegraph(array("Man_vs_Machine.txt","Simply_Craters.txt"));?>';
> alert(alpha);
> drawLineChart("overview_time-graph","time-controller", alpha);
> </script>
>
> The alert(alpha) is to show that the json is properly created.
>
> drawLineChart looks like this:
>
> function drawLineChart(elementID, controlID, dataIn){
> google.load("visualization", "1", {packages:['controls','corechart']});
> google.setOnLoadCallback(drawChart);
> alert('cheese');
> function drawChart() {
>
> alert(dataIn);
>
>
> // this is where I'm taking the json string and trying to make my
> data table.
> dataNew = json_parse(dataIn);
> var data = new google.visualization.DataTable(dataNew);
>
> var chartColors = ['red','blue','green'];
> var options = {
> title: 'Line Chart',
> hAxis: {title: 'Date', titleTextStyle: {color: 'red'}},
> height: 200,
> width: 400,
> colors: chartColors
> };
>
> var LinChart = new google.visualization.ChartWrapper({
> chartType: 'LineChart',
> containerId: elementID,
> dataTable: data
> });
>
> LinChart.setOptions(options);
>
> var categoryPicker = new google.visualization.ControlWrapper({
> 'controlType': 'CategoryFilter',
> 'containerId': controlID,
> 'dataTable': data,
> 'options': {
> 'filterColumnIndex': 0,
> 'values': ['Man Vs Machine','Simp Craters'],
> 'ui': {
> 'label':'',
> 'caption':'Select to add data',
> 'allowTyping': false,
> 'allowMultiple': true,
> 'allowNone': false,
> 'selectedValuesLayout': 'belowStacked'
> }
> },
> 'state':{'selectedValues': ['Man Vs Machine','Simp
> Craters']}
> });
>
> function onControlStateChange(){
> var controlState = categoryPicker.getState();
> var selectedCols = controlState.selectedValues;
> var colorsPicked = [];
> var columns = [];
> columns.push(0);
> for(var i = 1; i < data.getNumberOfColumns(); i++){
> var current = data.getColumnLabel(i);
> if(selectedCols.indexOf(current) >= 0){
> columns.push(i);
> colorsPicked.push(chartColors[i-1]);
> }
> }
> LinChart.setView({'columns': columns});
> LinChart.setOption('colors', colorsPicked);
> LinChart.draw();
> }
>
> google.visualization.events.addListener(categoryPicker,'statechange',onControlStateChange);
> LinChart.draw();
> categoryPicker.draw();
> }
> }
>
>
>
>
>
> Any help I could get would be absolutely amazing! At this time, I can't
> figure out why the table isn't drawing.
>
--
You received this message because you are subscribed to the Google Groups
"Google Visualization API" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-visualization-api/-/jemvyVtXhMQJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-visualization-api?hl=en.