digraph { overlap=false center=true splines=true sep="0.05" node [style=filled, shape=record, color="black" fillcolor="tomato" ] subgraph cluster_key { node [fillcolor="none"] subgraph cluster_doc { "Done"[done] "Documented"[documented] "Undocumented"[fillcolor="tomato"] } subgraph cluster_sub { "Depend on value" "Proxy to value" "Depend on function" "Proxy to function" } "Depend on value" -> "Node"[depend_value] "Proxy to value" -> "Node"[proxy_value] "Depend on function" -> "Node"[depend_function] "Proxy to function" -> "Node"[proxy_function] label="Key" } subgraph cluster_directives { subgraph cluster_primary { "Sleep" "Heat" label="Primary" } subgraph cluster_secondary { "All Kill" "Lighting Change" "Lighting Kill" subgraph cluster_directives_lighting { "Lighting Change" "Lighting Kill" label="Lighting" } subgraph cluster_directives_temperature { "Temperature Change" "Temperature Hold" "Temperature Kill" label="Temperature" } label="Secondary" } label="Directives" } subgraph cluster_sensor { "Temperature" label="Sensors" } subgraph cluster_api { subgraph cluster_api_sensor { "/api/sensor/temperature"[label="temperature"] label="sensor" } subgraph cluster_recipe { "/api/recipe/list"[label="list"] "/api/recipe/start"[label="start"] "/api/recipe/kill"[label="kill"] subgraph cluster_schedule { "/api/recipe/schedule/add"[label="add"] "/api/recipe/schedule/delete"[label="delete"] "/api/recipe/schedule/list"[label="list"] label="schedule" } label="recipe" } subgraph cluster_settings { subgraph cluster_time { "/api/settings/time/set"[label="set"] label="time" } subgraph cluster_lighting { "/api/settings/lighting/list"[label="list"] "/api/settings/lighting/set"[label="set"] label="lighting" } subgraph cluster_settings_recipe { "/api/settings/recipe/set"[label="set"] label="recipe" } label="settings" } label="api" } "All Kill" -> { "Temperature Kill" "Lighting Kill" }[proxy_function] "Temperature Change" -> { "Heat" "Sleep" }[depend_function] "Temperature Hold" -> { "Heat" "Sleep" }[depend_function] "Temperature Kill" -> "Heat"[proxy_function] { "Temperature Change" "Temperature Hold" } -> "Temperature"[depend_value] "/api/recipe/kill" -> "All Kill"[proxy_function] "/api/sensor/temperature" -> "Temperature"[proxy_value] // Description checklist /////////////////////////////////////////////////////// "/api/recipe/kill"[documented] "/api/recipe/list"[documented] "/api/recipe/schedule/add"[documented] "/api/recipe/schedule/delete"[documented] "/api/recipe/schedule/list"[documented] "/api/recipe/start"[documented] "/api/sensor/temperature"[documented] "/api/settings/recipe/set"[documented] "/api/settings/lighting/list"[documented] "/api/settings/lighting/set"[documented] "/api/settings/time/set"[documented] "All Kill"[documented] "Heat"[documented] "Lighting Change"[documented] "Lighting Kill"[documented] "Sleep"[documented] "Temperature Change"[documented] "Temperature Hold"[documented] "Temperature Kill"[documented] //////////////////////////////////////////////////////////////////////////////// }