It appears you have not yet registered with DEVPPL. To register please click here... (it's fast, easy and free!)

Forum

Log In Sponsors
Board index Programming JavaScript Forum

Function to Read-In External "XML" datafiles on For Loop

Function to Read-In External "XML" datafiles on For Loop

Postby MT_MANC on Mon Jan 24, 2011 3:39 pm

Can anyone help in constructing a Function that will:
Read in 7 successive "XML" files (not pure XML format & held in "Gallery/Data" external dir) in a For Loop:
(US_SUMlev_2008.xml,US_SUMlev_2009.xml.....to US_SUMlev_2014.xml)
see: http://www.jcsweb.biz/mef/AnimGIF/XMLtemp_04c.htm for required output

These XML then need to succesively update a string variable "strXML" in the webpage code below which forms the "data" populating a time-series chart. "strXML" then acts as the input to "setDataXML" which is the Chart's data update method (?)
The sequential updating of "strXML" in a For Loop should the create a psuedo-animation effect in the chart.

My code (see below in edited format or view source at above URL) will achieve what I want but the "strXML" variable update is currently HARD-CODED (rather than read from the XML files held in external directory "Gallery/Data" ). The required function will also need to strip out all linbreaks ("\n") from the external XML files in order to produce a single line of stringtext: eg
Code: Select all
<chart animation='0'   caption= 'Chart1' yAxisName=' % change' ><categories> <category label='2008' /> <category label='2009' /> <category label='2010' /> <category label='2011' /> <category label='2012' /> <category label='2013' /> <category label='2014' /></categories><dataset seriesName='zGDP_u' color='6600CC' renderAs='Column' dashed='1'><set value='0.000000'  /></dataset><dataset seriesName='zCPI_u' color='0000DC' renderAs='Line' ><set value='0.000000'  /></dataset><dataset seriesName='ERIb_u' color='FFAA26' renderAs='Line' ><set value='0.000000'  /></dataset><dataset seriesName='RSH_u' color='FF0066' renderAs='Line' ><set value='0.000000'  /></dataset><dataset seriesName='zER_u' color='00FF00' renderAs='Line' ><set value='0.000000'  /></dataset></chart>


The sequential updating of "strXML" is also NOT yet done in a For Loop but a fixed timing Animate() function which successivley activates the generateXML_200?() on a timedelay.

Summary: Required Runstream in Function For Loop:
Loop1: Read-in "Gallery/Data/US_SUMlev_2008.xml", strip out "\n", update strXML (& thus setDataXML) & update chart1
Loop2: Read-in "Gallery/Data/US_SUMlev_2009.xml", strip out "\n", update strXML (& thus setDataXML) & update chart1
etc etc until
Loop7: Read-in "Gallery/Data/US_SUMlev_2014.xml", strip out "\n", update strXML (& thus setDataXML) & update chart1
Return to Loop 1 data & start again (to repeat the "animation " effect)

If there was a way to "Freeze" and "Restart" this above "update" function (ie pause the read-in of the next XML) as in current code/page that would be mighty fine too.

Any help much appreciated

Code: Select all
<HTML>
<HEAD>
<script language="Javascript" SRC="FC_v3_2.js"></script>
<script language="JavaScript">
var strXML;

function generateXML_2008(){
strXML = "<chart animation='0'   caption= 'Chart1' yAxisName=' % change' ><categories> <category label='2008' /> <category label='2009' /> <category label='2010' /> <category label='2011' /> <category label='2012' /> <category label='2013' /> <category label='2014' /></categories><dataset seriesName='zGDP_u' color='6600CC' renderAs='Column' dashed='1'><set value='0.000000'  /></dataset><dataset seriesName='zCPI_u' color='0000DC' renderAs='Line' ><set value='0.000000'  /></dataset><dataset seriesName='ERIb_u' color='FFAA26' renderAs='Line' ><set value='0.000000'  /></dataset><dataset seriesName='RSH_u' color='FF0066' renderAs='Line' ><set value='0.000000'  /></dataset><dataset seriesName='zER_u' color='00FF00' renderAs='Line' ><set value='0.000000'  /></dataset></chart>"  ;
          return strXML;  }

function generateXML_2009(){ TRUNCATED - extends data by 1 year}
function generateXML_2010(){ TRUNCATED - extends data by 1 year}
function generateXML_2011(){ TRUNCATED - extends data by 1 year}
function generateXML_2012(){ TRUNCATED - extends data by 1 year}
function generateXML_2013(){ TRUNCATED - extends data by 1 year}

function generateXML_2014(){
strXML = "<chart animation='0' showValues='0' caption= 'Chart1' yAxisName=' % change' ><categories> <category label='2008' /> <category label='2009' /> <category label='2010' /> <category label='2011' /> <category label='2012' /> <category label='2013' /> <category label='2014' /></categories><dataset seriesName='zGDP_u' color='6600CC' renderAs='Column'><set value='0.000000'  /><set value='-0.055113'  /><set value='-0.022272'  /><set value='0.052834'  /><set value='0.029910'  /><set value='0.016847'  /><set value='0.003139'  /></dataset><dataset seriesName='zCPI_u' color='0000DC' renderAs='Line' ><set value='0.000000'  /><set value='0.000470'  /><set value='-0.009643'  /><set value='0.004135'  /><set value='0.000321'  /><set value='0.000019'  /><set value='-0.000719'  /></dataset><dataset seriesName='ERIb_u' color='FFAA26' renderAs='Line' ><set value='0.000000'  /><set value='0.142439'  /><set value='0.130952'  /><set value='0.102297'  /><set value='0.083231'  /><set value='0.062888'  /><set value='0.043371'  /></dataset><dataset seriesName='RSH_u' color='FF0066' renderAs='Line' ><set value='0.000000'  /><set value='0.238348'  /><set value='0.000000'  /><set value='0.002127'  /><set value='0.001261'  /><set value='0.011962'  /><set value='0.015624'  /></dataset><dataset seriesName='zER_u' color='00FF00' renderAs='Line' ><set value='0.000000'  /><set value='-0.000155'  /><set value='-0.006479'  /><set value='-0.007280'  /><set value='-0.000895'  /><set value='0.003701'  /><set value='0.005333'  /></dataset></chart>"  ;
         return strXML;  }
</script>

<script language="JavaScript">
function UpdatestrXML_2008(){
   var chartObj = getChartFromId("chart1Id");               //Get reference to chart object using Dom ID
   chartObj.setDataXML(generateXML_2008());     }      //Update XML going to Fusion charts

function UpdatestrXML_2009(){
   var chartObj = getChartFromId("chart1Id");               //Get reference to chart object using Dom ID
   chartObj.setDataXML(generateXML_2009());     }      //Update XML going to Fusion charts

function UpdatestrXML_2010(){
   var chartObj = getChartFromId("chart1Id");               //Get reference to chart object using Dom ID
   chartObj.setDataXML(generateXML_2010());     }      //Update XML going to Fusion charts

function UpdatestrXML_2011(){
   var chartObj = getChartFromId("chart1Id");               //Get reference to chart object using Dom ID
   chartObj.setDataXML(generateXML_2011());     }      //Update XML going to Fusion charts

function UpdatestrXML_2012(){
   var chartObj = getChartFromId("chart1Id");               //Get reference to chart object using Dom ID
   chartObj.setDataXML(generateXML_2012());     }      //Update XML going to Fusion charts

function UpdatestrXML_2013(){
   var chartObj = getChartFromId("chart1Id");               //Get reference to chart object using Dom ID
   chartObj.setDataXML(generateXML_2013());     }      //Update XML going to Fusion charts

function UpdatestrXML_2014(){
   var chartObj = getChartFromId("chart1Id");               //Get reference to chart object using Dom ID
   chartObj.setDataXML(generateXML_2014());     }      //Update XML going to Fusion charts
</script>

<script language="JavaScript">
var start = 250 ;
var delay = 350
// var delay = 2000
function Animate()  {
t1_2008=setTimeout("javascript:UpdatestrXML_2008();", start+delay*1 ) ;
t1_2009=setTimeout("javascript:UpdatestrXML_2009();", start+delay*2 ) ;
t1_2010=setTimeout("javascript:UpdatestrXML_2010();", start+delay*3 ) ;
t1_2011=setTimeout("javascript:UpdatestrXML_2011();", start+delay*4 ) ;
t1_2012=setTimeout("javascript:UpdatestrXML_2012();", start+delay*5 ) ;
t1_2013=setTimeout("javascript:UpdatestrXML_2013();", start+delay*6 ) ;
t1_2014=setTimeout("javascript:UpdatestrXML_2014();", start+delay*7 ) ;
LOOP    =setTimeout("javascript:Animate();", start+delay*8) ;   }
</script>

<script language="JavaScript">
function FreezeAll() { clearTimeout(t1_2008); clearTimeout(t1_2009); clearTimeout(t1_2010); clearTimeout(t1_2011); clearTimeout(t1_2012); clearTimeout(t1_2013); clearTimeout(t1_2014); clearTimeout(LOOP);   }
</script>

</HEAD>

<body onload="Animate();" >
<FORM NAME='Form1' Id='Form1' action='' method=''>
<INPUT TYPE="button" class="button" value="Animate" onClick="Animate(); ">
<INPUT TYPE="button" class="button" value="Freeze" onClick="FreezeAll();">
</FORM>
      <div id="chart1div"> FusionCharts </div>
      <script language="JavaScript">
         var chart1 = new FusionCharts("MSColumnLine3D.swf", "chart1Id", "600", "400", "0", "1");
         chart1.setDataXML("<chart></chart>");    //Initialize chart with empty data. We'll feed it data on the chart's FC_Rendered event.
         chart1.render("chart1div");
      </script>
</body>
</HTML>
MT_MANC
 
Posts: 5
Joined: Mon Mar 31, 2008 8:11 pm

Who is online

Users browsing this forum: No registered users and 3 guests

cron