You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

VGoogleAnalytics.java 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package com.vaadin.demo.sampler.gwt.client.ui;
  2. import com.google.gwt.dom.client.Document;
  3. import com.google.gwt.user.client.ui.Widget;
  4. import com.vaadin.terminal.gwt.client.ApplicationConnection;
  5. import com.vaadin.terminal.gwt.client.BrowserInfo;
  6. import com.vaadin.terminal.gwt.client.Paintable;
  7. import com.vaadin.terminal.gwt.client.UIDL;
  8. public class VGoogleAnalytics extends Widget implements Paintable {
  9. public VGoogleAnalytics() {
  10. setElement(Document.get().createDivElement());
  11. if (BrowserInfo.get().isIE6()) {
  12. getElement().getStyle().setProperty("overflow", "hidden");
  13. getElement().getStyle().setProperty("height", "0");
  14. getElement().getStyle().setProperty("width", "0");
  15. }
  16. }
  17. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  18. if (isLocalHostUrl()) {
  19. // Do not track localhost page views
  20. return;
  21. }
  22. String trackerId = uidl.getStringAttribute("trackerid");
  23. String pageId = uidl.getStringAttribute("pageid");
  24. String domainName = uidl.getStringAttribute("domain");
  25. String res = trackPageview(trackerId, pageId, domainName);
  26. if (null != res) {
  27. ApplicationConnection.getConsole().log(
  28. "WebAnalytics.trackPageview(" + trackerId + "," + pageId
  29. + "," + domainName + ") FAILED: " + res);
  30. } else {
  31. ApplicationConnection.getConsole().log(
  32. "WebAnalytics.trackPageview(" + trackerId + "," + pageId
  33. + "," + domainName + ") SUCCESS.");
  34. }
  35. }
  36. private native boolean isLocalHostUrl()
  37. /*-{
  38. var location = $wnd.location;
  39. var re = /^http:\/\/(localhost|127.0.0.1)/;
  40. return re.test(location);
  41. }-*/;
  42. private native String trackPageview(String trackerId, String pageId,
  43. String domainName)
  44. /*-{
  45. if (!$wnd._gat) {
  46. return "Tracker not found (running offline?)";
  47. }
  48. try {
  49. var pageTracker = $wnd._gat._getTracker(trackerId);
  50. if (domainName) {
  51. pageTracker._setDomainName(domainName);
  52. }
  53. if (pageId) {
  54. pageTracker._trackPageview(pageId);
  55. } else {
  56. pageTracker._trackPageview();
  57. }
  58. return null;
  59. } catch(err) {
  60. return ""+err;
  61. }
  62. }-*/;
  63. }