diff --git a/frontend/src/pages/help/HelpScheduler.tsx b/frontend/src/pages/help/HelpScheduler.tsx index 088991a..60956a9 100644 --- a/frontend/src/pages/help/HelpScheduler.tsx +++ b/frontend/src/pages/help/HelpScheduler.tsx @@ -22,6 +22,18 @@ import { Eye, Calendar, Grid, + Move, + GripVertical, + Undo, + Redo, + ZoomIn, + ZoomOut, + Archive, + AlertCircle, + Inbox, + MousePointer, + Keyboard, + Layers, } from 'lucide-react'; const HelpScheduler: React.FC = () => { @@ -50,7 +62,7 @@ const HelpScheduler: React.FC = () => { Scheduler Guide

- Manage appointments and view your calendar + Master your appointment calendar with drag-and-drop scheduling

@@ -64,10 +76,14 @@ const HelpScheduler: React.FC = () => {

- The Scheduler is your central hub for managing all appointments and events. It provides a visual calendar interface that lets you see availability, book new appointments, and manage existing bookings efficiently. + The Scheduler is a powerful, interactive calendar designed for fast appointment management. + It features full drag-and-drop support, real-time updates via WebSocket, and a horizontal timeline + layout that shows all your resources (staff, rooms, equipment) at once.

- The scheduler supports multiple view modes and filtering options to help you find exactly what you need, whether you're looking at a single day or planning weeks ahead. + You can reschedule appointments by dragging them, resize them by pulling their edges, + filter by status/resource/service, and even undo mistakes with keyboard shortcuts. + Pending appointment requests appear in a sidebar, ready to be dragged onto the schedule.

@@ -85,7 +101,9 @@ const HelpScheduler: React.FC = () => {

Day View

- See all appointments for a single day in a detailed timeline format. Best for managing busy days with many appointments. + See a single day in detail with a horizontal timeline. Each resource gets its own row. + The timeline scrolls horizontally and auto-centers on the current time when you open it. + Perfect for managing a busy day with many appointments across multiple staff or rooms.

@@ -94,7 +112,9 @@ const HelpScheduler: React.FC = () => {

Week View

- View an entire week at once, ideal for planning and understanding weekly patterns. See appointments across all days. + View all 7 days side-by-side with each day separated on the timeline. + Drag appointments between days or across resources. Great for weekly planning + and seeing patterns in your schedule.

@@ -102,8 +122,72 @@ const HelpScheduler: React.FC = () => {

Month View

+

+ Traditional calendar grid showing the entire month. Each day cell shows a summary of + appointments for that day, color-coded by status. +

+ +
+ + + + + + {/* Drag and Drop Section */} +
+

+ + Drag and Drop +

+
+

+ Drag-and-drop is the fastest way to manage your schedule. Simply click and drag any + appointment to reschedule it. +

+
+
+ +
+

Reschedule Appointments

- Get a high-level overview of the entire month. Great for identifying busy periods and planning ahead. + Drag an appointment left or right to change its time, or up/down to move it to a + different resource. The appointment snaps to 15-minute increments. A ghost preview + shows where it will land. +

+
+
+
+ +
+

Schedule Pending Requests

+

+ Pending appointments (from online booking or manual entry) appear in the sidebar on + the right. Drag them onto the timeline to schedule them - they'll automatically be + confirmed. The pending sidebar shows customer name, service, and requested duration. +

+
+
+
+ +
+

Return to Pending

+

+ Drag a scheduled appointment back to the pending sidebar to unschedule it. + The appointment returns to pending status and can be rescheduled later. +

+
+
+
+ +
+

Archive (Delete)

+

+ Drag an appointment to the archive zone at the bottom of the pending sidebar to + delete it permanently. This is useful for removing cancelled or test appointments.

@@ -111,47 +195,356 @@ const HelpScheduler: React.FC = () => {
- {/* Key Features Section */} + {/* Resizing Appointments Section */}

- - Key Features + + Resizing Appointments

-
+

+ Change an appointment's duration by dragging its edges. This is helpful when a service + takes more or less time than expected. +

+
- +
-

Create Appointments

+

Extend Duration

- Click on any time slot to create a new appointment. Select customer, service, and resource. + Hover over the right edge of an appointment until you see the resize cursor, + then drag right to make it longer. Duration snaps to 15-minute increments. + Minimum duration is 15 minutes.

- +
-

Edit Appointments

+

Change Start Time

- Click on any existing appointment to modify its details, reschedule, or add notes. + Drag the left edge to change when the appointment starts. Dragging left makes + it start earlier (and longer), dragging right makes it start later (and shorter). +

+
+
+
+
+
+ + {/* Status Colors Section */} +
+

+ + Status Colors +

+
+

+ Appointments are color-coded so you can see their status at a glance: +

+
+
+ Blue - Upcoming + Confirmed, hasn't started yet +
+
+ Yellow - In Progress + Currently happening +
+
+ Red - Overdue + Past end time, not completed +
+
+ Green - Completed + Successfully finished +
+
+ Gray - No-show + Customer didn't arrive +
+
+ Gray (faded) - Cancelled + Appointment was cancelled +
+
+
+
+ + {/* Filtering Section */} +
+

+ + Filtering Appointments +

+
+

+ Use the filter button in the toolbar to narrow down what you see: +

+
+
+ +
+

Filter by Status

+

+ Show or hide appointments by status (Pending, Confirmed, Completed, Cancelled, No-show). + Useful for focusing on confirmed appointments only or finding no-shows.

- +

Filter by Resource

- Filter the calendar to show only specific staff members, rooms, or equipment. + Show only specific staff members, rooms, or equipment. Great for viewing one + person's schedule or a specific treatment room.

- +
-

Status Colors

+

Filter by Service

- Appointments are color-coded by status: scheduled, confirmed, completed, cancelled, no-show. + Show only appointments for specific services. Helpful for tracking how often + certain services are booked or finding all massage appointments. +

+
+
+
+

+ A badge appears on the filter button when filters are active. Click "Clear All" to reset. +

+
+
+ + {/* Keyboard Shortcuts Section */} +
+

+ + Keyboard Shortcuts +

+
+
+
+
+ Ctrl + + + Z +
+
+ Undo +

Undo the last move or resize

+
+
+
+
+ Ctrl + + + Y +
+
+ Redo +

Redo the last undone action

+
+
+
+
+ Ctrl + + + Shift + + + Z +
+
+ Redo (Alt) +

Alternative redo shortcut

+
+
+
+

+ The scheduler keeps a history of up to 50 actions, so you can undo multiple changes. +

+
+
+ + {/* Zoom Controls Section */} +
+

+ + Zoom Controls +

+
+

+ Adjust the zoom level to see more or less detail in the timeline (Day and Week views only): +

+
+
+ + Zoom out to see more hours at once +
+
+ + Zoom in for precise time placement +
+
+

+ Use the zoom slider in the toolbar to adjust. The timeline width scales proportionally. +

+
+
+ + {/* Overlapping Appointments Section */} +
+

+ + Overlapping Appointments +

+
+

+ When appointments overlap in time for the same resource, the scheduler automatically + stacks them in multiple "lanes" so you can see all of them: +

+
    +
  • + + + Each resource row expands vertically to accommodate overlapping appointments + +
  • +
  • + + + Overlapping appointments are shown stacked, with each in its own horizontal lane + +
  • +
  • + + + This helps identify double-bookings or intentional concurrent appointments + +
  • +
+
+
+ + {/* Pending Sidebar Section */} +
+

+ + Pending Appointments Sidebar +

+
+

+ The sidebar on the right shows all pending (unscheduled) appointment requests: +

+
    +
  • + + + Online Bookings: When customers book online, their requests appear here until you assign them to a resource + +
  • +
  • + + + Drag to Schedule: Drag any pending appointment onto the timeline to schedule it with a specific resource + +
  • +
  • + + + Auto-Confirm: Pending appointments automatically change to "Confirmed" when scheduled + +
  • +
  • + + + Archive Zone: Drag to the archive section at the bottom to delete unwanted requests + +
  • +
+
+
+ + {/* Real-time Updates Section */} +
+

+ + Real-time Updates +

+
+

+ The scheduler uses WebSocket connections to update in real-time: +

+
    +
  • + + + When a customer books online, the appointment appears instantly + +
  • +
  • + + + When another staff member makes changes, you see them without refreshing + +
  • +
  • + + + No need to manually refresh the page - the schedule stays current + +
  • +
+
+
+ + {/* Editing Appointments Section */} +
+

+ + Editing Appointment Details +

+
+

+ Click on any appointment to open its detail modal where you can: +

+
+
+ +
+

Change Date & Time

+

+ Use the date/time picker for precise scheduling +

+
+
+
+ +
+

Reassign Resource

+

+ Move the appointment to a different staff member or room +

+
+
+
+ +
+

Adjust Duration

+

+ Change how long the appointment lasts +

+
+
+
+ +
+

Update Status

+

+ Mark as completed, no-show, or cancelled

@@ -159,93 +552,42 @@ const HelpScheduler: React.FC = () => {
- {/* How to Use Section */} + {/* Tips Section */}

- - How to Use -

-
-
    -
  1. - 1 -
    -

    Navigate to Scheduler

    -

    - Click "Scheduler" in the sidebar to open the calendar view. -

    -
    -
  2. -
  3. - 2 -
    -

    Choose Your View

    -

    - Select day, week, or month view using the view toggle buttons. -

    -
    -
  4. -
  5. - 3 -
    -

    Create an Appointment

    -

    - Click the "+" button or click on an empty time slot to open the appointment form. -

    -
    -
  6. -
  7. - 4 -
    -

    Fill in Details

    -

    - Select a customer, choose a service, pick an available resource, and set the time. -

    -
    -
  8. -
  9. - 5 -
    -

    Save & Confirm

    -

    - Click "Save" to create the appointment. Customers can receive automatic notifications. -

    -
    -
  10. -
-
-
- - {/* Benefits Section */} -
-

- - Benefits + + Pro Tips

  • - Visual Scheduling: See your entire schedule at a glance with intuitive calendar layouts + Drag from where you grab: When dragging, the appointment time adjusts based on where you clicked on it, making repositioning intuitive
  • - Conflict Prevention: System prevents double-booking of resources and staff + Use filters to focus: When the schedule is busy, filter to show only what you need
  • - Quick Actions: Create, edit, and cancel appointments with just a few clicks + Ctrl+Z is your friend: Made a mistake? Undo it instantly without finding and fixing manually
  • - Multi-Resource: Manage staff, rooms, and equipment schedules in one place + Month view drag overlay: While dragging in month view, hover over any day for 1 second to open a mini Day View scheduler - drop the appointment at the exact time and resource + +
  • +
  • + + + Check red appointments: Red means overdue - these need to be completed or rescheduled
@@ -274,6 +616,14 @@ const HelpScheduler: React.FC = () => { Services Guide + + + Customers Guide + +