| 474 | == IProjectDependencies == |
| 475 | |
| 476 | An interface that abstracts the implementation details of dependencies and allows other parts of the PM system (e.g., a Gantt chart or scheduler) to retrieve and update dependencies including: |
| 477 | |
| 478 | * Finding related tasks |
| 479 | * Finding predecessors (immediate and indirect) |
| 480 | * Finding successors (immediate and indirect) |
| 481 | * Finding descendants (children and further generations) |
| 482 | * Finding ancestors (immediate and further generations) |
| 483 | * Finding all related tickets (predecessors, successors, descendants, ancestors, and possibly those that share a resource) |
| 484 | * Finding all the tickets due in a time range, ''begin''..''end''. |
| 485 | * If ''begin'' is not specified, all due by a ''end''. |
| 486 | * If ''end'' is not specified, all that start on or after ''begin'' |
| 487 | * Manipulating task relationships |
| 488 | * Reparent B as a child of A (removing any existing parent). If A is `None`, remove B's current parent, if any. |
| 489 | * Link B as a successor of A (same as making A a predecessor of B). Other dependencies are unchanged. |
| 490 | * Unlink B as a successor or predecessor of A (order doesn't matter). |
| 491 | |
522 | | |
523 | | == Other `tracpm` functions == |
524 | | |
525 | | I'm not sure what interface to put these in but some other functions that the API should hide are: |
526 | | |
527 | | * Finding predecessors (immediate and indirect) |
528 | | * Finding successors (immediate and indirect) |
529 | | * Finding descendants (children and further generations) |
530 | | * Finding ancestors (immediate and further generations) |
531 | | * Finding all related tickets (predecessors, successors, descendants, ancestors, and possibly those that share a resource) |
532 | | * Finding all the tickets due in a time range, ''begin''..''end''. |
533 | | * If ''begin'' is not specified, all due by a ''end''. |
534 | | * If ''end'' is not specified, all that start on or after ''begin'' |