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.
|
|
<?php
namespace App\AdminAgent\Metrics\Examples;
use App\Models\User;use Dcat\Admin\Admin;use Dcat\Admin\Widgets\Metrics\Donut;use Illuminate\Support\Arr;
class NewDevices extends Donut{ protected $labels = ['男性', '女性', '未知'];
/** * 初始化卡片内容 */ protected function init() { parent::init();
$color = Admin::color(); $colors = [$color->primary(), $color->alpha('blue2', 0.5)];
$this->title('用户性别');; $this->chartLabels($this->labels); // 设置图表颜色
$this->chartColors($colors); }
/** * 渲染模板 * * @return string */ public function render() { $this->fill();
return parent::render(); }
/** * 写入数据. * * @return void */ public function fill() { $gender = User::query()->where('agent_id', Admin::user()->id)->pluck('gender'); $man = $woman = $unkonw = 0; foreach ($gender as $v) { if ($v == 1) { $man++; } elseif ($v == 2) { $woman++; } else { $unkonw++; } } $this->withContent($man, $woman, $unkonw);
// 图表数据
$this->withChart([$man,$woman, $unkonw]); }
/** * 设置图表数据. * * @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, $unkonw) { $blue = Admin::color()->alpha('blue2', 0.5); $yellow = Admin::color()->yellow(); $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><div class="d-flex pl-1 pr-1" style="{$style}"> <div style="width: {$labelWidth}px"> <i class="fa fa-circle" style="color: $yellow"></i> {$this->labels[2]} </div> <div>{$unkonw}</div></div>HTML ); }}
|