خط زمانی منابع و ستونهای منابع در FullCalendar جزو Premium هستند: یک اپ تجاری به کلید لایسنس پولی نیاز دارد. صفحهٔ لایسنس آن گزینههای رایگان را فهرست میکند: برای اپهایی که سراسر AGPL هستند و برای سازمانهای غیرانتفاعی ثبتشده. زمانبند Needless UI هر دو را با مجوز MIT دارد، همراه با رویدادهای تکرارشونده و فایلهای iCalendar. این راهنما یک اپ Angular را از یکی به دیگری منتقل میکند: چه چیزهایی منتقل میشوند، چه چیزهایی نه، و چه دادههایی باید تبدیل شوند.
این راهنما از نامهای FullCalendar 7 استفاده میکند و هر جا نامهای نسخهٔ 6 فرق دارند، آنها را در کروشه میآورد. رابط Angular در FullCalendar از Angular 16 تا 22 پشتیبانی میکند؛ Needless UI به Angular 22 نیاز دارد.
چه به دست میآورید
| قابلیت | FullCalendar | Needless UI |
|---|---|---|
| خط زمانی منابع: یک ردیف برای هر اتاق یا فرد | Premium | بله: یک روز، یک هفته یا یک ماه |
| منابع بهصورت ستون در نماهای روز و هفته | Premium | بله |
| نماهای ماه، هفته و روز | رایگان | بله |
| جابهجایی و تغییر اندازه با کشیدن | رایگان؛ به منبعی دیگر با Premium | بله، به منابع دیگر هم. اندازه از انتها تغییر میکند، نه از ابتدا. |
| انتخاب زمان برای ساختن رویداد | رایگان | بله، با نشانگر، لمس طولانی یا صفحهکلید |
| قاعدههایی مثل «بدون همپوشانی» | رایگان: گزینههای همپوشانی و محدودیت | بله: یک تابع allow که پیش از هر تغییر از آن پرسیده میشود |
| جابهجایی و تغییر اندازهٔ رویدادها با صفحهکلید | در مستندات دسترسپذیریاش نیامده؛ این مستندات به برچسبهای ARIA و فوکوس با Tab میپردازند | بله، همراه با اعلام به صفحهخوانها |
| رویدادهای تکرارشونده | رایگان، با پلاگین و کتابخانهٔ rrule | داخلی: قاعدههای RFC 5545، بدون EXRULE، RDATE و قاعدههای ساعتی |
| iCalendar (.ics) | رایگان: یک فید را میخواند | فایلهای .ics را میخواند و مینویسد |
| نماهای فهرست و سال | رایگان | برنامهٔ روزهای پیش رو؛ نمای سال ندارد |
| منطقههای زمانی | رایگان: محلی، UTC یا منطقههای نامدار | خیر: زمانها را همانطور که دریافت میکند نشان میدهد |
| منابع گروهبندیشده، تودرتو یا چندستونی | Premium | خیر: یک ستون که قالب شما رسمش میکند |
| کشیدن و رها کردن از بیرون، رویدادهای پسزمینه | رایگان | خیر |
| چاپ، رندر مجازی | Premium | خیر |
| فریمورکها | Angular 16 تا 22، React، Vue، JavaScript ساده و بیشتر | Angular 22 و React 19 |
چه چیزی معادل چیست
| FullCalendar | زمانبند Needless UI |
|---|---|
<full-calendar [options]>, plugins, schedulerLicenseKey | <nui-scheduler>، با یک ورودی برای هر گزینه؛ بدون پلاگین و بدون کلید |
initialView: 'resourceTimelineDay' | view="timeline"، و timelineSpan برای یک هفته یا یک ماه |
initialView: 'timeGridWeek' | view="week"؛ [(view)] دوطرفه است |
resources, events | [resources], [events] |
resourceId, extendedProps | resource, data |
editable, selectable | editable, selectable |
select | (slotSelect): { start, end, allDay, resource } |
eventDrop, eventResize | (eventChange): تا events را بهروز نکنید، چیزی جابهجا نمیشود |
eventClick | (eventClick) |
eventOverlap, selectOverlap, eventAllow | [allow]: یک تابع برای جابهجایی، تغییر اندازه و انتخاب |
slotDuration, snapDuration | slotMinutes، snapMinutes، بر حسب دقیقه |
slotMinTime, slotMaxTime, scrollTime | dayStart، dayEnd، scrollHour، بر حسب ساعت |
businessHours | [businessHours]، با روزهای هفته از 1 (دوشنبه) تا 7 |
datesSet | (rangeChange) |
eventContent, resourceCellContent [resourceLabelContent] | قالبهای nuiSchedulerEvent و nuiSchedulerResource |
locale, firstDay | locale (هر تگ زبان BCP 47)، firstDay از 1 تا 7، و labels برای متنهایش |
خط زمانی رزرو اتاق، به هر دو روش
اتاقها منابع هستند و رزروها رویدادها. کاربران روی یک اتاق میکشند تا رزروش کنند و یک رزرو را میکشند تا جابهجایش کنند، و هر اتاق در هر زمان فقط یک رزرو میپذیرد. با FullCalendar 7 و خط زمانی منابع Premium آن:
با زمانبند Needless UI:
دو چیز متفاوت کار میکند. FullCalendar رزرو را خودش جابهجا میکند و اپ همان تغییر را در دادههای خودش ثبت میکند؛ زمانبند Needless UI فقط آن را گزارش میدهد و بهروز کردن events آن را نگه میدارد، پس دادههای شما تنها منبع میمانند. و allow کدی معمولی است که پیش از هر تغییر با نشانگر یا صفحهکلید از آن پرسیده میشود، پس آزمودن قاعده در دست خودتان است. راهنمای رزرو اتاق این اپ را گامبهگام میسازد.
تبدیل دادهها
| FullCalendar | Needless UI |
|---|---|
در رویدادهای تمامروز، end روزِ بعد از رویداد است | در رویدادهای تمامروز، end آخرین روز رویداد است: یک روز کم کنید |
زمانها ممکن است با Z یا آفستی مثل +02:00 تمام شوند | زمانهای محلی بدون آفست، مثل 2026-11-02T09:30 |
روزهای هفته از 0 (یکشنبه) تا 6، در businessHours و firstDay | روزهای هفته از 1 (دوشنبه) تا 7 (یکشنبه) |
مدتها بهصورت رشته، مثل '00:30' | عدد: دقیقه یا ساعت |
| منابع مرتبشده بر اساس شناسه و سپس عنوان | منابع به ترتیب آرایه |
rrule بهصورت شیء، و exrule | یک رشتهٔ RFC 5545، مثل FREQ=WEEKLY;BYDAY=MO,FR، و exdate |
منطقهٔ زمانیای مثل America/New_York | اول زمانها را تبدیل کنید. nuiSchedulerFromIcs(text, { timeZone }) فایلهای .ics را هنگام خواندن تبدیل میکند. |
اگر به آنچه نیست نیاز دارید
اگر اپ شما به منطقههای زمانی، منابع گروهبندیشده، کشیدن و رها کردن از بیرون یا چاپ وابسته است، زمانبند هنوز نمیتواند جای FullCalendar را بگیرد. برای آنچه لازم دارید یک issue باز کنید. برای بقیهٔ موارد، صفحهٔ زمانبند همهٔ ورودیها، خروجیها و مثالها را دارد.