<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>Class: Ziya::Charts::Base</title> <link rel="stylesheet" href="../../rdoc.css" type="text/css" media="screen" /> <script src="../../js/jquery.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/quicksearch.js" type="text/javascript" charset="utf-8"></script> <script src="../../js/darkfish.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" charset="utf-8"> $(document).ready( function() { hookSourceViews(); hookQuickSearch(); highlightLocationTarget(); $('ul.link-list a').bind( "click", highlightClickTarget ); }); </script> </head> <body class="class"> <div id="metadata"> <div id="file-metadata"> <div id="file-list-section" class="section"> <h3 class="section-header">In Files</h3> <div class="section-body"> <ul> <li><a href="../../lib/ziya/charts/base.rb.html?TB_iframe=true&height=400&width=600" class="thickbox" title="lib/ziya/charts/base.rb">lib/ziya/charts/base.rb</a></li> </ul> </div> </div> </div> <div id="class-metadata"> <!-- Parent Class --> <div id="parent-class-section" class="section"> <h3 class="section-header">Parent</h3> <p class="link">Object</p> </div> <!-- Namespace Contents --> <!-- Method Quickref --> <div id="method-list-section" class="section"> <h3 class="section-header">Methods</h3> <ul class="link-list"> <li><a href="#add">add</a></li> <li><a href="#to_s">to_s</a></li> <li><a href="#to_xml">to_xml</a></li> </ul> </div> <!-- Included Modules --> <div id="includes-section" class="section"> <h3 class="section-header">Included Modules</h3> <ul class="link-list"> <li><a class="include" href="../Charts.html">Ziya::YamlHelpers::Charts</a></li> <li><a class="include" href="../HtmlHelpers/Charts.html">Ziya::HtmlHelpers::Charts</a></li> </ul> </div> </div> <div id="project-metadata"> <div id="classindex-section" class="section project-section"> <h3 class="section-header">Class Index</h3> <ul class="link-list"> <li><a href="../../Ziya.html">Ziya</a></li> <li><a href="../../Ziya/Charts.html">Ziya::Charts</a></li> <li><a href="../../Ziya/Charts/Area.html">Ziya::Charts::Area</a></li> <li><a href="../../Ziya/Charts/AreaThreed.html">Ziya::Charts::AreaThreed</a></li> <li><a href="../../Ziya/Charts/Bar.html">Ziya::Charts::Bar</a></li> <li><a href="../../Ziya/Charts/Base.html">Ziya::Charts::Base</a></li> <li><a href="../../Ziya/Charts/Bubble.html">Ziya::Charts::Bubble</a></li> <li><a href="../../Ziya/Charts/CandleStick.html">Ziya::Charts::CandleStick</a></li> <li><a href="../../Ziya/Charts/Column.html">Ziya::Charts::Column</a></li> <li><a href="../../Ziya/Charts/ColumnThreed.html">Ziya::Charts::ColumnThreed</a></li> <li><a href="../../Ziya/Charts/Custom.html">Ziya::Charts::Custom</a></li> <li><a href="../../Ziya/Charts/Donut.html">Ziya::Charts::Donut</a></li> <li><a href="../../Ziya/Charts/FloatingBar.html">Ziya::Charts::FloatingBar</a></li> <li><a href="../../Ziya/Charts/FloatingColumn.html">Ziya::Charts::FloatingColumn</a></li> <li><a href="../../Ziya/Charts/ImageColumn.html">Ziya::Charts::ImageColumn</a></li> <li><a href="../../Ziya/Charts/ImagePie.html">Ziya::Charts::ImagePie</a></li> <li><a href="../../Ziya/Charts/Line.html">Ziya::Charts::Line</a></li> <li><a href="../../Ziya/Charts/Mixed.html">Ziya::Charts::Mixed</a></li> <li><a href="../../Ziya/Charts/ParallelThreedColumn.html">Ziya::Charts::ParallelThreedColumn</a></li> <li><a href="../../Ziya/Charts/Pie.html">Ziya::Charts::Pie</a></li> <li><a href="../../Ziya/Charts/PieThreed.html">Ziya::Charts::PieThreed</a></li> <li><a href="../../Ziya/Charts/Polar.html">Ziya::Charts::Polar</a></li> <li><a href="../../Ziya/Charts/Scatter.html">Ziya::Charts::Scatter</a></li> <li><a href="../../Ziya/Charts/StackedArea.html">Ziya::Charts::StackedArea</a></li> <li><a href="../../Ziya/Charts/StackedBar.html">Ziya::Charts::StackedBar</a></li> <li><a href="../../Ziya/Charts/StackedColumn.html">Ziya::Charts::StackedColumn</a></li> <li><a href="../../Ziya/Charts/StackedThreedArea.html">Ziya::Charts::StackedThreedArea</a></li> <li><a href="../../Ziya/Charts/StackedThreedColumn.html">Ziya::Charts::StackedThreedColumn</a></li> <li><a href="../../Ziya/Charts/Support.html">Ziya::Charts::Support</a></li> <li><a href="../../Ziya/Charts/Support/Area.html">Ziya::Charts::Support::Area</a></li> <li><a href="../../Ziya/Charts/Support/AxisCategory.html">Ziya::Charts::Support::AxisCategory</a></li> <li><a href="../../Ziya/Charts/Support/AxisTicks.html">Ziya::Charts::Support::AxisTicks</a></li> <li><a href="../../Ziya/Charts/Support/AxisValue.html">Ziya::Charts::Support::AxisValue</a></li> <li><a href="../../Ziya/Charts/Support/Base.html">Ziya::Charts::Support::Base</a></li> <li><a href="../../Ziya/Charts/Support/Bevel.html">Ziya::Charts::Support::Bevel</a></li> <li><a href="../../Ziya/Charts/Support/Blur.html">Ziya::Charts::Support::Blur</a></li> <li><a href="../../Ziya/Charts/Support/Button.html">Ziya::Charts::Support::Button</a></li> <li><a href="../../Ziya/Charts/Support/ChartBorder.html">Ziya::Charts::Support::ChartBorder</a></li> <li><a href="../../Ziya/Charts/Support/ChartGridH.html">Ziya::Charts::Support::ChartGridH</a></li> <li><a href="../../Ziya/Charts/Support/ChartGridV.html">Ziya::Charts::Support::ChartGridV</a></li> <li><a href="../../Ziya/Charts/Support/ChartGuide.html">Ziya::Charts::Support::ChartGuide</a></li> <li><a href="../../Ziya/Charts/Support/ChartLabel.html">Ziya::Charts::Support::ChartLabel</a></li> <li><a href="../../Ziya/Charts/Support/ChartNote.html">Ziya::Charts::Support::ChartNote</a></li> <li><a href="../../Ziya/Charts/Support/ChartPref.html">Ziya::Charts::Support::ChartPref</a></li> <li><a href="../../Ziya/Charts/Support/ChartRect.html">Ziya::Charts::Support::ChartRect</a></li> <li><a href="../../Ziya/Charts/Support/ChartTransition.html">Ziya::Charts::Support::ChartTransition</a></li> <li><a href="../../Ziya/Charts/Support/Circle.html">Ziya::Charts::Support::Circle</a></li> <li><a href="../../Ziya/Charts/Support/ContextMenu.html">Ziya::Charts::Support::ContextMenu</a></li> <li><a href="../../Ziya/Charts/Support/Draw.html">Ziya::Charts::Support::Draw</a></li> <li><a href="../../Ziya/Charts/Support/DrawBase.html">Ziya::Charts::Support::DrawBase</a></li> <li><a href="../../Ziya/Charts/Support/Filter.html">Ziya::Charts::Support::Filter</a></li> <li><a href="../../Ziya/Charts/Support/FlashToJavascript.html">Ziya::Charts::Support::FlashToJavascript</a></li> <li><a href="../../Ziya/Charts/Support/Glow.html">Ziya::Charts::Support::Glow</a></li> <li><a href="../../Ziya/Charts/Support/Image.html">Ziya::Charts::Support::Image</a></li> <li><a href="../../Ziya/Charts/Support/Legend.html">Ziya::Charts::Support::Legend</a></li> <li><a href="../../Ziya/Charts/Support/Line.html">Ziya::Charts::Support::Line</a></li> <li><a href="../../Ziya/Charts/Support/Link.html">Ziya::Charts::Support::Link</a></li> <li><a href="../../Ziya/Charts/Support/LinkData.html">Ziya::Charts::Support::LinkData</a></li> <li><a href="../../Ziya/Charts/Support/Rect.html">Ziya::Charts::Support::Rect</a></li> <li><a href="../../Ziya/Charts/Support/Scroll.html">Ziya::Charts::Support::Scroll</a></li> <li><a href="../../Ziya/Charts/Support/Series.html">Ziya::Charts::Support::Series</a></li> <li><a href="../../Ziya/Charts/Support/SeriesColor.html">Ziya::Charts::Support::SeriesColor</a></li> <li><a href="../../Ziya/Charts/Support/SeriesExplode.html">Ziya::Charts::Support::SeriesExplode</a></li> <li><a href="../../Ziya/Charts/Support/Shadow.html">Ziya::Charts::Support::Shadow</a></li> <li><a href="../../Ziya/Charts/Support/Text.html">Ziya::Charts::Support::Text</a></li> <li><a href="../../Ziya/Charts/Support/Tooltip.html">Ziya::Charts::Support::Tooltip</a></li> <li><a href="../../Ziya/Charts/Support/Update.html">Ziya::Charts::Support::Update</a></li> <li><a href="../../Ziya/Gauges.html">Ziya::Gauges</a></li> <li><a href="../../Ziya/Gauges/Base.html">Ziya::Gauges::Base</a></li> <li><a href="../../Ziya/Gauges/Radial.html">Ziya::Gauges::Radial</a></li> <li><a href="../../Ziya/Gauges/Signal.html">Ziya::Gauges::Signal</a></li> <li><a href="../../Ziya/Gauges/Support.html">Ziya::Gauges::Support</a></li> <li><a href="../../Ziya/Gauges/Support/Area.html">Ziya::Gauges::Support::Area</a></li> <li><a href="../../Ziya/Gauges/Support/Base.html">Ziya::Gauges::Support::Base</a></li> <li><a href="../../Ziya/Gauges/Support/Circle.html">Ziya::Gauges::Support::Circle</a></li> <li><a href="../../Ziya/Gauges/Support/Design.html">Ziya::Gauges::Support::Design</a></li> <li><a href="../../Ziya/Gauges/Support/Image.html">Ziya::Gauges::Support::Image</a></li> <li><a href="../../Ziya/Gauges/Support/Line.html">Ziya::Gauges::Support::Line</a></li> <li><a href="../../Ziya/Gauges/Support/Link.html">Ziya::Gauges::Support::Link</a></li> <li><a href="../../Ziya/Gauges/Support/Move.html">Ziya::Gauges::Support::Move</a></li> <li><a href="../../Ziya/Gauges/Support/Point.html">Ziya::Gauges::Support::Point</a></li> <li><a href="../../Ziya/Gauges/Support/Polygon.html">Ziya::Gauges::Support::Polygon</a></li> <li><a href="../../Ziya/Gauges/Support/RadialBase.html">Ziya::Gauges::Support::RadialBase</a></li> <li><a href="../../Ziya/Gauges/Support/RadialNumbers.html">Ziya::Gauges::Support::RadialNumbers</a></li> <li><a href="../../Ziya/Gauges/Support/RadialTicks.html">Ziya::Gauges::Support::RadialTicks</a></li> <li><a href="../../Ziya/Gauges/Support/Rect.html">Ziya::Gauges::Support::Rect</a></li> <li><a href="../../Ziya/Gauges/Support/Rotate.html">Ziya::Gauges::Support::Rotate</a></li> <li><a href="../../Ziya/Gauges/Support/Scale.html">Ziya::Gauges::Support::Scale</a></li> <li><a href="../../Ziya/Gauges/Support/Text.html">Ziya::Gauges::Support::Text</a></li> <li><a href="../../Ziya/Gauges/Support/Update.html">Ziya::Gauges::Support::Update</a></li> <li><a href="../../Ziya/Gauges/Thermo.html">Ziya::Gauges::Thermo</a></li> <li><a href="../../Ziya/HtmlHelpers.html">Ziya::HtmlHelpers</a></li> <li><a href="../../Ziya/HtmlHelpers/Charts.html">Ziya::HtmlHelpers::Charts</a></li> <li><a href="../../Ziya/HtmlHelpers/Gauges.html">Ziya::HtmlHelpers::Gauges</a></li> <li><a href="../../Ziya/HtmlHelpers/Maps.html">Ziya::HtmlHelpers::Maps</a></li> <li><a href="../../Ziya/Maps.html">Ziya::Maps</a></li> <li><a href="../../Ziya/Maps/Australia.html">Ziya::Maps::Australia</a></li> <li><a href="../../Ziya/Maps/Base.html">Ziya::Maps::Base</a></li> <li><a href="../../Ziya/Maps/Belgium.html">Ziya::Maps::Belgium</a></li> <li><a href="../../Ziya/Maps/Brazil.html">Ziya::Maps::Brazil</a></li> <li><a href="../../Ziya/Maps/Canada.html">Ziya::Maps::Canada</a></li> <li><a href="../../Ziya/Maps/Europe.html">Ziya::Maps::Europe</a></li> <li><a href="../../Ziya/Maps/France.html">Ziya::Maps::France</a></li> <li><a href="../../Ziya/Maps/Geocode.html">Ziya::Maps::Geocode</a></li> <li><a href="../../Ziya/Maps/Germany.html">Ziya::Maps::Germany</a></li> <li><a href="../../Ziya/Maps/Italy.html">Ziya::Maps::Italy</a></li> <li><a href="../../Ziya/Maps/Mexico.html">Ziya::Maps::Mexico</a></li> <li><a href="../../Ziya/Maps/Support.html">Ziya::Maps::Support</a></li> <li><a href="../../Ziya/Maps/Support/Arc.html">Ziya::Maps::Support::Arc</a></li> <li><a href="../../Ziya/Maps/Support/ArcColor.html">Ziya::Maps::Support::ArcColor</a></li> <li><a href="../../Ziya/Maps/Support/ArcRange.html">Ziya::Maps::Support::ArcRange</a></li> <li><a href="../../Ziya/Maps/Support/BackgroundColor.html">Ziya::Maps::Support::BackgroundColor</a></li> <li><a href="../../Ziya/Maps/Support/Base.html">Ziya::Maps::Support::Base</a></li> <li><a href="../../Ziya/Maps/Support/DefaultColor.html">Ziya::Maps::Support::DefaultColor</a></li> <li><a href="../../Ziya/Maps/Support/DefaultPoint.html">Ziya::Maps::Support::DefaultPoint</a></li> <li><a href="../../Ziya/Maps/Support/FirstZoom.html">Ziya::Maps::Support::FirstZoom</a></li> <li><a href="../../Ziya/Maps/Support/HeatRange.html">Ziya::Maps::Support::HeatRange</a></li> <li><a href="../../Ziya/Maps/Support/Hover.html">Ziya::Maps::Support::Hover</a></li> <li><a href="../../Ziya/Maps/Support/Line.html">Ziya::Maps::Support::Line</a></li> <li><a href="../../Ziya/Maps/Support/LineColor.html">Ziya::Maps::Support::LineColor</a></li> <li><a href="../../Ziya/Maps/Support/LineRange.html">Ziya::Maps::Support::LineRange</a></li> <li><a href="../../Ziya/Maps/Support/OutlineColor.html">Ziya::Maps::Support::OutlineColor</a></li> <li><a href="../../Ziya/Maps/Support/Point.html">Ziya::Maps::Support::Point</a></li> <li><a href="../../Ziya/Maps/Support/PointRange.html">Ziya::Maps::Support::PointRange</a></li> <li><a href="../../Ziya/Maps/Support/Range.html">Ziya::Maps::Support::Range</a></li> <li><a href="../../Ziya/Maps/Support/Ranges.html">Ziya::Maps::Support::Ranges</a></li> <li><a href="../../Ziya/Maps/Support/Region.html">Ziya::Maps::Support::Region</a></li> <li><a href="../../Ziya/Maps/Support/ScalePoints.html">Ziya::Maps::Support::ScalePoints</a></li> <li><a href="../../Ziya/Maps/Support/ShowName.html">Ziya::Maps::Support::ShowName</a></li> <li><a href="../../Ziya/Maps/Support/State.html">Ziya::Maps::Support::State</a></li> <li><a href="../../Ziya/Maps/Support/StateInfoIcon.html">Ziya::Maps::Support::StateInfoIcon</a></li> <li><a href="../../Ziya/Maps/Support/ZoomMode.html">Ziya::Maps::Support::ZoomMode</a></li> <li><a href="../../Ziya/Maps/Support/ZoomOutButton.html">Ziya::Maps::Support::ZoomOutButton</a></li> <li><a href="../../Ziya/Maps/Support/ZoomOutScale.html">Ziya::Maps::Support::ZoomOutScale</a></li> <li><a href="../../Ziya/Maps/Sweden.html">Ziya::Maps::Sweden</a></li> <li><a href="../../Ziya/Maps/Uk.html">Ziya::Maps::Uk</a></li> <li><a href="../../Ziya/Maps/Us.html">Ziya::Maps::Us</a></li> <li><a href="../../Ziya/Maps/World.html">Ziya::Maps::World</a></li> <li><a href="../../Ziya/YamlHelpers.html">Ziya::YamlHelpers</a></li> <li><a href="../../Ziya/YamlHelpers/Gauges.html">Ziya::YamlHelpers::Gauges</a></li> <li><a href="../../Ziya/YamlHelpers/Maps.html">Ziya::YamlHelpers::Maps</a></li> <li><a href="../../Ziya/Ziyafy.html">Ziya::Ziyafy</a></li> <li><a href="../../String.html">String</a></li> </ul> <div id="no-class-search-results" style="display: none;">No matching classes.</div> <form action="#" method="get" accept-charset="utf-8"> <fieldset> <legend>Quicksearch</legend> <input type="text" name="quicksearch" value="" class="quicksearch-field" /> </fieldset> </form> </div> </div> </div> <div id="documentation"> <h1 class="class">Ziya::Charts::Base</h1> <div id="description"> <p> The mother ship of all charts. This abstract class figures out how to generate the correct xml to render the chart on the client side. It handles loading the look and feel via associated stylesheets. In order to customize the chart look and feel, you must create a theme directory in your application public/charts/themes dir. And reference it via the <a href="Base.html#M000104">#add</a> method using the :theme directive. </p> </div> <!-- Constants --> <!-- Attributes --> <!-- Methods --> <div id="public-instance-method-details" class="method-section section"> <h3 class="section-header">Public Instance Methods</h3> <div id="add-method" class="method-detail"> <a name="add"></a> <div class="method-heading"> <span class="method-name">add</span><span class="method-args">( *args )</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p><p> Add chart components to a given chart. </p> <p> The <tt>args</tt> must contain certain keys for the chart to be displayed correctly. </p> <h3>Directives</h3> <ul> <li><tt>:axis_category_text</tt> — Array of strings representing the x/y axis ticks dependending on the chart type. This value is required. In an x/y axis chart setup the category is the x axis unless the chart is a bar chart. </li> <li><tt>:axis_category_label</tt> — Array of strings representing the x axis labels. This is supported only for <a href="Scatter.html">Scatter</a> and <a href="Bubble.html">Bubble</a> charts. This value is optional. Specify nil for no label change. </li> <li><tt>:series</tt> — Specifies the series name and chart data points as an array. The series name will be used to display chart legends. You must have at least one of these tag defined. The data values may be specified as a straight up array of strings or numbers but also as an array of hash representing the data points and their attributes such as note, label, tooltip, effect, etc.. </li> <li><tt>:axis_value_label</tt> — Array of strings representing the ticks on the x/y axis depending on the chart type. This is symmetrical to the <tt>axis_category_label</tt> tag for the opposite chart axis. Specify nil for no label change. </li> <li><tt>:user_data</tt>:: — Used to make user data available to the ERB templates in the chart stylesheet yaml file. You must specify a key symbol and an ad-hoc value. The key will be used with the @options hash to access the user data. </li> <li><tt>:composites</tt> — Embeds multiple charts within the given chart via the draw image component. You must specify a hash of chart_id/url pairs. </li> <li><tt>:chart_types</tt> — Specify the chart types per series. This option should only be used with <a href="Mixed.html">Mixed</a> <a href="../Charts.html">Charts</a> !! </li> <li><tt>:theme</tt> — Specify the use of a given named theme. The named theme must reside in a directory named equaly under your application public/charts/themes. </li> </ul> <h3>Examples</h3> <p> Setup the category axis to with 3 ticks namely 2004, 2005, 2006 </p> <pre> my_chart.add( :axis_category_text, ['2004', '2005', '2006'] ) </pre> <p> Plain old series with integer data points </p> <pre> my_chart.add( :series, "series A", [ 10, 20, 30] ) </pre> <p> Specifying custom series labels. You may specify the following attributes in the data point hash : :note, :label, :tooltip and effects such as :shadow, :glow, etc... </p> <pre> my_chart.add( :series, "series A", [ { :value => 10, :label => 'l1' }, { :value => 20, :label => 'l2' } ] ) </pre></p> <div class="method-source-code" id="add-source"> <pre> <span class="ruby-comment cmt"># File lib/ziya/charts/base.rb, line 167</span> 167: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> ) 168: <span class="ruby-comment cmt"># TODO Validation categories = series, series = labels, etc...</span> 169: <span class="ruby-identifier">directive</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> 170: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">directive</span> 171: <span class="ruby-comment cmt"># BOZO !! Idea - could use a formatter object to specificy how you want to format this series</span> 172: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:axis_category_text</span> 173: <span class="ruby-identifier">categories</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> [] 174: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify an array of categories"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">categories</span>.<span class="ruby-identifier">empty?</span> 175: <span class="ruby-comment cmt"># don't side effect the passed in categs</span> 176: <span class="ruby-identifier">categs</span> = <span class="ruby-identifier">categories</span>.<span class="ruby-identifier">clone</span> 177: <span class="ruby-identifier">categs</span>.<span class="ruby-identifier">insert</span>( <span class="ruby-value">0</span>, <span class="ruby-keyword kw">nil</span> ) 178: <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">directive</span>] = <span class="ruby-identifier">categs</span> 179: <span class="ruby-comment cmt"># BOZO !! Need to constrain this only scatter and bubble support this !!</span> 180: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:axis_category_label</span> 181: <span class="ruby-identifier">labels</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> [] 182: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify an array of category labels"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">labels</span>.<span class="ruby-identifier">empty?</span> 183: <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">directive</span>] = <span class="ruby-identifier">labels</span> 184: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:composites</span> 185: <span class="ruby-identifier">composites</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span><span class="ruby-operator">:</span> [] 186: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify a hash of id => url pairs for the composite chart(s)"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">composites</span>.<span class="ruby-identifier">empty?</span> 187: <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">directive</span>] = <span class="ruby-identifier">composites</span> 188: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:axis_value_label</span> 189: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> [] 190: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify an array of values"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">values</span>.<span class="ruby-identifier">empty?</span> 191: <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">directive</span>] = <span class="ruby-identifier">values</span> 192: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:series</span> 193: <span class="ruby-identifier">series</span> = {} 194: <span class="ruby-identifier">legend</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> <span class="ruby-value str">""</span> 195: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>( <span class="ruby-constant">Array</span> ) 196: <span class="ruby-identifier">points</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">||</span> [] 197: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify an array of data points"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">points</span>.<span class="ruby-identifier">empty?</span> 198: <span class="ruby-comment cmt"># don't side effect the passed in series</span> 199: <span class="ruby-identifier">pts</span> = <span class="ruby-identifier">points</span>.<span class="ruby-identifier">clone</span> 200: <span class="ruby-identifier">pts</span>.<span class="ruby-identifier">insert</span>( <span class="ruby-value">0</span>, <span class="ruby-identifier">legend</span> ) 201: <span class="ruby-identifier">series</span>[<span class="ruby-identifier">:points</span>] = <span class="ruby-identifier">pts</span> 202: <span class="ruby-keyword kw">else</span> 203: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify an array of data points"</span> 204: <span class="ruby-keyword kw">end</span> 205: <span class="ruby-identifier">url</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> 206: <span class="ruby-identifier">series</span>[<span class="ruby-identifier">:url</span>] = <span class="ruby-identifier">url</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">url</span> 207: <span class="ruby-ivar">@series_desc</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">series</span> 208: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:user_data</span> 209: <span class="ruby-identifier">key</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Symbol</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> <span class="ruby-value str">""</span> 210: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify a key"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">key</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">empty?</span> 211: <span class="ruby-identifier">value</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> 212: <span class="ruby-comment cmt"># raise ArgumentError, "Must specify a value" if value.empty?</span> 213: <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span> 214: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:styles</span> 215: <span class="ruby-identifier">styles</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> <span class="ruby-value str">""</span> 216: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify a set of styles"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">styles</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">empty?</span> 217: <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">directive</span>] = <span class="ruby-identifier">styles</span> 218: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:chart_types</span> 219: <span class="ruby-identifier">types</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> [] 220: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify a set of chart types"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">types</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">empty?</span> 221: <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">directive</span>] = <span class="ruby-identifier">types</span> 222: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:theme</span> 223: <span class="ruby-identifier">theme</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> <span class="ruby-value str">""</span> 224: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify a theme name"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">theme</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">empty?</span> 225: <span class="ruby-ivar">@theme</span> = <span class="ruby-node">"#{Ziya.themes_dir}/#{theme}"</span> 226: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:mode</span> 227: <span class="ruby-ivar">@render_mode</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Integer</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> <span class="ruby-value">-1</span> 228: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Must specify a valid generation mode"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@render_mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">-1</span> 229: <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">"Invalid directive must be one of "</span> <span class="ruby-operator">+</span> 230: <span class="ruby-value str">":axis_category_text, :axis_value, :series, :user_data"</span> 231: <span class="ruby-keyword kw">end</span> 232: <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> <div id="to-s-method" class="method-detail"> <a name="to_s"></a> <div class="method-heading"> <span class="method-name">to_s</span><span class="method-args">( options={} )</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p><p> spews the graph specification to a string </p> <table> <tr><td valign="top"><tt>:partial</tt>:</td><td>You can specify this option to only update parts of the charts that have actually changed. This is useful for live update and link update where you may not need to redraw the whole chart. </td></tr> </table></p> <div class="method-source-code" id="to-s-source"> <pre> <span class="ruby-comment cmt"># File lib/ziya/charts/base.rb, line 238</span> 238: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>( <span class="ruby-identifier">options</span>={} ) 239: <span class="ruby-ivar">@partial</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:partial</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword kw">false</span> 240: <span class="ruby-ivar">@xml</span> = <span class="ruby-constant">Builder</span><span class="ruby-operator">::</span><span class="ruby-constant">XmlMarkup</span>.<span class="ruby-identifier">new</span> 241: <span class="ruby-comment cmt"># Forces utf8 encoding on xml stream</span> 242: <span class="ruby-ivar">@xml</span>.<span class="ruby-identifier">instruct!</span> <span class="ruby-identifier">:xml</span>, <span class="ruby-identifier">:version</span> =<span class="ruby-operator">></span> <span class="ruby-value str">"1.0"</span>, <span class="ruby-identifier">:encoding</span> =<span class="ruby-operator">></span> <span class="ruby-value str">"UTF-8"</span> 243: <span class="ruby-ivar">@xml</span>.<span class="ruby-identifier">chart</span> <span class="ruby-keyword kw">do</span> 244: <span class="ruby-ivar">@xml</span>.<span class="ruby-identifier">license</span>( <span class="ruby-ivar">@license</span> ) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@license</span>.<span class="ruby-identifier">nil?</span> 245: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">render_parents?</span> 246: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@type</span> 247: <span class="ruby-ivar">@xml</span>.<span class="ruby-identifier">chart_type</span>( <span class="ruby-ivar">@type</span> ) 248: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:chart_types</span>].<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span> <span class="ruby-keyword kw">and</span> <span class="ruby-operator">!</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:chart_types</span>].<span class="ruby-identifier">empty?</span> 249: <span class="ruby-ivar">@xml</span>.<span class="ruby-identifier">chart_type</span> <span class="ruby-keyword kw">do</span> 250: <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:chart_types</span>].<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">type</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@xml</span>.<span class="ruby-identifier">string</span>( <span class="ruby-identifier">type</span> ) } 251: <span class="ruby-keyword kw">end</span> 252: <span class="ruby-keyword kw">end</span> 253: <span class="ruby-keyword kw">end</span> 254: <span class="ruby-identifier">setup_lnf</span> 255: <span class="ruby-identifier">setup_series</span> 256: <span class="ruby-keyword kw">end</span> 257: <span class="ruby-ivar">@xml</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>( <span class="ruby-regexp re">/<to_s\/>/</span>, <span class="ruby-value str">''</span> ) 258: <span class="ruby-keyword kw">end</span></pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Base.html#M000106">to_xml</a> </div> </div> <div id="to-xml-method" class="method-detail method-alias"> <a name="to_xml"></a> <div class="method-heading"> <span class="method-name">to_xml</span><span class="method-args">( options={} )</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p><p> Alias for <a href="Base.html#M000105">#to_s</a> </p></p> </div> </div> </div> </div> </div> <div id="rdoc-debugging-section-dump"> <div class="section"> <h2 class="section-header">secsequence</h2> <pre>--- SEC00017 </pre> </div> <div class="section"> <h2 class="section-header">seccomment</h2> <pre>--- "" </pre> </div> <div class="section"> <h2 class="section-header">method_list</h2> <pre>--- - methods: - visibility: public aref: M000104 name: add sourcecode: " <span class=\"ruby-comment cmt\"># File lib/ziya/charts/base.rb, line 167</span>\n\ 167: <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">add</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span> )\n\ 168: <span class=\"ruby-comment cmt\"># TODO Validation categories = series, series = labels, etc...</span>\n\ 169: <span class=\"ruby-identifier\">directive</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span>\n\ 170: <span class=\"ruby-keyword kw\">case</span> <span class=\"ruby-identifier\">directive</span>\n\ 171: <span class=\"ruby-comment cmt\"># BOZO !! Idea - could use a formatter object to specificy how you want to format this series</span>\n\ 172: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:axis_category_text</span>\n\ 173: <span class=\"ruby-identifier\">categories</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">Array</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">:</span> []\n\ 174: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify an array of categories&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">categories</span>.<span class=\"ruby-identifier\">empty?</span>\n\ 175: <span class=\"ruby-comment cmt\"># don't side effect the passed in categs</span>\n\ 176: <span class=\"ruby-identifier\">categs</span> = <span class=\"ruby-identifier\">categories</span>.<span class=\"ruby-identifier\">clone</span>\n\ 177: <span class=\"ruby-identifier\">categs</span>.<span class=\"ruby-identifier\">insert</span>( <span class=\"ruby-value\">0</span>, <span class=\"ruby-keyword kw\">nil</span> )\n\ 178: <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">directive</span>] = <span class=\"ruby-identifier\">categs</span>\n\ 179: <span class=\"ruby-comment cmt\"># BOZO !! Need to constrain this only scatter and bubble support this !!</span>\n\ 180: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:axis_category_label</span>\n\ 181: <span class=\"ruby-identifier\">labels</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">Array</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">:</span> []\n\ 182: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify an array of category labels&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">labels</span>.<span class=\"ruby-identifier\">empty?</span>\n\ 183: <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">directive</span>] = <span class=\"ruby-identifier\">labels</span> \n\ 184: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:composites</span>\n\ 185: <span class=\"ruby-identifier\">composites</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">Hash</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span><span class=\"ruby-operator\">:</span> []\n\ 186: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify a hash of id =&gt; url pairs for the composite chart(s)&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">composites</span>.<span class=\"ruby-identifier\">empty?</span>\n\ 187: <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">directive</span>] = <span class=\"ruby-identifier\">composites</span>\n\ 188: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:axis_value_label</span>\n\ 189: <span class=\"ruby-identifier\">values</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">Array</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">:</span> []\n\ 190: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify an array of values&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">values</span>.<span class=\"ruby-identifier\">empty?</span>\n\ 191: <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">directive</span>] = <span class=\"ruby-identifier\">values</span>\n\ 192: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:series</span>\n\ 193: <span class=\"ruby-identifier\">series</span> = {}\n\ 194: <span class=\"ruby-identifier\">legend</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">String</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">:</span> <span class=\"ruby-value str\">&quot;&quot;</span>\n\ 195: <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>( <span class=\"ruby-constant\">Array</span> )\n\ 196: <span class=\"ruby-identifier\">points</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">||</span> []\n\ 197: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify an array of data points&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">points</span>.<span class=\"ruby-identifier\">empty?</span>\n\ 198: <span class=\"ruby-comment cmt\"># don't side effect the passed in series</span>\n\ 199: <span class=\"ruby-identifier\">pts</span> = <span class=\"ruby-identifier\">points</span>.<span class=\"ruby-identifier\">clone</span>\n\ 200: <span class=\"ruby-identifier\">pts</span>.<span class=\"ruby-identifier\">insert</span>( <span class=\"ruby-value\">0</span>, <span class=\"ruby-identifier\">legend</span> )\n\ 201: <span class=\"ruby-identifier\">series</span>[<span class=\"ruby-identifier\">:points</span>] = <span class=\"ruby-identifier\">pts</span>\n\ 202: <span class=\"ruby-keyword kw\">else</span>\n\ 203: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify an array of data points&quot;</span>\n\ 204: <span class=\"ruby-keyword kw\">end</span>\n\ 205: <span class=\"ruby-identifier\">url</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> \n\ 206: <span class=\"ruby-identifier\">series</span>[<span class=\"ruby-identifier\">:url</span>] = <span class=\"ruby-identifier\">url</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">url</span>\n\ 207: <span class=\"ruby-ivar\">@series_desc</span> <span class=\"ruby-operator\">&lt;&lt;</span> <span class=\"ruby-identifier\">series</span>\n\ 208: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:user_data</span>\n\ 209: <span class=\"ruby-identifier\">key</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">Symbol</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">:</span> <span class=\"ruby-value str\">&quot;&quot;</span>\n\ 210: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify a key&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">key</span>.<span class=\"ruby-identifier\">to_s</span>.<span class=\"ruby-identifier\">empty?</span>\n\ 211: <span class=\"ruby-identifier\">value</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span>\n\ 212: <span class=\"ruby-comment cmt\"># raise ArgumentError, &quot;Must specify a value&quot; if value.empty?</span>\n\ 213: <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">key</span>] = <span class=\"ruby-identifier\">value</span>\n\ 214: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:styles</span>\n\ 215: <span class=\"ruby-identifier\">styles</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">String</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">:</span> <span class=\"ruby-value str\">&quot;&quot;</span>\n\ 216: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify a set of styles&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">styles</span>.<span class=\"ruby-identifier\">to_s</span>.<span class=\"ruby-identifier\">empty?</span> \n\ 217: <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">directive</span>] = <span class=\"ruby-identifier\">styles</span> \n\ 218: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:chart_types</span>\n\ 219: <span class=\"ruby-identifier\">types</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">Array</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">:</span> []\n\ 220: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify a set of chart types&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">types</span>.<span class=\"ruby-identifier\">to_s</span>.<span class=\"ruby-identifier\">empty?</span> \n\ 221: <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">directive</span>] = <span class=\"ruby-identifier\">types</span> \n\ 222: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:theme</span>\n\ 223: <span class=\"ruby-identifier\">theme</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">String</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">:</span> <span class=\"ruby-value str\">&quot;&quot;</span>\n\ 224: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify a theme name&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">theme</span>.<span class=\"ruby-identifier\">to_s</span>.<span class=\"ruby-identifier\">empty?</span> \n\ 225: <span class=\"ruby-ivar\">@theme</span> = <span class=\"ruby-node\">&quot;#{Ziya.themes_dir}/#{theme}&quot;</span>\n\ 226: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">:mode</span>\n\ 227: <span class=\"ruby-ivar\">@render_mode</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>(<span class=\"ruby-constant\">Integer</span>) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">shift</span> <span class=\"ruby-operator\">:</span> <span class=\"ruby-value\">-1</span>\n\ 228: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Must specify a valid generation mode&quot;</span> <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-ivar\">@render_mode</span> <span class=\"ruby-operator\">==</span> <span class=\"ruby-value\">-1</span> \n\ 229: <span class=\"ruby-keyword kw\">else</span> <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">ArgumentError</span>, <span class=\"ruby-value str\">&quot;Invalid directive must be one of &quot;</span> <span class=\"ruby-operator\">+</span> \n\ 230: <span class=\"ruby-value str\">&quot;:axis_category_text, :axis_value, :series, :user_data&quot;</span>\n\ 231: <span class=\"ruby-keyword kw\">end</span> \n\ 232: <span class=\"ruby-keyword kw\">end</span>" m_desc: |- <p> Add chart components to a given chart. </p> <p> The <tt>args</tt> must contain certain keys for the chart to be displayed correctly. </p> <h3>Directives</h3> <ul> <li><tt>:axis_category_text</tt> &#8212; Array of strings representing the x/y axis ticks dependending on the chart type. This value is required. In an x/y axis chart setup the category is the x axis unless the chart is a bar chart. </li> <li><tt>:axis_category_label</tt> &#8212; Array of strings representing the x axis labels. This is supported only for <a href="Scatter.html">Scatter</a> and <a href="Bubble.html">Bubble</a> charts. This value is optional. Specify nil for no label change. </li> <li><tt>:series</tt> &#8212; Specifies the series name and chart data points as an array. The series name will be used to display chart legends. You must have at least one of these tag defined. The data values may be specified as a straight up array of strings or numbers but also as an array of hash representing the data points and their attributes such as note, label, tooltip, effect, etc.. </li> <li><tt>:axis_value_label</tt> &#8212; Array of strings representing the ticks on the x/y axis depending on the chart type. This is symmetrical to the <tt>axis_category_label</tt> tag for the opposite chart axis. Specify nil for no label change. </li> <li><tt>:user_data</tt>:: &#8212; Used to make user data available to the ERB templates in the chart stylesheet yaml file. You must specify a key symbol and an ad-hoc value. The key will be used with the @options hash to access the user data. </li> <li><tt>:composites</tt> &#8212; Embeds multiple charts within the given chart via the draw image component. You must specify a hash of chart_id/url pairs. </li> <li><tt>:chart_types</tt> &#8212; Specify the chart types per series. This option should only be used with <a href="Mixed.html">Mixed</a> <a href="../Charts.html">Charts</a> !! </li> <li><tt>:theme</tt> &#8212; Specify the use of a given named theme. The named theme must reside in a directory named equaly under your application public/charts/themes. </li> </ul> <h3>Examples</h3> <p> Setup the category axis to with 3 ticks namely 2004, 2005, 2006 </p> <pre> my_chart.add( :axis_category_text, ['2004', '2005', '2006'] ) </pre> <p> Plain old series with integer data points </p> <pre> my_chart.add( :series, &quot;series A&quot;, [ 10, 20, 30] ) </pre> <p> Specifying custom series labels. You may specify the following attributes in the data point hash : :note, :label, :tooltip and effects such as :shadow, :glow, etc... </p> <pre> my_chart.add( :series, &quot;series A&quot;, [ { :value =&gt; 10, :label =&gt; 'l1' }, { :value =&gt; 20, :label =&gt; 'l2' } ] ) </pre> params: ( *args ) - visibility: public aref: M000105 name: to_s sourcecode: " <span class=\"ruby-comment cmt\"># File lib/ziya/charts/base.rb, line 238</span>\n\ 238: <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">to_s</span>( <span class=\"ruby-identifier\">options</span>={} )\n\ 239: <span class=\"ruby-ivar\">@partial</span> = <span class=\"ruby-identifier\">options</span>[<span class=\"ruby-identifier\">:partial</span>] <span class=\"ruby-operator\">||</span> <span class=\"ruby-keyword kw\">false</span>\n\ 240: <span class=\"ruby-ivar\">@xml</span> = <span class=\"ruby-constant\">Builder</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">XmlMarkup</span>.<span class=\"ruby-identifier\">new</span>\n\ 241: <span class=\"ruby-comment cmt\"># Forces utf8 encoding on xml stream</span>\n\ 242: <span class=\"ruby-ivar\">@xml</span>.<span class=\"ruby-identifier\">instruct!</span> <span class=\"ruby-identifier\">:xml</span>, <span class=\"ruby-identifier\">:version</span> =<span class=\"ruby-operator\">&gt;</span> <span class=\"ruby-value str\">&quot;1.0&quot;</span>, <span class=\"ruby-identifier\">:encoding</span> =<span class=\"ruby-operator\">&gt;</span> <span class=\"ruby-value str\">&quot;UTF-8&quot;</span>\n\ 243: <span class=\"ruby-ivar\">@xml</span>.<span class=\"ruby-identifier\">chart</span> <span class=\"ruby-keyword kw\">do</span>\n\ 244: <span class=\"ruby-ivar\">@xml</span>.<span class=\"ruby-identifier\">license</span>( <span class=\"ruby-ivar\">@license</span> ) <span class=\"ruby-keyword kw\">unless</span> <span class=\"ruby-ivar\">@license</span>.<span class=\"ruby-identifier\">nil?</span>\n\ 245: <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">render_parents?</span>\n\ 246: <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-ivar\">@type</span>\n\ 247: <span class=\"ruby-ivar\">@xml</span>.<span class=\"ruby-identifier\">chart_type</span>( <span class=\"ruby-ivar\">@type</span> ) \n\ 248: <span class=\"ruby-keyword kw\">elsif</span> <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">:chart_types</span>].<span class=\"ruby-identifier\">is_a?</span> <span class=\"ruby-constant\">Array</span> <span class=\"ruby-keyword kw\">and</span> <span class=\"ruby-operator\">!</span> <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">:chart_types</span>].<span class=\"ruby-identifier\">empty?</span>\n\ 249: <span class=\"ruby-ivar\">@xml</span>.<span class=\"ruby-identifier\">chart_type</span> <span class=\"ruby-keyword kw\">do</span> \n\ 250: <span class=\"ruby-ivar\">@options</span>[<span class=\"ruby-identifier\">:chart_types</span>].<span class=\"ruby-identifier\">each</span> { <span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">type</span><span class=\"ruby-operator\">|</span> <span class=\"ruby-ivar\">@xml</span>.<span class=\"ruby-identifier\">string</span>( <span class=\"ruby-identifier\">type</span> ) } \n\ 251: <span class=\"ruby-keyword kw\">end</span>\n\ 252: <span class=\"ruby-keyword kw\">end</span>\n\ 253: <span class=\"ruby-keyword kw\">end</span>\n\ 254: <span class=\"ruby-identifier\">setup_lnf</span>\n\ 255: <span class=\"ruby-identifier\">setup_series</span>\n\ 256: <span class=\"ruby-keyword kw\">end</span>\n\ 257: <span class=\"ruby-ivar\">@xml</span>.<span class=\"ruby-identifier\">to_s</span>.<span class=\"ruby-identifier\">gsub</span>( <span class=\"ruby-regexp re\">/&lt;to_s\\/&gt;/</span>, <span class=\"ruby-value str\">''</span> )\n\ 258: <span class=\"ruby-keyword kw\">end</span>" aka: - aref: Base.html#M000106 name: to_xml m_desc: |- <p> spews the graph specification to a string </p> <table> <tr><td valign="top"><tt>:partial</tt>:</td><td>You can specify this option to only update parts of the charts that have actually changed. This is useful for live update and link update where you may not need to redraw the whole chart. </td></tr> </table> params: ( options={} ) - visibility: public aref: M000106 name: to_xml m_desc: |- <p> Alias for <a href="Base.html#M000105">#to_s</a> </p> params: ( options={} ) category: Instance type: Public </pre> </div> <div class="section"> <h2 class="section-header">sectitle</h2> <pre>--- </pre> </div> </div> <div id="validator-badges"> <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p> <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a></small>.</p> </div> </body> </html>