| <?php | |
| ######################################################################## | |
| class Process | |
| { | |
| public $name; | |
| public $description; | |
| public $states = array(); | |
| function __construct($name, $description="") | |
| { | |
| $this->name = $name; | |
| $this->description = $description; | |
| } | |
| function addState($name, $coords=NULL, $shape="rect") | |
| { | |
| return $this->states[count($this->states)] = new State($name, $coords, $shape); | |
| } | |
| function render() | |
| { | |
| print '<p><img class="diagram" id="' . $this->name . '" src="' . $this->name . '.png" usemap="#' . $this->name . '"></p>' . "\n"; | |
| print '<map name="' . $this->name . '">' . "\n"; | |
| foreach ($this->states as $state) | |
| { | |
| print ' <area shape="' . $state->shape . '" coords="' . $state->coords . '" href="#' . $state->name . '" />' . "\n"; | |
| } | |
| print '</map>' . "\n"; | |
| print "<br><br><br>\n"; | |
| foreach ($this->states as $state) | |
| { | |
| $state->render(); | |
| } | |
| } | |
| } | |
| class State | |
| { | |
| public $name; | |
| public $shape; | |
| public $coords; | |
| public $description; | |
| public $transitions = array(); | |
| function __construct($name, $coords=NULL, $shape="rect") | |
| { | |
| $this->name = $name; | |
| $this->coords = $coords; | |
| $this->shape = $shape; | |
| } | |
| function addTransition($name, $result) | |
| { | |
| return $this->transitions[count($this->transitions)] = new Transition($name, $result); | |
| } | |
| function render() | |
| { | |
| // print '<div><a name="' . $this->name . '"/></div>' . "\n"; | |
| print '<div class="box" id="' . $this->name . '">' . "\n"; | |
| // print ' <table class="state"><tr>' . "\n"; | |
| // print ' <td class="statename" valign="top" width="190"><img src="images/' . $this->name . '.png"/></td>' . "\n"; | |
| // print ' <td class="statedesc" valign="top">' . $this->description . '</td>' . "\n"; | |
| // print ' </tr></table>' . "\n"; | |
| print ' <div class="transitions">' . "\n"; | |
| foreach ($this->transitions as $transition) | |
| { | |
| $transition->render($this); | |
| } | |
| print ' </div>' . "\n"; | |
| print '</div>' . "\n"; | |
| } | |
| } | |
| class Transition | |
| { | |
| public $name; | |
| public $result; | |
| public $description; | |
| public $actions = array(); | |
| function __construct($name, $result, $description="") | |
| { | |
| $this->name = $name; | |
| $this->result = $result; | |
| $this->description = $description; | |
| } | |
| function addAction($field, $description="") | |
| { | |
| $this->actions[count($this->actions)] = new Action($field, $description); | |
| return $this; | |
| } | |
| function render($current) | |
| { | |
| print ' <table class="trans"><tr>' . "\n"; | |
| print ' <td class="transpic" valign="top" width="370">' . "\n"; | |
| print ' <a href="#' . $current->name . '"><img src="images/' . $current->name . '.png"/></a>'; | |
| print ($current->name == "start") ? '<img src="images/line.png"/>' : ""; | |
| print '<img src="images/transition.png"/>'; | |
| print '<a href="#' . $this->result->name . '"><img src="images/' . $this->result->name . '.png"/></a>' . "\n"; | |
| print ' </td>' . "\n"; | |
| print ' <td valign="top">' . "\n"; | |
| print ' <h3 class="transname">' . $this->name . '</h3>' . "\n"; | |
| if ($this->description != "") | |
| { | |
| print ' <p class="transdesc">' . $this->description . '</p>' . "\n"; | |
| } | |
| print ' <table class="actions">' . "\n"; | |
| foreach ($this->actions as $action) | |
| { | |
| print " <tr><td valign=\"top\"><b>$action->field</b>:</td><td valign=\"top\">$action->description</td></tr>\n"; | |
| } | |
| print ' </table>' . "\n"; | |
| print ' </td>' . "\n"; | |
| print ' </tr></table>' . "\n"; | |
| } | |
| } | |
| class Action | |
| { | |
| public $field; | |
| public $description; | |
| function __construct($field, $description="") | |
| { | |
| $this->field = $field; | |
| $this->description = $description; | |
| } | |
| } | |
| ######################################################################## | |
| ?> |