@dcrackel/hematournamentui 1.0.706 → 1.0.708

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 (350) 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 +118 -88
  6. package/README.md +29 -22
  7. package/dist/HemaTournamentUI-lib.es.js +8394 -8807
  8. package/dist/HemaTournamentUI-lib.umd.js +27 -27
  9. package/dist/hematournamentui-tailwind.css +183 -428
  10. package/dist/hematournamentui.css +1 -1
  11. package/eslint.config.js +49 -23
  12. package/package.json +15 -11
  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/index.js +2 -0
  17. package/src/main.js +1 -1
  18. package/src/mocks/EventQuestionsMock.js +43 -55
  19. package/src/mocks/assignments.js +180 -181
  20. package/src/mocks/clubGetAllMock.js +8143 -8143
  21. package/src/mocks/eventMock.js +205 -205
  22. package/src/mocks/eventPersonGetInitalPoolAssignmentsLivePools.js +541 -542
  23. package/src/mocks/eventPersonGetInitalPoolAssignmentsPreparing.js +522 -523
  24. package/src/mocks/eventPersonGetInitialPoolAssignments.js +386 -387
  25. package/src/mocks/eventPersonGetInitialPoolAssignments2.js +2267 -2268
  26. package/src/mocks/eventPersonGetInitialStaff.js +94 -95
  27. package/src/mocks/eventPersonGetPoolAssignmentEvent.js +161 -162
  28. package/src/mocks/eventRules.js +87 -86
  29. package/src/mocks/eventpersonGetEventById.js +1737 -1737
  30. package/src/mocks/getAllClubs.js +8143 -8143
  31. package/src/mocks/getAllStaffByTournamentId.js +74 -75
  32. package/src/mocks/getAllWeapons.js +81 -82
  33. package/src/mocks/getAttendance.js +43 -44
  34. package/src/mocks/getClub.js +43 -44
  35. package/src/mocks/getClubDisplayByClubId.js +104 -105
  36. package/src/mocks/getDEBouts-128Fencers.js +3247 -3248
  37. package/src/mocks/getDEBouts-42Fencers.js +3736 -3737
  38. package/src/mocks/getDEBouts-67Fencers.js +6684 -6690
  39. package/src/mocks/getDEBouts-DoubleElim.js +4198 -4199
  40. package/src/mocks/getDEBouts-TableOf128.js +37 -0
  41. package/src/mocks/getDEBouts-TableOf64.js +35 -0
  42. package/src/mocks/getDEWithBouts.js +628 -629
  43. package/src/mocks/getDeBouts-12fencers.js +1255 -1256
  44. package/src/mocks/getDeBouts-15fencers.js +925 -927
  45. package/src/mocks/getDeBouts-22fencers.js +1683 -1685
  46. package/src/mocks/getDeBouts-6fencers.js +818 -818
  47. package/src/mocks/getEventByTournamentId.js +47 -48
  48. package/src/mocks/getFinalEventResult.js +304 -305
  49. package/src/mocks/getPenaltiesByEvent.js +655 -656
  50. package/src/mocks/getPoolResults.js +1533 -1534
  51. package/src/mocks/getPoolsWithBouts.js +662 -663
  52. package/src/mocks/getPoolsWithBouts6PoolId139.js +885 -886
  53. package/src/mocks/getPoolsWithBoutsByPoolId.js +841 -841
  54. package/src/mocks/getPoolsWithBoutsClubColors.js +4 -4
  55. package/src/mocks/getPoolsWithBoutsComplete.js +919 -921
  56. package/src/mocks/locationMock.js +3213 -3214
  57. package/src/mocks/mockRoutes.js +3 -3
  58. package/src/mocks/personGetAllMock.js +2536 -2537
  59. package/src/mocks/personsMock.js +17569 -17570
  60. package/src/mocks/singleEventMock.js +249 -250
  61. package/src/mocks/tournamentMock.js +1988 -1927
  62. package/src/stories/Atoms/CheckBox/BaseCheckbox.stories.js +25 -23
  63. package/src/stories/Atoms/CheckBox/BaseCheckbox.vue +30 -24
  64. package/src/stories/Atoms/Icon/BaseIcon.stories.js +63 -64
  65. package/src/stories/Atoms/Icon/BaseIcon.test.js +67 -69
  66. package/src/stories/Atoms/Icon/BaseIcon.vue +2 -3
  67. package/src/stories/Atoms/Input/BaseInput.stories.js +18 -18
  68. package/src/stories/Atoms/Input/BaseInput.test.js +65 -67
  69. package/src/stories/Atoms/Input/BaseInput.vue +36 -31
  70. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +21 -21
  71. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.test.js +31 -31
  72. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +23 -18
  73. package/src/stories/Atoms/Tag/BaseTag.stories.js +21 -21
  74. package/src/stories/Atoms/Tag/BaseTag.test.js +26 -30
  75. package/src/stories/Atoms/Tag/BaseTag.vue +18 -19
  76. package/src/stories/Atoms/Text/BaseText.stories.js +54 -62
  77. package/src/stories/Atoms/Text/BaseText.test.js +152 -154
  78. package/src/stories/Atoms/Text/BaseText.vue +103 -81
  79. package/src/stories/Configure.mdx +5 -3
  80. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.stories.js +24 -24
  81. package/src/stories/Molecules/Boxes/BoutBoxes/HandshotCounterBox/HandshotCounterBox.vue +33 -15
  82. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.stories.js +46 -48
  83. package/src/stories/Molecules/Boxes/BoutBoxes/PassesBox/PassesBox.vue +38 -25
  84. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.stories.js +4 -4
  85. package/src/stories/Molecules/Boxes/BoutBoxes/PenaltyConfirmationBox/PenaltyConfirmationBox.vue +9 -4
  86. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.stories.js +90 -90
  87. package/src/stories/Molecules/Boxes/BoutBoxes/ScoreBox/ScoreBox.vue +51 -32
  88. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.stories.js +25 -25
  89. package/src/stories/Molecules/Boxes/BoutBoxes/TimerBox/TimerBox.vue +47 -12
  90. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.stories.js +19 -19
  91. package/src/stories/Molecules/Boxes/CounterBox/CounterBox.vue +25 -19
  92. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.stories.js +25 -28
  93. package/src/stories/Molecules/Boxes/EventStatusBox/EventStatusBox.vue +7 -7
  94. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +28 -29
  95. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.test.js +58 -58
  96. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +15 -15
  97. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.stories.js +86 -86
  98. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.test.js +101 -103
  99. package/src/stories/Molecules/Buttons/BaseButton/BaseButton.vue +87 -24
  100. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.stories.js +31 -31
  101. package/src/stories/Molecules/Buttons/ButtonBar/ButtonBar.vue +19 -21
  102. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.stories.js +57 -57
  103. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.test.js +64 -64
  104. package/src/stories/Molecules/CombinationInputs/TitledInput/TitledInput.vue +17 -16
  105. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +19 -19
  106. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +18 -7
  107. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +16 -18
  108. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +31 -13
  109. package/src/stories/Molecules/Indicators/MissingHemaRatingsId/MissingHemaRatingsId.stories.js +23 -0
  110. package/src/stories/Molecules/Indicators/MissingHemaRatingsId/MissingHemaRatingsId.vue +35 -0
  111. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.stories.js +27 -27
  112. package/src/stories/Molecules/Indicators/ServerConnected/ServerConnected.vue +6 -5
  113. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.stories.js +35 -35
  114. package/src/stories/Molecules/Inputs/MultiSelect/MultiSelect.vue +13 -8
  115. package/src/stories/Molecules/Inputs/Toggle/Toggle.stories.js +27 -27
  116. package/src/stories/Molecules/Inputs/Toggle/Toggle.vue +8 -5
  117. package/src/stories/Molecules/Menus/TabBar/TabBar.stories.js +18 -18
  118. package/src/stories/Molecules/Menus/TabBar/TabBar.vue +1 -2
  119. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplay.stories.js +36 -27
  120. package/src/stories/Molecules/Modals/AddDisplayModal/AddDisplayModal.vue +25 -15
  121. package/src/stories/Molecules/Modals/BaseModal/BaseModal.stories.js +66 -65
  122. package/src/stories/Molecules/Modals/BaseModal/BaseModal.vue +47 -9
  123. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.stories.js +23 -23
  124. package/src/stories/Molecules/Modals/ConfirmModal/ConfirmModal.vue +59 -11
  125. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.stories.js +37 -37
  126. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.test.js +18 -0
  127. package/src/stories/Molecules/Modals/DirectorModal/DirectorModal.vue +29 -23
  128. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.stories.js +41 -41
  129. package/src/stories/Molecules/Modals/EditBoutModal/EditBoutModal.vue +28 -16
  130. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.stories.js +29 -30
  131. package/src/stories/Molecules/Modals/EventWizardModal/EventWizardModal.vue +18 -16
  132. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.stories.js +21 -21
  133. package/src/stories/Molecules/Modals/LoadingModal/LoadingModal.vue +7 -7
  134. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.stories.js +24 -24
  135. package/src/stories/Molecules/Modals/PenaltyModal/PenaltyModal.vue +30 -25
  136. package/src/stories/Molecules/Reorder/ReorderableShell.stories.js +81 -77
  137. package/src/stories/Molecules/Reorder/ReorderableShell.vue +46 -43
  138. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.stories.js +40 -40
  139. package/src/stories/Molecules/StepIndicator/BaseStepIndicator/StepIndicator.vue +23 -25
  140. package/src/stories/Organisms/Cards/BoutCard/BoutCard.stories.js +34 -29
  141. package/src/stories/Organisms/Cards/BoutCard/BoutCard.vue +69 -66
  142. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.stories.js +24 -22
  143. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardActive/BoutCardActive.vue +53 -41
  144. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.stories.js +24 -37
  145. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardInactive/BoutCardInactive.vue +88 -103
  146. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardReorder/BoutCardReorder.vue +13 -14
  147. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.stories.js +5 -5
  148. package/src/stories/Organisms/Cards/BoutCard/Variants/BoutCardWaiting/BoutCardWaiting.vue +22 -21
  149. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.stories.js +33 -0
  150. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.test.js +45 -0
  151. package/src/stories/Organisms/Cards/BracketDirectorAssignmentCard/BracketDirectorAssignmentCard.vue +103 -0
  152. package/src/stories/Organisms/Cards/ClubCard/ClubCard.stories.js +14 -17
  153. package/src/stories/Organisms/Cards/ClubCard/ClubCard.vue +25 -18
  154. package/src/stories/Organisms/Cards/Director/DirectorCard.stories.js +23 -23
  155. package/src/stories/Organisms/Cards/Director/DirectorCard.vue +159 -103
  156. package/src/stories/Organisms/Cards/EditBout/EditBout.stories.js +47 -47
  157. package/src/stories/Organisms/Cards/EditBout/EditBout.test.js +51 -0
  158. package/src/stories/Organisms/Cards/EditBout/EditBout.vue +82 -54
  159. package/src/stories/Organisms/Cards/EventCard/EventCard.stories.js +9 -10
  160. package/src/stories/Organisms/Cards/EventCard/EventCard.vue +83 -63
  161. package/src/stories/Organisms/Cards/FencerCard/FencerCard.stories.js +105 -105
  162. package/src/stories/Organisms/Cards/FencerCard/FencerCard.vue +298 -194
  163. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.stories.js +14 -14
  164. package/src/stories/Organisms/Cards/FencerFinalResultCard/FencerFinalResultCard.vue +37 -26
  165. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResults.stories.js +24 -24
  166. package/src/stories/Organisms/Cards/FencerPoolResultsCard/FencerPoolResultsCard.vue +95 -28
  167. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.stories.js +59 -60
  168. package/src/stories/Organisms/Cards/ImportFencerCard/ImportFencerCard.vue +13 -7
  169. package/src/stories/Organisms/Cards/KioskCard/KioskCard.stories.js +34 -34
  170. package/src/stories/Organisms/Cards/KioskCard/KioskCard.vue +149 -104
  171. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.stories.js +19 -20
  172. package/src/stories/Organisms/Cards/PenaltyCard/PenaltyCard.vue +207 -163
  173. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.stories.js +17 -17
  174. package/src/stories/Organisms/Cards/PenaltyFencerCard/PenaltyFencerCard.vue +88 -46
  175. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.stories.js +182 -182
  176. package/src/stories/Organisms/Cards/PoolBoutMatchCard/PoolBoutMatchCard.vue +21 -12
  177. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.stories.js +25 -28
  178. package/src/stories/Organisms/Cards/PoolFencerCard/PoolFencerCard.vue +28 -22
  179. package/src/stories/Organisms/Cards/StaffCard/StaffCard.stories.js +62 -62
  180. package/src/stories/Organisms/Cards/StaffCard/StaffCard.vue +27 -22
  181. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.stories.js +60 -98
  182. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.test.js +143 -0
  183. package/src/stories/Organisms/Cards/TableauBoutCard/TableauBoutCard.vue +256 -202
  184. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.stories.js +69 -93
  185. package/src/stories/Organisms/Cards/TableauFencerCard/TableauFencerCard.vue +80 -111
  186. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdmin.stories.js +20 -20
  187. package/src/stories/Organisms/Cards/TournamentAdminCard/TournamentAdminCard.vue +62 -33
  188. package/src/stories/Organisms/Cards/WaitlistFencerCard/WaitlistFencerCard.vue +56 -32
  189. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.stories.js +6 -7
  190. package/src/stories/Organisms/ComplexInputs/AddressAutocomplete/AddressAutocomplete.vue +7 -8
  191. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.stories.js +31 -31
  192. package/src/stories/Organisms/ComplexInputs/ClubColorPicker/ClubColorPicker.vue +30 -35
  193. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.stories.js +13 -16
  194. package/src/stories/Organisms/ComplexInputs/DatePicker/DatePicker.vue +68 -70
  195. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.stories.js +32 -34
  196. package/src/stories/Organisms/ComplexInputs/DropDown/DropDownMenu.vue +48 -25
  197. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.stories.js +21 -21
  198. package/src/stories/Organisms/ComplexInputs/FindLocation/FindLocation.vue +65 -38
  199. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.stories.js +19 -20
  200. package/src/stories/Organisms/ComplexInputs/FindOrAddPerson/FindOrAddPerson.vue +46 -21
  201. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.stories.js +22 -22
  202. package/src/stories/Organisms/ComplexInputs/FindPerson/FindPerson.vue +68 -23
  203. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.stories.js +13 -13
  204. package/src/stories/Organisms/ComplexInputs/ImageCropper/ImageCropper.vue +25 -24
  205. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.stories.js +6 -10
  206. package/src/stories/Organisms/ComplexInputs/TextBoxEditor/TextBoxEditor.vue +112 -48
  207. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.stories.js +43 -44
  208. package/src/stories/Organisms/Containers/BoutsSection/BoutsSection.vue +30 -23
  209. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.stories.js +20 -20
  210. package/src/stories/Organisms/Containers/FinalResults/FinalResultsTable.vue +12 -12
  211. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.stories.js +24 -25
  212. package/src/stories/Organisms/Containers/KioskContainer/KioskContainer.vue +112 -87
  213. package/src/stories/Organisms/Containers/Pool/Pool.stories.js +54 -54
  214. package/src/stories/Organisms/Containers/Pool/Pool.vue +64 -41
  215. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.stories.js +17 -19
  216. package/src/stories/Organisms/Containers/PoolGrid/PoolGrid.vue +189 -135
  217. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.stories.js +53 -54
  218. package/src/stories/Organisms/Containers/PoolResults/PoolResultsTable.vue +107 -73
  219. package/src/stories/Organisms/Containers/Tableau/Tableau.stories.js +23 -24
  220. package/src/stories/Organisms/Containers/Tableau/Tableau.test.js +177 -10
  221. package/src/stories/Organisms/Containers/Tableau/Tableau.vue +319 -198
  222. package/src/stories/Organisms/Containers/Tableau/components/BracketDirectorAssignmentPanel.test.js +29 -0
  223. package/src/stories/Organisms/Containers/Tableau/components/BracketDirectorAssignmentPanel.vue +46 -0
  224. package/src/stories/Organisms/Containers/Tableau/components/TableauSvgOverlay.test.js +21 -0
  225. package/src/stories/Organisms/Containers/Tableau/components/TableauSvgOverlay.vue +39 -0
  226. package/src/stories/Organisms/Containers/Tableau/layout/TableauLayoutEngine.js +145 -0
  227. package/src/stories/Organisms/Containers/Tableau/layout/TableauLayoutEngine.test.js +64 -0
  228. package/src/stories/Organisms/Containers/Tableau/plannedAssignments.js +57 -0
  229. package/src/stories/Organisms/Containers/Tableau/plannedAssignments.test.js +65 -0
  230. package/src/stories/Organisms/Containers/TableauColumn/TabeauColumn.stories.js +26 -27
  231. package/src/stories/Organisms/Containers/TableauColumn/TableauColumn.vue +31 -26
  232. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.stories.js +26 -26
  233. package/src/stories/Organisms/Form/AddDisplay/AddDisplay.vue +130 -118
  234. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.stories.js +14 -15
  235. package/src/stories/Organisms/Form/AddNewPerson/AddNewPerson.vue +94 -88
  236. package/src/stories/Organisms/Grids/GridContainer.stories.js +101 -101
  237. package/src/stories/Organisms/Grids/GridContainer.vue +160 -136
  238. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.stories.js +47 -47
  239. package/src/stories/Organisms/Headers/AttendanceSummary/AttendanceSummary.vue +65 -54
  240. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.stories.js +27 -27
  241. package/src/stories/Organisms/Headers/EventFinalResultsHeader/EventFinalResultsHeader.vue +38 -22
  242. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.stories.js +80 -80
  243. package/src/stories/Organisms/Headers/PenaltySummary/PenaltySummary.vue +14 -6
  244. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.stories.js +34 -34
  245. package/src/stories/Organisms/Headers/PoolResultsHeader/PoolResultsHeader.vue +36 -36
  246. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.stories.js +21 -21
  247. package/src/stories/Organisms/Headers/PoolSummary/PoolSummary.vue +56 -29
  248. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.stories.js +38 -38
  249. package/src/stories/Organisms/Headers/ToggleHeader/ToggleHeader.vue +19 -20
  250. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.stories.js +12 -13
  251. package/src/stories/Organisms/RankCalculator/ByLetter/RankCalculator.vue +47 -41
  252. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.stories.js +12 -13
  253. package/src/stories/Organisms/RankCalculator/ByPoints/RankCalculatorByPoints.vue +66 -37
  254. package/src/stories/Organisms/Skeletons/ClubManagement/ClubManagement.stories.js +6 -10
  255. package/src/stories/Organisms/Skeletons/ClubManagement/ClubMangementSkeleton.vue +2 -2
  256. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.stories.js +6 -10
  257. package/src/stories/Organisms/Skeletons/EventCard/EventCardSkeleton.vue +2 -3
  258. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.stories.js +6 -10
  259. package/src/stories/Organisms/Skeletons/FencerCard/FencerCardSkeleton.vue +1 -1
  260. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.stories.js +6 -9
  261. package/src/stories/Organisms/Skeletons/PersonManagement/PersonManagementSkeleton.vue +2 -2
  262. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.stories.js +6 -10
  263. package/src/stories/Organisms/Skeletons/PoolSkeleton/PoolSkeleton.vue +10 -4
  264. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.stories.js +6 -10
  265. package/src/stories/Organisms/Skeletons/TournamentCard/TournamentCardSkeleton.vue +2 -2
  266. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.stories.js +34 -34
  267. package/src/stories/Organisms/Wizards/EditEventWizard/BasicEventInfo/BasicEventInfo.vue +106 -56
  268. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.stories.js +95 -95
  269. package/src/stories/Organisms/Wizards/EditEventWizard/DirectElimination/DirectElimination.vue +129 -69
  270. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.stories.js +87 -88
  271. package/src/stories/Organisms/Wizards/EditEventWizard/DirectEliminationPromotion/DirectEliminationPromotion.vue +105 -60
  272. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.stories.js +82 -82
  273. package/src/stories/Organisms/Wizards/EditEventWizard/EditEventWizard.vue +150 -177
  274. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.stories.js +28 -28
  275. package/src/stories/Organisms/Wizards/EditEventWizard/EventCustomization/EventCustomization.vue +96 -36
  276. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.stories.js +99 -99
  277. package/src/stories/Organisms/Wizards/EditEventWizard/PoolConfiguration/PoolConfiguration.vue +115 -67
  278. package/src/stories/Templates/Assignment/Assignment.stories.js +22 -23
  279. package/src/stories/Templates/Assignment/Assignment.vue +210 -161
  280. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.stories.js +90 -90
  281. package/src/stories/Templates/ClubManagement/ClubBasic/ClubBasic.vue +68 -55
  282. package/src/stories/Templates/ClubManagement/ClubManagement.stories.js +87 -87
  283. package/src/stories/Templates/ClubManagement/ClubManagement.vue +167 -147
  284. package/src/stories/Templates/EventManagement/Bracket/Bracket.stories.js +216 -109
  285. package/src/stories/Templates/EventManagement/Bracket/Bracket.test.js +138 -43
  286. package/src/stories/Templates/EventManagement/Bracket/Bracket.vue +198 -195
  287. package/src/stories/Templates/EventManagement/Bracket/BracketPlannedSuggestions.js +39 -0
  288. package/src/stories/Templates/EventManagement/Bracket/BracketStoryHarness.js +39 -0
  289. package/src/stories/Templates/EventManagement/Bracket/BracketStoryHarness.test.js +79 -0
  290. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.stories.js +49 -50
  291. package/src/stories/Templates/EventManagement/EditEventInfo/EditEventInfo.vue +21 -21
  292. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.stories.js +105 -103
  293. package/src/stories/Templates/EventManagement/EventAttendance/EventAttendance.vue +289 -226
  294. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.stories.js +30 -30
  295. package/src/stories/Templates/EventManagement/EventFinalResults/EventFinalResults.vue +27 -22
  296. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.stories.js +44 -45
  297. package/src/stories/Templates/EventManagement/KioskDisplay/KioskDisplay.vue +52 -43
  298. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.stories.js +28 -29
  299. package/src/stories/Templates/EventManagement/Penalties/PenaltyReport.vue +54 -39
  300. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.stories.js +80 -111
  301. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.test.js +121 -0
  302. package/src/stories/Templates/EventManagement/PoolLive/PoolLive.vue +290 -255
  303. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.stories.js +109 -107
  304. package/src/stories/Templates/EventManagement/PoolManagement/PoolManagement.vue +144 -87
  305. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.stories.js +56 -57
  306. package/src/stories/Templates/EventManagement/PoolResults/PoolResults.vue +132 -123
  307. package/src/stories/Templates/EventManagement/StaffList/StaffList.stories.js +56 -57
  308. package/src/stories/Templates/EventManagement/StaffList/StaffList.vue +84 -47
  309. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.stories.js +29 -29
  310. package/src/stories/Templates/Menus/Admin/AdminLeftMenu.vue +71 -67
  311. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.stories.js +39 -40
  312. package/src/stories/Templates/Menus/EditEventsTopMenu/EditEventsTopMenu.vue +79 -71
  313. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.stories.js +47 -47
  314. package/src/stories/Templates/PersonManagement/Admin/Administration/Administration.vue +39 -42
  315. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.stories.js +54 -54
  316. package/src/stories/Templates/PersonManagement/Admin/FencerAdmin/FencerAdmin.vue +27 -31
  317. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.stories.js +69 -69
  318. package/src/stories/Templates/PersonManagement/Admin/MergeAccounts/MergeAccounts.vue +78 -89
  319. package/src/stories/Templates/PersonManagement/Attendance/Attendance.stories.js +22 -22
  320. package/src/stories/Templates/PersonManagement/Attendance/Attendance.vue +61 -33
  321. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.stories.js +29 -29
  322. package/src/stories/Templates/PersonManagement/Basic/BasicEdit.vue +80 -53
  323. package/src/stories/Templates/PersonManagement/PersonManagement.stories.js +84 -86
  324. package/src/stories/Templates/PersonManagement/PersonManagement.vue +107 -82
  325. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.stories.js +31 -31
  326. package/src/stories/Templates/TournamentManagement/ListEvents/ListEvents.vue +70 -51
  327. package/src/stories/Templates/TournamentManagement/TournamentManagement.stories.js +79 -79
  328. package/src/stories/Templates/TournamentManagement/TournamentManagement.vue +275 -230
  329. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.stories.js +113 -113
  330. package/src/stories/Templates/TournamentManagement/TournamentPageOne/TournamentPageOne.vue +175 -146
  331. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.stories.js +77 -77
  332. package/src/stories/Templates/TournamentManagement/TournamentPageTwo/TournamentPageTwo.vue +208 -185
  333. package/src/stories/Util/Validations/AddNewPersonModalValidation.js +23 -19
  334. package/src/stories/Util/Validations/ClubManagementValidations.js +17 -21
  335. package/src/stories/Util/Validations/PersonManagementValidations.js +26 -22
  336. package/src/stories/Util/Validations/TournamentFieldsValidations.js +20 -18
  337. package/src/stories/Util/seeding.js +131 -131
  338. package/src/stories/Util/tabs.js +75 -75
  339. package/tailwind/tailwind.css +5 -7
  340. package/tailwind.config.js +12 -15
  341. package/vite.config.js +3 -3
  342. package/src/mocks/getDirectors.js +0 -18
  343. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.stories.js +0 -45
  344. package/src/stories/Molecules/Modals/AssignDirectorModal/AssignDirectorModal.vue +0 -111
  345. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.stories.js +0 -45
  346. package/src/stories/Organisms/Cards/DirectorAssignmentCard/DirectorAssignmentCard.vue +0 -83
  347. package/src/stories/Organisms/Cards/TableauBoutCard/SpacingConfig.js +0 -111
  348. package/src/stories/Organisms/Containers/TableauLines/SpacingConfig.js +0 -112
  349. package/src/stories/Organisms/Containers/TableauLines/TableauLines.stories.js +0 -23
  350. package/src/stories/Organisms/Containers/TableauLines/TableauLines.vue +0 -79
@@ -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
+ };