xpyjs / gantt

An easy-to-use Gantt component. 持续更新,中文文档
https://docs.xiaopangying.com/gantt/
MIT License
236 stars 40 forks source link

[FEATURE] 关于前置后置任务的连线 #119

Open Lnncoco opened 1 month ago

Lnncoco commented 1 month ago

目前用 move-slider 事件来尝试手动处理前置、后置任务的约束。但发现连线方式只能配出一种从完成到开始,其他的从开始到开始从开始到完成从完成到完成 似乎没办法体现?这样在展示时没办法将关系表达出来。

看之前提到连线用的不多,可能没这场景,是否考虑加上前置后置连线与约束能力,或仅加上四种连线能力?

一些设计参考: https://knowledge.kantata.com/hc/en-us/articles/360000456874-Gantt-Chart-Dependencies https://www.zentao.pm/blog/Gantt-Chart-4-Types-of-Task-Dependencies-in-Project-Management-1006.html

另:在图表上可以创建连线,没找到删除连线的交互能力。

jeremyjone commented 1 month ago

连线这功能,我确实用的不多,包括excel做的甘特图。

虽然我知道你说的方式,但是我不太理解为什么需要开始到开始这些,一个连线,看的应该是一个任务结束后,下一个任务该做什么,这一直是我理解的使用方式,所以我也就只写了这种方式。

也许有一些场景会有特殊需求,期待你可以分享一下使用经验

Lnncoco commented 1 month ago

我也在理解中,之前排场的需求里有遇到,模拟举例下

排场场景下,A机器生成材料A,B机器将A材料加工成B材料,B机器材料来源是A机器生成完成后直接输送,所以有个前置约束,根据实际情况得到两者间隔必须大于一小时(B机器需要预热、B机器效率较高防止材料中断、传送需要时间等等因素),所以有一个一小时的前置约束。这时候两者是并行任务,但又互相有关联,所以需要用开始到开始的连接,并添加一个一小时的前置约束 从结束到结束,比如有个产能监控的任务,监控A/B机器生成数量,这任务需要在A/B任务结束后才能完整结束,连线结束到结束,时间跟随A/B任务结束的排期时间变动。

类比开发任务,正常情况下,B任务是A任务的后置任务,使用A结束到B开始连线。但为了提高时间效率,需要在A任务未结束时同时处理B任务。比如测试任务,可以开发到一半介入,随着开发任务结束,测试任务才结束,连线从结束到结束。当开发任务变动时,跟随连线,测试任务自动也变动。

甘特图上连线表达了两个任务存在联系,直接从图上可以直接知晓任务是有约束条件的,以此区别其他无联系的平行任务。 这些场景无法用分组替代表达,因为任务是同级的,开始、结束时间范围可能会超出另一个务的范围。

从搜到的资料中看起来四种连线是甘特图本身存在的形式,添加上连线能保证甘特图功能表达的完整性。 功能上并不一定要完整的实现约束自动处理能力,可以仅实现连线功能。当任务变动时,抛出相关事件,用户从连线上追踪到约束任务,自行做修改逻辑。

jeremyjone commented 1 month ago

了然。但是这些内容并不一定需要连线来处理他们的关系。比如放在一组,也可以表明他们的关系,但也是会有这种需求。

对于这个功能,实现起来项目改动有点多,而且我确实好像用不到,我估计短时间可能不会做它。如果做得话,看时间吧,怎么也要下一个版本的,至少当前版本我不会改动它。

望理解哈

Lnncoco commented 1 month ago

嗯嗯,理解