首页 > 其他分享 >甘特图组件DHTMLX Gantt用例 - 如何拆分任务和里程碑项目路线图

甘特图组件DHTMLX Gantt用例 - 如何拆分任务和里程碑项目路线图

时间:2023-11-03 11:34:50浏览次数:36  
标签:task text gantt 甘特图 用例 任务 DHTMLX 任务栏 模板

创建一致且引人注意的视觉样式是任何项目管理应用程序的重要要求,这就是为什么我们会在这个系列中继续探索DHTMLX Gantt图库的自定义。在本文中我们将考虑一个新的甘特图定制场景,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创建与我们的示例类似的自定义项目路线图。

标签:task,text,gantt,甘特图,用例,任务,DHTMLX,任务栏,模板
From: https://blog.51cto.com/u_14937210/8162809

相关文章

  • Allure企业级报告定制化自定义logo,中文标题,模块名,用例名,用例详细的测试数据如用例日志
    【自定义logo】进入Allure的安装路径,找到config目录。在config目录下,找到allure.yml文件,并打开该文件。在allure.yml文件中,添加custom-logo-plugin选项。进入Allure的安装路径,找到plugins目录下的custom-logo-plugin目录。在custom-logo-plugin目录下,找到static目录,并将自己需要展......
  • pytorch collate_fn测试用例
    collate_fn函数用于处理数据加载器(DataLoader)中的一批数据。在PyTorch中使用DataLoader时,通过设置collate_fn,我们可以决定如何将多个样本数据整合到一起成为一个batch。在某些情况下,该函数需要由用户自定义以满足特定需求。importtorchfromtorch.utils.dataimportDatase......
  • 代码 测试用例 测试用例 测试结果 26. 删除有序数组中的重复项
    给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通......
  • starUML用例图与活动图绘制及实例
    一.用例图1.starUML建立方法:工程区-->选择model右键-->选择AddDiagram中的UseCaseDiagram-->重命名该用例图 2.用例图四大组成:•参与者(Actor):是指外部用户或实体在系统中所扮演的角色(Role)。•用例:参与者在系统中执行的一个相关的动作序列,系统通过执行这一组动作序列为......
  • UML用例图
    用例图的含义由参与者(Actor)、用例(UseCase) 以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。其中用例和参与者之间的对应关系又叫做通讯关联(CommunicationAssociation)。用例图的作用用例图是需求分析中的产物,主要作用是描述参与者与和用例之间的关系,帮助......
  • pytest-yaml 测试平台-3.创建执行任务定时执行用例
    前言当项目用例编写完成后,需设置执行策略,可以用到定时任务设置每天几点执行。或者间隔几个小时执行一次。创建定时任务创建任务勾选需要执行的项目以及运行环境触发器可以支持2种方式:interval间隔多久触发和cron表达式定时执行方式1:interval触发器,间隔10分钟执行一次,......
  • Python给你一个字符串,你怎么判断是不是ipv4地址?手写这段代码,并写出测试用例【杭州多测
    ipv4地址的格式:(1~255).(0 ~255).(0 ~255).(0 ~255)1.正则表达式importredefcheck_ip(one_str):compile_ip=re.compile('^(([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$')ifcompile_ip.match(one_str):......
  • 基于测试数据、测试方法和测试执行的测试用例设计
    测试用例的重要性不言而喻,如何让测试用例设计的更好、更有效是所有测试团队需要深入研究的问题。一般来说,测试用例的设计可以分为三个方向,测试数据的用例设计、测试方法的用例设计和测试执行的用例设计。接下来我们将从这三个方面一一讲解。基于测试数据的测试用例设计边界值分......
  • 安装卸载测试用例
    安装测试用例1.   启动安装程序序号01功能描述测试自动启动安装程序用例目的测试系统是否能够自动启动安装程序测试类型安装测试前提条件程序的安装文件已经存在安装盘,电脑安装了CD-ROM或其他光驱测试方法与步骤输入插入系统的安装盘期望输出电脑能自动播放安装盘的内容测试结......
  • 申请期末加1分——业务用例,进货
    今日上台展示了,申请加1分某公司仓库管理系统的进货管理流程如下:受供应部门提供的进货单,人工审查,有错退回。无错则加上实到货量栏,输入进货临时文件,按进单户名查客户关系,找到则把客户号填入进货临时文件,否则人机结合在临时文件中确定客户号,把新客户信息登录到客户关系。从进货临时......