「实战应用」如何用DHTMLX将上下文菜单集成到JavaScript甘特图中(三)

news/2024/8/26 10:53:11 标签: javascript, 甘特图, 前端, DHTMLX

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。

DHTMLX Gantt是一个高度可定制的工具,可以与项目管理应用程序所需的其他功能相补充。在本文中您将学习如何使用自定义上下文菜单来补充基于DHTMLX的JavaScript甘特图,来提高用户在任务管理中的效率。考虑到DHTMLX产品的良好互兼容性,DHTMLX Suite的Menu小部件是实现本教程目标的甘特图组件的完美补充。

DHTMLX Gantt最新正式版下载

在上文中(点击这里回顾>>)我们为大家介绍了如何完成创建/更新/删除和复制/粘贴操作,本文继续介绍如何完成更改Tree的等级、更改任务类型等操作,更多内容请持续关注我们哟~

更改Tree的等级

「实战应用」如何用<a class=DHTMLX将上下文菜单集成到JavaScript甘特图中" height="263" src="https://img-blog.csdnimg.cn/img_convert/7b117defa04383a57e019035a234b32f.png" width="1024" />

本节有助于组织项目中的层次结构,您可以通过以下方式向项目添加层次结构:

  • 选择任务并缩进,使其成为子任务,上述任务变为项目任务:
javascript">case "indent":
const prevId = gantt.getPrevSibling(task.id);
if (prevId) {
const newParent = gantt.getTask(prevId);
gantt.moveTask(task.id, gantt.getChildren(newParent.id).length, newParent.id);
newParent.type = gantt.config.types.project;
newParent.$open = true;
gantt.updateTask(task.id);
gantt.updateTask(newParent.id);
return task.id;
}
break;
  • 反之亦然——扩展一个任务,使它不再是前一个父任务的子任务:
javascript">case "outdent":
const oldParent = task.parent;
if (gantt.isTaskExists(oldParent) && oldParent != gantt.config.root_id) {
var index = gantt.getTaskIndex(oldParent) + 1;

gantt.moveTask(task.id, index, gantt.getParent(task.parent));
if (!gantt.hasChild(oldParent)) {
gantt.getTask(oldParent).type = gantt.config.types.task;
}
gantt.updateTask(task.id);
gantt.updateTask(oldParent);
return task.id;
}
break;
更改任务类型

「实战应用」如何用<a class=DHTMLX将上下文菜单集成到JavaScript甘特图中" height="250" src="https://img-blog.csdnimg.cn/img_convert/a1cb4f76241b4e7362fa414651fb88e2.png" width="1024" />

在上下文菜单的这一部分中,您可以为所选任务指定任务类型。

  • 常规任务

在这里设置“任务”类型,与前面一样,它可能是一个持续时间为零的里程碑,您应该设置任务持续时间并更新end_date参数,然后更新任务。

javascript">case "type_task":
task.type = "task";
task.duration = task.duration || 1;
task.end_date = gantt.calculateEndDate(task);
gantt.updateTask(task.id);
break;
  • 项目任务

您可以为任务设置“项目”类型并更新它。

javascript">case "type_project":
task.type = "project";
gantt.updateTask(task.id);
break;
  • 里程碑任务

您可以为任务设置“milestone”类型并更新它。

javascript">case "type_milestone":
task.type = "milestone";
gantt.updateTask(task.id);
break;
更改可见性

「实战应用」如何用<a class=DHTMLX将上下文菜单集成到JavaScript甘特图中" height="274" src="https://img-blog.csdnimg.cn/img_convert/386ed26caac86b8689aac46698d8f62e.png" width="1024" />

此上下文菜单项侧重于管理任务和相关元素的可见性,并包括以下选项:

  • Rollup(汇总)

我们从任务的rollup参数开始,项目栏上显示了卷起的元素,并提供了项目进度的快速概述。首先更改rollup参数,以便任务显示在项目栏上,更新任务及其父任务来呈现更改。

javascript">case "rollup":
task.rollup = !task.rollup;
gantt.updateTask(task.id);
gantt.updateTask(task.parent);
break;
  • 隐藏任务栏

对于此选项,您需要更改任务的hide_bar参数,来在时间轴中隐藏任务,更新任务来呈现更改。

javascript">case "hide_bar":
task.hide_bar = !task.hide_bar;
gantt.updateTask(task.id);
break;
  • 隐藏任务行

向hiddenTasks对象添加任务来隐藏整个任务行,然后更新任务来呈现更改,任务将不会显示在网格和时间轴中。

javascript">case "hide_row":
hiddenTasks[task.id] = true;
gantt.updateTask(task.id);
break;
  • 显示所有隐藏任务

清空hiddenTasks对象来显示所有先前隐藏的任务,然后执行render命令来呈现更改。

javascript">case "show_hidden":
hiddenTasks = {};
gantt.render();
break;

篇幅有限未完待续,更多内容敬请期待.......


http://www.niftyadmin.cn/n/5558149.html

相关文章

Laravel门面的艺术:打造自定义门面的终极指南

Laravel门面的艺术&#xff1a;打造自定义门面的终极指南 在Laravel框架中&#xff0c;门面&#xff08;Facades&#xff09;提供了一种简单而优雅的解决方案&#xff0c;用于访问底层的类和功能。它们允许开发者通过静态方法调用来访问底层的绑定服务&#xff0c;使得代码更加…

分布式 I/O 系统Modbus TCP 耦合器BL200

BL200 耦合器是一个数据采集和控制系统&#xff0c;基于强大的 32 位微处理器设计&#xff0c;采用 Linux 操作系统&#xff0c;可以快速接入现场 PLC、SCADA 以及 ERP 系统&#xff0c; 内置逻辑控制、边缘计算应用&#xff0c;支持标准 Modbus TCP 服务器通讯&#xff0c;以太…

初识Flutter问答学习步骤

大家好&#xff0c;我是有用就点赞 学习Flutter Flutter(UI库) Dart(语言) 编写Flutter应用的语言是&#xff1f; Dart语言 Flutter里的组件叫&#xff1f; Widget组件 Flutter是哪家公司推出的&#xff1f; Google 什么是自渲染&#xff1f;&#xff08;跨端一致性&#xf…

函数定义、合约与面向对象(以太坊solidity合约)

函数定义、合约与面向对象&#xff08;以太坊solidity合约&#xff09; 1-函数定义、构造与多态2-事件日志3-面向对象特征 1-函数定义、构造与多态 创建合约就是创建类&#xff0c;部署合约就是实例化 合约的方法还支持多态 还能使用第三方的库进行开发 整个合约部署后&…

【Python】Selenium怎么切换浏览器的页面

我们在爬网使用Selenium进行测试的时候&#xff0c;有时候想要点击浏览器里面的网址&#xff0c;跳到另一个页面上&#xff0c;获取第二个页面的内容。 可是有时候从官网进去&#xff0c;点击跳转到下一个页面以后&#xff0c;却没法定位到下一个页面的元素&#xff0c;这时候就…

彻底清理Conda环境:使用conda remove命令的终极指南

彻底清理Conda环境&#xff1a;使用conda remove命令的终极指南 在Conda环境中&#xff0c;随着时间的推移&#xff0c;可能会积累大量不再需要的包和它们的依赖项。这不仅会占用宝贵的磁盘空间&#xff0c;还可能影响环境的性能。conda remove命令是Conda提供的一个强大工具&…

基于jeecgboot-vue3的Flowable流程支持bpmn流程设计器与仿钉钉流程设计器-编辑多版本处理

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、前端编辑带有仿钉钉流程的处理 /** 编辑流程设计弹窗页面 */const handleLoadXml (row) > {console.log("handleLoadXml row",row)const params {flowKey: row.key,ver…

【ensp】防火墙------NET相关配置实验

目录 实验拓扑图&#xff1a; 实验要求&#xff1a; 实验步骤&#xff1a; 1、配置相关IP 2、在FW1创建区域 a、 创建电信和移动&#xff08;区域名&#xff09; b、将接口划入区域&#xff1a; 3、编写办公区的NAT策略 a、新建NAT策略 b、服务器映射&#xff08;移动链路&…