digraph systemModel { rankdir="LR"; splines="line"; subgraph _clusterModels { label="Models" node[shape="record"]; //BaseModel[label="
ActiveRecord::Base (abstract)"] Server[label="
Server"]; Tournament[label="
Tournament"]; Match[label="
Match"]; Team[label="
Team"]; User[label="
User | role | 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="
ApplicationController (abstract)"]; MainController[label="
MainController | show_homepage() | edit_settings() | update_settings()"]; LoginController[label="
LoginController | login() | logout()"]; SearchController[label="
SearchController | show_results()"]; MessagesController[label="
MessagesController | new_alert() | post_alert() | show_private() | post_private()"]; TournamentsController[label="
TournamentsController | index() | show() | new() | create() | edit() | update() | end()"]; MatchesController[label="
MatchesController | index() | show() | edit() | update()"]; TeamsController[label="
TeamsController | index() | show() | edit() | update()"] UsersController[label="
UsersController | index() | show() | new() | create() | edit() | update() | 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; }