TbHtml::stackedProgressBar PHP Method

stackedProgressBar() public static method

Generates a stacked progress bar.
public static stackedProgressBar ( array $bars, array $htmlOptions = [] ) : string
$bars array the bar configurations.
$htmlOptions array additional HTML attributes.
return string the generated progress bar.
    public static function stackedProgressBar(array $bars, $htmlOptions = array())
    {
        if (!empty($bars)) {
            self::addCssClass('progress', $htmlOptions);
            $output = self::openTag('div', $htmlOptions);
            $totalWidth = 0;
            foreach ($bars as $barOptions) {
                if (isset($barOptions['visible']) && !$barOptions['visible']) {
                    continue;
                }
                $width = TbArray::popValue('width', $barOptions, 0);
                $tmp = $totalWidth;
                $totalWidth += $width;
                if ($totalWidth > 100) {
                    $width = 100 - $tmp;
                }
                $output .= self::bar($width, $barOptions);
            }
            $output .= '</div>';
            return $output;
        }
        return '';
    }

Usage Example

Exemplo n.º 1
0
 public function testStackedProgressBar()
 {
     $I = $this->codeGuy;
     $html = TbHtml::stackedProgressBar(array(array('color' => TbHtml::PROGRESS_COLOR_SUCCESS, 'width' => 35), array('color' => TbHtml::PROGRESS_COLOR_WARNING, 'width' => 20), array('color' => TbHtml::PROGRESS_COLOR_DANGER, 'width' => 10)));
     $progress = $I->createNode($html, 'div.progress');
     $I->seeNodeChildren($progress, array('div.bar-success', 'div.bar-warning', 'div.bar-danger'));
     $success = $progress->filter('div.bar-success');
     $I->seeNodeCssClass($success, 'bar');
     $I->seeNodeCssStyle($success, 'width: 35%');
     $warning = $progress->filter('div.bar-warning');
     $I->seeNodeCssClass($warning, 'bar');
     $I->seeNodeCssStyle($warning, 'width: 20%');
     $danger = $progress->filter('div.bar-danger');
     $I->seeNodeCssClass($danger, 'bar');
     $I->seeNodeCssStyle($danger, 'width: 10%');
     $html = TbHtml::stackedProgressBar(array(array('width' => 35), array('width' => 20), array('width' => 100)));
     $progress = $I->createNode($html, 'div.progress');
     $last = $progress->filter('div.bar')->last();
     $I->seeNodeCssStyle($last, 'width: 45%');
     $html = TbHtml::stackedProgressBar(array(array('width' => 35), array('width' => 20), array('width' => 10, 'visible' => false)));
     $progress = $I->createNode($html, 'div.progress');
     $last = $progress->filter('div.bar')->last();
     $I->seeNodeCssStyle($last, 'width: 20%');
     $html = TbHtml::stackedProgressBar(array());
     $this->assertEquals('', $html);
 }
All Usage Examples Of TbHtml::stackedProgressBar
TbHtml