Browse Source

Merge branch 'candidate-6.2.12' into candidate-6.4.0

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 8 years ago
parent
commit
1e6662afa4

+ 1 - 0
docs/CMakeLists.txt

@@ -74,6 +74,7 @@ add_subdirectory(ECLPlayground)
 add_subdirectory(ECLPluginForEclipse)
 add_subdirectory(ECLScheduler)
 add_subdirectory(ECLWatch)
+add_subdirectory(VisualizingECL)
 
 
 # Docs automation

+ 38 - 14
docs/ECLLanguageReference/ECLR_mods/BltInFunc-GROUP.xml

@@ -16,7 +16,11 @@
   role="bold">LOCAL<indexterm>
       <primary>LOCAL</primary>
     </indexterm></emphasis><emphasis> </emphasis><emphasis role="bold">]
-  </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
+  </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis>
+  <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ]
+  [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis
+  role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name
+  </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -61,50 +65,70 @@
             with all other nodes to acquire data; the operation maintains the
             distribution of any previous DISTRIBUTE.</entry>
           </row>
+
           <row>
             <entry><emphasis role="bold">UNORDERED</emphasis></entry>
 
-            <entry>Optional. Specifies the output record order is not significant.</entry>
+            <entry>Optional. Specifies the output record order is not
+            significant.</entry>
           </row>
+
           <row>
             <entry><emphasis role="bold">ORDERED</emphasis></entry>
 
-            <entry>Specifies the significance of the output record order.</entry>
+            <entry>Specifies the significance of the output record
+            order.</entry>
           </row>
+
           <row>
             <entry><emphasis>bool</emphasis></entry>
 
-            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+            <entry>When False, specifies the output record order is not
+            significant. When True, specifies the default output record
+            order.</entry>
           </row>
+
           <row>
             <entry><emphasis role="bold">STABLE</emphasis></entry>
 
-            <entry>Optional. Specifies the input record order is significant.</entry>
+            <entry>Optional. Specifies the input record order is
+            significant.</entry>
           </row>
+
           <row>
             <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
 
-            <entry>Optional. Specifies the input record order is not significant.</entry>
+            <entry>Optional. Specifies the input record order is not
+            significant.</entry>
           </row>
+
           <row>
             <entry><emphasis role="bold">PARALLEL</emphasis></entry>
 
-            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+            <entry>Optional. Try to evaluate this activity in
+            parallel.</entry>
           </row>
+
           <row>
             <entry><emphasis>numthreads</emphasis></entry>
 
-            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+            <entry>Optional. Try to evaluate this activity using
+            <emphasis>numthreads</emphasis> threads.</entry>
           </row>
+
           <row>
             <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
 
-            <entry>Optional. Override the algorithm used for this activity.</entry>
+            <entry>Optional. Override the algorithm used for this
+            activity.</entry>
           </row>
+
           <row>
             <entry><emphasis>name</emphasis></entry>
 
-            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+            <entry>The algorithm to use for this activity. Must be from the
+            list of supported algorithms for the SORT function's STABLE and
+            UNSTABLE options.</entry>
           </row>
 
           <row>
@@ -127,9 +151,7 @@
 
   <para>The <emphasis>recordset</emphasis> must be sorted by the same elements
   as the <emphasis>breakcriteria</emphasis> if the ALL option is not
-  specified. The maximum size allowed for any one subgroup is 64 Mb and
-  subgroups never span nodes; if the <emphasis>breakcriteria</emphasis>
-  results in a subgroup larger than 64 Mb, an error occurs.</para>
+  specified. </para>
 
   <para>The <emphasis>recordset</emphasis> gets ‘ungrouped’ by use in a TABLE
   function, by the JOIN function in some circumstances (see JOIN), by UNGROUP,
@@ -152,5 +174,7 @@ UnGroupedSet := GROUP(GroupedSet); //ungroup the dataset
 MyTable := TABLE(SecondSort,MyRec); //create table of sorted names
 </programlisting>
 
-  <para>See Also: <link linkend="REGROUP">REGROUP</link>, <link linkend="COMBINE">COMBINE</link>, <link linkend="UNGROUP">UNGROUP</link>, <link linkend="EXCEPT">EXCEPT</link></para>
+  <para>See Also: <link linkend="REGROUP">REGROUP</link>, <link
+  linkend="COMBINE">COMBINE</link>, <link linkend="UNGROUP">UNGROUP</link>,
+  <link linkend="EXCEPT">EXCEPT</link></para>
 </sect1>

+ 14 - 3
docs/ECLLanguageReference/ECLR_mods/WkFlo-INDEPENDENT.xml

@@ -5,9 +5,11 @@
   <title>INDEPENDENT</title>
 
   <para><emphasis>attribute </emphasis>:= <emphasis>expression
-  </emphasis><emphasis role="bold">: INDEPENDENT<indexterm>
+  </emphasis><emphasis role="bold">: INDEPENDENT
+  [</emphasis><emphasis>(cluster)</emphasis><emphasis role="bold">]</emphasis>
+  <indexterm>
       <primary>INDEPENDENT</primary>
-    </indexterm></emphasis><indexterm>
+    </indexterm><indexterm>
       <primary>INDEPENDENT workflow service</primary>
     </indexterm>;</para>
 
@@ -29,6 +31,15 @@
 
             <entry>The definition of the attribute.</entry>
           </row>
+
+          <row>
+            <entry><emphasis>cluster</emphasis></entry>
+
+            <entry>Optional. A string constant specifying the name of the Thor
+            cluster on which execute. If omitted, the
+            <emphasis>attribute</emphasis> is run on the currently executing
+            cluster.</entry>
+          </row>
         </tbody>
       </tgroup>
     </informaltable></para>
@@ -69,7 +80,7 @@
                                      'mythor',DestPath+File2,
                                      -1,ESPportIP))
                            : INDEPENDENT;
-  SEQUENTIAL(DeleteOldFiles,SprayNewFiles);
+    SEQUENTIAL(DeleteOldFiles,SprayNewFiles);
 </programlisting>
 
   <para>See Also: <link linkend="GLOBAL">GLOBAL</link></para>

+ 0 - 505
docs/Visualizing/Visualizing.xml

@@ -1,505 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-<book lang="en_US" xml:base="../">
-  <title>Visualizing ECL Results</title>
-
-  <bookinfo>
-    <title>Visualizing ECL Results: Technical Preview</title>
-
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/redswooshWithLogo3.jpg" />
-      </imageobject>
-    </mediaobject>
-
-    <author>
-      <surname>Boca Raton Documentation Team</surname>
-    </author>
-
-    <legalnotice>
-      <para>We welcome your comments and feedback about this document via
-      email to <email>docfeedback@hpccsystems.com</email></para>
-
-      <para>Please include <emphasis role="bold">Documentation
-      Feedback</emphasis> in the subject line and reference the document name,
-      page numbers, and current Version Number in the text of the
-      message.</para>
-
-      <para>LexisNexis and the Knowledge Burst logo are registered trademarks
-      of Reed Elsevier Properties Inc., used under license.</para>
-
-      <para>HPCC Systems<superscript>®</superscript> is a registered trademark
-      of LexisNexis Risk Data Management Inc.</para>
-
-      <para>Other products, logos, and services may be trademarks or
-      registered trademarks of their respective companies.</para>
-
-      <para>All names and example data used in this manual are fictitious. Any
-      similarity to actual persons, living or dead, is purely
-      coincidental.</para>
-
-      <para />
-    </legalnotice>
-
-    <xi:include href="common/Version.xml" xpointer="FooterInfo"
-                xmlns:xi="http://www.w3.org/2001/XInclude" />
-
-    <xi:include href="common/Version.xml" xpointer="DateVer"
-                xmlns:xi="http://www.w3.org/2001/XInclude" />
-
-    <corpname>HPCC Systems<superscript>®</superscript></corpname>
-
-    <xi:include href="common/Version.xml" xpointer="Copyright"
-                xmlns:xi="http://www.w3.org/2001/XInclude" />
-
-    <mediaobject role="logo">
-      <imageobject>
-        <imagedata fileref="images/LN_Rightjustified.jpg" />
-      </imageobject>
-    </mediaobject>
-  </bookinfo>
-
-  <chapter>
-    <title>Introduction</title>
-
-    <para>The ECL compiler now supports adding external resources to a
-    Workunit using a manifest file. The manifest, in XML format, adds external
-    resources such as XSLT transformations, or other objects to the archive
-    before it is compiled and deployed to the server. In future versions, you
-    should be able to add different types of resources, for example, a
-    Cascading Style Sheet (css file).</para>
-
-    <para>In the examples we provide, we will demonstrate how to use this
-    feature to visualize ECL job results using Google Chart Tools. This
-    library provides an easy way to visualize data from ECL results.</para>
-
-    <para>See <ulink
-    url="http://code.google.com/apis/chart/interactive/docs/index.html">http://code.google.com/apis/chart/interactive/docs/index.html</ulink>
-    for more information.</para>
-
-    <para />
-
-    <informaltable colsep="1" frame="all" rowsep="1">
-      <?dbfo keep-together="always"?>
-
-      <tgroup cols="2">
-        <colspec colwidth="49.50pt" />
-
-        <colspec />
-
-        <tbody>
-          <row>
-            <entry>
-              <inlinegraphic fileref="images/caution.png" />
-            </entry>
-
-            <entry>In this version of the HPCC Platform, these features are
-            being released as a technical preview. Some planned functionality
-            has not yet been implemented, but the portions that are available
-            have been tested and are ready for use.</entry>
-          </row>
-        </tbody>
-      </tgroup>
-    </informaltable>
-
-    <sect1>
-      <title>Overview of the process</title>
-
-      <para>This section is a summary of the details in this guide. After you
-      have completed the detailed steps that follow, you can use this summary
-      to refresh your memory later.</para>
-
-      <para />
-
-      <para>
-        <informaltable colsep="1" frame="all" rowsep="1">
-          <?dbfo keep-together="always"?>
-
-          <tgroup cols="2">
-            <colspec colwidth="49.50pt" />
-
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry>
-                  <inlinegraphic fileref="images/tip.jpg" />
-                </entry>
-
-                <entry>We suggest <emphasis role="bold">reading</emphasis>
-                this document in its entirety before beginning.</entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-      </para>
-
-      <para>To use Google Charts, you should:</para>
-
-      <orderedlist numeration="arabic">
-        <listitem>
-          <para>Write ECL Code that produces an output containing data that
-          fits the visualization you select. (In this exercise, we will use
-          the ones provided in the examples.)</para>
-        </listitem>
-
-        <listitem>
-          <para>In the code, make sure your ECL OUTPUT action has the NAMED
-          option with the desired visualization nominated, as shown
-          below.</para>
-
-          <para>
-            <programlisting>OUTPUT(dPie, NAMED('PieChart_Pie_Chart_Test'));</programlisting>
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>Create an XSLT template to handle the output. (In this
-          exercise, we will use the ones provided in the examples.)</para>
-        </listitem>
-
-        <listitem>
-          <para>Create a Manifest file including the XSLT template(s). (In
-          this exercise, we will use the ones provided in the examples. The
-          example XSLT files contain code that will select a visualization
-          based on the output name used in the ECL code)</para>
-        </listitem>
-
-        <listitem>
-          <para>Using either the ECL IDE or the ECLCC command line, create an
-          archive with<emphasis role="bold">-manifest=argument</emphasis>
-          naming the manifest file.</para>
-
-          <para>For example (in the IDE’s compiler arguments):</para>
-
-          <para>
-            <programlisting>-manifest="C:\Documents and Settings\All Users\Documents\HPCC Systems\ECL\
-              My Files\visualizations\google_charts\files\manifest.xml"</programlisting>
-          </para>
-
-          <para>For example (on command line):</para>
-
-          <para>
-            <programlisting>eclcc pie.ecl -E -manifest="C:\Documents and Settings\All Users\Documents\HPCC Systems\ECL\
-                               My Files\visualizations\google_charts\files\manifest.xml" &gt;myarchive.xml</programlisting>
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>Deploy the Archive to an ESP server. This is automatic when
-          you submit using the IDE, If you used the ECLCC command line to
-          create the archive, then you must use the ECL command line tool to
-          deploy the Archive.</para>
-
-          <para>For example:</para>
-
-          <programlisting>ecl deploy myarchive.xml --server=192.168.219.8 --target=thor</programlisting>
-
-          <programlisting>ecl publish &lt;WUID&gt; --server=192.168.219.8 --target=thor --activate--name=pie</programlisting>
-
-          <para />
-        </listitem>
-
-        <listitem>
-          <para>Run the Workunit and view the Results in ECL Watch</para>
-        </listitem>
-      </orderedlist>
-    </sect1>
-
-    <sect1>
-      <title>Get the Samples</title>
-
-      <para>The collection of visualization sample files contains a set of ECL
-      files, a set of XSLT transformation templates, and a sample manifest
-      file to use to include these XSLT files into a workunit.</para>
-
-      <itemizedlist mark="bullet">
-        <listitem>
-          <para>Get the sample code from GitHub:</para>
-        </listitem>
-      </itemizedlist>
-
-      <para>
-        <ulink
-        url="https://github.com/hpcc-systems/ecl-samples/tree/master/visualizations/google_charts">https://github.com/hpcc-systems/ecl-samples/tree/master/visualizations/google_charts</ulink>
-      </para>
-
-      <itemizedlist mark="bullet">
-        <listitem>
-          <para>Click on the Zip button to download.</para>
-        </listitem>
-      </itemizedlist>
-
-      <figure>
-        <title>ZIP button</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata fileref="images/viz01.jpg" />
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <itemizedlist mark="bullet">
-        <listitem>
-          <para>Copy to the folder you use for ECL code.</para>
-        </listitem>
-      </itemizedlist>
-
-      <para />
-    </sect1>
-  </chapter>
-
-  <chapter>
-    <title>Detailed Steps Using the IDE</title>
-
-    <itemizedlist mark="bullet">
-      <listitem>
-        <para>Open the ECL IDE and Open Preferences</para>
-      </listitem>
-
-      <listitem>
-        <para>Create a new configuration pointing to the server you wish to
-        use.</para>
-      </listitem>
-
-      <listitem>
-        <para>Add the following compiler argument:</para>
-      </listitem>
-    </itemizedlist>
-
-    <programlisting>-manifest=&lt;fullpathtomanifestfile&gt;</programlisting>
-
-    <para>For example:</para>
-
-    <programlisting>-manifest="C:\Documents and Settings\All Users\Documents\HPCC Systems\ECL\
-              My Files\visualizations\google_charts\files\manifest.xml"</programlisting>
-
-    <para>If the path contains spaces, you must enclose in double
-    quotes.</para>
-
-    <figure>
-      <title>manifest path</title>
-
-      <mediaobject>
-        <imageobject>
-          <imagedata fileref="images/viz02a.jpg" />
-        </imageobject>
-      </mediaobject>
-    </figure>
-
-    <para>NOTE: This configuration includes the manifest in every submission,
-    so only use it for ECL that needs the manifest resources (Google
-    Charts).</para>
-
-    <itemizedlist mark="bullet">
-      <listitem>
-        <para>Make sure you can see the new samples. (You may need to
-        refresh)</para>
-      </listitem>
-    </itemizedlist>
-
-    <figure>
-      <title>ECL samples</title>
-
-      <mediaobject>
-        <imageobject>
-          <imagedata fileref="images/viz03.jpg" />
-        </imageobject>
-      </mediaobject>
-    </figure>
-
-    <itemizedlist mark="bullet">
-      <listitem>
-        <para>Open one of the example files, for this example use pie.</para>
-      </listitem>
-
-      <listitem>
-        <para>Syntax Check the code (This is always a good idea)</para>
-      </listitem>
-
-      <listitem>
-        <para>Select <emphasis role="bold">thor</emphasis> as your target
-        cluster</para>
-      </listitem>
-
-      <listitem>
-        <para>Press the <emphasis role="bold">Submit</emphasis> button.</para>
-      </listitem>
-
-      <listitem>
-        <para>After the job completes, select the Workunit’s ECL Watch
-        view:</para>
-      </listitem>
-    </itemizedlist>
-
-    <para>
-      <figure>
-        <title>ECL Watch view</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata fileref="images/viz04.jpg" />
-          </imageobject>
-        </mediaobject>
-      </figure>
-    </para>
-
-    <itemizedlist mark="bullet">
-      <listitem>
-        <para>Scroll down, and expand the Result section.</para>
-      </listitem>
-
-      <listitem>
-        <para>Click on the <emphasis role="bold">Google Chart by
-        Name</emphasis> link</para>
-
-        <para>The visualization displays</para>
-      </listitem>
-    </itemizedlist>
-
-    <para />
-
-    <figure>
-      <title>visualization chart</title>
-
-      <mediaobject>
-        <imageobject>
-          <imagedata fileref="images/viz05.jpg" />
-        </imageobject>
-      </mediaobject>
-    </figure>
-  </chapter>
-
-  <chapter>
-    <title>Detailed Steps using the command line tools</title>
-
-    <itemizedlist mark="bullet">
-      <listitem>
-        <para>Open a command window in the location of your ECL files.</para>
-      </listitem>
-
-      <listitem>
-        <para>Type the following command:</para>
-      </listitem>
-    </itemizedlist>
-
-    <programlisting>eclcc pie.ecl -E -manifest=&lt;mainfestfilepath&gt; &gt;myarchive.xml</programlisting>
-
-    <para>
-      <emphasis>where &lt;manifestfilepath&gt; is the location of your
-      manifest file</emphasis>
-    </para>
-
-    <para>For example:</para>
-
-    <programlisting>eclcc pie.ecl -E -manifest="C:\Documents and Settings\All Users\Documents\HPCC Systems\ECL\
-                    My Files\visualizations\google_charts\files\manifest.xml" &gt;myarchive.xml</programlisting>
-
-    <para />
-
-    <para>This invokes the ECLCC compiler to create an archive named
-    myarchive.xml.</para>
-
-    <itemizedlist mark="bullet">
-      <listitem>
-        <para>Type the following command:</para>
-      </listitem>
-    </itemizedlist>
-
-    <programlisting>ecl deploy myarchive.xml --server=10.239.219.8 --target=thor</programlisting>
-
-    <para>
-      <emphasis>where --server= is the IP address of your ESP server
-      and</emphasis>
-
-      <emphasis>--target= is the target cluster name.</emphasis>
-    </para>
-
-    <itemizedlist mark="bullet">
-      <listitem>
-        <para>Take note of the WUID returned by the pervious command.</para>
-      </listitem>
-
-      <listitem>
-        <para>Type the following command:</para>
-      </listitem>
-    </itemizedlist>
-
-    <programlisting>ecl publish &lt;WUID&gt; --server=10.239.219.8 --target=thor --activate --name=pie</programlisting>
-
-    <para>
-      <emphasis>where &lt;WUID&gt; is the workuint id number, --server= is the
-      IP address of your ESP server, and --target= is the target cluster
-      name.</emphasis>
-    </para>
-
-    <itemizedlist mark="bullet">
-      <listitem>
-        <para>In a browser, open the URL for the WsECL service (typically
-        found on port 8002 of your ESP Server).</para>
-      </listitem>
-
-      <listitem>
-        <para>Expand the <emphasis role="bold">thor</emphasis> branch on the
-        left, then click on the <emphasis role="bold">pie</emphasis> service
-        link.</para>
-      </listitem>
-
-      <listitem>
-        <para>Press the Submit button.</para>
-      </listitem>
-    </itemizedlist>
-
-    <para>The visualization displays.</para>
-
-    <figure>
-      <title>visualization</title>
-
-      <mediaobject>
-        <imageobject>
-          <imagedata fileref="images/viz06.jpg" />
-        </imageobject>
-      </mediaobject>
-    </figure>
-  </chapter>
-
-  <chapter>
-    <title>Next Steps</title>
-
-    <para>Try the remaining examples:</para>
-
-    <itemizedlist mark="bullet">
-      <listitem>
-        <para>geomap</para>
-      </listitem>
-
-      <listitem>
-        <para>motion</para>
-      </listitem>
-
-      <listitem>
-        <para>pie</para>
-      </listitem>
-
-      <listitem>
-        <para>scatter</para>
-      </listitem>
-
-      <listitem>
-        <para>sparkline</para>
-      </listitem>
-
-      <listitem>
-        <para>timeline</para>
-      </listitem>
-    </itemizedlist>
-
-    <para>Try creating your own XSLT files and Manifest to use other Google
-    Charts.</para>
-
-    <para>Try creating your own XSLT files and Manifest to use other
-    third-party visualizations.</para>
-  </chapter>
-</book>

+ 19 - 0
docs/VisualizingECL/CMakeLists.txt

@@ -0,0 +1,19 @@
+################################################################################
+#    HPCC SYSTEMS software Copyright (C) 2017 HPCC Systems(r).
+#
+#    Licensed under the Apache License, Version 2.0 (the "License");
+#    you may not use this file except in compliance with the License.
+#    You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+################################################################################
+
+
+
+DOCBOOK_TO_PDF( ${FO_XSL} Visualizing_Includer.xml "VisualizingECL" "VizMods")

+ 78 - 0
docs/VisualizingECL/Visualizing_Includer.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<book lang="en_US" xml:base="../">
+  <bookinfo>
+    <title>Visualizing ECL Results</title>
+
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/redswooshWithLogo3.jpg" />
+      </imageobject>
+    </mediaobject>
+
+    <author>
+      <surname>Boca Raton Documentation Team</surname>
+    </author>
+
+    <legalnotice>
+      <para>We welcome your comments and feedback about this document via
+      email to <email>docfeedback@hpccsystems.com</email></para>
+
+      <para>Please include <emphasis role="bold">Documentation
+      Feedback</emphasis> in the subject line and reference the document name,
+      page numbers, and current Version Number in the text of the
+      message.</para>
+
+      <para>LexisNexis and the Knowledge Burst logo are registered trademarks
+      of Reed Elsevier Properties Inc., used under license.</para>
+
+      <para>HPCC Systems<superscript>®</superscript> is a registered trademark
+      of LexisNexis Risk Data Management Inc.</para>
+
+      <para>Other products, logos, and services may be trademarks or
+      registered trademarks of their respective companies.</para>
+
+      <para>All names and example data used in this manual are fictitious. Any
+      similarity to actual persons, living or dead, is purely
+      coincidental.</para>
+
+      <para></para>
+    </legalnotice>
+
+    <xi:include href="common/Version.xml" xpointer="FooterInfo"
+                xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+    <xi:include href="common/Version.xml" xpointer="DateVer"
+                xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+    <corpname>HPCC Systems<superscript>®</superscript></corpname>
+
+    <xi:include href="common/Version.xml" xpointer="Copyright"
+                xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+    <mediaobject role="logo">
+      <imageobject>
+        <imagedata fileref="images/LN_Rightjustified.jpg" />
+      </imageobject>
+    </mediaobject>
+  </bookinfo>
+
+  <xi:include href="VisualizingECL/VizMods/VizIntro.xml"
+              xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+  <xi:include href="VisualizingECL/VizMods/Methods.xml"
+              xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+  <xi:include href="VisualizingECL/VizMods/TwoD.xml"
+              xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+  <xi:include href="VisualizingECL/VizMods/MultiD.xml"
+              xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+  <xi:include href="VisualizingECL/VizMods/Choropleth.xml"
+              xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+  <xi:include href="VisualizingECL/VizMods/Any.xml"
+              xmlns:xi="http://www.w3.org/2001/XInclude" />
+</book>

+ 111 - 0
docs/VisualizingECL/VizMods/2d.xml

@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="VizBundleChart2dMethods">
+  <title><emphasis>Two-Dimensional Methods</emphasis></title>
+
+  <para>This section covers methods that create two-dimensional visualizations
+  contained in the TwoD module.</para>
+
+  <para>***more to come**</para>
+
+  <sect1 id="Apply2Cells">
+    <title>Bubble</title>
+
+    <para><emphasis role="bold">Visualization.TwoD.Chart2D.Bubble(<indexterm>
+        <primary>Visualization.TwoD.Bubble</primary>
+      </indexterm><indexterm>
+        <primary>TwoD.Bubble</primary>
+      </indexterm><indexterm>
+        <primary>Bubble</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See Dermatology
+            Properties***todo***</entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization. See
+            Common/Meta***todo***</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Bubble </emphasis>visualization method
+    creates a bubble chart from two-dimensional data. A bubble chart is a
+    variation of a scatter chart where data points are replaced with bubbles
+    and the size of the bubble is represented by a dimension of the
+    data.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualization;
+ds := DATASET([ {'English', 5},
+                {'History', 17},
+                {'Geography', 7},
+                {'Chemistry', 16},
+                {'Irish', 26},
+                {'Spanish', 67},
+                {'Bioligy', 66},
+                {'Physics', 46},
+                {'Math', 98}],
+                {STRING subject, INTEGER4 year});
+data_example := OUTPUT(ds, NAMED('Chart2D__test'));
+data_example;
+viz_bubble := Visualization.TwoD.Bubble('bubble',, 'Chart2D__test');
+viz_bubble;
+</programlisting>
+  </sect1>
+</chapter>

+ 204 - 0
docs/VisualizingECL/VizMods/Any.xml

@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="VizBundleGeneralMethods">
+  <title><emphasis>General Visualization Methods</emphasis></title>
+
+  <para>This section covers methods that create generic visualizations
+  contained in the Any module. These visualizations are handy for testing and
+  examining your data source.</para>
+
+  <para></para>
+
+  <sect1 id="VizGrid">
+    <title>Grid</title>
+
+    <para><emphasis role="bold">Visualizer.Any.Grid(<indexterm>
+        <primary>Visualizer.Any.Grid</primary>
+      </indexterm><indexterm>
+        <primary>Any.Grid</primary>
+      </indexterm><indexterm>
+        <primary>Grid</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Grid </emphasis>visualization method
+    creates a simple table or grid from any data.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+ds := DATASET([ {'English', 5},
+                {'History', 17},
+                {'Geography', 7},
+                {'Chemistry', 16},
+                {'Irish', 26},
+                {'Spanish', 67},
+                {'Bioligy', 66},
+                {'Physics', 46},
+                {'Math', 98}],
+                {STRING subject, INTEGER4 year});
+data_example := OUTPUT(ds, NAMED('Chart2D__test'));
+data_example;
+viz_Grid := Visualizer.Any.Grid('Grid',, 'Chart2D__test');
+viz_Grid;
+</programlisting>
+  </sect1>
+
+  <sect1 id="VizHandsonGrid">
+    <title>HandsonGrid</title>
+
+    <para><emphasis role="bold">Visualizer.Any.HandsonGrid(<indexterm>
+        <primary>Visualizer.Any.HandsonGrid</primary>
+      </indexterm><indexterm>
+        <primary>Any.HandsonGrid</primary>
+      </indexterm><indexterm>
+        <primary>HandsonGrid</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">HandsonGrid </emphasis>visualization
+    method creates a hands on table or grid from any data.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+ds := DATASET([ {'English', 5},
+                {'History', 17},
+                {'Geography', 7},
+                {'Chemistry', 16},
+                {'Irish', 26},
+                {'Spanish', 67},
+                {'Bioligy', 66},
+                {'Physics', 46},
+                {'Math', 98}],
+                {STRING subject, INTEGER4 year});
+data_example := OUTPUT(ds, NAMED('Chart2D__test'));
+data_example;
+viz_HandsonGrid := Visualizer.Any.HandsonGrid('HandsonGrid',, 'Chart2D__test');
+viz_HandsonGrid;
+</programlisting>
+  </sect1>
+</chapter>

+ 303 - 0
docs/VisualizingECL/VizMods/Choropleth.xml

@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="VizBundleGeospatialMethods">
+  <title><emphasis>Geospatial Methods</emphasis></title>
+
+  <para>This section covers the Geospatial methods that create geographical
+  map visualizations contained in the Choropleth module. These methods project
+  data onto maps using shading to depict values.</para>
+
+  <para></para>
+
+  <sect1 id="VizUSStates">
+    <title>USStates</title>
+
+    <para><emphasis role="bold">Visualizer.Choropleth.USStates(<indexterm>
+        <primary>Visualizer.Choropleth.USStates</primary>
+      </indexterm><indexterm>
+        <primary>Choropleth.USStates</primary>
+      </indexterm><indexterm>
+        <primary>USStates</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">USStates </emphasis>visualization method
+    depicts data on a map of U.S. States.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+  _usStates := DATASET([  {'AL', 4779736}, 
+                         {'AK', 710231}, 
+                         {'AZ', 6392017}, 
+                         {'AR', 2915918}],
+                         {STRING State, INTEGER4 weight});
+  data_usStates := OUTPUT(_usStates, NAMED('choro_usStates'));
+  data_usStates;
+  viz_usstates := Visualizer.Choropleth.USStates('usStates',, 'choro_usStates');
+  viz_usstates;
+</programlisting>
+  </sect1>
+
+  <sect1 id="VizUSCounties">
+    <title>USCounties</title>
+
+    <para><emphasis role="bold">Visualizer.Choropleth.USCounties(<indexterm>
+        <primary>Visualizer.Choropleth.USCounties</primary>
+      </indexterm><indexterm>
+        <primary>Choropleth.USCounties</primary>
+      </indexterm><indexterm>
+        <primary>USCounties</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">USCounties </emphasis>visualization method
+    depicts data on a map of U.S. counties.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+
+  _usCounties := DATASET([    {1073,29.946185501741},
+                                        {1097,0.79566003616637},
+                                        {1117,1.5223596574691},
+                                        {4005,27.311773623042}],
+                                        {STRING FIPS, INTEGER4 weight});
+
+  data_usCounties := OUTPUT(_usCounties, NAMED('choro_usCounties'));
+  data_usCounties;
+  viz_uscounties := Visualizer.Choropleth.USCounties('usCounties',, 'choro_usCounties');
+  viz_uscounties;
+</programlisting>
+  </sect1>
+
+  <sect1 id="VizEuro">
+    <title>Euro</title>
+
+    <para><emphasis role="bold">Visualizer.Choropleth.Euro(<indexterm>
+        <primary>Visualizer.Choropleth.Euro</primary>
+      </indexterm><indexterm>
+        <primary>Choropleth.Euro</primary>
+      </indexterm><indexterm>
+        <primary>Euro</primary>
+      </indexterm><indexterm>
+        <primary>EuroGB</primary>
+      </indexterm><indexterm>
+        <primary>EuroIE</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> ,<emphasis
+    role="bold">[</emphasis><emphasis>region</emphasis><emphasis
+    role="bold">]</emphasis> <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>region</emphasis></entry>
+
+            <entry>2 Letter European Code (GB, IE, etc.)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Euro </emphasis>visualization method
+    depicts data on a map of Europe. The <emphasis
+    role="bold">EuroIE</emphasis> and <emphasis role="bold">EuroGB</emphasis>
+    methods are provided as examples. To create other country-specific
+    methods, merely use the Euro method and provide the two-character country
+    code in the _region parameter.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+_euroIE := DATASET([    {'Carlow', '27431', '27181', '54612'}, 
+                                    {'Dublin City', '257303', '270309', '527612'}, 
+                                    {'Kilkenny', '47788', '47631', '95419'}, 
+                                    {'Cork', '198658', '201144', '399802'}],
+                                    {STRING region, INTEGER4 males, INTEGER4 females, INTEGER4 total});
+  data_euroIE := OUTPUT(_euroIE, NAMED('choro_euroIE'));
+  data_euroIE;
+  
+  viz_euroIE := Visualizer.Choropleth.EuroIE('euroIE',, 'choro_euroIE', DATASET([{'County', 'region'}, {'Population', 'total'}], Visualizer.KeyValueDef),, DATASET([{'paletteID', 'Greens'}], Visualizer.KeyValueDef));
+  viz_euroIE;</programlisting>
+  </sect1>
+</chapter>

+ 89 - 0
docs/VisualizingECL/VizMods/Methods.xml

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="VizMethods">
+  <title><emphasis>Methods</emphasis></title>
+
+  <para>Methods are categorized by the shape of the data they support. The
+  categories are:</para>
+
+  <para><link linkend="VizTwoD">Two-Dimensional</link></para>
+
+  <para><link linkend="VizNDList">Multi-Dimensional</link></para>
+
+  <para><link linkend="VizGeoList">Geospatial</link></para>
+
+  <para><link linkend="VizGeneralList">General</link></para>
+
+  <para></para>
+
+  <sect1 id="Viz2dlistl">
+    <title>Two-Dimensional Visualization Methods</title>
+
+    <para>This MODULE contains a selection of visualizations for
+    two-dimensional data.</para>
+
+    <para><link linkend="VizBubble">Bubble</link></para>
+
+    <para><link linkend="VizPie">Pie</link></para>
+
+    <para><link linkend="VizSummary">Summary</link></para>
+
+    <para><link linkend="VizWordCloud">WordCloud</link></para>
+  </sect1>
+
+  <sect1 id="VizNDList">
+    <title>Multi-Dimensional Visualization Methods</title>
+
+    <para>This MODULE contains a selection of visualizations for
+    multi-dimensional data.</para>
+
+    <para><link linkend="VizMultiDArea">Area</link></para>
+
+    <para><link linkend="VizMultiDBar">Bar</link></para>
+
+    <para><link linkend="VizMultiDColumn">Column</link></para>
+
+    <para><link linkend="VizMultiDHexBin">HexBin</link></para>
+
+    <para><link linkend="VizMultiDLine">Line</link></para>
+
+    <para><link linkend="VizMultiDScatter">Scatter</link></para>
+
+    <para><link linkend="VizMultiDStep">Step</link></para>
+
+    <para></para>
+  </sect1>
+
+  <sect1 id="VizGeoList">
+    <title>Geospatial Visualization Methods</title>
+
+    <para><link linkend="VizUSStates">USStates</link></para>
+
+    <para><link linkend="VizUSCounties">USCounties</link></para>
+
+    <para><link linkend="VizEuro">Euro</link></para>
+
+    <para>EuroIE</para>
+
+    <para>EuroGB</para>
+
+    <para></para>
+
+    <para>Note: The EuroIE and EuroGB methods are provided as examples. To
+    create other country-specific methods, merely use the Euro method and
+    provide the two-character country code in the _region parameter.</para>
+  </sect1>
+
+  <sect1 id="VizGeneralList">
+    <title>General Visualization Methods</title>
+
+    <para><link linkend="VizGrid">Grid</link></para>
+
+    <para><link linkend="VizHandsonGrid">Handson Grid</link></para>
+
+    <para></para>
+
+    <para></para>
+  </sect1>
+</chapter>

+ 690 - 0
docs/VisualizingECL/VizMods/MultiD.xml

@@ -0,0 +1,690 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="VizBundleChart2dMethods">
+  <title><emphasis>Multi-Dimensional Methods</emphasis></title>
+
+  <para>This section covers methods that create multi-dimensional
+  visualizations contained in the MultiD module. These methods provide ways to
+  depict data in a multi-dimensional space.</para>
+
+  <para></para>
+
+  <sect1 id="VizMultiDArea">
+    <title>Area</title>
+
+    <para><emphasis role="bold">Visualizer.MuiltD.Area(<indexterm>
+        <primary>Visualizer.MultiD.Area</primary>
+      </indexterm><indexterm>
+        <primary>MultiD.Area</primary>
+      </indexterm><indexterm>
+        <primary>Area</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Area </emphasis>visualization method
+    displays graphically quantitative data. The area between the axis and each
+    line is shown and can be emphasized using shading or colors. This is
+    commonly used to compare two or more quantities.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;                  
+  ds := DATASET([ {'English', 5, 43, 41, 92},
+                  {'History', 17, 43, 83, 93},
+                  {'Geography', 7, 45, 52, 83},
+                  {'Chemistry', 16, 73, 52, 83},
+                  {'Spanish', 26, 83, 11, 72},
+                  {'Bioligy', 66, 60, 85, 6},
+                  {'Physics', 46, 20, 53, 7},
+                  {'Math', 98, 30, 23, 13}],
+                  {STRING subject, INTEGER4 year1, INTEGER4 year2, INTEGER4 year3, INTEGER4 year4});
+  data_exams := OUTPUT(ds, NAMED('MultiD__test'));
+  data_exams;
+  
+  viz_area := Visualizer.MultiD.Area('area',, 'MultiD__test');
+  Viz_area;</programlisting>
+  </sect1>
+
+  <sect1 id="VizMultiDBar">
+    <title>Bar</title>
+
+    <para><emphasis role="bold">Visualizer.MuiltD.Bar(<indexterm>
+        <primary>Visualizer.MultiD.Bar</primary>
+      </indexterm><indexterm>
+        <primary>MultiD.Bar</primary>
+      </indexterm><indexterm>
+        <primary>Bar</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Bar </emphasis>visualization method
+    displays a graph consisting of horizontal rectangles (bars) where each
+    length is proportional to data value.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;                  
+  ds := DATASET([ {'English', 5, 43, 41, 92},
+                  {'History', 17, 43, 83, 93},
+                  {'Geography', 7, 45, 52, 83},
+                  {'Chemistry', 16, 73, 52, 83},
+                  {'Spanish', 26, 83, 11, 72},
+                  {'Bioligy', 66, 60, 85, 6},
+                  {'Physics', 46, 20, 53, 7},
+                  {'Math', 98, 30, 23, 13}],
+                  {STRING subject, INTEGER4 year1, INTEGER4 year2, INTEGER4 year3, INTEGER4 year4});
+  data_exams := OUTPUT(ds, NAMED('MultiD__test'));
+  data_exams;
+  
+  viz_bar := Visualizer.MultiD.Bar('bar',, 'MultiD__test');
+  viz_bar;</programlisting>
+  </sect1>
+
+  <sect1 id="VizMultiDColumn">
+    <title>Column</title>
+
+    <para><emphasis role="bold">Visualizer.MuiltD.Column(<indexterm>
+        <primary>Visualizer.MultiD.Column</primary>
+      </indexterm><indexterm>
+        <primary>MultiD.Column</primary>
+      </indexterm><indexterm>
+        <primary>Column</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Column </emphasis>visualization method
+    displays a graph consisting of vertical rectangles (bars) where each
+    length is proportional to data value.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;                  
+  ds := DATASET([ {'English', 5, 43, 41, 92},
+                  {'History', 17, 43, 83, 93},
+                  {'Geography', 7, 45, 52, 83},
+                  {'Chemistry', 16, 73, 52, 83},
+                  {'Spanish', 26, 83, 11, 72},
+                  {'Bioligy', 66, 60, 85, 6},
+                  {'Physics', 46, 20, 53, 7},
+                  {'Math', 98, 30, 23, 13}],
+                  {STRING subject, INTEGER4 year1, INTEGER4 year2, INTEGER4 year3, INTEGER4 year4});
+  data_exams := OUTPUT(ds, NAMED('MultiD__test'));
+  data_exams;
+  
+  viz_Column := Visualizer.MultiD.Column('column',, 'MultiD__test');
+  viz_Column;</programlisting>
+  </sect1>
+
+  <sect1 id="VizMultiDHexBin">
+    <title>HexBin</title>
+
+    <para><emphasis role="bold">Visualizer.MuiltD.HexBin(<indexterm>
+        <primary>Visualizer.MultiD.HexBin</primary>
+      </indexterm><indexterm>
+        <primary>MultiD.HexBin</primary>
+      </indexterm><indexterm>
+        <primary>HexBin</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">HexBin </emphasis>visualization method
+    displays a Hexagonal Bin plot which plots two or more continuous variables
+    against each other. Hexagonal binning is useful for aggregating data
+    values into a coarser display. For example, rather than showing thousands
+    of points on a scatter plot, you can combine points into a few hexagons to
+    show the distribution.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;                  
+  ds := DATASET([ {'English', 5, 43, 41, 92},
+                  {'History', 17, 43, 83, 93},
+                  {'Geography', 7, 45, 52, 83},
+                  {'Chemistry', 16, 73, 52, 83},
+                  {'Spanish', 26, 83, 11, 72},
+                  {'Bioligy', 66, 60, 85, 6},
+                  {'Physics', 46, 20, 53, 7},
+                  {'Math', 98, 30, 23, 13}],
+                  {STRING subject, INTEGER4 year1, INTEGER4 year2, INTEGER4 year3, INTEGER4 year4});
+  data_exams := OUTPUT(ds, NAMED('MultiD__test'));
+  data_exams;
+  
+  viz_hexBin := Visualizer.MultiD.HexBin('hexBin',, 'MultiD__test');
+  viz_hexBin;</programlisting>
+  </sect1>
+
+  <sect1 id="VizMultiDLine">
+    <title>Line</title>
+
+    <para><emphasis role="bold">Visualizer.MuiltD.Line(<indexterm>
+        <primary>Visualizer.MultiD.Line</primary>
+      </indexterm><indexterm>
+        <primary>MultiD.Line</primary>
+      </indexterm><indexterm>
+        <primary>Line</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Line </emphasis>visualization method
+    displays a line graph which uses points connected by lines to show how
+    values change.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;                  
+  ds := DATASET([ {'English', 5, 43, 41, 92},
+                  {'History', 17, 43, 83, 93},
+                  {'Geography', 7, 45, 52, 83},
+                  {'Chemistry', 16, 73, 52, 83},
+                  {'Spanish', 26, 83, 11, 72},
+                  {'Bioligy', 66, 60, 85, 6},
+                  {'Physics', 46, 20, 53, 7},
+                  {'Math', 98, 30, 23, 13}],
+                  {STRING subject, INTEGER4 year1, INTEGER4 year2, INTEGER4 year3, INTEGER4 year4});
+  data_exams := OUTPUT(ds, NAMED('MultiD__test'));
+  data_exams;
+  
+  viz_line := Visualizer.MultiD.Line('line',, 'MultiD__test');
+  viz_line;</programlisting>
+  </sect1>
+
+  <sect1 id="VizMultiDScatter">
+    <title>Scatter</title>
+
+    <para><emphasis role="bold">Visualizer.MuiltD.Scatter(<indexterm>
+        <primary>Visualizer.MultiD.Scatter</primary>
+      </indexterm><indexterm>
+        <primary>MultiD.Scatter</primary>
+      </indexterm><indexterm>
+        <primary>Scatter</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Scatter </emphasis>visualization method
+    displays a scatter plot using horizontal and vertical axes to plot data
+    points.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;                  
+  ds := DATASET([ {'English', 5, 43, 41, 92},
+                  {'History', 17, 43, 83, 93},
+                  {'Geography', 7, 45, 52, 83},
+                  {'Chemistry', 16, 73, 52, 83},
+                  {'Spanish', 26, 83, 11, 72},
+                  {'Bioligy', 66, 60, 85, 6},
+                  {'Physics', 46, 20, 53, 7},
+                  {'Math', 98, 30, 23, 13}],
+                  {STRING subject, INTEGER4 year1, INTEGER4 year2, INTEGER4 year3, INTEGER4 year4});
+  data_exams := OUTPUT(ds, NAMED('MultiD__test'));
+  data_exams;
+  viz_scatter := Visualizer.MultiD.Scatter('scatter',, 'MultiD__test');
+  viz_scatter;
+
+  </programlisting>
+  </sect1>
+
+  <sect1 id="VizMultiDStep">
+    <title>Step</title>
+
+    <para><emphasis role="bold">Visualizer.MuiltD.Step(<indexterm>
+        <primary>Visualizer.MultiD.Step</primary>
+      </indexterm><indexterm>
+        <primary>MultiD.Step</primary>
+      </indexterm><indexterm>
+        <primary>Step</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis>.<emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie Query
+            result), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps Column Name &lt;--&gt; field ID</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry> Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Step </emphasis>visualization method
+    creates a step graph made of lines in horizontal intervals or
+    'steps'.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;                  
+  ds := DATASET([ {'English', 5, 43, 41, 92},
+                  {'History', 17, 43, 83, 93},
+                  {'Geography', 7, 45, 52, 83},
+                  {'Chemistry', 16, 73, 52, 83},
+                  {'Spanish', 26, 83, 11, 72},
+                  {'Bioligy', 66, 60, 85, 6},
+                  {'Physics', 46, 20, 53, 7},
+                  {'Math', 98, 30, 23, 13}],
+                  {STRING subject, INTEGER4 year1, INTEGER4 year2, INTEGER4 year3, INTEGER4 year4});
+  data_exams := OUTPUT(ds, NAMED('MultiD__test'));
+  data_exams;
+  viz_step := Visualizer.MultiD.Step('step',, 'MultiD__test');
+  viz_step;
+
+  </programlisting>
+  </sect1>
+</chapter>

+ 409 - 0
docs/VisualizingECL/VizMods/TwoD.xml

@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="VizTwoD">
+  <title><emphasis>Two-Dimensional Methods</emphasis></title>
+
+  <para>This section covers methods that create two-dimensional visualizations
+  contained in the TwoD module. These methods provide ways to depict data in a
+  two-dimensional space.</para>
+
+  <para></para>
+
+  <sect1 id="VizBubble">
+    <title>Bubble</title>
+
+    <para><emphasis role="bold">Visualizer.TwoD.Bubble(<indexterm>
+        <primary>Visualizer.TwoD.Bubble</primary>
+      </indexterm><indexterm>
+        <primary>TwoD.Bubble</primary>
+      </indexterm><indexterm>
+        <primary>Bubble</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis><emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>filteredBy</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie
+            query), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps human labels &lt;--&gt; field Ids</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Bubble </emphasis>visualization method
+    creates a bubble chart from two-dimensional data. A bubble chart is a
+    variation of a pie chart where data points are shown as bubbles and the
+    size of the bubble is represented by the second dimension of the
+    data.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+ds := DATASET([ {'English', 5},
+                {'History', 17},
+                {'Geography', 7},
+                {'Chemistry', 16},
+                {'Irish', 26},
+                {'Spanish', 67},
+                {'Bioligy', 66},
+                {'Physics', 46},
+                {'Math', 98}],
+                {STRING subject, INTEGER4 year});
+data_example := OUTPUT(ds, NAMED('Chart2D__test'));
+data_example;
+viz_bubble := Visualizer.TwoD.Bubble('bubble',, 'Chart2D__test');
+viz_bubble;
+</programlisting>
+  </sect1>
+
+  <sect1 id="VizPie">
+    <title>Pie</title>
+
+    <para><emphasis role="bold">Visualizer.TwoD.Pie(<indexterm>
+        <primary>Visualizer.TwoD.Pie</primary>
+      </indexterm><indexterm>
+        <primary>TwoD.Pie</primary>
+      </indexterm><indexterm>
+        <primary>Pie</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis><emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>filteredBy</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie
+            query), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps human labels &lt;--&gt; field Ids</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Pie </emphasis>visualization method
+    creates a pie chart from two-dimensional data. A pie chart is a graph in
+    which a circle is divided into secions representing a portion of the
+    whole.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+ds := DATASET([ {'English', 5},
+                {'History', 17},
+                {'Geography', 7},
+                {'Chemistry', 16},
+                {'Irish', 26},
+                {'Spanish', 67},
+                {'Bioligy', 66},
+                {'Physics', 46},
+                {'Math', 98}],
+                {STRING subject, INTEGER4 year});
+data_example := OUTPUT(ds, NAMED('Chart2D__test'));
+data_example;
+viz_pie := Visualizer.TwoD.Pie('pie',, 'Chart2D__test');
+viz_pie;
+</programlisting>
+  </sect1>
+
+  <sect1 id="VizSummary">
+    <title>Summary</title>
+
+    <para><emphasis role="bold">Visualizer.TwoD.Summary(<indexterm>
+        <primary>Visualizer.TwoD.Summary</primary>
+      </indexterm><indexterm>
+        <primary>TwoD.Summary</primary>
+      </indexterm><indexterm>
+        <primary>Summary</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis><emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>filteredBy</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie
+            query), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps human labels &lt;--&gt; field Ids</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">Summary </emphasis>visualization method
+    creates a summary chart from two-dimensional data. The summary graph
+    defaults to graphic showing scrolling data values.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+ds := DATASET([ {'English', 5},
+                {'History', 17},
+                {'Geography', 7},
+                {'Chemistry', 16},
+                {'Irish', 26},
+                {'Spanish', 67},
+                {'Bioligy', 66},
+                {'Physics', 46},
+                {'Math', 98}],
+                {STRING subject, INTEGER4 year});
+data_example := OUTPUT(ds, NAMED('Chart2D__test'));
+data_example;
+viz_Summary := Visualizer.TwoD.Summary('Summary',, 'Chart2D__test');
+viz_Summary;
+</programlisting>
+  </sect1>
+
+  <sect1 id="VizWordCloud">
+    <title>WordCloud</title>
+
+    <para><emphasis role="bold">Visualizer.TwoD.WordCloud(<indexterm>
+        <primary>Visualizer.TwoD.WordCloud</primary>
+      </indexterm><indexterm>
+        <primary>TwoD.WordCloud</primary>
+      </indexterm><indexterm>
+        <primary>WordCloud</primary>
+      </indexterm>(</emphasis> <emphasis>id</emphasis> , <emphasis
+    role="bold">[</emphasis><emphasis>dataSource</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>outputName</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>filteredBy</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>mappings</emphasis><emphasis
+    role="bold">], [</emphasis><emphasis>properties</emphasis><emphasis
+    role="bold">]);</emphasis></para>
+
+    <para></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="80.50pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>id</emphasis></entry>
+
+            <entry>Unique identifier for the visualization</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>dataSource</emphasis></entry>
+
+            <entry>Location of the result set (WUID, Logical File, Roxie
+            query), defaults to the current WU</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>outputName</emphasis></entry>
+
+            <entry>Result set name (ignored for Logical Files)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>mappings</emphasis></entry>
+
+            <entry>Maps human labels &lt;--&gt; field Ids</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>filteredBy</emphasis></entry>
+
+            <entry>Filter condition (also useful for widget
+            interactions)</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>properties</emphasis></entry>
+
+            <entry>Dermatology properties. See <link
+            linkend="VizDermProp">Dermatology Properties</link></entry>
+          </row>
+
+          <row>
+            <entry>Return:<emphasis></emphasis></entry>
+
+            <entry>A "meta" output describing the visualization.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The <emphasis role="bold">WordCloud </emphasis>visualization method
+    creates a word cloud chart from two-dimensional data. A WordCloud is
+    weighted word list in visual design. It is a visual representation for
+    text data, typically used to depict the weight or importance of words by
+    the font size or color.</para>
+
+    <para>Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+ds := DATASET([ {'English', 5},
+                {'History', 17},
+                {'Geography', 7},
+                {'Chemistry', 16},
+                {'Irish', 26},
+                {'Spanish', 67},
+                {'Bioligy', 66},
+                {'Physics', 46},
+                {'Math', 98}],
+                {STRING subject, INTEGER4 year});
+data_example := OUTPUT(ds, NAMED('Chart2D__test'));
+data_example;
+viz_WordCloud := Visualizer.TwoD.WordCloud('WordCloud',, 'Chart2D__test');
+viz_WordCloud;
+</programlisting>
+  </sect1>
+</chapter>

+ 163 - 0
docs/VisualizingECL/VizMods/VizIntro.xml

@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="VizIntro">
+  <title><emphasis>Visualization Introduction</emphasis></title>
+
+  <para>The Visualization bundle is an open-source add-on to the HPCC platform
+  to allow you to create visualizations from the results of queries written in
+  ECL.</para>
+
+  <para>Visualizations are an important means of conveying information from
+  massive data. A good visual representation can help a human produce
+  actionable analysis. A visually comprehensive representation of the
+  information can help make the obscure more obvious.</para>
+
+  <para>Pie Charts, Line graphs, Maps, and other visual graphs help us
+  understand the answers found in data queries. Crunching big data is only
+  part of a solution; we must be able to make sense of the data, too. Data
+  visualizations simplify the complex.</para>
+
+  <para>The Visualizer bundle extends the HPCC platform's functionality by
+  allowing you to plot your data onto charts, graphs, and maps to add a visual
+  representation that can be easily understood.</para>
+
+  <para>In addition, the underlying visualization framework supports advanced
+  features to allow you to combine graphs to make interactive
+  dashboards.</para>
+
+  <sect1 id="VizInstall">
+    <title>Installation</title>
+
+    <para>To install the Visualization bundle, use the ecl command line
+    interface.</para>
+
+    <para></para>
+
+    <para><programlisting>ecl bundle install https://github.com/hpcc-systems/Visualizer.git</programlisting></para>
+
+    <para>To use the "ecl bundle install &lt;git url&gt;" command, you must
+    have git installed and configured on your system. Git must be accessible
+    to the user (in the path).</para>
+
+    <para></para>
+  </sect1>
+
+  <sect1 id="VizUsing">
+    <title>Using the Visualization library</title>
+
+    <para>Once installed, you merely IMPORT the library, then call any method
+    that is appropriate for your data shape.</para>
+
+    <para>Creating a basic visualization typically requires the following
+    steps:</para>
+
+    <para><orderedlist>
+        <listitem>
+          <para>Creation of a suitable dataset.</para>
+        </listitem>
+
+        <listitem>
+          <para>Output the dataset with a suitable name, so that visualization
+          can locate the data.</para>
+        </listitem>
+
+        <listitem>
+          <para>Create (and output) a the visualization, referencing the named
+          output from step 2.</para>
+        </listitem>
+      </orderedlist></para>
+
+    <para>To change the appearance of the visualization, dermatology
+    properties can be provided while creating the visualization or can be
+    applied at runtime via the live dermatology property editor.</para>
+
+    <para>For Example:</para>
+
+    <programlisting format="linespecific">IMPORT Visualizer;
+ds := DATASET([ {'English', 5},
+                {'History', 17},
+                {'Geography', 7},
+                {'Chemistry', 16},
+                {'Irish', 26},
+                {'Spanish', 67},
+                {'Bioligy', 66},
+                {'Physics', 46},
+                {'Math', 98}],
+                {STRING subject, INTEGER4 year});
+data_example := OUTPUT(ds, NAMED('Chart2D__test'));
+data_example;
+viz_bubble := Visualizer.TwoD.Bubble('bubble',, 'Chart2D__test');
+viz_bubble;
+</programlisting>
+
+    <para>This code creates a Bubble chart as shown below:</para>
+
+    <graphic fileref="../../images/viz10.jpg" />
+
+    <para></para>
+
+    <para>See <link linkend="VizMethods">Methods</link> for details about the
+    categories of visualization methods and all available methods.</para>
+  </sect1>
+
+  <sect1 id="VizViewing">
+    <title>Viewing the Visualization</title>
+
+    <para>After running a query with a visualization included, you can see the
+    visualization in ECL Watch. Visualizations are appended to the workunit as
+    additional <emphasis>resources</emphasis> and can be viewed from the
+    <emphasis role="bold">Resources</emphasis> tab on the Workunit Details
+    page.</para>
+
+    <para>Open the workunit, then select the <emphasis
+    role="bold">Resources</emphasis> tab.</para>
+
+    <para><graphic fileref="../../images/viz07.jpg" /></para>
+  </sect1>
+
+  <sect1 id="VizDermProp">
+    <title>Dermatology Properties</title>
+
+    <para>The dermatology layer provides a means of setting properties for the
+    manner in which a visualization appears. For example, you can change the
+    palletteID to a new color scheme. After running a query with a
+    visualization included, it can be viewed within ECL Watch.</para>
+
+    <para>The <emphasis role="bold">Dermatology Editor</emphasis> lets you
+    alter the appearance of the visualization after it has been executed. The
+    same properties can also be specified in the ECL when creating the
+    visualization.</para>
+
+    <para>You can set properties in your ECL code or afterwards in ECL
+    Watch:</para>
+
+    <orderedlist>
+      <listitem>
+        <para>Open the workunit, then select the <emphasis
+        role="bold">Resources</emphasis> tab.</para>
+      </listitem>
+
+      <listitem>
+        <para>Press the <emphasis role="bold">Properties</emphasis>
+        button.</para>
+
+        <graphic fileref="../../images/viz08.jpg" />
+      </listitem>
+
+      <listitem>
+        <para>Edit Properties as desired. <emphasis
+        role="bold"></emphasis></para>
+
+        <para><graphic fileref="../../images/viz09.jpg" /></para>
+      </listitem>
+
+      <listitem>
+        <para>Press the <emphasis role="bold">Save</emphasis> button.<emphasis
+        role="bold"></emphasis></para>
+      </listitem>
+    </orderedlist>
+
+    <para></para>
+  </sect1>
+</chapter>

BIN
docs/images/viz07.jpg


BIN
docs/images/viz08.jpg


BIN
docs/images/viz09.jpg


BIN
docs/images/viz10.jpg