LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

Frappe Gantt,一款神奇的 JavaScript 开源甘特图库

admin
2024年10月12日 10:26 本文热度 118

和大家分享一款神奇的 JavaScript 开源甘特图库 —— Frappe Gantt。为 Web 应用提供项目规划的可视化工具。它以用户友好的界面和灵活的配置,助力项目团队跟踪进度和管理资源。支持拖动、缩放和任务依赖设置,易于集成并支持多语言,适合国际化使用。

Github Star 4.5k[1]

Frappe Gantt 是什么?

Frappe Gantt 是一个开源的 JavaScript 库,用于在 Web 应用中生成和管理甘特图。它提供了丰富的功能,如交互式操作、任务依赖关系、时间刻度等,并且易于集成到不同的 Web 应用中。Frappe Gantt 支持多种语言,并允许用户自定义颜色、列、时间跨度以适应不同项目的需求。它适用于项目管理、软件开发、事件规划和生产调度等多个场景,帮助用户有效地组织和监控项目进度。

核心特点

  • • 交互式操作:用户可以通过拖动、缩放等方式对甘特图进行操作,以便更好地展现项目进度。

  • • 任务依赖关系:支持设置任务之间的依赖关系,以便更好地管理项目进度。

  • • 时间刻度:支持按天、周、月等不同时间跨度进行刻度展示,方便用户选择合适的时间范围。

  • • 美观易用:采用现代 UI 设计,支持多种样式和主题,易于使用和集成到现有项目中。

  • • 多语言支持:方便国际化应用。

  • • 开源社区支持:由于其开源性质,有一个活跃的开发者社区,提供持续的更新和支持。

快速开始

1. 创建项目 

按照惯例,使用 Vite 创建一个纯 JavaScript 项目。并运行命令安装 Frappe Gantt

npm install frappe-gantt --save

目录结构如下:

在 html 引入 main.js 并添加 DOM 元素。

<body>
    <div id="app"></div>
    <script type="module" src="/src/main.js"></script>
</body>

2. 配置 Frappe Gantt

在 JavaScript 文件中引入 Frappe Gantt 注意别忘了引入样式,并创建容器元素、配置甘特图数据、初始化 Gantt 对象,并将其附加到容器元素上。

// 导入样式文件,为甘特图提供必要的CSS样式
import './style.css'
import 'frappe-gantt/dist/frappe-gantt.css'
// 导入Gantt类,这是创建甘特图的主要类
import Gantt from 'frappe-gantt'
// 向页面中添加一个SVG元素,这个元素将作为甘特图的容器
document.querySelector('#app').innerHTML = `
  <svg id="gantt"></svg>
`

// 定义任务数组,每个任务包含id、名称、开始日期、结束日期、进度和依赖关系
const tasks = [
  {
    id'任务一'// 任务的唯一标识符
    name'搜索资料'// 任务的名称
    start'2024-07-21'// 任务的开始日期
    end'2024-07-23'// 任务的结束日期
    progress40// 任务的完成进度,以百分比表示
  },
  {
    id'任务二',
    name'文章写作',
    start'2024-07-23',
    end'2024-07-25',
    progress30,
    dependencies'任务一' // 表示任务二依赖于任务一的完成
  },
  {
    id'任务三',
    name'排版发表',
    start'2024-07-26',
    end'2024-07-28',
    progress10,
    dependencies'任务二' // 表示任务三依赖于任务二的完成
  }
]

// 创建甘特图实例,传入SVG元素的ID、任务数组和配置选项
const gantt = new Gantt('#gantt', tasks, {
  header_height50// 头部的高度
  column_width30// 列的宽度
  step24// 时间轴的步长,以小时为单位
  view_modes: ["Quarter Day""Half Day""Day""Week""Month"], // 视图模式
  bar_height20// 任务条的高度
  bar_corner_radius3// 任务条角的圆角
  arrow_curve5// 依赖箭头的弯曲程度
  padding18// 甘特图的内边距
  view_mode"Day"// 默认视图模式
  date_format"YYYY-MM-DD"// 日期格式
  language"zh"// 甘特图的语言设置
  custom_popup_htmlnull // 自定义弹出框的HTML,这里设置为null表示使用默认
})

通过属性 language 设置语言,支持的 'es', 'it', 'ru', 'ptBr', 'fr', 'tr', 'zh', 'de', 'hu'。

3. 切换模式

Frapper Gantt 支持多种模式 Quarter Day, Half Day, Day, Week, Month。如果切换模式,可以通过方法 change_view_mode 实现。

gantt.change_view_mode('Week'

4.添加事件监听器

// main.js
const gantt = new Gantt('#gantt', tasks, {
    // ...
  // 点击任务时触发
  on_click: (task) => {
    console.log("Click", task)
  },
  // 拖动日期
  on_date_change: (task, start, end) => {
    console.log("Date Change", task, start, end)
  },
  // 拖动进度
  on_progress_change: (task, progress) => {
    console.log("Progress Change", task, progress)
  },
  // 视图模式切换
  on_view_change: (mode) => {
    console.log("View Change", mode)
  },
})

5.更新 tasks

// main.js
// 新增任务
const newTask = [
  {
    id'任务四',
    name'回复反馈',
    start'2024-07-28',
    end'2024-07-30',
    progress80,
    dependencies'任务三'
  }
]
// 添加到任务列表中
tasks.push(...newTask)
// 刷新任务
gantt.refresh(tasks)

6. 自定义 Popup

// main.js
const gantt = new Gantt('#gantt', tasks, {
   // ... 省略
  // custom_popup_html选项用于自定义任务的弹出窗口内容
  custom_popup_html:  (task) => {
    // task参数是一个任务对象,包含任务的详细信息
    // 这里使用moment.js库的format方法来格式化日期
    // 获取任务的结束日期,并格式化为月和日
    const end_date = moment(task._end).format('MM月DD日')
    // 返回一个HTML字符串,定义弹出窗口的内容
    return `
        <div class="details-container">
          <h2>${task.name}</h2>
          <p>截止日期 ${end_date}</p>
          <p>完成进度 ${task.progress}% </p>
        </div>
      `

  },
})

添加 CSS 样式配置,如下:

// style.css
.details-container {
  min-width160px;
  padding14px;
}
h2,p {
  margin0;
}
.details-container > h2 {
  font-size14px;
  font-weight700;
  margin-bottom10px;
}
.details-container > p {
  font-size14px;
  margin-bottom6px;
}

效果如下:

总结

我们探索了 Frappe Gantt —— 一款功能强大且用户友好的 JavaScript 甘特图库。不仅提供了丰富的交互特性和灵活的配置选项,还支持多语言,使其成为国际化项目团队的理想选择。通过简单的步骤,我们展示了如何快速集成Frappe Gantt 到 Web 应用中,并利用其核心功能来提升项目管理的效率。


该文章在 2024/10/12 10:26:46 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved