custom_ui/frontend/src/utils.js

1644 lines
47 KiB
JavaScript

class DataUtils {
// static buildClientData(clients) {
// const address = `${client["address"]["address_line_1"] || ""} ${client["address"]["address_line_2"] || ""} ${client["address"]["city"] || ""} ${client["address"]["state"] || ""}`.trim();
// const clientName = `${client["customer"]["customer_name"] || "N/A"} ${address}`;
// return clients.map((client) => [clientName, client.]
// }
static calculateStepProgress(steps) {
if (!steps || steps.length === 0) return "0/0";
const completedSteps = steps.filter((step) => step.status === "completed").length;
return `${completedSteps}/${steps.length}`;
}
static dummyClientData = [
{
id: 1,
fullName: "John Doe 123 Lane Dr Cityville, MN",
appointmentScheduled: "completed",
estimateSent: "in progress",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 2,
fullName: "Jane Smith 456 Oak St Townsville, CA",
appointmentScheduled: "in progress",
estimateSent: "not started",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 3,
fullName: "Mike Johnson 789 Pine Rd Villagetown, TX",
appointmentScheduled: "completed",
estimateSent: "completed",
paymentReceived: "in progress",
jobStatus: "in progress",
},
{
id: 4,
fullName: "Emily Davis 321 Maple Ave Hamlet, FL",
appointmentScheduled: "not started",
estimateSent: "not started",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 5,
fullName: "David Wilson 654 Cedar Blvd Borough, NY",
appointmentScheduled: "completed",
estimateSent: "completed",
paymentReceived: "completed",
jobStatus: "completed",
},
// create 30 more dummy entries
{
id: 6,
fullName: "Sarah Brown 987 Birch Ln Metropolis, IL",
appointmentScheduled: "in progress",
estimateSent: "not started",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 7,
fullName: "Chris Taylor 159 Spruce Ct Capital City, WA",
appointmentScheduled: "completed",
estimateSent: "completed",
paymentReceived: "in progress",
jobStatus: "in progress",
},
{
id: 8,
fullName: "Amanda Martinez 753 Willow Dr Smalltown, OH",
appointmentScheduled: "not started",
estimateSent: "not started",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 9,
fullName: "Joshua Anderson 852 Aspen Rd Bigcity, NJ",
appointmentScheduled: "completed",
estimateSent: "in progress",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 10,
fullName: "Olivia Thomas 147 Cypress St Uptown, GA",
appointmentScheduled: "completed",
estimateSent: "completed",
paymentReceived: "completed",
jobStatus: "completed",
},
{
id: 11,
fullName: "Daniel Jackson 369 Fir Ave Downtown, MI",
appointmentScheduled: "in progress",
estimateSent: "not started",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 12,
fullName: "Sophia White 258 Palm Blvd Riverside, AZ",
appointmentScheduled: "completed",
estimateSent: "completed",
paymentReceived: "in progress",
jobStatus: "in progress",
},
{
id: 13,
fullName: "Matthew Harris 951 Olive Ln Seaside, OR",
appointmentScheduled: "not started",
estimateSent: "not started",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 14,
fullName: "Isabella Clark 753 Magnolia Ct Hilltown, SC",
appointmentScheduled: "completed",
estimateSent: "in progress",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 15,
fullName: "Andrew Lewis 357 Dogwood Dr Lakeview, VT",
appointmentScheduled: "completed",
estimateSent: "completed",
paymentReceived: "completed",
jobStatus: "completed",
},
{
id: 16,
fullName: "Mia Robinson 159 Cherry St Forestville, KY",
appointmentScheduled: "in progress",
estimateSent: "not started",
paymentReceived: "not started",
jobStatus: "not started",
},
{
id: 17,
fullName: "Ethan Walker 456 Walnut Rd Meadowbrook, ND",
appointmentScheduled: "completed",
estimateSent: "completed",
paymentReceived: "in progress",
jobStatus: "in progress",
},
{
id: 18,
fullName: "Ava Hall 123 Poplar Ave Greenfield, MS",
appointmentScheduled: "not started",
estimateSent: "not started",
paymentReceived: "not started",
jobStatus: "not started",
},
];
static dummyJobData = [
{
jobId: "JOB001",
foreman: "Mike Thompson",
crew: ["Worker A", "Worker B"],
address: "123 Lane Dr, Cityville, MN",
customer: "John Doe",
overAllStatus: "in progress",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "completed" },
{ stepName: "Locate Utilities", status: "in progress" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB002",
foreman: null,
crew: [],
address: "456 Oak St, Townsville, CA",
customer: "Jane Smith",
overAllStatus: "not started",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "not started" },
{ stepName: "Materials Received", status: "not started" },
{ stepName: "Permits", status: "not started" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "not started" },
{ stepName: "Crew Assigned", status: "not started" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB003",
foreman: "Sarah Johnson",
crew: ["Worker C", "Worker D", "Worker E"],
address: "789 Pine Rd, Villagetown, TX",
customer: "Mike Johnson",
overAllStatus: "in progress",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "completed" },
{ stepName: "Locate Utilities", status: "completed" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "in progress" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB004",
foreman: null,
crew: [],
address: "321 Maple Ave, Hamlet, FL",
customer: "Emily Davis",
overAllStatus: "not started",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "not started" },
{ stepName: "Materials Received", status: "not started" },
{ stepName: "Permits", status: "not started" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "not started" },
{ stepName: "Crew Assigned", status: "not started" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB005",
foreman: "David Martinez",
crew: ["Worker F", "Worker G"],
address: "654 Cedar Blvd, Borough, NY",
customer: "David Wilson",
overAllStatus: "completed",
completionDate: "2024-10-15",
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "completed" },
{ stepName: "Locate Utilities", status: "completed" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "completed" },
{ stepName: "Job Completed", status: "completed" },
],
},
{
jobId: "JOB006",
foreman: null,
crew: [],
address: "987 Birch Ln, Metropolis, IL",
customer: "Sarah Brown",
overAllStatus: "not started",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "in progress" },
{ stepName: "Materials Received", status: "not started" },
{ stepName: "Permits", status: "not started" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "not started" },
{ stepName: "Crew Assigned", status: "not started" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB007",
foreman: "Chris Wilson",
crew: ["Worker H", "Worker I"],
address: "159 Spruce Ct, Capital City, WA",
customer: "Chris Taylor",
overAllStatus: "in progress",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "completed" },
{ stepName: "Locate Utilities", status: "completed" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "in progress" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB008",
foreman: null,
crew: [],
address: "753 Willow Dr, Smalltown, OH",
customer: "Amanda Martinez",
overAllStatus: "not started",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "not started" },
{ stepName: "Materials Received", status: "not started" },
{ stepName: "Permits", status: "not started" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "not started" },
{ stepName: "Crew Assigned", status: "not started" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB009",
foreman: "Lisa Anderson",
crew: ["Worker J"],
address: "852 Aspen Rd, Bigcity, NJ",
customer: "Joshua Anderson",
overAllStatus: "in progress",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "in progress" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB010",
foreman: "Robert Thomas",
crew: ["Worker K", "Worker L", "Worker M"],
address: "147 Cypress St, Uptown, GA",
customer: "Olivia Thomas",
overAllStatus: "completed",
completionDate: "2024-10-20",
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "completed" },
{ stepName: "Locate Utilities", status: "completed" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "completed" },
{ stepName: "Job Completed", status: "completed" },
],
},
{
jobId: "JOB011",
foreman: null,
crew: [],
address: "369 Fir Ave, Downtown, MI",
customer: "Daniel Jackson",
overAllStatus: "not started",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "in progress" },
{ stepName: "Materials Received", status: "not started" },
{ stepName: "Permits", status: "not started" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "not started" },
{ stepName: "Crew Assigned", status: "not started" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB012",
foreman: "Maria White",
crew: ["Worker N", "Worker O"],
address: "258 Palm Blvd, Riverside, AZ",
customer: "Sophia White",
overAllStatus: "in progress",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "completed" },
{ stepName: "Locate Utilities", status: "completed" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "in progress" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB013",
foreman: null,
crew: [],
address: "951 Olive Ln, Seaside, OR",
customer: "Matthew Harris",
overAllStatus: "not started",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "not started" },
{ stepName: "Materials Received", status: "not started" },
{ stepName: "Permits", status: "not started" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "not started" },
{ stepName: "Crew Assigned", status: "not started" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB014",
foreman: "James Clark",
crew: ["Worker P"],
address: "753 Magnolia Ct, Hilltown, SC",
customer: "Isabella Clark",
overAllStatus: "in progress",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "in progress" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB015",
foreman: "Patricia Lewis",
crew: ["Worker Q", "Worker R", "Worker S"],
address: "357 Dogwood Dr, Lakeview, VT",
customer: "Andrew Lewis",
overAllStatus: "completed",
completionDate: "2024-10-18",
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "completed" },
{ stepName: "Locate Utilities", status: "completed" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "completed" },
{ stepName: "Job Completed", status: "completed" },
],
},
{
jobId: "JOB016",
foreman: null,
crew: [],
address: "159 Cherry St, Forestville, KY",
customer: "Mia Robinson",
overAllStatus: "not started",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "in progress" },
{ stepName: "Materials Received", status: "not started" },
{ stepName: "Permits", status: "not started" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "not started" },
{ stepName: "Crew Assigned", status: "not started" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB017",
foreman: "Kevin Walker",
crew: ["Worker T", "Worker U"],
address: "456 Walnut Rd, Meadowbrook, ND",
customer: "Ethan Walker",
overAllStatus: "in progress",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "completed" },
{ stepName: "Materials Received", status: "completed" },
{ stepName: "Permits", status: "completed" },
{ stepName: "Locate Utilities", status: "completed" },
{ stepName: "Foreman Assigned", status: "completed" },
{ stepName: "Crew Assigned", status: "completed" },
{ stepName: "Job Started", status: "in progress" },
{ stepName: "Job Completed", status: "not started" },
],
},
{
jobId: "JOB018",
foreman: null,
crew: [],
address: "123 Poplar Ave, Greenfield, MS",
customer: "Ava Hall",
overAllStatus: "not started",
completionDate: null,
steps: [
{ stepName: "Materials Ordered", status: "not started" },
{ stepName: "Materials Received", status: "not started" },
{ stepName: "Permits", status: "not started" },
{ stepName: "Locate Utilities", status: "not started" },
{ stepName: "Foreman Assigned", status: "not started" },
{ stepName: "Crew Assigned", status: "not started" },
{ stepName: "Job Started", status: "not started" },
{ stepName: "Job Completed", status: "not started" },
],
},
];
static dummyServiceData = [
// Scheduled services
{
id: "service_1",
title: "Sprinkler System Installation - John Doe",
customer: "John Doe",
address: "123 Lane Dr, Cityville, MN",
serviceType: "Sprinkler System Installation",
foreman: "Mike Thompson",
crew: ["Technician A", "Technician B"],
scheduledDate: "2025-10-25",
scheduledTime: "08:00",
duration: 480, // minutes (8 hours)
status: "scheduled",
priority: "high",
estimatedCost: 4500,
notes: "Residential front and back yard coverage, 12 zones",
},
{
id: "service_2",
title: "Sprinkler Winterization - Jane Smith",
customer: "Jane Smith",
address: "456 Oak St, Townsville, CA",
serviceType: "Sprinkler Winterization",
foreman: "Sarah Johnson",
crew: ["Technician C"],
scheduledDate: "2025-10-25",
scheduledTime: "14:00",
duration: 90, // minutes (1.5 hours)
status: "scheduled",
priority: "medium",
estimatedCost: 150,
notes: "Blow out all lines before first freeze",
},
{
id: "service_3",
title: "Drip Line Repair - Mike Johnson",
customer: "Mike Johnson",
address: "789 Pine Rd, Villagetown, TX",
serviceType: "Drip Line Repair",
foreman: "David Martinez",
crew: ["Technician D"],
scheduledDate: "2025-10-26",
scheduledTime: "09:00",
duration: 120, // minutes (2 hours)
status: "scheduled",
priority: "high",
estimatedCost: 280,
notes: "Multiple leaks in flower bed drip system",
},
{
id: "service_4",
title: "Controller Programming - Emily Davis",
customer: "Emily Davis",
address: "321 Maple Ave, Hamlet, FL",
serviceType: "Controller Programming",
foreman: "Chris Wilson",
crew: ["Technician E"],
scheduledDate: "2025-10-27",
scheduledTime: "10:00",
duration: 60, // minutes (1 hour)
status: "scheduled",
priority: "medium",
estimatedCost: 125,
notes: "Seasonal schedule update and zone testing",
},
{
id: "service_5",
title: "Spring Startup - David Wilson",
customer: "David Wilson",
address: "654 Cedar Blvd, Borough, NY",
serviceType: "Spring Startup",
foreman: "Lisa Anderson",
crew: ["Technician F"],
scheduledDate: "2025-10-28",
scheduledTime: "11:00",
duration: 75, // minutes (1.25 hours)
status: "scheduled",
priority: "low",
estimatedCost: 95,
notes: "Annual system startup and inspection",
},
{
id: "service_6",
title: "Zone Expansion - Sarah Brown",
customer: "Sarah Brown",
address: "987 Birch Ln, Metropolis, IL",
serviceType: "Zone Expansion",
foreman: "Robert Thomas",
crew: ["Technician G", "Technician H"],
scheduledDate: "2025-10-29",
scheduledTime: "08:30",
duration: 300, // minutes (5 hours)
status: "scheduled",
priority: "high",
estimatedCost: 1800,
notes: "Add 4 new zones to existing system for landscaped areas",
},
{
id: "service_13",
title: "Backflow Testing - Robert Green",
customer: "Robert Green",
address: "445 Elm St, Riverside, CA",
serviceType: "Backflow Testing",
foreman: "Mike Thompson",
crew: ["Technician I"],
scheduledDate: "2025-10-27",
scheduledTime: "14:30",
duration: 60, // minutes (1 hour)
status: "scheduled",
priority: "medium",
estimatedCost: 120,
notes: "Annual backflow preventer inspection",
},
{
id: "service_14",
title: "Smart Controller Install - Lisa Park",
customer: "Lisa Park",
address: "892 Maple Dr, Springfield, TX",
serviceType: "Smart Controller Install",
foreman: "Sarah Johnson",
crew: ["Technician J"],
scheduledDate: "2025-10-28",
scheduledTime: "09:30",
duration: 120, // minutes (2 hours)
status: "scheduled",
priority: "low",
estimatedCost: 450,
notes: "Upgrade to WiFi-enabled smart controller",
},
{
id: "service_15",
title: "Pump Station Repair - Mark Wilson",
customer: "Mark Wilson",
address: "123 Oak Ave, Laketown, FL",
serviceType: "Pump Station Repair",
foreman: "David Martinez",
crew: ["Technician K", "Technician L"],
scheduledDate: "2025-10-29",
scheduledTime: "13:00",
duration: 180, // minutes (3 hours)
status: "scheduled",
priority: "urgent",
estimatedCost: 680,
notes: "Pump not priming, possible impeller issue",
},
// Unscheduled services
{
id: "service_7",
title: "Emergency Leak Repair - Amanda Martinez",
customer: "Amanda Martinez",
address: "753 Willow Dr, Smalltown, OH",
serviceType: "Emergency Leak Repair",
foreman: null,
crew: [],
scheduledDate: null,
scheduledTime: null,
duration: 90, // minutes (1.5 hours)
status: "unscheduled",
priority: "urgent",
estimatedCost: 200,
notes: "Main line leak flooding driveway",
},
{
id: "service_8",
title: "Broken Sprinkler Head - Joshua Anderson",
customer: "Joshua Anderson",
address: "852 Aspen Rd, Bigcity, NJ",
serviceType: "Sprinkler Head Replacement",
foreman: null,
crew: [],
scheduledDate: null,
scheduledTime: null,
duration: 45, // minutes
status: "unscheduled",
priority: "medium",
estimatedCost: 75,
notes: "Multiple heads damaged by mower",
},
{
id: "service_9",
title: "System Inspection - Olivia Thomas",
customer: "Olivia Thomas",
address: "147 Cypress St, Uptown, GA",
serviceType: "System Inspection",
foreman: null,
crew: [],
scheduledDate: null,
scheduledTime: null,
duration: 60, // minutes (1 hour)
status: "unscheduled",
priority: "low",
estimatedCost: 85,
notes: "Annual maintenance check requested",
},
{
id: "service_10",
title: "New Installation Quote - Daniel Jackson",
customer: "Daniel Jackson",
address: "369 Fir Ave, Downtown, MI",
serviceType: "Installation Quote",
foreman: null,
crew: [],
scheduledDate: null,
scheduledTime: null,
duration: 45, // minutes
status: "unscheduled",
priority: "medium",
estimatedCost: 0,
notes: "Estimate for new construction sprinkler system",
},
{
id: "service_11",
title: "Valve Replacement - Sophia White",
customer: "Sophia White",
address: "258 Palm Blvd, Riverside, AZ",
serviceType: "Valve Replacement",
foreman: null,
crew: [],
scheduledDate: null,
scheduledTime: null,
duration: 120, // minutes (2 hours)
status: "unscheduled",
priority: "medium",
estimatedCost: 350,
notes: "Zone 3 valve not closing properly",
},
{
id: "service_12",
title: "Controller Repair - Matthew Harris",
customer: "Matthew Harris",
address: "951 Olive Ln, Seaside, OR",
serviceType: "Controller Repair",
foreman: null,
crew: [],
scheduledDate: null,
scheduledTime: null,
duration: 90, // minutes (1.5 hours)
status: "unscheduled",
priority: "urgent",
estimatedCost: 250,
notes: "Controller display not working, possible storm damage",
},
];
static dummyRouteData = [
{
routeId: "TECH-001",
routeName: "North Valley Tech Route",
routeType: "Tech Route",
technician: "Mike Thompson",
date: "2025-10-25",
status: "in progress",
totalStops: 6,
completedStops: 2,
estimatedDuration: "8 hours",
startTime: "07:00",
vehicleId: "TECH-101",
totalMileage: 52.3,
stops: [
{
stopId: 1,
customer: "John Doe",
address: "123 Lane Dr, Cityville, MN",
serviceType: "Complete Sprinkler System Install",
estimatedTime: "07:30",
duration: 240,
status: "completed",
coordinates: { lat: 44.9778, lng: -93.265 },
},
{
stopId: 2,
customer: "Sarah Johnson",
address: "456 Oak St, Northfield, MN",
serviceType: "Zone Expansion Install",
estimatedTime: "11:45",
duration: 180,
status: "completed",
coordinates: { lat: 44.4583, lng: -93.1614 },
},
{
stopId: 3,
customer: "Mike Wilson",
address: "789 Pine Rd, Faribault, MN",
serviceType: "Drip System Installation",
estimatedTime: "15:00",
duration: 120,
status: "in progress",
coordinates: { lat: 44.295, lng: -93.2688 },
},
{
stopId: 4,
customer: "Emily Davis",
address: "321 Maple Ave, Owatonna, MN",
serviceType: "Smart Controller Install",
estimatedTime: "17:30",
duration: 90,
status: "not started",
coordinates: { lat: 44.0839, lng: -93.2261 },
},
{
stopId: 5,
customer: "David Brown",
address: "654 Cedar Blvd, Austin, MN",
serviceType: "Backflow Preventer Install",
estimatedTime: "19:15",
duration: 75,
status: "not started",
coordinates: { lat: 43.6667, lng: -92.9746 },
},
{
stopId: 6,
customer: "Lisa Garcia",
address: "987 Elm St, Albert Lea, MN",
serviceType: "Pump Station Installation",
estimatedTime: "20:45",
duration: 150,
status: "not started",
coordinates: { lat: 43.6481, lng: -93.3687 },
},
],
},
{
routeId: "MAT-002",
routeName: "South Metro Materials Route",
routeType: "Materials Route",
technician: "Sarah Johnson",
date: "2025-10-25",
status: "completed",
totalStops: 5,
completedStops: 5,
estimatedDuration: "4 hours",
startTime: "06:00",
vehicleId: "MAT-102",
totalMileage: 42.1,
stops: [
{
stopId: 1,
customer: "Jennifer White - Job #2245",
address: "555 Main St, Burnsville, MN",
serviceType: "Deliver Pipes & Fittings",
estimatedTime: "06:30",
duration: 30,
status: "completed",
coordinates: { lat: 44.7677, lng: -93.2777 },
},
{
stopId: 2,
customer: "Mark Anderson - Job #2248",
address: "777 First Ave, Eagan, MN",
serviceType: "Deliver Sprinkler Heads & Valves",
estimatedTime: "07:15",
duration: 25,
status: "completed",
coordinates: { lat: 44.8041, lng: -93.1668 },
},
{
stopId: 3,
customer: "Carol Thompson - Job #2250",
address: "999 Second St, Apple Valley, MN",
serviceType: "Deliver Controller & Wire",
estimatedTime: "08:00",
duration: 20,
status: "completed",
coordinates: { lat: 44.7319, lng: -93.2177 },
},
{
stopId: 4,
customer: "Steven Clark - Job #2253",
address: "111 Third Ave, Rosemount, MN",
serviceType: "Deliver Backflow Preventer",
estimatedTime: "08:45",
duration: 25,
status: "completed",
coordinates: { lat: 44.7391, lng: -93.0658 },
},
{
stopId: 5,
customer: "Nancy Rodriguez - Job #2256",
address: "222 Fourth St, Lakeville, MN",
serviceType: "Deliver Pump & Pressure Tank",
estimatedTime: "09:30",
duration: 35,
status: "completed",
coordinates: { lat: 44.6497, lng: -93.2427 },
},
],
},
{
routeId: "WAR-003",
routeName: "West Metro Warranty Route",
routeType: "Warranty Route",
technician: "David Martinez",
date: "2025-10-26",
status: "not started",
totalStops: 6,
completedStops: 0,
estimatedDuration: "5.5 hours",
startTime: "08:00",
vehicleId: "SRV-103",
totalMileage: 48.7,
stops: [
{
stopId: 1,
customer: "Rebecca Johnson - Warranty #W-445",
address: "444 West St, Minnetonka, MN",
serviceType: "Warranty: Valve Not Closing",
estimatedTime: "08:30",
duration: 60,
status: "not started",
coordinates: { lat: 44.9211, lng: -93.4687 },
},
{
stopId: 2,
customer: "Kevin Brown - Warranty #W-448",
address: "666 Lake Rd, Wayzata, MN",
serviceType: "Warranty: Controller Malfunction",
estimatedTime: "10:00",
duration: 75,
status: "not started",
coordinates: { lat: 44.9744, lng: -93.5066 },
},
{
stopId: 3,
customer: "Michelle Davis - Warranty #W-451",
address: "888 Shore Dr, Orono, MN",
serviceType: "Warranty: Sprinkler Head Broken",
estimatedTime: "11:30",
duration: 45,
status: "not started",
coordinates: { lat: 45.0541, lng: -93.6091 },
},
{
stopId: 4,
customer: "Daniel Wilson - Warranty #W-453",
address: "101 Bay Ln, Mound, MN",
serviceType: "Warranty: Pipe Leak Repair",
estimatedTime: "12:30",
duration: 90,
status: "not started",
coordinates: { lat: 44.9364, lng: -93.6719 },
},
{
stopId: 5,
customer: "Laura Smith - Warranty #W-456",
address: "202 Hill St, Chanhassen, MN",
serviceType: "Warranty: Low Water Pressure",
estimatedTime: "14:15",
duration: 60,
status: "not started",
coordinates: { lat: 44.8619, lng: -93.5272 },
},
{
stopId: 6,
customer: "James Lee - Warranty #W-458",
address: "303 Valley Rd, Chaska, MN",
serviceType: "Warranty: Zone Not Working",
estimatedTime: "15:30",
duration: 75,
status: "not started",
coordinates: { lat: 44.7886, lng: -93.6022 },
},
],
},
{
routeId: "SOD-004",
routeName: "East Metro Sod Route",
routeType: "Sod Route",
technician: "Chris Wilson",
date: "2025-10-26",
status: "in progress",
totalStops: 4,
completedStops: 1,
estimatedDuration: "6 hours",
startTime: "07:30",
vehicleId: "SOD-104",
totalMileage: 35.8,
stops: [
{
stopId: 1,
customer: "Thomas Anderson - Job #2301",
address: "505 East St, Woodbury, MN",
serviceType: "Install 2,500 sq ft Sod",
estimatedTime: "08:00",
duration: 120,
status: "completed",
coordinates: { lat: 44.9237, lng: -92.9594 },
},
{
stopId: 2,
customer: "Patricia Miller - Job #2305",
address: "707 North Ave, Oakdale, MN",
serviceType: "Install 1,800 sq ft Sod",
estimatedTime: "10:30",
duration: 90,
status: "in progress",
coordinates: { lat: 44.9633, lng: -92.9652 },
},
{
stopId: 3,
customer: "Michael Taylor - Job #2308",
address: "909 South Blvd, Maplewood, MN",
serviceType: "Install 3,200 sq ft Sod",
estimatedTime: "12:15",
duration: 150,
status: "not started",
coordinates: { lat: 44.953, lng: -92.9952 },
},
{
stopId: 4,
customer: "Lisa Roberts - Job #2312",
address: "121 Center St, North St. Paul, MN",
serviceType: "Install 1,200 sq ft Sod",
estimatedTime: "15:00",
duration: 75,
status: "not started",
coordinates: { lat: 45.0119, lng: -93.0074 },
},
],
},
{
routeId: "MACH-005",
routeName: "Northwest Machine Route",
routeType: "Machine Route",
technician: "Lisa Anderson",
date: "2025-10-27",
status: "not started",
totalStops: 3,
completedStops: 0,
estimatedDuration: "5 hours",
startTime: "07:00",
vehicleId: "MACH-105",
totalMileage: 45.2,
stops: [
{
stopId: 1,
customer: "Ashley White - Job #2320",
address: "141 Northwest Dr, Plymouth, MN",
serviceType: "Deliver Trenching Machine",
estimatedTime: "07:30",
duration: 90,
status: "not started",
coordinates: { lat: 45.0105, lng: -93.4555 },
},
{
stopId: 2,
customer: "Brian Johnson - Job #2325",
address: "151 Maple St, Maple Grove, MN",
serviceType: "Deliver Boring Machine",
estimatedTime: "09:15",
duration: 75,
status: "not started",
coordinates: { lat: 45.0724, lng: -93.4557 },
},
{
stopId: 3,
customer: "Christina Davis - Job #2328",
address: "161 Oak Ave, Osseo, MN",
serviceType: "Deliver Compactor & Tools",
estimatedTime: "10:45",
duration: 60,
status: "not started",
coordinates: { lat: 45.1188, lng: -93.4025 },
},
],
},
{
routeId: "TRK-006",
routeName: "Regional Truck Route",
routeType: "Truck Route",
technician: "Mark Thompson",
date: "2025-10-27",
status: "not started",
totalStops: 4,
completedStops: 0,
estimatedDuration: "6 hours",
startTime: "06:30",
vehicleId: "TRUCK-106",
totalMileage: 78.5,
stops: [
{
stopId: 1,
customer: "Metro Landscaping - Pickup #445",
address: "2250 Highway 55, Plymouth, MN",
serviceType: "Equipment Pickup",
estimatedTime: "07:00",
duration: 30,
status: "not started",
coordinates: { lat: 45.0153, lng: -93.4233 },
},
{
stopId: 2,
customer: "Irrigation Supply Co - Order #889",
address: "1875 Industrial Blvd, Maple Grove, MN",
serviceType: "Material Pickup",
estimatedTime: "08:00",
duration: 45,
status: "not started",
coordinates: { lat: 45.0845, lng: -93.4321 },
},
{
stopId: 3,
customer: "Johnson Properties - Delivery",
address: "3456 Elm Street, Brooklyn Park, MN",
serviceType: "Equipment Drop-off",
estimatedTime: "09:15",
duration: 60,
status: "not started",
coordinates: { lat: 45.0941, lng: -93.3563 },
},
{
stopId: 4,
customer: "Storage Facility - Return",
address: "5200 Bass Lake Rd, Crystal, MN",
serviceType: "Equipment Return",
estimatedTime: "11:00",
duration: 45,
status: "not started",
coordinates: { lat: 45.0341, lng: -93.3678 },
},
],
},
];
static dummyWarrantyData = [
{
id: 1,
warrantyId: "W-001",
customer: "John Doe",
address: "123 Lane Dr, Cityville, MN",
originalJobId: "JOB001",
issueDescription: "Sprinkler head not rotating properly",
dateReported: "2024-10-20",
priority: "medium",
status: "open",
assignedTechnician: "Mike Johnson",
estimatedCompletionDate: "2024-10-25",
warrantyType: "Parts & Labor",
systemType: "Residential Irrigation",
},
{
id: 2,
warrantyId: "W-002",
customer: "Jane Smith",
address: "456 Oak St, Townsville, CA",
originalJobId: "JOB002",
issueDescription: "Controller not responding to schedule",
dateReported: "2024-10-18",
priority: "high",
status: "in progress",
assignedTechnician: "Sarah Johnson",
estimatedCompletionDate: "2024-10-23",
warrantyType: "Parts Only",
systemType: "Commercial Irrigation",
},
{
id: 3,
warrantyId: "W-003",
customer: "Mike Johnson",
address: "789 Pine Rd, Villagetown, TX",
originalJobId: "JOB003",
issueDescription: "Multiple zones not activating",
dateReported: "2024-10-15",
priority: "high",
status: "completed",
assignedTechnician: "David Martinez",
estimatedCompletionDate: "2024-10-20",
warrantyType: "Labor Only",
systemType: "Residential Irrigation",
},
{
id: 4,
warrantyId: "W-004",
customer: "Emily Davis",
address: "321 Maple Ave, Hamlet, FL",
originalJobId: "JOB004",
issueDescription: "Low water pressure in all zones",
dateReported: "2024-10-22",
priority: "medium",
status: "open",
assignedTechnician: null,
estimatedCompletionDate: "2024-10-28",
warrantyType: "Parts & Labor",
systemType: "Residential Irrigation",
},
{
id: 5,
warrantyId: "W-005",
customer: "David Wilson",
address: "654 Cedar Blvd, Borough, NY",
originalJobId: "JOB005",
issueDescription: "Valve stuck in open position",
dateReported: "2024-10-19",
priority: "high",
status: "in progress",
assignedTechnician: "Chris Wilson",
estimatedCompletionDate: "2024-10-24",
warrantyType: "Parts & Labor",
systemType: "Commercial Irrigation",
},
{
id: 6,
warrantyId: "W-006",
customer: "Sarah Brown",
address: "987 Birch Ln, Metropolis, IL",
originalJobId: "JOB006",
issueDescription: "Broken sprinkler head causing water waste",
dateReported: "2024-10-21",
priority: "low",
status: "open",
assignedTechnician: null,
estimatedCompletionDate: "2024-10-30",
warrantyType: "Parts Only",
systemType: "Residential Irrigation",
},
{
id: 7,
warrantyId: "W-007",
customer: "Chris Taylor",
address: "159 Spruce Ct, Capital City, WA",
originalJobId: "JOB007",
issueDescription: "Timer programming lost after power outage",
dateReported: "2024-10-17",
priority: "medium",
status: "completed",
assignedTechnician: "Mike Johnson",
estimatedCompletionDate: "2024-10-22",
warrantyType: "Labor Only",
systemType: "Commercial Irrigation",
},
{
id: 8,
warrantyId: "W-008",
customer: "Amanda Martinez",
address: "753 Willow Dr, Smalltown, OH",
originalJobId: "JOB008",
issueDescription: "Pipe leak causing flooding in lawn",
dateReported: "2024-10-16",
priority: "high",
status: "in progress",
assignedTechnician: "Sarah Johnson",
estimatedCompletionDate: "2024-10-23",
warrantyType: "Parts & Labor",
systemType: "Residential Irrigation",
},
{
id: 9,
warrantyId: "W-009",
customer: "Joshua Anderson",
address: "852 Aspen Rd, Bigcity, NJ",
originalJobId: "JOB009",
issueDescription: "Sprinkler coverage uneven after installation",
dateReported: "2024-10-14",
priority: "low",
status: "open",
assignedTechnician: "David Martinez",
estimatedCompletionDate: "2024-10-29",
warrantyType: "Labor Only",
systemType: "Residential Irrigation",
},
{
id: 10,
warrantyId: "W-010",
customer: "Olivia Thomas",
address: "147 Cypress St, Uptown, GA",
originalJobId: "JOB010",
issueDescription: "Rain sensor not functioning properly",
dateReported: "2024-10-13",
priority: "medium",
status: "completed",
assignedTechnician: "Chris Wilson",
estimatedCompletionDate: "2024-10-18",
warrantyType: "Parts Only",
systemType: "Commercial Irrigation",
},
];
static dummyTimesheetData = [
// Current week entries (Oct 25-31, 2025)
{
id: 1,
timesheetId: "TS-2025-001",
employee: "Mike Thompson",
employeeId: "EMP001",
date: "2025-10-25",
weekOf: "2025-10-21",
jobId: "JOB001",
customer: "John Doe",
address: "123 Lane Dr, Cityville, MN",
taskDescription: "Sprinkler System Installation - Zone 1-4",
clockIn: "07:30",
clockOut: "17:00",
breakTime: 30, // minutes
regularHours: 9.0,
overtimeHours: 0.5,
totalHours: 9.5,
status: "submitted",
approved: false,
approvedBy: null,
approvedDate: null,
hourlyRate: 28.5,
overtimeRate: 42.75,
totalPay: 292.88,
notes: "Completed main line installation and zone 1-4 heads",
equipment: ["Trencher", "Compactor", "Hand tools"],
mileage: 45,
materials: ["PVC Pipe - 200ft", "Sprinkler Heads - 15", "Valves - 4"],
},
{
id: 2,
timesheetId: "TS-2025-002",
employee: "Sarah Johnson",
employeeId: "EMP002",
date: "2025-10-25",
weekOf: "2025-10-21",
jobId: "JOB007",
customer: "Chris Taylor",
address: "159 Spruce Ct, Capital City, WA",
taskDescription: "Zone Expansion Install",
clockIn: "08:00",
clockOut: "16:30",
breakTime: 30,
regularHours: 8.0,
overtimeHours: 0,
totalHours: 8.0,
status: "approved",
approved: true,
approvedBy: "Lisa Anderson",
approvedDate: "2025-10-26",
hourlyRate: 26.0,
overtimeRate: 39.0,
totalPay: 208.0,
notes: "Added 3 new zones, tested all systems",
equipment: ["Boring machine", "Hand tools"],
mileage: 32,
materials: [
"Irrigation tubing - 150ft",
"Sprinkler Heads - 8",
"Control wire - 300ft",
],
},
{
id: 3,
timesheetId: "TS-2025-003",
employee: "David Martinez",
employeeId: "EMP003",
date: "2025-10-25",
weekOf: "2025-10-21",
jobId: "JOB012",
customer: "Sophia White",
address: "258 Palm Blvd, Riverside, AZ",
taskDescription: "Drip System Repair & Maintenance",
clockIn: "07:00",
clockOut: "15:30",
breakTime: 30,
regularHours: 8.0,
overtimeHours: 0,
totalHours: 8.0,
status: "draft",
approved: false,
approvedBy: null,
approvedDate: null,
hourlyRate: 24.5,
overtimeRate: 36.75,
totalPay: 196.0,
notes: "Repaired multiple leaks in drip lines, replaced emitters",
equipment: ["Hand tools", "Pressure gauge"],
mileage: 28,
materials: ["Drip tubing - 50ft", "Emitters - 25", "Fittings - misc"],
},
{
id: 4,
timesheetId: "TS-2025-004",
employee: "Chris Wilson",
employeeId: "EMP004",
date: "2025-10-24",
weekOf: "2025-10-21",
jobId: "JOB003",
customer: "Mike Johnson",
address: "789 Pine Rd, Villagetown, TX",
taskDescription: "Controller Programming & System Testing",
clockIn: "09:00",
clockOut: "17:30",
breakTime: 60,
regularHours: 7.5,
overtimeHours: 0,
totalHours: 7.5,
status: "submitted",
approved: false,
approvedBy: null,
approvedDate: null,
hourlyRate: 30.0,
overtimeRate: 45.0,
totalPay: 225.0,
notes: "Programmed new smart controller, tested all 8 zones",
equipment: ["Laptop", "Multimeter", "Hand tools"],
mileage: 42,
materials: ["Smart Controller - 1", "Wire nuts - 10"],
},
{
id: 5,
timesheetId: "TS-2025-005",
employee: "Lisa Anderson",
employeeId: "EMP005",
date: "2025-10-24",
weekOf: "2025-10-21",
jobId: "JOB017",
customer: "Ethan Walker",
address: "456 Walnut Rd, Meadowbrook, ND",
taskDescription: "Backflow Prevention Installation",
clockIn: "08:30",
clockOut: "16:00",
breakTime: 30,
regularHours: 7.0,
overtimeHours: 0,
totalHours: 7.0,
status: "approved",
approved: true,
approvedBy: "Mike Thompson",
approvedDate: "2025-10-25",
hourlyRate: 27.5,
overtimeRate: 41.25,
totalPay: 192.5,
notes: "Installed backflow preventer, pressure testing completed",
equipment: ["Pipe cutter", "Threading machine", "Pressure tester"],
mileage: 38,
materials: ["Backflow Preventer - 1", "Copper fittings - misc", "Solder"],
},
{
id: 6,
timesheetId: "TS-2025-006",
employee: "Mike Thompson",
employeeId: "EMP001",
date: "2025-10-23",
weekOf: "2025-10-21",
jobId: "JOB015",
customer: "Andrew Lewis",
address: "357 Dogwood Dr, Lakeview, VT",
taskDescription: "System Winterization",
clockIn: "07:30",
clockOut: "15:00",
breakTime: 30,
regularHours: 7.0,
overtimeHours: 0,
totalHours: 7.0,
status: "approved",
approved: true,
approvedBy: "Lisa Anderson",
approvedDate: "2025-10-24",
hourlyRate: 28.5,
overtimeRate: 42.75,
totalPay: 199.5,
notes: "Winterized entire system, drained all lines and components",
equipment: ["Air compressor", "Hand tools"],
mileage: 55,
materials: ["Compressed air", "Antifreeze - 2 gallons"],
},
// Previous week entries (Oct 14-20, 2025)
{
id: 7,
timesheetId: "TS-2025-007",
employee: "Sarah Johnson",
employeeId: "EMP002",
date: "2025-10-20",
weekOf: "2025-10-14",
jobId: "JOB010",
customer: "Olivia Thomas",
address: "147 Cypress St, Uptown, GA",
taskDescription: "Emergency Repair - Main Line Leak",
clockIn: "07:00",
clockOut: "18:30",
breakTime: 30,
regularHours: 8.0,
overtimeHours: 3.0,
totalHours: 11.0,
status: "approved",
approved: true,
approvedBy: "Mike Thompson",
approvedDate: "2025-10-21",
hourlyRate: 26.0,
overtimeRate: 39.0,
totalPay: 325.0,
notes: "Emergency call - repaired major main line break",
equipment: ["Excavator", "Pipe cutter", "Hand tools"],
mileage: 67,
materials: ["PVC Pipe - 20ft", "Couplings - 4", "Pipe cement"],
},
{
id: 8,
timesheetId: "TS-2025-008",
employee: "David Martinez",
employeeId: "EMP003",
date: "2025-10-19",
weekOf: "2025-10-14",
jobId: "JOB005",
customer: "David Wilson",
address: "654 Cedar Blvd, Borough, NY",
taskDescription: "Final System Testing & Cleanup",
clockIn: "08:00",
clockOut: "16:30",
breakTime: 30,
regularHours: 8.0,
overtimeHours: 0,
totalHours: 8.0,
status: "approved",
approved: true,
approvedBy: "Lisa Anderson",
approvedDate: "2025-10-20",
hourlyRate: 24.5,
overtimeRate: 36.75,
totalPay: 196.0,
notes: "Final system testing, site cleanup, customer walkthrough",
equipment: ["Hand tools", "Cleanup supplies"],
mileage: 25,
materials: ["Grass seed - 5 lbs", "Topsoil - 2 bags"],
},
{
id: 9,
timesheetId: "TS-2025-009",
employee: "Chris Wilson",
employeeId: "EMP004",
date: "2025-10-18",
weekOf: "2025-10-14",
jobId: "JOB009",
customer: "Joshua Anderson",
address: "852 Aspen Rd, Bigcity, NJ",
taskDescription: "Valve Replacement & Zone Testing",
clockIn: "08:30",
clockOut: "17:00",
breakTime: 30,
regularHours: 8.0,
overtimeHours: 0,
totalHours: 8.0,
status: "approved",
approved: true,
approvedBy: "Mike Thompson",
approvedDate: "2025-10-19",
hourlyRate: 30.0,
overtimeRate: 45.0,
totalPay: 240.0,
notes: "Replaced faulty zone 3 valve, tested all zones for proper operation",
equipment: ["Trenching shovel", "Hand tools", "Multimeter"],
mileage: 48,
materials: ["Zone Valve - 1", "Wire nuts - 5", "Electrical tape"],
},
{
id: 10,
timesheetId: "TS-2025-010",
employee: "Lisa Anderson",
employeeId: "EMP005",
date: "2025-10-17",
weekOf: "2025-10-14",
jobId: "JOB014",
customer: "Isabella Clark",
address: "753 Magnolia Ct, Hilltown, SC",
taskDescription: "Sprinkler Head Adjustments & Coverage Testing",
clockIn: "09:00",
clockOut: "16:30",
breakTime: 30,
regularHours: 7.0,
overtimeHours: 0,
totalHours: 7.0,
status: "approved",
approved: true,
approvedBy: "Sarah Johnson",
approvedDate: "2025-10-18",
hourlyRate: 27.5,
overtimeRate: 41.25,
totalPay: 192.5,
notes: "Adjusted all sprinkler heads for optimal coverage, marked areas needing attention",
equipment: ["Hand tools", "Measuring tape", "Spray paint"],
mileage: 33,
materials: ["Sprinkler Head Adjustment Tools", "Marking flags - 20"],
},
// Older entries for reporting
{
id: 11,
timesheetId: "TS-2025-011",
employee: "Mike Thompson",
employeeId: "EMP001",
date: "2025-10-16",
weekOf: "2025-10-14",
jobId: "JOB006",
customer: "Sarah Brown",
address: "987 Birch Ln, Metropolis, IL",
taskDescription: "Site Survey & Design Planning",
clockIn: "08:00",
clockOut: "15:30",
breakTime: 30,
regularHours: 7.0,
overtimeHours: 0,
totalHours: 7.0,
status: "approved",
approved: true,
approvedBy: "Lisa Anderson",
approvedDate: "2025-10-17",
hourlyRate: 28.5,
overtimeRate: 42.75,
totalPay: 199.5,
notes: "Completed site survey, created design plan for 4-zone expansion",
equipment: ["Measuring wheel", "Stake flags", "Camera"],
mileage: 40,
materials: ["Survey stakes - 50", "Flagging tape - 1 roll"],
},
{
id: 12,
timesheetId: "TS-2025-012",
employee: "Sarah Johnson",
employeeId: "EMP002",
date: "2025-10-15",
weekOf: "2025-10-14",
jobId: "MAINT-001",
customer: "Multiple Properties",
address: "Various - See route sheet",
taskDescription: "Routine Maintenance Route - North Valley",
clockIn: "07:00",
clockOut: "16:00",
breakTime: 30,
regularHours: 8.5,
overtimeHours: 0,
totalHours: 8.5,
status: "approved",
approved: true,
approvedBy: "Mike Thompson",
approvedDate: "2025-10-16",
hourlyRate: 26.0,
overtimeRate: 39.0,
totalPay: 221.0,
notes: "Completed maintenance on 8 properties - routine checks and minor adjustments",
equipment: ["Service truck", "Hand tools", "Pressure gauge"],
mileage: 85,
materials: ["Sprinkler heads - 3", "Nozzles - 5", "Wire nuts - 10"],
},
];
}
export default DataUtils;