نمودارها
همه نمودارها روی ApexCharts ساخته شدهاند و یک پوسته مشترک دارند: رنگها از توکنهای فعال، فونت Vazirmatn، جهت راستبهچپ خودکار و بازسازی هنگام تغییر تم.
استفاده اعلانی
<div class="chart" data-chart-key="revenue" data-chart="area" data-chart-height="320"></div>کنترلکننده صفحه داده را از لایه سرویس میگیرد و به initCharts(root) میدهد. برای ساخت نمودار دستی، ضابطه data-chart-series را با JSON بدهید:
<div class="chart"
data-chart="column"
data-chart-height="300"
data-chart-series='[{"name":"فروش","data":[120,180,140,210]}]'
data-chart-labels='["فروردین","اردیبهشت","خرداد","تیر"]'></div>استفاده برنامهای
// گزینه ۱ — مستقیم روی یک عنصر
import { createChart } from './js/core/charts.js';
await createChart(document.querySelector('#revenue'), {
type: 'area',
height: 320,
series: [{ name: 'درآمد', data: [42, 58, 51, 74] }],
labels: ['فروردین', 'اردیبهشت', 'خرداد', 'تیر'],
});
// گزینه ۲ — از داخل کنترلکننده صفحه با کمکی `kit.chart`
import { chart } from './js/pages/kit.js';
container.innerHTML = chart({ key: 'revenue', type: 'area', height: 320, series: [{ name: 'درآمد', data: [42, 58, 51, 74] }], labels: ['فروردین'] });
initCharts(container);انواع پشتیبانیشده
| نوع | کاربرد پیشنهادی |
|---|---|
area | روند درآمد و ترافیک |
line | مقایسه دو سری زمانی |
column | مقایسه دستهای، فروش ماهانه |
bar | رتبهبندی افقی (محصول، کارشناس) |
donut | سهم (دستگاه، پلن، منبع ترافیک) |
pie | توزیع ساده |
radar | مقایسه چند شاخص |
radialBar | پیشرفت تکشاخصی |
heatmap | الگوی ساعتی/روزانه |
sparkline | ریزنمودار داخل کارت آماری |
رنگها و تم
پالت از توکنهای --nv-chart-1…‑6 خوانده میشود؛ پس با تغییر data-primary یا روشن/تاریک شدن، نمودارها هم عوض میشوند.
import { refreshCharts } from './js/core/charts.js';
refreshCharts(); // پس از تغییر تم یا زبانبهصورت خودکار، ماژول theme.js رویداد تغییر تم را منتشر میکند و charts.js همه نمودارهای صفحه را دوباره میسازد؛ نیازی به کد اضافه نیست.
فرمت اعداد و برچسب تقویم
محورها و تولتیپها از numbers.js استفاده میکنند: جداکننده هزارگان فارسی، اعداد فشرده (formatCompact) و درصد فارسی. برچسبهای زمانی از تقویم فعال (شمسی یا میلادی) پیروی میکنند.
کارایی
- نمودارها فقط وقتی ساخته میشوند که ظرف آنها در صفحه باشد (
initChartsروی[data-chart-key]کار میکند). - با تغییر اندازه پنجره، نمودار بدون بازسازی دوباره مقیاس میشود.
- برای صفحات سنگین، نمودارها را در تبهای پنهان نسازید؛ پس از نمایش تب
initCharts(panel)را صدا بزنید.
chartInstance.destroy() را صدا بزنید؛ charts.js نمونهها را در یک WeakMap نگه میدارد تا نشتی نداشته باشیدvendor-charts حدود ۵۴۰ کیلوبایت است و فقط در صفحاتی بارگذاری میشود که نمودار دارند (code splitting با Vite)آن را به صفحات بدون نمودار اضافه نکنید.