{#if isCalibrating}
Recording movements... {Math.round(progress)}%
{#each jointNames as jointName} {@const currentValue = calibrationManager.calibrationState.getCurrentValue(jointName)} {@const calibration = calibrationManager.calibrationState.getJointCalibration(jointName)}
{jointName} {calibrationManager.calibrationState.formatServoValue(currentValue)}
Min: {calibrationManager.calibrationState.formatServoValue(calibration?.minServoValue)} Max: {calibrationManager.calibrationState.formatServoValue(calibration?.maxServoValue)}
{#if calibration?.minServoValue !== undefined && calibration?.maxServoValue !== undefined && currentValue !== undefined}
{/if}
{/each}
Move each joint through its full range of motion
{:else if isCalibrated}
✓ Calibrated Ready to connect
{connectionInfo.lockStatus}
{connectionInfo.lockDescription}
{#each jointNames as jointName} {@const calibration = calibrationManager.calibrationState.getJointCalibration(jointName)} {@const range = calibrationManager.calibrationState.getJointRange(jointName)}
{jointName} {range}
{/each}
{:else}
Needs Calibration Required for USB connection
Quick Setup Options:
  1. 1. Position robot in neutral pose
  2. 2. Start calibration and move each joint fully
  3. 3. Complete when all joints show good ranges
After calibration:
{connectionInfo.lockStatus}
{/if}