diff options
Diffstat (limited to 'doc/DesignDocument-classes.dot')
-rw-r--r-- | doc/DesignDocument-classes.dot | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/doc/DesignDocument-classes.dot b/doc/DesignDocument-classes.dot new file mode 100644 index 0000000..cccc477 --- /dev/null +++ b/doc/DesignDocument-classes.dot @@ -0,0 +1,265 @@ +digraph systemModel { + rankdir="LR"; + splines="line"; + + subgraph _clusterModels { + label="Models" + node[shape="record"]; + + //BaseModel[label="<main> ActiveRecord::Base (abstract)"] + + Server[label="<main> Server"]; + Tournament[label="<main> Tournament"]; + Match[label="<main> Match"]; + Team[label="<main> Team"]; + User[label="<main> User | <attr_role> role | <attr_pw> password hash"]; + } + + subgraph _clusterViews { + label="views/"; + node[shape="rectangle"] + + /* + layouts_application[label="layouts/application (abstract)"] + subgraph clusterViewsCommon { + label="views/common/"; + common_permission_denied[label="common/permission_denied"]; + common_invalid[label="common/invalid"]; + } + */ + subgraph clusterViewsMain { + label="views/main/"; + main_homepage[label="main/homepage"]; + main_edit[label="main/edit"]; + } + search_results[label="search/results"]; + subgraph clusterViewsMessages { + label="views/messages/"; + messages_new_alert[label="messages/new_alert"]; + messages_private[label="messages/private"]; + } + subgraph clusterViewsTournament { + label="views/tournament/"; + tournaments_index[label="tournaments/index"]; + tournaments_show[label="tournaments/show"]; + tournaments_new[label="tournaments/new"]; + tournaments_edit[label="tournaments/edit"]; + } + subgraph clusterViewsMatches { + label="views/matches/"; + matches_show[label="matches/show"]; + matches_edit[label="matches/edit"]; + } + subgraph clusterViewsTeams { + label="views/teams/"; + teams_index[label="teams/index"]; + teams_show[label="teams/show"]; + teams_new[label="teams/new"]; + teams_edit[label="teams/edit"]; + } + subgraph clusterViewsUsers { + label="views/users/"; + users_index[label="users/index"]; + users_new[label="users/new"]; + users_show[label="users/show"]; + users_edit[label="users/edit"]; + } + } + + subgraph _clusterControllers { + label="Controllers"; + node[shape="record"]; + + //ApplicationController[label="<main> ApplicationController (abstract)"]; + + MainController[label="<main> MainController | <index> show_homepage() | <edit> edit_settings() | <update> update_settings()"]; + LoginController[label="<main> LoginController | <login> login() | <logout> logout()"]; + SearchController[label="<main> SearchController | <show_results> show_results()"]; + MessagesController[label="<main> MessagesController | <new_alert> new_alert() | <post_alert> post_alert() | <show_private> show_private() | <post_private> post_private()"]; + TournamentsController[label="<main> TournamentsController | <index> index() | <show> show() | <new> new() | <create> create() | <edit> edit() | <update> update() | <end> end()"]; + MatchesController[label="<main> MatchesController | <index> index() | <show> show() | <edit> edit() | <update> update()"]; + TeamsController[label="<main> TeamsController | <index> index() | <show> show() | <edit> edit() | <update> update()"] + UsersController[label="<main> UsersController | <index> index() | <show> show() | <new> new() | <create> create() | <edit> edit() | <update> update() | <delete> delete()"] + } + + /* + subgraph inheritance { + # Kludge: Have a arrow going both ways, but one invisible, so + # that it doesn't try to force a position + + # models + + Server:main -> BaseModel[arrowhead=onormal]; + BaseModel -> Server:main[style=invis]; + + Tournament:main -> BaseModel[arrowhead=onormal]; + BaseModel -> Tournament:main[style=invis]; + + Match:main -> BaseModel[arrowhead=onormal]; + BaseModel -> Match:main[style=invis]; + + Team:main -> BaseModel[arrowhead=onormal]; + BaseModel -> Team:main[style=invis]; + + User:main -> BaseModel[arrowhead=onormal]; + BaseModel -> User:main[style=invis]; + + # views + + common_permission_denied -> layouts_application[arrowhead=onormal]; + layouts_application -> common_permission_denied[style=invis]; + + common_invalid -> layouts_application[arrowhead=onormal]; + layouts_application -> common_invalid[style=invis]; + + main_homepage -> layouts_application[arrowhead=onormal]; + layouts_application -> main_homepage[style=invis]; + + main_edit -> layouts_application[arrowhead=onormal]; + layouts_application -> main_edit[style=invis]; + + messages_new_alert -> layouts_application[arrowhead=onormal]; + layouts_application -> messages_new_alert[style=invis]; + + messages_private -> layouts_application[arrowhead=onormal]; + layouts_application -> messages_private[style=invis]; + + tournaments_index -> layouts_application[arrowhead=onormal]; + layouts_application -> tournaments_index[style=invis]; + + tournaments_show -> layouts_application[arrowhead=onormal]; + layouts_application -> tournaments_show[style=invis]; + + tournaments_new -> layouts_application[arrowhead=onormal]; + layouts_application -> tournaments_new[style=invis]; + + tournaments_edit -> layouts_application[arrowhead=onormal]; + layouts_application -> tournaments_edit[style=invis]; + + matches_show -> layouts_application[arrowhead=onormal]; + layouts_application -> matches_show[style=invis]; + + matches_edit -> layouts_application[arrowhead=onormal]; + layouts_application -> matches_edit[style=invis]; + + teams_index -> layouts_application[arrowhead=onormal]; + layouts_application -> teams_index[style=invis]; + + teams_show -> layouts_application[arrowhead=onormal]; + layouts_application -> teams_show[style=invis]; + + teams_new -> layouts_application[arrowhead=onormal]; + layouts_application -> teams_new[style=invis]; + + teams_edit -> layouts_application[arrowhead=onormal]; + layouts_application -> teams_edit[style=invis]; + + users_index -> layouts_application[arrowhead=onormal]; + layouts_application -> users_index[style=invis]; + + users_new -> layouts_application[arrowhead=onormal]; + layouts_application -> users_new[style=invis]; + + users_show -> layouts_application[arrowhead=onormal]; + layouts_application -> users_show[style=invis]; + + users_edit -> layouts_application[arrowhead=onormal]; + layouts_application -> users_edit[style=invis]; + + # controllers + + MainController:main -> ApplicationController[arrowhead="onormal"]; + ApplicationController -> MainController:main[style=invis]; + + TournamentsController:main -> ApplicationController[arrowhead="onormal"]; + ApplicationController -> TournamentsController:main[style=invis]; + + MessagesController:main -> ApplicationController[arrowhead="onormal"]; + ApplicationController -> MessagesController:main[style=invis]; + + LoginController:main -> ApplicationController[arrowhead="onormal"]; + ApplicationController -> LoginController:main[style=invis]; + + SearchController:main -> ApplicationController[arrowhead="onormal"]; + ApplicationController -> SearchController:main[style=invis]; + + UsersController:main -> ApplicationController[arrowhead="onormal"]; + ApplicationController -> UsersController:main[style=invis]; + + MatchesController:main -> ApplicationController[arrowhead="onormal"]; + ApplicationController -> MatchesController:main[style=invis]; + } + */ + + ################################################################### + # controller/view relations + ################################################################### + MainController:index -> main_homepage; + MainController:edit -> main_edit -> MainController:update -> main_edit; + + #LoginController:login -> common_permission_denied; + #LoginController:logout -> common_invalid; + + SearchController:show_results -> search_results; + + MessagesController:new_alert -> messages_new_alert -> MessagesController:post_alert; + MessagesController:show_private -> messages_private -> MessagesController:post_private -> messages_private; + + TournamentsController:index -> tournaments_index; + TournamentsController:show -> tournaments_show; + TournamentsController:new -> tournaments_new -> TournamentsController:create -> tournaments_edit -> TournamentsController:end; + TournamentsController:edit -> tournaments_edit -> TournamentsController:update -> tournaments_edit; + + MatchesController:show -> matches_show; + MatchesController:edit -> matches_edit -> MatchesController:update -> matches_edit; + + TeamsController:index -> teams_index; + TeamsController:show -> teams_show; + TeamsController:edit -> teams_edit -> TeamsController:update -> teams_edit; + + UsersController:index -> users_index; + UsersController:show -> users_show; + UsersController:new -> users_new -> UsersController:create -> users_edit -> UsersController:delete; + UsersController:edit -> users_edit -> UsersController:update -> users_edit; + + ################################################################### + # controller/model relations + ################################################################### + Server:main -> MainController:edit; + MainController:update -> Server:main; + + User:main -> LoginController:login; + + Tournament:main -> SearchController:show_results; + Match:main -> SearchController:show_results; + Team:main -> SearchController:show_results; + User:main -> SearchController:show_results; + + Tournament:main -> TournamentsController:index; + Tournament:main -> TournamentsController:show; + Match:main -> TournamentsController:show; + Tournament:main -> TournamentsController:edit; + TournamentsController:create -> Tournament:main; + TournamentsController:update -> Tournament:main; + TournamentsController:end -> Tournament:main; + + Match:main -> MatchesController:index; + Match:main -> MatchesController:show; + Team:main -> MatchesController:show; + User:main -> MatchesController:show; + Match:main -> MatchesController:edit; + MatchesController:update -> Match:main; + + Team:main -> TeamsController:index; + Team:main -> TeamsController:show; + User:main -> TeamsController:show; + Team:main -> TeamsController:edit; + TeamsController:update -> Team:main; + + User:main -> UsersController:index; + User:main -> UsersController:show; + User:main -> UsersController:edit; + UsersController:create -> User:main; + UsersController:update -> User:main; + UsersController:delete -> User:main; +} |