SP16 Task 1: the "Fillings and restorative" panel's informational
filling-defect-summary line, parallel to computeFillingSubcariesSummaryLine
— one entry per SELECTED tooth that has a filling-defect surface (see
fillingDefectLettersForTooth), in ALL_TEETH order, styled
"{FDI} ({letters})" and joined with ", ". Uses the singular phrasing
(filling.fillingDefectSummarySingle) for exactly one such tooth, the
plural (filling.fillingDefectSummaryMultiple) for more than one, and
returns "" (no line — purely informational, hidden when empty) when none
of the selected teeth have a defect surface.
Pure/testable: takes the selected tooth numbers and a state lookup instead
of reading the module's selectedTeeth/toothState globals directly.
SP16 Task 1: the "Fillings and restorative" panel's informational filling-defect-summary line, parallel to computeFillingSubcariesSummaryLine — one entry per SELECTED tooth that has a filling-defect surface (see fillingDefectLettersForTooth), in
ALL_TEETHorder, styled "{FDI} ({letters})" and joined with ", ". Uses the singular phrasing (filling.fillingDefectSummarySingle) for exactly one such tooth, the plural (filling.fillingDefectSummaryMultiple) for more than one, and returns "" (no line — purely informational, hidden when empty) when none of the selected teeth have a defect surface.Pure/testable: takes the selected tooth numbers and a state lookup instead of reading the module's
selectedTeeth/toothStateglobals directly.