/* 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 MelangeOverview { | |
/* 13 inches x 96 DPI is 1248 pixels wide */ | |
size="13,13"; | |
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"; | |
node [shape=box style=filled fillcolor=lightgrey color=black]; | |
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]; | |
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]; | |
30 -> 13 [style=invis]; | |
20 -> 13 [style=invis]; | |
13 -> 12 [style=invis]; | |
12 -> 11 [style=invis]; | |
11 -> 10 [style=invis]; | |
SoCModels -> AppEngine:DatastoreAPI; | |
SoCViews -> AppEngine:DjangoForms; | |
SoCControllers -> AppEngine:UsersAPI; | |
SoCViews -> SoCModels; | |
SoCViews -> SoCTemplates [constraint=false]; | |
SoCModels -> SoCViews [style=dashed constraint=false]; | |
SoCViews -> SoCControllers [style=dashed]; | |
SoCControllers -> SoCViews [constraint=false]; | |
SoCControllers -> SoCModels [constraint=false]; | |
subgraph cluster2 { | |
label="GSoC Melange Web Application"; | |
style=filled; | |
color=black; | |
fillcolor=lightgrey; | |
node [shape=box style=filled color=black fillcolor=white]; | |
GSoCController [label="GSoC-specific Controller" shape=diamond]; | |
GSoCViews [label="GSoC-only Views"]; | |
GSoCTemplates | |
[label="GSoC Django Templates" shape=ellipse style=solid color=white]; | |
GSoCModels [label="GSoC-only Models"]; | |
GSoCEntities | |
[label="GSoC Entities" shape=parallelogram style=solid color=white]; | |
22 [style=invis]; | |
21 [style=invis]; | |
20 [style=invis]; | |
{ rank=same; | |
"22"; "GSoCViews"; "GSoCTemplates"; | |
}; | |
{ rank=same; | |
"21"; | |
}; | |
{ rank=same; | |
"20"; "GSoCModels"; "GSoCController"; "GSoCEntities"; | |
}; | |
}; | |
22 -> 21 [style=invis]; | |
21 -> 20 [style=invis]; | |
GSoCModels -> SoCModels; | |
GSoCViews -> SoCViews; | |
GSoCController -> SoCControllers; | |
GSoCViews -> GSoCModels; | |
GSoCModels -> GSoCViews [style=dashed constraint=false]; | |
GSoCViews -> GSoCController [style=dashed]; | |
GSoCController -> GSoCViews [constraint=false]; | |
GSoCController -> GSoCModels [constraint=false]; | |
GSoCViews -> GSoCTemplates [constraint=false]; | |
GSoCModels -> GSoCEntities; | |
subgraph cluster3 { | |
label="GHOP Melange Web Application"; | |
style=filled; | |
color=black; | |
fillcolor=lightgrey; | |
node [shape=box style=filled color=black fillcolor=white]; | |
GHOPController [label="GHOP-specific Controller" shape=diamond]; | |
GHOPViews [label="GHOP-only Views"]; | |
GHOPTemplates | |
[label="GHOP Django Templates" shape=ellipse style=solid color=white]; | |
GHOPModels [label="GHOP-only Models"]; | |
GHOPEntities | |
[label="GHOP Entities" shape=parallelogram style=solid color=white]; | |
32 [style=invis]; | |
31 [style=invis]; | |
30 [style=invis]; | |
{ rank=same; | |
"32"; "GHOPViews"; "GHOPTemplates"; | |
}; | |
{ rank=same; | |
"31"; | |
}; | |
{ rank=same; | |
"30"; "GHOPModels"; "GHOPController"; "GHOPEntities"; | |
}; | |
}; | |
32 -> 31 [style=invis]; | |
31 -> 30 [style=invis]; | |
GHOPModels -> SoCModels; | |
GHOPViews -> SoCViews; | |
GHOPController -> SoCControllers; | |
GHOPViews -> GHOPModels; | |
GHOPModels -> GHOPViews [style=dashed constraint=false]; | |
GHOPViews -> GHOPController [style=dashed]; | |
GHOPController -> GHOPViews [constraint=false]; | |
GHOPController -> GHOPModels [constraint=false]; | |
GHOPViews -> GHOPTemplates [constraint=false color=white]; | |
GHOPModels -> GHOPEntities; | |
} |