|
|
<?phpnamespace App\Admin\Extensions\Chart\Bar;
use Dcat\Admin\Admin;use Dcat\Admin\Widgets\ApexCharts\Chart;use Dcat\Admin\Widgets\Metrics\Bar;
class OrderBar extends Chart{ protected $_data; public function __construct($data=[]) { parent::__construct($containerSelector=null, $options=[]); $this->_data = $data; $this->setUpOptions(); }
/** * 初始化图表配置 */ protected function setUpOptions() { $color = Admin::color(); $colors = [$color->primary(), $color->primaryDarker()];
$this->options([ 'colors' => $colors, 'chart' => [ 'type' => 'bar', 'height' => 430, ], 'plotOptions' => [ 'bar' => [ 'horizontal' => false, 'dataLabels' => [ 'position' => 'top', ], ] ], 'dataLabels' => [ 'enabled' => true, 'offsetX' => -6, 'style' => [ 'fontSize' => '12px', 'colors' => ['#fff'] ] ], 'stroke' => [ 'show' => true, 'width' => 1, 'colors' => ['#fff'] ], 'xaxis' => [ 'categories' => [], ], ]); }
/** * 处理图表数据 */ protected function buildData() { $orderType = request()->input('order_type')??'amount'; // 执行你的数据查询逻辑
$data = [ [ 'name'=>'订单金额', 'data' =>$orderType=='num'? $this->_data['num']:$this->_data['amount'] ], ]; $categories = $this->_data['time']; $this->withData($data); $this->withCategories($categories); }
/** * 设置图表数据 * * @param array $data * * @return $this */ public function withData(array $data) { return $this->option('series', $data); }
/** * 设置图表类别. * * @param array $data * * @return $this */ public function withCategories(array $data) { return $this->option('xaxis.categories', $data); }
/** * 渲染图表 * * @return string */ public function render() { $this->buildData();
return parent::render(); }
}
|