Ron Fricker
2011-May-07 01:10 UTC
[R] Help with Using gtext in gWidgetsWWW for Outputting Results to Webpage
All: Using gWidgetsWWW, I'm in the process of designing a website that will provide users with a GUI to interact with various datasets. As part of that, I want to provide users the ability select particular variables (via combo boxes) that will then result in summary (text) output being returned to the webpage. Think of it as their choices ultimately result in a one- or two-way table being returned from the R table() function. The way I have implemented it is with a series of comboboxes that users use to make selections and that ultimately return table() output to a gtext widget. In so doing, I was essentially following the example at the end of "Examples for gWidgets" (Section 17.2, An alternative to ggenericwidget). Right now I'm testing the code on my local PC using localServerOpen(). The problem is not with the function, but with the output. Specifically, in the output the formatting (particularly newline returns) are stripped out and my table turns into a long string of numbers. Similarly, any text that I add to the gtext widget is just appended. So, I just get a long string of text and numbers that is essentially unintelligible. What I want is output similar to what I would see in the R Console were I to generate a table there. In an attempt to correct this, I have tried all manner of font options such as font.attr=c("monospace"), etc., and it seems that no matter what I try I can neither affect the displayed font (it's some sort of proportional Arial-like font) nor the exclusion of line returns. (When I include \n in the text, it's simply stripped out/ignored. However, \t works.) Now, when I run the same code under gWidgets, I get a Courier-style font and the line returns show up. That is, the output in the gtext widget looks much like I would see in the R Console. So, my guess is that the browser is overriding the gWidgetsWWW output. I'm running this in the latest version of Firefox. (When I ran the same code using IE 9.0, the gtext widget does not even show up, but that's a different issue...) With all that as background, two questions: (1) Is the use of the gtext widget a good approach for what I want to do, or is there a better approach? (2) If the gtext widget is the way to go, any suggestions for solving the above problem? Many thanks, Ron ----- Associate Professor Operations Research Dept. Naval Postgraduate School Monterey, CA, USA -- View this message in context: http://r.789695.n4.nabble.com/Help-with-Using-gtext-in-gWidgetsWWW-for-Outputting-Results-to-Webpage-tp3504688p3504688.html Sent from the R help mailing list archive at Nabble.com.
jverzani
2011-May-07 16:28 UTC
[R] Help with Using gtext in gWidgetsWWW for Outputting Results to Webpage
Ron Fricker <rdfricker <at> nps.edu> writes: Ron, A few things. I am in the process of rewriting this package to use the new Rook package. The current package is on r-forge as gWidgetsWWW2. It works for local use, but Rook isn't yet integrated in with rapache to serve in a public way. (https://r-forge.r-project.org/R/?group_id=761) Second, the gtext widget has two methods for setting the text: svalue<- will replace the current text, and sounds like what you want. The insert method can be used to add to the current text, either at the beginning or end (It just calls svalue in the end). It sounds like you are using insert. Third, I had some issue with "\n" in the text, so added a call to some internal method stripSlashN to replace \n with <br>. That might not be working for you. You can try to replace these yourself. The fact that gWidgetsWWW uses proto (gWidgetsWWW2 doesn't) means you can hack some things. Here you can bypass the stripSlashN call by redefining the method, doing something like: t <- gtext("", ....) ## your usual call t$setValueJS <- function(.,...) { out <- sprintf("%s.setValue('%s');", .$asCharacter(), .$..data) return(out) } You might need some other function wrapping .$..data, which stores the raw data. (The \n caused problems when passed back to the browser. The gWidgetsWWW2 implementation bypasses this, so should work better going forward.) Finally, the font stuff isn't implemented. I think (but didn't check) you can use HTML markup within your text. Feel free to email directly if you want to. --John .. snip ...
jverzani
2011-May-07 16:49 UTC
[R] Help with Using gtext in gWidgetsWWW for Outputting Results to Webpage
jverzani <jverzani <at> gmail.com> writes: I was remiss in not mentioning the use of the nifty hwriter package for formatting tables for display through ghtml as an alternative to using gtext for what you want to do. See the package description at: http://www.embl.de/~gpau/hwriter/ --John