Thanks for your comments. I am noting them down. ChartMan
On Mon, May 3, 2010 at 3:24 AM, Paulo Mendes <[email protected]> wrote: > Thanks for the reply. > > Reloading will be okay (although it's a bit of an annoyance if the > user, like me, has a "flash blocker" application that only loads a > flash applet on a site after specifically clicking on it, and this > will force the user to click on the flash applet every time a value is > updated, but it's a very specific issue that shouldn't occur with the > majority of users). > > As for other issues, I'm experiencing long initial loading times, and > some instability with large datasets (I'm planning on loading hundreds > or thousands of data entries, and currently entering 900 entries will > crash my browser when creating the chart. Entering 100 takes a few > seconds). > > Paulo Mendes > > > On May 2, 8:24 am, ChartMan <[email protected]> wrote: > > Hi > > > > You are right one needs to reconstruct the chart and draw in order for > the > > changes to take place. > > I agree that this is not as easy as just calling #draw() but I don't > think > > that performance-wise this will make any difference. > > Are you seeing any other issues here ? > > > > ChartMan > > > > On Fri, Apr 30, 2010 at 11:36 PM, Paulo Mendes <[email protected] > >wrote: > > > > > > > > > Hi all, > > > I've been evaluating if Google Visualization's Motion Chart would > > > fulfill our requirements for a visualization tool in financial > > > analysis. > > > > > I've been having a simple problem however: I'm filling a DataTable > > > through Javascript, creating the MotionChart and drawing it. I want to > > > allow the user to change values for a DataTable row's values, > > > dynamically using JavaScript, and then reflect the value changes in > > > the chart (where a point would move to a different position, based on > > > the new data). I've read that that could be done by simple altering > > > the values in the DataTable (through dataTable.setCell() or > > > dataTable.setValue()) and then simply calling "chart.draw()". However, > > > calling "draw()" does not update with the new values (drawing in the > > > new position). Only recreating the MotionChart object will draw the > > > object in a new position. > > > > > What else is needed to update/refresh the MotionChar without > > > recreating the chart object? > > > > > Some code: > > > > > var googleData = null; > > > var googleChart = null; > > > var googleOptions = {}; > > > var userDataTableRowIdx = -1; // will contain the index for the table > > > row to change > > > > > google.load('visualization', '1', {'packages':['motionchart']}); > > > google.setOnLoadCallback(initChart); > > > > > function initChart() > > > { > > > googleData = new google.visualization.DataTable(); > > > googleData.addColumn('string', 'Name); > > > googleData.addColumn('date', 'Date'); > > > googleData.addColumn('number', 'A'); > > > googleData.addColumn('number', 'B'); > > > } > > > > > function fillAndDrawChart() > > > { > > > // in a cycle, call the function below to add values several > > > times, to populate the DataTable > > > for(/* ... */) > > > googleData.addRow([name,new Date (2007,12,31),varA, varB]); > > > > > // save the table row to be altered with the user input values, > > > into variable "userDataTableRowIdx" > > > /* ... */ > > > > > // setup the chart, create and draw it > > > googleOptions['width'] = chartWidth; > > > googleOptions['height'] = chartHeight; > > > googleOptions['showSidePanel'] = false; > > > googleOptions['showChartButtons'] = false; > > > googleOptions['showXScalePicker'] = false; > > > googleOptions['showYScalePicker'] = false; > > > googleOptions['showTrails'] = false; > > > > > googleChart = new > > > google.visualization.MotionChart(document.getElementById('chart_div')); > > > googleChart.draw(googleData, googleOptions); > > > } > > > > > /** > > > * Called when the user inputs new values, to update and redraw the > > > chart > > > */ > > > function ChartSetCellDetails(newValueA, newValueB) > > > { > > > googleData.setValue(userDataTableRowIdx, 2, newValueA); > > > googleData.setValue(userDataTableRowIdx, 3, newValueB); > > > > > // googleChart = new > > > google.visualization.MotionChart(document.getElementById('chart_div')); > > > > > googleChart.draw(googleData, googleOptions); > > > } > > > > > Thanks for any help, > > > Paulo Mendes > > > > > -- > > > 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]<google-visualization-api%[email protected]> > <google-visualization-api%[email protected]<google-visualization-api%[email protected]> > > > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/google-visualization-api?hl=en. > > > > -- > > 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]<google-visualization-api%[email protected]> > . > > For more options, visit this group athttp:// > groups.google.com/group/google-visualization-api?hl=en. > > -- > 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]<google-visualization-api%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/google-visualization-api?hl=en. > > -- 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.
