Our pure JavaScript Scheduler component


Post by joel.schuster »

Here's some test data that I'm trying to get working with this. As you can see I'm also starting to work in the concepts of Maintenance times when Trucks and Trailers are not available. And Shifts and Time off when Drivers should be scheduled, or not.

export const testProjectData = {
    resources: [
        // Drivers
        { id: 'D1', name: 'John Doe', type: 'driver' },
        { id: 'D2', name: 'Jane Smith', type: 'driver' },
        { id: 'D3', name: 'Mike Johnson', type: 'driver' },
        { id: 'D4', name: 'Emily Davis', type: 'driver' },
        { id: 'D5', name: 'Chris Brown', type: 'driver' },
        { id: 'D6', name: 'Sarah Wilson', type: 'driver' },
        { id: 'D7', name: 'David Lee', type: 'driver' },
        { id: 'D8', name: 'Laura Martinez', type: 'driver' },
        { id: 'D9', name: 'Tom Clark', type: 'driver' },
        { id: 'D10', name: 'Anna Taylor', type: 'driver' },
        // Trucks
        { id: 'T1', name: 'Truck 101', type: 'truck' },
        { id: 'T2', name: 'Truck 102', type: 'truck' },
        { id: 'T3', name: 'Truck 103', type: 'truck' },
        { id: 'T4', name: 'Truck 104', type: 'truck' },
        { id: 'T5', name: 'Truck 105', type: 'truck' },
        // Trailers
        { id: 'TR1', name: 'Trailer A1', type: 'trailer' },
        { id: 'TR2', name: 'Trailer A2', type: 'trailer' },
        { id: 'TR3', name: 'Trailer A3', type: 'trailer' },
        { id: 'TR4', name: 'Trailer A4', type: 'trailer' },
        { id: 'TR5', name: 'Trailer A5', type: 'trailer' },
    ],
    events: [
        { id: 'E1', name: 'Delivery 1', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T12:00:00Z' },
        { id: 'E2', name: 'Delivery 2', startDate: '2025-05-01T13:00:00Z', endDate: '2025-05-01T17:00:00Z' },
        { id: 'E3', name: 'Delivery 3', startDate: '2025-05-02T09:00:00Z', endDate: '2025-05-02T15:00:00Z' },
        { id: 'E4', name: 'Delivery 4', startDate: '2025-05-02T10:00:00Z', endDate: '2025-05-02T14:00:00Z' },
        { id: 'E5', name: 'Delivery 5', startDate: '2025-05-05T08:30:00Z', endDate: '2025-05-05T14:30:00Z' },
        { id: 'E6', name: 'Delivery 6', startDate: '2025-05-05T13:00:00Z', endDate: '2025-05-05T17:00:00Z' },
        { id: 'E7', name: 'Delivery 7', startDate: '2025-05-06T10:00:00Z', endDate: '2025-05-06T16:00:00Z' },
        { id: 'E8', name: 'Delivery 8', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T12:00:00Z' },
        { id: 'E9', name: 'Delivery 9', startDate: '2025-05-07T08:00:00Z', endDate: '2025-05-07T12:00:00Z' },
        { id: 'E10', name: 'Delivery 10', startDate: '2025-05-07T13:00:00Z', endDate: '2025-05-07T17:00:00Z' },
        { id: 'E11', name: 'Delivery 11', startDate: '2025-05-08T09:00:00Z', endDate: '2025-05-08T15:00:00Z' },
        { id: 'E12', name: 'Delivery 12', startDate: '2025-05-08T10:00:00Z', endDate: '2025-05-08T14:00:00Z' },
        { id: 'E13', name: 'Delivery 13', startDate: '2025-05-09T08:30:00Z', endDate: '2025-05-09T14:30:00Z' },
        { id: 'E14', name: 'Delivery 14', startDate: '2025-05-09T13:00:00Z', endDate: '2025-05-09T17:00:00Z' },
        { id: 'E15', name: 'Delivery 15', startDate: '2025-05-12T10:00:00Z', endDate: '2025-05-12T16:00:00Z' },
        { id: 'E16', name: 'Delivery 16', startDate: '2025-05-12T08:00:00Z', endDate: '2025-05-12T12:00:00Z' },
        { id: 'E17', name: 'Delivery 17', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T12:00:00Z' },
        { id: 'E18', name: 'Delivery 18', startDate: '2025-05-13T13:00:00Z', endDate: '2025-05-13T17:00:00Z' },
        { id: 'E19', name: 'Delivery 19', startDate: '2025-05-14T09:00:00Z', endDate: '2025-05-14T15:00:00Z' },
        { id: 'E20', name: 'Delivery 20', startDate: '2025-05-14T10:00:00Z', endDate: '2025-05-14T14:00:00Z' },
        { id: 'E21', name: 'Delivery 21', startDate: '2025-05-01T08:30:00Z', endDate: '2025-05-01T14:30:00Z' },
        { id: 'E22', name: 'Delivery 22', startDate: '2025-05-02T13:00:00Z', endDate: '2025-05-02T17:00:00Z' },
        { id: 'E23', name: 'Delivery 23', startDate: '2025-05-05T10:00:00Z', endDate: '2025-05-05T16:00:00Z' },
        { id: 'E24', name: 'Delivery 24', startDate: '2025-05-06T13:00:00Z', endDate: '2025-05-06T17:00:00Z' },
        { id: 'E25', name: 'Delivery 25', startDate: '2025-05-07T09:00:00Z', endDate: '2025-05-07T15:00:00Z' },
        { id: 'E26', name: 'Delivery 26', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T12:00:00Z' },
        { id: 'E27', name: 'Delivery 27', startDate: '2025-05-09T10:00:00Z', endDate: '2025-05-09T16:00:00Z' },
        { id: 'E28', name: 'Delivery 28', startDate: '2025-05-12T13:00:00Z', endDate: '2025-05-12T17:00:00Z' },
        { id: 'E29', name: 'Delivery 29', startDate: '2025-05-13T09:00:00Z', endDate: '2025-05-13T15:00:00Z' },
        { id: 'E30', name: 'Delivery 30', startDate: '2025-05-14T08:00:00Z', endDate: '2025-05-14T12:00:00Z' },
        { id: 'E31', name: 'Delivery 31', startDate: '2025-05-01T10:00:00Z', endDate: '2025-05-01T16:00:00Z' },
        { id: 'E32', name: 'Delivery 32', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T12:00:00Z' },
        { id: 'E33', name: 'Delivery 33', startDate: '2025-05-05T09:00:00Z', endDate: '2025-05-05T15:00:00Z' },
        { id: 'E34', name: 'Delivery 34', startDate: '2025-05-06T09:00:00Z', endDate: '2025-05-06T15:00:00Z' },
        { id: 'E35', name: 'Delivery 35', startDate: '2025-05-07T10:00:00Z', endDate: '2025-05-07T16:00:00Z' },
        { id: 'E36', name: 'Delivery 36', startDate: '2025-05-08T13:00:00Z', endDate: '2025-05-08T17:00:00Z' },
        { id: 'E37', name: 'Delivery 37', startDate: '2025-05-09T09:00:00Z', endDate: '2025-05-09T15:00:00Z' },
        { id: 'E38', name: 'Delivery 38', startDate: '2025-05-12T10:00:00Z', endDate: '2025-05-12T14:00:00Z' },
        { id: 'E39', name: 'Delivery 39', startDate: '2025-05-13T10:00:00Z', endDate: '2025-05-13T16:00:00Z' },
        { id: 'E40', name: 'Delivery 40', startDate: '2025-05-14T13:00:00Z', endDate: '2025-05-14T17:00:00Z' },
        { id: 'E41', name: 'Delivery 41', startDate: '2025-05-01T09:00:00Z', endDate: '2025-05-01T15:00:00Z' },
        { id: 'E42', name: 'Delivery 42', startDate: '2025-05-02T13:00:00Z', endDate: '2025-05-02T17:00:00Z' },
        { id: 'E43', name: 'Delivery 43', startDate: '2025-05-05T10:00:00Z', endDate: '2025-05-05T14:00:00Z' },
        { id: 'E44', name: 'Delivery 44', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T12:00:00Z' },
        { id: 'E45', name: 'Delivery 45', startDate: '2025-05-07T13:00:00Z', endDate: '2025-05-07T17:00:00Z' },
        { id: 'E46', name: 'Delivery 46', startDate: '2025-05-08T09:00:00Z', endDate: '2025-05-08T15:00:00Z' },
        { id: 'E47', name: 'Delivery 47', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T12:00:00Z' },
        { id: 'E48', name: 'Delivery 48', startDate: '2025-05-12T13:00:00Z', endDate: '2025-05-12T17:00:00Z' },
        { id: 'E49', name: 'Delivery 49', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T12:00:00Z' },
        { id: 'E50', name: 'Delivery 50', startDate: '2025-05-14T09:00:00Z', endDate: '2025-05-14T15:00:00Z' },
    ],
    assignments: [
        // Delivery 1: John Doe, Truck 101, Trailer A1
        { id: 'A1-D', eventId: 'E1', resourceId: 'D1' },
        { id: 'A1-T', eventId: 'E1', resourceId: 'T1' },
        { id: 'A1-TR', eventId: 'E1', resourceId: 'TR1' },
        // Delivery 2: Jane Smith, Truck 102, Trailer A2
        { id: 'A2-D', eventId: 'E2', resourceId: 'D2' },
        { id: 'A2-T', eventId: 'E2', resourceId: 'T2' },
        { id: 'A2-TR', eventId: 'E2', resourceId: 'TR2' },
        // Delivery 3: Mike Johnson, Truck 103, Trailer A3
        { id: 'A3-D', eventId: 'E3', resourceId: 'D3' },
        { id: 'A3-T', eventId: 'E3', resourceId: 'T3' },
        { id: 'A3-TR', eventId: 'E3', resourceId: 'TR3' },
        // Delivery 4: Emily Davis, Truck 104, Trailer A4
        { id: 'A4-D', eventId: 'E4', resourceId: 'D4' },
        { id: 'A4-T', eventId: 'E4', resourceId: 'T4' },
        { id: 'A4-TR', eventId: 'E4', resourceId: 'TR4' },
        // Delivery 5: Chris Brown, Truck 105, Trailer A5
        { id: 'A5-D', eventId: 'E5', resourceId: 'D5' },
        { id: 'A5-T', eventId: 'E5', resourceId: 'T5' },
        { id: 'A5-TR', eventId: 'E5', resourceId: 'TR5' },
        // Delivery 6: Sarah Wilson, Truck 101, Trailer A1
        { id: 'A6-D', eventId: 'E6', resourceId: 'D6' },
        { id: 'A6-T', eventId: 'E6', resourceId: 'T1' },
        { id: 'A6-TR', eventId: 'E6', resourceId: 'TR1' },
        // Delivery 7: David Lee, Truck 102, Trailer A2
        { id: 'A7-D', eventId: 'E7', resourceId: 'D7' },
        { id: 'A7-T', eventId: 'E7', resourceId: 'T2' },
        { id: 'A7-TR', eventId: 'E7', resourceId: 'TR2' },
        // Delivery 8: Laura Martinez, Truck 103, Trailer A3
        { id: 'A8-D', eventId: 'E8', resourceId: 'D8' },
        { id: 'A8-T', eventId: 'E8', resourceId: 'T3' },
        { id: 'A8-TR', eventId: 'E8', resourceId: 'TR3' },
        // Delivery 9: Tom Clark, Truck 104, Trailer A4
        { id: 'A9-D', eventId: 'E9', resourceId: 'D9' },
        { id: 'A9-T', eventId: 'E9', resourceId: 'T4' },
        { id: 'A9-TR', eventId: 'E9', resourceId: 'TR4' },
        // Delivery 10: Anna Taylor, Truck 105, Trailer A5
        { id: 'A10-D', eventId: 'E10', resourceId: 'D10' },
        { id: 'A10-T', eventId: 'E10', resourceId: 'T5' },
        { id: 'A10-TR', eventId: 'E10', resourceId: 'TR5' },
        // Delivery 11: John Doe, Truck 101, Trailer A1
        { id: 'A11-D', eventId: 'E11', resourceId: 'D1' },
        { id: 'A11-T', eventId: 'E11', resourceId: 'T1' },
        { id: 'A11-TR', eventId: 'E11', resourceId: 'TR1' },
        // Delivery 12: Jane Smith, Truck 102, Trailer A2
        { id: 'A12-D', eventId: 'E12', resourceId: 'D2' },
        { id: 'A12-T', eventId: 'E12', resourceId: 'T2' },
        { id: 'A12-TR', eventId: 'E12', resourceId: 'TR2' },
        // Delivery 13: Mike Johnson, Truck 103, Trailer A3
        { id: 'A13-D', eventId: 'E13', resourceId: 'D3' },
        { id: 'A13-T', eventId: 'E13', resourceId: 'T3' },
        { id: 'A13-TR', eventId: 'E13', resourceId: 'TR3' },
        // Delivery 14: Emily Davis, Truck 104, Trailer A4
        { id: 'A14-D', eventId: 'E14', resourceId: 'D4' },
        { id: 'A14-T', eventId: 'E14', resourceId: 'T4' },
        { id: 'A14-TR', eventId: 'E14', resourceId: 'TR4' },
        // Delivery 15: Chris Brown, Truck 105, Trailer A5
        { id: 'A15-D', eventId: 'E15', resourceId: 'D5' },
        { id: 'A15-T', eventId: 'E15', resourceId: 'T5' },
        { id: 'A15-TR', eventId: 'E15', resourceId: 'TR5' },
        // Delivery 16: Sarah Wilson, Truck 101, Trailer A1
        { id: 'A16-D', eventId: 'E16', resourceId: 'D6' },
        { id: 'A16-T', eventId: 'E16', resourceId: 'T1' },
        { id: 'A16-TR', eventId: 'E16', resourceId: 'TR1' },
        // Delivery 17: David Lee, Truck 102, Trailer A2
        { id: 'A17-D', eventId: 'E17', resourceId: 'D7' },
        { id: 'A17-T', eventId: 'E17', resourceId: 'T2' },
        { id: 'A17-TR', eventId: 'E17', resourceId: 'TR2' },
        // Delivery 18: Laura Martinez, Truck 103, Trailer A3
        { id: 'A18-D', eventId: 'E18', resourceId: 'D8' },
        { id: 'A18-T', eventId: 'E18', resourceId: 'T3' },
        { id: 'A18-TR', eventId: 'E18', resourceId: 'TR3' },
        // Delivery 19: Tom Clark, Truck 104, Trailer A4
        { id: 'A19-D', eventId: 'E19', resourceId: 'D9' },
        { id: 'A19-T', eventId: 'E19', resourceId: 'T4' },
        { id: 'A19-TR', eventId: 'E19', resourceId: 'TR4' },
        // Delivery 20: Anna Taylor, Truck 105, Trailer A5
        { id: 'A20-D', eventId: 'E20', resourceId: 'D10' },
        { id: 'A20-T', eventId: 'E20', resourceId: 'T5' },
        { id: 'A20-TR', eventId: 'E20', resourceId: 'TR5' },
        // Delivery 21: John Doe, Truck 101, Trailer A1
        { id: 'A21-D', eventId: 'E21', resourceId: 'D1' },
        { id: 'A21-T', eventId: 'E21', resourceId: 'T1' },
        { id: 'A21-TR', eventId: 'E21', resourceId: 'TR1' },
        // Delivery 22: Jane Smith, Truck 102, Trailer A2
        { id: 'A22-D', eventId: 'E22', resourceId: 'D2' },
        { id: 'A22-T', eventId: 'E22', resourceId: 'T2' },
        { id: 'A22-TR', eventId: 'E22', resourceId: 'TR2' },
        // Delivery 23: Mike Johnson, Truck 103, Trailer A3
        { id: 'A23-D', eventId: 'E23', resourceId: 'D3' },
        { id: 'A23-T', eventId: 'E23', resourceId: 'T3' },
        { id: 'A23-TR', eventId: 'E23', resourceId: 'TR3' },
        // Delivery 24: Emily Davis, Truck 104, Trailer A4
        { id: 'A24-D', eventId: 'E24', resourceId: 'D4' },
        { id: 'A24-T', eventId: 'E24', resourceId: 'T4' },
        { id: 'A24-TR', eventId: 'E24', resourceId: 'TR4' },
        // Delivery 25: Chris Brown, Truck 105, Trailer A5
        { id: 'A25-D', eventId: 'E25', resourceId: 'D5' },
        { id: 'A25-T', eventId: 'E25', resourceId: 'T5' },
        { id: 'A25-TR', eventId: 'E25', resourceId: 'TR5' },
        // Delivery 26: Sarah Wilson, Truck 101, Trailer A1
        { id: 'A26-D', eventId: 'E26', resourceId: 'D6' },
        { id: 'A26-T', eventId: 'E26', resourceId: 'T1' },
        { id: 'A26-TR', eventId: 'E26', resourceId: 'TR1' },
        // Delivery 27: David Lee, Truck 102, Trailer A2
        { id: 'A27-D', eventId: 'E27', resourceId: 'D7' },
        { id: 'A27-T', eventId: 'E27', resourceId: 'T2' },
        { id: 'A27-TR', eventId: 'E27', resourceId: 'TR2' },
        // Delivery 28: Laura Martinez, Truck 103, Trailer A3
        { id: 'A28-D', eventId: 'E28', resourceId: 'D8' },
        { id: 'A28-T', eventId: 'E28', resourceId: 'T3' },
        { id: 'A28-TR', eventId: 'E28', resourceId: 'TR3' },
        // Delivery 29: Tom Clark, Truck 104, Trailer A4
        { id: 'A29-D', eventId: 'E29', resourceId: 'D9' },
        { id: 'A29-T', eventId: 'E29', resourceId: 'T4' },
        { id: 'A29-TR', eventId: 'E29', resourceId: 'TR4' },
        // Delivery 30: Anna Taylor, Truck 105, Trailer A5
        { id: 'A30-D', eventId: 'E30', resourceId: 'D10' },
        { id: 'A30-T', eventId: 'E30', resourceId: 'T5' },
        { id: 'A30-TR', eventId: 'E30', resourceId: 'TR5' },
        // Delivery 31: John Doe, Truck 101, Trailer A1
        { id: 'A31-D', eventId: 'E31', resourceId: 'D1' },
        { id: 'A31-T', eventId: 'E31', resourceId: 'T1' },
        { id: 'A31-TR', eventId: 'E31', resourceId: 'TR1' },
        // Delivery 32: Jane Smith, Truck 102, Trailer A2
        { id: 'A32-D', eventId: 'E32', resourceId: 'D2' },
        { id: 'A32-T', eventId: 'E32', resourceId: 'T2' },
        { id: 'A32-TR', eventId: 'E32', resourceId: 'TR2' },
        // Delivery 33: Mike Johnson, Truck 103, Trailer A3
        { id: 'A33-D', eventId: 'E33', resourceId: 'D3' },
        { id: 'A33-T', eventId: 'E33', resourceId: 'T3' },
        { id: 'A33-TR', eventId: 'E33', resourceId: 'TR3' },
        // Delivery 34: Emily Davis, Truck 104, Trailer A4
        { id: 'A34-D', eventId: 'E34', resourceId: 'D4' },
        { id: 'A34-T', eventId: 'E34', resourceId: 'T4' },
        { id: 'A34-TR', eventId: 'E34', resourceId: 'TR4' },
        // Delivery 35: Chris Brown, Truck 105, Trailer A5
        { id: 'A35-D', eventId: 'E35', resourceId: 'D5' },
        { id: 'A35-T', eventId: 'E35', resourceId: 'T5' },
        { id: 'A35-TR', eventId: 'E35', resourceId: 'TR5' },
        // Delivery 36: Sarah Wilson, Truck 101, Trailer A1
        { id: 'A36-D', eventId: 'E36', resourceId: 'D6' },
        { id: 'A36-T', eventId: 'E36', resourceId: 'T1' },
        { id: 'A36-TR', eventId: 'E36', resourceId: 'TR1' },
        // Delivery 37: David Lee, Truck 102, Trailer A2
        { id: 'A37-D', eventId: 'E37', resourceId: 'D7' },
        { id: 'A37-T', eventId: 'E37', resourceId: 'T2' },
        { id: 'A37-TR', eventId: 'E37', resourceId: 'TR2' },
        // Delivery 38: Laura Martinez, Truck 103, Trailer A3
        { id: 'A38-D', eventId: 'E38', resourceId: 'D8' },
        { id: 'A38-T', eventId: 'E38', resourceId: 'T3' },
        { id: 'A38-TR', eventId: 'E38', resourceId: 'TR3' },
        // Delivery 39: Tom Clark, Truck 104, Trailer A4
        { id: 'A39-D', eventId: 'E39', resourceId: 'D9' },
        { id: 'A39-T', eventId: 'E39', resourceId: 'T4' },
        { id: 'A39-TR', eventId: 'E39', resourceId: 'TR4' },
        // Delivery 40: Anna Taylor, Truck 105, Trailer A5
        { id: 'A40-D', eventId: 'E40', resourceId: 'D10' },
        { id: 'A40-T', eventId: 'E40', resourceId: 'T5' },
        { id: 'A40-TR', eventId: 'E40', resourceId: 'TR5' },
        // Delivery 41: John Doe, Truck 101, Trailer A1
        { id: 'A41-D', eventId: 'E41', resourceId: 'D1' },
        { id: 'A41-T', eventId: 'E41', resourceId: 'T1' },
        { id: 'A41-TR', eventId: 'E41', resourceId: 'TR1' },
        // Delivery 42: Jane Smith, Truck 102, Trailer A2
        { id: 'A42-D', eventId: 'E42', resourceId: 'D2' },
        { id: 'A42-T', eventId: 'E42', resourceId: 'T2' },
        { id: 'A42-TR', eventId: 'E42', resourceId: 'TR2' },
        // Delivery 43: Mike Johnson, Truck 103, Trailer A3
        { id: 'A43-D', eventId: 'E43', resourceId: 'D3' },
        { id: 'A43-T', eventId: 'E43', resourceId: 'T3' },
        { id: 'A43-TR', eventId: 'E43', resourceId: 'TR3' },
        // Delivery 44: Emily Davis, Truck 104, Trailer A4
        { id: 'A44-D', eventId: 'E44', resourceId: 'D4' },
        { id: 'A44-T', eventId: 'E44', resourceId: 'T4' },
        { id: 'A44-TR', eventId: 'E44', resourceId: 'TR4' },
        // Delivery 45: Chris Brown, Truck 105, Trailer A5
        { id: 'A45-D', eventId: 'E45', resourceId: 'D5' },
        { id: 'A45-T', eventId: 'E45', resourceId: 'T5' },
        { id: 'A45-TR', eventId: 'E45', resourceId: 'TR5' },
        // Delivery 46: Sarah Wilson, Truck 101, Trailer A1
        { id: 'A46-D', eventId: 'E46', resourceId: 'D6' },
        { id: 'A46-T', eventId: 'E46', resourceId: 'T1' },
        { id: 'A46-TR', eventId: 'E46', resourceId: 'TR1' },
        // Delivery 47: David Lee, Truck 102, Trailer A2
        { id: 'A47-D', eventId: 'E47', resourceId: 'D7' },
        { id: 'A47-T', eventId: 'E47', resourceId: 'T2' },
        { id: 'A47-TR', eventId: 'E47', resourceId: 'TR2' },
        // Delivery 48: Laura Martinez, Truck 103, Trailer A3
        { id: 'A48-D', eventId: 'E48', resourceId: 'D8' },
        { id: 'A48-T', eventId: 'E48', resourceId: 'T3' },
        { id: 'A48-TR', eventId: 'E48', resourceId: 'TR3' },
        // Delivery 49: Tom Clark, Truck 104, Trailer A4
        { id: 'A49-D', eventId: 'E49', resourceId: 'D9' },
        { id: 'A49-T', eventId: 'E49', resourceId: 'T4' },
        { id: 'A49-TR', eventId: 'E49', resourceId: 'TR4' },
        // Delivery 50: Anna Taylor, Truck 105, Trailer A5
        { id: 'A50-D', eventId: 'E50', resourceId: 'D10' },
        { id: 'A50-T', eventId: 'E50', resourceId: 'T5' },
        { id: 'A50-TR', eventId: 'E50', resourceId: 'TR5' },
    ],
    resourceTimeRanges: [
        // Driver Shifts (8 AM–4 PM, Mon–Fri, unless on Time Off)
        // John Doe: Shifts May 1–2, May 5–9, May 12–14 (excludes Time Off on May 3, May 10)
        { id: 'RTR-D1-S1', resourceId: 'D1', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D1-S2', resourceId: 'D1', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D1-S3', resourceId: 'D1', startDate: '2025-05-05T08:00:00Z', endDate: '2025-05-05T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D1-S4', resourceId: 'D1', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D1-S5', resourceId: 'D1', startDate: '2025-05-07T08:00:00Z', endDate: '2025-05-07T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D1-S6', resourceId: 'D1', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D1-S7', resourceId: 'D1', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D1-S8', resourceId: 'D1', startDate: '2025-05-12T08:00:00Z', endDate: '2025-05-12T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D1-S9', resourceId: 'D1', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D1-S10', resourceId: 'D1', startDate: '2025-05-14T08:00:00Z', endDate: '2025-05-14T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // John Doe: Time Off May 3, May 10
        { id: 'RTR-D1-TO1', resourceId: 'D1', startDate: '2025-05-03T00:00:00Z', endDate: '2025-05-03T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        { id: 'RTR-D1-TO2', resourceId: 'D1', startDate: '2025-05-10T00:00:00Z', endDate: '2025-05-10T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // Jane Smith: Shifts May 1–2, May 6–9, May 12–14 (excludes Time Off on May 5, May 11)
        { id: 'RTR-D2-S1', resourceId: 'D2', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D2-S2', resourceId: 'D2', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D2-S3', resourceId: 'D2', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D2-S4', resourceId: 'D2', startDate: '2025-05-07T08:00:00Z', endDate: '2025-05-07T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D2-S5', resourceId: 'D2', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D2-S6', resourceId: 'D2', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D2-S7', resourceId: 'D2', startDate: '2025-05-12T08:00:00Z', endDate: '2025-05-12T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D2-S8', resourceId: 'D2', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D2-S9', resourceId: 'D2', startDate: '2025-05-14T08:00:00Z', endDate: '2025-05-14T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // Jane Smith: Time Off May 5, May 11
        { id: 'RTR-D2-TO1', resourceId: 'D2', startDate: '2025-05-05T00:00:00Z', endDate: '2025-05-05T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        { id: 'RTR-D2-TO2', resourceId: 'D2', startDate: '2025-05-11T00:00:00Z', endDate: '2025-05-11T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // Mike Johnson: Shifts May 1–2, May 6–9, May 12–13 (excludes Time Off on May 7, May 14)
        { id: 'RTR-D3-S1', resourceId: 'D3', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D3-S2', resourceId: 'D3', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D3-S3', resourceId: 'D3', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D3-S4', resourceId: 'D3', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D3-S5', resourceId: 'D3', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D3-S6', resourceId: 'D3', startDate: '2025-05-12T08:00:00Z', endDate: '2025-05-12T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D3-S7', resourceId: 'D3', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // Mike Johnson: Time Off May 7, May 14
        { id: 'RTR-D3-TO1', resourceId: 'D3', startDate: '2025-05-07T00:00:00Z', endDate: '2025-05-07T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        { id: 'RTR-D3-TO2', resourceId: 'D3', startDate: '2025-05-14T00:00:00Z', endDate: '2025-05-14T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // Emily Davis: Shifts May 1–2, May 5–6, May 8–9, May 12–13 (excludes Time Off on May 10–11)
        { id: 'RTR-D4-S1', resourceId: 'D4', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D4-S2', resourceId: 'D4', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D4-S3', resourceId: 'D4', startDate: '2025-05-05T08:00:00Z', endDate: '2025-05-05T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D4-S4', resourceId: 'D4', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D4-S5', resourceId: 'D4', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D4-S6', resourceId: 'D4', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D4-S7', resourceId: 'D4', startDate: '2025-05-12T08:00:00Z', endDate: '2025-05-12T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D4-S8', resourceId: 'D4', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // Emily Davis: Time Off May 10–11
        { id: 'RTR-D4-TO1', resourceId: 'D4', startDate: '2025-05-10T00:00:00Z', endDate: '2025-05-11T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // Chris Brown: Shifts May 1–2, May 5–6, May 8–9, May 12–14 (excludes Time Off on May 4)
        { id: 'RTR-D5-S1', resourceId: 'D5', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D5-S2', resourceId: 'D5', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D5-S3', resourceId: 'D5', startDate: '2025-05-05T08:00:00Z', endDate: '2025-05-05T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D5-S4', resourceId: 'D5', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D5-S5', resourceId: 'D5', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D5-S6', resourceId: 'D5', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D5-S7', resourceId: 'D5', startDate: '2025-05-12T08:00:00Z', endDate: '2025-05-12T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D5-S8', resourceId: 'D5', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D5-S9', resourceId: 'D5', startDate: '2025-05-14T08:00:00Z', endDate: '2025-05-14T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // Chris Brown: Time Off May 4
        { id: 'RTR-D5-TO1', resourceId: 'D5', startDate: '2025-05-04T00:00:00Z', endDate: '2025-05-04T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // Sarah Wilson: Shifts May 1–2, May 5–6, May 8–9, May 12–13 (excludes Time Off on May 7, May 14)
        { id: 'RTR-D6-S1', resourceId: 'D6', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D6-S2', resourceId: 'D6', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D6-S3', resourceId: 'D6', startDate: '2025-05-05T08:00:00Z', endDate: '2025-05-05T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D6-S4', resourceId: 'D6', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D6-S5', resourceId: 'D6', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D6-S6', resourceId: 'D6', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D6-S7', resourceId: 'D6', startDate: '2025-05-12T08:00:00Z', endDate: '2025-05-12T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D6-S8', resourceId: 'D6', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // Sarah Wilson: Time Off May 7, May 14
        { id: 'RTR-D6-TO1', resourceId: 'D6', startDate: '2025-05-07T00:00:00Z', endDate: '2025-05-07T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        { id: 'RTR-D6-TO2', resourceId: 'D6', startDate: '2025-05-14T00:00:00Z', endDate: '2025-05-14T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // David Lee: Shifts May 1–2, May 5–6, May 8–9, May 13–14 (excludes Time Off on May 12)
        { id: 'RTR-D7-S1', resourceId: 'D7', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D7-S2', resourceId: 'D7', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D7-S3', resourceId: 'D7', startDate: '2025-05-05T08:00:00Z', endDate: '2025-05-05T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D7-S4', resourceId: 'D7', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D7-S5', resourceId: 'D7', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D7-S6', resourceId: 'D7', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D7-S7', resourceId: 'D7', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D7-S8', resourceId: 'D7', startDate: '2025-05-14T08:00:00Z', endDate: '2025-05-14T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // David Lee: Time Off May 12
        { id: 'RTR-D7-TO1', resourceId: 'D7', startDate: '2025-05-12T00:00:00Z', endDate: '2025-05-12T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // Laura Martinez: Shifts May 1–2, May 5–6, May 9, May 12–13 (excludes Time Off on May 8, May 14)
        { id: 'RTR-D8-S1', resourceId: 'D8', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D8-S2', resourceId: 'D8', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D8-S3', resourceId: 'D8', startDate: '2025-05-05T08:00:00Z', endDate: '2025-05-05T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D8-S4', resourceId: 'D8', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D8-S5', resourceId: 'D8', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D8-S6', resourceId: 'D8', startDate: '2025-05-12T08:00:00Z', endDate: '2025-05-12T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D8-S7', resourceId: 'D8', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // Laura Martinez: Time Off May 8, May 14
        { id: 'RTR-D8-TO1', resourceId: 'D8', startDate: '2025-05-08T00:00:00Z', endDate: '2025-05-08T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        { id: 'RTR-D8-TO2', resourceId: 'D8', startDate: '2025-05-14T00:00:00Z', endDate: '2025-05-14T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // Tom Clark: Shifts May 1–2, May 5–6, May 8, May 12–14 (excludes Time Off on May 9)
        { id: 'RTR-D9-S1', resourceId: 'D9', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D9-S2', resourceId: 'D9', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D9-S3', resourceId: 'D9', startDate: '2025-05-05T08:00:00Z', endDate: '2025-05-05T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D9-S4', resourceId: 'D9', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D9-S5', resourceId: 'D9', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D9-S6', resourceId: 'D9', startDate: '2025-05-12T08:00:00Z', endDate: '2025-05-12T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D9-S7', resourceId: 'D9', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D9-S8', resourceId: 'D9', startDate: '2025-05-14T08:00:00Z', endDate: '2025-05-14T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // Tom Clark: Time Off May 9
        { id: 'RTR-D9-TO1', resourceId: 'D9', startDate: '2025-05-09T00:00:00Z', endDate: '2025-05-09T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // Anna Taylor: Shifts May 1–2, May 5–6, May 8–9, May 13–14 (excludes Time Off on May 12)
        { id: 'RTR-D10-S1', resourceId: 'D10', startDate: '2025-05-01T08:00:00Z', endDate: '2025-05-01T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D10-S2', resourceId: 'D10', startDate: '2025-05-02T08:00:00Z', endDate: '2025-05-02T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D10-S3', resourceId: 'D10', startDate: '2025-05-05T08:00:00Z', endDate: '2025-05-05T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D10-S4', resourceId: 'D10', startDate: '2025-05-06T08:00:00Z', endDate: '2025-05-06T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D10-S5', resourceId: 'D10', startDate: '2025-05-08T08:00:00Z', endDate: '2025-05-08T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D10-S6', resourceId: 'D10', startDate: '2025-05-09T08:00:00Z', endDate: '2025-05-09T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D10-S7', resourceId: 'D10', startDate: '2025-05-13T08:00:00Z', endDate: '2025-05-13T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        { id: 'RTR-D10-S8', resourceId: 'D10', startDate: '2025-05-14T08:00:00Z', endDate: '2025-05-14T16:00:00Z', name: 'Shift', timeRangeType: 'available' },
        // Anna Taylor: Time Off May 12
        { id: 'RTR-D10-TO1', resourceId: 'D10', startDate: '2025-05-12T00:00:00Z', endDate: '2025-05-12T23:59:59Z', name: 'Time Off', timeRangeType: 'unavailable' },
        // Truck Maintenance
        // Truck 101 (T1): Maintenance May 4, 2025
        { id: 'RTR-T1-M1', resourceId: 'T1', startDate: '2025-05-04T00:00:00Z', endDate: '2025-05-04T23:59:59Z', name: 'Maintenance', timeRangeType: 'unavailable' },
        // Truck 102 (T2): Maintenance May 11, 2025
        { id: 'RTR-T2-M1', resourceId: 'T2', startDate: '2025-05-11T00:00:00Z', endDate: '2025-05-11T23:59:59Z', name: 'Maintenance', timeRangeType: 'unavailable' },
        // Trailer Maintenance
        // Trailer A1 (TR1): Maintenance May 5, 2025
        { id: 'RTR-TR1-M1', resourceId: 'TR1', startDate: '2025-05-05T00:00:00Z', endDate: '2025-05-05T23:59:59Z', name: 'Maintenance', timeRangeType: 'unavailable' },
        // Trailer A2 (TR2): Maintenance May 12, 2025
        { id: 'RTR-TR2-M1', resourceId: 'TR2', startDate: '2025-05-12T00:00:00Z', endDate: '2025-05-12T23:59:59Z', name: 'Maintenance', timeRangeType: 'unavailable' },
    ],
};

Post by Animal »

Thanks for that. Will try to make a demo with three Scheduler modes, "Drivers", "Trucks" and "Trailers"


Post by Animal »

Is this the kind of thing you have in mind?

Screenshot 2025-04-26 at 16.01.25.png
Screenshot 2025-04-26 at 16.01.25.png (155.88 KiB) Viewed 666 times

Post by joel.schuster »

Yes, indeed, now add the two other modes for Truck and Trailer Schedule.

You’ll also note the availability items for driver shifts and vacation and maintenance schedules for the equipment.

Thanks!


Post by Animal »

joel.schuster wrote: Sat Apr 26, 2025 4:56 pm

You’ll also note the availability items for driver shifts and vacation and maintenance schedules for the equipment.

What does this mean?


Post by Animal »

It looks like this now:

resourceviews.mov
(1.46 MiB) Downloaded 21 times

Post by Animal »

OK, I see what you meant about shifts and time off. We just exposed a bug thanks to your test data. Those ResourceTimeRanges were not being displayed.

We see this for Drivers now:

Screenshot 2025-04-28 at 09.22.32.png
Screenshot 2025-04-28 at 09.22.32.png (151.53 KiB) Viewed 654 times

Post by Animal »

Which other modes would your app have enabled in real life? By default, Day, Week, Month, Year and Agenda modes are included? Which are required by this use case, and which should be the initially visible mode?


Post by joel.schuster »

These look really great and will be incredibly helpful! Thank you so much!

There are three other items I have to work in:

  1. Two-week view. I know how to do that, but you were asking. This would also me the default mode/view.
  2. The ability to edit those Resource Time Ranges. I was thinking of adding a toggle switch to the top tool bar when on the Driver or equipment views that would allow the user to edit those instead of editing events (deliveries).
  3. Allow users to assign drivers or equipment to an even by click and drag. I was thinking that I would, by default, set up new deliveries to a “.unassigned” resource. Those deliveries would be displayed in the first row and allow users to drag them down to particular drivers or equipment, thus changing the event.

Finally, I will also be keeping track of which equipment specific drivers are trained on. And, there is a materials list that I will need to check for equipment since only certain types of equipment can deliver certain types of materials. It almost feels like materials are another type of resource, but I am not 100% sure about that.

I'll need to work out how to set colors for the different resource schedules. i.e. A Shift should be available, and Time Off should be unavailable, and colored accordingly.

If you would like me to update the test data to account for any of that, I would be happy to do so.


Post by Animal »

OK, we're getting into the professional services area a bit now. 😁

I will submit this code branch as I have it now.

TimeRanges are background and do not interact with the pointer for now. We will need to address those in future threads. Both the Scheduler and Calendar TimeRanges do not allow interaction.

Drag to assign resources may be seen here for Scheduler : https://bryntum.com/products/scheduler/examples/drag-from-list/

And here for Calendar: https://bryntum.com/products/calendar/examples/drag-onto-tasks/

As for a materials store, you can load all stores via the CrudManager. That last example loads the equipment to assign through the CrudManager


Post Reply