oatw / kickoff Goto Github PK
View Code? Open in Web Editor NEW可能是东北三省最灵活易用的任务管理组件
Home Page: https://oatw.github.io/kickoff
License: MIT License
可能是东北三省最灵活易用的任务管理组件
Home Page: https://oatw.github.io/kickoff
License: MIT License
对任务层级或顺序的更新,本质上是更新wbs
。
对不同场景下wbs
的更新,Kickoff内置了一套默认更新机制,同时支持通过before-update
事件对默认更新机制进行拦截。
将wbs
更新为自身后代级别wbs
不符逻辑性,直接默认更新失败,不同场景下内置的更新机制所执行的程序逻辑为:
wbs
,如3.2.2 -> 3.2.1wbs
查找其后代任务,计算所有任务的新wbs
,并记录下所有任务实例和新、旧wbs
;wbs
范围内的任务(包含当前wbs
等于新wbs
的任务)及它们后代任务的新wbs
;如为向前移动,递增计算目标任务新、旧wbs
范围内的任务(包含当前wbs
等于新wbs
的任务)及他们后代任务的新wbs
,并记录下所有任务实例和新、旧wbs
;dependencies
中含有记录中旧wbs
的任务,按照记录中对应的新wbs
计算新dependencies
,并记录下所有任务实例和新、旧dependencies
,如果存在与前面步骤记录中相同的任务实例,则合并记录项;before-update
事件,如任一事件被阻止,则取消整个更新事务;反之,按照记录项依次更新任务实例,并触发after-touch
和after-update
事件。wbs
为顶级任务wbs
,如3.2.2 -> 1wbs
查找其祖先任务,冒泡计算祖先任务的正确周期,并记录周期不正确的祖先任务实例和新、旧end
,如果该祖先任务有非里程碑子任务,且有beginning
/end
晚于该祖先任务最晚子任务end
的s2f
/f2f
型前置任务关系,则计算从该祖先任务的dependencies
中删除对应前置任务wbs
后的新dependencies
,并记录新、旧dependencies
;wbs
查找其后代任务,计算所有任务的新wbs
,并记录下所有任务实例和新、旧wbs
;wbs
查找其后方兄弟任务,递减计算并记录兄弟任务和兄弟任务后代任务的实例及新、旧wbs
;wbs
查找其新的后方兄弟任务,递增计算并记录兄弟任务和兄弟任务后代任务的实例及新、旧wbs
,如果存在与前面步骤中相同的任务实例,则使用记录中的新wbs
作为计算基准,覆盖原记录中相同任务实例的新、旧wbs
;dependencies
中含有记录中旧wbs
的任务,按照记录中对应的新wbs
计算查找到的任务的新dependencies
,如果该任务实例在前面步骤中记录过dependencies
,则使用记录中的对应新dependencies
作为计算基准,并记录下所有任务实例和新、旧dependencies
,如果存在与之前步骤中相同的任务实例,则合并记录项;before-update
事件,如任一事件被阻止,则取消整个更新事务;反之,按照记录项依次更新任务实例,并触发after-touch
和after-update
事件。wbs
,如3.2.2 -> 2.1或3.2.2 -> 3.2或2.1 -> 3.2.2wbs
查找其祖先任务,冒泡计算祖先任务的正确周期,并记录周期不正确的祖先任务实例和新、旧end
,如果该祖先任务有非里程碑子任务,且有beginning
/end
晚于该祖先任务最晚子任务end
的s2f
/f2f
型前置任务关系,则计算从该祖先任务的dependencies
中删除对应前置任务wbs
后的新dependencies
,并记录新、旧dependencies
;wbs
查找其祖先任务,冒泡计算祖先任务的正确周期,并记录周期不正确的祖先任务实例和新、旧end
/beginning
,如果该祖先任务有非里程碑子任务,且有beginning
/end
晚于该祖先任务最晚子任务end
的s2f
/f2f
前置任务关系,或beginning
/end
晚于该祖先任务最早子任务beginning
的s2s
/f2s
型前置任务关系,则计算该祖先任务dependencies
中删除对应前置任务wbs
后的新dependencies
,如果新的dependencies
中包含目标任务或目标任务后代任务的旧wbs
,需顺次执行删除计算。如果目标任务或目标任务后代任务的dependencies
中有该祖先任务的wbs
,则计算目标任务或其后代任务dependencies
中删除该祖先任务wbs
后的新dependencies
。如果前面步骤中记录过对应任务实例的dependencies
,则以记录中的新dependencies
作为以上删除计算的基础。完成计算后,在记录中新增或合并该任务实例及新、旧dependencies
;wbs
查找其后代任务,计算所有任务的新wbs
,并记录下所有任务实例和新、旧wbs
,如果目标任务存在于前面步骤的记录中,则合并记录项;wbs
查找其后方兄弟任务,递减计算并记录兄弟任务和兄弟任务后代任务的实例及新、旧wbs
,如果兄弟任务或其后代任务存在于前面步骤的记录中,则合并记录项;wbs
查找其新的后方兄弟任务,递增计算并记录兄弟任务和兄弟任务后代任务的实例及新、旧wbs
,如果存在与前面步骤中相同的任务实例,则使用记录中的新wbs
作为计算基准,覆盖原记录中相同任务实例的新、旧wbs
;dependencies
中含有记录中旧wbs
的任务,按照记录中对应的新wbs
计算查找到的任务的新dependencies
,如果该任务实例在前面步骤中记录过dependencies
,则使用记录中的对应新dependencies
作为计算基准,并记录下所有任务实例和新、旧dependencies
,如果存在与之前步骤中相同的任务实例,则合并记录项;before-update
事件,如任一事件被阻止,则取消整个更新事务;反之,按照记录项依次更新任务实例,并触发after-touch
和after-update
事件。根据以上程序执行过程的梳理,核心方法需至少实现三个:
propagateAncestors
:计算祖先周期,已实现。calcDependencies
:计算前置依赖,已实现。collectUniqueResource
:搜集事务记录,需要支持同任务实例的记录项合并、wbs覆盖更新、dependencies合并更新。A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.