提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:龚雪|2023-11-02 11:02:35.290|阅读 123 次
概述:本文将为大家展示如何使用DHTMLX Gantt创建项目路线图,欢迎下载最新版产品体验~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
创建一致且引人注意的视觉样式是任何项目管理应用程序的重要要求,这就是为什么我们会在这个系列中继续探索DHTMLX Gantt图库的自定义。在本文中我们将考虑一个新的甘特图定制场景,DHTMLX Gantt组件如何创建一个项目路线图。
DHTMLX Gantt通常用于项目管理应用程序中详细的项目调度和管理,但它也可以用于构建项目路线图,如下面的例子所示。
客户要求我们基于Office Timeline Pro插件创建一个类似于swimlane PowerPoint模板的示例。
该路线图在时间轴上提供了项目目标和主要可交付成果(任务、里程碑)的高级概述,在这个演示中添加了swimlanes来可视化工作流,Swimlanes有助于清晰地将任务和里程碑划分为产品路线图的不同阶段。
但是这个演示中最值得注意的部分是团队交付的几个自定义更改,这里我们讨论的是甘特图时间轴上的刻度、任务分割(分割模式)的使用、任务栏的形状以及该显示任务栏文本内容的多个选项。
让我们在编程级别讨论这些定制的实现。
我们从甘特图顶部的刻度和标记开始,使用scales属性指定scales的配置,在scales配置的数组中包含了两个scale对象,这些对象带有unit属性,其中指定了相应的“年”和“季度”比例。
gantt.config.scales = [ { unit: "year", step: 1, date: function (date) { const markerDates = [ new Date("2025-03-28"), new Date("2025-07-05"), new Date("2025-09-25"), new Date("2025-12-20"), ]; const markers = []; markerDates.forEach(function (markerDate, index) { markers.push(`span class="scale_label" style="left: ${gantt.posFromDate(markerDate)}px;" Q${index + 1} review /span `) }) return markers.join(“”) } }, { unit: “quarter”, step: 1, date: function (date) { return “Q” + (new Date(date).getMonth() / 3 + 1) } }, ];
在较高的“年”刻度中,我们还添加了自定义标记。要做到这一点,需要使用posFromDate()方法确定标记的位置,并使用左侧CSS属性指定此位置。
现在我们进入这个场景中最有趣的部分,即在时间轴中显示具有拆分任务的项目阶段。有四个主要(父)任务(计划、策略、服务开发和商业智能),它们被划分为显示在同一行中的子任务(子任务)。
为了在特定任务中启用分割模式,我们通常需要将其渲染属性设置为split。但是当前版本的DHTMLX Gantt没有内置在不同垂直位置显示拆分任务的功能,因此我们必须想出一个定制的解决方案。对于每个任务,我们添加了level参数,其中使用从1到4的变量来表示其位置。
根据该参数的取值,task_class模板中会返回不同的类名,任务的位置由CSS样式决定(margin-top参数)。在task_class模板中,我们还指定了任务文本应该显示的位置。
gantt.templates.task_class = function (start, end, task) { const css = []; if (task.level) { css.push("level_" + task.level) } if (task.type == "skew") { css.push("skew") } if (task.text_position) { css.push("text_position_" + task.text_position) } css.push(styleFromParent(task.parent)) return css.join(” “); };
这个甘特图场景不需要创建任务依赖项和更改任务进度的能力,因此我们在此场景中禁用这些功能。
gantt.config.drag_links = false; gantt.config.drag_progress = false;
时间轴上的子任务(子分裂任务)具有多边形和八边形的形状,而不是正矩形和菱形,任务的形状可以用CSS样式修改。例如,使用clip-path属性创建多边形形式的分割任务,此属性用于在CSS中创建复杂的形状。
.gantt_task_line.gantt_bar_task .gantt_task_content { clip-path: polygon(50% 0%, 98% 0, 100% 21%, 100% 65%, 96% 98%, 2% 100%, 0 77%, 0% 43%, 4% 0); }
最后我们继续考虑显示任务标签的选项。默认情况下,在task_text模板中指定HTML内容后,会显示在任务栏中。但在我们的演示中,任务的文本内容也显示在任务栏之外。
如果需要在任务栏外显示文本,task_text模板应该包含text_position参数。在本例中,task_text模板返回一个空字符串。
gantt.templates.task_text = function (start, end, task) { if (task.text_position) { return "" } return task.text };
让我们更详细地研究一下如何在任务栏的左侧添加文本块,为此使用了leftside_text模板。该模板还包括text_position参数,但这里我们返回任务文本。
gantt.templates.leftside_text = function (start, end, task) { if (task.text_position) { return task.text } };
任务文本的位置是使用CSS样式指定的,选择器的第一部分由task_class模板返回,而它的第二部分(.gantt_side_content.gantt_left)可以从任务栏左侧的元素中获取。
按照这些说明,您可以使用DHTMLX Gantt创建与我们的示例类似的自定义项目路线图。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:慧都网本文将深入探讨HOOPS对B-Rep的支持,以及它如何为开发者和设计师提供精准且高效的三维建模体验。
.NET应用UI框架DevExpress XAF v24.2即将在近期更新,新版本官宣.NET Core / .NET增强,欢迎加入社群及时获取最新信息!
在3D工程领域,保持领先地位至关重要。随着CAD行业的不断演变,以下是我们预计在未来几年将塑造行业的五个关键趋势,以及HOOPS SDK如何助力这些变革。
VMProtect 是强软件保护系统,代码转虚拟机字节码,多编译类型,依复杂原理护码,广适多领域,保安全与知产,今天就跟随小编一起了解下该软件在多场景下的软件保护应用
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢