<?xml version="1.0" encoding="UTF-8"?>
<action-sequence> 
  <title>Example of Open Flash Chart</title>
  <version>1</version>
  <logging-level>ERROR</logging-level>
  <documentation> 
    <author/>  
    <description>Empty blank action sequence document</description>  
    <help/>  
    <result-type/>  
    <icon/> 
  </documentation>

  <inputs> 
    <chartdef type="string"> 
      <sources> 
        <request>chartdef</request> 
      </sources>  
      <default-value><![CDATA[&is_thousand_separator_disabled=false&&title=Actuals By Region,{font-size:18px; color: #d01f3c}& &x_axis_steps=1& &y_ticks=5,10,5& &line=3,#87421F& &y_min=0& &y_max=20& &pie=60,#505050,{font-size: 12px; color: #404040;& &values=<<pie_values>>& &pie_labels=<<pie_labels>>& &colours=#d01f3c,#356aa0,#C79810& &links=& &tool_tip=%23val%23&]]></default-value> 
    </chartdef>  
    <thisURL type="string"> 
      <sources> 
        <request>thisURL</request> 
      </sources>  
      <default-value><![CDATA[http://localhost:8080/pentaho/ViewAction?solution=samples&path=charts&action=flash_chart_example.xaction&datacall=true]]></default-value> 
    </thisURL>  
    <datacall type="string"> 
      <sources> 
        <request>datacall</request> 
      </sources>  
      <default-value><![CDATA[false]]></default-value> 
    </datacall>  
    <outputString type="string"> 
      <sources> 
        <request>outputString</request> 
      </sources>  
      <default-value><![CDATA[empty]]></default-value> 
    </outputString>  
    <flashFragment type="string"> 
      <sources> 
        <request>flashFragment</request> 
      </sources>  
      <default-value><![CDATA[<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="400" height="300" id="graph-2" align="middle"><param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="/pentaho-style/images/open-flash-chart.swf?width=500&height=250&data=<<callback>>" /> <param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /> <embed src="/pentaho-style/images/open-flash-chart.swf?width=500&height=250&data=<<callback>>" quality="high" bgcolor="#FFFFFF" width="500" height="250" name="open-flash-chart" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object>]]></default-value> 
    </flashFragment> 
  </inputs>

  <outputs> 
    <outputString type="string"> 
      <destinations> 
        <response>content</response> 
      </destinations> 
    </outputString> 
  </outputs>

  <resources/>
  
  <actions> 
    <actions> 
      <condition><![CDATA[datacall == "true"]]></condition>  
      <action-definition> 
        <component-name>SQLLookupRule</component-name>
        <action-type>Relational</action-type>
        <action-outputs> 
          <query-result type="result-set" mapping="relational_data"/>  
          <actuals type="integer"/>  
          <region type="string"/> 
        </action-outputs>
        <component-definition> 
          <jndi><![CDATA[SampleData]]></jndi>  
          <query><![CDATA[select sum(actual) as "Actuals", region from quadrant_actuals group by region]]></query>  
          <live><![CDATA[true]]></live> 
        </component-definition> 
      </action-definition>
  
      <action-definition> 
        <component-name>JavascriptRule</component-name>
        <action-type>JavaScript</action-type>
        <action-inputs> 
          <relational_data type="result-set"/>  
          <outputString type="string"/>  
          <chartdef type="string"/> 
        </action-inputs>
        <action-outputs> 
          <headersString type="string"/>  
          <valuesString type="string"/>  
          <chartData type="string"/> 
        </action-outputs>
        <component-definition> 
          <script><![CDATA[var nRows = relational_data.getRowCount();
 var valuesString = "";
var headersString = "";

var i = 0;

for ( i = 0 ; i < nRows; i ++ ) {
  valuesString = valuesString + relational_data.getValueAt(i, 0);
  headersString = headersString + relational_data.getValueAt(i, 1);
  if ( i != nRows -1 ) {
    valuesString += ",";
    headersString += ",";
  }
}
var chartData = chartdef.replace("<<pie_labels>>", headersString).replace("<<pie_values>>", valuesString);]]></script> 
        </component-definition> 
      </action-definition>
  
      <action-definition> 
        <component-name>UtilityComponent</component-name>
        <action-type>Copy Parameter</action-type>
        <action-inputs> 
          <copy-from type="string" mapping="chartData"/> 
        </action-inputs>
        <action-outputs> 
          <copy-to type="string" mapping="outputString"/> 
        </action-outputs>
        <component-definition> 
          <copy> 
            <from>copy-from</from>  
            <return>copy-to</return> 
          </copy> 
        </component-definition> 
      </action-definition>
 
    </actions>
  
    <actions> 
      <condition><![CDATA[datacall != "true"]]></condition>  
      <action-definition> 
        <component-name>JavascriptRule</component-name>
        <action-type>JavaScript</action-type>
        <action-inputs> 
          <thisURL type="string"/>  
          <flashFragment type="string"/> 
        </action-inputs>
        <action-outputs> 
          <newValue type="string"/> 
        </action-outputs>
        <component-definition> 
          <script><![CDATA[var newValue = "";
newValue = flashFragment.replace(/<<callback>>/g, escape(thisURL));]]></script> 
        </component-definition> 
      </action-definition>
  
      <action-definition> 
        <component-name>UtilityComponent</component-name>
        <action-type>Copy Parameter</action-type>
        <action-inputs> 
          <copy-from type="string" mapping="newValue"/> 
        </action-inputs>
        <action-outputs> 
          <copy-to type="string" mapping="outputString"/> 
        </action-outputs>
        <component-definition> 
          <copy> 
            <from>copy-from</from>  
            <return>copy-to</return> 
          </copy> 
        </component-definition> 
      </action-definition>
 
    </actions>
 
  </actions> 
</action-sequence>