提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吉伟伟|2024-11-13 14:04:58.023|阅读 9 次
概述:在本教程中,您将学习如何将DHTMLX Scheduler 组件连接到 DHTMLX Suite 中的 JavaScript Chart 库,从而增强对调度应用程序任何视图中的资源工作负载的控制。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
DHTMLX Scheduler是一个全面的 UI 组件,用于处理面向业务的 Web 应用程序中复杂的调度和任务管理需求。但是,某些场景可能需要自定义解决方案。例如,如果项目的资源(即劳动力)有限,则需要确保以更高的精度分配他们的工作量。为此,应用条形图等数据可视化工具会很有用。
DHTMLX Suite允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件,这些组件可以轻松组合到单个应用程序界面中。
DHTMLX Scheduler 最新版下载 DHTMLX Suite 最新版下载
在本教程中,您将学习如何将我们的 Scheduler 组件连接到DHTMLX Suite中的 JavaScript Chart 库,从而增强对调度应用程序任何视图中的资源工作负载的控制。
DHTMLX Scheduler 与 Suite 图表库的连接指南
如果您需要在我们的JavaScript 调度库中添加一种用于管理资源工作量的辅助机制,您可以使用基于 Suite 的 Chart 小部件的条形图对其进行补充,如下面的示例所示。使用此示例,您可以更改员工的工作时间,这些更改将动态显示在图表中。此外,您还可以通过单击图表图例中的员工姓名来隐藏和显示两个小部件中特定员工的数据。
步骤 1:初始化并配置调度程序
一般来说,DHTMLX Scheduler 可以通过调度程序的标记或标头配置属性在页面上初始化。
在这篇文章中,我们使用第二种选择:
scheduler.init ( " scheduler_here " , new Date ( 2024 , 5 , 24 ) , "week" ) ;
现在,我们进行调度程序配置:
scheduler.config.first_hour = 9; scheduler.config.last_hour = 22; scheduler.config.time_step = 30; scheduler.config.cascade_event_display = true;
let owners = [ { key: 1, label: 'John' }, { key: 2, label: 'Hannah' }, { key: 3, label: 'David' } ]; scheduler.locale.labels.section_select = 'Owner'; scheduler.config.lightbox.sections = [ { name:"text", height:50, map_to:"text", type:"textarea", focus:true }, { name:"select", height:40, map_to:"owner_id", type:"select", options:owners}, { name:"time", height:72, type:"time", map_to:"auto"} ]; scheduler.templates.event_class = function(start, end, ev){ return `owner_${ev.owner_id}`; }
<style> .owner_1 { --dhx-scheduler-event-background: #394E79; --dhx-scheduler-event-color: white; } .owner_2 { --dhx-scheduler-event-background: #5E83BA; --dhx-scheduler-event-color: white; } .owner_3 { --dhx-scheduler-event-background: #C2D2E9; --dhx-scheduler-event-color: white; } </style>
接下来,我们转到 DHTMLX 图表。
步骤 2:初始化和配置图表
首先,您需要创建一个配置,在其中指定图表的类型和其他设置。使用getConfig函数:
function getConfig() { return { type: "bar", css: "dhx_widget--bg_white dhx_widget--bordered", // Set the coordinate axes in accordance with the displayed data scales: { "bottom": { text: "day", textTemplate: function(day) { return day; } }, "left":{ title: "Hours", max: 24 } }, // Configure the chart series series: [ { id: "A", value: "John", fill: "#394E79", color: "none" }, { id: "B", value: "Hannah", fill: "#5E83BA", color: "none" }, { id: "C", value: "David", fill: "#C2D2E9", color: "none" } ], // Add the chart legend configuration legend: { series: ["A", "B", "C"], form: "rect", valign: "top", halign: "right" } } }
之后,使用dhx.Chart对象构造函数初始化条形图:
const chart = new dhx.Chart ( " chart " , getConfig ( ) ) ;
步骤 3:将数据从 Scheduler 传输到 Chart
由于 Scheduler 和 Chart 使用不同的数据格式,因此您需要先转换 Scheduler 数据,然后再将其传输到 Chart。为此,您需要获取一周中每一天的所有事件,计算每个事件的持续时间(以小时为单位),并将这些小时数分配给 3 个不同的对象(您的场景中的对象数量可能不同,我们的演示中有 3 个),具体取决于这些事件分配给哪个所有者。
您需要编写自定义函数并使用部分 Scheduler API:
1.创建calculateEventsLoad()函数:
function calculateEventsLoad(){
2.通过 API 获取调度程序视图日期:
let state = scheduler.getState(); let min = state.min_date;
3.声明变量来存储计算的数据:
let tempDuration_a, tempDuration_b, tempDuration_c; let workload = [];
4.计算每个业主的工作量:
for(let i = 0; i<7; i++){ tempDuration_a = 0; tempDuration_b = 0; tempDuration_c = 0;
5.获取一周中每一天的活动:
let dayEvs = scheduler.getEvents(scheduler.date.add(new Date(min), i, "day"), scheduler.date.add(new Date(min), i+1, "day"));
6.计算每个业主的活动工作量:
dayEvs.forEach(ev => { const duration = (ev.end_date - ev.start_date) / (1000 * 60 * 60); switch (ev.owner_id) { case "1": tempDuration_a += duration; break; case "2": tempDuration_b += duration; break; case "3": tempDuration_c += duration; break; } });
7.将结果数据推送到数组中,并将该数据传递给图表组件:
workload[i] = { "workload_a": tempDuration_a, "workload_b": tempDuration_b, "workload_c": tempDuration_c, "day": scheduler.date.add(new Date(min), i, "day").getDate() }; } generateChartData(workload); }
8.创建将准备好的数据转换为图表格式并将其解析为图表的函数:
function generateChartData(workload){ // Generate and parse prepared chart's data const chartData = workload.map(el => ({ day : el.day, "John" : el.workload_a, "Hannah" : el.workload_b, "David" : el.workload_c, }) ); chart.data.parse(chartData);
调用calculateEventsLoad()函数时,您将看到包含准确数据的图表和调度程序。
步骤 4:将 Scheduler 与 Chart 同步
最后,您需要同步组件以确保在调度日历中所做的更改将立即显示在条形图中。您应该使用调度程序事件侦听器将调度程序更新同步到图表中,如下例所示:
scheduler.attachEvent("onEventChanged", function(id,ev){ calculateEventsLoad(); }); scheduler.attachEvent("onEventAdded", function(id,ev){ calculateEventsLoad(); }); scheduler.attachEvent("onEventSave",function(id,ev,is_new){ calculateEventsLoad(); return true; }) scheduler.attachEvent("onViewChange", function (new_mode , new_date){ calculateEventsLoad(); });
步骤 5:同步 Chart 和 Scheduler 中的过滤功能
条形图带有过滤功能,可以通过单击图表的图例来显示和隐藏特定员工的数据。您可以将此过滤功能与调度程序同步,以在那里过滤事件。
首先,您需要创建一个变量来存储过滤器值:
const filterOptions = new Set([1, 2, 3]);
然后,创建一个辅助函数来改变这个变量:
function setFilter(ownerID){ if(filterOptions.has(ownerID)){ filterOptions.delete(ownerID); }else{ filterOptions.add(ownerID); } scheduler.setCurrentView(); }
使用图表组件的toggleSeries事件单击图表图例中的复选框后,将调用此辅助函数:
chart.events.on("toggleSeries", function(id){ switch (id) { case "A": setFilter(1); break; case "B": setFilter(2); break; case "C": setFilter(3); break; } });
现在,您应该使用结果数组在调度程序中进行过滤:
scheduler.filter_week = function(id, event){ return filterOptions.has(parseInt(event.owner_id)); }
就是这样。按照上述步骤,您可以像我们的示例中那样使用条形图来丰富您的 JavaScript 调度程序,以更准确地管理资源工作负载。
总结
正确使用资源是任何项目中有效任务管理的关键方面。使用 JavaScript 调度日历,您必须确保资源(员工、房间、设备)以最佳方式加载任务或约会。使用附加工具(例如 Suite 的 Chart 小部件)可以更全面地了解此事,本教程提供了快速顺利完成集成所需的所有信息。
慧都21周年庆年终大促现已开启,DHTMXL全线产品参与优惠活动,联系了解活动详情。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:慧都网本文将探讨如何使用 Spire.XLS for .NET 在 C# 程序中导入 Excel 数据到数据库以及导出数据库到 Excel 文件,实现数据在 Excel 和数据库之间无缝流转。
在本文中,我们将向您展示如何逐步执行此操作,告诉您什么是 SCORM,为什么需要使用它,并列出我们测试过的最佳 SCORM 转换工具之一——iSpring Suite。
本文主要介绍如何使用Kendo UI for Angular组件的ListView来构建带有图表的仪表板,欢迎下载新版控件体验!
在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码。
一个用于构建跨浏览器Web应用和移动应用的强大JavaScript UI库。
DHTMLX Scheduler一个类似于Google日历的强大JavaScript日程安排控件。
DHTMLX Gantt针对您的解决方案的交互式JavaScript / HTML5甘特图
DHTMLX DiagramdhtmlxDiagram有很多漂亮的交互式图表,只需几行代码就能生成任何你需要的图表。
DHTMLX PivotdhtmlxPivot数据透视表能更快地对数据进行计数、总计、平均和执行许多其他操作。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢