Examples TOCexamples TOC

Indeterminate

$Date: 2004/04/18 13:25:43 $

 Table of contents

Introduction

This example will run a ProgressBar Monitor in indeterminate mode then switch back to determinate mode when reached a limit-level (value=240).

[Top]

 PHP script

Build the progress bar

// Attach a progress bar custom model
$progress = new HTML_Progress();
$ui = & $progress->getUI();
$ui->setProgressAttributes(array(
    'background-color' => '#e0e0e0'
));        
$ui->setStringAttributes(array(
    'color'  => '#996',
    'background-color' => '#CCCC99'
));        
$ui->setCellAttributes(array(
    'active-color' => '#996'
));

$progress->setAnimSpeed(100);
$progress->setIncrement(10);
$progress->setStringPainted(true);     // get space for the string
$progress->setString("");              // but don't paint it
$progress->setIndeterminate(true);     // Progress start in indeterminate mode

User-Callback with rule to switch progress mode (indeterminate -> determinate)

function myProgressHandler($progressValue, &$obj)
{
    static $c;
    
    if (!isset($c)) { 
        $c = 0;
    }
    $c += 16;
    $obj->setCaption("completed $c out of 400");

    $bar =& $obj->getProgressElement();
    /* rules to determine when switch back from indeterminate to determinate mode */
    if ($c >= 240 && $bar->isIndeterminate()) {
        $bar->setIndeterminate(false);
        $bar->setString(null);           // show percent-info
        $bar->setValue(0);
    }
    if ($bar->getPercentComplete() == 1) {
        if ($bar->isIndeterminate()) {
            $bar->setValue(0);
        } else {
            $bar->setString('');            // hide percent-info
        }
    }
}

[Top]

 Render options

Here are options to build this progress bar :
background-color = #e0e0e0
HTML_Progress_UI::setProgressAttributes()
Here are options to build this progress bar string (percent text info):
color            = #996
background-color = #CCCC99
HTML_Progress_UI::setStringAttributes()
Here are options to build the progress bar cells :
active-color   = #996
HTML_Progress_UI::setCellAttributes()

[Top]

 Output

Screenshot

[Top]

 Play full example

Run the script below :


<?php 
require_once ('HTML/Progress/monitor.php');


function myProgressHandler($progressValue, &$obj)
{
    static $c;
    
    if (!isset($c)) { 
        $c = 0;
    }
    $c += 16;
    $obj->setCaption("completed $c out of 400");

    $bar =& $obj->getProgressElement();
    /* rules to determine when switch back from indeterminate to determinate mode */
    if ($c >= 240 && $bar->isIndeterminate()) {
        $bar->setIndeterminate(false);
        $bar->setString(null);           // show percent-info
        $bar->setValue(0);
    }
    if ($bar->getPercentComplete() == 1) {
        if ($bar->isIndeterminate()) {
            $bar->setValue(0);
        } else {
            $bar->setString('');            // hide percent-info
        }
    }
}

$monitor = new HTML_Progress_Monitor('frmMonitor', 
    array( 'button' => array('style' => 'width:80px;') )
           'title'  => 'Progress ...' )
);

// your custom user process goes here !
$monitor->setProgressHandler('myProgressHandler');

// Attach a progress bar custom model
$progress = new HTML_Progress();
$ui = & $progress->getUI();
$ui->setProgressAttributes(array(
    'background-color' => '#e0e0e0'
));        
$ui->setStringAttributes(array(
    'color'  => '#996',
    'background-color' => '#CCCC99'
));        
$ui->setCellAttributes(array(
    'active-color' => '#996'
));

$progress->setAnimSpeed(100);
$progress->setIncrement(10);
$progress->setStringPainted(true);     // get space for the string
$progress->setString("");              // but don't paint it
$progress->setIndeterminate(true);     // Progress start in indeterminate mode
$monitor->setProgressElement($progress);
?>
<html>
<head>
<title>Indeterminate Mode Progress example</title>
<style type="text/css">
<!--
.progressStatus {
    color:#000000; 
    font-size:10px;
}

body {
    background-color: #444444;
    color: #EEEEEE;
    font-family: Verdana, Arial;
}

<?php echo $monitor->getStyle(); ?>
// -->
</style>
<script type="text/javascript">
<!--
<?php echo $monitor->getScript(); ?>
//-->
</script>
</head>
<body>

<?php 
$renderer =& HTML_QuickForm::defaultRenderer();
$renderer->setFormTemplate('
    <table width="450" border="0" cellpadding="3" cellspacing="2" bgcolor="#CCCC99">
    <form{attributes}>{content}
    </form>
    </table>
');
$renderer->setHeaderTemplate('
    <tr>
    <td style="white-space:nowrap;background:#996;color:#ffc;" align="left" colspan="2"><b>{header}</b></td>
    </tr>
');
$monitor->accept($renderer);

// Display progress monitor dialog box
echo $renderer->toHtml();


$monitor->run();   
?>

</body>
</html>
href:  ./indeterminate.php

[Top]