`
ahuaxuan
  • 浏览: 640623 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

OpenFlashChart2之恶心文档

阅读更多
N久没有做界面相关的项目了,最近一个核心项目中正好有用到几个图形报表的界面,原本一直使用jfreechar,但是这种服务器生成图片,然后浏览器再请求图片,并显示,这种做法一是加大服务器压力,而是加大网络传输的带宽,降低了用户体验,比较好的方式是服务器提供元数据,客户端根据元数据生成对应的图形报表。显然,后一种模式既能有效利用客户机的资源,也减少了带宽,降低了服务器压力。提高了用户体验,唯一的不足是需要客户端安装一些插件,比如使用OpenFlashChart时需要用户按照flashplayer,不过还好,flashplayer在普通的pc机上的按照率高达95%,所以使用Flash在客户端动态生成图形报表是一个非常不错的选择。

于是去下载了OpenFlashChart,现在的最新版本是2.0,原来的1.x版本原作者将不会再维护了。从ahuaxuan短短的几小时接触中发现2.0版本更容易使用,也更容易理解。

在我看来开发任何报表无非是将自己的业务数据组装成报表需要的格式,然后调用对应的API,所以要熟悉一个报表的使用,只需要掌握常用的API和报表的数据结构就完全可以了。

下面我们分两部分来介绍,先介绍OpenFlashChart2.0所需要的常用数据结构。在OpenFlashChart2.0的包中提供了一系列的例子,根据这些例子可以将OpenFlashChart2.0所需要的常用数据结构总结如下(下面这个图是俺用powerdesigner反向工程出来的):


从这个域模型可以看出OpenFlashChart2所使用的大体的数据结构。

Xaxis表示横坐标族上的属性
Yaxis表示纵坐标族上的熟悉
Title表示图形的一些描述信息
Element表示图形中的数据
Attribute表示数据项的特点

但是很遗憾的是,OpenFlashChart的例子中有多处错误,导致代码不能正常运行,比如说在Attribute中,有很多例子中数据值用value属性,但是很遗憾,2.0中没有这个属性,应该使用的是top属性。再比如在Xaxis中的labels属性,例子中是
"x_axis":{
    "stroke":1,
    "tick_height":10,
    "colour":"#d000d0",
    "grid_colour":"#00ff00",
    "labels": ["January","February","March","April","May","June","July","August","Spetember"]
   },

但是这个是不正确的,因为labels应该这样写:
  "labels": {
   "labels": ["January","February","March","April","May","June","July","August","Spetember"]
}

由于这些不正确的文档描述,会延误使用者很多时间。

那么我们再来看看API的问题。
OpenFlashChart2的例子之一:
<script type="text/javascript">

swfobject.embedSWF(
"open-flash-chart.swf", "my_chart",
"550", "200", "9.0.0", "expressInstall.swf",
{"data-file":"gallery/bar-chart.php"} );

</script>

但是很多情况下,我们打开报表页面并不需要再次请求服务器以得到数据,而是在打开页面的时候就把数据带到页面上来,这个时候,"data-file":"gallery/bar-chart.php"的用法就不正确的了。经查,文档上有data-get这个属性,比如打开页面,我要把一个服务器传过来的数据交给swf处理,那我可以这样写:
<script type="text/javascript">

swfobject.embedSWF(
"open-flash-chart.swf", "my_chart",
"550", "200", "9.0.0", "expressInstall.swf",
{"data-get":"getData"} );

Function getData() {return xx}
</script>

但是很遗憾,虽然文档上告诉我们需要这样做,但是实际上这样做是行不通的,我们必须这样做:
swfobject.embedSWF("${request.contextPath}/media/open-flash-chart.swf", 
		"my_chart", "900", "300", "9.0.0");

        function open_flash_chart_data(){
           // return JSON.stringify(dd);
		   return dd;
        }


看上去,获取数据的方法名是有默认名字的,这些细节在OpenFlashChart上都没有得到体现。
就在这一个图形的报表的问题上文档上已经出现了多处错误,我不得不说对它的文档我真的感到很头疼

虽然用了半天的时间终于达到了ahuaxuan需要的效果:


再看看这张报表呢:


但是事实上这个过程完全可以缩短,缩短的一个重要因素就是OpenFlashChart2需要一份比较好的文档。开源的个人项目确实是不容易的,需要消耗作者大量的业余时间,但是一份好的开源项目不只是该组件的功能强大或者免费,它也需要一份好的文档,可以让使用者迅速上手。

在这一点上,django的文档是我见过的非常好的开源项目文档,目录层次清晰,索引明确,大大降低了使用django开发软件的门槛,学习django的人也可以快速上手。
好的文档对于开源软件来说太重要了,以后在做选型的时候,文档的正确和完善程度应该是我的一种重要衡量标准。

  • 大小: 102.9 KB
  • 大小: 23 KB
  • 大小: 25.2 KB
分享到:
评论
10 楼 kmy_白衣 2015-04-02  
生成的area图有时候 标签的数值和图标上看上去的数值不一致。不知道为什么会出现这种情况
9 楼 zst861205 2012-04-16  
不知道有没有试过在一个页面出两个图呢,,
8 楼 peterchao_asch 2012-02-01  
不知博主还关注ofc不?小弟有一事不明:
        function open_flash_chart_data(){ 
           return JSON.stringify(dd);  
        } 
我发现很多网上的文章都用这种形式,dd是后台传递的json类型字符串,我很矛盾,因为
JSON.stringify这个方法应该是将一个对象序列化为json格式的字符串,而dd已经是json字符串了,为什么还要stringify呢?
还有,我很认同您的观点,这个开源项目文档真的有失水准,不过ofc2这种绘图的方式还是值得推崇的!
最后感谢博主。
7 楼 ahuaxuan 2009-05-11  
chaoqun2003 写道

知道如何设置Y轴Label的颜色吗?搞了好久没弄明白...

我没有仔细看,不过未必有这个功能
6 楼 ahuaxuan 2009-05-11  
我是通过不停的尝试才找到的, 它们有的能跑,有的不能跑,需要仔细观察
5 楼 tanzek 2009-05-09  
我想请问你的这些错误是如何找到的呢?
我也遇到了类似的错误,使用网站所提供的数据示例,都没有办法成功显示图表。
想请教一下。
4 楼 chaoqun2003 2009-04-23  
知道如何设置Y轴Label的颜色吗?
搞了好久没弄明白...
3 楼 ahuaxuan 2009-04-06  
青鸟折翼 写道

用open_flash_chart_data()传递数据,第一次加载页面时可以显示,但是刷新之后数据就传递不了,请教楼主这是怎么回事

我这里没有这种情况,我修改数据库之后,刷新页面,图就变了,你的问题可能是缓存等原因造成的,看看你的数据有没有被缓存住了
2 楼 青鸟折翼 2009-04-03  
用open_flash_chart_data()传递数据,第一次加载页面时可以显示,但是刷新之后数据就传递不了,请教楼主这是怎么回事
1 楼 duker 2009-03-29  
顶你, hibernate 的成功一样是因为有质量很高的文档这个因素..
但开源软件的作者也要赚钱,有些可能是考虑靠咨询和服务收费,这种情况下,文档
不好是可以理解的..

相关推荐

    openFlashChart 实例及使用文档.rar

    2. **跨平台**:由于基于Flash,OpenFlashChart可以在大部分现代浏览器中运行,包括Windows、Mac和Linux系统。 3. **丰富的图表类型**:支持线图、柱状图、饼图、散点图、雷达图等多种图表类型,满足各种数据展示...

    java开发 openflashchart 的demo 文档

    `Graph-doc.rar`很可能是OpenFlashChart的文档,包含了详细的API参考、使用指南和示例,对于理解如何配置和定制图表非常有帮助。开发者应该仔细阅读这些文档,以便掌握各种图表元素和功能的用法。 `OpenFlashChart...

    openflashchart中文文档+demo

    2. **OpenFlashChart英文文档** 英文文档通常更为全面,可能包含更多细节和更新的内容。对于一些高级特性和最新功能,英文文档通常是获取信息的最佳来源。开发者可以通过对照中文文档和英文文档,深入理解...

    OpenFlashChart2绘图实例

    在.NET环境中,我们首先需要下载OpenFlashChart2的库文件,这些文件通常包括AS3编写的Flash组件和与之交互的服务器端代码。在提供的压缩包中,可能包含了以下内容: 1. OpenFlashChart2的Flash源代码:这些文件通常...

    Openflashchart

    2. **服务器端与客户端交互**:在ASP.NET环境下,开发者可以在服务器端生成图表数据,然后通过JSON或XML格式传递给客户端的Flash组件。Flash组件根据接收到的数据动态生成图表。 3. **图表类型**:OpenFlashChart...

    OpenFlashChart实例 + 详细讲解

    my_chart.add_dataset(new Line( [ [1, 10], [2, 20], [3, 30] ] )); my_chart.set_colours([ ["#FF0000"] ]); // 设置线条颜色 my_chart.x_axis.set_labels(["一月", "二月", "三月"]); // 设置X轴标签 my_chart.y_...

    OpenFlashChart 代码及例子

    2. **使用Java集成** 在Java环境中,OpenFlashChart可以通过Java API与后端服务进行交互,将服务器端的数据转换为图表。开发者可以创建Java对象来表示图表的各个元素,如数据系列、颜色、标签等,然后通过HTTP响应...

    openflashchart的.NET dll及js文件

    OpenFlashChart是一款强大的开源图表库,它允许开发者创建丰富的、交互式的Flash图表,适用于Web应用程序。在.NET环境中,可以通过使用其对应的DLL文件来与服务器端代码进行交互,从而生成动态图表。本文将深入探讨...

    OpenFlashChart控件示例

    2. **数据源**:OpenFlashChart可以接受XML、JSON或直接的数组作为数据源。通过这些实例,我们可以学习如何从服务器获取数据并将其转化为图表显示。 3. **自定义元素**:OpenFlashChart允许添加自定义元素,如图例...

    openflashchart

    在压缩包"open-flash-chart-1.9.7"中,你将找到OpenFlashChart的源码、文档、示例和其他资源,帮助你快速上手并开始创建自己的图表。通过深入研究这些文件,你可以了解到如何配置和定制OpenFlashChart以满足特定的...

    OpenFlashChart所需文件

    OpenFlashChart是一款强大的开源Flash图表库,用于在Web应用程序中创建高质量、交互式的图表。它以其易用性和灵活性而受到开发者的青睐,特别是在需要展示数据可视化时。在提供的压缩包"OpenFlashChart Library"中,...

    OpenFlashChart

    1.动画可交互的图表 2.简单但强大的Javascript集成 3.无需安装 4.简单易用 5.与服务器端语言独立(或说无关) 6.减少服务器端负荷 7.多种图表类型支持 8.完全免费

    OpenFlashChart组件的使用

    2. **基础图表类型**:OpenFlashChart支持多种图表类型,包括折线图、柱状图、饼图、散点图、面积图等。每种图表都有其特定的用途,例如折线图用于显示数据趋势,饼图用于展示比例关系。 3. **数据格式**:...

    openflashchart C# 示例

    2. **创建图表对象** - 在C#代码中,你需要创建一个OpenFlashChart对象实例,并设置其基本属性,如标题、颜色、背景等。 3. **添加数据系列** - 数据系列是图表的主要组成部分,根据需要选择适当的数据结构(如数...

    OpenFlashChart说明.xls

    此外,"OpenFlashChart说明.xls"这份文档可能包含更多关于如何配置和使用OpenFlashChart的具体步骤和技巧,对于初学者来说是一份宝贵的参考资料。 在实际项目中,OpenFlashChart不仅可以用于数据报告,还可以应用于...

    OpenFlashChart简单事例

    OpenFlashChart是一款强大的开源Flash图表库,用于生成各种动态、美观的数据可视化图表。这个"OpenFlashChart简单事例"很可能是教程或者示例...同时,OpenFlashChart社区和官方文档也是获取帮助和学习资源的好去处。

Global site tag (gtag.js) - Google Analytics