使用Open Flash Chart同时显示多图遇到的问题

本文探讨了在使用OpenFlashChart插件时遇到的问题,即在同一View中同时显示柱状图和饼图时,只有一个图表能够正常显示。文中详细记录了尝试解决此问题的过程,包括修改插件代码以确保每个图表都有唯一的ID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在应用中,我打算使用Open Flash Chart来处理统计数据的图形化显示。当我把一个柱状图和一个饼图放在同一个View里同时显示的时候,只有排在后面(以View中的代码顺序)Chart会在浏览器中正确出现。我看了一下Open Flash Chart官方网站上关于多个Chart在一个View里显示的教程,发现这个问题有一个叫Nick的人遇到过,也向教程的编写者提出来了。
产生这个问题的原因是:Chart在View中是放在一个Div里显示的,而该插件使用的是将当前系统时间进行Hash后,作为Div的ID的做法。当处理器速度较快时,两个Chart的Hash值是一样的,也就是两个Div的ID是一样的,浏览器自然显示后面一个Div的内容。作者修正了算法,在进行Hash的时候使用了Timw.now+url的做法,该办法解决了Nick的问题,但我使用的是修正后的插件,这个问题仍然存在。
于是我继续修改插件中算法,在生成用于Hash的原始字符串里加入随机数,甚至加入一个消耗时间的循环,但问题依然存在。(不知道是不是我的机器处理器真的足够快 :cry: ) 其间我把WEBrick关掉了重新启动了一次,为的是让服务器重新装入代码运行(包括插件),但不知道此方法是否能保证插件代码被重新装载运行?!
请教Javaeye的各位达人,有什么办法可以解决这个问题。谢谢!

def open_flash_chart_object(width, height, url, use_swfobject=true, base="/")
url = CGI::escape(url)
# need something that will not be repeated on the same request
# need the gsub at the end to first get the last newline (which could simply be done with chomp)
# and second get the newlines in the middle of the encoded string
special_hash = Base64.encode64(Time.now.to_f.to_s + url.to_s).gsub(/\n/,"")
obj_id = "chart_#{special_hash}" # some sequencing without all the work of tracking it
div_name = "flash_content_#{special_hash}"
protocol = "http" # !request.nil? ? request.env["HTTPS"] || "http" : "http"

return %[
<div id="#{div_name}"></div>
(以下省略部分代码)
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值