Pookie - could you share how you reorganized.

I'm having similar difficulty getting setCell to work within
GDownloadUrl, and am new to javascript, as well.



On Nov 26, 10:40 am, p00kie <[email protected]> wrote:
> I am unable to send a link. :\
>
> However, I seemed to have fixed the problem.
>
> I ended up reorganizing all the code as well as creating sub-
> functions.
>
> Thanks for the help. I do appreciate your feedback.
> And yes! Please feed me more google goodness. I cherish this API and I
> see many ways in which it can be improved. Glad to see your team is
> planning to add more features.
>
> On Nov 25, 3:55 pm, VizGuy <[email protected]> wrote:
>
> > I haven't seen before the problem with the empty table, I will have to try
> > to recreate it based on your code. If you could send a link that shows this
> > problem it would help, but I understand this might not be possible.
>
> > As for the dynamic rows: we are looking into ways to make this API easier to
> > use. This is a good example.
> > However, in your case, what is the problem with calling
> > "data.addRows(idD.length)"?
> > This should work.
> > In addition, what you can do is adding the rows in the loop, just before you
> > call thesetCell() functions, call data.addRows(1); but I prefer the first
> > option of course, so I will be happy to hear what the issue is.
>
> >  VizGuy
>
> > On Mon, Nov 24, 2008 at 8:33 PM, p00kie <[email protected]> wrote:
>
> > > Posting this problem again, in a clearer fashion. Hopefully someone
> > > can shed some light.
>
> > > Here is some background information:
>
> > > 1. My RDBMS is MySQL
> > > 2. Communication between web and database is using CGI/PERL.
> > > 3. Do not want to use PHP.
> > > 4. DO want to use Google Maps API/Google Visualization API
>
> > > Essentially it is a user-defined query which is selected then sent to
> > > the DB. The query is run and results are printed out to an XML
> > > spreadsheet using a Perl module called XML::Handler::YAWriter and
> > > XML::Generator::DBI.
>
> > > Then comes the Javascript which parses the XML spreadsheet using
> > > GDownloadURL (More info here:
> > >http://code.google.com/apis/maps/documentation/services.html#XML_Requ...
> > > ).
> > > It reads in the data and I have some parsing going on and then adding
> > > it to the data table.
>
> > > Here is my code thus far, feel free to use it.
>
> > >                <script src="http://maps.google.com/maps?
> > > file=api&amp;v=2&amp;key=..<http://maps.google.com/maps?file=api&v=2&key=..>."
> > > type="text/javascript"></script>
> > >                <script type="text/javascript" src="http://
> > >www.google.com/jsapi"></script>
> > >                <script type="text/javascript">
> > >                google.load("visualization", "1", {packages:
> > > ["table"]});
> > >                google.setOnLoadCallback(drawTable);
>
> > >                var data;
>
> > >                //Setting up the table
> > >                function drawTable() {
> > >                    data = new google.visualization.DataTable();
> > >                    data.addColumn('string', 'Id');
> > >                    data.addColumn('string', 'PI');
> > >                    data.addColumn('string', 'Cruise Info');
> > >                    data.addColumn('string', 'Date and Time');
> > >                    data.addColumn('string', 'Latitude');
> > >                    data.addColumn('string', 'Longitude');
> > >                    data.addColumn('string', 'Depth');
> > >                    data.addColumn('string', 'Name');
> > >                    data.addColumn('string', 'Value');
> > >                    data.addRows(23);
>
> > >                    GDownloadUrl("/seabass/output/search/results.xml",
> > > function(dataXML, responseCode) {
> > >                        if(responseCode == 200) {
> > >                            var xml = GXml.parse(dataXML);
> > >                            var idD =
> > > xml.documentElement.getElementsByTagName("data_id");
> > >                            var piD =
> > > xml.documentElement.getElementsByTagName("pi");
> > >                            var ciD =
> > > xml.documentElement.getElementsByTagName("cruise");
> > >                            var dtD =
> > > xml.documentElement.getElementsByTagName("date_time");
> > >                            var latD =
> > > xml.documentElement.getElementsByTagName("latitude");
> > >                            var lonD =
> > > xml.documentElement.getElementsByTagName("longitude");
> > >                            var depD =
> > > xml.documentElement.getElementsByTagName("depth");
> > >                            var nameD =
> > > xml.documentElement.getElementsByTagName("name");
> > >                            var valD =
> > > xml.documentElement.getElementsByTagName("value");
>
> > >                            for (var i = 0; i < idD.length; i++) {
> > >                                id = idD[i].childNodes[0].nodeValue;
> > >                                pi = piD[i].childNodes[0].nodeValue;
> > >                                ci = ciD[i].childNodes[0].nodeValue;
> > >                                dt = dtD[i].childNodes[0].nodeValue;
> > >                                lat = latD[i].childNodes[0].nodeValue;
> > >                                lon = lonD[i].childNodes[0].nodeValue;
> > >                                dep = depD[i].childNodes[0].nodeValue;
> > >                                name = nameD[i].childNodes
> > > [0].nodeValue;
> > >                                val = valD[i].childNodes[0].nodeValue;
> > >                                data.setCell(i, 0, String(id));
> > >                                data.setCell(i, 1, String(pi));
> > >                                data.setCell(i, 2, String(ci));
> > >                                data.setCell(i, 3, String(dt));
> > >                                data.setCell(i, 4, String(lat));
> > >                                data.setCell(i, 5, String(lon));
> > >                                data.setCell(i, 6, String(dep));
> > >                                data.setCell(i, 7, String(name));
> > >                                data.setCell(i, 8, String(val));
> > >                          }
> > >                        } else if (responseCode == -1) {
> > >                            alert("Data request timed out. Please try
> > > later.");
> > >                        } else {
> > >                            alert("Request resulted in error. Check
> > > XML file is retrievable.");
> > >                        }
> > >                    });
>
> > >                    var table = new google.visualization.Table
> > > (document.getElementById('table_div'));
> > >                    table.draw(data, {showRowNumber: true});
> > >                }
> > >                </script>
> > >                <div id="table_div"></div>
>
> > > It works, albeit some problems.
>
> > > 1. The table prints out, however, all I get is a blank table (but the
> > > values are there). I need to be able to see it when the page loads. I
> > > can see the populated table by clicking on one of the column names but
> > > obviously that's not what I would like to have.
> > >   Problem: Page Load -> Empty Table
> > >   Temporary Solution: Page Load -> Empty Table-> Click on Column Name
> > > -> Can see all the table values
> > >   Need Solution: Page Load -> Populated Table
>
> > > 2. Dynamic rows. Would like to be able to set the row size based on
> > > size of returned results. Cannot do so right now. For example: doing
> > > data.addRows(idD.length) is not possible.
> > >   Problem: No dynamic row count
> > >   Temporary Solution: Hard code row count
> > >   Need Solution: Dynamic Rows.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to