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

Highcharts甘特图基本用法(highcharts-gantt.js)

参考官方文档:

https://www.highcharts.com/docs/gantt/getting-started-gantt

https://www.highcharts.com/demo/gantt/project-management

 https://www.hcharts.cn/demo/gantt

链接在下面按需引入

https://code.highcharts.com/gantt/highcharts-gantt.js

https://code.highcharts.com/highcharts.js

https://code.highcharts.com/gantt/modules/gantt.js

JS初始化举例:

const day = 24 * 36e5,today = Math.floor(Date.now() / day) * day;const options = {chart: {plotBackgroundColor: 'rgba(128,128,128,0.02)',plotBorderColor: 'rgba(128,128,128,0.1)',plotBorderWidth: 1},plotOptions: {series: {borderRadius: '50%',connectors: {dashStyle: 'ShortDot',lineWidth: 2,radius: 5,startMarker: {enabled: false}},groupPadding: 0,dataLabels: [{enabled: true,align: 'left',format: '{point.name}',padding: 10,style: {fontWeight: 'normal',textOutline: 'none'}}, {enabled: true,align: 'right',format: '{#if point.completed}{(multiply ' +'point.completed.amount 100):.0f}%{/if}',padding: 10,style: {fontWeight: 'normal',textOutline: 'none',opacity: 0.6}}]}},series: [{name: 'Offices',data: [{name: 'New offices',id: 'new_offices',owner: 'Peter'}, {name: 'Prepare office building',id: 'prepare_building',parent: 'new_offices',start: today - (2 * day),end: today + (6 * day),completed: {amount: 0.2},owner: 'Linda'}, {name: 'Inspect building',id: 'inspect_building',dependency: 'prepare_building',parent: 'new_offices',start: today + 6 * day,end: today + 8 * day,owner: 'Ivy'}, {name: 'Passed inspection',id: 'passed_inspection',dependency: 'inspect_building',parent: 'new_offices',start: today + 9.5 * day,milestone: true,owner: 'Peter'}, {name: 'Relocate',id: 'relocate',dependency: 'passed_inspection',parent: 'new_offices',owner: 'Josh'}, {name: 'Relocate staff',id: 'relocate_staff',parent: 'relocate',start: today + 10 * day,end: today + 11 * day,owner: 'Mark'}, {name: 'Relocate test facility',dependency: 'relocate_staff',parent: 'relocate',start: today + 11 * day,end: today + 13 * day,owner: 'Anne'}, {name: 'Relocate cantina',dependency: 'relocate_staff',parent: 'relocate',start: today + 11 * day,end: today + 14 * day}]}, {name: 'Product',data: [{name: 'New product launch',id: 'new_product',owner: 'Peter'}, {name: 'Development',id: 'development',parent: 'new_product',start: today - day,end: today + (11 * day),completed: {amount: 0.6,fill: '#e80'},owner: 'Susan'}, {name: 'Beta',id: 'beta',dependency: 'development',parent: 'new_product',start: today + 12.5 * day,milestone: true,owner: 'Peter'}, {name: 'Final development',id: 'finalize',dependency: 'beta',parent: 'new_product',start: today + 13 * day,end: today + 17 * day}, {name: 'Launch',dependency: 'finalize',parent: 'new_product',start: today + 17.5 * day,milestone: true,owner: 'Peter'}]}],tooltip: {pointFormat: '<span style="font-weight: bold">{point.name}</span><br>' +'{point.start:%e %b}' +'{#unless point.milestone} → {point.end:%e %b}{/unless}' +'<br>' +'{#if point.completed}' +'Completed: {multiply point.completed.amount 100}%<br>' +'{/if}' +'Owner: {#if point.owner}{point.owner}{else}unassigned{/if}'},title: {text: 'Gantt Project Management'},xAxis: [{currentDateIndicator: {color: '#2caffe',dashStyle: 'ShortDot',width: 2,label: {format: ''}},dateTimeLabelFormats: {day: '%e<br><span style="opacity: 0.5; font-size: 0.7em">%a</span>'},grid: {borderWidth: 0},gridLineWidth: 1,min: today - 3 * day,max: today + 18 * day,custom: {today,weekendPlotBands: true}}],yAxis: {grid: {borderWidth: 0},gridLineWidth: 0,labels: {symbol: {width: 8,height: 6,x: -4,y: -2}},staticScale: 30},accessibility: {keyboardNavigation: {seriesNavigation: {mode: 'serialize'}},point: {descriptionFormatter: function (point) {const completedValue = point.completed ?point.completed.amount || point.completed : null,completed = completedValue ?' Task ' + Math.round(completedValue * 1000) / 10 +'% completed.' :'',dependency = point.dependency &&point.series.chart.get(point.dependency).name,dependsOn = dependency ?' Depends on ' + dependency + '.' : '';return Highcharts.format(point.milestone ?'{point.yCategory}. Milestone at {point.x:%Y-%m-%d}. ' +'Owner: {point.owner}.{dependsOn}' :'{point.yCategory}.{completed} Start ' +'{point.x:%Y-%m-%d}, end {point.x2:%Y-%m-%d}. Owner: ' +'{point.owner}.{dependsOn}',{ point, completed, dependsOn });}}},lang: {accessibility: {axis: {xAxisDescriptionPlural: 'The chart has a two-part X axis ' +'showing time in both week numbers and days.'}}}};// Plug-in to render plot bands for the weekendsHighcharts.addEvent(Highcharts.Axis, 'foundExtremes', e => {if (e.target.options.custom && e.target.options.custom.weekendPlotBands) {const axis = e.target,chart = axis.chart,day = 24 * 36e5,isWeekend = t => /[06]/.test(chart.time.dateFormat('%w', t)),plotBands = [];let inWeekend = false;for (let x = Math.floor(axis.min / day) * day;x <= Math.ceil(axis.max / day) * day;x += day) {const last = plotBands.at(-1);if (isWeekend(x) && !inWeekend) {plotBands.push({from: x,color: {pattern: {path: 'M 0 10 L 10 0 M -1 1 L 1 -1 M 9 11 L 11 9',width: 10,height: 10,color: 'rgba(128,128,128,0.15)'}}});inWeekend = true;}if (!isWeekend(x) && inWeekend && last) {last.to = x;inWeekend = false;}}axis.options.plotBands = plotBands;}});Highcharts.ganttChart('container', options);//container这里是div的id

相关文章:

Highcharts甘特图基本用法(highcharts-gantt.js)

参考官方文档&#xff1a; https://www.highcharts.com/docs/gantt/getting-started-gantt https://www.highcharts.com/demo/gantt/project-management https://www.hcharts.cn/demo/gantt 链接在下面按需引入 https://code.highcharts.com/gantt/highcharts-gantt.js htt…...

【Linux庖丁解牛】—Linux基本指令(上)!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a; Linux庖丁解牛 &#x1f516;克心守己&#xff0c;律己则安 目录 1、 pwd命令 2、ls 指令 3、cd 指令 4、Linux下的根目录 5、touch指令 6、 stat指令 7、mkdi…...

node.js 中的进程和线程工作原理

本文所有的代码均基于 node.js 14 LTS 版本分析 概念 进程是对正在运行中的程序的一个抽象&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;操作系统的其他所有内容都是围绕着进程展开的 线程是操作系统能够进行运算调度的最小单位&#xff0c;其是进程中的一个执…...

Qt/C++ TCP调试助手V1.1 新增图像传输与接收功能(附发布版下载链接)

发布版本链接 通过百度网盘分享的文件&#xff1a;TCP调试助手V1.zip&#xff08;含客户端与服务器&#xff09; 链接&#xff1a;https://pan.baidu.com/s/14LTRPChPhYdwp_s6KeyBiA?pwdcedu 提取码&#xff1a;cedu 基于Qt/C实现了一款功能丰富的TCP服务器与客户端调试助手…...

DNS解析流程

DNS解析流程&#xff1a; 浏览器DNS缓存&#xff1a; 当我们在浏览器中访问某个域名时&#xff0c;浏览器首先会检查自己内部的DNS缓存&#xff0c;看是否有该域名的对应IP地址。如果有&#xff0c;直接使用缓存中的IP地址&#xff0c;跳过后续步骤。 本地系统DNS缓存&#xf…...

[PTA]7-1 藏头诗

[PTA]7-1 藏头诗 本题要求编写一个解密藏头诗的程序。 注&#xff1a;在 2022 年 7 月 14 日 16 点 50 分以后&#xff0c;该题数据修改为 UTF-8 编码。 输入格式&#xff1a; 输入为一首中文藏头诗&#xff0c;一共四句&#xff0c;每句一行。注意&#xff1a;一个汉字占三…...

每日OJ题_牛客_WY22 Fibonacci数列(斐波那契)

目录 牛客_WY22 Fibonacci数列&#xff08;斐波那契&#xff09; 解析代码 牛客_WY22 Fibonacci数列&#xff08;斐波那契&#xff09; Fibonacci数列_牛客题霸_牛客网 解析代码 求斐波那契数列的过程中&#xff0c;判断⼀下&#xff1a;何时 n 会在两个 fib 数之间。 #in…...

SQL 查询语句汇总

在软件开发和数据分析中&#xff0c;SQL&#xff08;结构化查询语言&#xff09;是与数据库交互的重要工具。为了更好地理解 SQL 查询语句的使用&#xff0c;本文将设计一个简单的数据库&#xff0c;包括几张表&#xff0c;并通过这些表展示各种 SQL 查询的应用。 一、背景信息…...

封装一个语言识别文字的方法

语音识别 需求&#xff1a; 参考官方文档&#xff0c;整合语音识别apicallback 的写法改为 Promise 的版本 在startRecord中&#xff1a; 参考文档实例化-开启转换将录制的内容传递给录音识别回调函数中的 Log&#xff0c;改为 Logger 在closeRecord&#xff1a; 结束识别…...

解决 iOS App Tracking Transparency 权限问题

解决 iOS App Tracking Transparency 权限问题 在 iOS 14 及更高版本中&#xff0c;Apple 引入了 App Tracking Transparency (ATT) 框架&#xff0c;要求应用在跟踪用户之前必须获得用户的明确许可。这通常涉及到访问用户的广告标识符&#xff08;IDFA&#xff09;。如果没有…...

ClickHouse 的底层架构和原理

ClickHouse 是一个用于实时分析和处理大规模数据的列式数据库&#xff0c;其设计目标是高效地处理海量数据的查询需求。它特别适合 OLAP&#xff08;Online Analytical Processing&#xff09;场景&#xff0c;能够在不依赖复杂的索引结构的情况下&#xff0c;实现极快的查询速…...

rtmp推流

获取摄像头名称 打开命令行工具&#xff0c;运行以下命令以列出所有可用的视频设备&#xff1a; ffmpeg -f dshow -list_devices true -i dummy查找输出中的“Video devices”部分&#xff0c;记录下你的摄像头名称。 构建推流命令 ffmpeg -f dshow -i video"摄像头名称…...

【数据库】死锁排查方式

定位 查是否锁表 select username,lockwait,status,machine,program from v$session where sid in (select session_id from v$locked_object); 查锁表sql select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in (select s…...

去耦合的一些建议

尽量少用全局变量&#xff0c;以减少状态共享和潜在的副作用。 模块化设计&#xff1a;将代码分成小模块&#xff0c;每个模块独立实现特定功能&#xff0c;减少模块之间的相互依赖。 封装&#xff1a;将数据和操作封装在类中&#xff0c;控制对内部状态的访问&#xff0c;避…...

SpringBoot+Thymeleaf图书管理系统

一、项目介绍 > 这是一个基于SpringBootThymeleaf实现的图书管理系统。 > 包含图书管理、作者管理、分类管理、出版社管理等功能。 > 界面简洁美观&#xff0c;代码结构清晰&#xff0c;完成度比较高&#xff0c;适用于JAVA初学者作为参考项目。 二、项目演示 三…...

TDengine 签约前晨汽车,解锁智能出行的无限潜力

在全球汽车产业转型升级的背景下&#xff0c;智能网联和新能源技术正迅速成为商用车行业的重要发展方向。随着市场对环保和智能化需求的日益增强&#xff0c;企业必须在技术创新和数据管理上不断突破&#xff0c;以满足客户对高效、安全和智能出行的期待。在这一背景下&#xf…...

模板字符串中定义方法并传参

遇到一个使用js es6的模板字符串进行事件绑定和传参的问题&#xff0c;这个问题的引起是因为使用innerHTML插入了一大串html并进行事件的绑定和传参。 以react为例&#xff0c;写一个demo记录一下 模板字符串中写方法的话需要用onclick来定义&#xff0c;传参需要这么写${char…...

Numpy 数组元素添加与元素删除函数详解

元素添加 Numpy中有类似python列表操作函数append()及insert()&#xff0c;但是用法稍有不同&#xff0c;append()及insert()不作为数组的实例方法使用。 np.append() np.append()的参数如下 def append(arr, values, axisNone): 其中&#xff0c;arr为数组对象&#xff0…...

【Python】高效图像处理库:pyvips

月亮慢慢变圆&#xff0c;日子慢慢变甜。 在图像处理领域&#xff0c;pyvips 是一个轻量级且高效的库&#xff0c;适合处理大规模图像、实现高性能的操作。相较于其他常见的图像处理库如 PIL 或 OpenCV&#xff0c;pyvips 以其低内存占用和出色的速度脱颖而出。本文将介绍 pyv…...

java项目之在线考试与学习交流网页平台源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线考试与学习交流网页平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于JAVA语言…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...