* @package HTML_Progress */ require_once ('HTML/Progress.php'); require_once ('HTML/Progress/observer.php'); // 1. Defines ProgressBar observer class Bar1Observer extends HTML_Progress_Observer { function Bar1Observer() { $this->HTML_Progress_Observer(); } function notify($event) { global $bar2; if (is_array($event)) { $log = isset($event['log']) ? $event['log'] : "undefined event id."; $val = isset($event['value']) ? $event['value'] : "unknown value"; switch (strtolower($log)) { case 'incvalue': // if you want to do special on each step of progress bar1; it's here !!! break; case 'setvalue': if ($val == 0) { // updates $bar2 because $bar1 has completed a full loop $bar2->incValue(); $bar2->display(); } default: } } } } // 2. Creates ProgressBar $bar1 = new HTML_Progress(HTML_PROGRESS_BAR_VERTICAL); $bar1->setIncrement(10); $bar1->setIdent('PB1'); $bar2 = new HTML_Progress(HTML_PROGRESS_BAR_VERTICAL); $bar2->setIncrement(25); $bar2->setIdent('PB2'); $bar2->setBorderPainted(true); // 3. Creates and attach a listener $observer = new Bar1Observer(); $ok = $bar1->addListener($observer); if (!$ok) { die ("Cannot add a valid listener to progress bar !"); } // 4. Changes look-and-feel of ProgressBar $ui1 =& $bar1->getUI(); $ui1->setComment('Complex Observer ProgressBar example'); $ui1->setTabOffset(1); $ui1->setProgressAttributes(array( 'background-color' => '#e0e0e0' )); $ui1->setStringAttributes(array( 'valign' => 'left', 'color' => 'red', 'background-color' => 'lightblue' )); $ui2 =& $bar2->getUI(); $ui2->setTabOffset(1); $ui2->setBorderAttributes(array( 'width' => 1, 'style' => 'solid', 'color' => 'navy' )); $ui2->setCellAttributes(array( 'active-color' => '#3874B4', 'inactive-color' => '#EEEECC' )); $ui2->setStringAttributes(array( 'width' => '100', 'align' => 'center', 'valign' => 'right', 'color' => 'yellow', 'background-color' => 'lightblue' )); ?> Complex Observer ProgressBar example

toHTML(); ?> toHTML(); ?>
display(); if ($bar1->getPercentComplete() == 1) { $bar1->setValue(0); // the 1st progress bar has reached 100%, do a new loop } else { $bar1->incValue(); // updates 1st progress bar } } while($bar2->getPercentComplete() < 1); ?>

<< Back examples TOC