import { usePileCapStore } from '../../store/pileCapStore'; import { OneWayShearDiagram } from '../diagrams/OneWayShearDiagram'; export const ResultsSummary = () => { const results = usePileCapStore(state => state.results); if (!results) { return (
Results

No calculation results available. Please enter design parameters.

); } return (
Design Summary: {results.overallPass ? ✓ PASS : ✗ FAIL }
Governing Load: {results.governingCombination} (Case: {results.governingCaseId})
{/* Pile Reactions */}
Pile Reactions
Maximum Pile Reaction: {results.maxPileReaction.toFixed(2)} kips
Minimum Pile Reaction: {results.minPileReaction.toFixed(2)} kips
{/* Shear Checks */}
Shear Checks
{results.shearChecks.map((check, index) => { // Determine direction and location from check type string // Expected format: "One-Way Shear X (at d)" or "One-Way Shear Y (at face)" const isX = check.type.includes('X'); const isAtD = check.type.includes('at d'); // Calculate d (approximate) const reinforcement = usePileCapStore.getState().reinforcement; const geometry = usePileCapStore.getState().geometry; // d = depth - cover - bar_diameter (approx 1 inch for bar center) const cover = isX ? reinforcement.bottomConcreteCover : reinforcement.bottomConcreteCover; // Simplified const d = geometry.depth - cover - 1; return (
{check.type}: {check.pass ? ✓ PASS : ✗ FAIL }
{/* Diagram */}
Demand: {(check.demand / 1000).toFixed(2)} kips
Capacity: {(check.capacity / 1000).toFixed(2)} kips
Ratio (D/C): {check.ratio.toFixed(3)}
); })}
{/* Flexural Design */} {/* Flexural Design */}
Flexural Reinforcement (Bottom Mat)
{/* X-Direction */}
X-Direction: {results.flexuralX.pass ? ✓ PASS : ✗ FAIL }
Moment (Mu): {(results.flexuralX.moment).toFixed(2)} k-ft
Required As (Strength): {results.flexuralX.requiredAs.toFixed(2)} in²
Min As (ACI): {results.flexuralX.minAs.toFixed(2)} in²
Provided As: {results.flexuralX.providedAs.toFixed(2)} in²
Reinforcement: {results.flexuralX.barCount} {results.flexuralX.barSize} @ {results.flexuralX.spacing}" o.c.
Development Length: {results.flexuralX.developmentLength.pass ? OK : FAIL } {' '}(Req: {results.flexuralX.developmentLength.required.toFixed(1)}", Avail: {results.flexuralX.developmentLength.available.toFixed(1)}")
{/* Y-Direction */}
Y-Direction: {results.flexuralY.pass ? ✓ PASS : ✗ FAIL }
Moment (Mu): {(results.flexuralY.moment).toFixed(2)} k-ft
Required As (Strength): {results.flexuralY.requiredAs.toFixed(2)} in²
Min As (ACI): {results.flexuralY.minAs.toFixed(2)} in²
Provided As: {results.flexuralY.providedAs.toFixed(2)} in²
Reinforcement: {results.flexuralY.barCount} {results.flexuralY.barSize} @ {results.flexuralY.spacing}" o.c.
Development Length: {results.flexuralY.developmentLength.pass ? OK : FAIL } {' '}(Req: {results.flexuralY.developmentLength.required.toFixed(1)}", Avail: {results.flexuralY.developmentLength.available.toFixed(1)}")
{/* Bearing Checks */}
Load Transfer (Bearing)
{/* Column Bearing */}
Column Bearing: {results.bearingChecks.columnBearing.pass ? ✓ PASS : ✗ FAIL }
Demand (Pu): {results.bearingChecks.columnBearing.demand.toFixed(2)} kips
Capacity (phi*Bn): {results.bearingChecks.columnBearing.capacity.toFixed(2)} kips
Ratio: {results.bearingChecks.columnBearing.ratio.toFixed(3)}
Required Dowels: {results.bearingChecks.columnBearing.requiredDowels.toFixed(2)} in²
{/* Pile Bearing */}
Pile Bearing: {results.bearingChecks.pileBearing.pass ? ✓ PASS : ✗ FAIL }
Max Pile Reaction: {results.bearingChecks.pileBearing.demand.toFixed(2)} kips
Capacity (phi*Bn): {results.bearingChecks.pileBearing.capacity.toFixed(2)} kips
Ratio: {results.bearingChecks.pileBearing.ratio.toFixed(3)}
{/* Column Design */}
Column Design (Biaxial Interaction)
Interaction Check: {results.columnDesign.pass ? ✓ PASS : ✗ FAIL }
Axial Load (Pu): {results.columnDesign.axialLoad.toFixed(2)} kips
Moment X (Mux): {results.columnDesign.demandX.toFixed(2)} k-ft
Capacity X (phi*Mnx): {results.columnDesign.capacityX.toFixed(2)} k-ft
Moment Y (Muy): {results.columnDesign.demandY.toFixed(2)} k-ft
Capacity Y (phi*Mny): {results.columnDesign.capacityY.toFixed(2)} k-ft
Interaction Ratio: {results.columnDesign.ratio.toFixed(3)}
* Simplified linear interaction check: (Mux/phiMnx) + (Muy/phiMny) ≤ 1.0
{/* Pile Reactions Table */}
Individual Pile Reactions
{results.pileReactions.map((pile) => ( ))}
Pile # X (ft) Y (ft) Reaction (kips)
{pile.pileNumber} {pile.x.toFixed(2)} {pile.y.toFixed(2)} {pile.reaction.toFixed(2)}
); };