blob: 457fca805196cf4116babd872d7014b3bc7d689b [file] [log] [blame]
/* Copyright 2008 Google Inc.
This work is licensed under a Creative Commons Attribution 2.5 License.
For information, see:
http://creativecommons.org/licenses/by/2.5/
For the actual license text, see:
http://creativecommons.org/licenses/by/2.5/legalcode
*/
digraph SoCOverview {
/* 11 inches x 96 DPI is 1056 pixels wide */
size="11,11";
node [shape=box];
subgraph cluster0 {
color="white";
AppEngine
[shape=record style=filled fillcolor=lightgrey color=black
label="{{ <DatastoreAPI> Datastore API | <UsersAPI> Users API | <DjangoForms> Django Forms }| Google App Engine}"]
00 [style=invis];
/* manually assigned "level" ranks to produce an easier-to-read graph */
{ rank=same;
"00"; "AppEngine";
};
};
/* invisible "level" graph to enable assigned of levels to groups of nodes */
01 [style=invis];
01 -> 00 [style=invis];
10 -> 01 [style=invis];
subgraph cluster1 {
label="SoC Framework";
style=filled;
color=black;
fillcolor=lightgrey;
node [shape=box style=filled color=black fillcolor=white];
SoCModels [label="Common Models (Person, Work, Group, Program, etc.)"];
SoCViews [label="Common Views (Models, Actions, Reports, etc.)"];
SoCTemplates
[label="Base Django Templates" shape=ellipse style=solid color=white];
SoCControllers
[label="Generic Controllers (Auth, Membership, Attach, etc.)" shape=diamond];
12 [style=invis];
11 [style=invis];
10 [style=invis];
{ rank=same;
"12"; "SoCViews";
};
{ rank=same;
"10"; "SoCControllers"; "SoCModels";
};
};
13 [style=invis];
13 -> 12 [style=invis];
12 -> 11 [style=invis];
11 -> 10 [style=invis];
SoCViews -> AppEngine:DjangoForms;
SoCControllers -> AppEngine:UsersAPI;
SoCModels -> AppEngine:DatastoreAPI;
SoCViews -> SoCModels;
SoCViews -> SoCTemplates [constraint=false];
SoCModels -> SoCViews [style=dashed constraint=false];
SoCViews -> SoCControllers [style=dashed];
SoCControllers -> SoCViews [constraint=false];
SoCControllers -> SoCModels [constraint=false];
}