If you assign the event handler in your javascript, rather than in HTML, 
you don't need to make your DataTable a global variable.  You could add 
something like this to your chart drawing function:

document.getElementById('myButton').onclick = function () {
    getCSV(data);
};

You could also pass a DataView object to the same function, as DataViews 
support all of the necessary methods that getCSV relies on.

On Saturday, April 21, 2012 12:24:52 PM UTC-4, T-Roy wrote:
>
> This works extremely well.  Thank you! 
>
> The only real change I made was to define my dataTable as a global 
> variable so it could be passed from the button click. 
>
> I do not intend to use a URL datasource so the toolbar does not seem 
> to be the right solution for me. 
>
> I want to try it with a dataview so I will need to investigate how to 
> get a databiew object from a table that has been sorted and 
> filtered... 
>
> On Apr 20, 10:47 pm, knight <[email protected]> wrote: 
> > Hi, 
> > 
> > I have written this JS function called getCSV() to offer CSV download 
> > of a data table, using various pointers on the web. 
> > Just call this based on a button click or some event.  I have not 
> > tested this with a data view yet. 
> > 
> > String.prototype.EntityDecode = function() // For Converting HTML 
> > encoded chars to normal form 
> > { 
> > var t = document.createElement( 'div' ); 
> > t.innerHTML = this; 
> > return t.firstChild.nodeValue; 
> > 
> > } 
> > 
> > function getCSV(dataTable) { 
> > 
> >   var rows = dataTable.getNumberOfRows(); 
> >   var cols = dataTable.getNumberOfColumns(); 
> > 
> >   var str = ''; 
> > 
> > // header 
> >   for (var j = 0; j < cols; j++) { 
> >      str += '"' + dataTable.getColumnLabel(j) + '"'; 
> >      if (j != cols - 1) { str += ',';}; 
> >    } 
> >   str += '\n'; 
> > 
> > // data 
> > 
> >   for (var i = 0; i < rows; i++) { 
> >     for (var j = 0; j < cols; j++) { 
> >       var d = new String(dataTable.getValue(i, j)); 
> > if (d.search("\&") != -1) { 
> >           str += '"' + d.EntityDecode() + '"'; 
> >         } else 
> >           str += '"' + d + '"'; 
> >            if (j != cols - 1) { str += ',';}; 
> >     } 
> >     str += '\n'; 
> >   } 
> > 
> >   window.open( "data:text/csv;charset=utf-8," + escape(str), 
> > "csvWindow"); 
> > 
> > } 
> > 
> > On Apr 20, 7:21 pm, T-Roy <[email protected]> wrote: 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > > Does anyone know of a way to provide a data download capability for a 
> > > resident data table or data view? 
> > 
> > > Ideally it would provide csv or json data that is filtered and sorted 
> > > in accordance with the currently displayed data view in a dashboard. 
> > 
> > > Thanks for any ideas!

-- 
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/-/hdHwArgLT4AJ.
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.

Reply via email to