当前位置: 首页 > news >正文

使用JavaScript日历小部件和DHTMLX Gantt的应用场景(一)


DHTMLX Suite UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件,这些组件可以轻松组合到单个应用程序界面中。


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

在项目管理中,合理利用时间起着至关重要的作用。当在甘特图中处理大量任务时,有必要腾出时间来指定它们的持续时间。因此,用日历功能来补充它是一个好主意,这样可以更方便地进行时间管理,您可以依赖经过时间验证的DHTMLX Calendar,替代使用某些第三方工具。

在这篇博文中,您将学习使用Suite UI库中的JavaScript日历小部件和DHTMLX Gantt的场景。

开始日期的甘特图内联编辑器中的日历​​​​​​​

我们从向甘特图网格中的内联编辑器添加JavaScript日历开始,内联编辑器附带了多种预定义的编辑器类型。如果您需要一些特殊的东西(例如日历)来快速设置任务的开始日期和时间,则有必要创建自定义内联编辑器。

让我们更详细地描述一下如何做到这一点。

第一步是在show()方法中创建HTML元素,这些元素将在打开自定义编辑器时显示。

gantt.config.editor_types.custom_editor = { show: function (id, column, config, placeholder) { const html = `<div class='dhx_calendar_container'> <input type="text" id="calendar" readonly>set_value: function (value, id, column, node) { const task = gantt.getTask(id)

之后,您需要创建一个新的calendar对象:

const calendar = new dhx.Calendar(null, { value: task.start_date, dateFormat: "%d/%m/%y %H:%i", timePicker: true, css: "dhx_widget--bordered" });

在第一个参数中,指定应该显示日历的容器。您应该使用null来创建一个新的calendar对象,但不要将其添加到页面中,第二个参数是一个具有日历配置的对象。

value参数显示在打开日历时将突出显示的日期。

value: task.start_date

接下来是日期格式:

dateFormat: "%d/%m/%y %H:%i",

如果您希望在日历中不仅可以设置日期,还可以设置时间,可以通过添加timePicker参数(将其值设置为true)来实现。

timePicker: true

CSS参数指定日历将接收的类的名称。

css: "dhx_widget--bordered"

我们文档的这一部分给出了当使用特定类名时将被添加的CSS类列表。

然后创建弹出对象并在其中添加日历。

const popup = new dhx.Popup(); popup.attach(calendar);

之后您必须找到一个输入元素,并将从日历中获得的日期值添加到该元素。

const dateInput = document.querySelector("#calendar"); dateInput.value = calendar.getValue();

因此在单击该元素之后,将显示带有日历的弹出窗口。

dateInput.addEventListener("click", function () { popup.show(dateInput); });

在日历中选择日期或时间时,输入元素中的值也将被更新。

calendar.events.on("change", function (date) { dateInput.value = calendar.getValue(); // uncomment to hide the popup with calendar after changing the date // popup.hide(); });

在当前的情况下,用户可以选择一个日期,然后通过选择另一个日期来修改它,或者在Calendar弹出窗口保持显示的同时设置时间。要保存输入的值,需要单击甘特图中的空白区域。结果,内联编辑器将关闭,并保存值。

如果使用示例中的popup.hide()方法取消注释行,则在更改日期或时间后立即隐藏带有日历的弹出窗口,但内联编辑器本身将保持打开状态。要应用更改,还需要单击甘特图中的空白区域。

在get_value()方法中,从输入元素获取日期值,将该值从字符串转换为日期对象,然后为任务指定一个新的日期。

get_value: function (id, column, node) { const newValue = node.querySelector("input").value; const dateValue = gantt.date.str_to_date("%d-%m-%y %H:%i")(newValue) return dateValue; },

在is_changed()方法中,检查当前日期是否与打开内联编辑器时显示的日期不同。

is_changed: function (value, id, column, node) { return +value != +this.get_value(id, column, node); },

这些是在将DHTMLX Suite的Calendar添加到DHTMLX Gantt内联编辑器时必须考虑的关键技术特性。

未完待续,篇幅有限,下期继续讲~

http://www.cnnetsun.cn/news/3482473.html

相关文章:

  • CANN/Ascend C TPipe-TQue编程原理
  • TIDE与深度学习框架集成:如何在PyTorch/TensorFlow项目中应用
  • 如何快速搭建农业智能问答系统:Agriculture_KnowledgeGraph全指南
  • 日程安排组件DHTMLX Scheduler v7.0新版亮点 - 拥有多种全新的主题
  • pyannote.audio 说话人日志技术深度解析:架构设计与性能优化实践
  • 小米智能家居与Home Assistant的终极集成方案:实现跨生态智能控制
  • maven_crate:解决Maven依赖下载慢、网络隔离问题的终极武器
  • 知微传感Dkam系列3D相机PCL应用篇:PCL读入3D相机含颜色的点云并显示
  • Local RAG与LlamaIndex深度集成:高级RAG模式实现指南
  • Mayan EDMS完整功能解析:为什么它是最先进的文档管理系统
  • 数字人推荐:企业服务商和商用工具怎么选
  • 3分钟快速上手ncmdump:免费解密网易云音乐NCM格式的完整指南
  • 终极SSD目标检测指南:从零开始掌握PyTorch实现
  • Unity URP能量护盾Shader实现:从菲涅尔原理到动态涟漪效果
  • 当AI编码助手学会工程思维:agent-skills如何重塑开发者的工作方式
  • Golang实现JWT认证与Casbin权限控制实战
  • 多项分布 (Multinomial Distribution) 的极大似然估计
  • browser-agent测试策略:确保你的AI代理稳定可靠的完整方案
  • 《1688开放平台基础API真免费?QPS 10的限制怎么破(附GuardedClient源码)》
  • YOLOv8固体废物识别系统:从环境配置到功能测试完整指南
  • Spring Cloud Gateway集成Sa-Token实现微服务鉴权
  • AI Agent 开发实战(02):Claude Code 接入 DeepSeek
  • oec-hardware安全测试:硬件安全兼容性验证的完整指南 [特殊字符]️
  • SSE实时通信深度解析:连接数限制、断线重连与消息去重实战
  • RT-Thread PIN设备驱动开发与GPIO控制实践
  • Win Application Framework (WAF)消息与对话框服务:MessageService与FileDialogService
  • Path of Building PoE2:流放之路2角色构建计算引擎技术深度解析
  • 如何快速部署Ogar服务器?Linux与Windows系统完整教程
  • 如何快速搭建前后端分离博客?blog45/blog新手入门教程
  • 5个实用案例带你精通react-gsap-enhancer:从悬停效果到复杂动画序列