برنامه‌ی شیفت

shift-schedulerکامپوننت تقویم

اسم افراد سمت راست و شنبه تا جمعه جلوشون، شیفت صبح و عصر و شب در هر خونه، جمع ساعت هفتگی با هشدار بیش از ۴۴ ساعت و پرچم وقتی استراحت بین دو شیفت کمه.

۱۸ مهر تا ۲۴ مهر

۲۳ شیفت این هفته

  • صبح ۰۷:۰۰–۱۵:۰۰
  • عصر ۱۵:۰۰–۲۳:۰۰
  • شب ۲۳:۰۰–۰۷:۰۰
نفرشنبه۱۸ مهریکشنبه۱۹ مهردوشنبه۲۰ مهرسه‌شنبه۲۱ مهرچهارشنبه۲۲ مهرپنجشنبه۲۳ مهرجمعه۲۴ مهرساعت
سارا احمدیسرپرستار
۴۰
رضا کریمیپرستار
۴۸
مریم حسینیپرستار
۴۸
علی رضاییبهیار
۴۸
پوششصبح ۱عصر ۱شب ۱صبح ۲عصر ۲شب ۱صبح ۱عصر ۱شب ۱صبح ۲عصر ۱شب ۰صبح ۱عصر ۱شب ۱صبح ۱عصر ۱شب ۱صبح ۱عصر ۱شب ۱

نصب

  1. با CLI

    اگر هنوز init نکردید، اول از راهنمای نصب پروژه را آماده کنید. بعد این دستور کامپوننت و وابستگی‌هاش را می‌نویسه.

    $ npx vibefarsi add shift-scheduler
  2. نصب دستی

    محتوای تب «کد» را در components/calendar/shift-scheduler.tsx بگذارید. پیش‌نیاز: calendar-core، popover.

    $ npm i lucide-react
    کپی کل فایلregistry json

استفاده

usage.tsx
1import { ShiftScheduler } from "@/components/calendar/shift-scheduler"23<ShiftScheduler4  resources={[{ id: "sara", title: "سارا احمدی", subtitle: "پرستار" }]}5  shifts={shifts}6  onShiftsChange={setShifts}7/>

پراپ‌ها

پراپنوعپیش‌فرضتوضیح
resourcesResource[]-افراد یا اتاق‌ها با id، title و subtitle.
shifts / onShiftsChangeShift[]-هر شیفت resourceId، date و type داره.
shiftTypesShiftType[]صبح، عصر، شبنوع شیفت‌ها با ساعت شروع و پایان. پایان کمتر از شروع یعنی روز بعد تموم میشه.
maxHours / minRestnumber44 / 12سقف ساعت هفتگی و حداقل استراحت بین دو شیفت.
onCellClick(resourceId, date) => void-اگه بدید، منوی داخلی خاموش میشه تا دیالوگ خودتون را باز کنید.

نکته‌ها

  • ردیف پوشش پایین جدول تعداد هر شیفت در هر روز را نشون میده و صفرها قرمز میشن.