甘特图组件DHTMLX Gantt用例 - 如何自定义任务、月标记和网格新外观

这篇具有很好参考价值的文章主要介绍了甘特图组件DHTMLX Gantt用例 - 如何自定义任务、月标记和网格新外观。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

本文将为大家揭示DHTMLX Gantt自定义的典型用例,包括自定义任务、网格的新外观等,来展示其功能的强大性!

DHTMLX Gantt正式版下载

用例 - 新建项目外观、当前月份标记和可折叠网格

DHTMLX Gantt的默认视图显示写在条形内的项目和任务名称中,项目栏通常具有矩形形状,就像任务栏一样,并且在颜色上与任务不同。然而这并不是在DHTMLX Gantt中显示项目和任务的唯一方法,我们的甘特图库在定制方面非常灵活,并允许多种方式可视化数据。

甘特图组件DHTMLX Gantt用例 - 如何自定义任务、月标记和网格新外观,甘特图,javascript,项目管理

在这里您可以看到项目用彩色且细的线条和标签很好地描述在顶部,项目日期和持续时间标记在项目名称旁边。因此,最终用户可以很快地掌握每个项目将花费多少时间。

任务标签也位于任务栏的右侧,当前月份在时间标度上清晰地突出显示,以免在时间轴上丢失。此外,还有一个切换按钮,用于折叠网格部分,以便为甘特图腾出更多空间。

这样的自定义有助于工作流的透明性,对于中小型项目尤其有用。它还使您的甘特图更加用户友好,更容易管理,在视图与扩展的网格部分和全屏图表之间切换。

自定义指南

让我们深入研究一下DHTMLX制作的甘特图。

当前月份标记

我们从甘特图时间轴中使用的时间尺度和垂直标记开始,scales的配置通过scales属性指定:

gantt.config.scales = [
{
unit: "quarter", step: 1, format: function (date) {
const quarter = (date.getMonth() % 3) + 1;
const year = date.getFullYear();
return `<b>Q${quarter}</b> ${year}`;
}
},
{
unit: "month", step: 1, format: function (date) {
const monthName = gantt.date.date_to_str("%F")(date)
const nextDate = gantt.date.add(date, 1, "month");
if (+date <= +today && +today <= +nextDate) {
return `<div class="current_month">${monthName}</div>`;
}
else {
return monthName;
}
}
},
]

在scales配置的数组中,我们指定了两种内置的scale类型,“quarter”和“month”。在这两种比例类型的单元格中,可以显示任何值或HTML元素,但它们不会改变单元格的宽度。例如,较低刻度中的一个单元格包含一个自定义元素,该元素带有一个特定的类,用于用CSS样式为该单元格着色。该元素突出显示当前月份,在today参数中指定:

const today = new Date(2023, 05, 18)
const todayMarker = gantt.addMarker({
start_date: today,
css: "today",
});

addMarker()方法中还使用today参数来添加一个突出显示当前月份的垂直标记。在标记配置中,我们指定用于设置标记日期的Date对象和用于添加标记颜色的CSS类。由于没有在addMarker()方法中应用text参数,因此标记将显示为一条简单的线。

任务行为

有必要对与甘特图时间轴上的任务交互多说几句,最终用户可以沿着时间轴将给定的任务移动到任何特定的点,它不会捕捉到任何单元格的开始或结束。为了实现这一点,我们在甘特图中将round_dnd_dates参数的值更改为false。配置对象:

gantt.config.round_dnd_dates = false;

根据这个演示项目的需求,我们还添加了移动项目任务的功能,并禁用了任务之间的依赖关系(链接)和任务进度的显示:

gantt.config.drag_project = true;
gantt.config.drag_progress = false;
gantt.config.drag_links = false;
网格

在甘特图的网格部分,有两列。第一列包含任务的名称,第二列提供任务的时间框架。使用模板函数,您可以在网格列的单元格中添加任何文本或HTML元素:

gantt.config.columns = [
{ name: "text", label: " ", width: 300, tree: true },
{
name: "dates", label: getToggleButton(), align: "center", template: function (task) {
if (task.type == "project") {
return ""
}

return taskDatesFormat(task)
}
},
];

现在我们要关注taskDatesFormat函数,它从任务对象返回所需的字符串:

function taskDatesFormat(task) {
let startMonth = gantt.date.date_to_str("%M");
let endMonth = startMonth;
let day = gantt.date.date_to_str("%j");

if (task.start_date.getMonth() == task.end_date.getMonth()) {
endMonth = gantt.date.date_to_str("");
}
const start_date = `${startMonth(task.start_date)} ${day(task.start_date)} - `;
const end_date = `${endMonth(task.end_date)} ${day(task.end_date)}`;
return start_date + end_date;

}

这个函数的工作原理如下:

  • 它将任务开始日期转换为字符串,从而只显示月份的名称。
  • 如果一个任务在同一个月开始和结束,那么这个月的名称将只在开始日期之前显示。如果开始日期和结束日期属于不同的月份,则开始月份显示在开始日期之前,结束月份显示在结束日期之前。
  • 日期跟在月份的名称后面。

有一个特殊的切换按钮,允许折叠和展开网格部分。为了添加这个按钮,我们在label参数中指定了getToggleButton()函数。根据网格的当前状态,此函数返回不同的值。当按钮被点击时,我们改变grid_width配置中的返回值和宽度:

function toggleGrid() {
if (gridToggleText == "lt") {
gantt.config.grid_width = 80;
gridToggleText = "gt"
}
else {
gantt.config.grid_width = initialGridWidth;
gridToggleText = "lt"
}
gantt.config.columns[1].label = getToggleButton();
gantt.render();
}

或者,可以使用调整大小器更改网格大小。min_grid_column_width参数设置每个列的最小宽度,因此不能使网格小于指定的大小。因为我们的甘特图有两列,min_grid_column_width参数的值是30px,所以最小的网格宽度是60px。

gantt.config.min_grid_column_width = 30;

网格区域中的彩色圆圈在grid_folder模板中指定:

gantt.templates.grid_folder = function (task) {
return `<div style="color:${task.color}" class="project_icon">&nbsp;•&nbsp;</div>`;
};

返回的自定义元素包含一个特殊符号“•”,圆圈的颜色和大小由CSS样式指定。

对于具有子元素的任务,grid_folder模板显示,而对于其他任务,grid_file模板返回空字符串(" "):

gantt.templates.grid_file = function (item) {
return "";
};

task_row_class模板在带有子元素的任务下面隐藏了一个边框:

gantt.templates.task_row_class = function (start, end, task) {
if (task.type == "project") {
return "project_row";
}
};
任务外观

最后让我们介绍一下如何在甘特图中自定义项目和任务,由于任务栏中不应该有文本,task_text模板返回一个空字符串:

gantt.templates.task_text = function (start, end, task) {
return "";
};

在rightside_text模板的帮助下,文本标签显示在右侧:

gantt.templates.rightside_text = function (start, end, task) {
if (task.type != "project") {
return task.text;
}
};

在我们的演示中,rightside_text模板不返回任何项目任务。相反,我们使用addTaskLayer()方法,它允许在甘特图时间轴中显示任何文本或HTML元素。对于项目任务,我们在自定义taskDatesFormat函数的帮助下,以甘特图网格中使用的相同格式返回任务名称、持续时间和日期,这些值用一个特殊的点符号“•”分开,自定义元素的位置是使用getTaskPosition()方法计算的:

gantt.addTaskLayer(function (task) {
if (task.type == "project") {
const sizes = gantt.getTaskPosition(task, task.start_date, task.end_date);
const el = document.createElement('div');
const dot = `<span class="dot">•</span>`
el.innerHTML = task.text + dot + taskDatesFormat(task) + dot + task.duration + "days";
el.style.left = sizes.left + 10 + 'px';
el.style.top = sizes.top + 'px';
el.style.zIndex = 1;
el.style.marginTop = "7px";
el.style.position = "absolute";
el.style.lineHeight = "16px";
return el;
}
});

就是这样!通过这个分步指南,您可以实现相同的结果,并创建一个自定义甘特图,就像我们的用例一样。文章来源地址https://www.toymoban.com/news/detail-716258.html

到了这里,关于甘特图组件DHTMLX Gantt用例 - 如何自定义任务、月标记和网格新外观的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 甘特图工具DHTMLX Gantt 8.0抢先看, 改进的资源管理、更新的自动计划等功能,一起查阅吧

    DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求,具备完善的甘特图图表库,功能强大,价格便宜,提供丰富而灵活的JavaScript API接口,与各种服务器端技术(PHP,ASP.NET,Java等)简单集成,满足多种定制开发需求

    2023年04月08日
    浏览(61)
  • 一文搞定dhtmlx-gantt调度界面,vue下使用dhtmlxgantt进行项目甘特图模块设计开发(前端界面显示篇(1))

    前言: 本文基于在较为成熟完整的项目,进行甘特图模块开发的内容。并不涉及node相关下载、安装及vue的相关使用。 1 需安装的模块 (1) dhtmlxgantt是进行甘特图开发过程中所用到的插件库,用于跨浏览器和跨平台应用程序的功能较为齐全的Gantt图表。其祖家组件为一个JavaScr

    2024年02月11日
    浏览(52)
  • DHTMLX Gantt入门使用教程【引入】:如何开始使用 dhtmlxGantt

    DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求,具备完善的甘特图图表库,功能强大,价格便宜,提供丰富而灵活的JavaScript API接口,与各种服务器端技术(PHP,ASP.NET,Java等)简单集成,满足多种定制开发需求

    2023年04月14日
    浏览(62)
  • MATLAB | 如何使用MATLAB绘制甘特图(gantt chart)

    好久不见哈,今天带来一个不咋炫酷但是比较实用的甘特图绘制,就画一堆矩形嘛非常简单。 之所以这期工具函数放在最前面是因为比较短哈: 基本使用 设置任务开始时间,结束时间及任务编号后,调用工具函数绘图即可: 不咋好看的圆角 设置 Curvature 为0-1之间的数值即可

    2024年02月09日
    浏览(54)
  • DHTMLX JavaScript Gantt Chart 8.0.5 Crack

    8.0.5 September 1, 2023. Bugfix release Fixes Fix incorrect warnings triggered by enabling extensions via the gantt.getGanttInstance configuration Fix the incorrect work of gantt.exportToExcel() when the skip_off_time config is enabled Improvements for the Samples Viewer Comprehensive JavaScript HTML5 Gantt Chart DHTMLX Gantt is the most complete Gantt chart

    2024年02月07日
    浏览(45)
  • 「实战应用」如何用DHTMLX Gantt构建类似JIRA式的项目路线图(二)

    DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。 在web项目中使用DHTMLX Gantt时,开发人员经常需要满足与UI外观相关的各种需求。因此他们必须确定JavaScript甘特图库的自定义能力,因此本文仅

    2024年01月21日
    浏览(67)
  • vue2实现可拖拽甘特图(结合element-ui的gantt图)

      接到公司需求,要做一个可拖拽的甘特图来实现排期需求,官方的插件要付费还没有中文的官方文档可以看,就去找了各种开源的demo来看,功能上都不是很齐全,于是总结了很多demo,合在一起组成了一版较为完整的满足需求的甘特图。 1.拖拽  拖拽功能是甘特图的主要功

    2024年02月03日
    浏览(50)
  • 在vue中element ui 结合frappe-gantt实现一个简单的甘特图功能

    在vue中创建甘特图步骤请参考: https://editor.csdn.net/md/?articleId=130145782 实现效果: 2.1 下载element ui 因为我是在vue3中,所以下载element-plus 执行 npm i element-plus --save main.js 里引入element ui 2.2. 创建Gantt.vue组件 这样就可以实现一个简单的功能了。

    2024年02月12日
    浏览(40)
  • fabric.js 组件 图片上传裁剪并进行自定义区域标记

    目录 0. 前言 1. 安装fabric与引入 2. fabric组件的使用 3. 属性相关设置 4. 初始化加载 4. 方法 5. 全代码 利用fabric组件,实现图片上传、图片”裁剪“、自定义的区域标记一系列操作 先放一张效果图吧👇 我用的是全局引入方式,视情况调整  先放一个fabric.js API地址☞Api | Fabric中

    2024年01月22日
    浏览(91)
  • 甘特图/横道图制作技巧 - 任务组

    在甘特图中通过合理的任务分组可以让项目更加清晰,修改也更方便。 列如下面的甘特图一眼不太容易看清楚整体的进度。或者需要把所有的任务整体的延迟或者提前只能这样一个一个的任务调整,就比较麻烦。 通过给任务分组,看这上面整体的进度就非常清晰了。 整体的

    2024年04月14日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包