提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2024-05-23 10:46:34.900|阅读 16 次
概述:本文将为大家介绍DHTMLX Suite UI库中的JavaScript日历小部件和DHTMLX Gantt的实际应用场景,欢迎下载最新组件体验!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
DHTMLX Suite UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件,这些组件可以轻松组合到单个应用程序界面中。
DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理应用程序的所有需求,是完善的甘特图图表库。
在项目管理中,合理利用时间起着至关重要的作用。当在甘特图中处理大量任务时,有必要腾出时间来指定它们的持续时间。因此,用日历功能来补充它是一个好主意,这样可以更方便地进行时间管理,您可以依赖经过时间验证的DHTMLX Calendar,替代使用某些第三方工具。
在这篇博文中,您将学习使用Suite UI库中的JavaScript日历小部件和DHTMLX Gantt的场景。
在上文中(点击这里回顾>>),我们为大家介绍了“开始日期和结束日期”这个使用场景,接下来将介绍第三个场景,一起来看看吧~
最后我们想与您分享如何使用DHTMLX Suite库中的Calendar小部件在甘特图时间轴中演示任务截止日期。
这种自定义看起来很不寻常,所以让我们介绍一下它在实践中应该如何工作。在时间轴上双击截止日期元素后,可以更改截止日期或将其删除。如果给定的任务没有截止日期,而最终用户希望添加此参数,则只需双击时间轴中所需的任务行并添加截止日期。
现在,我们进入这个自定义的实现阶段。
在这种情况下,使用额外的层绘制最后期限。自定义元素使用属性进行补充,其中应该指定任务ID。
gantt.attachEvent("onGanttReady", function () { gantt.addTaskLayer(function drawPlanned(task) { if (task.deadline) { const sizes = gantt.getTaskPosition(task, task.deadline, task.deadline); const el = document.createElement('div'); el.className = 'deadline'; el.setAttribute("data-taskId", task.id); el.style.left = sizes.left + 'px'; el.style.top = sizes.top + 7 + 'px'; return el; } return false; }); });
双击鼠标的事件处理程序以以下方式添加:
window.addEventListener('dblclick', function (e) {
使用此处理程序,您可以检查是否已经打开了用于编辑截止日期的对话框窗口。如果是,则必须使用return语句终止函数。
if (document.querySelector(".deadline_editor")) { return }
接下来应该做的是获取截止日期的DOM元素或时间轴中的任务行。
const deadlineNode = e.target.closest(".deadline"); const taskRowNode = e.target.closest(".gantt_task_row"); const targetNode = deadlineNode || taskRowNode;
DOM元素的属性帮助您获取任务ID,该ID将在getTask()方法中用于获取任务对象。
const taskId = targetNode.dataset.taskId || targetNode.dataset.taskid; const task = gantt.getTask(taskId);
如果在时间轴上双击单元格后,它已经有了截止日期,那么该操作很可能不是为了更改截止日期,而是为了更改其他内容。因此在这种情况下,应该用return语句结束函数。
if (taskRowNode && task.deadline) { return }
然后您必须为一项任务设定截止日期,从任务的相应截止日期属性中获取。如果任务没有截止日期,则需要从时间轴中的单击中获取日期,为此使用getRelativeEventPosition()方法。该方法的第一个参数是click事件itself (`e`),第二个参数是时间轴的DOM元素,该方法将返回时间轴中的点击位置。接下来,使用dateFromPos()方法从单击位置获取日期。
let deadlineDate; if (task.deadline){ deadlineDate = new Date(task.deadline); } else { const clickPos = gantt.utils.dom.getRelativeEventPosition(e, gantt.$task_data); deadlineDate = gantt.dateFromPos(clickPos.x); }
下面的步骤是创建一个弹出实例并向其添加HTML内容,将有保存更改、删除截止日期的按钮,以及用于选择日期和时间的日历本身。
const popup = new dhx.Popup({ css: "deadline_editor dhx_widget--bordered" }); popup.attachHTML("<div id='form_container'></div><div id='calendar_container'></div>");
之后,日历显示在单击的元素下面。
popup.show(targetNode);
日历只有在重新绘制后才能添加到弹出框中,因此您需要将以下代码放入函数中,该函数将在弹出式重绘后启动:
dhx.awaitRedraw().then(function () { // code });
当重新绘制弹出窗口时,需要添加一个新的日历实例。在本例中,您指定容器的ID,日历应该在容器中初始化。
const calendar = new dhx.Calendar("calendar_container", { value: deadlineDate, dateFormat: gantt.config.date_format, timePicker: true, css: "dhx_widget--bordered" });
下一步是添加一个事件处理程序,该处理程序将在日历中选择日期或时间时触发,并将所选日期添加到deadlineDate变量。
calendar.events.on("change", function (date) { deadlineDate = date; });
现在是时候创建一个表单了,您可以在其中显示两个按钮。在CSS属性中,指定dhx_widget-border_bottom来在按钮下呈现框架,并在视觉上将带有按钮的表单与日历分开。在align参数中,可以设置页面宽度的对齐方式。
const form = new dhx.Form("form_container", { rows: [ { css: "dhx_widget--border_bottom", align: "evenly", cols: [ { name: "save", view: "flat", text: "Save", type: "button", }, { name: "delete", view: "link", text: "Delete", type: "button", }, ] }, ] });
最后您必须向表单添加事件处理程序,当按钮被点击时,这些处理程序将被触发。在一个事件处理程序中,您可以为任务指定截止日期值,而在另一个事件处理程序中,您应该删除截止日期属性。之后,更新任务并隐藏弹出窗口。
form.getItem("save").events.on("click", function (events) { task.deadline = deadlineDate; gantt.updateTask(task.id); popup.hide(); }); form.getItem("delete").events.on("click", function (events) { if (task.deadline) { delete task.deadline; gantt.updateTask(task.id); } popup.hide(); });
这就是使用DHTMLX Suite库中的日历小部件在甘特图时间轴中实现任务截止日期的方法。
根据上面指南提供的说明,您可以在基于DHTMLX Gantt的项目管理应用程序中有效使用DHTMLX Suite的日历小部件的三个选项。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:慧都网Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
在处理电子表格时,尤其是在专业和数据导向型环境中,正确设置 Excel 单元格内的数字格式至关重要。本文将介绍如何使用 Spire.XLS for Java 设置 Excel 单元格的数字格式,帮助轻松创建精美且结构清晰的电子表格。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢