Thanks a million, that was exactly what I required. I owe you a pint!
H. On May 16, 5:36 pm, Riccardo Govoni <[email protected]> wrote: > Hi, > If I understand correctly, you want to resize the chart whenever the number > of rows displayed changes, so that each bar maintains the same thickness. > Right? > > what about this: > > - dashboard fires a 'ready' event whenever any part of it redraws (such as > the chart redrawing because of a control change) > - you can always query a chartwrapper (or controlwrapper) and ask it for the > datatable it received in its last draw (via chartWrapper.getDataTable()) > > so you could add a 'ready' event listener to the dashboard and resize the > chart whenever its size is not the one you want: > > ... > var dash = new > google.visualization.Dashboard(document.getElementById('dashboard')); > > google.visualization.events.addListener(dash, 'ready', function() { > // Dashboard redraw, have a look at how many rows the barChart is > displaying > var numRows = barChart.getDataTable().getNumberOfRows(); > var expectedHeight = numRows * 60; > if (parseInt(barChart.getOption('height'), 10) != expectedHeight) { > // Update the chart options and redraw just it > barChart.setOption('height', expectedHeight); > barChart.draw(); > } > > }); > > dash.bind(...); > dash.draw(data); > > I tried it briefly locally and it seems to work. > Mind that barChart.draw() triggers a dashboard 'ready' event too (since the > chart is part of the dashboard), so that if() statement that I added is > important to avoid entering an infinite loop where the 'ready' event handler > keeps calling itself. > > /R. -- You received this message because you are subscribed to the Google Groups "Google Visualization API" group. 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.
