import React from 'react'; import { useGridStore } from '../../store/gridStore'; import { Card, CardContent, CardHeader, CardTitle } from '../ui/card'; import { Button } from '../ui/button'; import { X, Truck, Package, Route, Clock, Activity, HardDrive, ArrowRight, CheckCircle, Eye, EyeOff, } from 'lucide-react'; // Colors matching the store const PATH_COLORS = [ '#f97316', // orange '#06b6d4', // cyan '#ec4899', // pink '#84cc16', // lime '#a855f7', // purple '#14b8a6', // teal '#f43f5e', // rose '#eab308', // yellow '#6366f1', // indigo '#22c55e', // green ]; interface PlanResultsModalProps { isOpen: boolean; onClose: () => void; } export const PlanResultsModal: React.FC = ({ isOpen, onClose }) => { const { planResult, selectedAlgorithm, showPlanPaths, setShowPlanPaths } = useGridStore(); if (!isOpen || !planResult) return null; return (
{/* Backdrop */}
{/* Modal */}
{/* Header */}

Delivery Plan Results

Algorithm: {selectedAlgorithm}

{/* Content */}
{/* Summary Stats */}
Total Cost

{planResult.totalCost}

Nodes Expanded

{planResult.totalNodesExpanded.toLocaleString()}

Runtime

{planResult.runtimeMs.toFixed(2)}ms

Memory

{planResult.memoryKb.toFixed(2)}KB

{/* Plan Output */} Plan Output
{planResult.output || 'No output'}
{/* Assignments */} Delivery Assignments ({planResult.assignments.length}) {planResult.assignments.length === 0 ? (

No assignments made

) : ( planResult.assignments.map((assignment, index) => { const pathColor = PATH_COLORS[index % PATH_COLORS.length]; return (
{/* Color indicator */}
S{assignment.store_id}
D{assignment.destination_id}
Cost: {assignment.path.cost} Nodes: {assignment.path.nodes_expanded}
Path: {assignment.path.plan || 'Direct'}
); }) )}
{/* Footer */}
); }; export default PlanResultsModal;