You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							100 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							100 lines
						
					
					
						
							2.0 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								namespace App\Admin\Metrics\Examples;
							 | 
						|
								
							 | 
						|
								use Dcat\Admin\Admin;
							 | 
						|
								use Dcat\Admin\Widgets\Metrics\Donut;
							 | 
						|
								
							 | 
						|
								class NewDevices extends Donut
							 | 
						|
								{
							 | 
						|
								    protected $labels = ['Desktop', 'Mobile'];
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * 初始化卡片内容
							 | 
						|
								     */
							 | 
						|
								    protected function init()
							 | 
						|
								    {
							 | 
						|
								        parent::init();
							 | 
						|
								
							 | 
						|
								        $color = Admin::color();
							 | 
						|
								        $colors = [$color->primary(), $color->alpha('blue2', 0.5)];
							 | 
						|
								
							 | 
						|
								        $this->title('New Devices');
							 | 
						|
								        $this->subTitle('Last 30 days');
							 | 
						|
								        $this->chartLabels($this->labels);
							 | 
						|
								        // 设置图表颜色
							 | 
						|
								        $this->chartColors($colors);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * 渲染模板
							 | 
						|
								     *
							 | 
						|
								     * @return string
							 | 
						|
								     */
							 | 
						|
								    public function render()
							 | 
						|
								    {
							 | 
						|
								        $this->fill();
							 | 
						|
								
							 | 
						|
								        return parent::render();
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * 写入数据.
							 | 
						|
								     *
							 | 
						|
								     * @return void
							 | 
						|
								     */
							 | 
						|
								    public function fill()
							 | 
						|
								    {
							 | 
						|
								        $this->withContent(44.9, 28.6);
							 | 
						|
								
							 | 
						|
								        // 图表数据
							 | 
						|
								        $this->withChart([44.9, 28.6]);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * 设置图表数据.
							 | 
						|
								     *
							 | 
						|
								     * @param array $data
							 | 
						|
								     *
							 | 
						|
								     * @return $this
							 | 
						|
								     */
							 | 
						|
								    public function withChart(array $data)
							 | 
						|
								    {
							 | 
						|
								        return $this->chart([
							 | 
						|
								            'series' => $data
							 | 
						|
								        ]);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * 设置卡片头部内容.
							 | 
						|
								     *
							 | 
						|
								     * @param mixed $desktop
							 | 
						|
								     * @param mixed $mobile
							 | 
						|
								     *
							 | 
						|
								     * @return $this
							 | 
						|
								     */
							 | 
						|
								    protected function withContent($desktop, $mobile)
							 | 
						|
								    {
							 | 
						|
								        $blue = Admin::color()->alpha('blue2', 0.5);
							 | 
						|
								
							 | 
						|
								        $style = 'margin-bottom: 8px';
							 | 
						|
								        $labelWidth = 120;
							 | 
						|
								
							 | 
						|
								        return $this->content(
							 | 
						|
								            <<<HTML
							 | 
						|
								<div class="d-flex pl-1 pr-1 pt-1" style="{$style}">
							 | 
						|
								    <div style="width: {$labelWidth}px">
							 | 
						|
								        <i class="fa fa-circle text-primary"></i> {$this->labels[0]}
							 | 
						|
								    </div>
							 | 
						|
								    <div>{$desktop}</div>
							 | 
						|
								</div>
							 | 
						|
								<div class="d-flex pl-1 pr-1" style="{$style}">
							 | 
						|
								    <div style="width: {$labelWidth}px">
							 | 
						|
								        <i class="fa fa-circle" style="color: $blue"></i> {$this->labels[1]}
							 | 
						|
								    </div>
							 | 
						|
								    <div>{$mobile}</div>
							 | 
						|
								</div>
							 | 
						|
								HTML
							 | 
						|
								        );
							 | 
						|
								    }
							 | 
						|
								}
							 |