617 | | |
618 | | = Design guidelines = |
619 | | |
620 | | In order to agree about how to implement this functionality, the very first step should be to describe the possible architectures (i.e., how the different components are going to interact with each other since the moment the request is sent by the client until the Gantt chart is rendered by the browser) that will be considered. |
621 | | |
622 | | == Components == |
623 | | |
624 | | In order to add flexibility to the final solution, the '''MVC pattern''' ''should'' be considered during its development. |
625 | | Hence the following components need to be implemented in order to add Gantt charts to Trac. |
626 | | |
627 | | === The Model === |
628 | | |
629 | | It provides the data in the Gantt chart and is not just a single element but a set of components like the following : |
630 | | |
631 | | * The ticket models, which provide data about the issues found |
632 | | in the project environment |
633 | | * Trac query mechanism which provides a way to select (filter) the |
634 | | tickets being shown. |
635 | | * [#RelatedWork Other plugins] used to track ticket dependencies |
636 | | * [#RelatedWork Other plugins] used to track task/subtask relationships |
637 | | * [#RelatedWork Other plugins] used to estimate the time needed to finish the given tasks |
638 | | * Maybe one (a few) component(s) whose role is to provide the functionality specific to Gantt charts, thus acting as a central access point and a mediator so as to put all the other components together. |
639 | | |
640 | | === The View === |
641 | | |
642 | | It ''should'' be a JavaScript component (is this possible ?) responsible for rendering the data provided by ''the model''. |
643 | | Besides it ''might'' support [#Whatdoweneedintheuserinterface other dynamic features] |
644 | | |
645 | | === The Controller === |
646 | | |
647 | | {{{ |
648 | | ¿What do we need this for? |
649 | | }}} |
650 | | |
651 | | === Implications === |
652 | | |
653 | | The aforementioned separation ''should'' allow the replacement of any of the components involved. Hence the following modifications ''should'' be made easily (the list being intentionally incomplete) : |
654 | | |
655 | | - Replace the JS-based view by another made with Flash. |
656 | | - Use a custom, or specific estimation strategy. |
| 599 | ---- |
| 600 | Add a note about Inchpebbles |