From: Adam Vartanian Date: Fri, 9 Apr 2010 18:45:04 +0000 (-0400) Subject: Add GWT Dygraphs loader class and supporting files. X-Git-Tag: v1.0.0~695^2~3 X-Git-Url: https://adrianiainlam.tk/git/?a=commitdiff_plain;h=71ac4733fec0ca3adab2ae5440db13e1cd2231f1;p=dygraphs.git Add GWT Dygraphs loader class and supporting files. --- diff --git a/Makefile b/Makefile index b71596c..2614ea3 100644 --- a/Makefile +++ b/Makefile @@ -8,4 +8,10 @@ all: generate-combined generate-combined: @echo Generating dygraph-combined.js - @generate-combined.sh + @./generate-combined.sh + +gwt: generate-gwt + +generate-gwt: + @echo Generating GWT JAR file + @./generate-jar.sh diff --git a/docs/index.html b/docs/index.html index 71df56b..1a86ecc 100644 --- a/docs/index.html +++ b/docs/index.html @@ -19,6 +19,7 @@
  • Baseball chart
  • Stock chart
  • Options Reference
  • +
  • GWT Compatibility
  • Data Policy
  • @@ -828,6 +829,26 @@ perl -ne 'BEGIN{print "Month,Nominal,Real\n"} chomp; ($m,$cpi,$low,$close,$high)
  • Make sure you don't have any trailing commas in your call to the Dygraph constructor or in the options parameter. Firefox, Chrome and Safari ignore these but they can cause a graph to not display in Internet Explorer.
  • +

    GWT Compatibility

    +

    There is currently no GWT wrapper around Dygraphs, however there is a class that can be used to easily load Dygraphs into the browser. To use it, include the generated dygraph-gwt.jar file in your classpath and add the following line to your GWT module:

    + +
    +<inherits name="org.danvk.dygraphs"/>    
    +
    + +

    Call org.danvk.Dygraphs.install() when your application starts to install the JavaScript code into the browser. You can use JSNI to call Dygraphs from your GWT code, as in the example below. The example uses the Visualization API for GWT and the Dygraphs GViz API.

    + +
    +  public static native JavaScriptObject drawDygraph(Element element, DataTable data, double minY, double maxY) /*-{
    +    var chart = new $wnd.Dygraph.GVizChart(element);
    +    chart.draw(dataTable,
    +      {
    +        valueRange: [minY, maxY]
    +      });
    +    return chart;
    +  }-*/;
    +
    +

    Data Policy

    dygraphs is purely client-side JavaScript. It does not send your data to any servers – the data is processed entirely in the client's browser.

    diff --git a/generate-jar.sh b/generate-jar.sh new file mode 100755 index 0000000..2c1d12d --- /dev/null +++ b/generate-jar.sh @@ -0,0 +1,4 @@ +#!/bin/bash +# Generates a JAR file that can be used from GWT to load Dygraphs + +jar -cf dygraph-gwt.jar -C gwt org diff --git a/gwt/org/danvk/Dygraphs$Resources.class b/gwt/org/danvk/Dygraphs$Resources.class new file mode 100644 index 0000000..7f4bdda Binary files /dev/null and b/gwt/org/danvk/Dygraphs$Resources.class differ diff --git a/gwt/org/danvk/Dygraphs.class b/gwt/org/danvk/Dygraphs.class new file mode 100644 index 0000000..084f8fa Binary files /dev/null and b/gwt/org/danvk/Dygraphs.class differ diff --git a/gwt/org/danvk/Dygraphs.java b/gwt/org/danvk/Dygraphs.java new file mode 100644 index 0000000..f581577 --- /dev/null +++ b/gwt/org/danvk/Dygraphs.java @@ -0,0 +1,41 @@ +package org.danvk; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Document; +import com.google.gwt.dom.client.ScriptElement; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.TextResource; + +/** + * Methods for installing Dygraphs source in a GWT document. + * + * @author flooey@google.com (Adam Vartanian) + */ +public class Dygraphs { + + // Protected because the GWT compiler has to generate a subclass. + protected interface Resources extends ClientBundle { + @Source("org/danvk/dygraph-combined.js") + TextResource dygraphs(); + } + + private static final Resources RESOURCES = GWT.create(Resources.class); + private static boolean installed = false; + + /** + * Install the Dygraphs JavaScript source into the current document. This + * method is idempotent. + */ + public static synchronized void install() { + if (!installed) { + ScriptElement e = Document.get().createScriptElement(); + e.setText(RESOURCES.dygraphs().getText()); + Document.get().getBody().appendChild(e); + installed = true; + } + } + + // Prevent construction + private Dygraphs() { } + +} diff --git a/gwt/org/danvk/dygraph-combined.js b/gwt/org/danvk/dygraph-combined.js new file mode 120000 index 0000000..d64425f --- /dev/null +++ b/gwt/org/danvk/dygraph-combined.js @@ -0,0 +1 @@ +../../../dygraph-combined.js \ No newline at end of file diff --git a/gwt/org/danvk/dygraphs.gwt.xml b/gwt/org/danvk/dygraphs.gwt.xml new file mode 100644 index 0000000..679765e --- /dev/null +++ b/gwt/org/danvk/dygraphs.gwt.xml @@ -0,0 +1,8 @@ + + + + + + + +