Physics Formula Solver
Kinematics
Ohm's Law
${resultVarDetails.name} (${solveForVarKey}): ${resultValue.toFixed(4)} ${resultVarDetails.unit}
`; // Rounded to 4 decimal places resultArea.innerHTML = resultHTML; // Store for PDF pfs_currentCalculationResult = { toolName: "Physics Formula Solver", category: categoryData.displayName, formula: formula.equation, solveFor: `${resultVarDetails.name} (${solveForVarKey})`, inputs: Object.keys(rawInputValuesForDisplay).map(key => ({ name: `${formula.variables[key].name} (${key})`, value: rawInputValuesForDisplay[key], unit: formula.variables[key].unit })), result: { name: `${resultVarDetails.name} (${solveForVarKey})`, value: resultValue.toFixed(4), unit: resultVarDetails.unit } }; downloadButton.style.display = 'inline-block'; // Show PDF button } resultArea.style.display = 'block'; } function pfs_openTab(evt, tabName) { let i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("pfs-tabcontent"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } tablinks = document.getElementsByClassName("pfs-tablink"); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(" active", ""); } const currentTabElement = document.getElementById(tabName); if (currentTabElement) { currentTabElement.style.display = "block"; } if (evt && evt.currentTarget) { evt.currentTarget.className += " active"; } else if (tablinks.length > 0 && tabName) { // Fallback for programmatic call for (i = 0; i < tablinks.length; i++) { if (tablinks[i].getAttribute('onclick').includes(tabName)) { tablinks[i].className += " active"; break; } } } pfs_updateTabNavigationButtons(); // Clear results and hide PDF button when switching tabs const resultAreas = document.querySelectorAll('.pfs-result-area'); resultAreas.forEach(area => { area.style.display = 'none'; area.innerHTML = ''; }); document.getElementById('pfs_downloadPdfButton').style.display = 'none'; pfs_currentCalculationResult = null; // Reset form in the newly opened tab (optional, but good UX) const categoryKey = tabName.replace('Tab',''); // e.g. kinematicsTab -> kinematics if (pfs_physicsFormulas[categoryKey]) { const formulaSelect = document.getElementById(`${categoryKey}FormulaSelect`); const solveForSelect = document.getElementById(`${categoryKey}SolveForSelect`); const inputsContainer = document.getElementById(`${categoryKey}InputsContainer`); if (formulaSelect) formulaSelect.value = ""; if (solveForSelect) solveForSelect.innerHTML = ''; if (inputsContainer) inputsContainer.innerHTML = ""; } } function pfs_navigateTab(direction) { const tablinks = Array.from(document.getElementsByClassName("pfs-tablink")); let currentIndex = -1; for(let i=0; i