图表的插件已经越来越多了,连google也提供了相应的api,今天我们再来折腾一个。这个插件基于
Open Flash Chart:http://teethgrinder.co.uk/open-flash-chart/
官方文档中提到了rails相关插件,其中有一个http://pullmonkey.com/写的,能用,但是感觉代码混乱,并且每次都会include一个swfobject.js,一个图还要写个action,不爽。于是乎想动手重写。
=====================================分割线===================================
分两步走:
第一:增加view相关的helper
第二:完全从写他的Grahp代码
今天先来说说第一步
首先new 一个 plugin
ruby script/generate plugin open_flash_chart
下载 http://teethgrinder.co.uk/open-flash-chart/ 上最新的代码,将open-flash-chart.swf 和 swfobject.js 按下图放置
新增task,用于将js,swf拷贝至public目录下,这个就很简单了,就是FileUtils cp 就可以了
file:/vendor/plugins/open_flash_chart/tasks/open_flash_chart_tasks.rake
namespace :chart do
desc 'Install the Open Flash Chart components'
task :install do
require 'fileutils'
FileUtils.rm_rf(File.join(File.join(RAILS_ROOT, 'public', 'javascripts', 'open_flash_chart')))
FileUtils.cp_r(File.join(File.dirname(__FILE__), '..', 'public', 'javascripts', 'open_flash_chart'),
File.join(RAILS_ROOT, 'public', 'javascripts'))
end
end
增加javascript_include_tag,我们定义为:chart
file:/vendor/plugins/open_flash_chart/lib/open_flash_chart.rb
module ActionView::Helpers::AssetTagHelper
alias_method :old_javascript_include_tag, :javascript_include_tag
def javascript_include_tag(*sources)
main_sources, application_source = [], []
if sources.include?(:chart)
sources.delete(:chart)
sources.push('open_flash_chart/swfobject')
end
unless sources.empty?
main_sources = old_javascript_include_tag(*sources).split("\n")
application_source = main_sources.pop if main_sources.last.include?('application.js')
end
[main_sources.join("\n"), application_source].join("\n")
end
end
增加view的helper方法,用于显示图片,这样就不用再新建一个action了
file:/vendor/plugins/open_flash_chart/lib/open_flash_chart.rb
module OpenFlashChart
module Helper
def open_flash_chart(width, height, url, background_color='#FFFFFF')
uuid = UUID.random_create.to_s
<<doc
<div id="#{uuid}">
Open Flash Chart.
</div>
<script type="text/javascript">
var so = new SWFObject("/javascripts/open_flash_chart/open-flash-chart.swf", "Open Flash Chart", "#{width}", "#{height}", "9", "#{background_color}");
so.addVariable("variable","true");
so.addVariable("data", "#{url}");
so.addParam("allowScriptAccess", "sameDomain");
so.write("#{uuid}");
</script>
doc
end
alias chart open_flash_chart
end
end
这里我们采用UUID来生成DIV的ID。(关于UUID可以参考我很久以前写的一篇帖子:http://mmm.iteye.com/blog/24298)
目前还没有时间自己来写graph的代码,继续沿用pullmonkey的,我们拿到手修改之,删掉不需要的,这断没有太的意思,代码又长,就不写了。
require 和 include 我们上面的代码
file:/vendor/plugins/open_flash_chart/init.rb
require 'uuidtools'
require 'open_flash_chart'
require 'graph'
ActionView::Base.send :include, OpenFlashChart::Helper
一个新的插件就诞生了,虽然现在还是基于pullmonkey写的,但是以后有时间一定会再次折腾:)
=====================================分割线===================================
我知道很多人对怎么折腾并不感兴趣,也许会跟我说:"别啰唆,告诉我怎么用就行了,烦死了"
OK
首先请忽略上面所有的内容,安装插件
ruby script/plugin install http://martinx.googlecode.com/svn/trunk/plugins/open_flash_chart
执行task拷贝js和swf文件
rake chart:install
在你的layout中添加javascript_include_tag :chart
<%= javascript_include_tag :defaults, :chart %>
在视图中使用 open_flash_chart 或者 chart 显示图表
<%= chart width, height, url[,background]%>
来个具体的例子吧:
我们采用http://pullmonkey.com/projects/open_flash_chart/view_source_code/candle中的代码
新建controller demo
ruby script/generate controller demo index
修改:
/app/views/demo/index.html.erb
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%= javascript_include_tag :defaults, :chart %>
</head>
<body>
<%= chart 500, 250, '/demo/candle' %>
</body>
</html>
新建action :candle
file:/app/controllers/demo_controller.rb
重复的代码没什么好拷贝的,请查阅http://pullmonkey.com/projects/open_flash_chart/view_source_code/candle 上的action:candle
启动server,浏览一下 http://host:port/demo
来个截图:
下一步,下一步,彻底放弃他的graph.rb。
TO BE CONTINUE....
分享到:
- 2008-01-24 13:53
- 浏览 1963
- 评论(8)
- 论坛回复 / 浏览 (8 / 10338)
- 查看更多
相关推荐
"前端项目-chartjs-plugin-zoom.zip" 这个标题表明这是一个与前端开发相关的项目,特别提到了 "chartjs-plugin-zoom",这通常是指一个用于Chart.js库的插件,用于实现图表的缩放和平移功能。Chart.js是一个流行的...
而`chartjs-plugin-annotation`是Chart.js的一个插件,它提供了在图表上添加注释的功能,比如绘制直线、虚线、箭头、文本等,增强了图表的可解释性和交互性。 ### Chart.js基础 Chart.js是一个用纯JavaScript编写...
chartjs-plugin-zoom Chart.js> = 3.0.0的缩放和平移插件 为了获得Chart.js 2.6.0至2.9.x的支持,请使用 。 平移可以通过鼠标或手指来完成。 缩放是通过鼠标滚轮或捏合手势完成的。 用于手势识别。 文献资料 您...
chartjs-plugin-annotation.js Chart.js> = 3.0.0的注释插件 该插件需要注册。 它不能用作嵌入式插件。 对于Chart.js 2.4.0至2.9.x支持,请使用 该插件在图表区域上绘制线,框,点和椭圆。 注释适用于使用线性,...
Yaf框架提供了一套丰富的文档,即《Yaf(Yet Another Framework)用户手册》。用户手册从Yaf框架的概述开始,详细介绍了其优点和性能特点,并且逐步深入到框架安装与配置、快速开始项目、配置文件的编写、自动加载器的...
chartjs-plugin-labels Chart.js插件,用于在饼图,甜甜圈图和极地图上显示标签。 原始Chart.PieceLabel.js 演示版 下载 CDN连结 您可以将以下链接放在脚本标签中 ...
和chart.js配套使用,实现cursor
chartjs-plugin-dragsegment Chart.js的插件 增加拖动线段的功能(折线图js)。 安装 使用npm安装插件: npm install chartjs-plugin-dragsegment 在Chartjs中注册插件: import Chart from 'chart.js' ; import ...
chartjs-plugin-dragdata.js 现在与Chart.js v3兼容 :party_popper: 寻找与Chart.js <2> = 2.4.0的插件使数据点可拖动。 支持触摸事件。在线演示图表类型演示版来源酒吧-简单酒吧泡泡-简单泡泡单杠-简单单杠线-单Y...
chartjs-plugin-streaming 实时流数据的插件1.2版或更早版本需要Chart.js2.6.x。 1.3版或更高版本需要Chart.js2.7.x。 1.8版需要Chart.js 2.7.x或2.8.x。安装您可以从下载最新版本的chartjs-plugin-streaming。 通过...
chartjs-plugin-rough 插件可创建具有手绘,粗略外观的图表0.2版要求Chart.js 2.7.0或更高版本,以及 2.0.1或更高版本。安装您可以从下载最新版本的chartjs-plugin-rough。 通过npm安装: npm install chartjs-...
概述 高度可定制的插件,可在任何类型的图表的数据上显示标签。 需要 > = 2.7.0 <3> npm install 然后,从存储库根目录可以使用以下命令: > npm run build // build dist files > npm run build:dev // build and...
Chart.js是一款轻量级的JavaScript库,专门用于在Web上绘制各种统计图表,如饼图、柱状图和线图。它以其简单易用、高效和灵活性而受到开发者喜爱。这个压缩包“Chart.js-master”很可能是Chart.js的源码仓库,包含...
另一个Docker插件 产生具有Docker相关功能的jenkins hpi插件的项目。 历史 当处于半工作状态时,我并稳定它。 ,就任其发展。 文件 在 ...Jenkins Cloud Slave的完整生命周期 ... 如果你不想改变你的更新中心,您可以...
chartjs-plugin-trendline 该插件在您的图表中绘制线性趋势线。 适用于Chart.js> 2.0 安装 直接在浏览器中加载 首先加载ChartJS,然后加载将自动向ChartJS注册的插件 < script src =" ...
npm install @jjppof/chartjs-plugin-zoom-pan-select 用法: import ChartJSEnhancements from '@jjppof/chartjs-plugin-zoom-pan-select' ; let enhancer = new ChartJSEnhancements ( chartjs_object ) ; ...
chartjs-plugin-colorschemes 预定义配色方案 您可以从基于 、 和等流行工具的预定义配色方案中为您的图表选择完美的颜色组合。 此插件需要 Chart.js 2.5.0 或更高版本。 安装 您可以从下载最新版本的 chartjs-...
用于向Vue添加图表的插件 目录 目的 该插件旨在允许Vue.js开发人员将完全React性和可自定义的图表合并到他们的应用程序中。 该插件是基于D3.js JavaScript库... 通过将其他图表添加到import文件夹中并将其导入v-chart-
这个插件,名为Another Backup Plugin (ABP),设计用于增强KeePass的经典版本,提供自动备份功能,确保用户的重要密码数据库在意外丢失后能够得到恢复。 在密码管理领域,KeePass是一款广受欢迎的开源软件,它允许...
This is yet another jQuery plugin to provide fixed headers for tables. It differs in the way that it does not require any odd ...