--- /home/ray/ARMOR/apps/shire-mobile/limbforge-workspace/static/index.html 2026-08-05 11:53:39.542553077 +0800 +++ /tmp/shire-limbforge-oi.f8UkEb/stage/index.html 2026-08-06 16:33:50.014258822 +0800 @@ -814,6 +814,37 @@ Yes — osseointegration + + @@ -1189,6 +1251,11 @@ elements.projectCoverClass.value = project.cover_class; elements.projectOi.value = String(project.osseointegration); + document.querySelector( + "#project-oi-type" + ).value = project.oi_type || "none"; + + shireSyncOiHardwareControls(); elements.projectSpecialist.value = project.specialist_name; elements.projectClinic.value = project.clinic_name; @@ -1380,12 +1447,26 @@ document.querySelector( "#new-project-oi" ).value === "true", + oi_type: + document.querySelector( + "#new-project-oi" + ).value === "true" + ? document.querySelector( + "#new-project-oi-type" + ).value + : "none", }), }); elements.newProjectDialog.close(); elements.newProjectForm.reset(); + document.querySelector( + "#new-project-oi-type" + ).value = "none"; + + shireSyncOiHardwareControls(); + await loadProjects(); await openProject(project.id); @@ -1410,6 +1491,12 @@ elements.projectCoverClass.value, osseointegration: elements.projectOi.value === "true", + oi_type: + elements.projectOi.value === "true" + ? document.querySelector( + "#project-oi-type" + ).value + : "none", specialist_name: elements.projectSpecialist.value, clinic_name: @@ -1612,6 +1699,69 @@ } start().catch(reportError); + +// SHIRE-LIMBFORGE-OI-UI-0001 +function shireOiEnabled(id) { + return ( + document.querySelector(`#${id}`)?.value + === "true" + ); +} + +function shireSyncOiHardwareControl( + oiId, + typeId, +) { + const enabled = shireOiEnabled(oiId); + const typeControl = + document.querySelector(`#${typeId}`); + const field = document.querySelector( + `[data-oi-source="${oiId}"]` + ); + + if (!typeControl || !field) { + return; + } + + field.style.display = enabled + ? "block" + : "none"; + + typeControl.disabled = !enabled; + + if (!enabled) { + typeControl.value = "none"; + } +} + +function shireSyncOiHardwareControls() { + shireSyncOiHardwareControl( + "project-oi", + "project-oi-type", + ); + + shireSyncOiHardwareControl( + "new-project-oi", + "new-project-oi-type", + ); +} + +document.querySelector( + "#project-oi" +)?.addEventListener( + "change", + shireSyncOiHardwareControls, +); + +document.querySelector( + "#new-project-oi" +)?.addEventListener( + "change", + shireSyncOiHardwareControls, +); + +shireSyncOiHardwareControls(); +