MartiniThePilot Posted September 8, 2009 Share Posted September 8, 2009 Hi,weaponx inspired me with his embed XML SWF Graphics UDF to resume a 'postponed' project, still lacking of some result graphics. While the graphics of the chart engine used above look excellent, they are not animated and a click will always direct a browser window to the vendor home page. The licensed version of this product does not have these restrictions. To use it within freeware, you would have to buy the bulk license for 599 US$.When looking for an alternative, I stopped at the free version of FusionChartsv3, called FusionChartsFree. They are licensed under MIT and/or GNU and are open source, even the flash source code (.fla) is included.Homepage: http://www.fusioncharts.com/free/Gallery: http://www.fusioncharts.com/free/gallery/Documentation: http://www.fusioncharts.com/free/Docs/License: http://www.fusioncharts.com/free/license/Download: http://www.fusioncharts.com/free/download/My original idea was, to start with a copy of weaponx' UDF and adapt it to FusionChartsFree. Just by changing the #include (and the chart engine), you may switch from one chart engine to the other without changing your AutoIt code. Even somehow possible, this is not as simple as I though - so I just converted a small part to give an usable example.There are some major differences between XML/SWF Charts and FusionChartsFree:FusionChartsFree has its own chart engine for each type of graphic (bar, line, etc.), so data and graphics are separated.The path to the XML data file must be URI encoded (http://en.wikipedia.org/wiki/Url_encode), otherwise you get an 'Error on Loading Data'. Thanks to Prog@ndy for his _URIEncode function.The XML input data has different tags.The flash parameters (FlashVars) must be passed to the flash object prior starting the .swf file with the .Movie method. Sounds logical, but is different for the code mentioned above.The .zip file below contains:The XML input data Example1.xmlHTML files Chart1.htm and Chart2.htm to demonstrate the usage from HTML, both using the same input Example1.xml. The HTML files are not required for the AutoIt code.The AutoIt GUI example Example1.au3 displaying two charts created from the same input data Example1.xmlThe chart engines from FusionChartsFree FCF_MSLine.swf and FCF_MSColumn3D.swfExample1.jpg - how it should look likeEnjoy! MartinExample1.zip Link to comment Share on other sites More sharing options...
ACalcutt Posted September 12, 2009 Share Posted September 12, 2009 Looks good... Is there any way to tell the graph to re-read the xml file? Andrew Calcutt Http://www.Vistumbler.net Http://www.TechIdiots.net Its not an error, its a undocumented feature Link to comment Share on other sites More sharing options...
zackrspv Posted July 28, 2010 Share Posted July 28, 2010 ACalcutt Posted 11 September 2009 - 09:00 PM Looks good... Is there any way to tell the graph to re-read the xml file? Just pass the flash vars to it again: $oChart1 = _CreateFusionChart("FCF_MSLine.swf", @ScriptDir & "\Example1.xml", 0, 0, 600, 300) $oChart2 = _CreateFusionChart("FCF_StackedColumn3D.swf", @ScriptDir & "\Example1.xml", 0, 300, 600, 300) sleep(3000) $oChart1 = _CreateFusionChart("FCF_MSLine.swf", @ScriptDir & "\Example2.xml", 0, 0, 600, 300, 1) And the change in function (just for example): Func _CreateFusionChart($sFusionChartFile, $sFusionChartPath, $iFusionChartL, $iFusionChartT, $iFusionChartW, $iFusionChartH, $sFusionChartBGColor = "505050", $isupdate = 0) if $isupdate = 0 then $oFusionChart = ObjCreate("ShockwaveFlash.ShockwaveFlash") $oFusionChartActiveX = GUICtrlCreateObj($oFusionChart, $iFusionChartL, $iFusionChartT, $iFusionChartW, $iFusionChartH) With $oFusionChart $sFlashVars = "&chartWidth=" & $iFusionChartW & "&chartHeight=" & $iFusionChartH & "&dataURL=" & _URIEncode($sFusionChartPath) ;MsgBox(0, "_CreateFusionChart", "FlashVars=" & $sFlashVars) ;Trace flash parms .FlashVars = $sFlashVars .Movie = @ScriptDir & "\" & $sFusionChartFile .ScaleMode = 3 ;0 showall, 1 noborder, 2 exactFit, 3 noscale .bgcolor = $sFusionChartBGColor .Loop = "True" .WMode = "transparent" .allowScriptAccess = "Always" EndWith ;of With $oFusionChart Else $sFlashVars = "&chartWidth=" & $iFusionChartW & "&chartHeight=" & $iFusionChartH & "&dataURL=" & _URIEncode($sFusionChartPath) $oFusionChart.FlashVars = $sFlashVars EndIf Return $oFusionChart EndFunc ;of Func _CreateFusionChart() Works like a charm -_-------__--_-_-____---_-_--_-__-__-_ ^^€ñ†®øÞÿ ë×阮§ wï†høµ† ƒë@®, wï†høµ† †ïmë, @ñd wï†høµ† @ †ïmïdï†ÿ ƒø® !ïƒë. €×阮 ñø†, bµ† ïñ§†ë@d wï†hïñ, ñ@ÿ, †h®øµghøµ† †hë 맧ëñ§ë øƒ !ïƒë. Link to comment Share on other sites More sharing options...
weirzhang Posted October 10, 2013 Share Posted October 10, 2013 Just pass the flash vars to it again: $oChart1 = _CreateFusionChart("FCF_MSLine.swf", @ScriptDir & "\Example1.xml", 0, 0, 600, 300) $oChart2 = _CreateFusionChart("FCF_StackedColumn3D.swf", @ScriptDir & "\Example1.xml", 0, 300, 600, 300) sleep(3000) $oChart1 = _CreateFusionChart("FCF_MSLine.swf", @ScriptDir & "\Example2.xml", 0, 0, 600, 300, 1) And the change in function (just for example):Func _CreateFusionChart($sFusionChartFile, $sFusionChartPath, $iFusionChartL, $iFusionChartT, $iFusionChartW, $iFusionChartH, $sFusionChartBGColor = "505050", $isupdate = 0) if $isupdate = 0 then $oFusionChart = ObjCreate("ShockwaveFlash.ShockwaveFlash") $oFusionChartActiveX = GUICtrlCreateObj($oFusionChart, $iFusionChartL, $iFusionChartT, $iFusionChartW, $iFusionChartH) With $oFusionChart $sFlashVars = "&chartWidth=" & $iFusionChartW & "&chartHeight=" & $iFusionChartH & "&dataURL=" & _URIEncode($sFusionChartPath) ;MsgBox(0, "_CreateFusionChart", "FlashVars=" & $sFlashVars) ;Trace flash parms .FlashVars = $sFlashVars .Movie = @ScriptDir & "\" & $sFusionChartFile .ScaleMode = 3 ;0 showall, 1 noborder, 2 exactFit, 3 noscale .bgcolor = $sFusionChartBGColor .Loop = "True" .WMode = "transparent" .allowScriptAccess = "Always" EndWith ;of With $oFusionChart Else $sFlashVars = "&chartWidth=" & $iFusionChartW & "&chartHeight=" & $iFusionChartH & "&dataURL=" & _URIEncode($sFusionChartPath) $oFusionChart.FlashVars = $sFlashVars EndIf Return $oFusionChart EndFunc ;of Func _CreateFusionChart() Works like a charm It doesn't work. Only pass the vars to Flash can't re-read the xml. Do you have other method? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now