项目管理工具dhtmlxGantt甘特图入门教程(八):数据加载(四)

news2024/11/26 8:41:32

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理控件应用程序的所有需求,是最完善的甘特图图表库这篇文章给大家讲解   dhtmlxGantt 的数据属性和数据库结构。

DhtmlxGantt正版试用下载(qun:764148812)icon-default.png?t=N176https://www.evget.com/product/4213/download

数据属性

甘特图的数据源是存储两种类型信息的对象:

  • 任务- 任务的项目。
  • 链接- 依赖链接的项目。

任务对象的属性

强制属性-这些属性将始终在客户端上定义,它们必须由数据源提供,以便甘特图正确运行。

  • text - ( string ) 任务文本。
  • start_date - ( Date|string ) 任务计划开始的日期。如果作为字符串提供,则必须匹配date_format格式。
  • 持续时间-(数字)任务持续时间。 可以用 'end_date' 属性代替。
  • id-( string|number ) 任务 ID。

可选属性-这些属性可能会或可能不会被定义。如果定义了这些属性,甘特图的默认逻辑和模板将使用它们。

  • type-( string ) 任务类型。可用值存储在类型对象中:
  • "task" - 常规任务(默认值)。
  • “项目”- 一个任务,在其最早的子任务开始时开始,并在其最新的子任务结束时结束。 对于此类任务,将忽略start_date、end_date和duration属性。
  • “里程碑” - 用于标记项目重要日期的零工期任务。对于此类任务,将忽略duration、progress、end_date属性。
  • parent - ( string|number ) 父任务的ID。根任务的id由root_id配置指定。
  • progress - (从 0 到 1的数字)任务进度。
  • open - ( boolean ) 指定任务分支最初是否打开(以显示子任务)。
  • end_date - ( Date|string ) 计划完成任务的日期。用作设置任务持续时间的持续时间属性的替代方法。如果作为字符串提供,则 必须匹配date_format格式。
  • row_height - ( number ) 设置表格行的默认高度
  • bar_height - ( number,string ) 设置时间线区域中任务栏的高度
  • readonly -( boolean ) 可以将任务标记为readonly。
  • editable -( boolean ) 可以将任务标记为可编辑。
  • rollup -( boolean ) 指定任务(类型:“任务”)或里程碑(类型:“里程碑”) 是否应该出现在父项目上。
  • hide_bar -( boolean ) 定义任务(类型:“任务”)或里程碑(类型:“里程碑”)是否应隐藏在时间线区域中。

动态属性-在客户端上创建并表示任务或链接的当前状态。它们不应保存到数据库中,如果在 JSON/XML 中指定了这些属性,甘特图将忽略这些属性。

  • $source - (数组)来自任务的链接的 ID。
  • $target -进入任务的链接的(数组) ID。
  • $level - ( number ) 任务层次结构中的任务级别(从零开始的编号)。
  • $open - ( boolean ) 指定任务当前是否打开。
  • $index - ( number ) 甘特图中任务行的编号。

JSON 和 XML 数据的默认日期格式是“%d-%m-%Y %H:%i”(请参阅日期格式规范)。

要更改它,请使用date_format配置选项。

gantt.config.date_format="%Y-%m-%d";
  gantt.init("gantt_here");

一旦加载到甘特图,start_date和end_date属性将被解析为 Date 类型。
date_format配置不支持的日期格式可以通过parse_date模板手动解析。

链接对象的属性

强制属性

  • id - ( string|number ) 链接 ID。
  • source - ( number ) 依赖项将从其开始的任务的 ID。
  • target - ( number ) 依赖项将结束的任务的 id。
  • type - ( string ) 依赖类型。可用值存储在链接对象中。默认情况下,它们是:
  • “0” - 'finish_to_start'。
  • “1” - 'start_to_start'。
  • “2” - 'finish_to_finish'。
  • “3” - 'start_to_finish'。

如果您想以不同于默认值('0','1','2')的方式存储依赖类型,您可以更改链接对象的相关属性的值。例如:

gantt.config.links.start_to_start = "start2start";

请注意,这些值仅影响依赖类型的存储方式,而不影响可视化的行为。

可选属性

  • lag -( number ) 可选,任务滞后。
  • readonly -( boolean ) 可选,可以将链接标记为readonly。
  • editable -( boolean ) 可选,可以将链接标记为可编辑。

自定义属性

您不仅限于上面列出的强制属性,还可以将任何自定义属性添加到数据项。额外的数据属性将被解析为字符串并加载到客户端,您可以根据需要使用它们。

数据库结构

如果您使用数据库,我们建议使用 2 个单独的表来存储数据:一个用于任务,一个用于链接。

加载任务和链接到甘特图的标准数据库的结构是:

gantt_tasks表 - 指定甘特图任务

  • id - ( string,number ) 事件 ID。
  • start_date - ( Date ) 任务计划开始的日期。
  • text - ( string ) 任务的描述。
  • progress - ( number ) 一个从 0 到 1 的数字,表示任务完成的百分比。
  • duration - ( number ) 以当前时间尺度为单位的任务持续时间。
  • parent - ( number ) 父任务的 ID。
  • type - ( string ) 可选,任务的类型。
  • readonly - ( boolean ) 可选,可以将任务标记为readonly。
  • editable - ( boolean ) 可选,可以将任务标记为可编辑。

gantt_links表 - 指定甘特图依赖链接

  • id - ( string,number ) 事件 ID。
  • source - ( number ) 源任务的 id。
  • target - ( number ) 目标任务的 id。
  • type - ( string ) 依赖的类型:
  • 0 - 'finish_to_start'
  • 1 - 'start_to_start'
  • 2 - 'finish_to_finish'
  • 3 - 'start_to_finish'
  • lag -(数字)可选,任务滞后。
  • readonly - ( boolean ) 可选,可以将链接标记为readonly。
  • editable - ( boolean ) 可选,可以将链接标记为可编辑。

使用以下SQL语句创建包含2个提到的表的数据库:

CREATE TABLE `gantt_links` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `source` int(11) NOT NULL,
  `target` int(11) NOT NULL,
  `type` varchar(1) NOT NULL,
  PRIMARY KEY (`id`)
)
CREATE TABLE `gantt_tasks` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `text` varchar(255) NOT NULL,
  `start_date` datetime NOT NULL,
  `duration` int(11) NOT NULL,
  `progress` float NOT NULL,
  `sortorder` int(11) NOT NULL,
  `parent` int(11) NOT NULL,
  PRIMARY KEY (`id`)
)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

既生 useState 何生 useReducer (主讲useReducer)

前言 useState 的底层其实是用useReducer 实践的 useReducer 适合较复杂的state,因为我们可以将状态的改变统一放在reducer 去做管理,像useState 的状态改变就会分散在不同的函式里面。 语法 const [state, dispatch] = useReducer(reducer, initialState, initStateFn)use…

【蓝桥杯选拔赛真题37】python判断自守数 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

目录 python判断自守数 一、题目要求 1、编程实现 2、输入输出 二、解题思路

后台开发常见层式结构设计:时间轮、跳表、LSM_Tree

目录1、海量并发定时任务:时间轮2、高并发读写有序结构组织;跳表3、空间利用率以及写性能高的磁盘数据组织:LSM_Tree时间轮:内核定时器的实现、skynet、kafka、netty; 跳表:redis、rocksdb LSM-Tree:写多读…

SpringCloud学习笔记 - 自定义及解耦降级处理方法 - Sentinel

1. SentinelRecourse配置回顾 通过之前的学习,我们知道SentinelRecourse配置的资源定位可以通过两种方式实现:一种是URL,另一种是资源名称。这两种限流方式都要求资源ID唯一 RestController public class RateLimitController {GetMapping(…

MySQL -查询日志、二进制日志、错误日志、慢查询日志

文章目录1.错误日志2.二进制日志3.查询日志4.慢查询日志1.错误日志 错误日志是 MySOL中最重要的日志之一,它记录了当 mvsald 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息当数据库出现任何故障导致无法正常使用时,建议…

龙曲良 Tensorflow —— 神经网络与全连接层(自用)

目录 一、数据加载(keras.datasets) 1.1 MNIST 加载 1.2 CIFAR10/100 加载 1.3 tf.data.Dataset.from_tensor_slices 1.4 .shuffle (对应打散数据) 1.5 .map(数据预处理) 1.6 .batch / .repeat 二…

vue3语法

vue3教程 //ps 这里是基本写法 一般项目不需要ref 因为需要一直return 这里是根据在不使用ts后缀 来在.vue里面写setup 如下图所示:setup setup是启动页面会自动执行的一个函数 项目里定义的所有变量,都要在setup当中 在setup定义的变量和方法,都需要r…

chatGTP的全称Chat Generative Pre-trained Transformer

chatGPT,有时候我会拼写为:chatGTP,所以知道这个GTP的全称是很有用的。 ChatGPT全名:Chat Generative Pre-trained Transformer ,中文翻译是:聊天生成预训练变压器,所以是GPT,G是生…

DIDL3_模型选择、复杂度、过欠拟合的相关概念

模型选择、复杂度、过欠拟合的概念模型选择训练误差和泛化误差验证数据集和测试数据集K-则交叉验证(没有足够多数据时使用)过拟合和欠拟合模型容量模型容量的影响估计模型容量控制模型容量数据复杂度处理过拟合的方法(1)&#xff…

关于最近大热的AI,你怎么看?

AI人工智能,相信大家都不陌生,也都接触过不少。但是最近小编在网上冲浪的时候发现各大媒体又掀起了一阵AI热潮,AI不是很常见了吗?是又有什么新的发展吗? 带着强烈的好奇心,我在地铁上读完了一篇关于Chatgp…

【分享】如何通过集简云将ChatGPT人工智能接入到您的内容平台中?

ChatGPT是一款非常强大的人工智能产品,可以有创造性的回复和创作文字,图片,适用于很多办公场景。这篇文章将介绍如何将ChatGPT接入到您的办公系统中。 目前集简云提供了两个ChatGPT应用: OpenAI(ChatGPT)内置:这个是集…

IB化学考什么?这些知识点请收藏

春天来了,IB大考还会远吗?不少学生为IB大考紧张不已。为大家介绍一下IB化学的相关内容。01考试时间和考试形式 2023年IB考试将于2023年4月27日开始,2023年5月19日结束。化学部分的考试分别是在5月11日、12日进行。 IB化学考试包括&#xff1a…

LeetCode刷题--- 61. 旋转链表(快慢指针+闭合为环)

💌 所属专栏:【LeetCode题解(持续更新中)】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的码仔,专注基础和实战分享 ,欢迎…

cors跨域问题

CORS CORS,全称Cross-Origin Resource Sharing,是一种允许当前域(domain)的资源(比如html/js/web service)被其他域(domain)的脚本请求访问的机制,通常由于同域安全策略(…

如何设计一个秒杀系统

秒杀系统要如何设计? 前言 高并发下如何设计秒杀系统?这是一个高频面试题。这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。 秒杀一般出现在商城的促销活动中,指定…

Cosmos 基础 -- Ignite CLI(二)Module basics: Blog

一、快速入门 Ignite CLI version: v0.26.1 在本教程中,我们将使用一个模块创建一个区块链,该模块允许我们从区块链中写入和读取数据。这个模块将实现创建和阅读博客文章的功能,类似于博客应用程序。最终用户将能够提交新的博客文章&#x…

计算机网络学习笔记(一)

网络是由若干接点和连接这些结点的链路组成。 多个网络通过路由器互联起来构成覆盖范围更大的互联网。 普通用户通过ISP接入因特网。 基于ISP的三层结构因特网 相隔较远的两台主机间通信可能需要经过多个ISP。 有电路交换,报文交换,分组交换三种交换方…

【并发编程】LockSupport源码详解

目录 一、前言 1.1 简介 1.2 为什么说LockSupport是Java并发的基石? 二、LockSupport的用途 2.1 LockSupport的主要方法 2.2 使用案例 2.3 总结 三、LockSupport 源码分析 3.1 学习原理前的前置知识 3.1.1 Unsafe.park()和Unsafe.unpark() 3.1.2wait和notify/notify…

MyEclipse技术全面解析——EJB开发工具介绍(一)

MyEclipse v2022.1.0正式版下载1. MyEclipse EJB开发工具Enterprise Java Beans (EJB) 已经成为实现Java企业业务功能和与数据库资源接口的Java EE 5标准,MyEclipse EJB3工具支持Java EE 5简化的基于注释的POJO编程模型,这些工具使开发人员能够在几分钟内…

微信怎么群发消息给所有人?图文教学,快速弄懂

​微信作为很多小伙伴经常使用的工具,无论是学习、工作还是其他方面都会使用到。有些时候,需要将同一条消息发给通讯录里的大多数人,一条一条的转发太慢了,群发消息给所有人是个不错的办法。微信怎么群发消息给所有人?…