/* 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;
}
