提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:张莹心|2021-10-12 11:57:35.293|阅读 1009 次
概述:如果没有工作时间日历等有效的时间管理工具,很难想象一个成功的项目。在本文中,我们将展示如何在Web 项目中使用工作日历功能的有趣示例。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。它允许你创建动态甘特图,并以一个方便的图形化方式可视化项目进度。有了dhtmlxGantt,你可以显示活动之间的依赖关系,显示具有完成百分比阴影的当前任务状态以及组织活动到树结构。
如果没有工作时间日历等有效的时间管理工具,很难想象一个成功的项目。在本文中,我们将展示如何在Web 项目中使用工作日历功能的有趣示例。
DHTMLX 甘特图中工作日历背后的关键概念
首先,让我们考虑一下我们的甘特图组件如何处理日期和日历。
默认情况下,禁用work_time选项时,任务的持续时间取决于duration_unit参数和任务日期(开始和结束),而忽略工作和非工作时间。在这种情况下,就像在 MS Project 中一样,使用全日制日历。
如果启用了work_time选项并且没有其他任何更改,甘特图就会开始考虑工作时间。也就是说,根据预定义的设置,周末/节假日完全不工作,工作时间设置为早上8点到下午5点,有1小时的午休时间。
从表面上看,甘特图似乎已经开始利用工作时间,但实际上,它利用了一个适用于所有任务的全局日历。此日历的设置是通过setWorkTime方法指定的。
此外,还有机会为每个任务或任务组设置单独的工作时间设置。它是在自定义日历的帮助下实现的。这样的日历是使用createCalendar和addCalendar方法创建的。要将这个日历分配给某个任务,需要在任务对象的 calendar_id 参数中指明该日历的 ID。
综上所述,我们可以区分在您的甘特图项目中使用工作时间功能的三种方式:
利用丰富的甘特 API,您可以使用工作日历做很多有用的事情。
例如,可以将工作日历分配给特定任务、资源(如上图所示)或项目。除此之外,我们的甘特组件允许在一个日历中为特定时间段应用不同的工作时间规则,将多个日历合并为一个,并动态更改它们。
工作时间日历的用例
现在我们继续在实际案例中使用 DHTMLX Gantt 的工作时间日历功能的实际示例。
在全球日历中设置周末/假期
在 DHTMLX Gantt 中,有多种方法可以指定工作时间设置。简单来说,应用setWorkTime方法就足够了。
此方法接受单个参数 - 具有以下属性的工作时间配置对象:
该对象必须包含date和hours或day和hours属性,这允许将工作时间规则设置为特定的工作日或特定的日期。
考虑以下示例:
– 将 9 月 1 日定为假期:
gantt.setWorkTime({ date:new Date(2021,8,1), hours:false });– 为 9 月 1 日设置自定义工作时间:
gantt.setWorkTime({ date:new Date(2021,8,1), hours: ["8:00-11:00", "12:00-14:00"] });– 使用全球工作时间将周日设为工作日:
gantt.setWorkTime({ day: 0, hours: true });– 周五的自定义工作时间:
gantt.setWorkTime({ day: 5, hours: ["8:00-10:00"]
日期可以存储在服务器上,然后加载到甘特项目中。以下示例包括一个带有日期的数组。在使用此数组中的日期之前,必须将它们从String转换为Date格式。之后,可以在setWorkTime方法中使用日期。因此,从数组中取出非工作日并应用于所有任务。
在自定义日历中设置周末/假期
首先,让我们考虑如何在 DHTMLX Gantt 中生成自定义日历。您可以使用addCalendar方法来做到这一点:
gantt.addCalendar({ id:"custom", // optional worktime: { hours: ["8:00-17:00"], days: [ 1, 1, 1, 1, 1, 1 ,1] } });之后,您可以像使用全局日历一样为此日历设置自定义假期:
const calendar = gantt.getCalendar("custom"); calendar.setWorkTime({ date:new Date(2021,8,1), hours:false });此类日历可以分配给任何任务:
{ "id":1, "calendar_id":"custom", "text":"Task #1", "start_date":"02-04-2019", "duration":"8", "parent":"1" }或者到一个资源:
gantt.config.resource_calendars = { //[resourceId]: calendarId 1: "custom" };
自定义日历可以从现有日历中获取设置,您可以将现有日历传递给gantt.getCalendar方法,该方法将创建您已有日历的精确副本。
之后,您可以按照自己喜欢的方式自定义新日历:const calendarId = gantt.addCalendar(gantt.getCalendar("global")); const calendar = gantt.getCalendar(calendarId); calendar.setWorkTime({ date:new Date(2021,8,1), hours:false });最后,您可以使用合并功能使用gantt.mergeCalendars方法将多个日历合并为一个。
const johnCalendarId = gantt.addCalendar({ worktime: { hours: ["7:00-11:00", "12:00-16:00"], days: [1, 1, 1, 1, 1, 0, 0] } }); const mikeCalendarId = gantt.addCalendar({ worktime: { hours: ["8:00-12:00", "13:00-17:00"], days: [0, 1, 1, 1, 1, 1, 0] } });
// get common work times of both: const joinedCalendar = gantt.mergeCalendars([ gantt.getCalendar(mikeCalendarId), gantt.getCalendar(johnCalendarId) ]); // the result is equivalent to the following: // worktime: { // hours: ["8:00-11:00", "13:00-16:00"], // days: [0, 1, 1, 1, 1, 0, 0] // }
此方法在我们的dynamic_resource_calendars配置的引擎盖下使用 。这允许您创建日历,将多个分配的资源日历的设置组合在一起,显示所有分配的资源同时可用。
该gantt.mergeCalendars方法也可以用来管理自定义日历的周末/假期。您可以创建一个包含假期和休息日的日历,并将其集成到您创建的任何工作时间日历中。
在下面的示例中,您可以看到基于全局日历和另一个自定义日历的自定义工作日历。默认情况下应用于所有任务的全局日历的设置不会更改。全局日历与自定义日历合并,其中设置取自具有非工作日的数组。生成的自定义日历从两个日历继承工作时间设置(即所有非工作日)。
在日历中突出显示偶数星期六
有时,可能有必要在视觉上强调遵循某些条件的某些日子或时间段。下面的示例显示了如何在日历中突出显示偶数星期六。该isWorkTime功能可以帮助找出一个特定的日期是否非工作和检查更复杂的情况,如一周的奇数和偶数天。使用task_class突出显示必要的天数。为甘特时间轴中的所有单元格调用此模板并返回类名。使用此模板,可以自定义 CSS 规则中的单元格。
从 MS Project 导入工作时间
与 MS Project 的兼容性是一个非常重要的 DHTMLX 甘特图特性,受到许多开发人员的喜爱。它允许您导入/导出与您的项目相关的各种材料,包括工作时间日历。此示例显示如何从导入的 MS Project 文件中设置工作时间设置。这种流行的软件工具通常会在其文件中添加工作日历。在 MS Project 文件的导入过程中,工作时间设置与任务数据一起出现。这些设置的应用方式与第一个示例中讨论的方式相同。
从 Excel 导入工作时间设置
由于 DHTMLX Gantt 还支持从 Excel 导出/导入,因此您可以使用此功能使用通用 Excel 文件存储和加载工作时间设置。在服务端进行转换后,数据以JSON格式发送到甘特图页面。您可以从 JSON 格式的数组中获取所需的日期,并使用setWorkTime方法指定工作时间设置。
管理工作时间
在 DHTMLX Gantt 中,可以启用/禁用工作时间,下面的示例显示了如何完成。每个任务都有三个日期参数—— start_date、end_date和duration。甘特图将所有这些参数用于任务,但end_date具有更高的优先级。更改工作时间设置后,日期通常保持不变。因此,任务的持续时间将发生变化。为了保持工期不变,必须根据任务工期重新计算结束日期。
想要购买dhtmlxGantt正版授权,或了解慧都APS系统请点击
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢