abhilash / sales-charts
生成销售图表
dev-master
2021-12-15 12:20 UTC
Requires
- php: ^7.4|^8.0
This package is auto-updated.
Last update: 2024-09-15 18:24:32 UTC
README
生成销售图表
安装
composer require abhilash/sales-chart
使用
如果您想生成上述图表,根据您的选择按月和年分组 project_price 和 project_submit_date 或 created_at 值,以下是代码。
控制器:
use Abhilash\SalesCharts\SalesChartServices\SalesCharts;
// ...
$groupBy = function ($item) {
return Carbon::create($item->project_submit_date)->format("Y-m");
};
$map_condition_for_completed = function ($func) {
if ($func->status != 'completed') {
$func->price = 0;
}
return $func;
};
$map_condition_for_ongoing = function ($func) {
if ($func->status != 'ongoing') {
$func->price = 0;
}
return $func;
};
$select_condition = function ($query) {
return $query->select('payment_projects.price as price', 'projects.price as total_price', 'project_submit_date', 'status');
};
$options_for_completed_project = [
'chart_type' => 'line',
'label_name' => 'Completed',
'chart_title' => 'sales_price',
'model' => Projects::class, //model name to be entered
'order_by' => 'project_submit_date',
'label_field' => 'project_submit_date',
'group_by' => $groupBy,
'map_condition' => $map_condition_for_completed,
'chart_options' => [
'backgroundColor' => 'rgba(60, 141, 188, 0.9)',
'borderColor' => 'rgba(60, 141, 188, 0.8)',
]
];
$options_for_ongoing_project = [
'chart_type' => 'line',
'label_name' => 'Ongoing',
'chart_title' => 'sales_price',
'model' => Projects::class, //model name to be entered
'order_by' => 'project_submit_date',
'label_field' => 'project_submit_date',
'group_by' => $groupBy,
'map_condition' => $map_condition_for_ongoing,
'join_type' => 'leftjoin',
'select_condition' => $select_condition,
'join_condition' => ['payment_projects', 'payment_projects.projects_id', 'projects.id'],
'chart_options' => [
'backgroundColor' => 'rgba(210, 214, 222, 1)',
'borderColor' => 'rgba(210, 214, 222, 1)'
],
];
$chart = new SalesCharts($options_for_ongoing_project, $options_for_completed_project); //can pass either 1 or 2 arguments based on your requirement
return view('dashboard', compact('chart'));
视图文件
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Dashboard</div>
<div class="card-body">
{!! $chart->renderHtml() !!}
</div>
</div>
</div>
</div>
</div>
@endsection
@section('js')
{!! $chart->renderScripts() !!}
@endsection