import React from 'react'; import { useBeamStore } from '../../store/useBeamStore'; export const BeamGeometryInput: React.FC = () => { const { geometry, setGeometry } = useBeamStore(); const updateSpanLength = (spanId: number, length: number) => { const updatedSpans = geometry.spans.map(s => s.id === spanId ? { ...s, length } : s ); setGeometry({ spans: updatedSpans }); }; const updateSupportType = (supportId: number, type: 'Pinned' | 'Fixed' | 'Roller') => { const updatedSupports = geometry.supports.map(s => s.id === supportId ? { ...s, type } : s ); setGeometry({ supports: updatedSupports }); }; // Calculate total span for visualization const totalSpan = geometry.spans.reduce((sum, span) => sum + span.length, 0); return (
| Span | Length | |
|---|---|---|
|
{span.id}
|
updateSpanLength(span.id, parseFloat(e.target.value) || 0)} step="0.1" /> | ft |
|
{geometry.spans.length + i + 1}
|
0.00 | ft |
| L Cant | setGeometry({ leftCantileverLength: parseFloat(e.target.value) || 0 })} step="0.1" /> | ft |
| R Cant | setGeometry({ rightCantileverLength: parseFloat(e.target.value) || 0 })} step="0.1" /> | ft |
| Support | Type |
|---|---|
|
{support.id}
|
|
|
{geometry.supports.length + i + 1}
|