当前位置: 首页 > news >正文

Dhtmlx Gantt教程

想实现的效果
在这里插入图片描述
插件安装:

npm i dhtmlx-gantt

使用该插件的时候,直接导入包和对应的样式即可:

import { Gantt} from "dhtmlx-gantt";
import "dhtmlx-gantt/codebase/dhtmlxgantt.css";

也可以安装试用版本,和稳定版本有点区别

npm install @dhx/trial-gantt

如果您选择安装试用版,导入路径应如下

import { Gantt} from "@dhx/trial-gantt";
import "@dhx/trial-gantt/codebase/dhtmlxgantt.css";

仿造官网给出的案例,如下

import { useEffect, useRef } from 'react';
import { gantt } from 'dhtmlx-gantt';
import 'dhtmlx-gantt/codebase/dhtmlxgantt.css';
import './index.less'const data = {// 任务数据data: [{id: 1,text: 'projectName',start_date: '01-04-2023',end_date: '05-12-2023',progress: 0.3,value: 20,},{id: 2,text: '任务1',start_date: '02-04-2023',end_date: '11-07-2023',progress: 0.6,value: 20,},{id: 3,text: '任务211',start_date: '02-04-2023',end_date: '23-07-2023',progress: 0,value: 20,}],// 任务连线数据links: [{ id: 1, source: 1, target: 2, type: '1' },{ id: 2, source: 2, target: 3, type: '0' }]
};// 左侧标题数据
const columns = [{ name: 'text', label: '项目名称',  width: 100, align: "center" },{ name: 'start_date', label: '开始时间', width: 100, align: "center" },{ name: 'start_date', label: '开始时间', width: 100, align: "center" },{ name: 'value', label: '计划工期', width: 100, align: "center" },
];const GanttView = () => {// 获取gantrt容器实例const ganttRef = useRef<any>();// 初始化ganttconst initGantt = () => {// 基础配置gantt.clearAll() // 清空之前的配置gantt.i18n.setLocale('cn'); // 设置中文gantt.config.readonly = true; // 设置为只读,否则是可以移动甘特图和连线的gantt.init(ganttRef.current); // 初始化甘特图gantt.parse(data); // 渲染数据gantt.config.order_branch = "marker";// 表头样式设置gantt.config.scale_height = 60; // 设置表头高度gantt.config.sort = true; // 点击表头可排序gantt.config.columns = columns; // 设置左侧表头数据gantt.config.scales = [ // 设置表头右侧刻度// 设置时间刻度相关属性// 显示月日用这个// { unit: 'month', step: 1, format: '%Y-%m' },// { unit: 'day', step: 1, format: '%Y-%m-%d' }// 显示年月用这个{ unit: 'year', step: 1, format: '%Y' },{ unit: 'month', step: 1, format: '%M' }];// 表内容样式设置gantt.config.row_height = 40; // 设置内容行高gantt.config.bar_height = 40; // 设置进度条高度gantt.templates.task_text = function (start, end, task) { // 自定义内容进度上的文本return '内容'};// 表内容背景颜色gantt.templates.task_row_class = function (start, end, task) {return "gantt_task111";};// tooltips样式设置gantt.plugins({tooltip: true,});gantt.config.tooltip_offset_x = 10; gantt.config.tooltip_offset_y = 30;gantt.templates.tooltip_text = function (start, end, task) {return (task.text +'<br/><span>开始:</span> ' +gantt.templates.tooltip_date_format(start) +'<br/><span>结束:</span> ' +gantt.templates.tooltip_date_format(end) +'<br/><span>进度:</span> ' +// Math.round(task.progress * 100) +'%');};// 设置连线事件gantt.config.show_links = true;}useEffect(() => {initGantt();}, []);return (<div className="ganttView"><div className='ganttContainer' ref={ganttRef}></div></div>)
};
export default GanttView;

效果
在这里插入图片描述
详细修改可参考https://blog.csdn.net/qq_53123067/article/details/140646294

相关文章:

  • kubernetes》》k8s》》证书有效期
  • 2.第二章:政策法规与标准体系
  • c++中的enum变量 和 constexpr说明符
  • 【项目篇】仿照RabbitMQ模拟实现消息队列
  • 咖啡机语音芯片方案-WTN6040FP-14S直接驱动4欧/3W喇叭-大功率输出
  • 彻底禁用windows的语音识别快捷键win+ctrl+s
  • date-picker组件的shortcuts为什么不能配置在vue的data的return中
  • 量子混合计算革命:Qiskit 3.0开启云上量子开发新时代
  • 为什么圆形在GeoJSON中被表示为多边形(Polygon)而不是圆形类型
  • 2025职业本科网络安全课程体系设计:如何培养行业急需的实战型人才?
  • 飞帆控件:在编辑模式下额外加载的库
  • 【Amazing晶焱科技高速 CAN Bus 传输与 TVS/ESD/EOS 保护,将是车用电子的生死关键无标题】
  • 【新能源科学与技术】MATALB/Simulink小白教程(二)Buck电路【新能源电力转换与控制仿真】
  • 嵌入式WebRTC音视频实时通话EasyRTC助力打造AIOT智能硬件实时通信新生态
  • 用Python解锁链上数据的奥秘:从数据分析到可视化洞察
  • 线程封装
  • Docker镜像与容器概念解析
  • 将天气查询API封装为MCP服务
  • 【官方正版,永久免费】Adobe Camera Raw 17.2 win/Mac版本 配合Adobe22-25系列软
  • 【UML建模】数据流图 绘制
  • 佩斯科夫:俄美总统会晤正在筹备中,未设定停火最后期限
  • 内蒙古镶黄旗委原书记好毕斯哈拉图履新锡林郭勒盟民政局局长
  • 甘肃省政府原副省长赵金云严重职务违法被开除公职
  • 中国围棋协会将不组队参加今年的LG杯世界棋王赛
  • 佩索阿稳定常销,陀翁不断加印,青少年喜欢黑塞
  • 上海市委财经委会议分析研判当前经济运行情况,调度部署下阶段重点工作