|
|
|
Junior Member
      
Group: Forum Members
Last Login: 11/15/2008 2:40:47 PM
Posts: 13,
Visits: 44
|
|
Regarding the advanced example given in the document section called "FusionCharts and Javascript" (pasted below), is it possible to change it so that on a checkbox click the chart changes type in addition to the data, so for example from MSColumn3D.swf to MSLine.swf? I want to be able to offer to my users a table of data and then radio buttons so they can select which data they want to see charted (in a single charting area) but different data would require a different chart. Can I do this using only JS or would this require AJAX?<HTML> <HEAD> <TITLE>FusionCharts - Client Side Chart Plotting</TITLE> <SCRIPT LANGUAGE="Javascript" SRC="../../FusionCharts/FusionCharts.js"></SCRIPT> <SCRIPT LANGUAGE="JavaScript"> var data = new Array(); data[0] = new Array("Product A",659400,465400,764500,650500); data[1] = new Array("Product B",546300,436500,546500,332500); data[2] = new Array("Product C",657600,564600,348600,436600); data[3] = new Array("Product D",436500,765700,453900,326400);
var chartLoaded = false;
function FC_Rendered(domId){ if (domId=="chart1Id"){ this.document.productSelector.disabled = false;
chartLoaded = true;
var chartObj = getChartFromId(domId); chartObj.setDataXML(generateXML(true)); } return true; }
function updateChart(domId){ if (chartLoaded){ var chartObj = getChartFromId(domId); chartObj.setDataXML(generateXML(this.document.productSelector.AnimateChart.checked)); } } function generateXML(animate){ var strXML; strXML = "<chart caption='Product Wise Sales' formatNumberScale='0' numberPrefix='$' animation='" + ((animate==true)?"1":"0") + "' " + ((this.document.productSelector.ShowValues.checked==true)?(" showValues='1' rotateValues='1' placeValuesInside='1' ") " showValues='0' ")) + ">";
strXML = strXML + "<categories><category name='Quarter 1' /><category name='Quarter 2' /><category name='Quarter 3' /><category name='Quarter 4' /></categories>";
strXML = (this.document.productSelector.ProductA.checked==true)?(strXML + getProductXML(0)) strXML); strXML = (this.document.productSelector.ProductB.checked==true)?(strXML + getProductXML(1)) strXML); strXML = (this.document.productSelector.ProductC.checked==true)?(strXML + getProductXML(2)) strXML); strXML = (this.document.productSelector.ProductD.checked==true)?(strXML + getProductXML(3)) strXML);
strXML = strXML + "</chart>";
return strXML; }
function getProductXML(productIndex){ var productXML; productXML = "<dataset seriesName='" + data[productIndex][0] + "' >"; for (var i=1; i<=4; i++){ productXML = productXML + "<set value='" + data[productIndex][i] + "' />"; } productXML = productXML + "</dataset>"; return productXML; } </SCRIPT> </HEAD> <BODY> <FORM NAME='productSelector' Id='productSelector' action='Chart.html' method='POST' disabled> <h4>Please select the products for which you want to plot the chart:</h4> <INPUT TYPE='Checkbox' name='ProductA' onClick="JavaScript:updateChart('chart1Id');" checked> Product A <INPUT TYPE='Checkbox' name='ProductB' onClick="JavaScript:updateChart('chart1Id');" checked> Product B <INPUT TYPE='Checkbox' name='ProductC' onClick="JavaScript:updateChart('chart1Id');" checked> Product C <INPUT TYPE='Checkbox' name='ProductD' onClick="JavaScript:updateChart('chart1Id');" checked> Product D
<B>Chart Configuration:</B> <INPUT TYPE='Checkbox' name='AnimateChart'>Animate chart while changing data? <INPUT TYPE='Checkbox' name='ShowValues' onClick="JavaScript:updateChart('chart1Id');" checked>Show Data Values?
</FORM>
<div id="chart1div"> FusionCharts </div> <script language="JavaScript"> var chart1 = new FusionCharts("../../FusionCharts/MSColumn3D.swf", "chart1Id", "600", "400", "0", "1"); chart1.setDataXML("<chart></chart>"); chart1.render("chart1div"); </script> </BODY> </HTML>
|
|
|
|
|
FusionCharts Team
      
Group: Administrators
Last Login: Yesterday @ 8:20:12 AM
Posts: 2,194,
Visits: 521
|
|
You can do this using JS itself. Whenever the JS changes, re-load another chart SWF by creating a new instance of FusionCharts.
Thanks, Pallav Nadhani FusionCharts Team
|
|
|
|
|
Supreme Being
      
Group: Moderators
Last Login: Today @ 5:38:52 AM
Posts: 884,
Visits: 1,420
|
|
| Hi, yes, you can do this easily writing some extra lines of Javascript codes and this wont need AJAX. You need to use javascript to define a new FusionCharts with new SWF name and set the dataXML/dataURL and render it to the same div containing the earlier chart.
Regards,
Sudipto Choudhury FusionCharts Team
|
|
|
|