提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2024-09-25 11:04:03.480|阅读 27 次
概述:本文将为大家介绍如何用DHTMLX Gantt集成DHTMLX Suite的工具栏部件来更方便的管理项目,欢迎下载最新版体验!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。
今天给大家分享一种方法,通过将DHTMLX Gantt集成工具栏来简化交互,为此选用了DHTMLX Suite的Toolbar(工具栏)小部件,可以与DHTMLX Gantt平滑地结合在一起。
功能齐全的甘特图是一种复杂且经过时间验证的工具,用于管理任何复杂项目中的工作流。然而掌握它的功能多样性并在实际项目中充分利用它通常需要时间,因此使用辅助控件(如工具栏)来补充甘特图是合理的,以方便其使用。在下面的示例中,您可以看到一个基于DHTMLX构建的JavaScript甘特图,其工具栏使用DHTMLX Suite库中的UI小部件实现。
工具栏允许最终用户方便地在甘特图中执行广泛的操作,例如:
现在我们可以继续在JavaScript甘特图中添加工具栏。
让我们从使用toolbarItems变量定义工具栏菜单(即工具栏图标)的外观开始,在图标字段中,为图标指定类名,这些图标取自HTML选项卡中启用的网页字体(材料设计图标)。
首先,这是一个CSS部分:
<link href="//cdnjs.cloudflare.com/ajax/libs/MaterialDesign-Webfont/4.4.95/css/materialdesignicons.css?v=6.4.2" media="all" rel="stylesheet" type="text/css">
现在,我们可以继续编写JavaScript代码了:
const toolbarItems = [ { icon: "mdi mdi-undo-variant", id: "undo" }, { icon: "mdi mdi-redo-variant", id: "redo" }, { icon: "mdi mdi-folder", id: "close" },
您可以指定工具栏元素的类型(例如,输入、日期选择器等)。否则,将使用默认元素类型。
{ id: "search", type: "input", placeholder: "Search tasks", icon: "mdi mdi-magnify", width: 150, }, { type: "datePicker", value: new Date(2025, 03, 01), label: "Start:", width: 150, id: "start_date", editable: true, mark: (date) => { if (date.getDay() === 5) return "highlight-date"; }, },
在数组的items参数中,为下拉列表指定子元素。
{ value: "Export", id: "export", items: [ { value: "Export To PDF", id: "pdf" }, { value: "Export To PNG", id: "png" },
下一步是创建工具栏的新实例,并在具有toolbar_container ID的容器中初始化它,然后用工具栏项加载数据。
const toolbar = new dhx.Toolbar("toolbar_container", { css: "dhx_toolbar--bordered" }); toolbar.data.parse(toolbarItems);
之后,您需要指定在单击按钮/输入文本/选择日期时触发的事件处理程序。
让我们从点击事件开始。
toolbar.events.on("click", function (id, e) { switch (id) {
对于展开按钮,使用eachTask()方法遍历每个任务,并调用open()方法打开任务。所有这些都在batchUpdate()方法中完成,因此更改只呈现一次。
case "open": gantt.batchUpdate(function (task) { gantt.eachTask(function (task) { task.$open = true; }) }) break;
对于折叠按钮,您可以使用close()方法进行相同的操作。
case "close": gantt.batchUpdate(function (task) { gantt.eachTask(function (task) { task.$open = false; }) }) break;
对于撤销和重做按钮,您可以使用相应的undo()和redo()方法。
case "undo": gantt.undo() break; case "redo": gantt.redo() break;
具有critical ID的元素启用和禁用highlight_critical_path配置,来添加或删除关键任务的高亮显示。
case "critical": gantt.config.highlight_critical_path = !gantt.config.highlight_critical_path; gantt.render() break; }
然后是导出选项,要导出为Excel格式,您应该使用可视化参数向导出的文件添加类似甘特图的时间轴。
case "pdf": gantt.exportToPDF() break; case "png": gantt.exportToPNG() break; case "excel": gantt.exportToExcel({ visual: true }) break; case "msp": gantt.exportToMSProject() break; case "p6": gantt.exportToPrimaveraP6() break;
接下来,您需要为输入元素添加事件处理程序。如果它是一个搜索字段,则将filterValue变量的值更改为一个新值,并调用refreshData来呈现更改。
toolbar.events.on("input", function (id, value) { if (id == "search") { filterValue = value; gantt.refreshData() }
任务在onBeforeTaskDisplay事件处理程序中进行过滤,如果返回false,则不会显示任务。在这里,您将任务名称转换为小写,并查看任务名称是否包含来自filterValue的值(也转换为小写)。
let filterValue = ""; gantt.attachEvent("onBeforeTaskDisplay", function (id, task) { if (filterValue && task.text.toLowerCase().indexOf(filterValue) == -1) { return false; } return true; });
如果输入处理程序中有另一个事件,则意味着应该更新任务的显示日期范围。
toolbar.events.on("input", function (id, value) { if (id == "search") { filterValue = value; gantt.refreshData() } else { updateDateRange() } });
在updateDateRange函数中,指定带有日期的HTML元素。
function updateDateRange() { const startDateEl = document.querySelector("#start_date"); const endDateEl = document.querySelector("#end_date");
之后,将值从字符串转换为日期。
const startDate = gantt.date.str_to_date("%d/%m/%y")(startDateEl.value); const endDate = gantt.date.str_to_date("%d/%m/%y")(endDateEl.value);
然后为gantt.config.start_date 和 gantt.config.end_date参数指定日期,现在使用render()方法来呈现更改。
gantt.config.start_date = startDate; gantt.config.end_date = endDate; gantt.render()
当元素失去焦点时触发inputBlur事件,检查ID值,如果有start_date或end_date参数,则调用updateDateRange函数。它必须在一段时间后执行,因为如果立即执行,HTML元素仍将具有旧值。
toolbar.events.on("inputBlur", function (id) { if (id == "start_date" || id == "end_date") { setTimeout(function () { updateDateRange() }, 200) } });
完成所有这些配置步骤后,启用所有插件(扩展)。
gantt.plugins({ undo: true, critical_path: true, export_api: true })
本教程中最棘手的部分已经结束。
从最后的示例中可以看到,工具栏使最终用户更容易与甘特图进行交互。使用DHTMLX Suite的工具栏小部件,您可以用最少的时间和精力将方便的工具栏与JavaScript甘特图集成在一起,DHTMLX库的高度可定制性允许实现完全符合任何项目需求的解决方案。
如需了解更多产品资讯,欢迎咨询“”!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.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@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢