archfiend997 Report post Posted March 31, 2010 Hello, I have followed all directions for exporting image to server disk for Ruby on Rails, as seen in the documentation and the "Readme.txt" found in the exporter folder for RoR. I can't get any of the image-exporting code to execute. Here's what I have: FILES: /app/controllers/Fusioncharts => fc_exporter_controller.rb, fc_exporter_img_controller.rb, fc_exporter_pdf_controller.rb /lib/fusioncharts/exporter => error_handler.rb, error_messages.rb, generator.rb, properties.rb, save_helper.rb /app/views/fc_exporter => error.html.erb THE XML IN MY CONTROLLER (code won't show, follow link to pastie): http://pastie.org/897745 MY VIEW (with callback JavaScript): http://pastie.org/897733 /lib/fusioncharts/exporter/properties.rb: http://pastie.org/897737 ENVIRONMENT: FusionCharts v3.1 (developer license) RMagick 2.9.0 and it's dependencies Rails 2.1.0 and it's dependencies I also have puts statements, e.g. puts "fc_exporter => index" for every action, and for every file in the /app/controllers/Fusioncharts directory. This is so I can look at the console and see if any of the code is being executed, and none of it is being executed. A PNG image of the chart should be stored in the /public/images/charts directory -- but it's not! The chart otherwise shows up on the page perfectly. If I right-click on the chart and select 'Save as PNG' the "capturing data" progress bar shows and appears to complete, but no image is being stored in /public/images/charts. The image might have been stored elsewhere, but I was unable to find it. What am I missing? Thanks in advance!! ~fiend Share this post Link to post Share on other sites
srividya_sharma Report post Posted March 31, 2010 Hi First up, I would like to thank you for posting an elaborate and clear question, with all the relevant code! Perfect forum user, I should say. Thank you. To post the code in this forum, you have to enclose the code within [ code ] [ /code ] ( without the spaces ) . Moving to the problem at hand, I could not spot any problem with the configuration or the code. Could you please check the following: 1. RMagick works for a simple code from their examples 2. ImageMagick opens images 3 Whether download is working. Change exportAction='download' in the xml and see what happens. Lets proceed based on the results of these checks. Srividya Share this post Link to post Share on other sites
archfiend997 Report post Posted April 1, 2010 (edited) Voila! I did happen to get an image saved to the server disk. For some reason, Rails got confused and couldn't find fc_exporter.rb, so I just plugged in the full path and it worked. However, the image was not produced automatically. I had to right-click and select "Save as PNG". Please tell me it is possible for the image to produced without having to manually click on "Save as PNG". There must be a way, with the web anything is possible. If this is not possible, I'm afraid FusionCharts is not for me. Do you think they would give a refund? I've only had the license for about 3 days. This is 200$ we spent for the sole purpose of server-side image rendering of the chart. If it is possible to render the image without user interaction, please enlighten me. And by the way, RHTML is not visible in the forum when I use the [ code ] IFCode shortcut. I think some of the Ruby code didn't show either. It just shows up as blank space. I prefer http://www.pastie.org anyway because of its nice color schemes and formatting. At any rate, I much appreciate the help. ~ fiend Edited April 1, 2010 by Guest Share this post Link to post Share on other sites
srividya_sharma Report post Posted April 1, 2010 (edited) Hi You can use javascript to do the work for you. As soon as the chart is rendered, in the javascript function ( FC_Rendered is the callback function, please see http://www.fusioncharts.com/docs/Contents/JS_Events.html ), you can begin the export of the chart. To initiate export from javascript, you would use code similar to the following: var chartObject = getChartFromId('myChart'); if( chartObject.hasRendered() ) chartObject.exportChart(); Please refer to: http://www.fusioncharts.com/docs/Contents/ECJavaScript.html So the user does not have to manually right click and export the chart. Hope this is what you are looking for. Srividya Edited April 1, 2010 by Guest Share this post Link to post Share on other sites
archfiend997 Report post Posted April 2, 2010 (edited) Thank you so much for the help! I am on the right track now, it appears as though the chart is auto-exported after it is rendered via JavaScript, yet I am running into a problem when the image is "drawn". I put many console output "puts" statement to find the trail of execution. Right after RMagick does it work, in the file "/lib/fusioncharts/exporter/generator.rb", the trail of execution gets caught in a loop at the bottom of the "get_image" action. Evidently an infinite loop occurs when draw.draw(img) is called, which my IDE reports is the Ruby method RDoc::diagram.draw. However, the object "draw" was created with the line draw = Magick::draw.new which leads me to believe the "draw" action is actually part of RMagick. Backtracking, I reverted my code back to how it was with the render_chart_html method, and tried right-clicking on the chart and selecting "Save as PNG", which worked perfectly before. Now it is doing just as I said, it gets locked up in an infinite loop, and the image is never actually saved. Looking at the running processes, Ruby starts using up more and more resources, and the only way to stop it is to stop the server. The browser, as it often does in this situation, does not halt and report an infinite loop. Not sure what happened, the original render_chart_html method was working fine before. I ran the tests on RMagick and ImageMagick with some sample code, and both appear to be working fine. I restarted my PC and that did not fix it either. My code, I believe, is just as it was before in my last post in this thread. Any idea what this could be? Thanks again for all the help! ~ fiend PS. the 'd' characters following the double colon '::' with RMagick::draw and RDoc::diagram should actually be a capitalized 'D' character. Even with the [ code ] IFCode shortcut, it turns ":: D" (without space) into : The [ code ] shortcut doesn't really do much! Edited April 2, 2010 by Guest Share this post Link to post Share on other sites