Ext Gantt Web甘特图--自定义任务树

简介: GanttPanel中默认的设置很难满足客户多变需求,我们就针对一些常用的扩展做一个说明。       一般最常用的需求是,自定义多列,自定义行,自定义单元格等等。下面我们就分别来说明。 自定义列 GanttPanel的列配置对象,描述了表头、单元格、编辑器等重要配置。

 

GanttPanel中默认的设置很难满足客户多变需求,我们就针对一些常用的扩展做一个说明。

      一般最常用的需求是,自定义多列,自定义行,自定义单元格等等。下面我们就分别来说明。

自定义列

GanttPanel的列配置对象,描述了表头、单元格、编辑器等重要配置。一般来说, 我们提供一个列配置对象,显示了“序号”、“任务名称”、“开始日期”、“完成日期”、“进度”等比较典型的列。 但是有时我们会显示更多的任务属性,例如,任务的部门,负责人,地点等等。

自定义列非常简单,只要在配置GanttPanel的列配置对象中多添加一个单元既可。见以下例子

1.       var g = new Sch.gantt.GanttPanel({   

2.                   // Setup your static columns   

3.                   columns : [   

4.                       {   

5.                           header : 'Tasks',    

6.                           sortable:true,    

7.                           dataIndex : 'Name',    

8.                           locked : true,   

9.                           width:250,    

10.                       editor : new Ext.form.TextField()   

11.                   },{   

12.                       header : '更多列1',    

13.                       sortable:true,    

14.                       width:50,    

15.                       dataIndex : 'Other1',    

16.                       locked : true  

17.                   }   

18.               ],   

19.     

20.               taskStore : taskStore,   

21.               dependencyStore : dependencyStore   

22.   });  

运行后的软件截图如下

 

 

自定义行

自定义行的需求有很多,例如,在行中显示不同的文字颜色,定义行的背景高亮显示等等。 以下我们以在行中显示不同的文字颜色为例,说明如何定义不同的行。

关于行的配置,我们一般在viewConfig中配置。 viewConfig有一个回调函数叫做getRowClass,我们这个回调函数中返回整行的css类。具体代码如下。

1.       viewConfig: {   

2.         getRowClass: function(r, idx, rowParams, ds) {   

3.            if (Sch.util.Date.getDurationInDays(r.get('StartDate'), r.get('EndDate')) > 7 && r.get('IsLeaf')) {   

4.            return 'processed-row';   

5.           }   

6.         }   

7.       },  

以上的代码将任务时间超过7天的任务行的tr中添加了一个processed-row的类。下一步我们需要做的是在css中定义processed-row的样式。

1.       <style type="text/css">   

2.       .processed-row td{   

3.       color: red;   

4.       font-size:11px;   

5.       }   

6.       </style>

任务时间超过7天的任务行就会以字体11px,红色显示。

自定义单元格

一个单元格的显示内容,取决于两点:

l       dataIndex:如果配置了dataIndex,那么单元格默认显示行对象的dataIndex属性。

l       renderer:如果有单元格渲染器,那么单元格会忽略掉dataIndex的显示功能,而只显示从renderer函数返回的HTML字符串。

其中,单元格渲染器函数renderer是最强大的单元格内容显示工具。通过renderer函数,您可以得知是哪一行、哪一列、单元格值,并且可以结合您系统的权限,返回不同的HTML内容。返回的HTML内容是任意的,可以是图片、超链接、按钮等。下面列举一个简单的例子。

1.       {   

2.                           header : '工期',    

3.                           sortable:true,    

4.                           width:50,    

5.                           dataIndex : 'Duration',    

6.                           renderer: function(v, m, r) {   

7.                               var start = r.get('StartDate'),        

8.                                   end = r.get('EndDate');   

9.                               if (start && end) {   

10.                               var d = Math.round(Sch.util.Date.getDurationInDays(start, end));   

11.                               if (d > 0) {   

12.                                   return d + '天';   

13.                               }

14.                           }   

15.                       },    

16.                       locked : true,    

17.   },  

 

自定义编辑器

如果需要快速编辑数据,就需要使用单元格编辑器。使用单元格编辑器的代码如下:

1.       {   

2.                           header : '完成时间',    

3.                           sortable:true,    

4.                           width:90,    

5.                           dataIndex : 'StartDate',    

6.                           locked : true,   

7.                           editor : new Ext.form.DateField({   

8.                               allowBlank : false,   

9.                               format: 'Y/m/d'  

10.                       })   

11.   }  

 

单元格编辑器编辑时效果图如下:

 

编辑器只读事件

我们在平时的应用中,经常会控制甘特图的编辑权限。例如让甘特图为只读或部分只读。

控制整个甘特图只读非常简单,只需要下面一行语句就能控制。

1.       gantt.setReadOnly(true);  

     在实际的应用中,往往要控制甘特图的某些行只读或者是某一个单元格只读,这时候我们需要编写beforeedit回调函数了。请看下面的例子。

1.       listeners : {                  

2.           beforeedit : function(e) {   

3.           if(e.record.get('PercentDone')>20){        

4.               return false;   

5.           }   

6.           }   

7.       } 

 

这是一个beforeedit回调函数的简单例子。 beforeedit回调函数会在用户单击单元格之后,用户输入内容之前调用,如果返回false,则禁止在单元格中输入内容。 在以上的例子中, 任务完成百分比大于20%的任务都不能编辑。

目录
相关文章
|
安全 前端开发 API
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
475 4
|
前端开发 JavaScript 大数据
React与Web Workers:开启前端多线程时代的钥匙——深入探索计算密集型任务的优化策略与最佳实践
【8月更文挑战第31天】随着Web应用复杂性的提升,单线程JavaScript已难以胜任高计算量任务。Web Workers通过多线程编程解决了这一问题,使耗时任务独立运行而不阻塞主线程。结合React的组件化与虚拟DOM优势,可将大数据处理等任务交由Web Workers完成,确保UI流畅。最佳实践包括定义清晰接口、加强错误处理及合理评估任务特性。这一结合不仅提升了用户体验,更为前端开发带来多线程时代的全新可能。
638 1
|
Java 应用服务中间件 Apache
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
安装和配置Apache Tomcat是部署Java Web应用程序的常见任务
601 7
|
机器学习/深度学习 人工智能 Apache
人工智能平台PAI操作报错合集之alink任务可以在本地运行,上传到flink web运行就报错,如何解决
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
存储 人工智能 应用服务中间件
Web应用是一种通过互联网浏览器和网络技术在互联网上执行任务的计算机程序
【5月更文挑战第30天】Web应用是一种通过互联网浏览器和网络技术在互联网上执行任务的计算机程序
676 2
|
JavaScript 前端开发 UED
【Web 前端】如何将一个 HTML 元素添加到 DOM 树中的?
【5月更文挑战第2天】【Web 前端】如何将一个 HTML 元素添加到 DOM 树中的?
|
JavaScript PHP 开发者
PHP中的异常处理与自定义错误处理器构建高效Web应用:Node.js与Express框架实战指南
【8月更文挑战第27天】在PHP编程世界中,异常处理和错误管理是代码健壮性的关键。本文将深入探讨PHP的异常处理机制,并指导你如何创建自定义错误处理器,以便优雅地管理运行时错误。我们将一起学习如何使用try-catch块捕获异常,以及如何通过set_error_handler函数定制错误响应。准备好让你的代码变得更加可靠,同时提供更友好的错误信息给最终用户。
|
Java API 调度
Web后端Javaee企业级开发之定时任务 Springboot整合任务框架Quartz和Task详解
Web后端Javaee企业级开发之定时任务 Springboot整合任务框架Quartz和Task详解
471 0
|
关系型数据库 MySQL API
实时计算 Flink版操作报错合集之同步MySQL数据到另一个MySQL数据库,第一次同步后源表数据发生变化时目标表没有相应更新,且Web UI中看不到运行的任务,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
532 0
|
JavaScript 前端开发 架构师
Web Components:自定义元素与Shadow DOM的实践
Web Components是用于创建可重用自定义HTML元素的技术集合,包括Custom Elements、Shadow DOM、HTML Templates和Slots。通过Custom Elements定义新元素,利用Shadow DOM封装私有样式,&lt;slot&gt;元素允许插入内容。自定义元素支持事件处理和属性观察,可复用且样式隔离。它们遵循Web标准,兼容各前端框架,注重性能优化,如懒加载和Shadow DOM优化。
395 0