blob: 854c29cfbe051d3b18ff2831bb427e1c63a684ba [file] [log] [blame]
<?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;
}
}
########################################################################
?>