پرش به مطلب اصلی

Highchart

کامپوننت x-high-chart یک کامپوننت قدرتمند Blade برای استفاده از کتابخانه Highcharts در قالب لاراول است که امکان نمایش انواع نمودارهای تعاملی و قابل تنظیم را فراهم می‌کند.


ویژگی‌ها

  • پشتیبانی از انواع نمودارها: ستون، میله‌ای، دایره‌ای، خطی و ...
  • امکان تعریف داده‌های مختلف برای تب‌ها
  • کاملاً واکنش‌گرا (Responsive)
  • پشتیبانی از نمایش راست به چپ (RTL)
  • قابل شخصی‌سازی با تمام گزینه‌های Highcharts

ورودی‌های کامپوننت

نام پراپنوع دادهمقدار پیش‌فرضتوضیحات
idstringauto-generatedشناسه اختصاصی برای ظرف نمودار (در صورت عدم ارسال، به‌صورت خودکار تولید می‌شود)
typestringnullنوع نمودار (pie، column، line، bar, area, spline, areaspline) — اختیاری
seriesarray[]آرایه‌ای از داده‌ها برای رسم نمودار
optionsarray[]تنظیمات پیشرفته Highcharts مانند عنوان، محور‌ها، Tooltip، PlotOptions و ...
categoriesarray[]تنظیمات Highcharts + داده‌های سری برای هر دسته‌بندی
categoryTypestringtabsنوع نمایش دسته‌بندی ('tabs' یا 'select')
categorySelectorstringnullسلکتور CSS برای المان انتخاب دسته‌بندی (ضروری در صورت انتخاب categoryType='select')
classstringnullکلاس‌های CSS اضافی برای ظرف نمودار
containerClassstringnullکلاس‌های CSS اضافی برای wrapper ظرف نمودار

نکته

برای افزودن محتوای سفارشی (مانند HTML یا کامپوننت‌های دیگر) به هر تب، کافی است طبق نمونه زیر عمل کنید. این محتوا بین نمودار و بخش انتخاب دسته‌بندی نمایش داده می‌شود.

@php
$content1 = renderComponent(\Dornica\BladeComponents\UI\Badge\Badge::class, [
'value' => 'تعداد در یک هفته اخیر: 2500',
'variant' => 'success',
'appearance' => 'solid',
]);
$content2 = renderComponent(\Dornica\BladeComponents\UI\Badge\Badge::class, [
'value' => 'تعداد در یک ماه اخیر: 3780',
'variant' => 'info',
'appearance' => 'solid',
]);
@endphp
:categories="[
[
'title' => 'یک هفته اخیر',
'options' => [
'content' => $content1,
],
'series' => [
[
'data' => [
['name' => 'مسکن روستایی', 'y' => 4100000, 'color' => '#34A853'],
['name' => 'مدرسه روستایی', 'y' => 450000, 'color' => '#0178C8'],
['name' => 'راه روستایی', 'y' => 320000, 'color' => '#006CFF'],
['name' => 'مراکز بهداشتی', 'y' => 190000, 'color' => '#FF7139'],
['name' => 'مساجد روستایی', 'y' => 95000, 'color' => '#FF1B2D'],
['name' => 'زیرساخت آب', 'y' => 65000, 'color' => '#FB542B'],
],
],
],
],
[
'title' => 'یک ماه اخیر',
'options' => [
'content' => $content2,
'legend' => [
'layout' => 'horizontal',
'align' => 'center',
'verticalAlign' => 'top',
],
],
'series' => [
[
'data' => [
['name' => 'مسکن روستایی', 'y' => 2100000, 'color' => '#34A853'],
['name' => 'مدرسه روستایی', 'y' => 250000, 'color' => '#0178C8'],
['name' => 'راه روستایی', 'y' => 320000, 'color' => '#006CFF'],
['name' => 'مراکز بهداشتی', 'y' => 190000, 'color' => '#FF7139'],
['name' => 'مساجد روستایی', 'y' => 95000, 'color' => '#FF1B2D'],
['name' => 'زیرساخت آب', 'y' => 65000, 'color' => '#FB542B'],
],
],
],
],
...

مثال‌ها

نمونه ۱: نمودار ستونی ساده

<x-high-chart
type="column"
:options="[
'title' => ['text' => 'نمودار فروش'],
'xAxis' => ['categories' => ['تهران', 'اصفهان', 'شیراز']],
'yAxis' => ['title' => ['text' => 'مقدار']],
]"
:series="[
['name' => 'سال ۱۴۰۲', 'data' => [120, 100, 90]]
]"
/>

نمونه 2: نمودار پای با تب

@php
$content1 = renderComponent(\Dornica\BladeComponents\UI\Badge\Badge::class, [
'value' => 'تعداد در یک هفته اخیر: 2500',
'variant' => 'success',
'appearance' => 'solid',
]);
$content2 = renderComponent(\Dornica\BladeComponents\UI\Badge\Badge::class, [
'value' => 'تعداد در یک ماه اخیر: 3780',
'variant' => 'info',
'appearance' => 'solid',
]);
$content3 = renderComponent(\Dornica\BladeComponents\UI\Badge\Badge::class, [
'value' => 'تعداد در یک سال اخیر: 9800',
'variant' => 'danger',
'appearance' => 'solid',
]);
$content4 = renderComponent(\Dornica\BladeComponents\UI\Badge\Badge::class, [
'value' => 'تعداد کل: 15000',
'variant' => 'success',
'appearance' => 'solid',
]);
@endphp

<x-high-chart
id="pie-chart-with-legend"
type="pie"
:options="[
'chart' => [
'height' => 300,
],
'plotOptions' => [
'pie' => [
'borderRadius' => 6,
'dataLabels' => [
'distance' => -25,
'filter' => [
'operator' => '>',
'property' => 'percentage',
'value' => 5,
],
'style' => [
'fontSize' => '11px',
],
],
],
],
'legend' => [
'rtl' => true,
'layout' => 'vertical',
'align' => 'left',
'itemMarginBottom' => 10,
'verticalAlign' => 'middle',
'navigation' => [
'enabled' => false,
],
'symbolHeight' => 12,
'symbolWidth' => 12,
'labelFormat' => '<span>{name}: {y:,.0f}</span> <small>(پروژه)</small>',
'itemStyle' => [
'fontSize' => '14px',
'fontWeight' => '500',
],
],
'responsive' => [
'rules' => [
[
'condition' => [
'maxWidth' => 576,
],
'chartOptions' => [
'legend' => [
'layout' => 'horizontal',
'align' => 'center',
'verticalAlign' => 'bottom',
],
],
],
],
],
]"
:series="[
[
'name' => 'ساخت و ساز',
'innerSize' => '60%',
],
]"
:categories="[
[
'title' => 'یک هفته اخیر',
'options' => [
'content' => $content1,
],
'series' => [
[
'data' => [
['name' => 'مسکن روستایی', 'y' => 4100000, 'color' => '#34A853'],
['name' => 'مدرسه روستایی', 'y' => 450000, 'color' => '#0178C8'],
['name' => 'راه روستایی', 'y' => 320000, 'color' => '#006CFF'],
['name' => 'مراکز بهداشتی', 'y' => 190000, 'color' => '#FF7139'],
['name' => 'مساجد روستایی', 'y' => 95000, 'color' => '#FF1B2D'],
['name' => 'زیرساخت آب', 'y' => 65000, 'color' => '#FB542B'],
],
],
],
],
[
'title' => 'یک ماه اخیر',
'options' => [
'content' => $content2,
'legend' => [
'layout' => 'horizontal',
'align' => 'center',
'verticalAlign' => 'top',
],
],
'series' => [
[
'data' => [
['name' => 'مسکن روستایی', 'y' => 2100000, 'color' => '#34A853'],
['name' => 'مدرسه روستایی', 'y' => 250000, 'color' => '#0178C8'],
['name' => 'راه روستایی', 'y' => 320000, 'color' => '#006CFF'],
['name' => 'مراکز بهداشتی', 'y' => 190000, 'color' => '#FF7139'],
['name' => 'مساجد روستایی', 'y' => 95000, 'color' => '#FF1B2D'],
['name' => 'زیرساخت آب', 'y' => 65000, 'color' => '#FB542B'],
],
],
],
],
[
'title' => 'یک سال اخیر',
'options' => [
'content' => $content3
],
'series' => [
[
'data' => [
['name' => 'مسکن روستایی', 'y' => 5100000, 'color' => '#34A853'],
['name' => 'مدرسه روستایی', 'y' => 250000, 'color' => '#0178C8'],
['name' => 'راه روستایی', 'y' => 320000, 'color' => '#006CFF'],
['name' => 'مراکز بهداشتی', 'y' => 190000, 'color' => '#FF7139'],
['name' => 'مساجد روستایی', 'y' => 95000, 'color' => '#FF1B2D'],
['name' => 'زیرساخت آب', 'y' => 105000, 'color' => '#FB542B'],
],
],
],
],
[
'options' => [
'content' => $content4
],
'title' => 'کل',
'series' => [
[
'data' => [
['name' => 'مساجد روستایی', 'y' => 105000, 'color' => '#FF1B2D'],
['name' => 'مدرسه روستایی', 'y' => 250000, 'color' => '#0178C8'],
['name' => 'راه روستایی', 'y' => 320000, 'color' => '#006CFF'],
['name' => 'مراکز بهداشتی', 'y' => 190000, 'color' => '#FF7139'],
['name' => 'زیرساخت آب', 'y' => 65000, 'color' => '#FB542B'],
['name' => 'مسکن روستایی', 'y' => 100000, 'color' => '#34A853'],
],
],
],
],
]"
/>