登录名:  密码:  验证码: 8646
设为首页 收藏本站 联系站长
2008年12月4日
农历戊子年(鼠)
十一月初七
 首页 | 最新上传 | 新闻 | 购物商场 | 招聘求职 | HTML学习 | java学习 | IT新闻 | 黑客技术 | 域名和空间 | 流量统计 | 故事小说
 GIF动画制作 | 图片素材 | 源码下载 | 书籍下载 | 视频资料 | ASP | 数据库 | PHP | 基本电脑知识 | 迅雷资源 | 兼职 | 组网工程
 英语学习 | FLASH专区 | ASP.NET | VB | 综合资源网 | 驱动下载 | 游戏下载 | 网站模板网页美工 | 韩文学习 | 论坛
 特别推荐:产品报价  漂亮网站网址  图片素材
  我要查找:  
欢迎您来这里。每天学一点,每天进步一点!
Google
 当前位置:首页 >> HTML学习  >> javascript学习
甘特图对象的JavaScript实现
来源:  发表日期:2008年1月31日 作者: 

 编辑:admin 级别: 司令 浏览次数:171
】    

问:
在项目管理中会有项目进度计划,通常有两种形式:
1.带日期的工作任务分配表。这是在WBS(工作分解结构)的给定级别上,一些活动的带有部分或全部时间日期的列表。它能够给出综合性的清单,但不够直观。
2.甘特图 使用甘特图,可使进度计划更为直观,又称横道图、条形图。

    最近装了Visio 2002中文版,其中对甘特图的处理,做得非常好。假如这是一道菜,那么做为厨子的微软大可以声称:既然是“乾坤烧鹅”,当然是内有乾坤了,其实是吃里面的荷花雀。这个荷花雀不仅吸收了烧鹅的香味,而且保温,这个时候吃,刚刚好。每个细节我都考虑到了!哼哼,食神,我想你没话可说了吧。

     言归正传:准备用个JS文件来实现一个对象--甘特图对象。使用的时候只要在网页中初始化甘特图所需数据,就能够返回显示甘特图的所有代码。数据结构和显示都参考MS Visio 2002实现。

     实现思路:
数据结构:就是一张表,包括字段:任务编号,任务名称,负责人,起止时间,依赖关系.....  (会有几个没有定义内容的字段,由用户自定义数据类型和含义)
图形显示:使用表格。其中时间轴也采用主要时间和次要时间画表格。通过设置<td>的背景色显示任务。对于任务之间的链接线,取得任务首尾坐标,用javascript来画。


附录:从MS Visio 2002甘特图中导出的文本数据:
任务号,任务名称,持续时间,开始日期,完成日期,依赖关系,资源,大纲级别,% 完成,任务注释,实际开始时间,实际完成时间,实际持续时间,用户定义的数字,用户定义的时间,用户定义的文本 1,用户定义的文本 2,用户定义的文本 3,用户定义的文本 4,用户定义的文本 5,用户定义的小数,用户定义的持续时间
1,可行性分析报告,5天,2002-5-24 8:00:00,,,,1,0,,2002-5-24 8:00:00,,,0,2002-5-24 10:40:00,张三,,,,,0,0天
2,需求分析,6天,2002-5-31 8:00:00,,1,,1,0,,2002-5-31 8:00:00,,,0,2002-5-24 10:40:00,李四,,,,,0,0天
3,概念模型,10天,2002-6-7 8:00:00,,,,1,0,,2002-6-7 8:00:00,,,0,2002-5-24 10:40:00,王五,,,,,0,0天
4,物理模型,7天,2002-6-18 8:00:00,,,,1,0,,2002-6-18 8:00:00,,,0,2002-5-24 10:40:00,赵六,,,,,0,0天
5,总体设计,8天,2002-7-1 8:00:00,,,,1,0,,2002-7-1 8:00:00,,,0,2002-5-24 10:40:00,刘七,,,,,0,0天

______________________________________________________________________________________________
答1:
不错的主意,难度不小.而且要用到fso,只能在本机运行了?要吗就运行在服务器端
______________________________________________________________________________________________
答2:
Data Binding
______________________________________________________________________________________________
答3:
可是Data Binding数据源可以使用.txt吗?
______________________________________________________________________________________________
答4:
行吧,数据源为什么不能用.txt

 

______________________________________________________________________________________________
答5:
可以,例子:
<OBJECT id="tdc" CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
<PARAM NAME="DataURL" VALUE="tdc.txt">
<PARAM NAME="UseHeader" VALUE="True">
</OBJECT>
<TABLE datasrc="#tdc" border>
<THEAD><TR><TD>文本</TD><TD>图片</TD></TR></THEAD>
<TBODY>
<TR><TD><DIV datafld="text"></DIV></TD><TD><img datafld="img"/></TD></TR>
</TBODY>
</TABLE>

tdc.txt
text,img
1aaaaa,c:\\user2.gif
2bbbb,user3.gif
3ccc,user1.gif
4dd,4.gif
______________________________________________________________________________________________
答6:
用了tdc再用dhtml时会给活活气死!tdc把会tbody(而不是tr)拷贝n份!天晓得是哪个弱智做的,我宁可用xmlhttp,自己传数据来生成表格。
______________________________________________________________________________________________
答7:
看的我头晕...
______________________________________________________________________________________________
答8:
多谢各位参与,有些问题再描述一下:
1.不涉及fso的问题。附录中的文本文件只是说明一下数据结构,画出甘特图的数据可以从数据库取出来
2.准备用个JS文件来实现一个对象--甘特图对象。也就是说我要写出一个单独的gante.js文件,来定义一个类。在HTMl文件中,初始化类为一个对象,用js代码初始化数据结构--应该是数组。然后用表格,图形的形式描述出来。
3.听大家的意见似乎有现成的东西?qiushuiwuhen(秋水无恨) ,Databinding?用什么控件来绑定数据那?有现成的控件可以用?我是准备自己写的;seabell(百合心) ,你那个是什么控件?显示图片不等于画出了甘特图呀?虽然图片比较漂亮,但是改变一下<td>的背景色也是可以的,也就是说不一定使用图片,但是要画出有参考价值的甘特图。
4.真正有兴趣的可以看看Visio 2002中是如何制作甘特图!!!它可以设置主要时间,次要时间来画横轴坐标系;可以设置开始形状、结束形状,里程碑形状,可以定制左标签、右标签。我想要全部实现。
5.重复一遍,弄懂这个问题的要求,请大家仔细观摩一下MS Visio 2002,甘特图,请大家注意菜单中的--“甘特图”一项。
______________________________________________________________________________________________
答9:
To linhaibo(美洲豹)
  下载了你整理的VML,多谢。本来是想用VML来画的,后来看了MS Visio 2002中的甘特图。我发现直接使用表格就很好。任务之间的依赖关系,可能会用到VML画图的部分。
   强烈呼吁您的参与。
______________________________________________________________________________________________
答10:
To linhaibo(美洲豹)
    下载了你整理的VML。本来打算用VML来实现。后来看到MS Visio 2002中甘特图的例子,觉得直接用表格来实现就很好。对于任务之间的依赖则可以使用VML画出来。
    强烈呼吁您的参与!
______________________________________________________________________________________________
答11:
本人弱智,看不懂?:(
高手就是高手,讲的内容就是不一般。
______________________________________________________________________________________________
答12:
本人弱智,看不懂?:(
高手就是高手,讲的内容就是不一般。
______________________________________________________________________________________________
答13:
Visio 2002我是有,不过甘特图看不懂~软件工程方面的知识比较欠缺啊-_-
______________________________________________________________________________________________
答14:
我用在项目管理,并行项目时间切面图显示,为的是心中有数
______________________________________________________________________________________________
答15:
To qiushuiwuhen(秋水无恨)
   我是想用JS实现,便于网上浏览,有没有半成品之类的东西?
______________________________________________________________________________________________
答16:
我曾经也想过做这样的js文件,是关于个性化页面内容的,但对我来说难度太大,放弃了,你做好之后能不能给我
jekingfu@163.com一份,谢谢
______________________________________________________________________________________________
答17:
我提供的那个就是Data Binding的例子啊,改变一下<td>的背景色是可以的,要实现得完整还得再考虑一下
你的数据是不是一定要从Visio2002甘特图中导出?
______________________________________________________________________________________________
答18:
To: seabell(百合心)
    不,我的数据是从数据库读取出来的。或者由用户直接输入。整个实现过程和Visio没有任何关系。只是想实现visio中划甘特图的功能。

    visio中可以直接拖动任务的起点终点,我这个就不用了,我只是根据数据来画图。
______________________________________________________________________________________________
答19:
哦,知道了,先过完周末再来细细考虑 :)
______________________________________________________________________________________________
答20:
咦,你是怎么过周末的?
______________________________________________________________________________________________
答21:
to: weidegong(weidegong)
你又怎么过呢
______________________________________________________________________________________________
答22:
我发现自己没有周末和上班的区别。并不是说自己工作太繁重以至于天天加班。而是即使平时我也很闲,反倒是周末为了感进度而变得有些忙碌。也不是周末,而是星期天的晚上是我最紧张的时刻---我正在试图改变这一点--我正在学习《人人都能成功》
______________________________________________________________________________________________
答23:
上述方式都不是最好的解决方案,下面给你解决的方式:
    1。使用XML作为数据交换文件,他可以方便进行与数据库的数据转换;
    2。使用VML作为绘图方法,他绘制的图像是完全矢量图形;
    3。使用XSLT作为数据与图像的转换机制;
    4。使用HTC作为元素的封装形式,可以反复的调用。
我现在正在使用这些技术编写类似与VISIO的WEB页面,和你需要的非常的相似。  

______________________________________________________________________________________________
答24:
下个版本我会考虑使用这些技术。
没办法,我对于XML、XSLT、HTC都不是很熟:(
______________________________________________________________________________________________
答25:
呵呵,我也提供一个思路:
使用htc(封装)和xml(数据)实现.

应使用1*1像素的透明图片,做为项目条,任务条,连线等的实体,可以很容易的控制高和宽以及颜色。
时间轴可以用表格生成,每格代表着若干时间(天,星期,月...);
图片和表格的相对位置,则是甘特图的主要部分。
至于连线,是height=1 width=x; 或 height=x width=1,经过定位的三个图片的组合;
______________________________________________________________________________________________
答26:
你这样进入编程的误区,我问你几个问题,如果你能很好的处理,你就可以开始写你的对象了:
    如何处理不同颜色的甘特图显示,使用图像和table都有很大的限制,如何处理不同颜色的条形,用户如何进行不同条形的定义?
    如何处理数据与数据库字段的快速交换,我所说的交换是指:无需复杂的转换机制和快速的执行效能?

______________________________________________________________________________________________
答27:
如何处理你所谓的对象的调用,如对对象的属性、事件、行为的调用和定义?
在做一个web对象时,你应该好好的考虑这些问题,不要把思路只局限在js上,一个好的程序员,首先应具备的是对技术的合理应用和整体的思考,一个简单的对象的编写需要考虑问题????一个甘特图的对象的编程不是简单的对象编程。
______________________________________________________________________________________________
答28:
hongfeipb(宏飞)老兄,不是在说我吧。
这种程序的结构是很重要的,我说的是基本的实现方式。
其实我去年上半年就大致实现了这个东西,不过到现在还不是很完善。
我也在考虑使用VML,希望能讨论一下。

这是我技术文档的逻辑思路部分内容:

1、程序页面和程序布局
    由甘特图的特点,页面分为时间标尺、项目条两个部分,且需要项目条可根据时间标尺的变化而变化,并反映出层次关系、前置任务联系,以及里程碑等的状态和关联等,和目录树相同每个结点都有唯一的标识和元素标识,除次以外,需要对每个结点的位置和长短做精确的定位,以及对数据有一定的容错(例如对于四个日期的关系进行判断等),程序采用了一个全局数组对项目、任务、里程碑进行了描诉,另一个数组对结点间的连接关系进行描诉,然后用一个显示函数对数组解释并显示在页面上。
2、 数据提取方式
     模块有一个RootID的属性,用于首次打开页面时要显示的甘特图根结点,程序会load带有ParentID参数的jsp形成的XML文档,然后由HTC内的解析程序组成初始数组,再由显示函数把标尺和项目条等显示在页面上。
3、 关于时间标尺
    时间标尺是在计算了所有当前项目条的时间差之后,再根据时间标尺的状态形成的,分为日标尺,月标尺,年标尺三种,实际上是一个表格,它根据计算后的显示项目条数量(控制标尺的总高度)和单位宽度(控制标尺的总宽度)形成。
4、 项目条/任务条/里程碑的显示
   首先根据单条数据的类型,确定显示的内容。
当是项目或任务时,计算开始时间,结束时间,预计开始,预计结束这四个日期的最大和最小值,然后根据单位宽度(由标尺状态决定)得到应显示的长度,再根据标尺的起始日期得到应显示的x坐标,根据当前数据的条数和标尺初始y坐标决定y坐标,然后同时计算出预计条,实际条,进度位置等,并逐个显示出来。
          当是里程碑时,根据标尺的起始日期计算得到应显示的x坐标,根据当前数据的条数得出y坐标,再根据当前结点的parent对象的子结点数量得出里程碑的竖线高度,然后显示出来。
5、 前置任务连线及里程碑关联
     当项目条显示完成后,程序将检查对结点间的连接关系进行描诉的全局数组,然后根据项目条的在页面实际位置信息,在页面生成由几个图片组成的连线和箭头,完成划连接线的过程。
______________________________________________________________________________________________
答29:
对于一个透明的1px*1px图片style="background-color:#XXXXXX"就可以改变它的颜色,height和width可以改变它的大小,即(竖线,横线,条状),对图片的定位则可以构成连线和项目条等,z-index的设置则可以令项目条上呈现进度条,状态等图标.
______________________________________________________________________________________________
答30:
chenzengxi(懒猫):
    你好!对于你的设计构思我非常的赞同,但是不要只局限在使用web的基本元素上面,甘特图的设计已经超出了web基本元素的设计范围,使用基于矢量化的VML或者是SVG是你绘制图像的最好方式。你需要注重的是XML的数据组织关系,它的数据组织关系与设计数据库如出一辙,甘特图的所有数据可以通过关联的数据库实现,需要较好的数据库设计思想,然后才是程序的基本架构,你需要详细的分析甘特图的需求,然后才是程序的编写。
   希望我的这些对你的编写有一定的好处。
______________________________________________________________________________________________
答31:
weidegong:我才来 :)
周末是难得的休闲时光,看碟子,看电视,听音乐,逛街,买书……有好多事情做哦,忙都忙不过来
前天我看了《重庆森林》和《苏州河》,觉得没有余杰推荐的那么好,只是台词的确比较经典。昨天去买了余杰战友摩罗的新作,而一本解读罗大佑音乐的书又害我多掏20块钱腰包,哎……结果玩得忘了时间,连法韩热身都没赶上
汇报完毕
______________________________________________________________________________________________
答32:
To seabell(百合心)
   呀,一句“汇报完毕”,直看得我心中发痒,听得我口吐白沫:)

《重庆森林》台词很经典,可惜演绎的...--也许深刻的人能看出深刻来,我看王家卫的片子,总是很郁闷--自个没品味。在大话西游中,“当时那把剑。。。”类似的台词被周星驰演出来,才叫经典中的经典。

  我周末敲啊敲啊,一直敲到今天早上5点才回去睡觉,这个甘特图还没来得及写那

To hongfeipb(宏飞)、chenzengxi(懒猫)
多谢两位帮助,正在进行中。
______________________________________________________________________________________________
答33:
To hongfeipb(宏飞):
对于VML和SVG我还没有仔细弄过,不过要想更好的在WEB上实现甘特图的话,确实需要这些东西,谢谢你的意见。
______________________________________________________________________________________________
答34:
希望你们搞出来后,也让我这个门外汉见识见识一下,
不知行不?
______________________________________________________________________________________________
答35:
心里痒痒,是一种高兴而又说不出来的感受;口吐白沫则是幸福得不知所以。。幸福得一塌糊涂。。。

我表达上有无不妥?夸张了一点而已:)总之是褒义的了

(编辑:网站学习网)
Google
 ·上一篇文章: 如何去除IE的菜单条,工具条,地
 ·下一篇文章: checkbox的checked属性返回的值是
 该篇文章的评论
 暂无相关评论
 姓名:  邮箱:
 内容:
                
 相关文章
 · 怎么将checkbox, radio,
 · 怎样让DIV定位在页面中间
 · 甘特图对象的JavaScript
 · 再问怎样使一个已经打开
 · js如何打开doc文件
 · JAVASCRIPT怎样清除IE缓
 · 可不可以用javascript为
 · window.open怎样把打开窗
 · 如何在父窗口调用子窗口
 · 请问怎样设计层div的属性
 · window.open最大化的问题
 最新上传文章
 · 轮番变化的图片广告脚本
 · 冯小刚导的所有电影列表
 · 互联网寒冬来临 企
 · MSI文件提取器,msi文件破
 · 如何把做好的。net代码生
 · 正确使用 cookie&n
 · ASP中DateAdd函数的用法
 · Erase 语句
 · 吉列剃须刀
 · phpmyadmin安装中"
 · 安装,启动与卸载Mysql系

服务说明 | 关于网站 | 联系我们 | 友情链接
网站学习网欢迎您!
http://www.studywebgood.com
浙ICP备07030755号 
联系邮箱:shuizhilang@126.com 如本网站侵犯了您的版权,请马上通知我.