مهاجرت از Chartist 1.x به v2: کدهای قبلی همچنان کار میکنن
خلاصهٔ کاملتر
Chartist یه کتابخونهٔ جاوااسکریپتی برای کشیدن نمودارهای SVG هست و نسخهٔ ۲ش اومده. تو راهنمای مهاجرت اومده که خبر خوب اینه: کد 1.x بدون تغییر کار میکنه. کلاسهای LineChart، BarChart و PieChart با همون آرگومانها (کانتینر، داده، آپشنها و آپشنهای responsive) سر جاشونن و هر دو مدل روی یه موتور مشترک اجرا میشن. ظاهر نمودارها هم عوض نشده، چون v2 با اسکرینشاتهای نسخهٔ 1.5.0 تست شده.
تنها جایی که شاید لازم باشه دست ببری رویدادهاست. تو 1.x هر نمودار رویدادهایی مثل draw، created و animationEnd میفرستاد. حالا این رویدادها تو یه پلاگین اختیاری به اسم compat هستن تا نمودارهایی که لازمشون ندارن کد اضافه حمل نکنن. کافیه اونو به plugins اضافه کنی:
import { compat } from 'chartist/compat';
const chart = new LineChart('#chart', data, { plugins: [compat] });
chart.on('draw', data => { /* ... */ });بدون compat، listenerها صدا زده نمیشن و کنسول یه بار برای هر رویداد بهت میگه چی اضافه کنی. تو TypeScript هم کد کامپایل نمیشه، چون تعریف تایپ رویدادهای قدیمی از chartist/compat میاد. پلاگینهای 1.x هم فقط وقتی compat تو لیست باشه اجرا میشن.
کلاسها و هر چیزی که فقط مخصوص اوناست تو کل 2.x منسوخ (deprecated) حساب میشن ولی کار میکنن، و نسخهٔ 3.0 حذفشون میکنه. هیچ هشداری تو runtime نمیاد؛ فقط ادیتورت اسمشون رو خط میزنه. جایگزینها: lineChart()، barChart() و pieChart()، و برای محورها autoScaleAxis() و مشابهاش. آپشن labelInterpolationFnc هم اسمش شده labelTransform. اگه linterت deprecationها رو خطا حساب میکنه، اینجا گیر میکنی.
نویسنده پیشنهاد میکنه نمودارها رو یکییکی ببری سمت توابع، چون ویژگیهای جدید و باندل کوچیکتر اونجاست. اولین قدم فقط عوض کردن سازندهست؛ داده و آپشنها همون میمونن. ولی handleی که تابع برمیگردونه فرق داره: نمودار همون لحظه رندر میشه (نه تو tick بعدی)، با ResizeObserver (یعنی وقتی اندازهٔ خود کانتینر عوض میشه) دوباره رسم میشه، و update حالا یه آبجکت مثل { data: newData } میگیره. برای حذف SVG هم destroy() اضافه شده.
هندلرهای draw هم باید پلاگین بشن. تو 1.x این هندلرها بعد از رسم، المنتها رو تغییر میدادن؛ تو v2 پلاگین قبل از رندر صحنه رو عوض میکنه. یعنی یه listener روی رویداد compose هر node رو میگیره و یه کپی تغییریافته برمیگردونه، یا هیچی برنمیگردونه تا دستنخورده بمونه.
نکات کلیدی:
- کد Chartist 1.x روی v2 بدون تغییر اجرا میشه و ظاهر با نسخهٔ 1.5.0 یکیه
- رویدادهای قدیمی (draw، created و غیره) فقط با پلاگین compat از chartist/compat کار میکنن
- کلاسها تو 2.x منسوخ هستن و تو 3.0 حذف میشن
- جایگزینها lineChart()، barChart()، pieChart() هستن با همون آرگومانها
- labelInterpolationFnc شده labelTransform، و اگه هر دو ست باشن labelTransform برندهست
- تو API جدید هندلرهای draw جاشون رو به listenerهای compose میدن




