summaryrefslogtreecommitdiff
path: root/doc/DesignDocument-classes.dot
diff options
context:
space:
mode:
Diffstat (limited to 'doc/DesignDocument-classes.dot')
-rw-r--r--doc/DesignDocument-classes.dot265
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;
+}