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

项目管理工具dhtmlxGantt甘特图入门教程(十):服务器端数据集成(下)

这篇文章给大家讲解如何利用dhtmlxGantt在服务器端集成数据。 

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足应用程序的所有需求,是完善的甘特图图表库

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

脚本数据保存

如果您已初始化dataProcessor,则用户或以编程方式所做的任何更改都将自动保存在数据源中。通常,要以编程方式更新特定任务或依赖项,请分别使用updateTask和updateLink方法:

gantt.parse([{id:1, start_date:"2019-05-13 6:00", end_date:"2019-05-13 8:00", text:"Event 1"},{id:2, start_date:"2019-06-09 6:00", end_date:"2019-06-09 8:00", text:"Event 2"}
],"json");gantt.getTask(1).text = "Task 111"; //changes task's data
gantt.updateTask(1); // renders the updated task

自定义路由器

如果后端不需要RESTful AJAX API,或者如果您想手动控制发送到服务器的内容,您可以使用自定义路由。

例如,如果您使用Angular、React或任何其他框架,其中页面上的组件不会将更改直接发送到服务器,而是将它们传递给负责数据保存的不同组件。

要为DataProcessor提供自定义路由选项,您应该使用createDataProcessor()方法:

gantt.createDataProcessor(function(entity, action, data, id){const services = {"task": this.taskService,"link": this.linkService};const service = services[entity];switch (action) {case "update":return service.update(data);case "create":return service.insert(data);case "delete":return service.remove(id);}
});

使用AJAX设置自定义路由器

Gantt AJAX模块可用于设置自定义路由。Gantt期望自定义路由器作为操作的结果返回一个Promise对象,这允许捕获操作的结束。AJAX模块支持Promise,适合在自定义路由器内部使用。甘特图会得到Promise并处理Promise的内容,当它被解决时。

在下面的示例中,创建了一个新任务。如果服务器响应包含新创建任务的id,甘特图将能够应用它。

gantt.createDataProcessor(function(entity, action, data, id){
...switch (action) {case "create":return gantt.ajax.post({headers: { "Content-Type": "application/json" },url: server + "/task",data: JSON.stringify(data)});break;}
});

错误处理

服务器可以通过返回"action":"error"响应来通知Gantt操作失败:

{"action":"error"}

可以在gantt.dataProcessor的帮助下在客户端捕获这样的响应:

var dp = gantt.createDataProcessor({url: "/api",mode:"REST"
});
dp.attachEvent("onAfterUpdate", function(id, action, tid, response){if(action == "error"){// do something here}
});

响应对象可能包含任意数量的附加属性,它们可以通过responseonAfterUpdate处理程序的参数。

如果服务器响应您的某些操作错误但更改已保存在客户端上,则同步其状态的最佳方法是清除客户端的状态,并从服务器端重新加载正确的数据:

dp.attachEvent("onAfterUpdate", function(id, action, tid, response){if(action == "error"){gantt.clearAll();gantt.load("url1");}
});

如果您想同步客户端-服务器端但不想进行任何服务器调用,您可以使用silent()方法,该方法使其中的所有代码不会触发内部事件或服务器调用:

gantt.silent(function(){gantt.deleteTask(item.id);
});gantt.render();

了解更多DhtmlxGantt相关内容和资讯,欢迎在线咨询或者私信我或加入我们

相关文章:

项目管理工具dhtmlxGantt甘特图入门教程(十):服务器端数据集成(下)

这篇文章给大家讲解如何利用dhtmlxGantt在服务器端集成数据。 dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足应用程序的所有需求,是完善的甘特图图表库 DhtmlxGantt正版试用下载(qun 764149912)http…...

LeetCode 793. 阶乘函数后 K 个零

f(x) 是 x! 末尾是 0 的数量。回想一下 x! 1 * 2 * 3 * ... * x,且 0! 1 。 例如, f(3) 0 ,因为 3! 6 的末尾没有 0 ;而 f(11) 2 ,因为 11! 39916800 末端有 2 个 0 。 给定 k,找出返回能满足 f(x) …...

maven打包顺序与jvm类加载顺序

背景:一次dev测试过程中,发现代码中关于jsr303的校验失效,校验类如下,会报一个莫名其妙的运行时错误;遂进行排查。import javax.validation.constraints.NotBlank;Data Accessors(chain true) public class Demo {Not…...

④ 链表

24. 两两交换链表中的节点 题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/ 注意点: 遍历链表的时候什么时候截止(避免空指针异常或无限死循环的问题)? 节点数量为偶数或链表为空时,cur.ne…...

小孩扁桃体肿大3度能自愈吗?6岁小孩扁桃体肥大怎么治效果好?

12月7日,四川眉山市民唐先生说,他刚出生的儿子在妇产医院分娩中心住了20天后感染了败血症。据唐先生介绍,哈子出院时各项指标正常。他在分娩中心住了半个月左右,孩子喝牛奶很生气,第二天就开始发烧了。同一天&#xff…...

【C++提高编程】C++全栈体系(二十二)

C提高编程 第三章 STL - 常用容器 五、stack容器 1. stack 基本概念 概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口 栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为 栈中进入数据称为 — 入…...

linux系统编程2--网络编程socket知识

在linux系统编程中网络编程是使用socket(套接字),socket这个词可以表示很多概念:在TCP/IP协议中,“IP地址TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址端口号”就称为socket。在TCP协议中&#…...

Python-__repr__、__hash__和__eq__方法,split()、join()、yield()和append()函数

1.__repr__方法程序1class Python:passa Python() print(a) print(a.__repr__())结果<__main__.Python object at 0x0000023B82185FD0> <__main__.Python object at 0x0000023B82185FD0>默认情况下&#xff0c;我们得到的信息只会是“类名object at内存地址”程序…...

【安卓开发】安卓广播机制

读书笔记系列&#xff08;第一行代码&#xff09; 5.1 广播机制简介 标准广播&#xff1a;完全异步执行&#xff0c;广播发出后&#xff0c;所有广播接收器几乎都同一时刻收到这条广播&#xff08;无法被截断&#xff09;有序广播&#xff1a;同步执行&#xff0c;广播发出后…...

移动WEB开发四、rem布局

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…...

request.getURL()和request.getURI() 以及通过request获得路径相关大全

request.getURL()和request.getURI() 如果我的请求是&#xff1a;http://localhost:8080/ServletTest/servlet/Hello request.getRequestURI() 返回值类似&#xff1a;/ServletTest/servlet/Hello request.getRequestURL() 返回值类似&#xff1a;http://localhost:8080/Servle…...

java网络编程-nio学习:阻塞和非阻塞

一、阻塞 阻塞模式下&#xff0c;相关方法都会导致线程暂停 ServerSocketChannel.accept 会在没有连接建立时让线程暂停 SocketChannel.read 会在没有数据可读时让线程暂停 阻塞的表现其实就是线程暂停了&#xff0c;暂停期间不会占用 cpu&#xff0c;但线程相当于闲置 单线…...

JVM-JMM内存模型(happens-before、volatile)

前言 由于计算机的存储设备与处理器的运算速度有几个数量级的差距所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲。 将运算需要使用到的数据复制到缓存中&#xff0c;让运算能快速进行&#xff0c;当运算…...

算法leetcode|37. 解数独(rust重拳出击)

文章目录37. 解数独&#xff1a;样例 1&#xff1a;提示&#xff1a;分析&#xff1a;题解&#xff1a;rustgoccpythonjava37. 解数独&#xff1a; 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现…...

SpringBoot整合Dubbo

目录1、dubbo简介2、dubbo解决了什么问题3、环境准备4、项目搭建5、总结springboot整合feign可参考我另外一篇文章SpringBoot集成Feign 1、dubbo简介 Apache Dubbo 最初在 2008 年由 Alibaba 捐献开源&#xff0c;很快成为了国内开源服务框架选型的事实标准框架 &#xff0c;…...

[软件工程导论(第六版)]第9章 面向对象方法学引论(课后习题详解)

文章目录1. 什么是面向对象方法学&#xff1f;它有哪些优点&#xff1f;2. 什么是“对象”&#xff1f;它与传统的数据有何异同&#xff1f;3. 什么是“类”&#xff1f;4. 什么是“继承”&#xff1f;5. 什么是模型&#xff1f;开发软件为何要建模&#xff1f;6. 什么是对象模…...

光学分辨率光声显微镜中基于深度学习的运动校正算法

在这项研究中&#xff0c;我们提出了一种基于深度学习的方法来校正光学分辨率光声显微镜 (OR-PAM) 中的运动伪影。该方法是一种卷积神经网络&#xff0c;它从具有运动伪影的输入原始数据建立端到端映射&#xff0c;以输出校正后的图像。首先&#xff0c;我们进行了仿真研究&…...

浅谈UG二次开发中使用的FindObject

一般我们在业务逻辑里想查找一个Object的时候&#xff0c;会调用FindObject、GetObject、NxObjectManager.Get&#xff0c;不管是上述哪种实现&#xff0c;都是在内存中找东西&#xff0c;找到了就返回对象&#xff0c;否则返回null&#xff0c;但不会触发加载。 这里我分别从建…...

贪心原理及刷题

更新中 概念 使用贪心需要满足,上一步的局部最优解能推出这一步的局部最优解,直到得到全局最优解 而dp这一步的局部最优,不一定来源上一步的局部最优,而可能与更早的解有关,同时dp转移方程的推导也比较复杂 122. 买卖股票的最佳时机 II - 力扣(LeetCode) 这道题是典…...

2023赏金计划:Coremail SRC漏洞征集与样本奖励火热进行中

赏金活动一&#xff1a;Coremail SRC漏洞奖励计划 01 活动背景 2023年1月&#xff0c;Coremail安全应急响应中心&#xff08;Coremail SRC&#xff09;正式上线启用&#xff0c;面向公众收集安全漏洞信息与安全情报。Coremail SRC旨在联合众多安全专家、白帽子研究员共同发现…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...