digraph systemModel { rankdir="LR"; splines="line"; subgraph _clusterModels { label="Models" node[shape="record"]; BaseModel[label="
ActiveRecord::Base (abstract)"] User[label="
User | role | password hash"]; } subgraph _clusterControllers { label="Controllers"; node[shape="record"]; ApplicationController[label="
ApplicationController (abstract)"]; MainController[label="
MainController | show_homepage() | edit_settings() | update_settings()"]; TournamentsController[label="
TournamentsController | index() | new() | create() | show() | edit() | update() | end()"]; MessagesController[label="
MessagesController"]; LoginController[label="
LoginController | login() | logout()"]; SearchController[label="
SearchController"]; UsersController[label="
UsersController"]; MatchesController[label="
MatchesController"]; } subgraph _clusterViews { label="views/"; node[shape="rectangle"] layouts_application[label="layouts/application.html (abstract)"] subgraph clusterViewsCommon { label="views/common/"; common_permission_denied; common_invalid; } subgraph clusterViewsMain { label="views/main/"; main_homepage; main_edit; } subgraph clusterViewsTournament { label="views/tournament/"; tournaments_index; tournaments_new; tournaments_show; tournaments_edit; } subgraph clusterViewsMessages { label="views/messages/"; messages_private; messages_new_alert; } } subgraph inheritance { edge[arrowhead="onormal"]; MainController:main -> ApplicationController; ApplicationController -> MainController:main[style=invis]; TournamentsController:main -> ApplicationController; ApplicationController -> TournamentsController:main[style=invis]; MessagesController:main -> ApplicationController; ApplicationController -> MessagesController:main[style=invis]; LoginController:main -> ApplicationController; ApplicationController -> LoginController:main[style=invis]; SearchController:main -> ApplicationController; ApplicationController -> SearchController:main[style=invis]; UsersController:main -> ApplicationController; ApplicationController -> UsersController:main[style=invis]; MatchesController:main -> ApplicationController; ApplicationController -> MatchesController:main[style=invis]; } subgraph controller2view { layouts_application -> LoginController:login; layouts_application -> LoginController:logout; MainController:index -> main_homepage; MainController:edit -> main_edit -> MainController:update; MainController:edit -> common_permission_denied; MainController:update -> main_edit; MainController:update -> common_permission_denied; TournamentsController:index -> tournaments_index; TournamentsController:new -> tournaments_new -> TournamentsController:create; TournamentsController:create -> tournaments_edit -> TournamentsController:end; TournamentsController:show -> tournaments_show; TournamentsController:edit -> tournaments_edit -> TournamentsController:update; TournamentsController:update -> tournaments_edit TournamentsController:edit -> common_permission_denied; TournamentsController:end -> common_permission_denied; MessagesController -> messages_private; MessagesController -> messages_new_alert; LoginController:login -> common_permission_denied; LoginController:logout -> common_invalid; } }