آموزش صفر تا صد نصب و راهاندازی Larapex Charts در لاراول
استفاده از نمودارها بهترین ابزار برای خلاصهسازی دادههای حجیم دیتابیس و نمایش آنها به کاربران است. در فرآیند توسعه وب و به خصوص در طراحی پنل مدیریت، طراحی CRM یا حتی طراحی ERP، نمایش بصری دادهها اهمیت دوچندانی پیدا میکند. در این مقاله قصد داریم قدمبهقدم طبق مستندات وبسایت رسمی پکیج Larapex Charts جلو برویم و یاد بگیریم چطور انواع چارتهای جذاب را در لایه فرانتاِند لاراول رندر کنیم. این مبحث برای هر توسعه دهنده Laravel یا برنامه نویس Laravel که به دنبال پیادهسازی اصولی گزارشهای گرافیکی است، اهمیت بالایی دارد.
⚡ قدم اول: نصب پکیج و انتشار فایل کانفیگ
ابتدا ترمینال پروژه خود را باز کرده و با اجرای دستور زیر، پکیج را از طریق کامپوزر نصب کنید:
composer require arielmejiadev/larapex-chartsپس از اتمام نصب، برای دسترسی به تنظیمات اصلی پکیج (مانند تغییر فونتها یا رنگهای پیشفرض)، باید فایل پیکربندی را با دستور زیر در پروژه خود پابلیش (منتشر) کنید:
php artisan vendor:publish --tag=larapex-charts-config📊 قدم دوم: ساخت کلاس نمودار با منوی انتخابی ترمینال
حالا یک کلاس اختصاصی برای مدیریت دادههای نمودار میسازیم:
php artisan make:chart MonthlyUsersChart"نکته مهم در ترمینال"
به محض اجرای این دستور، لاراول از شما میپرسد که مایلید از کدام نوع چارت استفاده کنید. کافیست با کلیدهای جهتنما (Arrow Keys) روی گزینه مورد نظر (مثلاً Pie Chart) بروید و کلید Enter را بزنید.
حالا فایل نمودار شما در مسیر app/Charts/MonthlyUsersChart.php آماده ویرایش است تا به عنوان یک برنامه نویس وب یا توسعه دهنده وب بتوانید دادهها را به شکل بهینه مدیریت کنید.
کافی است این فایل را باز کرده و ساختار آن را به شکل زیر پیکربندی کنید:
namespace App\Charts;
use ArielMejiaDev\LarapexCharts\LarapexChart;
class MonthlyUsersChart
{
public function build()
{
return (new LarapexChart)->pieChart()
->setTitle('Top 3 scorers of the team.')
->setSubtitle('Season 2021.')
->addData([40, 50, 30])
->setLabels(['Player 7', 'Player 10', 'Player 9']);
}
}این متد به صورت پیشفرض یک نمودار دایرهای (Pie Chart) با دادههای استاتیک ایجاد میکند که بعداً میتوانید آن را به بانک اطلاعاتی متصل کنید؛ ابزاری حیاتی که در پروژه هایی مثل طراحی فروشگاه اینترنتی یا ساخت سامانه آنلاین، به توسعه دهنده Laravel کمک میکند گزارشهای بصری خیرهکنندهای برای بخش مدیریتی خلق کند.
⚙️ قدم سوم: اتصال نمودار به کنترلر و روت
ابتدا یک کنترلر به صورت Resource بسازید:
php artisan make:controller UserController -rسپس فایل app/Http/Controllers/UserController.php را باز کرده و کلاس چارت را به متد index تزریق کنید:
namespace App\Http\Controllers;
use App\Charts\MonthlyUsersChart;
class UserController extends Controller
{
public function index(MonthlyUsersChart $chart)
{
return view("users.index", ["chart" => $chart->build()]);
}
}حالا مسیر زیر را در فایل routes/web.php بنویسید تا درخواستها به کنترلر هدایت شوند:
use App\Http\Controllers\UserController;
Route::get("/users", [UserController::class, "index"])->name("users.index");🖥️ قدم چهارم: نمایش چارت در قالب Blade (با Tailwind CSS)
یک فایل ویو در مسیر resources/views/users/index.blade.php ایجاد کنید و کدهای زیر را درون آن قرار دهید:
<!doctype html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>نمونه نمودار لاراول</title>
<link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="h-screen bg-gray-100">
<div class="container px-4 mx-auto">
<div class="p-6 m-20 bg-white rounded shadow">
{!! $chart->container() !!}
</div>
</div>
<script src="{{ $chart->cdn() }}"></script>
{{ $chart->script() }}
</body>
</html>💡 بررسی متدها و پیشنمایش گرافیکی انواع چارتها
برای تغییر نوع نمودار، کافیست متد بازگشتی را در متد build کلاس چارت خود عوض کنید. در باکسهای زیر کدهای کنترلر به همراه خروجی زنده و بصری آنها شبیهسازی شده است که این ساختار تاثیر مستقیمی بر بهبود شاخصهای Laravel Performance در مانیتورینگ سیستم دارد:
۱. نمودار دایرهای (Pie Chart)
مناسب برای نشان دادن سهمهای مختلف از یک کل (مانند برترین گلزنان تیم)
<?php
return (new LarapexChart)->pieChart()
->setTitle("Top 3 scorers of the team.")
->setSubtitle("Season 2021.")
->addData([20, 24, 30])
->setLabels(["Player 7", "Player 10", "Player 9"]);۲. نمودار حلقوی (Radial Chart)
فوقالعاده برای نمایش میزان پیشرفت یا بازدهی مقایسهای با رنگبندی دلخواه
<?php
return (new LarapexChart)->radialChart()
->setTitle("Passing effectiveness.")
->setSubtitle("Barcelona city vs Madrid sports.")
->addData([75, 60])
->setLabels(["Barcelona city", "Madrid sports"])
->setColors(["#D32F2F", "#03A9F4"]);۳. نمودار قطبی (Polar Area Chart)
یک جایگزین جذاب برای نمودارهای دایرهای زمانی که شعاع هر بخش مقادیر متفاوتی دارد
<?php
return (new LarapexChart)->polarAreaChart()
->setTitle("Top 3 scorers of the team.")
->setSubtitle("Season 2021.")
->addData([20, 24, 30])
->setLabels(["Player 7", "Player 10", "Player 9"]);۴. نمودار خطی (Line Chart)
بهترین انتخاب برای نمایش روند تغییرات در طول ماههای سال (مانند مقایسه فروش)
<?php
return (new LarapexChart)->lineChart()
->setTitle("Sales during 2021.")
->setSubtitle("Physical sales vs Digital sales.")
->addData([40, 93, 35, 42, 18, 82], "Physical sales")
->addData([70, 29, 77, 28, 55, 45], "Digital sales")
->setXAxis(["January", "February", "March", "April", "May", "June"]);۵. نمودار مساحتی (Area Chart)
نمایش روند تغییرات فروش فیزیکی و دیجیتال در طول زمان
<?php
return (new LarapexChart)->areaChart()
->setTitle("Sales during 2021.")
->setSubtitle("Physical sales vs Digital sales.")
->addData([40, 93, 35, 42, 18, 82], "Physical sales")
->addData([70, 29, 77, 28, 55, 45], "Digital sales")
->setXAxis(["January", "February", "March", "April", "May", "June"]);۶. نمودار ستونی عمودی (Bar Chart)
مقایسه تعداد بردهای دو تیم سانفرانسیسکو و بوستون
<?php
return (new LarapexChart)->barChart()
->setTitle("San Francisco vs Boston.")
->setSubtitle("Wins during season 2021.")
->addData([6, 9, 3, 4, 10, 8], "San Francisco")
->addData([7, 3, 8, 2, 6, 4], "Boston")
->setXAxis(["January", "February", "March", "April", "May", "June"]);۷. نمودار ستونی افقی (Horizontal Bar Chart)
مقایسه افقی بردهای لسآنجلس و میامی
<?php
return (new LarapexChart)->horizontalBarChart()
->setTitle("Los Angeles vs Miami.")
->setSubtitle("Wins during season 2021.")
->addData([6, 9, 3, 4, 10, 8], "Los Angeles")
->addData([7, 3, 8, 2, 6, 4], "Miami")
->setXAxis(["January", "February", "March", "April", "May", "June"]);۸. نمودار حرارتی (Heatmap Chart)
تراکم تعداد پوشهای کد در روزهای هفته طی ۴ هفته
<?php
return (new LarapexChart)->heatMapChart()
->setTitle("Code Push Activity")
->addData([5, 12, 8, 15, 23, 18], "Week 1")
->addData([8, 15, 20, 12, 9, 25], "Week 2")
->addData([12, 8, 14, 22, 17, 10], "Week 3")
->addData([18, 22, 15, 11, 20, 16], "Week 4")
->setXAxis(["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);۹. نمودار راداری (Radar Chart)
تحلیل و مقایسه ویژگیهای مهارتی بازیکن در فصل اول
<?php
return (new LarapexChart)->radarChart()
->setTitle("Individual Player Stats.")
->setSubtitle("Season 2021.")
->addData([70, 93, 78, 97, 50, 90], "First Season")
->setXAxis(["Pass", "Dribble", "Shot", "Stamina", "Long shots", "Tactical"])
->setMarkers(["#303F9F"], 7, 10);