@spotify/backstage-plugin-soundcheck 0.16.0 → 0.16.2

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 (430) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/dist/alpha/entity-content.esm.js +1 -1
  3. package/dist/alpha/pages.esm.js +1 -1
  4. package/dist/alpha.d.ts +62 -47
  5. package/dist/api.esm.js +1 -1
  6. package/dist/components/AlertPanel/AlertPanel.esm.js +1 -1
  7. package/dist/components/AreaChart/AreaChart.esm.js +1 -1
  8. package/dist/components/AreaChart/ChartTooltip.esm.js +1 -1
  9. package/dist/components/AreaChart/Legend.esm.js +1 -1
  10. package/dist/components/AreaChart/LegendItem.esm.js +1 -1
  11. package/dist/components/Badges/BaseBadge.esm.js +1 -1
  12. package/dist/components/Badges/CampaignBadge.esm.js +1 -1
  13. package/dist/components/Badges/CertificationBadge.esm.js +1 -1
  14. package/dist/components/Badges/LevelBadge.esm.js +1 -1
  15. package/dist/components/Badges/NoLevelBadge.esm.js +2 -2
  16. package/dist/components/Badges/PlaylistBadge.esm.js +1 -1
  17. package/dist/components/Badges/StatusBadge.esm.js +1 -1
  18. package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
  19. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  20. package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
  21. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
  22. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDetailsStep.esm.js +1 -1
  23. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDraftField.esm.js +2 -0
  24. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
  25. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
  26. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignScheduleField.esm.js +1 -1
  27. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
  28. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/EndDateChips.esm.js +1 -1
  29. package/dist/components/CampaignForm/Steps/CampaignMilestonesStep.esm.js +1 -1
  30. package/dist/components/CampaignForm/Steps/CampaignTrackStepNew.esm.js +2 -0
  31. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  32. package/dist/components/CampaignForm/hooks/utils.esm.js +1 -1
  33. package/dist/components/CampaignForm/utils/campaignFormUtils.esm.js +1 -1
  34. package/dist/components/CampaignForm/utils/validation.esm.js +1 -1
  35. package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +1 -1
  36. package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
  37. package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +1 -1
  38. package/dist/components/CampaignInsightsPage/DaysRemainingTile.esm.js +1 -1
  39. package/dist/components/CampaignsPage/CampaignEmptyState.esm.js +1 -1
  40. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +1 -1
  41. package/dist/components/CampaignsPage/CampaignListPage/CampaignMetadata.esm.js +1 -1
  42. package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
  43. package/dist/components/CampaignsPage/CampaignListPage/CampaignsOverviewSkeleton.esm.js +1 -1
  44. package/dist/components/CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
  45. package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
  46. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  47. package/dist/components/CategoryBar/CategoryBar.esm.js +1 -1
  48. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  49. package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
  50. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  51. package/dist/components/CertificationSidebar/CertificationSummary.esm.js +1 -1
  52. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  53. package/dist/components/CertificationSidebar/CheckResultInputPopup.esm.js +2 -0
  54. package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
  55. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +2 -0
  56. package/dist/components/CertificationSidebar/LevelSummary.esm.js +1 -1
  57. package/dist/components/CertificationSidebar/StatusDetails.esm.js +1 -1
  58. package/dist/components/CertificationSidebar/skeletons/CertificationSidebarSkeleton.esm.js +1 -1
  59. package/dist/components/CertificationSidebar/skeletons/CertificationSummarySkeleton.esm.js +1 -1
  60. package/dist/components/CertificationSidebar/skeletons/CheckSkeleton.esm.js +1 -1
  61. package/dist/components/CertificationSidebar/skeletons/LevelSummarySkeleton.esm.js +1 -1
  62. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  63. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  64. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  65. package/dist/components/CertificationsPage/Playlist/PlaylistComponent.esm.js +1 -1
  66. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  67. package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
  68. package/dist/components/CertificationsPage/Playlist/PlaylistSummary.esm.js +1 -1
  69. package/dist/components/CertificationsPage/PlaylistCertificationTab.esm.js +1 -1
  70. package/dist/components/CertificationsPage/skeletons/CertificationTabSkeleton.esm.js +1 -1
  71. package/dist/components/CertificationsPage/skeletons/CertificationTabsSkeleton.esm.js +1 -1
  72. package/dist/components/Charts/BarChart/BarChart.esm.js +1 -1
  73. package/dist/components/Charts/BarChart/BarChartPlaceholder.esm.js +1 -1
  74. package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
  75. package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
  76. package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
  77. package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
  78. package/dist/components/Charts/LineChart/LineChart.esm.js +1 -1
  79. package/dist/components/Charts/LineChart/LineChartPlaceholder.esm.js +1 -1
  80. package/dist/components/Charts/LineChart/PassRateHistoryLineChart.esm.js +1 -1
  81. package/dist/components/Charts/LineChart/TableLineChart.esm.js +1 -1
  82. package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
  83. package/dist/components/Charts/LoadingChart.esm.js +2 -0
  84. package/dist/components/Charts/chartUtils.esm.js +1 -1
  85. package/dist/components/CheckCard/CheckCard.esm.js +1 -1
  86. package/dist/components/CheckCard/CheckHistoryChart.esm.js +1 -1
  87. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  88. package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
  89. package/dist/components/CheckDetails/CheckResultDetails.esm.js +1 -1
  90. package/dist/components/CheckDetails/CollapseRow.esm.js +1 -1
  91. package/dist/components/CheckDetails/FactTable.esm.js +1 -1
  92. package/dist/components/CheckDetails/FixMeDialog.esm.js +1 -1
  93. package/dist/components/CheckDetails/JustificationDetails.esm.js +2 -0
  94. package/dist/components/CheckDetails/OngoingTaskComponent.esm.js +1 -1
  95. package/dist/components/CheckDetails/ResolvedValueTable.esm.js +1 -1
  96. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  97. package/dist/components/CheckDetails/ReviewStateComponent.esm.js +1 -1
  98. package/dist/components/CheckDetails/SelectedValueContext.esm.js +1 -1
  99. package/dist/components/CheckDetails/skeletons/CheckDetailsSkeleton.esm.js +1 -1
  100. package/dist/components/CheckDryRun/CheckDryRun.esm.js +1 -1
  101. package/dist/components/CheckDryRun/CheckDryRunContext.esm.js +1 -1
  102. package/dist/components/CheckDryRun/CheckDryRunDetails.esm.js +1 -1
  103. package/dist/components/CheckDryRun/CheckDryRunDialog.esm.js +1 -1
  104. package/dist/components/CheckDryRun/CheckDryRunDialogButton.esm.js +1 -1
  105. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  106. package/dist/components/CheckForm/FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js +1 -1
  107. package/dist/components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
  108. package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
  109. package/dist/components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js +1 -1
  110. package/dist/components/CheckForm/FormFields/CheckTypeInput/CheckTypeInput.esm.js +2 -0
  111. package/dist/components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js +1 -1
  112. package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
  113. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js +1 -1
  114. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/FactValueDisplay.esm.js +1 -1
  115. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  116. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListContext.esm.js +1 -1
  117. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js +1 -1
  118. package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js +1 -1
  119. package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js +1 -1
  120. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  121. package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  122. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +2 -0
  123. package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  124. package/dist/components/CheckForm/Steps/CheckReviewStep.esm.js +1 -1
  125. package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
  126. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  127. package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
  128. package/dist/components/CheckForm/utils/validation.esm.js +1 -1
  129. package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
  130. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  131. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  132. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  133. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
  134. package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +1 -1
  135. package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
  136. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +1 -1
  137. package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
  138. package/dist/components/CheckSelection/CheckPreview.esm.js +2 -0
  139. package/dist/components/CheckSelection/CheckPreviewContext.esm.js +2 -0
  140. package/dist/components/CheckSelection/CheckSelection.esm.js +2 -0
  141. package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +2 -0
  142. package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
  143. package/dist/components/CheckTemplatesPage/TemplateCategory.esm.js +1 -1
  144. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
  145. package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
  146. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  147. package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
  148. package/dist/components/ChecksPage/skeletons/ChecksOverviewSkeleton.esm.js +1 -1
  149. package/dist/components/ChecksTab/ChecksTab.esm.js +1 -1
  150. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  151. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  152. package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfDaysComponent.esm.js +1 -1
  153. package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
  154. package/dist/components/CollectorPage/Configurators/AzureDevOps/validation.esm.js +1 -1
  155. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  156. package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
  157. package/dist/components/CollectorPage/Configurators/BigQuery/validation.esm.js +1 -1
  158. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  159. package/dist/components/CollectorPage/Configurators/Common/CollectorSchedulingOptions.esm.js +1 -1
  160. package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
  161. package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
  162. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  163. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  164. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +2 -0
  165. package/dist/components/CollectorPage/Configurators/DataRegistry/utils.esm.js +2 -0
  166. package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +2 -0
  167. package/dist/components/CollectorPage/Configurators/Github/DependabotAlertsFactDetails.esm.js +2 -0
  168. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  169. package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +2 -0
  170. package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +2 -0
  171. package/dist/components/CollectorPage/Configurators/Github/types.esm.js +2 -0
  172. package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
  173. package/dist/components/CollectorPage/Configurators/Github/validation.esm.js +2 -0
  174. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  175. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  176. package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
  177. package/dist/components/CollectorPage/Configurators/HTTP/HttpResponseComponent.esm.js +1 -1
  178. package/dist/components/CollectorPage/Configurators/HTTP/HttpRetriesComponent.esm.js +1 -1
  179. package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
  180. package/dist/components/CollectorPage/Configurators/HTTP/RequestFactDetailsComponent.esm.js +1 -1
  181. package/dist/components/CollectorPage/Configurators/HTTP/validation.esm.js +1 -1
  182. package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +1 -1
  183. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  184. package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +1 -1
  185. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  186. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesFactDetails.esm.js +1 -1
  187. package/dist/components/CollectorPage/Configurators/Kubernetes/validation.esm.js +1 -1
  188. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  189. package/dist/components/CollectorPage/Configurators/PagerDuty/IncidentsFactDetailsComponent.esm.js +1 -1
  190. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  191. package/dist/components/CollectorPage/Configurators/PagerDuty/StatusesComponent.esm.js +1 -1
  192. package/dist/components/CollectorPage/Configurators/PagerDuty/validation.esm.js +1 -1
  193. package/dist/components/CollectorPage/Configurators/SCM/ExistsFactDetailsComponent.esm.js +1 -1
  194. package/dist/components/CollectorPage/Configurators/SCM/FactDetailsComponent.esm.js +1 -1
  195. package/dist/components/CollectorPage/Configurators/SCM/JsonFactDetailsComponent.esm.js +1 -1
  196. package/dist/components/CollectorPage/Configurators/SCM/RegexFactDetailsComponent.esm.js +1 -1
  197. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  198. package/dist/components/CollectorPage/Configurators/SCM/utils.esm.js +1 -1
  199. package/dist/components/CollectorPage/Configurators/SCM/validation.esm.js +1 -1
  200. package/dist/components/CollectorPage/Configurators/SonarQube/IssuesFactDetailsInput.esm.js +2 -0
  201. package/dist/components/CollectorPage/Configurators/SonarQube/MeasuresFactDetailsInput.esm.js +1 -1
  202. package/dist/components/CollectorPage/Configurators/SonarQube/MetricsInput.esm.js +1 -1
  203. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  204. package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
  205. package/dist/components/CollectorPage/Configurators/SonarQube/validation.esm.js +1 -1
  206. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
  207. package/dist/components/CollectorsPage/CollectorListPage/CollectorListSkeleton.esm.js +1 -1
  208. package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
  209. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  210. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  211. package/dist/components/EmptyState/EmptyState.esm.js +1 -1
  212. package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +2 -0
  213. package/dist/components/EntityChip/EntityChip.esm.js +1 -1
  214. package/dist/components/EntityContent/EntityContent.esm.js +1 -1
  215. package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
  216. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  217. package/dist/components/EntitySoundcheckCard/EntitySoundcheckCard.esm.js +1 -1
  218. package/dist/components/EntitySoundcheckCard/skeletons/CardSkeleton.esm.js +1 -1
  219. package/dist/components/EntitySoundcheckContent.esm.js +1 -1
  220. package/dist/components/Expand/Expand.esm.js +1 -1
  221. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  222. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  223. package/dist/components/FactExplorer/FactExplorerContext.esm.js +1 -1
  224. package/dist/components/FactExplorer/FactExplorerDialog.esm.js +1 -1
  225. package/dist/components/FadeIn/FadeIn.esm.js +1 -1
  226. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  227. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  228. package/dist/components/Filter/FilterKeyValueInput.esm.js +1 -1
  229. package/dist/components/Filter/FilterPreviewTable/EntityTableColumns.esm.js +1 -1
  230. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  231. package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
  232. package/dist/components/FilterSidebar/FilterSidebar.esm.js +2 -0
  233. package/dist/components/FilterSidebar/StateFilter.esm.js +2 -0
  234. package/dist/components/FooterButtons/FooterButtons.esm.js +1 -1
  235. package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
  236. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  237. package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +2 -0
  238. package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
  239. package/dist/components/FormControlledTextField/FormControlledTextField.esm.js +1 -1
  240. package/dist/components/FormFieldLabel/FormFieldLabel.esm.js +1 -1
  241. package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
  242. package/dist/components/FormMarkdownInput/FormMarkdownInput.esm.js +1 -1
  243. package/dist/components/FormStepper/FormStepper.esm.js +1 -1
  244. package/dist/components/FormTextInput/FormTextInput.esm.js +1 -1
  245. package/dist/components/FormattedPreview/FormattedPreview.esm.js +2 -2
  246. package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
  247. package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
  248. package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
  249. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  250. package/dist/components/LevelsTable/CheckRowContent.esm.js +2 -0
  251. package/dist/components/LevelsTable/LevelsTable.esm.js +2 -0
  252. package/dist/components/ListboxVirtualized/ListboxVirtualized.esm.js +1 -1
  253. package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
  254. package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
  255. package/dist/components/NoBorderButton/NoBorderButton.esm.js +1 -1
  256. package/dist/components/OrgHealth/OrgHealthPage.esm.js +2 -0
  257. package/dist/components/OverviewChartCard/OverviewChartCard.esm.js +1 -1
  258. package/dist/components/OverviewPage/FixedGroupOverviewPage.esm.js +1 -1
  259. package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
  260. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  261. package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
  262. package/dist/components/OverviewTable/Cell/CheckCell.esm.js +1 -1
  263. package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
  264. package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +1 -1
  265. package/dist/components/OverviewTable/Cell/CheckNameCell.esm.js +1 -1
  266. package/dist/components/OverviewTable/Cell/EntityRefCell.esm.js +1 -1
  267. package/dist/components/OverviewTable/Cell/TrackBadgeCell.esm.js +1 -1
  268. package/dist/components/OverviewTable/Cell/TrackCheckIndicator.esm.js +1 -1
  269. package/dist/components/OverviewTable/Cell/TrackLevelHeaderCell.esm.js +1 -1
  270. package/dist/components/OverviewTable/Cell/TrackTitleCell.esm.js +1 -1
  271. package/dist/components/OverviewTable/Cell/cellRenderer.esm.js +1 -1
  272. package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
  273. package/dist/components/OverviewTable/OverviewTableContent.esm.js +1 -1
  274. package/dist/components/OverviewTable/OverviewTableSkeleton.esm.js +1 -1
  275. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  276. package/dist/components/OverviewTable/ResultsTableHeader.esm.js +1 -1
  277. package/dist/components/OverviewTable/ResultsTableRow.esm.js +1 -1
  278. package/dist/components/PageWarningMessage/PageWarningMessage.esm.js +1 -1
  279. package/dist/components/Pagination/CursorPagination.esm.js +1 -1
  280. package/dist/components/Pagination/Pagination.esm.js +1 -1
  281. package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
  282. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  283. package/dist/components/PassRateTable/NewPassRateTable.esm.js +1 -1
  284. package/dist/components/PassRateTable/PassRateTable.esm.js +2 -2
  285. package/dist/components/QuickstartPage/HowDoIListItem.esm.js +1 -1
  286. package/dist/components/QuickstartPage/QuickStartChecksCard.esm.js +1 -1
  287. package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +1 -1
  288. package/dist/components/QuickstartPage/QuickstartCollectorConfigurationsCard.esm.js +1 -1
  289. package/dist/components/QuickstartPage/QuickstartPage.esm.js +1 -1
  290. package/dist/components/QuickstartPage/QuickstartTracksCard.esm.js +1 -1
  291. package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +6 -6
  292. package/dist/components/QuickstartPage/WelcomeModal.esm.js +1 -1
  293. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  294. package/dist/components/RelativeTime/RelativeTime.esm.js +1 -1
  295. package/dist/components/RichTooltip/RichTooltip.esm.js +1 -1
  296. package/dist/components/Router.esm.js +1 -1
  297. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  298. package/dist/components/RuleResult/BranchResultComponent.esm.js +1 -1
  299. package/dist/components/RuleResult/ConditionResultComponent.esm.js +1 -1
  300. package/dist/components/RuleResult/RuleResultComponent.esm.js +1 -1
  301. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  302. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  303. package/dist/components/SoundcheckDialog/SoundcheckDialog.esm.js +1 -1
  304. package/dist/components/SoundcheckHeader/Breadcrumbs.esm.js +1 -1
  305. package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
  306. package/dist/components/SoundcheckHeader/SoundcheckHeaderContext.esm.js +1 -1
  307. package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
  308. package/dist/components/SoundcheckMarkdownContent/ComponentRenders.esm.js +2 -0
  309. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js +2 -0
  310. package/dist/components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js +1 -1
  311. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  312. package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
  313. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  314. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  315. package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
  316. package/dist/components/TechHealth/Filters/FiltersHeader.esm.js +1 -1
  317. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
  318. package/dist/components/TechHealth/Filters/NumberOfDaysFilter.esm.js +1 -1
  319. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  320. package/dist/components/TechHealth/Loading/Emoji.esm.js +1 -1
  321. package/dist/components/TechHealth/Loading/EmojiFountain.esm.js +1 -1
  322. package/dist/components/TechHealth/Loading/Loading.esm.js +1 -1
  323. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
  324. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  325. package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
  326. package/dist/components/TechHealthSummary/TechHealthSummary.esm.js +1 -1
  327. package/dist/components/TechHealthTabs/ActionColumn.esm.js +1 -1
  328. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  329. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  330. package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
  331. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  332. package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
  333. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  334. package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
  335. package/dist/components/TechHealthTabs/MostRecentColumn.esm.js +1 -1
  336. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  337. package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
  338. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
  339. package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
  340. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  341. package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
  342. package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +2 -0
  343. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  344. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  345. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  346. package/dist/components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js +2 -0
  347. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
  348. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
  349. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
  350. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
  351. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDraftInput/TrackDraftInput.esm.js +2 -0
  352. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
  353. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  354. package/dist/components/TrackForm/TrackForm.esm.js +1 -1
  355. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  356. package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
  357. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
  358. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  359. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
  360. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  361. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  362. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  363. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  364. package/dist/components/TrackPage/TrackProgressCard.esm.js +1 -1
  365. package/dist/components/TrackPage/TrackStatus.esm.js +2 -0
  366. package/dist/components/TrackPage/TrackStatusBar.esm.js +2 -0
  367. package/dist/components/TrackPage/TrackStatusTable.esm.js +2 -0
  368. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
  369. package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
  370. package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
  371. package/dist/components/TracksPage/TrackListPage/TracksOverviewSkeleton.esm.js +1 -1
  372. package/dist/components/TracksPage/TracksPage.esm.js +1 -1
  373. package/dist/components/TracksTab/TracksTab.esm.js +1 -1
  374. package/dist/contexts/GenericFormContext.esm.js +1 -1
  375. package/dist/contexts/UserProvider.esm.js +1 -1
  376. package/dist/graphql/generated/index.esm.js +152 -65
  377. package/dist/hooks/aggregations/useCertificationStatus.esm.js +1 -1
  378. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  379. package/dist/hooks/aggregations/useCheckStatuses.esm.js +1 -1
  380. package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
  381. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  382. package/dist/hooks/certifications/useAllCertifications.esm.js +1 -1
  383. package/dist/hooks/certifications/useCertificationDetails.esm.js +1 -1
  384. package/dist/hooks/certifications/useCertificationDetailsForTrack.esm.js +1 -1
  385. package/dist/hooks/checks/useCheck.esm.js +2 -0
  386. package/dist/hooks/checks/useDeleteCheck.esm.js +1 -1
  387. package/dist/hooks/checks/useGetChecks.esm.js +1 -1
  388. package/dist/hooks/checks/useSetManualResult.esm.js +2 -0
  389. package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
  390. package/dist/hooks/exemptions/useDeleteExemption.esm.js +2 -0
  391. package/dist/hooks/exemptions/useExemptCheckIds.esm.js +2 -0
  392. package/dist/hooks/exemptions/useGetExemption.esm.js +2 -0
  393. package/dist/hooks/exemptions/useSetEntityExempt.esm.js +2 -0
  394. package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
  395. package/dist/hooks/graphqlKeys.esm.js +1 -1
  396. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  397. package/dist/hooks/tracks/useTrack.esm.js +2 -0
  398. package/dist/hooks/tracks/useUpdateTrack.esm.js +1 -1
  399. package/dist/hooks/useConfirmationModal.esm.js +1 -1
  400. package/dist/hooks/useSoundcheckAlert.esm.js +1 -1
  401. package/dist/images/data-registry-blk.svg +36 -0
  402. package/dist/images/data-registry-wht.svg +36 -0
  403. package/dist/index.d.ts +4 -5
  404. package/dist/index.esm.js +1 -1
  405. package/dist/routes.esm.js +1 -1
  406. package/dist/utils/colors.esm.js +2 -0
  407. package/dist/utils/export.esm.js +3 -3
  408. package/dist/utils/formatters.esm.js +2 -0
  409. package/dist/utils/validation.esm.js +1 -1
  410. package/package.json +30 -26
  411. package/dist/components/Badges/badge.esm.js +0 -2
  412. package/dist/components/CampaignForm/Steps/CampaignTrackStep.esm.js +0 -2
  413. package/dist/components/CheckDetails/ExemptionDetails.esm.js +0 -2
  414. package/dist/components/CheckDryRun/checkDryRunUtils.esm.js +0 -2
  415. package/dist/components/CheckPage/CheckStatusBar.esm.js +0 -2
  416. package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +0 -2
  417. package/dist/components/CheckPage/StatusRow.esm.js +0 -2
  418. package/dist/components/ChecksErrors/ChecksErrors.esm.js +0 -2
  419. package/dist/components/ContextMenu/ContextMenu.esm.js +0 -2
  420. package/dist/components/DraggableChip/DraggableChip.esm.js +0 -2
  421. package/dist/components/DraggableChip/chipStyles.esm.js +0 -2
  422. package/dist/components/DroppableInput/DroppableInput.esm.js +0 -2
  423. package/dist/components/LevelCard/LevelCard.esm.js +0 -2
  424. package/dist/components/LevelCard/LevelTooltip.esm.js +0 -2
  425. package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +0 -2
  426. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +0 -2
  427. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +0 -2
  428. package/dist/components/TrackForm/Steps/LevelsStep/LevelsStep.esm.js +0 -2
  429. package/dist/components/TrackPage/TrackLevelsChart.esm.js +0 -2
  430. package/dist/hooks/useContextMenu.esm.js +0 -2
@@ -1,2 +1,2 @@
1
- import{Box as t}from"@material-ui/core";import{makeStyles as o}from"@material-ui/core/styles";import r from"react";import{CheckHistoryChartCard as a}from"../CheckHistoryChartCard/CheckHistoryChartCard.esm.js";import{EntityPassRateCard as m}from"../EntityPassRateCard/EntityPassRateCard.esm.js";import{GroupPassRateCard as l}from"../GroupPassRateCard/GroupPassRateCard.esm.js";import{TrackHistoryChartCard as n}from"../TrackHistoryChartCard/TrackHistoryChartCard.esm.js";import{SummaryAggregationsProvider as c}from"./SummaryAggregationsProvider.esm.js";const i=o(e=>({root:{display:"flex",flexDirection:"column",gap:e.spacing(2),flex:1,background:e.palette.background.default}})),s=()=>{const e=i();return r.createElement(t,{className:e.root},r.createElement(c,null,r.createElement(a,null),r.createElement(n,null),r.createElement(m,null),r.createElement(l,null)))};export{s as TechHealthSummary};
1
+ import{jsx as r,jsxs as t}from"react/jsx-runtime";import{Box as a}from"@material-ui/core";import{makeStyles as m}from"@material-ui/core/styles";import{CheckHistoryChartCard as e}from"../CheckHistoryChartCard/CheckHistoryChartCard.esm.js";import{EntityPassRateCard as i}from"../EntityPassRateCard/EntityPassRateCard.esm.js";import{GroupPassRateCard as s}from"../GroupPassRateCard/GroupPassRateCard.esm.js";import{TrackHistoryChartCard as c}from"../TrackHistoryChartCard/TrackHistoryChartCard.esm.js";import{SummaryAggregationsProvider as p}from"./SummaryAggregationsProvider.esm.js";const n=m(o=>({root:{display:"flex",flexDirection:"column",gap:o.spacing(2),flex:1,background:o.palette.background.default}})),f=()=>{const o=n();return r(a,{className:o.root,children:t(p,{children:[r(e,{}),r(c,{}),r(i,{}),r(s,{})]})})};export{f as TechHealthSummary};
2
2
  //# sourceMappingURL=TechHealthSummary.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Button as r,Typography as i}from"@material-ui/core";import e from"react";import{useNavigate as m}from"react-router-dom";import{StyledTooltip as s}from"../StyledTooltip/StyledTooltip.esm.js";import{usePassRateTabStyles as c}from"./PassRateTabStyles.esm.js";const d=({navigateTo:l,disabled:t,toolTipText:n})=>{const a=c(),o=m();return l?n?e.createElement(s,{title:n},e.createElement("span",null,e.createElement(r,{variant:"text",className:a.detailButton,onClick:()=>o(l),disabled:t},e.createElement(i,{style:t?{textDecoration:"line-through"}:{},className:a.ownerText},"View detail")))):e.createElement(r,{variant:"text",className:a.detailButton,disabled:t},e.createElement(i,{style:t?{textDecoration:"line-through"}:{},className:a.ownerText,onClick:()=>o(l)},"View detail")):e.createElement(e.Fragment,null)};export{d as ActionColumn};
1
+ import{jsx as t,Fragment as s}from"react/jsx-runtime";import{Button as r,Typography as n}from"@material-ui/core";import{useNavigate as c}from"react-router-dom";import{StyledTooltip as d}from"../StyledTooltip/StyledTooltip.esm.js";import{usePassRateTabStyles as m}from"./PassRateTabStyles.esm.js";const h=({navigateTo:o,disabled:e,toolTipText:a})=>{const i=m(),l=c();return o?a?t(d,{title:a,children:t("span",{children:t(r,{variant:"text",className:i.detailButton,onClick:()=>l(o),disabled:e,children:t(n,{style:e?{textDecoration:"line-through"}:{},className:i.ownerText,children:"View detail"})})})}):t(r,{variant:"text",className:i.detailButton,disabled:e,children:t(n,{style:e?{textDecoration:"line-through"}:{},className:i.ownerText,onClick:()=>l(o),children:"View detail"})}):t(s,{})};export{h as ActionColumn};
2
2
  //# sourceMappingURL=ActionColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as I}from"@backstage/core-plugin-api";import{Typography as T,Box as M,Grid as S}from"@material-ui/core";import a,{useState as i,useEffect as A,useMemo as B}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as D}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as F}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{campaignDetailsRouteRef as x}from"../../../routes.esm.js";import{campaignTrackPassRatesCsvFilename as N}from"../../../utils/charts.esm.js";import{PassRateGrid as V}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as H}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as j}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as q}from"../../TechHealth/Loading/Loading.esm.js";import{PassRateTabHeader as z}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as J}from"../PassRateTabStyles.esm.js";import{trackPassRatesToCsv as K}from"../TechHealthExportFunctions.esm.js";import{ViewMode as u,generateTrackPassRateGridData as O}from"../techHealthTabUtils.esm.js";import{generateColumns as Q}from"../TrackResultsTab/TrackResultsTab.esm.js";const U=()=>{const k=J(),{filter:g}=j(),m=I(x),{data:P}=D({orderAlphabetical:"default",searchByStatus:"active"}),r=P?.edges.map(e=>e.node)?.map(({id:e,track:f})=>({campaignId:e,trackId:f.id})),v=r?.map(({trackId:e})=>({trackId:e})),{data:s,isLoading:R,isError:h}=F({...g,tracks:v,trackTypes:{included:["campaign"]}}),[c,C]=i(u.TABLE),[t,E]=i(""),[n,p]=i(0),[l,w]=i(10);A(()=>{p(0)},[g,t]);const b=B(()=>Q(s?.individualTrackPassRate??[],void 0,m,r),[s?.individualTrackPassRate,m,r]);if(R)return a.createElement(q,null);if(h)return a.createElement(T,{color:"error"},"Failed to load campaign tracks");const{individualTrackPassRate:d}=s;if(!d)return a.createElement(T,{color:"error"},"No available campaign tracks");const o=t.length?d.filter(({trackName:e})=>e?.toLowerCase()?.includes(t.toLowerCase())):d,L=async()=>K(o,r),y=(e,f)=>{p(()=>f)},G=e=>{w(+e.target.value),p(0)};return a.createElement(M,{className:k.root},a.createElement(S,{container:!0,direction:"row"},a.createElement(z,{viewMode:c,setViewMode:C,isLoading:R,searchTerm:t,setSearchTerm:E,searchPlaceholder:"Search Available Campaigns",fetchCsvData:L,csvFilename:N}),c===u.TABLE&&a.createElement(H,{data:o,columns:b}),c===u.GRID&&a.createElement(V,{data:O(o.slice(n*l,(n+1)*l),void 0,m,r),totalCount:o?.length??0,page:n,rowsPerPage:l,onPageChange:y,onRowsPerPageChange:G})))};export{U as CampaignResultsTab};
1
+ import{jsx as a,jsxs as G}from"react/jsx-runtime";import{useRouteRef as I}from"@backstage/core-plugin-api";import{Typography as T,Box as M,Grid as S}from"@material-ui/core";import{useState as i,useEffect as A,useMemo as B}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as D}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as F}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{campaignDetailsRouteRef as N}from"../../../routes.esm.js";import{campaignTrackPassRatesCsvFilename as j}from"../../../utils/charts.esm.js";import{PassRateGrid as V}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as H}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as q}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as z}from"../../TechHealth/Loading/Loading.esm.js";import{PassRateTabHeader as J}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as K}from"../PassRateTabStyles.esm.js";import{trackPassRatesToCsv as O}from"../TechHealthExportFunctions.esm.js";import{ViewMode as u,generateTrackPassRateGridData as Q}from"../techHealthTabUtils.esm.js";import{generateColumns as U}from"../TrackResultsTab/TrackResultsTab.esm.js";const W=()=>{const h=K(),{filter:g}=q(),m=I(N),{data:k}=D({orderAlphabetical:"default",searchByStatus:"active"}),t=k?.edges.map(r=>r.node)?.map(({id:r,track:f})=>({campaignId:r,trackId:f.id})),P=t?.map(({trackId:r})=>({trackId:r})),{data:s,isLoading:R,isError:v}=F({...g,tracks:P,trackTypes:{included:["campaign"]}}),[p,C]=i(u.TABLE),[e,w]=i(""),[c,n]=i(0),[d,b]=i(10);A(()=>{n(0)},[g,e]);const L=B(()=>U(s?.individualTrackPassRate??[],void 0,m,t),[s?.individualTrackPassRate,m,t]);if(R)return a(z,{});if(v)return a(T,{color:"error",children:"Failed to load campaign tracks"});const{individualTrackPassRate:l}=s;if(!l)return a(T,{color:"error",children:"No available campaign tracks"});const o=e.length?l.filter(({trackName:r})=>r?.toLowerCase()?.includes(e.toLowerCase())):l,y=async()=>O(o,t),x=(r,f)=>{n(()=>f)},E=r=>{b(+r.target.value),n(0)};return a(M,{className:h.root,children:G(S,{container:!0,direction:"row",children:[a(J,{viewMode:p,setViewMode:C,isLoading:R,searchTerm:e,setSearchTerm:w,searchPlaceholder:"Search Available Campaigns",fetchCsvData:y,csvFilename:j}),p===u.TABLE&&a(H,{data:o,columns:L}),p===u.GRID&&a(V,{data:Q(o.slice(c*d,(c+1)*d),void 0,m,t),totalCount:o?.length??0,page:c,rowsPerPage:d,onPageChange:x,onRowsPerPageChange:E})]})})};export{W as CampaignResultsTab};
2
2
  //# sourceMappingURL=CampaignResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as v}from"@backstage/core-plugin-api";import{Typography as R,Box as L,Grid as N}from"@material-ui/core";import r,{useState as m,useEffect as A}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useCheckPassRateTrend as D}from"../../../hooks/aggregations/useCheckPassRateTrend.esm.js";import"react-router-dom";import{checkDetailsRouteRef as y}from"../../../routes.esm.js";import{checkPassRatesCsvFilename as M}from"../../../utils/charts.esm.js";import{PassRateGrid as O}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as S}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as x}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as F}from"../../TechHealth/Loading/Loading.esm.js";import{NameColumn as G}from"../NameColumn.esm.js";import{ActionColumn as B}from"../ActionColumn.esm.js";import{OwnerColumn as I}from"../OwnerColumn.esm.js";import{checkPassRatesToCsv as V}from"../TechHealthExportFunctions.esm.js";import{PassRateTabHeader as z}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as H}from"../PassRateTabStyles.esm.js";import{ViewMode as C,generateCheckPassRateGridData as W}from"../techHealthTabUtils.esm.js";import"recharts";import"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../../Charts/BarChart/BarChart.esm.js";import"../../PassRateTable/NewPassRateTable.esm.js";import{MostRecentColumn as j}from"../MostRecentColumn.esm.js";import{CheckTrendColumn as q}from"./CheckTrendColumn.esm.js";function J(s){return[{label:"NAME",id:"checkName",renderCell:e=>r.createElement(G,{name:e.checkName??e.id,description:e.checkDescription})},{label:"LATEST",id:"snapshotPassRate",renderCell:e=>r.createElement(j,{snapshot:e.snapshotPassRate})},{label:"TREND",id:"trendPassRate",renderCell:e=>r.createElement(q,{row:e})},{label:"OWNER",id:"checkOwner",renderCell:e=>r.createElement(I,{ownerEntityRef:e.checkOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:(e,o,n)=>r.createElement(B,{navigateTo:s({checkId:e.id}),disabled:o,toolTipText:n})}]}const K=()=>{const s=H(),{filter:e}=x(),o=v(y),{data:n,isLoading:u,isError:E}=D(e),[c,k]=m(C.TABLE),[t,T]=m(""),[l,p]=m(0),[d,P]=m(10);if(A(()=>{p(0)},[e,t]),u)return r.createElement(F,null);if(E)return r.createElement(R,{color:"error"},"Failed to load checks");const{individualCheckPassRates:h}=n;if(!h)return r.createElement(R,{color:"error"},"No available checks");const a=t.length?h.filter(({id:i,checkName:f})=>f?.toLowerCase()?.includes(t.toLowerCase())||i.toLowerCase().includes(t.toLowerCase())):h,w=async()=>V(a),g=(i,f)=>{p(()=>f)},b=i=>{P(+i.target.value),p(0)};return r.createElement(L,{className:s.root},r.createElement(N,{container:!0,direction:"row"},r.createElement(z,{viewMode:c,setViewMode:k,isLoading:u,searchTerm:t,setSearchTerm:T,searchPlaceholder:"Search for Available Checks",fetchCsvData:w,csvFilename:M}),c===C.TABLE&&r.createElement(S,{data:a,columns:J(o),showsCheckData:!0}),c===C.GRID&&r.createElement(O,{data:W(a.slice(l*d,(l+1)*d),o),totalCount:a?.length??0,page:l,rowsPerPage:d,onPageChange:g,onRowsPerPageChange:b})))};export{K as CheckResultsTab};
1
+ import{jsx as r,jsxs as L}from"react/jsx-runtime";import{useRouteRef as N}from"@backstage/core-plugin-api";import{Typography as R,Box as E,Grid as A}from"@material-ui/core";import{useState as m,useEffect as D}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useCheckPassRateTrend as x}from"../../../hooks/aggregations/useCheckPassRateTrend.esm.js";import"react-router-dom";import{checkDetailsRouteRef as y}from"../../../routes.esm.js";import{checkPassRatesCsvFilename as M}from"../../../utils/charts.esm.js";import{PassRateGrid as O}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as S}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as F}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as G}from"../../TechHealth/Loading/Loading.esm.js";import{NameColumn as B}from"../NameColumn.esm.js";import{ActionColumn as I}from"../ActionColumn.esm.js";import{OwnerColumn as j}from"../OwnerColumn.esm.js";import{checkPassRatesToCsv as V}from"../TechHealthExportFunctions.esm.js";import{PassRateTabHeader as H}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as J}from"../PassRateTabStyles.esm.js";import{ViewMode as C,generateCheckPassRateGridData as W}from"../techHealthTabUtils.esm.js";import"recharts";import"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../../Charts/BarChart/BarChart.esm.js";import"../../PassRateTable/NewPassRateTable.esm.js";import{MostRecentColumn as q}from"../MostRecentColumn.esm.js";import{CheckTrendColumn as z}from"./CheckTrendColumn.esm.js";function K(s){return[{label:"NAME",id:"checkName",renderCell:e=>r(B,{name:e.checkName??e.id,description:e.checkDescription})},{label:"LATEST",id:"snapshotPassRate",renderCell:e=>r(q,{snapshot:e.snapshotPassRate})},{label:"TREND",id:"trendPassRate",renderCell:e=>r(z,{row:e})},{label:"OWNER",id:"checkOwner",renderCell:e=>r(j,{ownerEntityRef:e.checkOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:(e,t,n)=>r(I,{navigateTo:s({checkId:e.id}),disabled:t,toolTipText:n})}]}const Q=()=>{const s=J(),{filter:e}=F(),t=N(y),{data:n,isLoading:u,isError:k}=x(e),[c,P]=m(C.TABLE),[o,T]=m(""),[l,p]=m(0),[d,w]=m(10);if(D(()=>{p(0)},[e,o]),u)return r(G,{});if(k)return r(R,{color:"error",children:"Failed to load checks"});const{individualCheckPassRates:h}=n;if(!h)return r(R,{color:"error",children:"No available checks"});const i=o.length?h.filter(({id:a,checkName:f})=>f?.toLowerCase()?.includes(o.toLowerCase())||a.toLowerCase().includes(o.toLowerCase())):h,g=async()=>V(i),b=(a,f)=>{p(()=>f)},v=a=>{w(+a.target.value),p(0)};return r(E,{className:s.root,children:L(A,{container:!0,direction:"row",children:[r(H,{viewMode:c,setViewMode:P,isLoading:u,searchTerm:o,setSearchTerm:T,searchPlaceholder:"Search for Available Checks",fetchCsvData:g,csvFilename:M}),c===C.TABLE&&r(S,{data:i,columns:K(t),showsCheckData:!0}),c===C.GRID&&r(O,{data:W(i.slice(l*d,(l+1)*d),t),totalCount:i?.length??0,page:l,rowsPerPage:d,onPageChange:b,onRowsPerPageChange:v})]})})};export{Q as CheckResultsTab};
2
2
  //# sourceMappingURL=CheckResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as m}from"@material-ui/core";import t from"react";import"recharts";import{convertPassRateToDataPoints as a}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as s}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as i}from"../PassRateTabStyles.esm.js";const p=({row:r})=>{const o=i(),e=a(r.trendPassRates??[]);return t.createElement(m,{className:o.flexColumn},t.createElement(s,{chartData:e,tableChart:!0}))};export{p as CheckTrendColumn};
1
+ import{jsx as t}from"react/jsx-runtime";import{Box as a}from"@material-ui/core";import"recharts";import{convertPassRateToDataPoints as s}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as e}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as i}from"../PassRateTabStyles.esm.js";const p=({row:o})=>{const r=i(),m=s(o.trendPassRates??[]);return t(a,{className:r.flexColumn,children:t(e,{chartData:m,tableChart:!0})})};export{p as CheckTrendColumn};
2
2
  //# sourceMappingURL=CheckTrendColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as N}from"@backstage/catalog-model";import{useApi as V,useRouteRef as H}from"@backstage/core-plugin-api";import{entityRouteRef as W}from"@backstage/plugin-catalog-react";import{Typography as L,Box as $,Grid as j}from"@material-ui/core";import t,{useState as i,useEffect as A}from"react";import{soundcheckApiRef as q}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useEntityPassRateTrend as z}from"../../../hooks/aggregations/useEntityPassRateTrend.esm.js";import"react-router-dom";import{entityPassRatesCsvFilename as J}from"../../../utils/charts.esm.js";import{PassRateGrid as K}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as Q}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as U}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as X}from"../../TechHealth/Loading/Loading.esm.js";import{ActionColumn as Y}from"../ActionColumn.esm.js";import{MostRecentColumn as Z}from"../MostRecentColumn.esm.js";import{NameColumn as _}from"../NameColumn.esm.js";import{OwnerColumn as ee}from"../OwnerColumn.esm.js";import{PassRateTabHeader as te}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as re}from"../PassRateTabStyles.esm.js";import{entityPassRatesToCsv as oe}from"../TechHealthExportFunctions.esm.js";import{ViewMode as f,generateEntityPassRateGridData as ae}from"../techHealthTabUtils.esm.js";import{EntityTrendColumn as ie}from"./EntityTrendColumn.esm.js";function ne(d){return[{label:"NAME",id:"entityName",renderCell:({id:r,entityDescription:n})=>t.createElement(_,{name:N(r).name,description:n})},{label:"LATEST",id:"latest",renderCell:r=>t.createElement(Z,{snapshot:r.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:r=>t.createElement(ie,{row:r})},{label:"OWNER",id:"entityOwnerRef",renderCell:({entityOwnerRef:r})=>t.createElement(ee,{ownerEntityRef:r??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>t.createElement(Y,{navigateTo:`${d(N(r))}/soundcheck`})}]}const se=()=>{const d=re(),r=V(q),{filter:n}=U(),g=H(W),[E,P]=i([]),[R,s]=i(void 0),[C,p]=i(0),[u,I]=i(10),{data:o,isLoading:y,isError:x}=z({filter:n,first:u,after:R}),[a,D]=i(o?.individualEntityPassRates),S=a?.edges?a?.edges[a?.edges.length-1]:{cursor:""};A(()=>{o&&D(()=>({totalCount:o.individualEntityPassRates.totalCount,edges:o.individualEntityPassRates.edges,pageInfo:{endCursor:o.individualEntityPassRates.pageInfo.endCursor,hasNextPage:o.individualEntityPassRates.pageInfo.hasNextPage??!1,hasPreviousPage:o.individualEntityPassRates.pageInfo.hasPreviousPage??!1}}))},[o]);const[c,F]=i(f.TABLE),[m,G]=i("");if(A(()=>{p(0),s("")},[n]),y)return t.createElement(X,null);if(x)return t.createElement(L,{color:"error"},"Failed to load entities");if(!a?.edges?.length)return t.createElement(L,{color:"error"},"No available entities");const h=m.length?{...a,edges:a.edges.filter(({node:e})=>e.id.toLowerCase().includes(m.toLowerCase())),totalCount:a.edges.filter(({node:e})=>e.id.toLowerCase().includes(m.toLowerCase())).length}:a,v=h?.edges.map(({node:e})=>e)??[],w=h?.totalCount??0,M=async()=>{const{individualEntityPassRates:e}=await r.getIndividualEntityPassRates({filter:n});return oe(e.edges.map(({node:l})=>l))},O=()=>{P(e=>[...e,R]),s(S?.cursor)},B=()=>{s(E[E.length-1]),P(e=>e.slice(0,-1))},T=(e,l)=>{p(k=>(l>k?O():B(),l))},b=e=>{s(void 0),I(+e.target.value),p(0)};return t.createElement($,{className:d.root},t.createElement(j,{container:!0,direction:"row"},t.createElement(te,{viewMode:c,setViewMode:F,isLoading:y,searchTerm:m,setSearchTerm:G,searchPlaceholder:"Search available entities",fetchCsvData:M,csvFilename:J}),c===f.TABLE&&t.createElement(Q,{data:v,totalCount:w,page:C,rowsPerPage:u,columns:ne(g),onPageChange:T,onRowsPerPageChange:b}),c===f.GRID&&t.createElement(K,{data:ae(v,g),totalCount:w,page:C,rowsPerPage:u,onPageChange:T,onRowsPerPageChange:b})))};export{se as EntityResultsTab};
1
+ import{jsx as t,jsxs as j}from"react/jsx-runtime";import{parseEntityRef as N}from"@backstage/catalog-model";import{useApi as V,useRouteRef as H}from"@backstage/core-plugin-api";import{entityRouteRef as W}from"@backstage/plugin-catalog-react";import{Typography as L,Box as $,Grid as q}from"@material-ui/core";import{useState as a,useEffect as A}from"react";import{soundcheckApiRef as z}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useEntityPassRateTrend as J}from"../../../hooks/aggregations/useEntityPassRateTrend.esm.js";import"react-router-dom";import{entityPassRatesCsvFilename as K}from"../../../utils/charts.esm.js";import{PassRateGrid as Q}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as U}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as X}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as Y}from"../../TechHealth/Loading/Loading.esm.js";import{ActionColumn as Z}from"../ActionColumn.esm.js";import{MostRecentColumn as _}from"../MostRecentColumn.esm.js";import{NameColumn as ee}from"../NameColumn.esm.js";import{OwnerColumn as te}from"../OwnerColumn.esm.js";import{PassRateTabHeader as oe}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as re}from"../PassRateTabStyles.esm.js";import{entityPassRatesToCsv as ie}from"../TechHealthExportFunctions.esm.js";import{ViewMode as g,generateEntityPassRateGridData as ae}from"../techHealthTabUtils.esm.js";import{EntityTrendColumn as se}from"./EntityTrendColumn.esm.js";function ne(l){return[{label:"NAME",id:"entityName",renderCell:({id:o,entityDescription:s})=>t(ee,{name:N(o).name,description:s})},{label:"LATEST",id:"latest",renderCell:o=>t(_,{snapshot:o.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:o=>t(se,{row:o})},{label:"OWNER",id:"entityOwnerRef",renderCell:({entityOwnerRef:o})=>t(te,{ownerEntityRef:o??void 0})},{label:"ACTION",id:"action",renderCell:({id:o})=>t(Z,{navigateTo:`${l(N(o))}/soundcheck`})}]}const de=()=>{const l=re(),o=V(z),{filter:s}=X(),c=H(W),[P,R]=a([]),[C,n]=a(void 0),[h,p]=a(0),[u,x]=a(10),{data:r,isLoading:y,isError:I}=J({filter:s,first:u,after:C}),[i,D]=a(r?.individualEntityPassRates),S=i?.edges?i?.edges[i?.edges.length-1]:{cursor:""};A(()=>{r&&D(()=>({totalCount:r.individualEntityPassRates.totalCount,edges:r.individualEntityPassRates.edges,pageInfo:{endCursor:r.individualEntityPassRates.pageInfo.endCursor,hasNextPage:r.individualEntityPassRates.pageInfo.hasNextPage??!1,hasPreviousPage:r.individualEntityPassRates.pageInfo.hasPreviousPage??!1}}))},[r]);const[f,F]=a(g.TABLE),[d,G]=a("");if(A(()=>{p(0),n("")},[s]),y)return t(Y,{});if(I)return t(L,{color:"error",children:"Failed to load entities"});if(!i?.edges?.length)return t(L,{color:"error",children:"No available entities"});const v=d.length?{...i,edges:i.edges.filter(({node:e})=>e.id.toLowerCase().includes(d.toLowerCase())),totalCount:i.edges.filter(({node:e})=>e.id.toLowerCase().includes(d.toLowerCase())).length}:i,E=v?.edges.map(({node:e})=>e)??[],w=v?.totalCount??0,M=async()=>{const{individualEntityPassRates:e}=await o.getIndividualEntityPassRates({filter:s});return ie(e.edges.map(({node:m})=>m))},O=()=>{R(e=>[...e,C]),n(S?.cursor)},B=()=>{n(P[P.length-1]),R(e=>e.slice(0,-1))},T=(e,m)=>{p(k=>(m>k?O():B(),m))},b=e=>{n(void 0),x(+e.target.value),p(0)};return t($,{className:l.root,children:j(q,{container:!0,direction:"row",children:[t(oe,{viewMode:f,setViewMode:F,isLoading:y,searchTerm:d,setSearchTerm:G,searchPlaceholder:"Search available entities",fetchCsvData:M,csvFilename:K}),f===g.TABLE&&t(U,{data:E,totalCount:w,page:h,rowsPerPage:u,columns:ne(c),onPageChange:T,onRowsPerPageChange:b}),f===g.GRID&&t(Q,{data:ae(E,c),totalCount:w,page:h,rowsPerPage:u,onPageChange:T,onRowsPerPageChange:b})]})})};export{de as EntityResultsTab};
2
2
  //# sourceMappingURL=EntityResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as a}from"@material-ui/core";import t from"react";import"recharts";import{convertPassRateToDataPoints as m}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as s}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as i}from"../PassRateTabStyles.esm.js";const n=({row:{trendPassRates:r}})=>{const o=i(),e=m(r??[]);return t.createElement(a,{className:o.flexColumn},t.createElement(s,{chartData:e,tableChart:!0}))};export{n as EntityTrendColumn};
1
+ import{jsx as t}from"react/jsx-runtime";import{Box as m}from"@material-ui/core";import"recharts";import{convertPassRateToDataPoints as s}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as e}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as i}from"../PassRateTabStyles.esm.js";const p=({row:{trendPassRates:r}})=>{const o=i(),a=s(r??[]);return t(m,{className:o.flexColumn,children:t(e,{chartData:a,tableChart:!0})})};export{p as EntityTrendColumn};
2
2
  //# sourceMappingURL=EntityTrendColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as G}from"@backstage/catalog-model";import{useApi as H,useRouteRef as O}from"@backstage/core-plugin-api";import{entityRouteRef as j}from"@backstage/plugin-catalog-react";import{Typography as L,Box as q,Grid as z}from"@material-ui/core";import r,{useState as s,useEffect as A}from"react";import{soundcheckApiRef as J}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGroupPassRateTrend as K}from"../../../hooks/aggregations/useGroupPassRateTrend.esm.js";import"react-router-dom";import{groupPassRatesCsvFilename as Q}from"../../../utils/charts.esm.js";import{PassRateGrid as U}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as W}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as X}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as Y}from"../../TechHealth/Loading/Loading.esm.js";import{ActionColumn as Z}from"../ActionColumn.esm.js";import{MostRecentColumn as _}from"../MostRecentColumn.esm.js";import{NameColumn as $}from"../NameColumn.esm.js";import{PassRateTabHeader as ee}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as re}from"../PassRateTabStyles.esm.js";import{groupPassRatesToCsv as te}from"../TechHealthExportFunctions.esm.js";import{ViewMode as c,generateGroupPassRateGridData as oe}from"../techHealthTabUtils.esm.js";import{GroupTrendColumn as ae}from"./GroupTrendColumn.esm.js";function se(p){return[{label:"NAME",id:"groupName",renderCell:({groupTitle:t,id:i})=>r.createElement($,{name:t??G(i).name})},{label:"LATEST",id:"latest",renderCell:t=>r.createElement(_,{snapshot:t.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:t=>r.createElement(ae,{row:t})},{label:"ACTION",id:"action",renderCell:({id:t})=>r.createElement(Z,{navigateTo:p(G(t))})}]}const ie=()=>{const p=re(),t=H(J),{filter:i}=X();i.context=void 0;const f=O(j),[P,R]=s([]),[C,n]=s(void 0),[h,u]=s(0),[g,I]=s(10),{data:o,isLoading:E,isError:x}=K({filter:i,first:g,after:C}),[a,y]=s(o?.groupPassRates),S=a?.edges?a?.edges[a?.edges.length-1]:{cursor:""};A(()=>{o&&y(()=>({totalCount:o.groupPassRates.totalCount,edges:o.groupPassRates.edges,pageInfo:{endCursor:o.groupPassRates.pageInfo.endCursor,hasNextPage:o.groupPassRates.pageInfo.hasNextPage??!1,hasPreviousPage:o.groupPassRates.pageInfo.hasPreviousPage??!1}}))},[o]);const[d,D]=s(c.TABLE),[m,F]=s("");if(A(()=>{u(0),n("")},[i]),E)return r.createElement(Y,null);if(x)return r.createElement(L,{color:"error"},"Failed to load groups");if(!a?.edges?.length)return r.createElement(L,{color:"error"},"No available groups");const T=m.length?{...a,edges:a.edges.filter(({node:e})=>e.groupTitle?.toLowerCase()?.includes(m.toLowerCase())||e.id.toLowerCase().includes(m.toLowerCase()))}:a,v=T?.edges.map(({node:e})=>e)??[],w=T?.totalCount??0,M=async()=>{const{groupPassRates:e}=await t.getIndividualGroupPassRates({filter:i});return te(e.edges.map(({node:l})=>l))},B=()=>{R(e=>[...e,C]),n(S?.cursor)},V=()=>{n(P[P.length-1]),R(e=>e.slice(0,-1))},b=(e,l)=>{u(k=>(l>k?B():V(),l))},N=e=>{n(void 0),I(+e.target.value),u(0)};return r.createElement(q,{className:p.root},r.createElement(z,{container:!0,direction:"row"},r.createElement(ee,{viewMode:d,setViewMode:D,isLoading:E,searchTerm:m,setSearchTerm:F,searchPlaceholder:"Search available teams",csvFilename:Q,fetchCsvData:M}),d===c.TABLE&&r.createElement(W,{data:v,totalCount:w,page:h,rowsPerPage:g,columns:se(f),onPageChange:b,onRowsPerPageChange:N}),d===c.GRID&&r.createElement(U,{data:oe(v,f),totalCount:w,page:h,rowsPerPage:g,onPageChange:b,onRowsPerPageChange:N})))};export{ie as GroupResultsTab};
1
+ import{jsx as o,jsxs as k}from"react/jsx-runtime";import{parseEntityRef as L}from"@backstage/catalog-model";import{useApi as H,useRouteRef as O}from"@backstage/core-plugin-api";import{entityRouteRef as q}from"@backstage/plugin-catalog-react";import{Typography as x,Box as z,Grid as J}from"@material-ui/core";import{useState as s,useEffect as A}from"react";import{soundcheckApiRef as K}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGroupPassRateTrend as Q}from"../../../hooks/aggregations/useGroupPassRateTrend.esm.js";import"react-router-dom";import{groupPassRatesCsvFilename as U}from"../../../utils/charts.esm.js";import{PassRateGrid as W}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as X}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as Y}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as Z}from"../../TechHealth/Loading/Loading.esm.js";import{ActionColumn as _}from"../ActionColumn.esm.js";import{MostRecentColumn as $}from"../MostRecentColumn.esm.js";import{NameColumn as ee}from"../NameColumn.esm.js";import{PassRateTabHeader as oe}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as re}from"../PassRateTabStyles.esm.js";import{groupPassRatesToCsv as te}from"../TechHealthExportFunctions.esm.js";import{ViewMode as f,generateGroupPassRateGridData as ae}from"../techHealthTabUtils.esm.js";import{GroupTrendColumn as se}from"./GroupTrendColumn.esm.js";function ie(l){return[{label:"NAME",id:"groupName",renderCell:({groupTitle:r,id:i})=>o(ee,{name:r??L(i).name})},{label:"LATEST",id:"latest",renderCell:r=>o($,{snapshot:r.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:r=>o(se,{row:r})},{label:"ACTION",id:"action",renderCell:({id:r})=>o(_,{navigateTo:l(L(r))})}]}const ne=()=>{const l=re(),r=H(K),{filter:i}=Y();i.context=void 0;const c=O(q),[P,R]=s([]),[C,n]=s(void 0),[h,d]=s(0),[u,E]=s(10),{data:t,isLoading:T,isError:I}=Q({filter:i,first:u,after:C}),[a,y]=s(t?.groupPassRates),S=a?.edges?a?.edges[a?.edges.length-1]:{cursor:""};A(()=>{t&&y(()=>({totalCount:t.groupPassRates.totalCount,edges:t.groupPassRates.edges,pageInfo:{endCursor:t.groupPassRates.pageInfo.endCursor,hasNextPage:t.groupPassRates.pageInfo.hasNextPage??!1,hasPreviousPage:t.groupPassRates.pageInfo.hasPreviousPage??!1}}))},[t]);const[g,D]=s(f.TABLE),[m,F]=s("");if(A(()=>{d(0),n("")},[i]),T)return o(Z,{});if(I)return o(x,{color:"error",children:"Failed to load groups"});if(!a?.edges?.length)return o(x,{color:"error",children:"No available groups"});const v=m.length?{...a,edges:a.edges.filter(({node:e})=>e.groupTitle?.toLowerCase()?.includes(m.toLowerCase())||e.id.toLowerCase().includes(m.toLowerCase()))}:a,w=v?.edges.map(({node:e})=>e)??[],b=v?.totalCount??0,M=async()=>{const{groupPassRates:e}=await r.getIndividualGroupPassRates({filter:i});return te(e.edges.map(({node:p})=>p))},B=()=>{R(e=>[...e,C]),n(S?.cursor)},V=()=>{n(P[P.length-1]),R(e=>e.slice(0,-1))},N=(e,p)=>{d(j=>(p>j?B():V(),p))},G=e=>{n(void 0),E(+e.target.value),d(0)};return o(z,{className:l.root,children:k(J,{container:!0,direction:"row",children:[o(oe,{viewMode:g,setViewMode:D,isLoading:T,searchTerm:m,setSearchTerm:F,searchPlaceholder:"Search available teams",csvFilename:U,fetchCsvData:M}),g===f.TABLE&&o(X,{data:w,totalCount:b,page:h,rowsPerPage:u,columns:ie(c),onPageChange:N,onRowsPerPageChange:G}),g===f.GRID&&o(W,{data:ae(w,c),totalCount:b,page:h,rowsPerPage:u,onPageChange:N,onRowsPerPageChange:G})]})})};export{ne as GroupResultsTab};
2
2
  //# sourceMappingURL=GroupResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as o,Typography as m}from"@material-ui/core";import t from"react";import"recharts";import{convertPassRateToDataPoints as s}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as n}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as l}from"../PassRateTabStyles.esm.js";const p=({row:{trendPassRates:a}})=>{const e=l(),r=s(a??[]);return r.length?t.createElement(o,{className:e.flexColumn},t.createElement(n,{chartData:r,tableChart:!0})):t.createElement(o,{className:e.flexColumn},t.createElement(m,null,"No data"))};export{p as GroupTrendColumn};
1
+ import{jsx as r}from"react/jsx-runtime";import{Box as a,Typography as e}from"@material-ui/core";import"recharts";import{convertPassRateToDataPoints as s}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as i}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as p}from"../PassRateTabStyles.esm.js";const n=({row:{trendPassRates:m}})=>{const t=p(),o=s(m??[]);return o.length?r(a,{className:t.flexColumn,children:r(i,{chartData:o,tableChart:!0})}):r(a,{className:t.flexColumn,children:r(e,{children:"No data"})})};export{n as GroupTrendColumn};
2
2
  //# sourceMappingURL=GroupTrendColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as r,Typography as m}from"@material-ui/core";import e from"react";import{usePassRateTabStyles as n}from"./PassRateTabStyles.esm.js";const s=({snapshot:t})=>{const o=n();return e.createElement(r,{className:o.flexColumn},e.createElement(m,null,Math.round(t),"%"))};export{s as MostRecentColumn};
1
+ import{jsx as r,jsxs as t}from"react/jsx-runtime";import{Box as e,Typography as n}from"@material-ui/core";import{usePassRateTabStyles as m}from"./PassRateTabStyles.esm.js";const a=({snapshot:o})=>{const s=m();return r(e,{className:s.flexColumn,children:t(n,{children:[Math.round(o),"%"]})})};export{a as MostRecentColumn};
2
2
  //# sourceMappingURL=MostRecentColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as r}from"@backstage/core-components";import{Box as a,Typography as n}from"@material-ui/core";import t from"react";import{usePassRateTabStyles as s}from"./PassRateTabStyles.esm.js";const c=({name:o="",description:m=""})=>{const e=s();return t.createElement(a,{className:e.flexColumn},t.createElement(n,{className:e.boldText},o),t.createElement(r,{className:e.descriptionText,content:m??""}))};export{c as NameColumn};
1
+ import{jsxs as m,jsx as t}from"react/jsx-runtime";import{Box as s,Typography as n}from"@material-ui/core";import{SoundcheckMarkdownContent as i}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{usePassRateTabStyles as p}from"./PassRateTabStyles.esm.js";const a=({name:r="",description:e=""})=>{const o=p();return m(s,{className:o.flexColumn,children:[t(n,{className:o.boldText,children:r}),t(i,{className:o.descriptionText,content:e??""})]})};export{a as NameColumn};
2
2
  //# sourceMappingURL=NameColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as a,parseEntityRef as l}from"@backstage/catalog-model";import{EntityRefLink as m}from"@backstage/plugin-catalog-react";import{makeStyles as f,Tooltip as p,Typography as y}from"@material-ui/core";import n from"react";import{useEntityByRef as s}from"../../hooks/catalog/useEntityByRef.esm.js";const c=e=>e?.kind==="Group",d=e=>e?.kind==="User",u=f(e=>({ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}},fontSize:e.typography.body1.fontSize}})),E=({ownerEntityRef:e})=>{const{data:t,error:o}=s(e??void 0),i=u();if(t){let r;return c(t)||d(t)?r=t.metadata.title??t.spec.profile?.displayName:r=t.metadata.name,n.createElement(m,{entityRef:a(t),title:r,className:i.ownerLink})}else if(o&&e)return n.createElement(p,{title:"Unable to pull owner reference from Catalog API"},n.createElement(y,{style:{color:"red"},variant:"body2"},(()=>{try{return l(e).name}catch{return e}})()));return null};export{E as OwnerColumn};
1
+ import{jsx as n}from"react/jsx-runtime";import{stringifyEntityRef as a,parseEntityRef as l}from"@backstage/catalog-model";import{EntityRefLink as f}from"@backstage/plugin-catalog-react";import{makeStyles as m,Tooltip as p,Typography as y}from"@material-ui/core";import{useEntityByRef as s}from"../../hooks/catalog/useEntityByRef.esm.js";const d=e=>e?.kind==="Group",c=e=>e?.kind==="User",u=m(e=>({ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}},fontSize:e.typography.body1.fontSize}})),h=({ownerEntityRef:e})=>{const{data:t,error:o}=s(e??void 0),i=u();if(t){let r;return d(t)||c(t)?r=t.metadata.title??t.spec.profile?.displayName:r=t.metadata.name,n(f,{entityRef:a(t),title:r,className:i.ownerLink})}else if(o&&e)return n(p,{title:"Unable to pull owner reference from Catalog API",children:n(y,{style:{color:"red"},variant:"body2",children:(()=>{try{return l(e).name}catch{return e}})()})});return null};export{h as OwnerColumn};
2
2
  //# sourceMappingURL=OwnerColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Grid as l,Button as B,Menu as I,MenuItem as L,ListItemIcon as w,ListItemText as z}from"@material-ui/core";import{makeStyles as M}from"@material-ui/core/styles";import N from"@material-ui/icons/Apps";import G from"@material-ui/icons/GridOn";import P from"@material-ui/icons/KeyboardArrowDown";import V from"@material-ui/icons/Reorder";import{ToggleButtonGroup as R,ToggleButton as d}from"@material-ui/lab";import e,{useRef as A,useState as u,useEffect as D}from"react";import{CSVLink as O}from"react-csv";import{SearchBar as W}from"../SearchBar/SearchBar.esm.js";import{ViewMode as h}from"./techHealthTabUtils.esm.js";const _=M(t=>({header:{padding:t.spacing(0,0,1),display:"flex"},headerButtons:{display:"flex",gap:t.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},exportButton:{height:"40px",width:"112px"},csvLink:{display:"none"},menuIconSize:{minWidth:t.spacing(4),color:t.palette.text.primary},menuList:{backgroundColor:t.palette.background.paper,color:t.palette.text.primary}})),j=({viewMode:t,setViewMode:g,isLoading:m,searchTerm:f,setSearchTerm:E,searchPlaceholder:x,fetchCsvData:v,csvFilename:b})=>{const r=_(),c=A(),S=(a,p)=>{p!==null&&g(p)},[s,n]=u(null),[o,k]=u([]),i=!!s,C=a=>{n(a.currentTarget)},T=()=>{n(null)},y=async()=>{n(null);const a=await v();k(a)};return D(()=>{o.length&&c?.current?.link.click()},[o]),e.createElement(l,{container:!0,spacing:2,className:r.header},e.createElement(l,{item:!0,xs:6},e.createElement(W,{searchTerm:f,setSearchTerm:E,disabled:m,placeholder:x||"Search",variant:"outlined",size:"small"})),e.createElement(l,{item:!0,xs:6,className:r.headerButtons},e.createElement(B,{id:"export-button",className:r.exportButton,disabled:m,variant:"contained",color:"primary","aria-controls":i?"export-menu":void 0,"aria-haspopup":"true","aria-expanded":i?"true":void 0,onClick:C,endIcon:e.createElement(P,null)},"Export"),e.createElement(O,{data:o,filename:b,className:r.csvLink,ref:c,target:"_blank"}),e.createElement(I,{id:"export-menu",anchorEl:s,getContentAnchorEl:null,open:i,onClose:T,MenuListProps:{"aria-labelledby":"export-button",disablePadding:!0,className:r.menuList},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}},e.createElement(L,{onClick:y},e.createElement(w,{color:"inherit",className:r.menuIconSize},e.createElement(G,{fontSize:"small"})),e.createElement(z,null,"CSV"))),e.createElement(R,{size:"small",value:t,exclusive:!0,onChange:S},e.createElement(d,{value:h.TABLE,title:"Table view"},e.createElement(V,{color:"inherit"})),e.createElement(d,{value:h.GRID,title:"Grid view"},e.createElement(N,{color:"inherit"})))))};export{j as PassRateTabHeader};
1
+ import{jsxs as o,jsx as e}from"react/jsx-runtime";import{Grid as s,Button as I,Menu as w,MenuItem as z,ListItemIcon as M,ListItemText as N}from"@material-ui/core";import{makeStyles as E}from"@material-ui/core/styles";import G from"@material-ui/icons/Apps";import P from"@material-ui/icons/GridOn";import V from"@material-ui/icons/KeyboardArrowDown";import j from"@material-ui/icons/Reorder";import{ToggleButtonGroup as R,ToggleButton as h}from"@material-ui/lab";import{useRef as A,useState as u,useEffect as D}from"react";import{CSVLink as O}from"react-csv";import{SearchBar as W}from"../SearchBar/SearchBar.esm.js";import{ViewMode as g}from"./techHealthTabUtils.esm.js";const _=E(r=>({header:{padding:r.spacing(0,0,1),display:"flex"},headerButtons:{display:"flex",gap:r.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},exportButton:{height:"40px",width:"112px"},csvLink:{display:"none"},menuIconSize:{minWidth:r.spacing(4),color:r.palette.text.primary},menuList:{backgroundColor:r.palette.background.paper,color:r.palette.text.primary}})),F=({viewMode:r,setViewMode:f,isLoading:c,searchTerm:x,setSearchTerm:v,searchPlaceholder:b,fetchCsvData:S,csvFilename:k})=>{const t=_(),m=A(),B=(i,p)=>{p!==null&&f(p)},[d,n]=u(null),[a,C]=u([]),l=!!d,L=i=>{n(i.currentTarget)},T=()=>{n(null)},y=async()=>{n(null);const i=await S();C(i)};return D(()=>{a.length&&m?.current?.link.click()},[a]),o(s,{container:!0,spacing:2,className:t.header,children:[e(s,{item:!0,xs:6,children:e(W,{searchTerm:x,setSearchTerm:v,disabled:c,placeholder:b||"Search",variant:"outlined",size:"small"})}),o(s,{item:!0,xs:6,className:t.headerButtons,children:[e(I,{id:"export-button",className:t.exportButton,disabled:c,variant:"contained",color:"primary","aria-controls":l?"export-menu":void 0,"aria-haspopup":"true","aria-expanded":l?"true":void 0,onClick:L,endIcon:e(V,{}),children:"Export"}),e(O,{data:a,filename:k,className:t.csvLink,ref:m,target:"_blank"}),e(w,{id:"export-menu",anchorEl:d,getContentAnchorEl:null,open:l,onClose:T,MenuListProps:{"aria-labelledby":"export-button",disablePadding:!0,className:t.menuList},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:o(z,{onClick:y,children:[e(M,{color:"inherit",className:t.menuIconSize,children:e(P,{fontSize:"small"})}),e(N,{children:"CSV"})]})}),o(R,{size:"small",value:r,exclusive:!0,onChange:B,children:[e(h,{value:g.TABLE,title:"Table view",children:e(j,{color:"inherit"})}),e(h,{value:g.GRID,title:"Grid view",children:e(G,{color:"inherit"})})]})]})]})};export{F as PassRateTabHeader};
2
2
  //# sourceMappingURL=PassRateTabHeader.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as m,Typography as s}from"@material-ui/core";import t from"react";import"recharts";import{convertPassRateToDataPoints as n}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as p}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as i}from"../PassRateTabStyles.esm.js";const l=({row:{trendPassRates:r,snapshotPassRate:o}})=>{const e=i(),a=n(r??[]);return t.createElement(m,{className:e.flexColumn},t.createElement(s,null,Math.round(o),"%"),t.createElement(p,{chartData:a,tableChart:!0}))};export{l as TrackTrendColumn};
1
+ import{jsxs as t,jsx as m}from"react/jsx-runtime";import{Box as e,Typography as i}from"@material-ui/core";import"recharts";import{convertPassRateToDataPoints as p}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as n}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as c}from"../PassRateTabStyles.esm.js";const h=({row:{trendPassRates:r,snapshotPassRate:o}})=>{const a=c(),s=p(r??[]);return t(e,{className:a.flexColumn,children:[t(i,{children:[Math.round(o),"%"]}),m(n,{chartData:s,tableChart:!0})]})};export{h as TrackTrendColumn};
2
2
  //# sourceMappingURL=TrackLevelTrendColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as N}from"@backstage/core-plugin-api";import{Typography as k,Box as O,Grid as A}from"@material-ui/core";import e,{useState as d,useEffect as y,useMemo as D}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as S}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{trackDetailsRouteRef as F}from"../../../routes.esm.js";import{trackPassRatesCsvFilename as G}from"../../../utils/charts.esm.js";import{PassRateGrid as x}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as B}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as V}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as I}from"../../TechHealth/Loading/Loading.esm.js";import{trackPassRatesToCsv as $}from"../TechHealthExportFunctions.esm.js";import{ActionColumn as H}from"../ActionColumn.esm.js";import{NameColumn as W}from"../NameColumn.esm.js";import{OwnerColumn as j}from"../OwnerColumn.esm.js";import{PassRateTabHeader as q}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as z}from"../PassRateTabStyles.esm.js";import{ViewMode as g,generateTrackPassRateGridData as J,getDetailsRoute as K}from"../techHealthTabUtils.esm.js";import{TrackTrendColumn as Q}from"./TrackLevelTrendColumn.esm.js";const v=(m,n,a)=>{const i=Math.min(5,n-m+1);return Array.from({length:i}).map((l,s)=>{const o=m+s;return{label:a?"PROGRESS":`LEVEL ${o}`,id:`levels-${s}`,renderCell:r=>{const t=r.levels?.find(({levelOrdinal:u})=>u===o);return t?e.createElement(Q,{row:t}):e.createElement(e.Fragment,null)}}})},P=(m,n,a,i)=>{const l=m.flatMap(r=>r.levels?.map(t=>t.levelOrdinal)||[]),s=Math.min(...l),o=Math.max(...l);return[{label:"NAME",id:"trackName",renderCell:r=>e.createElement(W,{name:r.trackName??r.id,description:r.trackDescription})},...v(s,o,!!a),{label:"OWNER",id:"trackOwnerRef",renderCell:r=>e.createElement(j,{ownerEntityRef:r.trackOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>e.createElement(H,{navigateTo:K(r,n,a,i)})}]},U=()=>{const m=z(),{filter:n}=V(),a=N(F),{data:i,isLoading:l,isError:s}=S(n),[o,r]=d(g.TABLE),[t,u]=d(""),[f,R]=d(0),[E,h]=d(10);y(()=>{R(0)},[n,t]);const w=D(()=>P(i?.individualTrackPassRate??[],a),[i?.individualTrackPassRate,a]);if(l)return e.createElement(I,null);if(s)return e.createElement(k,{color:"error"},"Failed to load tracks");const{individualTrackPassRate:T}=i;if(!T)return e.createElement(k,{color:"error"},"No available tracks");const c=t.length?T.filter(({id:p,trackName:C})=>C?.toLowerCase()?.includes(t.toLowerCase())||p.toLowerCase().includes(t.toLowerCase())):T,b=async()=>$(c),L=(p,C)=>{R(()=>C)},M=p=>{h(+p.target.value),R(0)};return e.createElement(O,{className:m.root},e.createElement(A,{container:!0,direction:"row"},e.createElement(q,{viewMode:o,setViewMode:r,isLoading:l,searchTerm:t,setSearchTerm:u,searchPlaceholder:"Search Available Tracks",fetchCsvData:b,csvFilename:G}),o===g.TABLE&&e.createElement(B,{data:c,columns:w}),o===g.GRID&&e.createElement(x,{data:J(c.slice(f*E,(f+1)*E),a),totalCount:c?.length??0,page:f,rowsPerPage:E,onPageChange:L,onRowsPerPageChange:M})))};export{U as TrackResultsTab,P as generateColumns,v as generateTrendColumns};
1
+ import{jsx as e,jsxs as N,Fragment as O}from"react/jsx-runtime";import{useRouteRef as A}from"@backstage/core-plugin-api";import{Typography as k,Box as x,Grid as y}from"@material-ui/core";import{useState as p,useEffect as D,useMemo as S}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as F}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{trackDetailsRouteRef as G}from"../../../routes.esm.js";import{trackPassRatesCsvFilename as B}from"../../../utils/charts.esm.js";import{PassRateGrid as V}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as j}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as I}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as $}from"../../TechHealth/Loading/Loading.esm.js";import{trackPassRatesToCsv as H}from"../TechHealthExportFunctions.esm.js";import{ActionColumn as W}from"../ActionColumn.esm.js";import{NameColumn as q}from"../NameColumn.esm.js";import{OwnerColumn as z}from"../OwnerColumn.esm.js";import{PassRateTabHeader as J}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as K}from"../PassRateTabStyles.esm.js";import{ViewMode as h,generateTrackPassRateGridData as Q,getDetailsRoute as U}from"../techHealthTabUtils.esm.js";import{TrackTrendColumn as X}from"./TrackLevelTrendColumn.esm.js";const v=(m,s,o)=>{const i=Math.min(5,s-m+1);return Array.from({length:i}).map((n,l)=>{const a=m+l;return{label:o?"PROGRESS":`LEVEL ${a}`,id:`levels-${l}`,renderCell:r=>{const t=r.levels?.find(({levelOrdinal:f})=>f===a);return t?e(X,{row:t}):e(O,{})}}})},P=(m,s,o,i)=>{const n=m.flatMap(r=>r.levels?.map(t=>t.levelOrdinal)||[]),l=Math.min(...n),a=Math.max(...n);return[{label:"NAME",id:"trackName",renderCell:r=>e(q,{name:r.trackName??r.id,description:r.trackDescription})},...v(l,a,!!o),{label:"OWNER",id:"trackOwnerRef",renderCell:r=>e(z,{ownerEntityRef:r.trackOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>e(W,{navigateTo:U(r,s,o,i)})}]},Y=()=>{const m=K(),{filter:s}=I(),o=A(G),{data:i,isLoading:n,isError:l}=F(s),[a,r]=p(h.TABLE),[t,f]=p(""),[u,R]=p(0),[T,w]=p(10);D(()=>{R(0)},[s,t]);const b=S(()=>P(i?.individualTrackPassRate??[],o),[i?.individualTrackPassRate,o]);if(n)return e($,{});if(l)return e(k,{color:"error",children:"Failed to load tracks"});const{individualTrackPassRate:C}=i;if(!C)return e(k,{color:"error",children:"No available tracks"});const c=t.length?C.filter(({id:d,trackName:g})=>g?.toLowerCase()?.includes(t.toLowerCase())||d.toLowerCase().includes(t.toLowerCase())):C,E=async()=>H(c),L=(d,g)=>{R(()=>g)},M=d=>{w(+d.target.value),R(0)};return e(x,{className:m.root,children:N(y,{container:!0,direction:"row",children:[e(J,{viewMode:a,setViewMode:r,isLoading:n,searchTerm:t,setSearchTerm:f,searchPlaceholder:"Search Available Tracks",fetchCsvData:E,csvFilename:B}),a===h.TABLE&&e(j,{data:c,columns:b}),a===h.GRID&&e(V,{data:Q(c.slice(u*T,(u+1)*T),o),totalCount:c?.length??0,page:u,rowsPerPage:T,onPageChange:L,onRowsPerPageChange:M})]})})};export{Y as TrackResultsTab,P as generateColumns,v as generateTrendColumns};
2
2
  //# sourceMappingURL=TrackResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as p}from"@backstage/catalog-model";import"react";import"recharts";import{convertPassRateToDataPoints as l}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{formatLineChartData as P}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"../PassRateGrid/PassRateGrid.esm.js";import{Trend as n}from"../PassRateGrid/types.esm.js";var m=(e=>(e[e.TABLE=0]="TABLE",e[e.GRID=1]="GRID",e))(m||{});function i(e){if(!e||!e.length)return n.FLAT;if(e.length===1)return e[0]>0?n.UP:n.FLAT;const t=e[e.length-1]-e[0];return t<0?n.DOWN:t>0?n.UP:n.FLAT}function u(e,t){return e.map(a=>({id:a.id,name:a.checkName??a.id,description:a.checkDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.checkOwnerRef??void 0,navigateTo:t({checkId:a.id})}))}function h(e,t){return e.map(a=>({id:a.id,name:p(a.id).name,description:a.entityDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.entityOwnerRef??void 0,navigateTo:`${t(p(a.id))}/soundcheck`}))}function f(e,t){return e.map(a=>({id:a.id,name:a.groupTitle??p(a.id).name,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},navigateTo:t(p(a.id))}))}const c=(e,t,a,o)=>{if(t)return t({trackId:e});if(a&&o){const s=o.find(({trackId:r})=>r===e)?.campaignId;if(s)return a({campaignId:s})}};function g(e,t,a,o){return e.map(s=>({id:s.id,name:s.trackName??s.id,description:s.trackDescription??void 0,lineChart:{snapshotPassRates:s.levels?.map(({levelOrdinal:r,levelName:d,snapshotPassRate:R,trendPassRates:v})=>({name:d?`Level ${r} (${d})`:`Level ${r}`,value:R,trend:i(v??[])}))??[],trendPassRates:P({overallTrackPassRate:s.levels}),lineConfigs:s.levels?.map(({levelOrdinal:r,levelName:d})=>({dataKey:`Level${r}`,name:d??`Level ${r}`}))??[]},owner:s.trackOwnerRef??void 0,navigateTo:c(s.id,t,a,o)}))}export{m as ViewMode,i as calculateTrend,u as generateCheckPassRateGridData,h as generateEntityPassRateGridData,f as generateGroupPassRateGridData,g as generateTrackPassRateGridData,c as getDetailsRoute};
1
+ import{parseEntityRef as p}from"@backstage/catalog-model";import"react/jsx-runtime";import"recharts";import{convertPassRateToDataPoints as l}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{formatLineChartData as P}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"../PassRateGrid/PassRateGrid.esm.js";import{Trend as n}from"../PassRateGrid/types.esm.js";var m=(e=>(e[e.TABLE=0]="TABLE",e[e.GRID=1]="GRID",e))(m||{});function i(e){if(!e||!e.length)return n.FLAT;if(e.length===1)return e[0]>0?n.UP:n.FLAT;const t=e[e.length-1]-e[0];return t<0?n.DOWN:t>0?n.UP:n.FLAT}function u(e,t){return e.map(a=>({id:a.id,name:a.checkName??a.id,description:a.checkDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.checkOwnerRef??void 0,navigateTo:t({checkId:a.id})}))}function h(e,t){return e.map(a=>({id:a.id,name:p(a.id).name,description:a.entityDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.entityOwnerRef??void 0,navigateTo:`${t(p(a.id))}/soundcheck`}))}function f(e,t){return e.map(a=>({id:a.id,name:a.groupTitle??p(a.id).name,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},navigateTo:t(p(a.id))}))}const c=(e,t,a,o)=>{if(t)return t({trackId:e});if(a&&o){const s=o.find(({trackId:r})=>r===e)?.campaignId;if(s)return a({campaignId:s})}};function g(e,t,a,o){return e.map(s=>({id:s.id,name:s.trackName??s.id,description:s.trackDescription??void 0,lineChart:{snapshotPassRates:s.levels?.map(({levelOrdinal:r,levelName:d,snapshotPassRate:R,trendPassRates:v})=>({name:d?`Level ${r} (${d})`:`Level ${r}`,value:R,trend:i(v??[])}))??[],trendPassRates:P({overallTrackPassRate:s.levels}),lineConfigs:s.levels?.map(({levelOrdinal:r,levelName:d})=>({dataKey:`Level${r}`,name:d??`Level ${r}`}))??[]},owner:s.trackOwnerRef??void 0,navigateTo:c(s.id,t,a,o)}))}export{m as ViewMode,i as calculateTrend,u as generateCheckPassRateGridData,h as generateEntityPassRateGridData,f as generateGroupPassRateGridData,g as generateTrackPassRateGridData,c as getDetailsRoute};
2
2
  //# sourceMappingURL=techHealthTabUtils.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as n,jsx as e}from"react/jsx-runtime";import{useRouteRef as N}from"@backstage/core-plugin-api";import{useTheme as x,TableContainer as T,Table as v,TableHead as w,TableRow as o,TableCell as t,TableBody as y,Link as z,Typography as p,Box as A}from"@material-ui/core";import{makeStyles as S}from"@material-ui/core/styles";import{Skeleton as s}from"@material-ui/lab";import{useMemo as f}from"react";import{trackCheckDetailsRouteRef as R}from"../../routes.esm.js";import{getCheckStatusColor as $}from"../../utils/colors.esm.js";const F=S(r=>({root:{width:"100%",height:"100%",display:"flex",flexDirection:"column"},checkNameLink:{color:"inherit",textDecoration:"none"},bar:{height:8,display:"block"},barContainer:{width:"100%",display:"block"},cell:{padding:r.spacing(1),width:"auto"},barCell:{width:150,padding:"4px 8px"},rightAlignedCell:{textAlign:"right"}})),D=({track:r,checkStatuses:c,certificationStatus:d})=>{const l=F(),u=x(),g=N(R),h=f(()=>r.levels?.flatMap(i=>i.checks)??[],[r.levels]),m=f(()=>h.map(i=>{const a=c?.find(C=>C.id===i.id),b=a?a.numberOfEntities-a.notApplicable-a.exempt:0,k=a?.failed??0;return{check:i,failedCount:k,applicableCount:b}}).filter(({failedCount:i})=>i>0).sort((i,a)=>(a.failedCount??0)-(i.failedCount??0)),[h,c]);return r.levels?.length?n("div",{className:l.root,children:[e(T,{children:n(v,{padding:"none",children:[e(w,{children:n(o,{children:[e(t,{className:l.barCell}),e(t,{size:"medium",className:l.cell,children:"Name"}),e(t,{size:"small",className:l.cell,children:"Failing"})]})}),e(y,{children:c===void 0||d===void 0?Array.from({length:10}).map((i,a)=>n(o,{children:[e(t,{className:l.barCell,children:e(s,{variant:"rect",width:30,height:8})}),e(t,{size:"medium",className:l.cell,children:e(s,{variant:"rect",width:140,height:8})}),e(t,{size:"small",className:l.cell,children:e(s,{variant:"rect",width:100,height:8})})]},`skeleton-${a}`)):m.map(({check:i,failedCount:a})=>n(o,{children:[e(t,{className:l.barCell,children:e("div",{className:l.barContainer,children:e("span",{className:l.bar,style:{width:`${(a??0)/d.numberOfEntities*100}%`,backgroundColor:$(u,"failed")}})})}),e(t,{size:"medium",className:l.cell,children:e(z,{className:l.checkNameLink,href:g({trackId:r.id,checkId:i.id}),children:e(p,{children:i.name})})}),e(t,{size:"small",className:`${l.cell} ${l.rightAlignedCell}`,children:e(p,{children:`${new Intl.NumberFormat().format(a??0)}`})})]},i.id))})]})}),c&&d&&m.length===0&&e(A,{textAlign:"center",padding:4,children:"No Failing Checks"})]}):null};export{D as TopFailingChecksTable};
2
+ //# sourceMappingURL=TopFailingChecksTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import t,{useEffect as s}from"react";import{TrackFormProvider as p,useTrackFormContext as l}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useCreateTrack as k}from"../../hooks/tracks/useCreateTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import{tracksPageRouteRef as f}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as g}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as d}from"../TrackForm/TrackForm.esm.js";const o=()=>{const{setIsLoading:e}=l(),{mutateAsync:i,isLoading:r}=k();s(()=>{e(r)},[e,r]);const[a,m]=u(f),c=async n=>{await i(n,{onSuccess:m})};return g({title:"Create Track",description:"Create a new track that aligns with your organization's long-term tech health initiatives by entering the details below.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),t.createElement(d,{handleClose:a,onSave:c})},h=()=>t.createElement(p,null,t.createElement(o,null));export{h as TrackCreatePage,o as TrackCreateView};
1
+ import{jsx as t}from"react/jsx-runtime";import{useEffect as p}from"react";import{TrackFormProvider as n,useTrackFormContext as k}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useCreateTrack as f}from"../../hooks/tracks/useCreateTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import{tracksPageRouteRef as d}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as g}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as h}from"../TrackForm/TrackForm.esm.js";const e=()=>{const{setIsLoading:r}=k(),{mutateAsync:i,isLoading:o}=f();p(()=>{r(o)},[r,o]);const[a,m]=u(d),c=async s=>{await i(s,{onSuccess:m})};return g({title:"Create Track",description:"Create a new track that aligns with your organization's long-term tech health initiatives by entering the details below.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),t(h,{handleClose:a,onSave:c})},l=()=>t(n,{children:t(e,{})});export{l as TrackCreatePage,e as TrackCreateView};
2
2
  //# sourceMappingURL=TrackCreatePage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{usePermission as s}from"@backstage/plugin-permission-react";import{soundcheckTrackUpdatePermission as p}from"@spotify/backstage-plugin-soundcheck-common";import r from"react";import{useParams as c}from"react-router-dom";import{TrackFormProvider as d}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as l}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as f}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as u}from"../PageWarningMessage/PageWarningMessage.esm.js";import{TrackEditView as E}from"./TrackEditView.esm.js";const g=()=>{const{trackId:e}=c(),{data:n,isLoading:o}=l({ids:[e??""],first:1}),t=n?.edges?.[0]?.node,{loading:i,allowed:m}=s({permission:p,resourceRef:e}),a=m&&t?.isEditable;return r.createElement(r.Fragment,null,r.createElement(u,{entityName:"track",entityId:e,showNotFound:!o&&!t,showCannotEdit:!i&&!a}),o||i?r.createElement(f,null):t&&a&&r.createElement(d,null,r.createElement(E,{track:t,canEdit:m})))};export{g as TrackEditPage};
1
+ import{jsxs as p,Fragment as s,jsx as o}from"react/jsx-runtime";import{usePermission as n}from"@backstage/plugin-permission-react";import{soundcheckTrackUpdatePermission as d}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as c}from"react-router-dom";import{TrackFormProvider as f}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useTrack as k}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as g}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as u}from"../PageWarningMessage/PageWarningMessage.esm.js";import{TrackEditView as l}from"./TrackEditView.esm.js";const P=()=>{const{trackId:i}=c(),{data:r,isLoading:t}=k(i),{loading:m,allowed:a}=n({permission:d,resourceRef:i}),e=a&&r?.isEditable;return p(s,{children:[o(u,{entityName:"track",entityId:i,showNotFound:!t&&!r,showCannotEdit:!m&&!e}),t||m?o(g,{}):r&&e&&o(f,{children:o(l,{track:r,canEdit:a})})]})};export{P as TrackEditPage};
2
2
  //# sourceMappingURL=TrackEditPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import l,{useEffect as e,useCallback as f}from"react";import{useTrackFormContext as E}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as g}from"../../hooks/useNavigateBack.esm.js";import{useUpdateTrack as y}from"../../hooks/tracks/useUpdateTrack.esm.js";import{tracksPageRouteRef as h}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as T}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as w}from"../TrackForm/TrackForm.esm.js";const b=({track:t,canEdit:p})=>{const{setSelectedItem:i,setIsLoading:m,selectedItem:n,showReadOnly:r}=E(),{mutateAsync:s,isLoading:c}=y();e(()=>m(c),[m,c]);const o=!p||!t.isEditable;e(()=>{o?r(t):i(t)},[t,i,o,r]);const[d,a]=g(h),k=f(async u=>{await s(u,{onSuccess:a})},[a,s]);return e(()=>{},[t,r,o]),T({title:`${o?"View":"Edit"} Track`,description:"Edit your track's details to match your needs.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),n?l.createElement(w,{handleClose:d,onSave:k}):null};export{b as TrackEditView};
1
+ import{jsx as l}from"react/jsx-runtime";import{useEffect as i,useCallback as f}from"react";import{useTrackFormContext as g}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as y}from"../../hooks/useNavigateBack.esm.js";import{useUpdateTrack as E}from"../../hooks/tracks/useUpdateTrack.esm.js";import{tracksPageRouteRef as h}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as T}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as w}from"../TrackForm/TrackForm.esm.js";const b=({track:t,canEdit:p})=>{const{setSelectedItem:e,setIsLoading:m,selectedItem:n,showReadOnly:r}=g(),{mutateAsync:s,isLoading:c}=E();i(()=>m(c),[m,c]);const o=!p||!t.isEditable;i(()=>{o?r(t):e(t)},[t,e,o,r]);const[d,a]=y(h),k=f(async u=>{await s(u,{onSuccess:a})},[a,s]);return i(()=>{},[t,r,o]),T({title:`${o?"View":"Edit"} Track`,description:"Edit your track's details to match your needs.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),n?l(w,{handleClose:d,onSave:k}):null};export{b as TrackEditView};
2
2
  //# sourceMappingURL=TrackEditView.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as n,jsx as t}from"react/jsx-runtime";import{makeStyles as $,Box as o,Typography as F,Button as y}from"@material-ui/core";import{get as N}from"lodash";import{useMemo as A,useCallback as C}from"react";import{useFormContext as B,useFieldArray as b}from"react-hook-form";import{CheckSelection as T}from"../../../CheckSelection/CheckSelection.esm.js";import{CheckPreview as L}from"../../../CheckSelection/CheckPreview.esm.js";import{CheckPreviewProvider as P}from"../../../CheckSelection/CheckPreviewContext.esm.js";import{FormControlledTextField as w}from"../../../FormControlledTextField/FormControlledTextField.esm.js";import{FormFieldLabel as p}from"../../../FormFieldLabel/FormFieldLabel.esm.js";const W=$(l=>({levelStep:{display:"flex",gap:l.spacing(2),maxHeight:"80vh",marginBottom:l.spacing(2)},actionButton:{color:l.palette.text.primary,padding:l.spacing(.25,0),margin:l.spacing(0,.5)}})),j=({idx:l,allSelectedCheckIds:d,sectionCheckIds:r,updateAll:s})=>{const{control:v,formState:{errors:f}}=B(),{append:m,remove:c}=b({control:v,name:`levelsStep.levels.${l}.checks`}),h=N(f,`levelsStep.levels.${l}.checks`),k=C(e=>{e&&!r.includes(e.id)&&(d.includes(e.id)&&s(e.id,l),m({id:e.id,name:e.name??"",description:e.description??""}))},[d,m,l,r,s]),u=C(e=>{const i=r.indexOf(e);i>-1&&c(i)},[c,r]);return n(o,{children:[t(p,{title:"Checks"}),t(T,{currentSectionCheckIds:r,addCheckToSelection:k,removeCheck:u,error:!!h,helperText:h?.message,blankText:"Search checks to add them to this level. Checks used in another level will be automatically moved if selected."})]})},z=()=>{const l=W(),{watch:d,control:r,setValue:s}=B(),{insert:v,remove:f,fields:m}=b({control:r,name:"levelsStep.levels"}),c=d("levelsStep.levels"),h=A(()=>c.flatMap(e=>e.checks.map(i=>i.id)),[c]),k=e=>{v(e+1,{name:`Level ${e+2}`,description:"",checks:[]})},u=C((e,i)=>{let a=0;for(const g of c){const S=g.checks;if(S.findIndex(x=>x.id===e)>-1&&a!==i){const x=S.filter(I=>I.id!==e);s(`levelsStep.levels.${a}.checks`,x)}a++}},[s,c]);return n(o,{children:[t(o,{marginBottom:2,children:t(F,{variant:"body2",children:"Add the checks to your track by selecting them from the autocomplete. You can preview the checks to see its properties."})}),t(P,{children:n(o,{className:l.levelStep,children:[t(o,{flex:1,minWidth:300,display:"flex",flexDirection:"column",overflow:"auto",paddingRight:2,children:m.map((e,i)=>{const a=c[i].checks.map(g=>g.id);return n(o,{marginBottom:2,children:[n(o,{marginBottom:1,children:[t(p,{title:"Level Name"}),n(o,{display:"flex",alignItems:"center",children:[t(w,{control:r,name:`levelsStep.levels.${i}.name`,fullWidth:!0}),t(y,{className:l.actionButton,variant:"text",size:"small",onClick:()=>k(i),children:"Add"}),t(y,{className:l.actionButton,disabled:c.length<2,variant:"text",size:"small",onClick:()=>f(i),"data-testid":`remove-label-${i}`,children:"Remove"})]})]}),n(o,{marginBottom:1,children:[t(p,{title:"Description"}),t(o,{display:"flex",alignItems:"center",children:t(w,{control:r,name:`levelsStep.levels.${i}.description`,fullWidth:!0})})]}),t(j,{allSelectedCheckIds:h,sectionCheckIds:a,idx:i,updateAll:u})]},e.id)})}),n(o,{flex:1,marginBottom:2,children:[t(p,{title:"Check Preview"}),t(L,{})]})]})})]})};export{z as LevelsStepNew};
2
+ //# sourceMappingURL=LevelsStepNew.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as s}from"@material-ui/core/styles";import e from"react";import{useFormContext as m,Controller as d}from"react-hook-form";import{BadgeVariant as r}from"../../../../../graphql/generated/index.esm.js";import{LevelBadge as n}from"../../../../Badges/LevelBadge.esm.js";import"../../../../Badges/NoLevelBadge.esm.js";import"../../../../Badges/CampaignBadge.esm.js";import{FormControlledAutocomplete as g}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{useLabelOptions as b}from"../../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"@material-ui/core";import"@material-ui/lab";import"../../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{FormFieldLabel as f}from"../../../../FormFieldLabel/FormFieldLabel.esm.js";const u=s(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(1)},badgeTypeInput:{display:"flex",flexDirection:"row",gap:t.spacing(1)},badgeTypeIcon:{alignSelf:"center"}})),y=({disabled:t})=>{const a=u(),{control:o}=m(),l=[{value:"medal",label:"Medal",icon:e.createElement(n,{className:a.badgeTypeIcon,badge:{variant:r.Medal,options:{color:"#FCE54F",level:3}}})},{value:"status",label:"Status",icon:e.createElement(n,{className:a.badgeTypeIcon,badge:{variant:r.Status,options:{status:{passed:3,failed:2,warning:0,error:0,notApplicable:0,notReported:0,passPercentage:60}}}})}],i=b(l);return e.createElement("div",{className:a.container},e.createElement("div",null,e.createElement(f,{title:"Badge type",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks#certifications-and-badges"})),e.createElement("div",{className:a.badgeTypeInput},e.createElement(g,{name:"detailsStep.badgeType",disableClearable:!0,control:o,width:300,freeSolo:!1,disabled:t,placeholder:"Badge type",...i}),e.createElement(d,{name:"detailsStep.badgeType",control:o,render:({field:c})=>e.createElement(e.Fragment,null,l.find(p=>p.value===c.value)?.icon)})))};export{y as TrackBadgeTypeSelect};
1
+ import{jsx as e,jsxs as i,Fragment as d}from"react/jsx-runtime";import{makeStyles as m}from"@material-ui/core/styles";import{useFormContext as g,Controller as b}from"react-hook-form";import{BadgeVariant as l}from"../../../../../graphql/generated/index.esm.js";import{LevelBadge as n}from"../../../../Badges/LevelBadge.esm.js";import"../../../../Badges/NoLevelBadge.esm.js";import"../../../../Badges/CampaignBadge.esm.js";import{FormControlledAutocomplete as f}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/core";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as u}from"../../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"react";import{FormFieldLabel as y}from"../../../../FormFieldLabel/FormFieldLabel.esm.js";const v=m(o=>({container:{display:"flex",flexDirection:"column",gap:o.spacing(1)},badgeTypeInput:{display:"flex",flexDirection:"row",gap:o.spacing(1)},badgeTypeIcon:{alignSelf:"center"}})),T=({disabled:o})=>{const a=v(),{control:t}=g(),r=[{value:"medal",label:"Medal",icon:e(n,{className:a.badgeTypeIcon,badge:{variant:l.Medal,options:{color:"#FCE54F",level:3}}})},{value:"status",label:"Status",icon:e(n,{className:a.badgeTypeIcon,badge:{variant:l.Status,options:{status:{passed:3,failed:2,warning:0,error:0,notApplicable:0,notReported:0,passPercentage:60}}}})}],p=u(r);return i("div",{className:a.container,children:[e("div",{children:e(y,{title:"Badge type",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks#certifications-and-badges"})}),i("div",{className:a.badgeTypeInput,children:[e(f,{name:"detailsStep.badgeType",disableClearable:!0,control:t,width:300,freeSolo:!1,disabled:o,placeholder:"Badge type",...p}),e(b,{name:"detailsStep.badgeType",control:t,render:({field:s})=>e(d,{children:r.find(c=>c.value===s.value)?.icon})})]})]})};export{T as TrackBadgeTypeSelect};
2
2
  //# sourceMappingURL=TrackBadgeTypeSelect.esm.js.map
@@ -1,2 +1,2 @@
1
- import p from"react";import{useFormContext as m}from"react-hook-form";import{FormMarkdownInput as a}from"../../../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as d}from"../../../utils/trackFormUtils.esm.js";const l=({isLoading:e,disabled:r})=>{const{control:o,formState:{errors:t}}=m(),{name:i,placeholder:n}=d.description;return p.createElement(a,{name:"detailsStep.description",control:o,error:t.detailsStep?.description,label:i,placeholder:r?void 0:n,disabled:r||e})};export{l as TrackDescriptionInput};
1
+ import{jsx as p}from"react/jsx-runtime";import{useFormContext as d}from"react-hook-form";import{FormMarkdownInput as m}from"../../../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as s}from"../../../utils/trackFormUtils.esm.js";const a=({isLoading:o,disabled:r})=>{const{control:t,formState:{errors:e}}=d(),{name:i,placeholder:n}=s.description;return p(m,{name:"detailsStep.description",control:t,error:e.detailsStep?.description,label:i,placeholder:r?void 0:n,disabled:r||o})};export{a as TrackDescriptionInput};
2
2
  //# sourceMappingURL=TrackDescriptionInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as a}from"@material-ui/core/styles";import e from"react";import{useTrackFormContext as n}from"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import"../../../../contexts/UserProvider.esm.js";import{TrackBadgeTypeSelect as m}from"./TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js";import{TrackDescriptionInput as c}from"./TrackDescriptionInput/TrackDescriptionInput.esm.js";import{TrackDocumentationUrlInput as l}from"./TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js";import{TrackNameInput as p}from"./TrackNameInput/TrackNameInput.esm.js";import{TrackOwnerSelect as s}from"./TrackOwnerSelect/TrackOwnerSelect.esm.js";const d=a(i=>({container:{display:"flex",flexDirection:"column",gap:i.spacing(2)}})),f=()=>{const i=d(),{isLoading:t,isReadOnly:r,selectedItem:o}=n();return e.createElement("div",{className:i.container},e.createElement(p,{disabled:r,isLoading:t}),e.createElement(c,{isLoading:t,disabled:r}),e.createElement(s,{disabled:t||r,ownerEntityRef:o?.ownerEntityRef??void 0}),e.createElement(l,{isLoading:t,disabled:r}),e.createElement(m,{disabled:t||r}))};export{f as TrackDetailsStep};
1
+ import{jsxs as a,jsx as o}from"react/jsx-runtime";import{makeStyles as n}from"@material-ui/core/styles";import{useTrackFormContext as m}from"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../../contexts/UserProvider.esm.js";import{TrackBadgeTypeSelect as s}from"./TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js";import{TrackDescriptionInput as p}from"./TrackDescriptionInput/TrackDescriptionInput.esm.js";import{TrackDocumentationUrlInput as c}from"./TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js";import{TrackDraftInput as d}from"./TrackDraftInput/TrackDraftInput.esm.js";import{TrackNameInput as l}from"./TrackNameInput/TrackNameInput.esm.js";import{TrackOwnerSelect as f}from"./TrackOwnerSelect/TrackOwnerSelect.esm.js";const k=n(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)}})),T=()=>{const t=k(),{isLoading:r,isReadOnly:i,selectedItem:e}=m();return a("div",{className:t.container,children:[o(l,{disabled:i,isLoading:r}),o(p,{isLoading:r,disabled:i}),o(f,{disabled:r||i,ownerEntityRef:e?.ownerEntityRef??void 0}),o(c,{isLoading:r,disabled:i}),o(s,{disabled:r||i}),o(d,{disabled:r||i})]})};export{T as TrackDetailsStep};
2
2
  //# sourceMappingURL=TrackDetailsStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as l,Typography as c}from"@material-ui/core";import e from"react";import{useFormContext as d}from"react-hook-form";import{FormTextInput as s}from"../../../../FormTextInput/FormTextInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as p}from"../../../utils/trackFormUtils.esm.js";const u=l(t=>({container:{display:"flex",flexDirection:"column"},fieldContainer:{width:"300px",marginTop:t.spacing(1)}})),f=({isLoading:t,disabled:r})=>{const o=u(),{control:a,formState:{errors:n}}=d(),{name:i,placeholder:m}=p.documentationURL;return e.createElement("div",{className:o.container},e.createElement("div",null,e.createElement(c,{variant:"subtitle2"},i)),e.createElement("div",{className:o.fieldContainer},e.createElement(s,{name:"detailsStep.documentationURL",control:a,placeholder:m,disabled:r||t,variant:"outlined",margin:"dense",error:n?.detailsStep?.documentationURL,helperText:n?.detailsStep?.documentationURL?.message??void 0})))};export{f as TrackDocumentationUrlInput};
1
+ import{jsxs as d,jsx as e}from"react/jsx-runtime";import{makeStyles as m,Typography as s}from"@material-ui/core";import{useFormContext as c}from"react-hook-form";import{FormTextInput as p}from"../../../../FormTextInput/FormTextInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as u}from"../../../utils/trackFormUtils.esm.js";const f=m(t=>({container:{display:"flex",flexDirection:"column"},fieldContainer:{width:"300px",marginTop:t.spacing(1)}})),h=({isLoading:t,disabled:i})=>{const o=f(),{control:n,formState:{errors:r}}=c(),{name:a,placeholder:l}=u.documentationURL;return d("div",{className:o.container,children:[e("div",{children:e(s,{variant:"subtitle2",children:a})}),e("div",{className:o.fieldContainer,children:e(p,{name:"detailsStep.documentationURL",control:n,placeholder:l,disabled:i||t,variant:"outlined",margin:"dense",error:r?.detailsStep?.documentationURL,helperText:r?.detailsStep?.documentationURL?.message??void 0})})]})};export{h as TrackDocumentationUrlInput};
2
2
  //# sourceMappingURL=TrackDocumentationUrlInput.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as n,jsx as e}from"react/jsx-runtime";import{Typography as i,FormControlLabel as l,Checkbox as c}from"@material-ui/core";import{makeStyles as d}from"@material-ui/core/styles";import{useFormContext as s,Controller as m}from"react-hook-form";import{FormFieldLabel as f}from"../../../../FormFieldLabel/FormFieldLabel.esm.js";const p=d(r=>({container:{display:"flex",flexDirection:"column",width:"300px"},draftInput:{display:"flex",flexDirection:"row",gap:r.spacing(1)}})),h=({disabled:r})=>{const t=p(),{control:a}=s();return n("div",{className:t.container,children:[n("div",{children:[e(f,{title:"Mark as draft"}),e(i,{variant:"caption",children:"Enable to hide this track from Soundcheck entity views."})]}),e("div",{className:t.draftInput,children:e(m,{name:"detailsStep.draft",control:a,render:({field:o})=>e(l,{label:"Draft",disabled:r,control:e(c,{checked:o.value,onChange:o.onChange})})})})]})};export{h as TrackDraftInput};
2
+ //# sourceMappingURL=TrackDraftInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as s,TextField as d}from"@material-ui/core";import{makeStyles as c}from"@material-ui/core/styles";import e from"react";import{useFormContext as f,Controller as x}from"react-hook-form";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as u}from"../../../utils/trackFormUtils.esm.js";const T=c(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)},helperText:{marginLeft:0},field:{marginTop:"-10px"}})),g=({disabled:t,isLoading:l})=>{const r=T(),{control:o,formState:{errors:a}}=f(),{placeholder:n,name:m,helperText:i}=u.name;return e.createElement("div",{className:r.container},e.createElement("div",null,e.createElement(s,{variant:"subtitle2"},m)),e.createElement(x,{name:"detailsStep.name",control:o,defaultValue:"",render:({field:p})=>e.createElement(d,{...p,FormHelperTextProps:{className:r.helperText},className:r.field,variant:"outlined",margin:"dense",fullWidth:!0,placeholder:n,disabled:l||t,type:"text",error:!!a.detailsStep?.name,helperText:a.detailsStep?.name?.message??i})}))};export{g as TrackNameInput};
1
+ import{jsxs as p,jsx as e}from"react/jsx-runtime";import{Typography as d,TextField as c}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import{useFormContext as f,Controller as h}from"react-hook-form";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as T}from"../../../utils/trackFormUtils.esm.js";const u=x(r=>({container:{display:"flex",flexDirection:"column",gap:r.spacing(2)},helperText:{marginLeft:0},field:{marginTop:"-10px"}})),g=({disabled:r,isLoading:l})=>{const t=u(),{control:o,formState:{errors:a}}=f(),{placeholder:i,name:n,helperText:m}=T.name;return p("div",{className:t.container,children:[e("div",{children:e(d,{variant:"subtitle2",children:n})}),e(h,{name:"detailsStep.name",control:o,defaultValue:"",render:({field:s})=>e(c,{...s,FormHelperTextProps:{className:t.helperText},className:t.field,variant:"outlined",margin:"dense",fullWidth:!0,placeholder:i,disabled:l||r,type:"text",error:!!a.detailsStep?.name,helperText:a.detailsStep?.name?.message??m})})]})};export{g as TrackNameInput};
2
2
  //# sourceMappingURL=TrackNameInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as E}from"@backstage/catalog-model";import{Typography as i}from"@material-ui/core";import{makeStyles as y}from"@material-ui/core/styles";import{uniqBy as b}from"lodash";import t from"react";import{useFormContext as g}from"react-hook-form";import"../../../../../contexts/TrackFormContext.esm.js";import"../../../../../contexts/CheckFormContext.esm.js";import"../../../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as w}from"../../../../../contexts/UserProvider.esm.js";import{useGroupOptions as S}from"../../../../../hooks/groups/useGroupOptions.esm.js";import{FormControlledAutocomplete as x}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{useLabelOptions as R}from"../../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"@material-ui/lab";import"../../../../ListboxVirtualized/ListboxVirtualized.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as h}from"../../../utils/trackFormUtils.esm.js";const L=y(m=>({container:{display:"flex",flexDirection:"column",gap:m.spacing(1)}})),O=({disabled:m,ownerEntityRef:o})=>{const a=L(),{options:l,isLoading:p}=S(),{user:s,userEntityRef:n}=w(),{control:c,formState:{errors:f}}=g();let e=b(l.map(r=>({value:r.ref,label:r.name})),"value");n&&(e=[{value:n,label:s?.metadata.name},...e]),o&&n!==o&&!e.some(r=>r.value===o)&&(e=[{value:o,label:E(o).name},...e]);const u=R(e),{name:d,description:v}=h.owner;return t.createElement("div",{className:a.container},t.createElement("div",null,t.createElement(i,{variant:"subtitle2"},d),t.createElement(i,{variant:"caption"},v)),t.createElement("div",null,t.createElement(x,{name:"detailsStep.ownerEntityRef",control:c,width:300,freeSolo:!1,disabled:m||p,helperText:f?.detailsStep?.ownerEntityRef?.message??void 0,placeholder:"Owner",...u})))};export{O as TrackOwnerSelect};
1
+ import{jsxs as n,jsx as t}from"react/jsx-runtime";import{parseEntityRef as h}from"@backstage/catalog-model";import{Typography as a}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import{uniqBy as g}from"lodash";import{useFormContext as w}from"react-hook-form";import"../../../../../contexts/TrackFormContext.esm.js";import"../../../../../contexts/CheckFormContext.esm.js";import"../../../../../contexts/CampaignFormContext.esm.js";import"react";import{useLoggedInUser as x}from"../../../../../contexts/UserProvider.esm.js";import{useGroupOptions as S}from"../../../../../hooks/groups/useGroupOptions.esm.js";import{FormControlledAutocomplete as E}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as R}from"../../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as L}from"../../../utils/trackFormUtils.esm.js";const O=b(i=>({container:{display:"flex",flexDirection:"column",gap:i.spacing(1)}})),T=({disabled:i,ownerEntityRef:r})=>{const l=O(),{options:p,isLoading:s}=S(),{user:c,userEntityRef:m}=x(),{control:d,formState:{errors:f}}=w();let e=g(p.map(o=>({value:o.ref,label:o.name})),"value");m&&(e=[{value:m,label:c?.metadata.name},...e]),r&&m!==r&&!e.some(o=>o.value===r)&&(e=[{value:r,label:h(r).name},...e]);const u=R(e),{name:v,description:y}=L.owner;return n("div",{className:l.container,children:[n("div",{children:[t(a,{variant:"subtitle2",children:v}),t(a,{variant:"caption",children:y})]}),t("div",{children:t(E,{name:"detailsStep.ownerEntityRef",control:d,width:300,freeSolo:!1,disabled:i||s,helperText:f?.detailsStep?.ownerEntityRef?.message??void 0,placeholder:"Owner",...u})})]})};export{T as TrackOwnerSelect};
2
2
  //# sourceMappingURL=TrackOwnerSelect.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Content as f}from"@backstage/core-components";import e from"react";import{DndProvider as u}from"react-dnd";import{HTML5Backend as S}from"react-dnd-html5-backend";import{FormProvider as k}from"react-hook-form";import{useTrackFormContext as F}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{formStyles as b}from"../../utils/formStyles.esm.js";import{FormFilterSection as h}from"../FormFilterSection/FormFilterSection.esm.js";import{FormStepper as g}from"../FormStepper/FormStepper.esm.js";import{LevelsStep as E}from"./Steps/LevelsStep/LevelsStep.esm.js";import{TrackDetailsStep as y}from"./Steps/TrackDetailsStep/TrackDetailsStep.esm.js";import{TrackStepNameMapping as T}from"./utils/types.esm.js";import"./utils/validation.esm.js";import{TRACK_FIELDS as C}from"./utils/trackFormUtils.esm.js";import{useTrackForm as v}from"./utils/useTrackForm.esm.js";const x=({onSave:m,handleClose:l})=>{const{selectedItem:a,isLoading:n,isReadOnly:r}=F(),p=b(),{formMethods:t,onSubmit:o,selectableChips:s,checksLoading:c}=v(m),i=[{label:"Enter track details",content:()=>e.createElement(y,null)},{label:"Add levels",content:()=>e.createElement(E,{selectableChips:s,checksLoading:c})},{label:"Choose the affected entities (Optional)",content:()=>e.createElement(h,{name:"filtersStep.filter",keyValueFilterName:"filtersStep.keyValueFilter",disabled:r,description:C.filter.description,excludeFilterName:"filtersStep.excludeFilter",excludeKeyValueFilterName:"filtersStep.excludeKeyValueFilter"})}],d=a?[...Array(i.length).keys()]:[0];return e.createElement(u,{backend:S},e.createElement(f,{className:p.formWrapper},e.createElement(k,{...t},e.createElement("form",{onSubmit:t.handleSubmit(o)},e.createElement(g,{onClose:l,handleSubmit:t.handleSubmit,trigger:t.trigger,onSubmit:o,initialVisited:d,stepNameMap:T,steps:i,isLoading:n,isReadOnly:r,saveButtonText:"Save Track"})))))};export{x as TrackForm};
1
+ import{jsx as e}from"react/jsx-runtime";import{Content as d}from"@backstage/core-components";import{FormProvider as c}from"react-hook-form";import{useTrackFormContext as f}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import{formStyles as S}from"../../utils/formStyles.esm.js";import{FormFilterSection as u}from"../FormFilterSection/FormFilterSection.esm.js";import{FormStepper as F}from"../FormStepper/FormStepper.esm.js";import{LevelsStepNew as h}from"./Steps/LevelsStep/LevelsStepNew.esm.js";import{TrackDetailsStep as b}from"./Steps/TrackDetailsStep/TrackDetailsStep.esm.js";import{TrackStepNameMapping as k}from"./utils/types.esm.js";import"./utils/validation.esm.js";import{TRACK_FIELDS as y}from"./utils/trackFormUtils.esm.js";import{useTrackForm as g}from"./utils/useTrackForm.esm.js";const x=({onSave:m,handleClose:l})=>{const{selectedItem:a,isLoading:n,isReadOnly:r}=f(),p=S(),{formMethods:t,onSubmit:i}=g(m),o=[{label:"Enter track details",content:()=>e(b,{})},{label:"Add levels",content:()=>e(h,{})},{label:"Choose the affected entities (Optional)",content:()=>e(u,{name:"filtersStep.filter",keyValueFilterName:"filtersStep.keyValueFilter",disabled:r,description:y.filter.description,excludeFilterName:"filtersStep.excludeFilter",excludeKeyValueFilterName:"filtersStep.excludeKeyValueFilter"})}],s=a?[...Array(o.length).keys()]:[0];return e(d,{className:p.formWrapper,children:e(c,{...t,children:e("form",{onSubmit:t.handleSubmit(i),children:e(F,{onClose:l,handleSubmit:t.handleSubmit,trigger:t.trigger,onSubmit:i,initialVisited:s,stepNameMap:k,steps:o,isLoading:n,isReadOnly:r,saveButtonText:"Save Track"})})})})};export{x as TrackForm};
2
2
  //# sourceMappingURL=TrackForm.esm.js.map
@@ -1,2 +1,2 @@
1
- import{zodResolver as T}from"@hookform/resolvers/zod";import{useMemo as g,useEffect as R}from"react";import{useForm as V}from"react-hook-form";import{v4 as L}from"uuid";import{useTrackFormContext as w}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as E}from"../../../contexts/UserProvider.esm.js";import{BadgeVariant as x}from"../../../graphql/generated/index.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as C}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetChecksMap as M}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{mapInputFilterToFormFilters as c,mapCatalogFilterToFormKeyValueFilters as u,mapFiltersToCatalogFilter as f}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{emptyFilters as y,emptyKeyValueFilters as F}from"../../Filter/types.esm.js";import{trackFormSchema as b}from"./validation.esm.js";const S={detailsStep:{name:"",description:"",ownerEntityRef:"",badgeType:"medal"},levelsStep:{levels:[{name:"Level 1",description:"",checks:[]}]},filtersStep:{filter:y(),keyValueFilter:F(),excludeFilter:y(),excludeKeyValueFilter:F()}},k=({name:e,description:i,ownerEntityRef:o,filter:t,levels:r,documentationURL:m,badge:n,exclude:p})=>({detailsStep:{name:e,ownerEntityRef:o,description:i??"",documentationURL:m??void 0,badgeType:n?.variant===x.Status?"status":"medal"},levelsStep:{levels:r?.map(a=>({name:a.name??`Level ${a.ordinal}`??"Level 1",description:a.description??"",checks:a.checks.map(l=>({id:l.id,name:l.name??l.id,description:l.description??""}))}))||[]},filtersStep:{filter:c(t),keyValueFilter:u(t),excludeFilter:c(p),excludeKeyValueFilter:u(p)}}),v=(e,i,o)=>({id:o?.id??L(),ownerEntityRef:e.detailsStep.ownerEntityRef,description:e.detailsStep.description,name:e.detailsStep.name,documentationURL:e.detailsStep.documentationURL??"",badgeType:e.detailsStep.badgeType,type:o?.type??"standard",levels:e.levelsStep.levels?.map((t,r)=>({ordinal:r+1,name:t.name??"",description:t.description??"",checks:t.checks.map(m=>i[m.id])})),filter:f(e.filtersStep.filter,e.filtersStep.keyValueFilter),exclude:f(e.filtersStep.excludeFilter,e.filtersStep.excludeKeyValueFilter)}),U=e=>{const{selectedItem:i}=w(),o=g(()=>i?k(i):S,[i]),t=V({defaultValues:o,mode:"onChange",resolver:T(b)}),{userEntityRef:r}=E();R(()=>{!i&&r&&!t.getValues("detailsStep.ownerEntityRef")&&t.setValue("detailsStep.ownerEntityRef",r)},[i,r,t]);const{checkChips:m,checksLoading:n,checksMap:p}=M(),a=new Set(t.getValues("levelsStep.levels").flatMap(s=>s.checks.map(d=>d.id))),l=m.filter(s=>!a.has(s.id)),{showModal:h}=C();return{formMethods:t,onSubmit:async s=>{if(!await h({title:"Save Track",message:`Are you sure you want to save track: ${s.detailsStep.name}?`,error:!1}))return;const d=v(s,p??{},i);e(d)},selectableChips:l,checksLoading:n}};export{S as DEFAULT_TRACK_FORM_VALUES,v as mapTrackFormToInput,k as mapTrackToFormValues,U as useTrackForm};
1
+ import{zodResolver as k}from"@hookform/resolvers/zod";import{useMemo as T,useEffect as R}from"react";import{useForm as V}from"react-hook-form";import{v4 as g}from"uuid";import{useTrackFormContext as h}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react/jsx-runtime";import{useLoggedInUser as E}from"../../../contexts/UserProvider.esm.js";import{BadgeVariant as w}from"../../../graphql/generated/index.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as x}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetChecksMap as L}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{mapInputFilterToFormFilters as d,mapCatalogFilterToFormKeyValueFilters as c,mapFiltersToCatalogFilter as u}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{emptyFilters as f,emptyKeyValueFilters as y}from"../../Filter/types.esm.js";import{trackFormSchema as C}from"./validation.esm.js";const F={detailsStep:{name:"",description:"",ownerEntityRef:"",badgeType:"medal",draft:!1},levelsStep:{levels:[{name:"Level 1",description:"",checks:[]}]},filtersStep:{filter:f(),keyValueFilter:y(),excludeFilter:f(),excludeKeyValueFilter:y()}},S=({name:e,description:r,ownerEntityRef:o,filter:t,levels:i,documentationURL:a,badge:p,exclude:l,draft:n})=>({detailsStep:{name:e,ownerEntityRef:o,description:r??"",documentationURL:a??void 0,badgeType:p?.variant===w.Status?"status":"medal",draft:n??!1},levelsStep:{levels:i?.map(m=>({name:m.name??`Level ${m.ordinal}`??"Level 1",description:m.description??"",checks:m.checks.map(s=>({id:s.id,name:s.name??s.id,description:s.description??""}))}))||[]},filtersStep:{filter:d(t),keyValueFilter:c(t),excludeFilter:d(l),excludeKeyValueFilter:c(l)}}),v=(e,r,o)=>({id:o?.id??g(),ownerEntityRef:e.detailsStep.ownerEntityRef,description:e.detailsStep.description,name:e.detailsStep.name,documentationURL:e.detailsStep.documentationURL??"",badgeType:e.detailsStep.badgeType,type:o?.type??"standard",levels:e.levelsStep.levels?.map((t,i)=>({ordinal:i+1,name:t.name??"",description:t.description??"",checks:t.checks.map(a=>r[a.id])})),filter:u(e.filtersStep.filter,e.filtersStep.keyValueFilter),exclude:u(e.filtersStep.excludeFilter,e.filtersStep.excludeKeyValueFilter),draft:e.detailsStep.draft??!1}),M=e=>{const{selectedItem:r}=h(),o=T(()=>r?S(r):F,[r]),t=V({defaultValues:o,mode:"onChange",resolver:k(C)}),{userEntityRef:i}=E();R(()=>{!r&&i&&!t.getValues("detailsStep.ownerEntityRef")&&t.setValue("detailsStep.ownerEntityRef",i)},[r,i,t]);const{checksMap:a}=L(),{showModal:p}=x();return{formMethods:t,onSubmit:async l=>{if(!await p({title:"Save Track",message:`Are you sure you want to save track: ${l.detailsStep.name}?`,error:!1}))return;const n=v(l,a??{},r);e(n)}}};export{F as DEFAULT_TRACK_FORM_VALUES,v as mapTrackFormToInput,S as mapTrackToFormValues,M as useTrackForm};
2
2
  //# sourceMappingURL=useTrackForm.esm.js.map
@@ -1,2 +1,2 @@
1
- import t from"react";import{trackPassRatesSummaryCsvFilename as s}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{TrackPassRateHistoryLineChart as i}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"@backstage/catalog-model";import"luxon";import{useSummaryAggregationsContext as n}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import{TrackSummaryBarChart as p}from"../Charts/BarChart/TrackSummaryBarChart.esm.js";import{OverviewChartCard as c}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallTrackPassRatesToCsv as l}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const C=()=>{const{trackPassRateOverviewTrend:{data:r,isLoading:a,isError:e}}=n(),o=r?.overallTrackPassRate?.length,m=!r?.overallTrackPassRate||!o||a||e;return t.createElement(c,{title:"Track pass rate",subtitle:"Aggregate pass rate for tracks",summaryCardContent:t.createElement(p,null),chartSectionContent:t.createElement(i,null),disableDataExport:m,csvFilename:s,csvData:l(r)})};export{C as TrackHistoryChartCard};
1
+ import{jsx as t}from"react/jsx-runtime";import{trackPassRatesSummaryCsvFilename as m}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{TrackPassRateHistoryLineChart as i}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"@backstage/catalog-model";import"luxon";import{useSummaryAggregationsContext as p}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import{TrackSummaryBarChart as c}from"../Charts/BarChart/TrackSummaryBarChart.esm.js";import{OverviewChartCard as n}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallTrackPassRatesToCsv as l}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const C=()=>{const{trackPassRateOverviewTrend:{data:r,isLoading:a,isError:o}}=p(),e=r?.overallTrackPassRate?.length,s=!r?.overallTrackPassRate||!e||a||o;return t(n,{title:"Track pass rate",subtitle:"Aggregate pass rate for tracks",summaryCardContent:t(c,{}),chartSectionContent:t(i,{}),disableDataExport:s,csvFilename:m,csvData:l(r)})};export{C as TrackHistoryChartCard};
2
2
  //# sourceMappingURL=TrackHistoryChartCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as B}from"@backstage/catalog-model";import{EntityDisplayName as C}from"@backstage/plugin-catalog-react";import{makeStyles as D,Typography as G,Checkbox as N}from"@material-ui/core";import Q from"@material-ui/icons/Category";import $ from"@material-ui/icons/Class";import z from"@material-ui/icons/Group";import M from"@material-ui/icons/Loop";import{toEntityFilterQuery as P}from"@spotify/backstage-plugin-soundcheck-common";import e,{useMemo as f}from"react";import{useGetEntityFacets as n}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import{useGroupOptions as W}from"../../../hooks/groups/useGroupOptions.esm.js";import l from"../../MultiSelectFilter/MultiSelectFilter.esm.js";const j=D(t=>({root:{display:"flex",flexDirection:"row",alignItems:"center",gap:t.spacing(2)}})),y=(t,{selected:r})=>e.createElement(e.Fragment,null,e.createElement(N,{value:t,checked:r,color:"primary"}),e.createElement(C,{entityRef:t,hideIcon:!0})),q=({track:t,label:r,owners:d,setOwners:E,lifecycles:u,setLifecycles:g,types:b,setTypes:h,systems:F,setSystems:L})=>{const w=j(),o=P(t.filter),{options:s,isLoading:k}=W(),O=f(()=>s.map(i=>i.ref),[s]),{data:a,isLoading:x}=n("spec.lifecycle",o),{data:m,isLoading:v}=n("spec.type",o),{data:c,isLoading:R}=n("relations.partOf",o),p=f(()=>c?.filter(i=>{try{return B(i).kind.toLowerCase()==="system"}catch{return!1}}),[c]),S=(a||[]).length<=1,T=(m||[]).length<=1,I=(p||[]).length<=1;return e.createElement("div",{className:w.root},r&&e.createElement(G,{variant:"caption"},`${r}:`),e.createElement(l,{name:"system",label:"System",icon:e.createElement(Q,null),filters:F,setFilters:L,options:p??[],disabled:R||I,customRenderOption:y}),e.createElement(l,{name:"owner",label:"Owner",icon:e.createElement(z,null),filters:d,setFilters:E,options:O??[],disabled:k,customRenderOption:y}),e.createElement(l,{name:"type",label:"Type",icon:e.createElement($,null),filters:b,setFilters:h,options:m??[],disabled:v||T}),e.createElement(l,{name:"lifecycle",label:"Lifecycle",icon:e.createElement(M,null),filters:u,setFilters:g,options:a??[],disabled:x||S}))};export{q as FilterBar};
1
+ import{jsxs as f,jsx as e,Fragment as j}from"react/jsx-runtime";import{parseEntityRef as B}from"@backstage/catalog-model";import{EntityDisplayName as C}from"@backstage/plugin-catalog-react";import{makeStyles as D,Typography as G,Checkbox as N}from"@material-ui/core";import Q from"@material-ui/icons/Category";import A from"@material-ui/icons/Class";import M from"@material-ui/icons/Group";import P from"@material-ui/icons/Loop";import{toEntityFilterQuery as W}from"@spotify/backstage-plugin-soundcheck-common";import{useMemo as y}from"react";import{useGetEntityFacets as n}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import{useGroupOptions as q}from"../../../hooks/groups/useGroupOptions.esm.js";import r from"../../MultiSelectFilter/MultiSelectFilter.esm.js";const z=D(t=>({root:{display:"flex",flexDirection:"row",alignItems:"center",gap:t.spacing(2)}})),d=(t,{selected:i})=>f(j,{children:[e(N,{value:t,checked:i,color:"primary"}),e(C,{entityRef:t,hideIcon:!0})]}),H=({track:t,label:i,owners:g,setOwners:h,lifecycles:u,setLifecycles:b,types:F,setTypes:w,systems:x,setSystems:L})=>{const k=z(),o=W(t.filter),{options:l,isLoading:O}=q(),E=y(()=>l.map(s=>s.ref),[l]),{data:a,isLoading:R}=n("spec.lifecycle",o),{data:m,isLoading:T}=n("spec.type",o),{data:p,isLoading:S}=n("relations.partOf",o),c=y(()=>p?.filter(s=>{try{return B(s).kind.toLowerCase()==="system"}catch{return!1}}),[p]),v=(a||[]).length<=1,I=(m||[]).length<=1,$=(c||[]).length<=1;return f("div",{className:k.root,children:[i&&e(G,{variant:"caption",children:`${i}:`}),e(r,{name:"system",label:"System",icon:e(Q,{}),filters:x,setFilters:L,options:c??[],disabled:S||$,customRenderOption:d}),e(r,{name:"owner",label:"Owner",icon:e(M,{}),filters:g,setFilters:h,options:E??[],disabled:O,customRenderOption:d}),e(r,{name:"type",label:"Type",icon:e(A,{}),filters:F,setFilters:w,options:m??[],disabled:T||I}),e(r,{name:"lifecycle",label:"Lifecycle",icon:e(P,{}),filters:u,setFilters:b,options:a??[],disabled:R||v})]})};export{H as FilterBar};
2
2
  //# sourceMappingURL=FilterBar.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as B}from"@backstage/catalog-model";import{Table as R}from"@backstage/core-components";import{makeStyles as z}from"@material-ui/core";import L from"lodash";import u,{useState as P,useEffect as O,useCallback as y}from"react";import{TrackEntityField as r,Direction as C}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as x}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as D}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as a}from"./columns.esm.js";import{toTrackEntityRow as F}from"./utils.esm.js";const N=10,A=[a.createBadgeColumn(),a.createNameColumn(),a.createStatusColumn(),a.createSystemColumn(),a.createOwnerColumn(),a.createSpecTypeColumn(),a.createSpecLifecycleColumn()],W=[r.CertificationLevel,r.Name,r.CheckPassRate,r.System,r.Owner,r.Type,r.Lifecycle],k=g=>{const{lifecycles:d,owners:n,types:i,systems:s}=g,p=d?.length?{"spec.lifecycle":d}:void 0,m=n?.length?{"relations.ownedBy":n}:void 0,e=i?.length?{"spec.type":i}:void 0,f=s?.length?{"relations.partOf":s}:void 0;return{...p,...m,...e,...f}},_=z({tableContainer:{display:"flex",flexDirection:"column",height:"100%"}}),j=({track:g,initialPageSize:d,lifecycles:n,owners:i,types:s,systems:p})=>{const m=_(),[e,f]=P({orderBy:void 0,filter:k({lifecycles:n,owners:i,types:s,systems:p}),pageInfo:{page:0,pageSize:d??N,direction:"forward",cursor:null}});O(()=>{f(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:k({lifecycles:n,owners:i,types:s,systems:p})}))},[n,i,s,p]);const{data:c,isLoading:w}=D({trackId:g.id,orderBy:e.orderBy,filter:e.filter,[e.pageInfo.direction==="forward"?"first":"last"]:e.pageInfo.pageSize,[e.pageInfo.direction==="forward"?"after":"before"]:e.pageInfo.cursor}),I=y((t,l)=>{let o;t===-1?o=void 0:o={field:W[t],direction:l==="asc"?C.Asc:C.Desc},f({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),h=y((t,l)=>{const o=t>e.pageInfo.page?"forward":"backward",v=o==="forward"?c?.trackEntities.pageInfo.endCursor??null:c?.trackEntities.pageInfo.startCursor??null;f({...e,pageInfo:{page:t,pageSize:l,direction:o,cursor:v}})},[c,e]),S=c?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:E,isLoading:T}=x({entityRefs:S}),b=L.compact(c?.trackEntities.edges.map(t=>{const l=E?.items.find(o=>!!o&&B(o)===t.node.entityRef);return l?F({trackDetails:t.node,track:g,entity:l}):void 0}))??[];return u.createElement("div",{className:m.tableContainer},u.createElement(R,{columns:A,data:b,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:e.pageInfo.pageSize,search:!1,showTitle:!1,padding:"dense"},onOrderChange:I,onPageChange:h,page:e.pageInfo.page,totalCount:c?.trackEntities.totalCount??0,isLoading:w||T,components:{Toolbar:()=>null}}))};export{j as TrackEntitiesTable};
1
+ import{jsx as u}from"react/jsx-runtime";import{stringifyEntityRef as B}from"@backstage/catalog-model";import{Table as R}from"@backstage/core-components";import{makeStyles as z}from"@material-ui/core";import L from"lodash";import{useState as P,useEffect as O,useCallback as y}from"react";import{TrackEntityField as r,Direction as C}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as x}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as D}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as i}from"./columns.esm.js";import{toTrackEntityRow as F}from"./utils.esm.js";const N=10,j=[i.createBadgeColumn(),i.createNameColumn(),i.createStatusColumn(),i.createSystemColumn(),i.createOwnerColumn(),i.createSpecTypeColumn(),i.createSpecLifecycleColumn()],q=[r.CertificationLevel,r.Name,r.CheckPassRate,r.System,r.Owner,r.Type,r.Lifecycle],w=g=>{const{lifecycles:d,owners:n,types:a,systems:s}=g,p=d?.length?{"spec.lifecycle":d}:void 0,m=n?.length?{"relations.ownedBy":n}:void 0,e=a?.length?{"spec.type":a}:void 0,f=s?.length?{"relations.partOf":s}:void 0;return{...p,...m,...e,...f}},A=z({tableContainer:{display:"flex",flexDirection:"column",height:"100%"}}),W=({track:g,initialPageSize:d,lifecycles:n,owners:a,types:s,systems:p})=>{const m=A(),[e,f]=P({orderBy:void 0,filter:w({lifecycles:n,owners:a,types:s,systems:p}),pageInfo:{page:0,pageSize:d??N,direction:"forward",cursor:null}});O(()=>{f(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:w({lifecycles:n,owners:a,types:s,systems:p})}))},[n,a,s,p]);const{data:c,isLoading:k}=D({trackId:g.id,orderBy:e.orderBy,filter:e.filter,[e.pageInfo.direction==="forward"?"first":"last"]:e.pageInfo.pageSize,[e.pageInfo.direction==="forward"?"after":"before"]:e.pageInfo.cursor}),I=y((t,l)=>{let o;t===-1?o=void 0:o={field:q[t],direction:l==="asc"?C.Asc:C.Desc},f({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),h=y((t,l)=>{const o=t>e.pageInfo.page?"forward":"backward",v=o==="forward"?c?.trackEntities.pageInfo.endCursor??null:c?.trackEntities.pageInfo.startCursor??null;f({...e,pageInfo:{page:t,pageSize:l,direction:o,cursor:v}})},[c,e]),S=c?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:E,isLoading:T}=x({entityRefs:S}),b=L.compact(c?.trackEntities.edges.map(t=>{const l=E?.items.find(o=>!!o&&B(o)===t.node.entityRef);return l?F({trackDetails:t.node,track:g,entity:l}):void 0}))??[];return u("div",{className:m.tableContainer,children:u(R,{columns:j,data:b,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:e.pageInfo.pageSize,search:!1,showTitle:!1,padding:"dense"},onOrderChange:I,onPageChange:h,page:e.pageInfo.page,totalCount:c?.trackEntities.totalCount??0,isLoading:k||T,components:{Toolbar:()=>null}})})};export{W as TrackEntitiesTable};
2
2
  //# sourceMappingURL=TrackEntitiesTable.esm.js.map