If you could post your example (is the datasource public?) then we can try to analyze the situation...
- VizBoy. On Wed, Feb 4, 2009 at 6:33 PM, craigdataqa <[email protected]> wrote: > > Looks like we can rule out the GWT api being the problem. I quickly > threw together a JS version of the chart and it still doesn't work. > > The JS version exhibits the same behavior as before. The data source > query and chart drawing have no problems the first time but any > subsequent requests behave as though they time out. > > I noticed one person had an issue with headers being sent after the > response, but my setup doesn't have this issue. > > --Craig > > > On Jan 22, 10:35 am, "Eric Z. Ayers" <[email protected]> wrote: > > It seems like the GWT code involved in this problem is very minimal. > > If you want to eliminate the GWT component, I would suggest you write > > a very small JavaScript driver for your class and see if your second > > query works. > > > > -Eric. > > > > On Jan 21, 11:30 am, Craig Schroeder <[email protected]> wrote: > > > > > Hey VizBoy, > > > Not sure if you were referring to me here but I am going to paste in my > code > > > below... > > > > > Hopefully someone can help me figure out if this is an issue in GWT or > the > > > GWT API, or some environmental issue on my end. I don't see any errors > in > > > application logic or system responses so I'm not sure why one request > works > > > and then subsequent ones don't. > > > > > Thanks, > > > Craig > > > > > ##########python service############# > > > import gviz_api, mmap, re, os, timeit > > > from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer > > > > > def getResults(args): > > > fname = "xxxxxxxxxxxx-" + args[0] > > > fname = os.path.join("../audit", fname) > > > try: > > > fileobj = open(fname) > > > except: > > > return "file not found" > > > queryID = args[1] > > > try: > > > filters = args[2:] > > > except: > > > pass > > > flag = False > > > > > if len(filters) == 0: > > > try: > > > records[args[0]][args[1]] > > > description = {("key", "string"):("value", "number")} > > > data = records[args[0]][args[1]] > > > data_table = gviz_api.DataTable(description) > > > data_table.LoadData(data) > > > print > > > > data_table.ToJSonResponse(columns_order=("key","value"),order_by=reports[ar > gs[1]]["sort"]) > > > return > > > > data_table.ToJSonResponse(columns_order=("key","value"),order_by=reports[ar > gs[1]]["sort"]) > > > except KeyError: > > > print "KeyError" > > > if len(filters) == 0: > > > filemap = mmap.mmap(fileobj.fileno(), os.path.getsize(fname) , > > > access=mmap.ACCESS_READ) > > > else: > > > print "starting file filtering" > > > fileString = "" > > > fileList = [] > > > c=0 > > > for line in fileobj: > > > c+=1 > > > if c%1000 == 0: > > > print c > > > for f in filters: > > > if flag: > > > break > > > if f not in line: > > > flag = True > > > if not flag: > > > fileList.append(line) > > > flag = False > > > print "ending file filtering" > > > fileString = ''.join(fileList) > > > pat = re.compile(reports[queryID]["regex"]) > > > count = {} > > > if len(filters) == 0: > > > for m in pat.findall(filemap): > > > try: > > > count[m] +=1 > > > except KeyError: > > > count[m] = 1 > > > else: > > > for m in pat.findall(fileString): > > > try: > > > count[m] +=1 > > > except KeyError: > > > count[m] = 1 > > > if len(filters) == 0: > > > try: > > > records[args[0]][args[1]] = count > > > except: > > > records[args[0]] = {} > > > records[args[0]][args[1]] = count > > > print "just before returning" > > > try: > > > filemap.close() > > > except: > > > pass > > > fileString = "" > > > fileobj.close() > > > description = {("key", "string"):("value", "number")} > > > if len(filters) == 0: > > > data = records[args[0]][args[1]] > > > else: > > > data = count > > > data_table = gviz_api.DataTable(description) > > > data_table.LoadData(data) > > > print > > > > data_table.ToJSonResponse(columns_order=("key","value"),order_by=reports[ar > gs[1]]["sort"]) > > > return > > > > data_table.ToJSonResponse(columns_order=("key","value"),order_by=reports[ar > gs[1]]["sort"]) > > > > > class MyHandler(BaseHTTPRequestHandler): > > > > > def do_GET(self): > > > if self.path.find("?") != -1: > > > queryString = self.path.split("?")[1] > > > queryArgs = > > > queryString.split("tq=")[1].split("&")[0].split("%40") > > > urlargs = self.path.split("?")[0].split("/") > > > print urlargs > > > self.send_response(200) > > > self.send_header('Content-type', 'text/html') > > > self.end_headers() > > > if self.path == "/": > > > self.wfile.write("Don't know what you're trying to do") > > > return > > > if urlargs[1] == "gwt": > > > if urlargs[2] == "menu": > > > self.wfile.write() > > > else: > > > self.wfile.write(getResults(queryArgs)) > > > self.wfile.write(open(xxxxxxxx).read()) > > > return > > > reports = {} > > > reports["sessioncount"] = {} > > > reports["sessioncount"]["description"] = "Counts Product Session > Starts" > > > reports["sessioncount"]["regex"] = r"ProductSessionStartAudit" > > > reports["sessioncount"]["sort"] = "value" > > > > > reports["1pm"] = {} > > > reports["1pm"]["description"] = "Counts all activities during the 1pm > hour" > > > reports["1pm"]["regex"] = r"(?<=\|\|\d\d/\d\d/\d\d\d\d )13:\d\d" > > > reports["1pm"]["sort"] = "key" > > > > > reports["top-locids"] = {} > > > reports["top-locids"]["description"] = "Ranks locids" > > > reports["top-locids"]["regex"] = > r"(?<=-)[-A-Za-z0-9_]*(?=-[^-|]{30,32})" > > > reports["top-locids"]["sort"] = "value" > > > > > records = {} > > > > > def main(): > > > try: > > > PORT = 8585 > > > server = HTTPServer(('', PORT), MyHandler) > > > print 'started server on %s...' % PORT > > > > > server.serve_forever() > > > > > except (KeyboardInterrupt, SystemExit): > > > print "closing..." > > > server.socket.close() > > > > > if __name__ == '__main__': > > > main() > > > ################################### > > > > > ##########dashboard.java############ > > > package com.xxxxxxx.client; > > > > > import com.google.gwt.core.client.EntryPoint; > > > import com.google.gwt.user.client.Window; > > > import com.google.gwt.user.client.ui.ChangeListener; > > > import com.google.gwt.user.client.ui.ClickListener; > > > import com.google.gwt.user.client.ui.HorizontalPanel; > > > import com.google.gwt.user.client.ui.ListBox; > > > import com.google.gwt.user.client.ui.Panel; > > > import com.google.gwt.user.client.ui.RootPanel; > > > import com.google.gwt.user.client.ui.Widget; > > > import com.google.gwt.visualization.client.AjaxLoader; > > > import com.google.gwt.visualization.client.DataTable; > > > import com.google.gwt.visualization.client.Query; > > > import com.google.gwt.visualization.client.QueryResponse; > > > import com.google.gwt.visualization.client.Query.Callback; > > > import com.google.gwt.visualization.client.visualizations.ColumnChart; > > > import com.google.gwt.visualization.client.visualizations.Table; > > > > > import org.gwtwidgets.client.ui.cal.CalendarDate; > > > import org.gwtwidgets.client.ui.cal.SimpleCalendar; > > > > > public class dashboard implements EntryPoint { > > > public static class vizData { > > > public static String vizDate = ""; > > > public static String vizQuery = ""; > > > public static int vizID; > > > public static ColumnChart col; > > > public static Table tab; > > > public static int count = 0;} > > > > > public void onModuleLoad() { > > > // Create a callback to be called when the visualization API > > > // has been loaded. > > > Runnable onLoadCallback = new Runnable() { > > > public void run() { > > > Panel panel = RootPanel.get(); > > > vizData.col = new ColumnChart(); > > > vizData.tab = new Table(); > > > panel.add(vizData.col); > > > panel.add(vizData.tab); > > > } > > > }; > > > > > Panel panel = RootPanel.get(); > > > > > HorizontalPanel top = new HorizontalPanel(); > > > > > SimpleCalendar cal = new SimpleCalendar(); > > > cal.addClickListener(new ClickListener() { > > > @SuppressWarnings("deprecation") > > > public void onClick(Widget sender) { > > > CalendarDate date = ((SimpleCalendar) > sender).getDateSelected(); > > > int y = date.getDate().getYear() + 1900; > > > int m = date.getDate().getMonth() + 1; > > > int d = date.getDate().getDate(); > > > String mm; > > > String dd; > > > if (m < 10) { > > > mm = "0" + Integer.toString(m); > > > } > > > else { > > > mm = Integer.toString(m); > > > } > > > if (d < 10) { > > > dd = "0" + Integer.toString(d); > > > } > > > else { > > > dd = Integer.toString(d); > > > } > > > vizData.vizDate = Integer.toString(y) + "-" + mm + "-" + > dd; > > > updateData();} > > > > > }); > > > top.add(cal); > > > > > ListBox query = new ListBox(); > > > query.setTitle("Select a base query"); > > > query.addItem("sessioncount"); > > > vizData.vizQuery = "sessioncount"; > > > query.addItem("1pm"); > > > query.addChangeListener(new ChangeListener() { > > > public void onChange(Widget sender) { > > > vizData.vizQuery = ((ListBox) sender).getValue(((ListBox) > > > sender).getSelectedIndex()); > > > if (vizData.vizDate != ""){ > > > updateData();} > > > } > > > > > }); > > > top.add(query); > > > > > panel.add(top); > > > > > // Load the visualization api, passing the onLoadCallback to be > called > > > // when loading is done. > > > AjaxLoader.loadVisualizationApi(onLoadCallback, > ColumnChart.PACKAGE, > > > Table.PACKAGE); > > > } > > > > > private ColumnChart.Options colOptions(String title) { > > > ColumnChart.Options options = ColumnChart.Options.create(); > > > > ... > > > > read more » > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
