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' },
],
};