Class yii\debug\models\timeline\Svg

Inheritanceyii\debug\models\timeline\Svg » yii\base\BaseObject
Available since extension's version2.0.8
Source Code https://github.com/yiisoft/yii2-debug/blob/master/src/models/timeline/Svg.php

Svg is used to draw a graph using SVG

Protected Properties

Hide inherited properties

Property Type Description Defined By

Property Details

Hide inherited properties

$gradient public property

Color indicators svg graph.

public array $gradient = [
    
10 => '#d6e685',
    
60 => '#8cc665',
    
90 => '#44a340',
    
100 => '#1e6823',
]
$listenMessages public property

Listen messages panels

public array $listenMessages = [
    
'log',
    
'profiling',
]
$panel protected property
$points protected property

Each point is define by a X and a Y coordinate.

protected array $points = []
$stroke public property

Stroke color

public string $stroke '#1e6823'
$template public property

Svg template

public string $template '<svg xmlns="http://www.w3.org/2000/svg" width="{x}" height="{y}" viewBox="0 0 {x} {y}" preserveAspectRatio="none"><defs>{linearGradient}</defs><g><polygon points="{polygon}" fill="url(#gradient)"/><polyline points="{polyline}" fill="none" stroke="{stroke}" stroke-width="1"/></g></svg>'
$x public property

Max X coordinate

public integer $x 1920
$y public property

Max Y coordinate

public integer $y 40

Method Details

Hide inherited methods

__construct() public method

public void __construct ( yii\debug\panels\TimelinePanel $panel, $config = [] )
$panel
$config

                public function __construct(TimelinePanel $panel, $config = [])
{
    parent::__construct($config);
    $this->panel = $panel;
    foreach ($this->listenMessages as $panel) {
        if (isset($this->panel->module->panels[$panel]->data['messages'])) {
            $this->addPoints($this->panel->module->panels[$panel]->data['messages']);
        }
    }
}

            
__toString() public method

public string __toString ( )

                public function __toString()
{
    if ($this->points === []) {
        return '';
    }
    return strtr($this->template, [
        '{x}' => StringHelper::normalizeNumber($this->x),
        '{y}' =>  StringHelper::normalizeNumber($this->y),
        '{stroke}' => $this->stroke,
        '{polygon}' => $this->polygon(),
        '{polyline}' => $this->polyline(),
        '{linearGradient}' => $this->linearGradient()
    ]);
}

            
addPoints() protected method

protected integer addPoints ( $messages )
$messages array

Log messages. See Logger::messages for the structure

return integer

Added points

                protected function addPoints($messages)
{
    $hasPoints = $this->hasPoints();
    $memory = $this->panel->memory / 100; // 1 percent memory
    $yOne = $this->y / 100; // 1 percent Y coordinate
    $xOne = $this->panel->duration / $this->x; // 1 percent X coordinate
    $i = 0;
    foreach ($messages as $message) {
        if (empty($message[5])) {
            break;
        }
        ++$i;
        $this->points[] = [
            ($message[3] * 1000 - $this->panel->start) / $xOne,
            $this->y - ($message[5] / $memory * $yOne),
        ];
    }
    if ($hasPoints && $i) {
        usort($this->points, function ($a, $b) {
            return ($a[0] < $b[0]) ? -1 : 1;
        });
    }
    return $i;
}

            
hasPoints() public method

public boolean hasPoints ( )
return boolean

Has points

                public function hasPoints()
{
    return ($this->points !== []);
}

            
linearGradient() protected method

protected string linearGradient ( )

                protected function linearGradient()
{
    $gradient = '<linearGradient id="gradient" x1="0" x2="0" y1="1" y2="0">';
    foreach ($this->gradient as $percent => $color) {
        $gradient .= '<stop offset="' . StringHelper::normalizeNumber($percent) . '%" stop-color="' . $color . '"></stop>';
    }
    return $gradient . '</linearGradient>';
}

            
polygon() protected method

protected string polygon ( )
return string

Points attribute for polygon path

                protected function polygon()
{
    $str = "0 $this->y ";
    foreach ($this->points as $point) {
        list($x, $y) = $point;
        $str .= "{$x} {$y} ";
    }
    $str .= $this->x - 0.001 . " {$y} {$this->x} {$this->y}";
    return StringHelper::normalizeNumber($str);
}

            
polyline() protected method

protected string polyline ( )
return string

Points attribute for polyline path

                protected function polyline()
{
    $str = "0 $this->y ";
    foreach ($this->points as $point) {
        list($x, $y) = $point;
        $str .= "{$x} {$y} ";
    }
    $str .= "$this->x {$y}";
    return StringHelper::normalizeNumber($str);
}