blob: 1a5b96fc566fba90a67b3bbfa8310e19d2a88625 [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 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;
}