@dcrackel/hematournamentui 1.0.706 → 1.0.707

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/.prettierignore +7 -1
  2. package/.storybook/main.js +5 -12
  3. package/.storybook/preview-head.html +10 -3
  4. package/.storybook/preview.js +5 -13
  5. package/AGENTS.md +31 -1
  6. package/README.md +29 -22
  7. package/dist/HemaTournamentUI-lib.es.js +7189 -7467
  8. package/dist/HemaTournamentUI-lib.umd.js +27 -27
  9. package/dist/hematournamentui-tailwind.css +0 -24
  10. package/dist/hematournamentui.css +1 -1
  11. package/eslint.config.js +49 -23
  12. package/package.json +6 -2
  13. package/postcss.config.js +3 -3
  14. package/prettier.config.js +16 -10
  15. package/src/config/boutScreenConfigurations.js +52 -50
  16. package/src/main.js +1 -1
  17. package/src/mocks/EventQuestionsMock.js +43 -55
  18. package/src/mocks/assignments.js +180 -181
  19. package/src/mocks/clubGetAllMock.js +8143 -8143
  20. package/src/mocks/eventMock.js +205 -205
  21. package/src/mocks/eventPersonGetInitalPoolAssignmentsLivePools.js +541 -542
  22. package/src/mocks/eventPersonGetInitalPoolAssignmentsPreparing.js +522 -523
  23. package/src/mocks/eventPersonGetInitialPoolAssignments.js +386 -387
  24. package/src/mocks/eventPersonGetInitialPoolAssignments2.js +2267 -2268
  25. package/src/mocks/eventPersonGetInitialStaff.js +94 -95
  26. package/src/mocks/eventPersonGetPoolAssignmentEvent.js +161 -162
  27. package/src/mocks/eventRules.js +87 -86
  28. package/src/mocks/eventpersonGetEventById.js +1737 -1737
  29. package/src/mocks/getAllClubs.js +8143 -8143
  30. package/src/mocks/getAllStaffByTournamentId.js +74 -75
  31. package/src/mocks/getAllWeapons.js +81 -82
  32. package/src/mocks/getAttendance.js +43 -44
  33. package/src/mocks/getClub.js +43 -44
  34. package/src/mocks/getClubDisplayByClubId.js +104 -105
  35. package/src/mocks/getDEBouts-128Fencers.js +3247 -3248
  36. package/src/mocks/getDEBouts-42Fencers.js +3736 -3737
  37. package/src/mocks/getDEBouts-67Fencers.js +6684 -6690
  38. package/src/mocks/getDEBouts-DoubleElim.js +4198 -4199
  39. package/src/mocks/getDEWithBouts.js +628 -629
  40. package/src/mocks/getDeBouts-12fencers.js +1255 -1256
  41. package/src/mocks/getDeBouts-15fencers.js +925 -927
  42. package/src/mocks/getDeBouts-22fencers.js +1683 -1685
  43. package/src/mocks/getDeBouts-6fencers.js +818 -818
  44. package/src/mocks/getEventByTournamentId.js +47 -48
  45. package/src/mocks/getFinalEventResult.js +304 -305
  46. package/src/mocks/getPenaltiesByEvent.js +655 -656
  47. package/src/mocks/getPoolResults.js +1533 -1534
  48. package/src/mocks/getPoolsWithBouts.js +662 -663
  49. package/src/mocks/getPoolsWithBouts6PoolId139.js +885 -886
  50. package/src/mocks/getPoolsWithBoutsByPoolId.js +841 -841
  51. package/src/mocks/getPoolsWithBoutsClubColors.js +4 -4
  52. package/src/mocks/getPoolsWithBoutsComplete.js +919 -921
  53. package/src/mocks/locationMock.js +3213 -3214
  54. package/src/mocks/mockRoutes.js +3 -3
  55. package/src/mocks/personGetAllMock.js +2536 -2537
  56. package/src/mocks/personsMock.js +17569 -17570
  57. package/src/mocks/singleEventMock.js +249 -250
  58. package/src/mocks/tournamentMock.js +1988 -1927
  59. package/src/stories/Atoms/CheckBox/BaseCheckbox.stories.js +25 -23
  60. package/src/stories/Atoms/CheckBox/BaseCheckbox.vue +30 -24
  61. package/src/stories/Atoms/Icon/BaseIcon.stories.js +63 -64
  62. package/src/stories/Atoms/Icon/BaseIcon.test.js +67 -69
  63. package/src/stories/Atoms/Icon/BaseIcon.vue +2 -3
  64. package/src/stories/Atoms/Input/BaseInput.stories.js +18 -18
  65. package/src/stories/Atoms/Input/BaseInput.test.js +65 -67
  66. package/src/stories/Atoms/Input/BaseInput.vue +36 -31
  67. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +21 -21
  68. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.test.js +31 -31
  69. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +23 -18
  70. package/src/stories/Atoms/Tag/BaseTag.stories.js +21 -21
  71. package/src/stories/Atoms/Tag/BaseTag.test.js +26 -30
  72. package/src/stories/Atoms/Tag/BaseTag.vue +18 -19
  73. package/src/stories/Atoms/Text/BaseText.stories.js +54 -62
  74. package/src/stories/Atoms/Text/BaseText.test.js +152 -154
  75. package/src/stories/Atoms/Text/BaseText.vue +103 -81
  76. package/src/stories/Configure.mdx +5 -3
  77. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.stories.js +24 -24
  78. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.vue +33 -15
  79. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.stories.js +46 -48
  80. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue +38 -25
  81. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.stories.js +4 -4
  82. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue +9 -4
  83. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.stories.js +90 -90
  84. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue +51 -32
  85. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.stories.js +25 -25
  86. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue +47 -12
  87. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.stories.js +19 -19
  88. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.vue +25 -19
  89. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.stories.js +25 -28
  90. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.vue +7 -7
  91. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +28 -29
  92. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.test.js +58 -58
  93. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +15 -15
  94. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.stories.js +86 -86
  95. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.test.js +101 -103
  96. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.vue +87 -24
  97. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.stories.js +31 -31
  98. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.vue +19 -21
  99. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.stories.js +57 -57
  100. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.test.js +64 -64
  101. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.vue +17 -16
  102. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +19 -19
  103. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +18 -7
  104. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +16 -18
  105. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +31 -13
  106. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.stories.js +27 -27
  107. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.vue +6 -5
  108. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.stories.js +35 -35
  109. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.vue +13 -8
  110. package/src/stories/Molecules/Inputs/Toggle/Toggle.stories.js +27 -27
  111. package/src/stories/Molecules/Inputs/Toggle/Toggle.vue +8 -5
  112. package/src/stories/Molecules/Menus/TabBar/TabBar.stories.js +18 -18
  113. package/src/stories/Molecules/Menus/TabBar/TabBar.vue +1 -2
  114. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplay.stories.js +36 -27
  115. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplayModal.vue +25 -15
  116. package/src/stories/Molecules/Modals/BaseModal/BaseModal.stories.js +66 -65
  117. package/src/stories/Molecules/Modals/BaseModal/BaseModal.vue +47 -9
  118. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.stories.js +23 -23
  119. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.vue +59 -11
  120. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.stories.js +37 -37
  121. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.vue +27 -22
  122. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.stories.js +41 -41
  123. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.vue +27 -15
  124. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.stories.js +29 -30
  125. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.vue +18 -16
  126. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.stories.js +21 -21
  127. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.vue +7 -7
  128. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.stories.js +24 -24
  129. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.vue +30 -25
  130. package/src/stories/Molecules/Reorder/ReorderableShell.stories.js +81 -77
  131. package/src/stories/Molecules/Reorder/ReorderableShell.vue +46 -43
  132. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.stories.js +40 -40
  133. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.vue +23 -25
  134. package/src/stories/Organisms/Cards/BoutCard/BoutCard.stories.js +34 -29
  135. package/src/stories/Organisms/Cards/BoutCard/BoutCard.vue +69 -66
  136. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.stories.js +24 -22
  137. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.vue +53 -41
  138. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.stories.js +24 -37
  139. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.vue +88 -103
  140. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardReorder/BoutCardReorder.vue +13 -14
  141. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.stories.js +5 -5
  142. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.vue +22 -21
  143. package/src/stories/Organisms/Cards/ClubCard/ClubCard.stories.js +14 -17
  144. package/src/stories/Organisms/Cards/ClubCard/ClubCard.vue +25 -18
  145. package/src/stories/Organisms/Cards/Director/DirectorCard.stories.js +23 -23
  146. package/src/stories/Organisms/Cards/Director/DirectorCard.vue +159 -103
  147. package/src/stories/Organisms/Cards/EditBout/EditBout.stories.js +47 -47
  148. package/src/stories/Organisms/Cards/EditBout/EditBout.test.js +51 -0
  149. package/src/stories/Organisms/Cards/EditBout/EditBout.vue +82 -54
  150. package/src/stories/Organisms/Cards/EventCard/EventCard.stories.js +9 -10
  151. package/src/stories/Organisms/Cards/EventCard/EventCard.vue +83 -63
  152. package/src/stories/Organisms/Cards/FencerCard/FencerCard.stories.js +105 -105
  153. package/src/stories/Organisms/Cards/FencerCard/FencerCard.vue +142 -58
  154. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.stories.js +14 -14
  155. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.vue +37 -26
  156. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResults.stories.js +24 -24
  157. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResultsCard.vue +95 -28
  158. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.stories.js +59 -60
  159. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.vue +13 -7
  160. package/src/stories/Organisms/Cards/KioskCard/KioskCard.stories.js +34 -34
  161. package/src/stories/Organisms/Cards/KioskCard/KioskCard.vue +149 -104
  162. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.stories.js +19 -20
  163. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.vue +207 -163
  164. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.stories.js +17 -17
  165. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.vue +88 -46
  166. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.stories.js +182 -182
  167. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.vue +21 -12
  168. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.stories.js +25 -28
  169. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.vue +28 -22
  170. package/src/stories/Organisms/Cards/StaffCard/StaffCard.stories.js +62 -62
  171. package/src/stories/Organisms/Cards/StaffCard/StaffCard.vue +27 -22
  172. package/src/stories/Organisms/Cards/TableauBoutCard/SpacingConfig.js +103 -103
  173. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.stories.js +73 -73
  174. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.test.js +44 -0
  175. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.vue +69 -56
  176. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.stories.js +80 -81
  177. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.vue +39 -22
  178. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdmin.stories.js +20 -20
  179. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdminCard.vue +62 -33
  180. package/src/stories/Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue +44 -30
  181. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.stories.js +6 -7
  182. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue +7 -8
  183. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.stories.js +31 -31
  184. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.vue +30 -35
  185. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.stories.js +13 -16
  186. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.vue +68 -70
  187. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.stories.js +32 -34
  188. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.vue +48 -25
  189. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.stories.js +21 -21
  190. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.vue +65 -38
  191. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.stories.js +19 -20
  192. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue +46 -21
  193. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.stories.js +22 -22
  194. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.vue +68 -23
  195. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.stories.js +13 -13
  196. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.vue +25 -24
  197. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.stories.js +6 -10
  198. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.vue +112 -48
  199. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.stories.js +43 -44
  200. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.vue +30 -23
  201. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.stories.js +20 -20
  202. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.vue +12 -12
  203. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.stories.js +24 -25
  204. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.vue +112 -87
  205. package/src/stories/Organisms/Containers/Pool/Pool.stories.js +54 -54
  206. package/src/stories/Organisms/Containers/Pool/Pool.vue +64 -41
  207. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.stories.js +17 -19
  208. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.vue +189 -135
  209. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.stories.js +53 -54
  210. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.vue +107 -73
  211. package/src/stories/Organisms/Containers/Tableau/Tableau.stories.js +23 -24
  212. package/src/stories/Organisms/Containers/Tableau/Tableau.test.js +49 -10
  213. package/src/stories/Organisms/Containers/Tableau/Tableau.vue +96 -173
  214. package/src/stories/Organisms/Containers/TableauColumn/TabeauColumn.stories.js +26 -27
  215. package/src/stories/Organisms/Containers/TableauColumn/TableauColumn.vue +20 -17
  216. package/src/stories/Organisms/Containers/TableauLines/SpacingConfig.js +153 -103
  217. package/src/stories/Organisms/Containers/TableauLines/TableauLines.stories.js +13 -15
  218. package/src/stories/Organisms/Containers/TableauLines/TableauLines.vue +7 -8
  219. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.stories.js +26 -26
  220. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.vue +130 -118
  221. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.stories.js +14 -15
  222. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.vue +94 -88
  223. package/src/stories/Organisms/Grids/GridContainer.stories.js +101 -101
  224. package/src/stories/Organisms/Grids/GridContainer.vue +160 -136
  225. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.stories.js +47 -47
  226. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.vue +65 -54
  227. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.stories.js +27 -27
  228. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.vue +38 -22
  229. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.stories.js +80 -80
  230. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.vue +14 -6
  231. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.stories.js +34 -34
  232. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.vue +36 -36
  233. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.stories.js +21 -21
  234. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.vue +56 -29
  235. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.stories.js +38 -38
  236. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.vue +19 -20
  237. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.stories.js +12 -13
  238. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.vue +47 -41
  239. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.stories.js +12 -13
  240. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.vue +66 -37
  241. package/src/stories/Organisms/Skeletons/ClubManagement/ClubManagement.stories.js +6 -10
  242. package/src/stories/Organisms/Skeletons/ClubManagement/ClubMangementSkeleton.vue +2 -2
  243. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.stories.js +6 -10
  244. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.vue +2 -3
  245. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.stories.js +6 -10
  246. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue +1 -1
  247. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.stories.js +6 -9
  248. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.vue +2 -2
  249. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.stories.js +6 -10
  250. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.vue +10 -4
  251. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.stories.js +6 -10
  252. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.vue +2 -2
  253. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.stories.js +34 -34
  254. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.vue +106 -56
  255. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.stories.js +95 -95
  256. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.vue +129 -69
  257. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.stories.js +87 -88
  258. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.vue +105 -60
  259. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.stories.js +82 -82
  260. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.vue +150 -177
  261. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.stories.js +28 -28
  262. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.vue +96 -36
  263. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.stories.js +99 -99
  264. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.vue +115 -67
  265. package/src/stories/Templates/Assignment/Assignment.stories.js +22 -23
  266. package/src/stories/Templates/Assignment/Assignment.vue +210 -161
  267. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.stories.js +90 -90
  268. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.vue +68 -55
  269. package/src/stories/Templates/ClubManagement/ClubManagement.stories.js +87 -87
  270. package/src/stories/Templates/ClubManagement/ClubManagement.vue +167 -147
  271. package/src/stories/Templates/EventManagement/Bracket/Bracket.stories.js +82 -103
  272. package/src/stories/Templates/EventManagement/Bracket/Bracket.test.js +88 -43
  273. package/src/stories/Templates/EventManagement/Bracket/Bracket.vue +167 -200
  274. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.stories.js +49 -50
  275. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.vue +21 -21
  276. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.stories.js +105 -103
  277. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.vue +289 -226
  278. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.stories.js +30 -30
  279. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.vue +27 -22
  280. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.stories.js +44 -45
  281. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.vue +52 -43
  282. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.stories.js +28 -29
  283. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.vue +54 -39
  284. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.stories.js +80 -111
  285. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.test.js +121 -0
  286. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.vue +290 -255
  287. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.stories.js +109 -107
  288. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.vue +144 -87
  289. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.stories.js +56 -57
  290. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.vue +132 -123
  291. package/src/stories/Templates/EventManagement/StaffList/StaffList.stories.js +56 -57
  292. package/src/stories/Templates/EventManagement/StaffList/StaffList.vue +84 -47
  293. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.stories.js +29 -29
  294. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.vue +71 -67
  295. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.stories.js +39 -40
  296. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.vue +79 -71
  297. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.stories.js +47 -47
  298. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.vue +39 -42
  299. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.stories.js +54 -54
  300. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.vue +27 -31
  301. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.stories.js +69 -69
  302. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.vue +78 -89
  303. package/src/stories/Templates/PersonManagement/Attendance/Attendance.stories.js +22 -22
  304. package/src/stories/Templates/PersonManagement/Attendance/Attendance.vue +61 -33
  305. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.stories.js +29 -29
  306. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.vue +80 -53
  307. package/src/stories/Templates/PersonManagement/PersonManagement.stories.js +84 -86
  308. package/src/stories/Templates/PersonManagement/PersonManagement.vue +107 -82
  309. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.stories.js +31 -31
  310. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.vue +70 -51
  311. package/src/stories/Templates/TournamentManagement/TournamentManagement.stories.js +79 -79
  312. package/src/stories/Templates/TournamentManagement/TournamentManagement.vue +275 -230
  313. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.stories.js +113 -113
  314. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.vue +175 -146
  315. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.stories.js +77 -77
  316. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.vue +208 -185
  317. package/src/stories/Util/Validations/AddNewPersonModalValidation.js +23 -19
  318. package/src/stories/Util/Validations/ClubManagementValidations.js +17 -21
  319. package/src/stories/Util/Validations/PersonManagementValidations.js +26 -22
  320. package/src/stories/Util/Validations/TournamentFieldsValidations.js +20 -18
  321. package/src/stories/Util/seeding.js +131 -131
  322. package/src/stories/Util/tabs.js +75 -75
  323. package/tailwind/tailwind.css +5 -7
  324. package/tailwind.config.js +12 -15
  325. package/vite.config.js +3 -3
  326. package/src/mocks/getDirectors.js +0 -18
  327. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.stories.js +0 -45
  328. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.vue +0 -111
  329. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.stories.js +0 -45
  330. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.vue +0 -83
@@ -2,98 +2,187 @@
2
2
  <div class="flex w-full justify-center mb-4">
3
3
  <table class="border-separate border-spacing-1 w-[900px]">
4
4
  <thead>
5
- <tr>
6
- <th :class="nameAndStatsHeaderColor" class="rounded-lg px-4 py-2 "><BaseText text="Name" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'"/></th>
7
- <th class="w-1"></th>
8
- <th :class="gridBoxHeaderAndSides" class="rounded-lg px-4 py-2"></th>
9
- <th v-for="(participant, index) in participants" :key="participant.PersonId"
10
- :class="gridBoxHeaderAndSides" class="rounded-lg text-center align-middle">
11
- <BaseText :text="index+1" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'"/>
12
- </th>
13
- <th class="w-1"></th>
14
- <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
15
- <BaseText text="W%" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'"/>
16
- </th>
17
- <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
18
- <BaseText text="W" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'"/>
19
- </th>
20
- <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
21
- <BaseText text="L" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'"/>
22
- </th>
23
- <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
24
- <BaseText text="HS" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'"/>
25
- </th>
26
- <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
27
- <BaseText text="HR" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'"/>
28
- </th>
29
- <th :class="nameAndStatsHeaderColor" class="rounded-lg able-cell text-center align-middle h-10 w-10">
30
- <BaseText text="IND" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'"/>
31
- </th>
32
- </tr>
5
+ <tr>
6
+ <th :class="nameAndStatsHeaderColor" class="rounded-lg px-4 py-2">
7
+ <BaseText
8
+ text="Name"
9
+ size="sm"
10
+ weight="bold"
11
+ color=""
12
+ :class="nightMode ? 'text-neutral' : 'text-quinary'"
13
+ />
14
+ </th>
15
+ <th class="w-1"></th>
16
+ <th :class="gridBoxHeaderAndSides" class="rounded-lg px-4 py-2"></th>
17
+ <th
18
+ v-for="(participant, index) in participants"
19
+ :key="participant.PersonId"
20
+ :class="gridBoxHeaderAndSides"
21
+ class="rounded-lg text-center align-middle"
22
+ >
23
+ <BaseText
24
+ :text="index + 1"
25
+ size="sm"
26
+ weight="bold"
27
+ color=""
28
+ :class="nightMode ? 'text-neutral' : 'text-quinary'"
29
+ />
30
+ </th>
31
+ <th class="w-1"></th>
32
+ <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
33
+ <BaseText text="W%" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'" />
34
+ </th>
35
+ <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
36
+ <BaseText text="W" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'" />
37
+ </th>
38
+ <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
39
+ <BaseText text="L" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'" />
40
+ </th>
41
+ <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
42
+ <BaseText text="HS" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'" />
43
+ </th>
44
+ <th :class="nameAndStatsHeaderColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
45
+ <BaseText text="HR" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'" />
46
+ </th>
47
+ <th :class="nameAndStatsHeaderColor" class="rounded-lg able-cell text-center align-middle h-10 w-10">
48
+ <BaseText
49
+ text="IND"
50
+ size="sm"
51
+ weight="bold"
52
+ color=""
53
+ :class="nightMode ? 'text-neutral' : 'text-quinary'"
54
+ />
55
+ </th>
56
+ </tr>
33
57
  </thead>
34
58
  <tbody>
35
- <tr v-for="(participant, index) in participants" :key="participant.PersonId">
36
- <td :class="nameAndStatsBoxBGColor" class="rounded-lg text-right align-middle pr-4">
37
- <BaseText :text="participant.DisplayName" size="sm" color="" :class="nightMode ? 'text-black' : 'text-quinary'"/>
38
- </td>
39
- <th class="w-1"></th>
40
- <td :class="gridBoxHeaderAndSides" class="rounded-lg text-center align-middle h-10 w-10">
41
- <BaseText :text="index + 1" size="sm" weight="bold" color="" :class="nightMode ? 'text-neutral' : 'text-quinary'"/>
42
- </td>
59
+ <tr v-for="(participant, index) in participants" :key="participant.PersonId">
60
+ <td :class="nameAndStatsBoxBGColor" class="rounded-lg text-right align-middle pr-4">
61
+ <BaseText
62
+ :text="participant.DisplayName"
63
+ size="sm"
64
+ color=""
65
+ :class="nightMode ? 'text-black' : 'text-quinary'"
66
+ />
67
+ </td>
68
+ <th class="w-1"></th>
69
+ <td :class="gridBoxHeaderAndSides" class="rounded-lg text-center align-middle h-10 w-10">
70
+ <BaseText
71
+ :text="index + 1"
72
+ size="sm"
73
+ weight="bold"
74
+ color=""
75
+ :class="nightMode ? 'text-neutral' : 'text-quinary'"
76
+ />
77
+ </td>
43
78
 
44
- <td v-for="opponent in participants" :key="opponent.PersonId"
79
+ <td
80
+ v-for="opponent in participants"
81
+ :key="opponent.PersonId"
45
82
  :class="{
46
83
  [gridBoxHeaderAndSides + ' rounded-lg']: participant.PersonId === opponent.PersonId,
47
84
  [gridBoxColor + ' rounded-lg']: participant.PersonId !== opponent.PersonId
48
- }"
49
- class="rounded-lg h-10 w-10">
50
- <div v-if="participant.PersonId !== opponent.PersonId"
51
- :class="getBoutClass(participant.PersonId, opponent.PersonId)"
52
- class="rounded-lg text-center pt-2.5 h-10 w-10">
53
- <BaseText :text="getScore(participant.PersonId, opponent.PersonId)" size="sm" color=""/>
54
- </div>
55
- </td>
85
+ }"
86
+ class="rounded-lg h-10 w-10"
87
+ >
88
+ <div
89
+ v-if="participant.PersonId !== opponent.PersonId"
90
+ :class="getBoutClass(participant.PersonId, opponent.PersonId)"
91
+ class="rounded-lg text-center pt-2.5 h-10 w-10"
92
+ >
93
+ <BaseText :text="getScore(participant.PersonId, opponent.PersonId)" size="sm" color="" />
94
+ </div>
95
+ </td>
56
96
 
57
- <td class="w-1"></td>
58
- <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
59
- <BaseText :text="getStats(participant).WP" size="sm" color="" :class="nightMode ? 'text-black' : 'text-quinary'"/>
60
- </td>
61
- <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
62
- <BaseText :text="getStats(participant).W" size="sm" color="" :class="nightMode ? 'text-black' : 'text-quinary'"/>
63
- </td>
64
- <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
65
- <BaseText :text="getStats(participant).L" size="sm" color="" :class="nightMode ? 'text-black' : 'text-quinary'"/>
66
- </td>
67
- <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
68
- <BaseText :text="getStats(participant).HS" size="sm" color="" :class="nightMode ? 'text-black' : 'text-quinary'"/>
69
- </td>
70
- <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
71
- <BaseText :text="getStats(participant).HR" size="sm" color="" :class="nightMode ? 'text-black' : 'text-quinary'"/>
72
- </td>
73
- <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
74
- <BaseText :text="getStats(participant).IND" size="sm" color="" :class="nightMode ? 'text-black' : 'text-quinary'"/>
75
- </td>
76
- </tr>
97
+ <td class="w-1"></td>
98
+ <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
99
+ <BaseText
100
+ :text="getStats(participant).WP"
101
+ size="sm"
102
+ color=""
103
+ :class="nightMode ? 'text-black' : 'text-quinary'"
104
+ />
105
+ </td>
106
+ <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
107
+ <BaseText
108
+ :text="getStats(participant).W"
109
+ size="sm"
110
+ color=""
111
+ :class="nightMode ? 'text-black' : 'text-quinary'"
112
+ />
113
+ </td>
114
+ <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
115
+ <BaseText
116
+ :text="getStats(participant).L"
117
+ size="sm"
118
+ color=""
119
+ :class="nightMode ? 'text-black' : 'text-quinary'"
120
+ />
121
+ </td>
122
+ <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
123
+ <BaseText
124
+ :text="getStats(participant).HS"
125
+ size="sm"
126
+ color=""
127
+ :class="nightMode ? 'text-black' : 'text-quinary'"
128
+ />
129
+ </td>
130
+ <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
131
+ <BaseText
132
+ :text="getStats(participant).HR"
133
+ size="sm"
134
+ color=""
135
+ :class="nightMode ? 'text-black' : 'text-quinary'"
136
+ />
137
+ </td>
138
+ <td :class="nameAndStatsBoxBGColor" class="rounded-lg table-cell text-center align-middle h-10 w-10">
139
+ <BaseText
140
+ :text="getStats(participant).IND"
141
+ size="sm"
142
+ color=""
143
+ :class="nightMode ? 'text-black' : 'text-quinary'"
144
+ />
145
+ </td>
146
+ </tr>
77
147
  </tbody>
78
148
  </table>
79
-
80
149
  </div>
81
150
  </template>
82
151
 
83
152
  <script>
84
- import BaseText from "../../../Atoms/Text/BaseText.vue";
153
+ import BaseText from '../../../Atoms/Text/BaseText.vue';
154
+
155
+ const isBoutBetween = (bout, firstPersonId, secondPersonId) =>
156
+ (bout.Person1Id === firstPersonId && bout.Person2Id === secondPersonId) ||
157
+ (bout.Person1Id === secondPersonId && bout.Person2Id === firstPersonId);
158
+
159
+ const findBoutBetween = (bouts, firstPersonId, secondPersonId) =>
160
+ bouts.find(bout => isBoutBetween(bout, firstPersonId, secondPersonId));
161
+
162
+ const getDisplayedScores = (bout, countingBackwardsMaxScore) => {
163
+ if (countingBackwardsMaxScore <= 0) return [bout.Score1, bout.Score2];
164
+ return [countingBackwardsMaxScore - bout.Score1, countingBackwardsMaxScore - bout.Score2];
165
+ };
166
+
167
+ const getWinnerId = (bout, countingBackwardsMaxScore) => {
168
+ const person1Wins = countingBackwardsMaxScore > 0 ? bout.Score1 < bout.Score2 : bout.Score1 > bout.Score2;
169
+ return person1Wins ? bout.Person1Id : bout.Person2Id;
170
+ };
171
+
172
+ const getPersonScore = (bout, personId, [person1Score, person2Score]) =>
173
+ personId === bout.Person1Id ? person1Score : person2Score;
85
174
 
86
175
  export default {
87
176
  name: 'PoolGrid',
88
- components: {BaseText},
177
+ components: { BaseText },
89
178
  props: {
90
179
  bouts: {
91
180
  type: Array,
92
- required: true,
181
+ required: true
93
182
  },
94
183
  nightMode: {
95
184
  type: Boolean,
96
- default: false,
185
+ default: false
97
186
  },
98
187
  isCountingBackwardsMaxScore: {
99
188
  type: Number,
@@ -104,68 +193,42 @@ export default {
104
193
  return {};
105
194
  },
106
195
  computed: {
107
- nameAndStatsHeaderColor(){
196
+ nameAndStatsHeaderColor() {
108
197
  return this.nightMode ? 'bg-black' : 'bg-eventBoxBlue';
109
198
  },
110
- nameAndStatsBoxBGColor(){
199
+ nameAndStatsBoxBGColor() {
111
200
  return this.nightMode ? 'border border-black bg-white' : 'bg-eventBoxBlue';
112
201
  },
113
- gridBoxColor(){
202
+ gridBoxColor() {
114
203
  return this.nightMode ? 'bg-lightgray' : 'bg-eventBoxBlue';
115
204
  },
116
- gridBoxHeaderAndSides(){
205
+ gridBoxHeaderAndSides() {
117
206
  return this.nightMode ? 'bg-black' : 'bg-gridBoxHeader';
118
207
  },
119
208
  participants() {
120
209
  const participantMap = {};
121
- this.bouts.forEach((bout) => {
210
+ this.bouts.forEach(bout => {
122
211
  participantMap[bout.Person1Id] = bout.Person1;
123
212
  participantMap[bout.Person2Id] = bout.Person2;
124
213
  });
125
214
  return Object.values(participantMap);
126
- },
215
+ }
127
216
  },
128
217
  methods: {
129
218
  getScore(rowPersonId, colPersonId) {
130
- // 1) find the bout
131
- const bout = this.bouts.find(b =>
132
- (b.Person1Id === rowPersonId && b.Person2Id === colPersonId) ||
133
- (b.Person1Id === colPersonId && b.Person2Id === rowPersonId)
134
- );
135
- if (!bout || bout.Status === 'Scheduled') {
136
- return '';
137
- }
219
+ const bout = findBoutBetween(this.bouts, rowPersonId, colPersonId);
220
+ if (!bout || bout.Status === 'Scheduled') return '';
138
221
 
139
- // 2) raw hit counts
140
- const raw1 = bout.Score1;
141
- const raw2 = bout.Score2;
142
-
143
- // 3) display scores (invert if count-down)
144
- const max = this.isCountingBackwardsMaxScore;
145
- const d1 = max > 0 ? max - raw1 : raw1;
146
- const d2 = max > 0 ? max - raw2 : raw2;
147
-
148
- // 4) decide winner on raw, flip logic when count-down
149
- const winnerIsP1 = max > 0
150
- ? (raw1 < raw2) // count-down: lower raw wins
151
- : (raw1 > raw2); // normal: higher raw wins
152
- const winnerId = winnerIsP1 ? bout.Person1Id : bout.Person2Id;
222
+ const displayedScores = getDisplayedScores(bout, this.isCountingBackwardsMaxScore);
223
+ const rowScore = getPersonScore(bout, rowPersonId, displayedScores);
224
+ if (bout.Status !== 'Completed') return rowScore;
153
225
 
154
- // 5) Completed bouts: suffix W/L after the display score
155
- if (bout.Status === 'Completed') {
156
- const displayScore = rowPersonId === bout.Person1Id ? d1 : d2;
157
- let suffix = rowPersonId === winnerId ? 'W' : 'L'
158
- return `${displayScore}${suffix}`;
159
- }
160
-
161
- // 6) In-progress: just show the (possibly inverted) number
162
- return rowPersonId === bout.Person1Id ? d1 : d2;
226
+ const winnerId = getWinnerId(bout, this.isCountingBackwardsMaxScore);
227
+ const suffix = rowPersonId === winnerId ? 'W' : 'L';
228
+ return `${rowScore}${suffix}`;
163
229
  },
164
230
  getBoutClass(rowId, colId) {
165
- const bout = this.bouts.find(b =>
166
- (b.Person1Id === rowId && b.Person2Id === colId) ||
167
- (b.Person1Id === colId && b.Person2Id === rowId)
168
- );
231
+ const bout = findBoutBetween(this.bouts, rowId, colId);
169
232
  if (!bout) return '';
170
233
 
171
234
  // 1) raw scores
@@ -175,8 +238,8 @@ export default {
175
238
  // 2) figure out winner on raw, flipping for count-down
176
239
  const isCountDown = this.isCountingBackwardsMaxScore > 0;
177
240
  const winnerIsP1 = isCountDown
178
- ? raw1 < raw2 // count-down: lower raw wins
179
- : raw1 > raw2; // normal: higher raw wins
241
+ ? raw1 < raw2 // count-down: lower raw wins
242
+ : raw1 > raw2; // normal: higher raw wins
180
243
 
181
244
  const winnerId = winnerIsP1 ? bout.Person1Id : bout.Person2Id;
182
245
 
@@ -185,30 +248,23 @@ export default {
185
248
  const isRowWinner = rowId === winnerId;
186
249
 
187
250
  if (!this.nightMode) {
188
- return isRowWinner
189
- ? 'bg-winGreen text-neutral'
190
- : 'bg-quaternary text-neutral';
251
+ return isRowWinner ? 'bg-winGreen text-neutral' : 'bg-quaternary text-neutral';
191
252
  } else {
192
- return isRowWinner
193
- ? 'bg-orange2 text-neutral'
194
- : 'border border-orange2 text-darkgray bg-white';
253
+ return isRowWinner ? 'bg-orange2 text-neutral' : 'border border-orange2 text-darkgray bg-white';
195
254
  }
196
255
  }
197
256
 
198
257
  // 4) Active
199
258
  if (bout.Status === 'Active') {
200
- return this.nightMode
201
- ? 'bg-orange2 text-neutral'
202
- : 'bg-blue text-neutral';
259
+ return this.nightMode ? 'bg-orange2 text-neutral' : 'bg-blue text-neutral';
203
260
  }
204
261
 
205
262
  // 5) Scheduled or anything else
206
263
  return '';
207
264
  },
208
265
  getStats(participant) {
209
- const completed = this.bouts.filter(b =>
210
- (b.Person1Id === participant.PersonId || b.Person2Id === participant.PersonId) &&
211
- b.Status === 'Completed'
266
+ const completed = this.bouts.filter(
267
+ b => (b.Person1Id === participant.PersonId || b.Person2Id === participant.PersonId) && b.Status === 'Completed'
212
268
  );
213
269
 
214
270
  const max = this.isCountingBackwardsMaxScore;
@@ -221,32 +277,31 @@ export default {
221
277
 
222
278
  for (const bout of completed) {
223
279
  // raw scores
224
- const raw1 = bout.Score1, raw2 = bout.Score2;
280
+ const raw1 = bout.Score1,
281
+ raw2 = bout.Score2;
225
282
  // display scores (inverted if count-down)
226
283
  const d1 = isCountDown ? max - raw1 : raw1;
227
284
  const d2 = isCountDown ? max - raw2 : raw2;
228
285
 
229
286
  // decide who “won” on raw values, flipping for count-down
230
287
  const winnerIsP1 = isCountDown
231
- ? raw1 < raw2 // count-down: lower raw wins
232
- : raw1 > raw2; // normal: higher raw wins
288
+ ? raw1 < raw2 // count-down: lower raw wins
289
+ : raw1 > raw2; // normal: higher raw wins
233
290
 
234
291
  const isP1 = bout.Person1Id === participant.PersonId;
235
292
  const isWinner = isP1 ? winnerIsP1 : !winnerIsP1;
236
293
 
237
294
  // tally win/loss
238
295
  if (isWinner) wins++;
239
- else losses++;
296
+ else losses++;
240
297
 
241
298
  // accumulate inverted-or-not scores
242
- totalScored += isP1 ? d1 : d2;
299
+ totalScored += isP1 ? d1 : d2;
243
300
  totalReceived += isP1 ? d2 : d1;
244
301
  }
245
302
 
246
303
  const totalMatches = completed.length;
247
- const winPct = totalMatches > 0
248
- ? Math.round((wins / totalMatches) * 100)
249
- : 0;
304
+ const winPct = totalMatches > 0 ? Math.round((wins / totalMatches) * 100) : 0;
250
305
 
251
306
  return {
252
307
  W: wins,
@@ -257,7 +312,6 @@ export default {
257
312
  IND: totalScored - totalReceived
258
313
  };
259
314
  }
260
- },
315
+ }
261
316
  };
262
317
  </script>
263
-
@@ -1,70 +1,69 @@
1
- import FencerResults from './PoolResultsTable.vue'
1
+ import FencerResults from './PoolResultsTable.vue';
2
2
  import getPoolResults from '../../../../mocks/getPoolResults.js';
3
3
  import eventPersonGetPoolAssignmentEvent from '../../../../mocks/eventPersonGetPoolAssignmentEvent.js';
4
4
 
5
5
  export default {
6
- title: 'Organisms/Containers/PoolResultsTable',
7
- component: FencerResults,
8
- tags: ['autodocs'],
9
- args: {
10
- poolResults: getPoolResults.report,
11
- initialCutoffLinePosition: 0,
12
- numPromoted: "100%",
13
- event: eventPersonGetPoolAssignmentEvent
14
- },
15
- argTypes: {
16
- poolResults: { control: 'object' },
17
- cutoffLinePosition: { control: 'number' },
18
- numPromoted: { control: 'text' },
19
- event: { control: 'object' }
6
+ title: 'Organisms/Containers/PoolResultsTable',
7
+ component: FencerResults,
8
+ tags: ['autodocs'],
9
+ args: {
10
+ poolResults: getPoolResults.report,
11
+ initialCutoffLinePosition: 0,
12
+ numPromoted: '100%',
13
+ event: eventPersonGetPoolAssignmentEvent
14
+ },
15
+ argTypes: {
16
+ poolResults: { control: 'object' },
17
+ cutoffLinePosition: { control: 'number' },
18
+ numPromoted: { control: 'text' },
19
+ event: { control: 'object' }
20
+ }
21
+ };
20
22
 
21
- },
22
- }
23
-
24
- let modifiedEvent = {...eventPersonGetPoolAssignmentEvent, Status: "results"}
23
+ let modifiedEvent = { ...eventPersonGetPoolAssignmentEvent, Status: 'results' };
25
24
 
26
25
  export const Default = {
27
- args: {
28
- poolResults: getPoolResults.report,
29
- initialCutoffIndex: 0,
30
- numPromoted: "100%",
31
- event: modifiedEvent
32
- }
33
- }
26
+ args: {
27
+ poolResults: getPoolResults.report,
28
+ initialCutoffIndex: 0,
29
+ numPromoted: '100%',
30
+ event: modifiedEvent
31
+ }
32
+ };
34
33
 
35
34
  const modifiedResults = getPoolResults.report.map((person, index) => {
36
- return {
37
- ...person,
38
- Promoted: index < 5,
39
- Status: "results"
40
- };
35
+ return {
36
+ ...person,
37
+ Promoted: index < 5,
38
+ Status: 'results'
39
+ };
41
40
  });
42
41
 
43
42
  export const PromoteHalf = {
44
- args: {
45
- poolResults: modifiedResults,
46
- initialCutoffIndex: 5,
47
- numPromoted: "100%",
48
- event: modifiedEvent
49
- }
50
- }
43
+ args: {
44
+ poolResults: modifiedResults,
45
+ initialCutoffIndex: 5,
46
+ numPromoted: '100%',
47
+ event: modifiedEvent
48
+ }
49
+ };
51
50
 
52
- modifiedEvent = {...eventPersonGetPoolAssignmentEvent, Status: "de"}
51
+ modifiedEvent = { ...eventPersonGetPoolAssignmentEvent, Status: 'de' };
53
52
  export const NotResultsStatus = {
54
- args: {
55
- poolResults: getPoolResults.report,
56
- initialCutoffIndex: 0,
57
- numPromoted: "100%",
58
- event: modifiedEvent
59
- }
60
- }
53
+ args: {
54
+ poolResults: getPoolResults.report,
55
+ initialCutoffIndex: 0,
56
+ numPromoted: '100%',
57
+ event: modifiedEvent
58
+ }
59
+ };
61
60
 
62
- modifiedEvent = {...eventPersonGetPoolAssignmentEvent, Status: "preparation"}
61
+ modifiedEvent = { ...eventPersonGetPoolAssignmentEvent, Status: 'preparation' };
63
62
  export const EventIsInPreparationMode = {
64
- args: {
65
- poolResults: modifiedResults,
66
- initialCutoffIndex: 5,
67
- numPromoted: "100%",
68
- event: modifiedEvent
69
- }
70
- }
63
+ args: {
64
+ poolResults: modifiedResults,
65
+ initialCutoffIndex: 5,
66
+ numPromoted: '100%',
67
+ event: modifiedEvent
68
+ }
69
+ };