summaryrefslogtreecommitdiff
path: root/docs/DesignDocument-classes.dot
blob: 000256d7073daa3c40f8044f03341d254119cd47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
digraph systemModel {
	rankdir="LR";
	splines="line";

	subgraph _clusterModels {
		label="Models"
		node[shape="record"];
		
		BaseModel[label="<main> ActiveRecord::Base (abstract)"]
		User[label="<main> User | <attr_role> role | <attr_pw> password hash"];
	}
	
	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()"];
		TournamentsController[label="<main> TournamentsController | <index> index() | <new> new() | <create> create() | <show> show() | <edit> edit() | <update> update() | <end> end()"];
		MessagesController[label="<main> MessagesController"];
		LoginController[label="<main> LoginController | <login> login() | <logout> logout()"];
		SearchController[label="<main> SearchController"];
		UsersController[label="<main> UsersController"];
		MatchesController[label="<main> 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;
	}
}