易度甘特图的事件对象是Edo.data.DataTable,提供了如下6个事件接口:
1.taskadd:新增任务
2.taskremove: 删除任务
3.taskedit:任务修改(这个是右键菜单中的编辑事件,并不是任务属性的更新事件!一般用来监听给一个任务面板填充任务信息)
4.taskchange:任务属性改变(任务的Name, Start等属性要改变了.不过是不是改变,如何改变,由事件监听器处理)
5.taskgradechange:升级/降级任务
6.taskmove: 移动任务
监听甘特图事件代码如下:
//监听甘特图数据对象相关事件
dataProject.on('taskadd', onTaskAdd);                       //新增
dataProject.on('taskremove', onTaskRemove);                 //删除
dataProject.on('taskedit', onTaskEdit);                     //修改
dataProject.on('taskchange', onTaskChange);                 //任务属性改变(处理数据逻辑)
dataProject.on('taskgradechange', onTaskGradeChange);       //升级/降级任务
dataProject.on('taskmove', onTaskMove);                     //任务移动调整
易度甘特图提供了官方的监听事件处理数据逻辑(如仿微软Project数据联动,自动更新摘要任务日期,自动更新父、子任务完成百分比等)的代码示例,如下:
//------------------------- 甘特图任务操作相关事件处理 ----------------------------//
function onTaskAdd(e){var tasks = dataProject.Tasks;var task = dataProject.createTask();    //创建一个空白的任务,具备了各个必要属性.var parentTask = tasks, index = 0;//如果有目标行,则自己控制如果加入: 1)加在前面; 2)加在后面; 3)加在里面,最后一个...等等   //这里的逻辑参考的是微软Project,加在选中任务的前面if(e.targetTask){parentTask = tasks.findParent(e.targetTask);index = parentTask.children.indexOf(e.targetTask);}tasks.insert(index, task, parentTask);
}
function onTaskRemove(e){if(confirm("确认删除 \""+e.task.Name+"\" 任务吗?")){  dataProject.Tasks.remove(e.task);}}
function onTaskEdit(e){alert("edit:"+e.task.Name);//你可以在这里得到要编辑的任务对象, 在一个自定义"任务面板"内显示并做修改.}
function onTaskChange(e){//status = (e.property+":"+e.value);var property = e.property, value = e.value, task = e.task, tasks = dataProject.Tasks;switch(property){case 'Duration'://默认8小时工作日, 这里简单处理, 直接在Start上加Duration的时间.var hours = parseInt(value.Duration / 8) * 24 + value.Duration % 8; var finish = task.Start.add(Date.HOUR, hours);//如果工期,日期数据是逻辑允许的, 则更新好日期数据.if(syncData(task, task.Start, finish, true) !== false){            tasks.updateRecord(task, value); }break;case 'Start':var finish = new Date(value.getTime() + (task.Finish - task.Start))syncData(task, value, finish, true);break;case 'Finish':            syncData(task, task.Start, value, true);   break;default:                   tasks.update(task, property, value);if(property == 'PercentComplete'){dataProject.syncPercentComplete(task);}break;}
}
//升级/降级
function onTaskGradeChange(e){var task = e.task;if(e.action == 'upgrade'){dataProject.upgradeTask(e.task);}else{dataProject.downgradeTask(e.task);}
}
//任务位置调整
function onTaskMove(e){dataProject.moveTask(e.task, e.targetTask, e.action);
}
注意:您也可以监听甘特图事件,编写Ajax交互代码,即时把甘特图操作结果更新到服务端,然后重新刷新甘特图。

转载于:https://blog.51cto.com/llinda2008/243829

EdoGantt甘特图中间件的事件对象相关推荐

  1. 强大js web甘特图制作之甘特图组件和数据对象

    引用CSS和JS 使用EdoGantt是一件简单轻松的事,首先我们在HTML页面内引用CSS和JS: <!--edo css--><link href="http://ww ...

  2. 基于web的甘特图,易度甘特图edogantt!

    易度甘特图发布1.6版本 EdoGantt是使用Javascript开发的.基于WEB浏览器的甘特图解决方案.可广泛应用于项目管理系统. ERP 系统.MES系统或其它的任务资源分配相关领域. Edo ...

  3. Qt 使用 kdChart 自定义甘特图

    但是和项目设计有点出入,所以自定义部分显示: 1.左边的是QTreeView,并为其添加委托,控件变化主要是通过QStandardItem->setData()来区别,这没什么说的,主要记录修改 ...

  4. Jquery 甘特图 插件 jQuery.Gantt

    http://taitems.github.io/jQuery.Gantt/ 参数 默认值 类型 说明 source null Array, String (url) 数据源:json数组或者返回js ...

  5. js通过开始时间和结束时间计算出中间的所有日期,并且转换为层级结构数组对象,用于甘特图头部日期数据

    写在前面: 先看下最终数据结构展示 time('2020-10-01', '2021-01-06') 需要根据一个开始日期和一个结束日期最后返回以下数组对象 [最外层数组里的每个对象代表了某一年的所有 ...

  6. 强大js web甘特图制作之甘特图的日历

    简单的项目日历 比如,有一个项目日历是这样的:星期1.星期3.星期5是工作日,其他是非工作日. 我们需要这样处理: //甘特图项目日历背景dataGantt.isWorkingDate = funct ...

  7. echart 时间滚动_基于 ECharts 封装甘特图并实现自动滚屏

    项目中需要用到甘特图组件,之前的图表一直基于 EChart 开发,但 EChart 本身没有甘特图组件,需要自行封装 经过一番鏖战,终于完成了... 我在工程中参考 v-chart 封装了一套图表组件 ...

  8. 易度甘特图的功能介绍和开发手册

         易度甘特图发布1.5版本! 易度甘特图是当前WEB开发中领先的甘特图解决方案. 它是使用Javascript开发的,实现了与微软 Project 甘特图一致的界面和功能,可广泛应用于 项目管 ...

  9. 日历控件如何切换语言 vant_看看甘特图控件VARCHART XGantt的亮点

    XGantt从1998年的第一个商用版本开始就致力于计划编制和项目管理方面控件的研究和开发,经过20多年的积累和沉淀,目前可为软件开发商和最终用户提供最顶级的计划编制和项目管理的控件产品,帮助用户快速 ...

最新文章

  1. 学习成长就到鸿蒙思维,庆国庆,迎中秋,鸿蒙教育享双节99元开启思维之旅!!...
  2. R语言ggplot2可视化:组合箱图(boxplot)和直方图(histogram)输出组合可视化结果
  3. IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法...
  4. 分布式缓存的面试题8
  5. 阿里云服务器CentOS6.9 nexus私服使用
  6. quartz+spring框架动态调整频率实践
  7. 2.3.3 操作系统之实现临界区进程互斥的硬件实现方法
  8. 多CPU,多核,多进程,多线程以及进程和线程的简单理解以及区别
  9. 创建一个delete触发器_基于 Django 信号机制实现类似触发器的效果
  10. 程序员面试 IT 公司,这些细节一定要注意!
  11. Unity MRTK(二)常见操作
  12. 统计自然语言处理第二版 下载
  13. Xposed 之旅 -- 微信防撤回
  14. 概率论——随机变量、概率分布函数、概率密度函数、联合概率密度
  15. 【3D目标检测】PV-RCNN:Point-Voxel Feature Set Abstraction for 3D Object Detection
  16. 深度估计 双目深度估计+单目深度估计 ONNX运行程序
  17. 股骨截骨php钢板,最新综述:股骨远端截骨治疗膝关节畸形进展(下)
  18. 如何使用计算机微信看小程序,微信电脑版怎么用小程序 在哪里打开
  19. 云南大学研究生院c语言真题,云南大学地图学与地理信息系统研究生考试科目和考研参考书目...
  20. 解决 Android N 7.0 上 报错:android.os.FileUriExposedException

热门文章

  1. ORACAL去除表中null转化为0
  2. Ext分区文件恢复工具extundelete
  3. python records库_你的第一份Python库源码阅读:records库
  4. 6174C语言编程,C语言验证6174数学问题
  5. letswave7中文教程2:脑电数据预处理-通道位置分配
  6. 拒绝穿模!新方法让虚拟偶像自由互动无障碍“贴贴”,8000网友追着点赞
  7. 用边缘计算为智能制造提速,行业的破局者是他们
  8. 华人小哥开发“CG工坊”,帮你快速入门计算机图形学 | GitHub热榜
  9. GPT-3开始探索付费使用:每月给个700块,写得比莎士比亚还多
  10. 世界首例针对特斯拉自动驾驶判罚:德国裁定Autopilot广告误导买家,特斯拉柏林工厂可能受阻...