@spotify/backstage-plugin-soundcheck 0.12.8 → 0.12.10

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 (182) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/alpha/package.json +2 -2
  3. package/dist/api.esm.js +1 -1
  4. package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
  5. package/dist/components/CacheConfig/utils.esm.js +1 -1
  6. package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignChecks.esm.js +1 -1
  7. package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignDetailsPage.esm.js +1 -1
  8. package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignResultsTable.esm.js +1 -1
  9. package/dist/components/CampaignsTab/CampaignListPage/CampaignListPage.esm.js +1 -1
  10. package/dist/components/CampaignsTab/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
  11. package/dist/components/CampaignsTab/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
  12. package/dist/components/CampaignsTab/MutateCampaignsViews/CampaignForm.esm.js +1 -1
  13. package/dist/components/CampaignsTab/MutateCampaignsViews/EditCampaignView.esm.js +1 -1
  14. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
  15. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
  16. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
  17. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignScheduleField/CampaignScheduleField.esm.js +1 -1
  18. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignScheduleField/EndDateChips.esm.js +1 -1
  19. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
  20. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignMilestonesStep.esm.js +1 -1
  21. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignTrackStep.esm.js +1 -1
  22. package/dist/components/CampaignsTab/MutateCampaignsViews/hooks/useCampaignForm.esm.js +1 -1
  23. package/dist/components/CampaignsTab/MutateCampaignsViews/hooks/utils.esm.js +1 -1
  24. package/dist/components/CampaignsTab/MutateCampaignsViews/utils/validation.esm.js +1 -1
  25. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  26. package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
  27. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  28. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  29. package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
  30. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  31. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  32. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  33. package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
  34. package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
  35. package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
  36. package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
  37. package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
  38. package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
  39. package/dist/components/CheckCard/CheckCard.esm.js +1 -1
  40. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  41. package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
  42. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  43. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +2 -0
  44. package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +2 -0
  45. package/dist/components/CheckPage/CheckEntitiesTable/utils.esm.js +2 -0
  46. package/dist/components/CheckPage/CheckInsightsPage.esm.js +2 -0
  47. package/dist/components/CheckPage/CheckPage.esm.js +1 -1
  48. package/dist/components/CheckPage/CheckStatusBar.esm.js +2 -0
  49. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +2 -0
  50. package/dist/components/CheckPage/CheckStatusTable.esm.js +2 -0
  51. package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +2 -0
  52. package/dist/components/CheckPage/StatusRow.esm.js +2 -0
  53. package/dist/components/CheckPage/utils.esm.js +2 -0
  54. package/dist/components/ChecksErrors/ChecksErrors.esm.js +1 -1
  55. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
  56. package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
  57. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  58. package/dist/components/ChecksPage/MutateCheckViews/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  59. package/dist/components/ChecksPage/MutateCheckViews/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
  60. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js +1 -1
  61. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  62. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  63. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  64. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/useRuleInputHandlers.esm.js +1 -1
  65. package/dist/components/ChecksPage/MutateCheckViews/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  66. package/dist/components/ChecksPage/MutateCheckViews/utils/checkFormUtils.esm.js +1 -1
  67. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  68. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  69. package/dist/components/CollectorPage/Configurators/Github/FactCollectionConfig.esm.js +1 -1
  70. package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
  71. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
  72. package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
  73. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  74. package/dist/components/DraggableChip/DraggableChip.esm.js +1 -1
  75. package/dist/components/DroppableInput/DroppableInput.esm.js +1 -1
  76. package/dist/components/EditTrackPage/EditTrackPage.esm.js +1 -1
  77. package/dist/components/EmptyState/EmptyState.esm.js +1 -1
  78. package/dist/components/EntityContent/EntityContent.esm.js +1 -1
  79. package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
  80. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  81. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  82. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  83. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  84. package/dist/components/Filter/utils.esm.js +1 -1
  85. package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
  86. package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
  87. package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
  88. package/dist/components/Frequency/util.esm.js +1 -1
  89. package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
  90. package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
  91. package/dist/components/LevelCard/LevelCard.esm.js +1 -1
  92. package/dist/components/LevelCard/LevelTooltip.esm.js +1 -1
  93. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  94. package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
  95. package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
  96. package/dist/components/OverviewPage/CampaignRow/CampaignRow.esm.js +1 -1
  97. package/dist/components/OverviewPage/CampaignRow/utils.esm.js +1 -1
  98. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  99. package/dist/components/OverviewPage/OverviewTabs.esm.js +1 -1
  100. package/dist/components/OverviewPage/TableContent/TableContent.esm.js +1 -1
  101. package/dist/components/OverviewPage/TableContent/VirtualTableContent.esm.js +1 -1
  102. package/dist/components/Pagination/CursorPagination.esm.js +1 -1
  103. package/dist/components/Pagination/Pagination.esm.js +1 -1
  104. package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
  105. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  106. package/dist/components/ResultsTable/CheckCell/CheckCell.esm.js +1 -1
  107. package/dist/components/ResultsTable/HighestLevelBadge.esm.js +1 -1
  108. package/dist/components/ResultsTable/ProgramCheckIndicator.esm.js +1 -1
  109. package/dist/components/ResultsTable/ProgramCheckRow.esm.js +1 -1
  110. package/dist/components/ResultsTable/ProgramTitleRow.esm.js +1 -1
  111. package/dist/components/ResultsTable/ResultsTableFooter.esm.js +1 -1
  112. package/dist/components/ResultsTable/skeletons/ResultsTableSkeleton.esm.js +1 -1
  113. package/dist/components/ResultsTable/virtualized/Row.esm.js +1 -1
  114. package/dist/components/ResultsTable/virtualized/VirtualizedResultsTable.esm.js +1 -1
  115. package/dist/components/Router.esm.js +1 -1
  116. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  117. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  118. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  119. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  120. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  121. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  122. package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
  123. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
  124. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  125. package/dist/components/TechHealth/Filters/utils.esm.js +1 -1
  126. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  127. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  128. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  129. package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
  130. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  131. package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
  132. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  133. package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
  134. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  135. package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
  136. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
  137. package/dist/components/TechHealthTabs/TechHealthExportFunctions.esm.js +1 -1
  138. package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
  139. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  140. package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
  141. package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +1 -1
  142. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +1 -1
  143. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +1 -1
  144. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
  145. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
  146. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
  147. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
  148. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  149. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  150. package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
  151. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
  152. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  153. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
  154. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  155. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  156. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  157. package/dist/components/TrackPage/TrackLevelsChart.esm.js +1 -1
  158. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  159. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
  160. package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
  161. package/dist/graphql/generated/index.esm.js +47 -27
  162. package/dist/hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js +1 -1
  163. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  164. package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
  165. package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
  166. package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
  167. package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
  168. package/dist/hooks/checks/useExecuteCheck.esm.js +2 -0
  169. package/dist/hooks/entities/useCheckEntities.esm.js +2 -0
  170. package/dist/hooks/entities/useEntityRefsForUser.esm.js +1 -1
  171. package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
  172. package/dist/hooks/graphqlKeys.esm.js +1 -1
  173. package/dist/hooks/groups/useAllGroups.esm.js +1 -1
  174. package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
  175. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  176. package/dist/hooks/tracks/useGetChecksMap.esm.js +1 -1
  177. package/dist/hooks/useFeatureFlag.esm.js +2 -0
  178. package/dist/images/k8s_blue.svg +108 -0
  179. package/dist/images/k8s_white.svg +108 -0
  180. package/dist/routes.esm.js +1 -1
  181. package/dist/text.esm.js +1 -1
  182. package/package.json +26 -19
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as u}from"@backstage/catalog-model";import{Link as f}from"@backstage/core-components";import{makeStyles as h}from"@material-ui/core";import t,{memo as k}from"react";import{ResultState as p}from"../../../graphql/generated/index.esm.js";import{CheckIcon as v}from"../../CheckIcon/CheckIcon.esm.js";import{CheckCellTooltip as $}from"./CheckCellTooltip.esm.js";const E=h(r=>({root:{padding:0},iconWrapper:{padding:r.spacing(1.5),display:"flex",alignItems:"center",justifyContent:"center"},link:{"&:hover $iconWrapper, &:active $iconWrapper, &:focus $iconWrapper":{backgroundColor:r.palette.action.hover}},icon:{width:"17px",height:"17px"},virtualized:{borderBottom:`1px solid ${r.palette.divider}`,borderRight:`1px solid ${r.palette.divider}`}})),N=k(({programId:r,check:a,entityRef:i,result:o,entityRoute:d,isVirtualized:c})=>{const e=E();if(typeof i!="string"){const m=t.createElement("div",{className:e.iconWrapper},t.createElement("div",{className:e.icon}));return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`,"aria-hidden":!0},m):t.createElement("td",{className:e.root,"aria-hidden":!0},m)}const n=t.createElement(v,{className:e.icon,result:o!=null?o:p.NotReported}),l=t.createElement("div",{className:e.iconWrapper},n),s=o&&o===p.NotApplicable?l:t.createElement(f,{className:e.link,to:`${d(u(i))}/soundcheck/tracks/${r}/checks/${a.id}`},l);return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`},t.createElement($,{check:a,icon:n,entityRef:i},s)):t.createElement("td",{className:`${e.root}`},s)});export{N as CheckCell};
1
+ import{parseEntityRef as f}from"@backstage/catalog-model";import{Link as h}from"@backstage/core-components";import{makeStyles as u}from"@material-ui/core";import t,{memo as k}from"react";import{ResultState as s}from"../../../graphql/generated/index.esm.js";import{CheckIcon as v}from"../../CheckIcon/CheckIcon.esm.js";import{CheckCellTooltip as $}from"./CheckCellTooltip.esm.js";const E=u(r=>({root:{padding:0},iconWrapper:{padding:r.spacing(1.5),display:"flex",alignItems:"center",justifyContent:"center"},link:{"&:hover $iconWrapper, &:active $iconWrapper, &:focus $iconWrapper":{backgroundColor:r.palette.action.hover}},icon:{width:"17px",height:"17px"},virtualized:{borderBottom:`1px solid ${r.palette.divider}`,borderRight:`1px solid ${r.palette.divider}`}})),N=k(({programId:r,check:a,entityRef:o,result:i,entityRoute:d,isVirtualized:c})=>{const e=E();if(typeof o!="string"){const p=t.createElement("div",{className:e.iconWrapper},t.createElement("div",{className:e.icon}));return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`,"aria-hidden":!0},p):t.createElement("td",{className:e.root,"aria-hidden":!0},p)}const n=t.createElement(v,{className:e.icon,result:i??s.NotReported}),l=t.createElement("div",{className:e.iconWrapper},n),m=i&&i===s.NotApplicable?l:t.createElement(h,{className:e.link,to:`${d(f(o))}/soundcheck/tracks/${r}/checks/${a.id}`},l);return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`},t.createElement($,{check:a,icon:n,entityRef:o},m)):t.createElement("td",{className:`${e.root}`},m)});export{N as CheckCell};
2
2
  //# sourceMappingURL=CheckCell.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as d}from"@material-ui/core";import t,{memo as c}from"react";import{LevelBadge as n}from"../Badges/LevelBadge.esm.js";import{NoLevelBadge as m}from"../Badges/NoLevelBadge.esm.js";import{CampaignBadge as o}from"../Badges/CampaignBadge.esm.js";import{RowHeights as s,NO_LEVEL_BADGE_NAME as p}from"./virtualized/virtualizedTableUtils.esm.js";const u=d(e=>({virtualized:{borderRight:`1px solid ${e.palette.divider}`,height:`${s.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),v=c(({entityRef:e,highestLevels:r,trackType:a})=>{const l=r.find(g=>g.entityRef===e);let i=l!=null&&l.badge?t.createElement(n,{badge:l.badge}):t.createElement(m,null);return a==="campaign"&&(i=t.createElement(o,null)),i}),f=({highestLevel:e,trackType:r})=>{const a=u();if(!(e!=null&&e.badge))return t.createElement("div",{className:a.virtualized},"\xA0");let l=e.name!==p?t.createElement(n,{badge:e.badge}):t.createElement(m,null);return r==="campaign"&&(l=t.createElement(o,null)),t.createElement("div",{className:a.virtualized},l)};export{v as HighestLevelBadge,f as HighestLevelBadgeCell};
1
+ import{makeStyles as d}from"@material-ui/core";import e,{memo as c}from"react";import{LevelBadge as m}from"../Badges/LevelBadge.esm.js";import{NoLevelBadge as n}from"../Badges/NoLevelBadge.esm.js";import{CampaignBadge as g}from"../Badges/CampaignBadge.esm.js";import{RowHeights as s,NO_LEVEL_BADGE_NAME as p}from"./virtualized/virtualizedTableUtils.esm.js";const f=d(t=>({virtualized:{borderRight:`1px solid ${t.palette.divider}`,height:`${s.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),v=c(({entityRef:t,highestLevels:l,trackType:r})=>{const a=l.find(o=>o.entityRef===t);let i=a?.badge?e.createElement(m,{badge:a.badge}):e.createElement(n,null);return r==="campaign"&&(i=e.createElement(g,null)),i}),E=({highestLevel:t,trackType:l})=>{const r=f();if(!t?.badge)return e.createElement("div",{className:r.virtualized},"\xA0");let a=t.name!==p?e.createElement(m,{badge:t.badge}):e.createElement(n,null);return l==="campaign"&&(a=e.createElement(g,null)),e.createElement("div",{className:r.virtualized},a)};export{v as HighestLevelBadge,E as HighestLevelBadgeCell};
2
2
  //# sourceMappingURL=HighestLevelBadge.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as p,Tooltip as m,LinearProgress as u}from"@material-ui/core";import a,{useMemo as g}from"react";import{ResultState as n}from"../../graphql/generated/index.esm.js";const d=p(e=>({root:{height:"8px",minWidth:"64px",marginLeft:e.spacing(2),borderRadius:"100vh",backgroundColor:e.palette.action.hover},bar:{backgroundColor:e.palette.success.main,transition:"none"}})),b=e=>{var r,o;const s=d(e),t=g(()=>Object.entries(e.progress).reduce((l,[,c])=>l+c,0),[e.progress]);if(t===0)return null;const i=(r=e.progress[n.Passed])!=null?r:0;return a.createElement(m,{arrow:!0,title:`Check passing for ${i} of ${t} ${t===1?"entity":"entities"}`,enterDelay:0,placement:"top"},a.createElement(u,{variant:"determinate",value:((o=e.progress[n.Passed])!=null?o:0)/t*100,classes:{root:s.root,bar:s.bar}}))};export{b as ProgramCheckIndicator};
1
+ import{makeStyles as p,Tooltip as l,LinearProgress as m}from"@material-ui/core";import s,{useMemo as g}from"react";import{ResultState as a}from"../../graphql/generated/index.esm.js";const d=p(e=>({root:{height:"8px",minWidth:"64px",marginLeft:e.spacing(2),borderRadius:"100vh",backgroundColor:e.palette.action.hover},bar:{backgroundColor:e.palette.success.main,transition:"none"}})),u=e=>{const r=d(e),t=g(()=>Object.entries(e.progress).reduce((i,[,c])=>i+c,0),[e.progress]);if(t===0)return null;const o=e.progress[a.Passed]??0,n=Math.round(o/t*100);return s.createElement(l,{arrow:!0,title:`Check passing at ${n}%, ${o} of ${t} ${t===1?"entity":"entities"} passing.`,enterDelay:0,placement:"top"},s.createElement(m,{variant:"determinate",value:(e.progress[a.Passed]??0)/t*100,classes:{root:r.root,bar:r.bar}}))};export{u as ProgramCheckIndicator};
2
2
  //# sourceMappingURL=ProgramCheckIndicator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as y,Typography as m}from"@material-ui/core";import{countBy as N}from"lodash";import t,{memo as f,useMemo as u}from"react";import{ResultState as C}from"../../graphql/generated/index.esm.js";import{CheckCell as b}from"./CheckCell/CheckCell.esm.js";import{ProgramCheckIndicator as n}from"./ProgramCheckIndicator.esm.js";import{RowHeights as i}from"./virtualized/virtualizedTableUtils.esm.js";const s=y(e=>({checkNameCell:{padding:0,backgroundColor:e.palette.background.paper},checkNameContent:{padding:`0 ${e.spacing(2)}px`,display:"flex",justifyContent:"space-between",alignItems:"center"},checkNameTypography:{overflow:"hidden",textOverflow:"ellipsis",fontWeight:e.typography.body1.fontWeight},checkIndicator:{flexBasis:e.spacing(8)},checkNameCellVirtualized:{height:`${i.check}px`,lineHeight:`${i.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}}));f(({programId:e,programName:o,check:a,entityRefs:p,results:l,entityRoute:h})=>{const r=s(),d=u(()=>N(l.filter(({result:c})=>c!==C.NotApplicable),"result"),[l]),k=new Map(l.map(c=>[c.entityRef,c.result]));return t.createElement("tr",{"data-testid":"track-check-row"},t.createElement("th",{scope:"row",className:r.checkNameCell,"aria-label":`${a.name} check for ${o} track`},t.createElement("div",{className:r.checkNameContent},t.createElement(m,{className:r.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(n,{className:r.checkIndicator,progress:d}))),p.map((c,g)=>t.createElement(b,{key:g,programId:e,check:a,entityRef:c,result:typeof c=="string"?k.get(c):void 0,entityRoute:h})))});const v=({name:e,progress:o})=>{const a=s();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(m,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(n,{className:a.checkIndicator,progress:o})))};export{v as CheckNameCell};
1
+ import{makeStyles as f,Typography as s}from"@material-ui/core";import t,{memo as u,useMemo as C}from"react";import{CheckCell as E}from"./CheckCell/CheckCell.esm.js";import{ProgramCheckIndicator as i}from"./ProgramCheckIndicator.esm.js";import{RowHeights as p}from"./virtualized/virtualizedTableUtils.esm.js";const h=f(e=>({checkNameCell:{padding:0,backgroundColor:e.palette.background.paper},checkNameContent:{padding:`0 ${e.spacing(2)}px`,display:"flex",justifyContent:"space-between",alignItems:"center"},checkNameTypography:{overflow:"hidden",textOverflow:"ellipsis",fontWeight:e.typography.body1.fontWeight},checkIndicator:{flexBasis:e.spacing(8)},checkNameCellVirtualized:{height:`${p.check}px`,lineHeight:`${p.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}}));u(({programId:e,programName:l,check:a,entityRefs:d,results:k,entityRoute:g,level:m})=>{const r=h(),y=C(()=>{let c=0,o=0;return m.checks.forEach(n=>{o+=n.totalCount-n.totalPassing,c+=n.totalPassing}),{PASSED:c,FAILED:o}},[m]),N=new Map(k.map(c=>[c.entityRef,c.result]));return t.createElement("tr",{"data-testid":"track-check-row"},t.createElement("th",{scope:"row",className:r.checkNameCell,"aria-label":`${a.name} check for ${l} track`},t.createElement("div",{className:r.checkNameContent},t.createElement(s,{className:r.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(i,{className:r.checkIndicator,progress:y}))),d.map((c,o)=>t.createElement(E,{key:o,programId:e,check:a,entityRef:c,result:typeof c=="string"?N.get(c):void 0,entityRoute:g})))});const v=({name:e,progress:l})=>{const a=h();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(s,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(i,{className:a.checkIndicator,progress:l})))};export{v as CheckNameCell};
2
2
  //# sourceMappingURL=ProgramCheckRow.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as c,Typography as n}from"@material-ui/core";import e,{memo as p}from"react";import{HighestLevelBadge as d}from"./HighestLevelBadge.esm.js";const i=c(t=>({programNameCell:{padding:0,position:"sticky",backgroundColor:t.palette.background.paper},programNameContent:{padding:t.spacing(2)},programNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},badgeCellContent:{display:"flex",justifyContent:"center",alignItems:"center"},programNameCellVirtualized:{borderRight:`1px solid ${t.palette.divider}`}}));p(({program:t,entityRefs:a,highestLevels:s})=>{const r=i();return e.createElement("tr",{"data-testid":"track-title-row"},e.createElement("th",{scope:"row",className:r.programNameCell},e.createElement("div",{className:r.programNameContent},e.createElement(n,{className:r.programNameTypography,variant:"h5",component:"p"},t.name))),a.map((m,l)=>{var o;return typeof m!="string"?e.createElement("td",{key:l,"aria-hidden":!0}):e.createElement("td",{key:l,"data-testid":"track-certification-cell"},e.createElement("div",{className:r.badgeCellContent},e.createElement(d,{entityRef:m,highestLevels:s,trackType:(o=t.type)!=null?o:void 0})))}))});const g=p(({name:t})=>{const a=i();return e.createElement("div",{className:`${a.programNameCell} ${a.programNameCellVirtualized}`},e.createElement("div",{className:a.programNameContent},e.createElement(n,{className:a.programNameTypography,variant:"h5",component:"p"},t)))});export{g as ProgramTitleCell};
1
+ import{makeStyles as s,Typography as o}from"@material-ui/core";import e,{memo as n}from"react";import{HighestLevelBadge as c}from"./HighestLevelBadge.esm.js";const i=s(t=>({programNameCell:{padding:0,position:"sticky",backgroundColor:t.palette.background.paper},programNameContent:{padding:t.spacing(2)},programNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},badgeCellContent:{display:"flex",justifyContent:"center",alignItems:"center"},programNameCellVirtualized:{borderRight:`1px solid ${t.palette.divider}`}}));n(({program:t,entityRefs:a,highestLevels:p})=>{const r=i();return e.createElement("tr",{"data-testid":"track-title-row"},e.createElement("th",{scope:"row",className:r.programNameCell},e.createElement("div",{className:r.programNameContent},e.createElement(o,{className:r.programNameTypography,variant:"h5",component:"p"},t.name))),a.map((m,l)=>typeof m!="string"?e.createElement("td",{key:l,"aria-hidden":!0}):e.createElement("td",{key:l,"data-testid":"track-certification-cell"},e.createElement("div",{className:r.badgeCellContent},e.createElement(c,{entityRef:m,highestLevels:p,trackType:t.type??void 0})))))});const d=n(({name:t})=>{const a=i();return e.createElement("div",{className:`${a.programNameCell} ${a.programNameCellVirtualized}`},e.createElement("div",{className:a.programNameContent},e.createElement(o,{className:a.programNameTypography,variant:"h5",component:"p"},t)))});export{d as ProgramTitleCell};
2
2
  //# sourceMappingURL=ProgramTitleRow.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as n}from"@backstage/catalog-model";import{Link as d}from"@backstage/core-components";import{useRouteRef as m}from"@backstage/core-plugin-api";import{entityRouteRef as p,humanizeEntityRef as c}from"@backstage/plugin-catalog-react";import{makeStyles as f}from"@material-ui/core";import"lodash";import t from"react";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import{useEntityByRef as s}from"../../hooks/catalog/useEntityByRef.esm.js";const u=f(e=>({root:{position:"sticky",bottom:"-1px",backgroundColor:e.palette.background.default,boxShadow:`0 -1px ${e.palette.divider}`,"& td$cell, & th$cell":{border:0,padding:e.spacing(1)},"& td$cell":{backgroundColor:e.palette.background.default}},row:{boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`},cell:{verticalAlign:"top"},cellInner:{textOrientation:"mixed",writingMode:"vertical-lr",transform:"rotate(-20deg)",transformOrigin:`100% ${e.spacing(1)}px`,wordBreak:"keep-all",fontWeight:"bold",overflow:"hidden",textOverflow:"ellipsis",maxHeight:"max(15vh, 175px)"}})),g=({entityRef:e})=>{const{data:r}=s(e),a=m(p),l=u(),o=e?n(e):void 0,i=o?t.createElement(d,{to:a(o)},r!=null&&r.metadata.title?r.metadata.title:c(o,{defaultKind:o.kind})):t.createElement(t.Fragment,null);return t.createElement("div",{className:l.cell},t.createElement("div",{className:l.cellInner},i))};export{g as EntityRefCell};
1
+ import{parseEntityRef as n}from"@backstage/catalog-model";import{Link as d}from"@backstage/core-components";import{useRouteRef as m}from"@backstage/core-plugin-api";import{entityRouteRef as p,humanizeEntityRef as c}from"@backstage/plugin-catalog-react";import{makeStyles as f}from"@material-ui/core";import"lodash";import o from"react";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import{useEntityByRef as s}from"../../hooks/catalog/useEntityByRef.esm.js";const u=f(e=>({root:{position:"sticky",bottom:"-1px",backgroundColor:e.palette.background.default,boxShadow:`0 -1px ${e.palette.divider}`,"& td$cell, & th$cell":{border:0,padding:e.spacing(1)},"& td$cell":{backgroundColor:e.palette.background.default}},row:{boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`},cell:{verticalAlign:"top"},cellInner:{textOrientation:"mixed",writingMode:"vertical-lr",transform:"rotate(-20deg)",transformOrigin:`100% ${e.spacing(1)}px`,wordBreak:"keep-all",fontWeight:"bold",overflow:"hidden",textOverflow:"ellipsis",maxHeight:"max(15vh, 175px)"}})),g=({entityRef:e})=>{const{data:r}=s(e),l=m(p),a=u(),t=e?n(e):void 0,i=t?o.createElement(d,{"aria-label":`entity link to ${t.name}`,to:l(t)},r?.metadata.title?r.metadata.title:c(t,{defaultKind:t.kind})):o.createElement(o.Fragment,null);return o.createElement("div",{className:a.cell},o.createElement("div",{className:a.cellInner},i))};export{g as EntityRefCell};
2
2
  //# sourceMappingURL=ResultsTableFooter.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as h}from"@material-ui/core";import{Skeleton as l}from"@material-ui/lab";import e from"react";const k=h(t=>({table:{backgroundColor:t.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap","& th, & td":{border:`1px solid ${t.palette.divider}`,borderCollapse:"collapse"},paddingBottom:t.spacing(2)},programTitle:{padding:t.spacing(2)},checkResult:{padding:t.spacing(1.5)},title:{padding:`${t.spacing(1)}px ${t.spacing(2)}px`},header:{backgroundColor:t.palette.action.hover}})),E=({entityCount:t=25,levelCount:o=3,checkCount:m=5})=>{const a=k(),r=new Array(t).fill(void 0),i=new Array(m).fill(void 0),p=new Array(o).fill(void 0);return e.createElement("table",{className:a.table},e.createElement("tbody",null,e.createElement("tr",null,e.createElement("td",{className:a.programTitle},e.createElement(l,{width:180,height:40})),r.map((d,n)=>e.createElement("td",{key:n}))),p.map((d,n)=>e.createElement(e.Fragment,{key:n},e.createElement("tr",{className:a.header},e.createElement("td",{className:a.title},e.createElement(l,{width:180})),r.map((s,c)=>e.createElement("td",{key:c}))),i.map((s,c)=>e.createElement("tr",{key:c},e.createElement("td",{className:a.title},e.createElement(l,{width:240})),r.map((u,g)=>e.createElement("td",{key:g,className:a.checkResult},e.createElement(l,{width:18,height:18,variant:"rect"})))))))))};export{E as ResultsTableSkeleton};
1
+ import{makeStyles as h}from"@material-ui/core";import{Skeleton as l}from"@material-ui/lab";import e from"react";const E=h(t=>({table:{backgroundColor:t.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap","& th, & td":{border:`1px solid ${t.palette.divider}`,borderCollapse:"collapse"},paddingBottom:t.spacing(2)},programTitle:{padding:t.spacing(2)},checkResult:{padding:t.spacing(1.5)},title:{padding:`${t.spacing(1)}px ${t.spacing(2)}px`},header:{backgroundColor:t.palette.action.hover}})),b=({entityCount:t=25,levelCount:o=3,checkCount:i=5})=>{const a=E(),r=new Array(t).fill(void 0),m=new Array(i).fill(void 0),d=new Array(o).fill(void 0);return e.createElement("table",{"aria-label":"table loading",className:a.table},e.createElement("tbody",null,e.createElement("tr",null,e.createElement("td",{className:a.programTitle},e.createElement(l,{width:180,height:40})),r.map((p,n)=>e.createElement("td",{key:n}))),d.map((p,n)=>e.createElement(e.Fragment,{key:n},e.createElement("tr",{className:a.header},e.createElement("td",{className:a.title},e.createElement(l,{width:180})),r.map((s,c)=>e.createElement("td",{key:c}))),m.map((s,c)=>e.createElement("tr",{key:c},e.createElement("td",{className:a.title},e.createElement(l,{width:240})),r.map((k,g)=>e.createElement("td",{key:g,className:a.checkResult},e.createElement(l,{width:18,height:18,variant:"rect"})))))))))};export{b as ResultsTableSkeleton};
2
2
  //# sourceMappingURL=ResultsTableSkeleton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{countBy as k}from"lodash";import{ResultState as p}from"../../../graphql/generated/index.esm.js";import{programHeaderCell as y,levelBadgeCell as H,levelHeaderCell as u,checkTitleCell as T,checkResultCell as B,entityHeaderCell as f}from"./Cell.esm.js";import{RowHeights as n,generateNoLevelBadge as L,findLongestRefTitle as N,calculateHeightForRefTitle as b}from"./virtualizedTableUtils.esm.js";const w=(m,e,g)=>{var a;const o=[];for(const{program:i,levels:d,highestLevels:R}of m){o.push({height:n.programTitle,cells:[y(i.name),...e.map(l=>{var t;const s=l?R.find(r=>r.entityRef===l)||L(l):void 0;return H(s,(t=i.type)!=null?t:void 0)})]});for(const l of d){o.push({height:n.levelTitle,cells:[u(l.name),...e.map(t=>u(""))]});for(const{check:t,results:s}of l.checks)o.push({height:n.check,cells:[T(t.name,k(s.filter(({result:r})=>r!==p.NotApplicable),"result")),...e.map(r=>{var c,h;return B(i.id,t,r,(h=(c=s.find(C=>C.entityRef===r))==null?void 0:c.result)!=null?h:p.NotApplicable,g)})]})}}const v=N(e!=null?e:[]);return o.push({height:b((a=v.length)!=null?a:1),cells:[f(""),...e.map(i=>f(i||""))]}),o};export{w as generateRows};
1
+ import{ResultState as C}from"../../../graphql/generated/index.esm.js";import{programHeaderCell as k,levelBadgeCell as H,levelHeaderCell as c,checkTitleCell as T,checkResultCell as y,entityHeaderCell as h}from"./Cell.esm.js";import{RowHeights as i,generateNoLevelBadge as L,findLongestRefTitle as A,calculateHeightForRefTitle as S}from"./virtualizedTableUtils.esm.js";const w=(p,t,f)=>{const l=[];for(const{program:o,levels:m,highestLevels:u}of p){l.push({height:i.programTitle,cells:[k(o.name),...t.map(e=>{const r=e?u.find(s=>s.entityRef===e)||L(e):void 0;return H(r,o.type??void 0)})]});for(const e of m){l.push({height:i.levelTitle,cells:[c(e.name),...t.map(r=>c(""))]});for(const{check:r,results:s,totalCount:d,totalPassing:n}of e.checks){const R={PASSED:n,FAILED:d-n};l.push({height:i.check,cells:[T(r.name,R),...t.map(a=>y(o.id,r,a,s.find(v=>v.entityRef===a)?.result??C.NotApplicable,f))]})}}}const g=A(t??[]);return l.push({height:S(g.length??1),cells:[h(""),...t.map(o=>h(o||""))]}),l};export{w as generateRows};
2
2
  //# sourceMappingURL=Row.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as z}from"@backstage/core-plugin-api";import{entityRouteRef as T}from"@backstage/plugin-catalog-react";import{makeStyles as x,Grid as H}from"@material-ui/core";import o,{useEffect as W,useState as A,useRef as G,useLayoutEffect as L}from"react";import{VariableSizeGrid as O}from"react-window";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import{useProgramOverviewForOwner as V}from"../../../hooks/certifications/useProgramOverviewForOwner.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../../Pagination/Pagination.esm.js";import{useCursorPagination as F,CursorPagination as N}from"../../Pagination/CursorPagination.esm.js";import{ResultsTableSkeleton as Z}from"../skeletons/ResultsTableSkeleton.esm.js";import{getCellRenderer as j}from"./Cell.esm.js";import{generateRows as q}from"./Row.esm.js";import{CellWidths as f,calculateTableHeight as B,RowHeights as D}from"./virtualizedTableUtils.esm.js";const d=25,I=x(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"}})),J=({setError:e,kind:m,type:r,ownerEntityRef:l})=>{const{cursor:h,pageSize:s,...C}=F({defaultPageSize:d,label:"entitiesPerPage"}),{data:i,isLoading:w,isError:p}=V(l,{kind:m,type:r},s,h),R=I(),b=z(T);W(()=>{e==null||e(p?new Error("Error loading program overview"):void 0)},[p,e]);const[g,E]=A(0),t=G(null);if(L(()=>{i&&l&&t!=null&&t.current&&E(t.current.clientWidth)},[t,i,l]),w)return o.createElement(Z,null);if(!i||!l)return null;const{programs:k,entityRefs:n,totalCount:v,endCursor:P,prevCursor:S}=i,c=n.length>=25?n:[...n,...Array.from({length:25-n.length},()=>{})],a=q(k,c,b),y=j(a);return o.createElement("div",{ref:t},o.createElement(H,{"aria-label":`Check results for ${r!=null?r:m}`,key:`${m}|${r!=null?r:""}`,item:!0,xs:12},g>0&&o.createElement(O,{className:R.table,columnCount:c.length+1,columnWidth:u=>u===0?f.programTitle:f.checkResult,rowCount:a.length,rowHeight:u=>a[u].height,height:B(a)+D.paginationControl,width:g},y)),o.createElement(N,{...C,totalCount:v,defaultPageSize:d,endCursor:P,prevCursor:S,pageSize:s,labelRowsPerPage:"Entities per page:"}))};export{J as VirtualizedResultsTable};
1
+ import{useRouteRef as z}from"@backstage/core-plugin-api";import{entityRouteRef as T}from"@backstage/plugin-catalog-react";import{makeStyles as x,Grid as H}from"@material-ui/core";import e,{useEffect as W,useState as $,useRef as A,useLayoutEffect as G}from"react";import{VariableSizeGrid as L}from"react-window";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import{useProgramOverviewForOwner as N}from"../../../hooks/certifications/useProgramOverviewForOwner.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../../Pagination/Pagination.esm.js";import{useCursorPagination as O,CursorPagination as V}from"../../Pagination/CursorPagination.esm.js";import{ResultsTableSkeleton as B}from"../skeletons/ResultsTableSkeleton.esm.js";import{getCellRenderer as F}from"./Cell.esm.js";import{generateRows as j}from"./Row.esm.js";import{CellWidths as c,calculateTableHeight as q,RowHeights as D}from"./virtualizedTableUtils.esm.js";const d=25,I=x(r=>({table:{backgroundColor:r.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"}})),J=({setError:r,kind:n,type:m,ownerEntityRef:t})=>{const{cursor:h,pageSize:u,...C}=O({defaultPageSize:d,label:"entitiesPerPage"}),{data:o,isLoading:w,isError:p}=N(t,{kind:n,type:m},u,h),R=I(),E=z(T);W(()=>{r?.(p?new Error("Error loading program overview"):void 0)},[p,r]);const[g,b]=$(0),i=A(null);if(G(()=>{o&&t&&i?.current&&b(i.current.clientWidth)},[i,o,t]),w)return e.createElement(B,null);if(!o||!t)return null;const{programs:v,entityRefs:l,totalCount:y,endCursor:P,prevCursor:S}=o,f=l.length>=25?l:[...l,...Array.from({length:25-l.length},()=>{})],a=j(v,f,E),k=F(a);return e.createElement("div",{ref:i},e.createElement(H,{"aria-label":`Check results for ${m??n}`,key:`${n}|${m??""}`,item:!0,xs:12,style:{marginBottom:"1.5em"}},g>0&&e.createElement(L,{className:R.table,columnCount:f.length+1,columnWidth:s=>s===0?c.programTitle:c.checkResult,rowCount:a.length,rowHeight:s=>a[s].height,height:q(a)+D.paginationControl,width:g},k)),e.createElement(V,{...C,totalCount:y,defaultPageSize:d,endCursor:P,prevCursor:S,pageSize:u,labelRowsPerPage:"Entities per page:"}))};export{J as VirtualizedResultsTable};
2
2
  //# sourceMappingURL=VirtualizedResultsTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as u,useRouteRefParams as f}from"@backstage/core-plugin-api";import{useEntity as d}from"@backstage/plugin-catalog-react";import e from"react";import{Routes as L,Route as o,Navigate as p}from"react-router-dom";import{useAllCertifications as x}from"../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../api.esm.js";import"../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as I}from"../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@backstage/catalog-model";import"../hooks/useSoundcheckAlert.esm.js";import"../hooks/useConfirmationModal.esm.js";import{usePlaylists as T}from"../hooks/playlists/usePlaylists.esm.js";import{certificationPlaylistTrackCheckRouteRef as g,certificationPlaylistTrackRouteRef as k,certificationPlaylistRouteRef as R,certificationTrackRouteRef as v,certificationRouteRef as F}from"../routes.esm.js";import{EntityContent as m}from"./EntityContent/EntityContent.esm.js";const A=()=>{var t,l;const{entity:n}=d(),c=u(R),a=u(v),{isLoading:r,data:i}=T(n),{isLoading:s,data:h}=x(n);if(r||s)return null;const E=(t=i==null?void 0:i[0])==null?void 0:t.id,y=(l=h==null?void 0:h[0])==null?void 0:l.program.id;return!E&&!y?null:e.createElement(p,{to:E?c({playlistId:E}):a({trackId:y}),replace:!0})},P=()=>{var t;const{entity:l}=d(),{playlistId:n}=f(R),c=u(k),{data:a}=T(l),r=(t=a==null?void 0:a.find(i=>i.id===n))==null?void 0:t.trackIds[0];return r?e.createElement(p,{to:c({playlistId:n,trackId:r}),replace:!0}):null},C=()=>{var t,l;const{entity:n}=d(),{playlistId:c,trackId:a}=f(k),{data:r}=I(n,a),i=u(g),s=(l=(t=r==null?void 0:r.levels[0])==null?void 0:t.checks[0])==null?void 0:l.id;return s?e.createElement(p,{to:i({playlistId:c,trackId:a,checkId:s}),replace:!0}):null},$=()=>{var t,l;const{entity:n}=d(),{trackId:c}=f(v),a=u(F),{data:r}=I(n,c),i=(l=(t=r==null?void 0:r.levels[0])==null?void 0:t.checks[0])==null?void 0:l.id;return i?e.createElement(p,{to:a({trackId:c,checkId:i}),replace:!0}):null},D=()=>e.createElement(L,null,e.createElement(o,{path:g.path,element:e.createElement(m,null)}),e.createElement(o,{path:k.path,element:e.createElement(e.Fragment,null,e.createElement(m,null),e.createElement(C,null))}),e.createElement(o,{path:R.path,element:e.createElement(e.Fragment,null,e.createElement(m,null),e.createElement(P,null))}),e.createElement(o,{path:v.path,element:e.createElement(e.Fragment,null,e.createElement(m,null),e.createElement($,null))}),e.createElement(o,{path:F.path,element:e.createElement(m,null)}),e.createElement(o,{path:"/",element:e.createElement(e.Fragment,null,e.createElement(m,null),e.createElement(A,null))}));export{$ as RedirectToFirstCheck,P as RedirectToFirstPlaylistTrack,C as RedirectToFirstPlaylistTrackCheck,D as Router};
1
+ import{useRouteRef as m,useRouteRefParams as d}from"@backstage/core-plugin-api";import{useEntity as s}from"@backstage/plugin-catalog-react";import e from"react";import{Routes as $,Route as c,Navigate as u}from"react-router-dom";import{useAllCertifications as v}from"../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../api.esm.js";import"../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as h}from"../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@backstage/catalog-model";import"../hooks/useSoundcheckAlert.esm.js";import"../hooks/useConfirmationModal.esm.js";import{usePlaylists as y}from"../hooks/playlists/usePlaylists.esm.js";import{certificationPlaylistTrackCheckRouteRef as I,certificationPlaylistTrackRouteRef as E,certificationPlaylistRouteRef as f,certificationTrackRouteRef as k,certificationRouteRef as g}from"../routes.esm.js";import{EntityContent as o}from"./EntityContent/EntityContent.esm.js";const x=()=>{const{entity:r}=s(),t=m(f),a=m(k),{isLoading:n,data:l}=y(r),{isLoading:i,data:C}=v(r);if(n||i)return null;const p=l?.[0]?.id,R=C?.[0]?.program.id;return!p&&!R?null:e.createElement(u,{to:p?t({playlistId:p}):a({trackId:R}),replace:!0})},T=()=>{const{entity:r}=s(),{playlistId:t}=d(f),a=m(E),{data:n}=y(r),l=n?.find(i=>i.id===t)?.trackIds[0];return l?e.createElement(u,{to:a({playlistId:t,trackId:l}),replace:!0}):null},F=()=>{const{entity:r}=s(),{playlistId:t,trackId:a}=d(E),{data:n}=h(r,a),l=m(I),i=n?.levels[0]?.checks[0]?.id;return i?e.createElement(u,{to:l({playlistId:t,trackId:a,checkId:i}),replace:!0}):null},P=()=>{const{entity:r}=s(),{trackId:t}=d(k),a=m(g),{data:n}=h(r,t),l=n?.levels[0]?.checks[0]?.id;return l?e.createElement(u,{to:a({trackId:t,checkId:l}),replace:!0}):null},L=()=>e.createElement($,null,e.createElement(c,{path:I.path,element:e.createElement(o,null)}),e.createElement(c,{path:E.path,element:e.createElement(e.Fragment,null,e.createElement(o,null),e.createElement(F,null))}),e.createElement(c,{path:f.path,element:e.createElement(e.Fragment,null,e.createElement(o,null),e.createElement(T,null))}),e.createElement(c,{path:k.path,element:e.createElement(e.Fragment,null,e.createElement(o,null),e.createElement(P,null))}),e.createElement(c,{path:g.path,element:e.createElement(o,null)}),e.createElement(c,{path:"/",element:e.createElement(e.Fragment,null,e.createElement(o,null),e.createElement(x,null))}));export{P as RedirectToFirstCheck,T as RedirectToFirstPlaylistTrack,F as RedirectToFirstPlaylistTrackCheck,L as Router};
2
2
  //# sourceMappingURL=Router.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Page as v,Header as C,TabbedLayout as t}from"@backstage/core-components";import{useRouteRef as P,useApi as x,featureFlagsApiRef as w}from"@backstage/core-plugin-api";import{usePermission as y}from"@backstage/plugin-permission-react";import{makeStyles as T,Box as c}from"@material-ui/core";import{SpotifyLicenseBanner as S}from"@spotify/backstage-plugin-core";import{soundcheckCollectorReadPermission as I}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as A}from"react";import{useLocation as L,Routes as D,Route as r}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import{UserProvider as B}from"../../contexts/UserProvider.esm.js";import F from"../../hooks/useConfirmationModal.esm.js";import{AlertProvider as N}from"../../hooks/useSoundcheckAlert.esm.js";import{rootRouteRef as G}from"../../routes.esm.js";import{CampaignsPage as H}from"../CampaignsPage/CampaignsPage.esm.js";import{CampaignDetailsPage as O}from"../CampaignsTab/CampaignDetailsPage/CampaignDetailsPage.esm.js";import{EditCampaignView as $}from"../CampaignsTab/MutateCampaignsViews/EditCampaignView.esm.js";import{CheckPage as M}from"../CheckPage/CheckPage.esm.js";import{ChecksTab as Q}from"../ChecksTab/ChecksTab.esm.js";import{CollectorPage as U}from"../CollectorPage/CollectorPage.esm.js";import{CollectorsPage as V}from"../CollectorsPage/CollectorsPage.esm.js";import{EditTrackPage as j}from"../EditTrackPage/EditTrackPage.esm.js";import{GroupSelector as q}from"../GroupSelector/GroupSelector.esm.js";import{OverviewPageContent as z}from"../OverviewPage/OverviewPageContent.esm.js";import{SoundcheckQueryClientProvider as J}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{TechHealth as K}from"../TechHealth/TechHealth.esm.js";import{TrackPage as W}from"../TrackPage/TrackPage.esm.js";import{TracksTab as X}from"../TracksTab/TracksTab.esm.js";import{Breadcrumbs as Y}from"./Breadcrumbs.esm.js";import{generateBreadcrumbs as Z}from"./utils.esm.js";const _=T(n=>({tabContent:{margin:0,padding:0},root:{"& > *":{display:"flex",flexDirection:"column",flexGrow:1}},pageContent:{display:"flex",flexDirection:"row",flexGrow:1},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%","& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",padding:`${n.spacing(3)}px !important`}}})),ee=({title:n="Soundcheck"})=>{const o=_(),i=P(G),[s,p]=A(void 0),l=x(w),u=!l.getRegisteredFlags().find(a=>a.name==="soundcheck-enable-tech-health")||l.isActive("soundcheck-enable-tech-health"),d=!l.getRegisteredFlags().find(a=>a.name==="soundcheck-enable-collectors")||l.isActive("soundcheck-enable-collectors"),f=!l.getRegisteredFlags().find(a=>a.name==="soundcheck-enable-campaigns")||l.isActive("soundcheck-enable-campaigns"),{loading:g,allowed:h}=y({permission:I}),E=d&&!g&&h,k=u,m=L().pathname.replace(/\/+$/,""),b=m===i(),R=Z(m);return e.createElement(N,null,e.createElement(B,null,e.createElement(J,null,e.createElement(F,null,e.createElement(c,{className:o.root},e.createElement(v,{themeId:"tool"},e.createElement(S,{backend:"soundcheck",invalidLicenseMessage:"Submitted facts and check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),e.createElement(C,{title:n,subtitle:e.createElement(Y,{pages:R})},b&&e.createElement(q,{setError:p})),e.createElement(c,{className:o.pageContent},e.createElement(c,{className:o.pageLayout},e.createElement(D,null,e.createElement(r,{path:"/campaigns/:campaignId/edit",element:e.createElement($,null)}),e.createElement(r,{path:"/campaigns/:campaignId",element:e.createElement(O,null)}),e.createElement(r,{path:"/tracks/:trackId/edit",element:e.createElement(j,null)}),e.createElement(r,{path:"/tracks/:trackId",element:e.createElement(W,null)}),e.createElement(r,{path:"/checks/:checkId",element:e.createElement(M,null)}),e.createElement(r,{path:"/collectors/:collectorId",element:e.createElement(U,null)}),e.createElement(r,{path:"/*",element:e.createElement(t,null,e.createElement(t.Route,{title:"Overview",path:"/"},e.createElement("div",{className:o.tabContent},e.createElement(z,{groupSelectorError:s}))),k&&e.createElement(t.Route,{title:"Tech Health",path:"/tech-health"},e.createElement(K,null)),e.createElement(t.Route,{title:"Checks",path:"/checks"},e.createElement(Q,null)),e.createElement(t.Route,{title:"Tracks",path:"/tracks"},e.createElement(X,null)),f&&e.createElement(t.Route,{title:"Campaigns",path:"/campaigns"},e.createElement(H,null)),E&&e.createElement(t.Route,{title:"Collectors",path:"/collectors"},e.createElement(V,null)))}))))))))))};export{ee as RoutingPage};
1
+ import{Page as y,Header as I,TabbedLayout as l}from"@backstage/core-components";import{useRouteRef as w,useApi as s,configApiRef as T,featureFlagsApiRef as S}from"@backstage/core-plugin-api";import{usePermission as A}from"@backstage/plugin-permission-react";import{makeStyles as L,Box as o}from"@material-ui/core";import{SpotifyLicenseBanner as D}from"@spotify/backstage-plugin-core";import{soundcheckCollectorReadPermission as B}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as F}from"react";import{useLocation as N,Routes as G,Route as t}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import{UserProvider as H}from"../../contexts/UserProvider.esm.js";import O from"../../hooks/useConfirmationModal.esm.js";import{AlertProvider as $}from"../../hooks/useSoundcheckAlert.esm.js";import{rootRouteRef as M}from"../../routes.esm.js";import{CampaignsPage as Q}from"../CampaignsPage/CampaignsPage.esm.js";import{CampaignDetailsPage as U}from"../CampaignsTab/CampaignDetailsPage/CampaignDetailsPage.esm.js";import{EditCampaignView as V}from"../CampaignsTab/MutateCampaignsViews/EditCampaignView.esm.js";import{CheckPage as p}from"../CheckPage/CheckPage.esm.js";import{CheckInsightsPage as u}from"../CheckPage/CheckInsightsPage.esm.js";import{ChecksTab as j}from"../ChecksTab/ChecksTab.esm.js";import{CollectorPage as q}from"../CollectorPage/CollectorPage.esm.js";import{CollectorsPage as z}from"../CollectorsPage/CollectorsPage.esm.js";import{EditTrackPage as J}from"../EditTrackPage/EditTrackPage.esm.js";import{GroupSelector as K}from"../GroupSelector/GroupSelector.esm.js";import{OverviewPageContent as W}from"../OverviewPage/OverviewPageContent.esm.js";import{SoundcheckQueryClientProvider as X}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{TechHealth as Y}from"../TechHealth/TechHealth.esm.js";import{TrackPage as Z}from"../TrackPage/TrackPage.esm.js";import{TracksTab as _}from"../TracksTab/TracksTab.esm.js";import{Breadcrumbs as ee}from"./Breadcrumbs.esm.js";import{generateBreadcrumbs as te}from"./utils.esm.js";const le=L(n=>({tabContent:{margin:0,padding:0},root:{"& > *":{display:"flex",flexDirection:"column",flexGrow:1}},pageContent:{display:"flex",flexDirection:"row",flexGrow:1},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%","& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",padding:`${n.spacing(3)}px !important`}}})),re=({title:n="Soundcheck"})=>{const c=le(),d=w(M),m=s(T).getOptionalStringArray("soundcheck.flags")?.includes("enable-check-insights"),[h,f]=F(void 0),r=s(S),g=!r.getRegisteredFlags().find(a=>a.name==="soundcheck-enable-tech-health")||r.isActive("soundcheck-enable-tech-health"),E=!r.getRegisteredFlags().find(a=>a.name==="soundcheck-enable-collectors")||r.isActive("soundcheck-enable-collectors"),k=!r.getRegisteredFlags().find(a=>a.name==="soundcheck-enable-campaigns")||r.isActive("soundcheck-enable-campaigns"),{loading:b,allowed:C}=A({permission:B}),R=E&&!b&&C,v=g,i=N().pathname.replace(/\/+$/,""),P=i===d(),x=te(i);return e.createElement($,null,e.createElement(H,null,e.createElement(X,null,e.createElement(O,null,e.createElement(o,{className:c.root},e.createElement(y,{themeId:"tool"},e.createElement(D,{backend:"soundcheck",invalidLicenseMessage:"Submitted facts and check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),e.createElement(I,{title:n,subtitle:e.createElement(ee,{pages:x})},P&&e.createElement(K,{setError:f})),e.createElement(o,{className:c.pageContent},e.createElement(o,{className:c.pageLayout},e.createElement(G,null,e.createElement(t,{path:"/campaigns/:campaignId/edit",element:e.createElement(V,null)}),e.createElement(t,{path:"/campaigns/:campaignId",element:e.createElement(U,null)}),e.createElement(t,{path:"/tracks/:trackId/edit",element:e.createElement(J,null)}),e.createElement(t,{path:"/tracks/:trackId",element:e.createElement(Z,null)}),m&&e.createElement(t,{path:"/tracks/:trackId/checks/:checkId",element:e.createElement(u,null)}),m?e.createElement(t,{path:"/checks/:checkId",element:e.createElement(u,null)}):e.createElement(t,{path:"/checks/:checkId",element:e.createElement(p,null)}),e.createElement(t,{path:"/checks/:checkId/edit",element:e.createElement(p,null)}),e.createElement(t,{path:"/collectors/:collectorId",element:e.createElement(q,null)}),e.createElement(t,{path:"/*",element:e.createElement(l,null,e.createElement(l.Route,{title:"Overview",path:"/"},e.createElement("div",{className:c.tabContent},e.createElement(W,{groupSelectorError:h}))),v&&e.createElement(l.Route,{title:"Tech Health",path:"/tech-health"},e.createElement(Y,null)),e.createElement(l.Route,{title:"Checks",path:"/checks"},e.createElement(j,null)),e.createElement(l.Route,{title:"Tracks",path:"/tracks"},e.createElement(_,null)),k&&e.createElement(l.Route,{title:"Campaigns",path:"/campaigns"},e.createElement(Q,null)),R&&e.createElement(l.Route,{title:"Collectors",path:"/collectors"},e.createElement(z,null)))}))))))))))};export{re as RoutingPage};
2
2
  //# sourceMappingURL=RoutingPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as u,TextField as h,InputAdornment as o,IconButton as f}from"@material-ui/core";import g from"@material-ui/icons/Close";import E from"@material-ui/icons/Search";import e,{useRef as x,useEffect as B}from"react";const I=u(t=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"},searchBar:{color:t.palette.text.primary,paddingLeft:t.spacing(1)},iconWrapper:{marginLeft:0}})),N=({searchTerm:t,setSearchTerm:c,showClear:l=!0,placeholder:s="Search...",disabled:a,...i})=>{const r=I(),n=x(null);B(()=>{!a&&n.current&&n.current.focus()},[a]);const m=d=>{c(d.target.value)},p=()=>{c("")};return e.createElement(h,{...i,disabled:a,inputRef:n,fullWidth:!0,placeholder:s,value:t,onChange:m,InputProps:{className:r.searchBar,startAdornment:e.createElement(o,{className:r.iconWrapper,position:"start"},e.createElement(E,{className:r.searchIcon,"data-testid":"search-icon"})),endAdornment:l&&t?e.createElement(o,{position:"end"},e.createElement(f,{edge:"end",onClick:p,className:r.clearButton},e.createElement(g,null))):null}})};export{N as SearchBar};
1
+ import{makeStyles as u,TextField as h,InputAdornment as o,IconButton as f}from"@material-ui/core";import g from"@material-ui/icons/Close";import E from"@material-ui/icons/Search";import e,{useRef as x,useEffect as B}from"react";const I=u(t=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"},searchBar:{color:t.palette.text.primary,paddingLeft:t.spacing(1)},iconWrapper:{marginLeft:0}})),N=({searchTerm:t,setSearchTerm:c,showClear:l=!0,placeholder:s="Search...",disabled:a,...m})=>{const r=I(),n=x(null);B(()=>{!a&&n.current&&n.current.focus()},[a]);const i=d=>{c(d.target.value)},p=()=>{c("")};return e.createElement(h,{...m,disabled:a,inputRef:n,fullWidth:!0,placeholder:s,value:t,onChange:i,InputProps:{className:r.searchBar,startAdornment:e.createElement(o,{className:r.iconWrapper,position:"start"},e.createElement(E,{className:r.searchIcon,"data-testid":"search-icon"})),endAdornment:l&&t?e.createElement(o,{position:"end"},e.createElement(f,{edge:"end",onClick:p,className:r.clearButton},e.createElement(g,null))):null}})};export{N as SearchBar};
2
2
  //# sourceMappingURL=SearchBar.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as v}from"@backstage/catalog-model";import{makeStyles as N,Grid as b,InputLabel as r,NativeSelect as n}from"@material-ui/core";import e from"react";import{CampaignStatus as c}from"../CampaignsTab/CampaignTypes.esm.js";import{SearchBar as F}from"../SearchBar/SearchBar.esm.js";const y=N(t=>({searchbar:{maxWidth:"275px","& input":{paddingTop:t.spacing(1),paddingBottom:t.spacing(1)}},filters:{display:"flex",alignItems:"center",padding:0},dropdownFilters:{margin:"0 15px",alignItems:"center"},selectHolder:{minWidth:105,"& select":{paddingTop:t.spacing(1),paddingBottom:t.spacing(1)}},label:{marginBottom:t.spacing(.5)}})),S=({searchPlaceholder:t,isLoading:o,searchTerm:d,setSearchTerm:p,filterAlpha:h,handleAlphabeticalFilterChange:g,filterOwner:u,handleOwnerFilterChange:E,filterStatus:s,handleStatusFilterChange:i,owners:m})=>{const a=y();return e.createElement(b,{item:!0,xs:10,className:a.filters},e.createElement("div",null,e.createElement(r,{className:a.label,htmlFor:"search-bar"},t||"Search"),e.createElement(F,{searchTerm:d,disabled:o,setSearchTerm:p,placeholder:"Name",variant:"outlined",size:"small",className:a.searchbar,id:"search-bar"})),e.createElement("div",{className:a.dropdownFilters},e.createElement(r,{className:a.label,htmlFor:"sort-by"},"Sort By"),e.createElement(n,{id:"sort-by",className:a.selectHolder,value:h,onChange:g},e.createElement("option",{value:"default"},"Default"),e.createElement("option",{value:"ascending"},"Name A-Z"),e.createElement("option",{value:"descending"},"Name Z-A"))),e.createElement("div",{className:a.dropdownFilters},e.createElement(r,{className:a.label,htmlFor:"filter-owner"},"Filter By Owner"),e.createElement(n,{id:"filter-owner",className:a.selectHolder,value:u,onChange:E},e.createElement("option",{key:"all",value:"all"},"All"),m==null?void 0:m.map((l,f)=>e.createElement("option",{key:l+f,value:l},v(l).name)))),s&&i&&e.createElement("div",{className:a.dropdownFilters},e.createElement(r,{className:a.label,htmlFor:"filter-status"},"Filter By Status"),e.createElement(n,{id:"filter-status",className:a.selectHolder,value:s,onChange:i},Object.keys(c).map(l=>e.createElement(e.Fragment,{key:l},e.createElement("option",{value:l},c[l]))))))};export{S as SearchFilters};
1
+ import{parseEntityRef as N}from"@backstage/catalog-model";import{makeStyles as b,Grid as v,InputLabel as r,NativeSelect as n}from"@material-ui/core";import e from"react";import{CampaignStatus as m}from"../CampaignsTab/CampaignTypes.esm.js";import{SearchBar as F}from"../SearchBar/SearchBar.esm.js";const y=b(t=>({searchbar:{maxWidth:"275px","& input":{paddingTop:t.spacing(1),paddingBottom:t.spacing(1)}},filters:{display:"flex",alignItems:"center",padding:0},dropdownFilters:{margin:"0 15px",alignItems:"center"},selectHolder:{minWidth:105,"& select":{paddingTop:t.spacing(1),paddingBottom:t.spacing(1)}},label:{marginBottom:t.spacing(.5)}})),S=({searchPlaceholder:t,isLoading:c,searchTerm:o,setSearchTerm:d,filterAlpha:p,handleAlphabeticalFilterChange:h,filterOwner:g,handleOwnerFilterChange:u,filterStatus:s,handleStatusFilterChange:i,owners:E})=>{const a=y();return e.createElement(v,{item:!0,xs:10,className:a.filters},e.createElement("div",null,e.createElement(r,{className:a.label,htmlFor:"search-bar"},t||"Search"),e.createElement(F,{searchTerm:o,disabled:c,setSearchTerm:d,placeholder:"Name",variant:"outlined",size:"small",className:a.searchbar,id:"search-bar"})),e.createElement("div",{className:a.dropdownFilters},e.createElement(r,{className:a.label,htmlFor:"sort-by"},"Sort By"),e.createElement(n,{id:"sort-by",className:a.selectHolder,value:p,onChange:h},e.createElement("option",{value:"default"},"Default"),e.createElement("option",{value:"ascending"},"Name A-Z"),e.createElement("option",{value:"descending"},"Name Z-A"))),e.createElement("div",{className:a.dropdownFilters},e.createElement(r,{className:a.label,htmlFor:"filter-owner"},"Filter By Owner"),e.createElement(n,{id:"filter-owner",className:a.selectHolder,value:g,onChange:u},e.createElement("option",{key:"all",value:"all"},"All"),E?.map((l,f)=>e.createElement("option",{key:l+f,value:l},N(l).name)))),s&&i&&e.createElement("div",{className:a.dropdownFilters},e.createElement(r,{className:a.label,htmlFor:"filter-status"},"Filter By Status"),e.createElement(n,{id:"filter-status",className:a.selectHolder,value:s,onChange:i},Object.keys(m).map(l=>e.createElement(e.Fragment,{key:l},e.createElement("option",{value:l},m[l]))))))};export{S as SearchFilters};
2
2
  //# sourceMappingURL=SearchFilters.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as x}from"@backstage/core-components";import{withStyles as g,Card as u,makeStyles as w,CardHeader as C,CardContent as k,Divider as v,CardActions as f,Button as E}from"@material-ui/core";import{createStyles as N}from"@material-ui/core/styles";import t from"react";import{SummaryCardActionsMenu as S}from"./SummaryCardActionsMenu.esm.js";const p=g(e=>N({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative",justifyContent:"start"}}))(u),h=w(e=>({root:{position:"relative",height:"100%"},summaryName:{fontSize:e.typography.pxToRem(24),color:e.palette.text.primary,maxHeight:"250px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:5,WebkitBoxOrient:"vertical","-webkit-line-clamp":5,"-webkit-box-orient":"vertical",wordBreak:"break-word"},summaryDescription:{color:e.palette.text.primary,padding:0,maxHeight:"175px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:5,WebkitBoxOrient:"vertical",wordBreak:"break-word"},card:{paddingTop:e.spacing(1),paddingBottom:0,paddingLeft:e.spacing(1),paddingRight:e.spacing(1),borderColor:e.palette.divider},cardContent:{height:"100%"},actionArea:{padding:e.spacing(1,2,1,4)},button:{minWidth:0,color:e.palette.text.primary,"&:disabled":{color:e.palette.text.disabled,opacity:1}}})),A=({title:e,description:o,viewLabel:n="View",editLabel:d="Edit",children:y,handleDelete:m,handleArchive:c,handleEdit:a,handleView:r,handleExport:s,viewIsPrimaryAction:b})=>{const i=h(),l=!b&&!!a;return t.createElement(p,{className:i.card,"data-testid":e},t.createElement(C,{title:e,titleTypographyProps:{className:i.summaryName},subheader:t.createElement(x,{className:i.summaryDescription,content:o!=null?o:""}),action:(!!m||!!c||!!a||!!s)&&t.createElement(S,{handleView:r,handleDelete:m,handleArchive:c,handleEdit:a,handleExport:s})}),t.createElement(k,{className:i.cardContent},y),(r||a)&&t.createElement("div",null,t.createElement(v,null),t.createElement(f,{className:i.actionArea},t.createElement(E,{"aria-label":l?d:n,"data-testid":`${e}-button`,size:"medium",color:"primary",role:"link",onClick:l?a:r,disabled:!r&&!a,className:i.button},l?d:n))))};export{p as Card,A as SummaryCard,h as useSummaryCardStyles};
1
+ import{MarkdownContent as x}from"@backstage/core-components";import{withStyles as g,Card as u,makeStyles as w,CardHeader as C,CardContent as k,Divider as v,CardActions as f,Button as E}from"@material-ui/core";import{createStyles as N}from"@material-ui/core/styles";import t from"react";import{SummaryCardActionsMenu as S}from"./SummaryCardActionsMenu.esm.js";const s=g(e=>N({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative",justifyContent:"start"}}))(u),p=w(e=>({root:{position:"relative",height:"100%"},summaryName:{fontSize:e.typography.pxToRem(24),color:e.palette.text.primary,maxHeight:"250px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:5,WebkitBoxOrient:"vertical","-webkit-line-clamp":5,"-webkit-box-orient":"vertical",wordBreak:"break-word"},summaryDescription:{color:e.palette.text.primary,padding:0,maxHeight:"175px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:5,WebkitBoxOrient:"vertical",wordBreak:"break-word"},card:{paddingTop:e.spacing(1),paddingBottom:0,paddingLeft:e.spacing(1),paddingRight:e.spacing(1),borderColor:e.palette.divider},cardContent:{height:"100%"},actionArea:{padding:e.spacing(1,2,1,4)},button:{minWidth:0,color:e.palette.text.primary,"&:disabled":{color:e.palette.text.disabled,opacity:1}}})),A=({title:e,description:h,viewLabel:l="View",editLabel:n="Edit",children:y,handleDelete:d,handleArchive:m,handleEdit:a,handleView:r,handleExport:c,viewIsPrimaryAction:b})=>{const i=p(),o=!b&&!!a;return t.createElement(s,{className:i.card,"data-testid":e},t.createElement(C,{title:e,titleTypographyProps:{className:i.summaryName},subheader:t.createElement(x,{className:i.summaryDescription,content:h??""}),action:(!!d||!!m||!!a||!!c)&&t.createElement(S,{handleView:r,handleDelete:d,handleArchive:m,handleEdit:a,handleExport:c})}),t.createElement(k,{className:i.cardContent},y),(r||a)&&t.createElement("div",null,t.createElement(v,null),t.createElement(f,{className:i.actionArea},t.createElement(E,{"aria-label":o?n:l,"data-testid":`${e}-button`,size:"medium",color:"primary",role:"link",onClick:o?a:r,disabled:!r&&!a,className:i.button},o?n:l))))};export{s as Card,A as SummaryCard,p as useSummaryCardStyles};
2
2
  //# sourceMappingURL=SummaryCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as w,alpha as z,Box as i,Typography as O,Tooltip as N,Icon as T,IconButton as D,Chip as j,TextField as A,FormControlLabel as B,Checkbox as L}from"@material-ui/core";import $ from"@material-ui/icons/ArrowDropDown";import K from"@material-ui/icons/ArrowDropUp";import Q from"@material-ui/icons/CheckBox";import V from"@material-ui/icons/CheckBoxOutlineBlank";import W from"@material-ui/icons/HelpOutline";import{Autocomplete as q}from"@material-ui/lab";import{createFilterOptions as M}from"@material-ui/lab/Autocomplete";import{remove as X}from"lodash";import l,{useState as p,useEffect as G,useCallback as b,useMemo as H}from"react";import J from"../../Expand/Expand.esm.js";import{useFilterContext as P}from"./FilterProvider.esm.js";import{Facet as C,facetTooltips as x}from"./types.esm.js";const R=50,U=w(({palette:t,spacing:n})=>({header:{display:"flex",alignItems:"left",flexDirection:"row",cursor:"pointer",justifyContent:"space-between"},label:{display:"flex",alignItems:"center"},tooltipIcon:{display:"flex",alignItems:"center",justifyContent:"center",color:t.text.primary},chip:{maxWidth:"45%",textOverflow:"ellipsis",margin:n(.5,.5,.5,0),overflow:"hidden","& svg":{color:z(t.common.white,.7),"&:hover":{color:t.common.white}},backgroundColor:t.action.disabledBackground},autoCompleteInput:{"&& input":{margin:n(1,0,0,0),padding:`${n(0,1,1,1)} !important`,width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},"&& button":{"&:hover":{backgroundColor:"transparent"}}},autoComplete:{margin:n(.5,0,1,0)}})),Y=({facet:t})=>{const n=U(),{getFacetOptions:k,getFacetOptionLabel:c,getSelectedFacetValues:o,setSelectedFacetValues:u}=P(),[f,d]=p(!1),[v,h]=p(!1),[I,E]=p("");G(()=>{var e;d(!!((e=o(t))!=null&&e.length))},[o,t]);const g=()=>{d(e=>!e)},y=e=>{(e.key==="Enter"||e.key===" ")&&g()},m=b(e=>{if(t===C.Entity&&e[e.length-1]){const a=e[e.length-1];if(!a.includes(":")||!a.includes("/")){h(!0),E("Custom entities require a valid kind and namespace such as: component:default/entity");return}}h(!1),E(""),u(t,e)},[t,u]),r=H(()=>o(t),[t,o]),F=b(e=>{const a=[...r];X(a,s=>s===e),m(a)},[r,m]),S=M({matchFrom:"any",limit:R});return l.createElement(i,null,l.createElement("div",{className:n.header,onClick:g,onKeyDown:y,role:"button",tabIndex:0},l.createElement("div",{className:n.label},l.createElement(i,null,l.createElement(O,{variant:"subtitle2"},t)),x[t]&&l.createElement(N,{title:x[t],className:n.tooltipIcon},l.createElement(T,null,l.createElement(W,{style:{fontSize:16,verticalAlign:"text-top"}})))),l.createElement(i,null,l.createElement(D,{size:"small",onKeyDown:y},f?l.createElement(K,{fontSize:"small"}):l.createElement($,{fontSize:"small"})))),l.createElement(J,{visible:f},l.createElement(i,null,r.map(e=>l.createElement(j,{key:e,label:c(t,e),size:"small",className:n.chip,onDelete:()=>F(e),clickable:!1}))),l.createElement(q,{className:n.autoComplete,disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:t===C.Entity,popupIcon:null,renderTags:()=>null,filterOptions:S,options:k(t),getOptionLabel:e=>c(t,e),value:r,onChange:(e,a)=>m(a),renderInput:e=>l.createElement(A,{...e,className:n.autoCompleteInput,placeholder:`Search for ${t}`,error:v,helperText:I}),renderOption:(e,{selected:a})=>l.createElement(B,{onClick:s=>s.preventDefault(),control:l.createElement(L,{icon:l.createElement(V,{fontSize:"small"}),checkedIcon:l.createElement(Q,{fontSize:"small"}),checked:a}),label:c(t,e)})})))};export{Y as FacetFilter};
1
+ import{makeStyles as w,alpha as O,Box as i,Typography as z,Tooltip as N,Icon as T,IconButton as D,Chip as j,TextField as B,FormControlLabel as L,Checkbox as $}from"@material-ui/core";import A from"@material-ui/icons/ArrowDropDown";import K from"@material-ui/icons/ArrowDropUp";import Q from"@material-ui/icons/CheckBox";import V from"@material-ui/icons/CheckBoxOutlineBlank";import W from"@material-ui/icons/HelpOutline";import{Autocomplete as q}from"@material-ui/lab";import{createFilterOptions as M}from"@material-ui/lab/Autocomplete";import{remove as X}from"lodash";import l,{useState as p,useEffect as G,useCallback as b,useMemo as H}from"react";import J from"../../Expand/Expand.esm.js";import{useFilterContext as P}from"./FilterProvider.esm.js";import{Facet as C,facetTooltips as x}from"./types.esm.js";const R=50,U=w(({palette:t,spacing:n})=>({header:{display:"flex",alignItems:"left",flexDirection:"row",cursor:"pointer",justifyContent:"space-between"},label:{display:"flex",alignItems:"center"},tooltipIcon:{display:"flex",alignItems:"center",justifyContent:"center",color:t.text.primary},chip:{maxWidth:"45%",textOverflow:"ellipsis",margin:n(.5,.5,.5,0),overflow:"hidden","& svg":{color:O(t.common.white,.7),"&:hover":{color:t.common.white}},backgroundColor:t.action.disabledBackground},autoCompleteInput:{"&& input":{margin:n(1,0,0,0),padding:`${n(0,1,1,1)} !important`,width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},"&& button":{"&:hover":{backgroundColor:"transparent"}}},autoComplete:{margin:n(.5,0,1,0)}})),Y=({facet:t})=>{const n=U(),{getFacetOptions:k,getFacetOptionLabel:c,getSelectedFacetValues:a,setSelectedFacetValues:u}=P(),[f,d]=p(!1),[v,h]=p(!1),[I,E]=p("");G(()=>{d(!!a(t)?.length)},[a,t]);const g=()=>{d(e=>!e)},y=e=>{(e.key==="Enter"||e.key===" ")&&g()},m=b(e=>{if(t===C.Entity&&e[e.length-1]){const o=e[e.length-1];if(!o.includes(":")||!o.includes("/")){h(!0),E("Custom entities require a valid kind and namespace such as: component:default/entity");return}}h(!1),E(""),u(t,e)},[t,u]),r=H(()=>a(t),[t,a]),F=b(e=>{const o=[...r];X(o,s=>s===e),m(o)},[r,m]),S=M({matchFrom:"any",limit:R});return l.createElement(i,null,l.createElement("div",{className:n.header,onClick:g,onKeyDown:y,role:"button",tabIndex:0},l.createElement("div",{className:n.label},l.createElement(i,null,l.createElement(z,{variant:"subtitle2"},t)),x[t]&&l.createElement(N,{title:x[t],className:n.tooltipIcon},l.createElement(T,null,l.createElement(W,{style:{fontSize:16,verticalAlign:"text-top"}})))),l.createElement(i,null,l.createElement(D,{size:"small",onKeyDown:y},f?l.createElement(K,{fontSize:"small"}):l.createElement(A,{fontSize:"small"})))),l.createElement(J,{visible:f},l.createElement(i,null,r.map(e=>l.createElement(j,{key:e,label:c(t,e),size:"small",className:n.chip,onDelete:()=>F(e),clickable:!1}))),l.createElement(q,{className:n.autoComplete,disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:t===C.Entity,popupIcon:null,renderTags:()=>null,filterOptions:S,options:k(t),getOptionLabel:e=>c(t,e),value:r,onChange:(e,o)=>m(o),renderInput:e=>l.createElement(B,{...e,className:n.autoCompleteInput,placeholder:`Search for ${t}`,error:v,helperText:I}),renderOption:(e,{selected:o})=>l.createElement(L,{onClick:s=>s.preventDefault(),control:l.createElement($,{icon:l.createElement(V,{fontSize:"small"}),checkedIcon:l.createElement(Q,{fontSize:"small"}),checked:o}),label:c(t,e)})})))};export{Y as FacetFilter};
2
2
  //# sourceMappingURL=FacetFilter.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as E}from"@backstage/catalog-model";import{humanizeEntityRef as U}from"@backstage/plugin-catalog-react";import{createFilterOptions as S}from"@material-ui/lab/Autocomplete";import F,{createContext as h,useCallback as x,useMemo as R,useContext as k}from"react";import A from"react-use/lib/useLocalStorage";import{useLoggedInUser as C}from"../../../contexts/UserProvider.esm.js";import{useFacetFilters as N}from"../../../hooks/facets/useFacetFilters.esm.js";import{TechHealthLoading as V}from"../Loading/TechHealthLoading.esm.js";import{useFacetOptions as w}from"./useFacetOptions.esm.js";import{emptyFacetFilters as I,DEFAULT_NUMBER_OF_DAYS as T,mapFacetFiltersToFilter as _}from"./utils.esm.js";const f=h({facetOptionsLoading:!1,getFacetOptions:()=>[],getFacetOptionLabel:()=>"",facetFilters:I(),clearAllFilters:()=>{},getSelectedFacetValues:()=>[],setSelectedFacetValues:()=>{},numberOfDays:T,setNumberOfDays:()=>{},filter:{},loggedInUser:"Unknown"}),M=()=>k(f),p=d=>{const{userEntityRef:s,loading:g}=C(),{isLoading:n,facetOptions:r}=w(),[c]=A("soundcheck.overview.groupRef",null),{facetFilters:a,numberOfDays:o,setFacetFilter:O,getFacetFilter:y,clearFacetFilters:b,setNumberOfDays:v}=N(r,c!=null?c:void 0),L=x(e=>r[e].map(({value:t})=>t),[r]),m=R(()=>_(r,a,o,s),[a,r,o,s]),D={facetOptionsLoading:n,getFacetOptions:L,getFacetOptionLabel:(e,t)=>{var u;let l=(u=r[e].find(i=>i.value===t))==null?void 0:u.label;if(!l)try{const i=E(t);l=U(i)}catch{}return S(),l!=null?l:t},facetFilters:a,clearAllFilters:b,getSelectedFacetValues:e=>y(e),setSelectedFacetValues:(e,t)=>{O(e,t)},numberOfDays:o,setNumberOfDays:v,filter:m!=null?m:{},loggedInUser:"Unknown"};return n||g?F.createElement(V,null):F.createElement(f.Provider,{...d,value:D})};export{p as FilterProvider,p as default,M as useFilterContext};
1
+ import{parseEntityRef as L}from"@backstage/catalog-model";import{humanizeEntityRef as E}from"@backstage/plugin-catalog-react";import{createFilterOptions as U}from"@material-ui/lab/Autocomplete";import c,{createContext as h,useCallback as x,useMemo as R,useContext as S}from"react";import k from"react-use/lib/useLocalStorage";import{useLoggedInUser as A}from"../../../contexts/UserProvider.esm.js";import{useFacetFilters as C}from"../../../hooks/facets/useFacetFilters.esm.js";import{TechHealthLoading as N}from"../Loading/TechHealthLoading.esm.js";import{useFacetOptions as V}from"./useFacetOptions.esm.js";import{emptyFacetFilters as w,DEFAULT_NUMBER_OF_DAYS as I,mapFacetFiltersToFilter as T}from"./utils.esm.js";const m=h({facetOptionsLoading:!1,getFacetOptions:()=>[],getFacetOptionLabel:()=>"",facetFilters:w(),clearAllFilters:()=>{},getSelectedFacetValues:()=>[],setSelectedFacetValues:()=>{},numberOfDays:I,setNumberOfDays:()=>{},filter:{},loggedInUser:"Unknown"}),_=()=>S(m),F=f=>{const{userEntityRef:s,loading:u}=A(),{isLoading:n,facetOptions:r}=V(),[p]=k("soundcheck.overview.groupRef",null),{facetFilters:a,numberOfDays:o,setFacetFilter:g,getFacetFilter:d,clearFacetFilters:O,setNumberOfDays:y}=C(r,p??void 0),b=x(e=>r[e].map(({value:t})=>t),[r]),v=R(()=>T(r,a,o,s),[a,r,o,s]),D={facetOptionsLoading:n,getFacetOptions:b,getFacetOptionLabel:(e,t)=>{let l=r[e].find(i=>i.value===t)?.label;if(!l)try{const i=L(t);l=E(i)}catch{}return U(),l??t},facetFilters:a,clearAllFilters:O,getSelectedFacetValues:e=>d(e),setSelectedFacetValues:(e,t)=>{g(e,t)},numberOfDays:o,setNumberOfDays:y,filter:v??{},loggedInUser:"Unknown"};return n||u?c.createElement(N,null):c.createElement(m.Provider,{...f,value:D})};export{F as FilterProvider,F as default,_ as useFilterContext};
2
2
  //# sourceMappingURL=FilterProvider.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as c,Box as n}from"@material-ui/core";import e from"react";import{useLocation as s}from"react-router-dom";import{FacetFilter as p}from"./FacetFilter.esm.js";import{FiltersHeader as f}from"./FiltersHeader.esm.js";import{FiltersSection as m}from"./FiltersSection.esm.js";import{NumberOfDaysFilter as u}from"./NumberOfDaysFilter.esm.js";import{Facet as a}from"./types.esm.js";const d=c(r=>({filters:{maxWidth:"300px",width:"100%",backgroundColor:r.palette.background.paper}})),E=()=>{const r=d(),o=s().pathname.includes("campaigns");let l=Object.values(a);if(o){const t=[a.Track,a.Level];l=l.filter(i=>!t.includes(i))}return e.createElement(n,{className:r.filters},e.createElement(m,{header:!0},e.createElement(f,null)),e.createElement(m,null,e.createElement(u,null)),l.map(t=>e.createElement(m,{key:t,size:"small"},e.createElement(p,{facet:t}))))};export{E as Filters};
1
+ import{makeStyles as c,Box as n}from"@material-ui/core";import e from"react";import{useLocation as s}from"react-router-dom";import{FacetFilter as p}from"./FacetFilter.esm.js";import{FiltersHeader as f}from"./FiltersHeader.esm.js";import{FiltersSection as m}from"./FiltersSection.esm.js";import{NumberOfDaysFilter as u}from"./NumberOfDaysFilter.esm.js";import{Facet as a}from"./types.esm.js";const d=c(r=>({filters:{maxWidth:"300px",width:"100%",backgroundColor:r.palette.background.paper}})),E=()=>{const r=d(),o=s().pathname.includes("campaigns");let l=Object.values(a);if(o){const t=[a.Track,a.Level];l=l.filter(i=>!t.includes(i))}return e.createElement(n,{className:r.filters},e.createElement(m,{isHeader:!0},e.createElement(f,null)),e.createElement(m,null,e.createElement(u,null)),l.map(t=>e.createElement(m,{key:t,size:"small"},e.createElement(p,{facet:t}))))};export{E as Filters};
2
2
  //# sourceMappingURL=Filters.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as i,Box as m}from"@material-ui/core";import s from"react";const a=i(({palette:e,spacing:o})=>({root:{padding:({size:t,header:r})=>r?0:t==="small"?o(1.5,2):o(2),borderBottom:`1px solid ${e.divider}`}}));function n(e){const o=a(e);return s.createElement(m,{...e,className:o.root})}export{n as FiltersSection};
1
+ import{makeStyles as i,Box as s}from"@material-ui/core";import a from"react";const d=i(({palette:o,spacing:e})=>({root:{padding:({size:r,isHeader:t})=>t?0:r==="small"?e(1.5,2):e(2),borderBottom:`1px solid ${o.divider}`}}));function m({children:o,size:e,isHeader:r}){const t=d({size:e,isHeader:r});return a.createElement(s,{className:t.root},o)}export{m as FiltersSection};
2
2
  //# sourceMappingURL=FiltersSection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as A}from"@backstage/catalog-model";import C from"lodash";import{useState as S,useMemo as c,useEffect as x}from"react";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as B}from"../../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import{useAllGroups as U}from"../../../hooks/groups/useAllGroups.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as $}from"../../../hooks/checks/useGetChecks.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as q}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetEntityFacets as v}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import{useEntityRefsForUser as I}from"../../../hooks/entities/useEntityRefsForUser.esm.js";import{Facet as m}from"./types.esm.js";const K=(r,o)=>{var i,e,a,u;const p=[];for(const n of r)p.push({label:(i=n.name)!=null?i:n.id,value:n.id});const d=r.map(n=>n.id);for(const n of o)for(const f of(e=n.levels)!=null?e:[])for(const l of(a=f.checks)!=null?a:[])d.includes(l.id)||(d.push(l.id),p.push({label:(u=l.name)!=null?u:l.id,value:l.id}));return p},M=r=>{var o;const i=[];for(const e of r!=null?r:[])for(const a of(o=e.levels)!=null?o:[])i.includes(a.ordinal)||i.push(a.ordinal);return i.sort().map(e=>({label:`Level ${e}`,value:`${e}`}))},Q=(r,o)=>{const i=new Set(r.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef));return Array.from(i).map(e=>{var a;return{label:(a=o[e])!=null?a:e,value:e}})},y=r=>(r!=null?r:[]).map(o=>({label:o,value:o})),V=()=>{const[r,o]=S(!1),{userEntityRef:i}=B(),{data:e,isLoading:a}=I(i),{data:u,isLoading:p}=U(),d=c(()=>C.mapValues(C.keyBy(u!=null?u:[],"ref"),s=>s.name),[u]),{data:n,isLoading:f}=q({first:100}),l=c(()=>{var s;return(s=n==null?void 0:n.edges.map(t=>t.node))!=null?s:[]},[n]),{data:L,isLoading:E}=$({first:100}),g=c(()=>{var s;return(s=L==null?void 0:L.edges.map(t=>t.node))!=null?s:[]},[L]),{data:b,isLoading:h}=v("kind"),{data:k,isLoading:w}=v("spec.lifecycle"),{data:F,isLoading:G}=v("spec.type"),{data:O,isLoading:R}=v("spec.system"),T=c(()=>{var s;return{[m.Kind]:y(b),[m.Lifecycle]:y(k),[m.Type]:y(F),[m.System]:y(O),[m.Entity]:e.map(t=>({label:A(t).name,value:t})),[m.EntityOwner]:(s=u==null?void 0:u.map(t=>({label:t.name,value:t.ref})))!=null?s:[],[m.Track]:l.map(t=>({label:t.name,value:t.id})),[m.Level]:M(l),[m.Check]:K(g,l),[m.CheckOwner]:Q(g,d)}},[b,k,F,e,u,d,l,g,O]);return x(()=>{o(h||w||G||a||p||f||E||R)},[h,w,G,a,p,f,E,R]),{facetOptions:T,isLoading:r}};export{V as useFacetOptions};
1
+ import{parseEntityRef as T}from"@backstage/catalog-model";import C from"lodash";import{useState as A,useMemo as l,useEffect as S}from"react";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as $}from"../../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import{useAllGroups as x}from"../../../hooks/groups/useAllGroups.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as U}from"../../../hooks/checks/useGetChecks.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as q}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetEntityFacets as f}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import{useEntityRefsForUser as B}from"../../../hooks/entities/useEntityRefsForUser.esm.js";import{Facet as s}from"./types.esm.js";const I=(i,o)=>{const a=[];for(const r of i)a.push({label:r.name??r.id,value:r.id});const e=i.map(r=>r.id);for(const r of o)for(const m of r.levels??[])for(const n of m.checks??[])e.includes(n.id)||(e.push(n.id),a.push({label:n.name??n.id,value:n.id}));return a},K=i=>{const o=[];for(const a of i??[])for(const e of a.levels??[])o.includes(e.ordinal)||o.push(e.ordinal);return o.sort().map(a=>({label:`Level ${a}`,value:`${a}`}))},M=(i,o)=>{const a=new Set(i.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef));return Array.from(a).map(e=>({label:o[e]??e,value:e}))},d=i=>(i??[]).map(o=>({label:o,value:o})),V=()=>{const[i,o]=A(!1),{userEntityRef:a}=$(),{data:e,isLoading:r}=B(a),{data:m,isLoading:n}=x(),u=l(()=>C.mapValues(C.keyBy(m??[],"ref"),t=>t.name),[m]),{data:y,isLoading:g}=q({first:100}),p=l(()=>y?.edges.map(t=>t.node)??[],[y]),{data:L,isLoading:v}=U({first:100}),c=l(()=>L?.edges.map(t=>t.node)??[],[L]),{data:E,isLoading:b}=f("kind"),{data:h,isLoading:k}=f("spec.lifecycle"),{data:R,isLoading:w}=f("spec.type"),{data:F,isLoading:O}=f("spec.system"),G=l(()=>({[s.Kind]:d(E),[s.Lifecycle]:d(h),[s.Type]:d(R),[s.System]:d(F),[s.Entity]:e.map(t=>({label:T(t).name,value:t})),[s.EntityOwner]:m?.map(t=>({label:t.name,value:t.ref}))??[],[s.Track]:p.map(t=>({label:t.name,value:t.id})),[s.Level]:K(p),[s.Check]:I(c,p),[s.CheckOwner]:M(c,u)}),[E,h,R,e,m,u,p,c,F]);return S(()=>{o(b||k||w||r||n||g||v||O)},[b,k,w,r,n,g,v,O]),{facetOptions:G,isLoading:i}};export{V as useFacetOptions};
2
2
  //# sourceMappingURL=useFacetOptions.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Facet as e}from"./types.esm.js";const a=30,y=2,o=90,m=c=>Object.fromEntries(Object.values(e).map(n=>c&&n===e.EntityOwner?[n,[c]]:[n,[]])),p=(c,n,r)=>{if(n.length)return n.map(s=>({trackId:s,levels:r.length?r.map(t=>parseInt(t,10)):void 0}));if(r.length)return c.map(s=>({trackId:s.value,levels:r.map(t=>parseInt(t,10))}))},d=(c,n,r,s)=>{const t=i=>{var l;return(l=n[i])!=null&&l.length?{included:n[i]}:void 0};return{checkIds:t(e.Check),checkOwners:t(e.CheckOwner),entityOwners:t(e.EntityOwner),entityRefs:t(e.Entity),tracks:p(c[e.Track],n[e.Track],n[e.Level]),numberOfDays:r!=null?r:a,context:s?{loggedInUser:s}:void 0,entityTypes:t(e.Type),entityKinds:t(e.Kind),entityLifecycles:t(e.Lifecycle),systems:t(e.System)}};export{a as DEFAULT_NUMBER_OF_DAYS,o as MAX_NUMBER_OF_DAYS,y as MIN_NUMBER_OF_DAYS,m as emptyFacetFilters,d as mapFacetFiltersToFilter};
1
+ import{Facet as e}from"./types.esm.js";const i=30,l=2,y=90,o=r=>Object.fromEntries(Object.values(e).map(n=>r&&n===e.EntityOwner?[n,[r]]:[n,[]])),m=(r,n,c)=>{if(n.length)return n.map(s=>({trackId:s,levels:c.length?c.map(t=>parseInt(t,10)):void 0}));if(c.length)return r.map(s=>({trackId:s.value,levels:c.map(t=>parseInt(t,10))}))},p=(r,n,c,s)=>{const t=a=>n[a]?.length?{included:n[a]}:void 0;return{checkIds:t(e.Check),checkOwners:t(e.CheckOwner),entityOwners:t(e.EntityOwner),entityRefs:t(e.Entity),tracks:m(r[e.Track],n[e.Track],n[e.Level]),numberOfDays:c??i,context:s?{loggedInUser:s}:void 0,entityTypes:t(e.Type),entityKinds:t(e.Kind),entityLifecycles:t(e.Lifecycle),systems:t(e.System)}};export{i as DEFAULT_NUMBER_OF_DAYS,y as MAX_NUMBER_OF_DAYS,l as MIN_NUMBER_OF_DAYS,o as emptyFacetFilters,p as mapFacetFiltersToFilter};
2
2
  //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{TabbedLayout as r}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as i}from"@backstage/core-plugin-api";import{makeStyles as n,Box as p}from"@material-ui/core";import e from"react";import{Routes as c,Route as s}from"react-router-dom";import{TechHealthSummary as u}from"../TechHealthSummary/TechHealthSummary.esm.js";import"../TechHealthTabs/PassRateTabStyles.esm.js";import"../TechHealthTabs/OwnerColumn.esm.js";import{TrackResultsTab as d}from"../TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js";import{EntityResultsTab as f}from"../TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js";import{GroupResultsTab as x}from"../TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js";import{CampaignResultsTab as E}from"../TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js";import{CheckResultsTab as b}from"../TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js";import"./Filters/types.esm.js";import"./Filters/FacetFilter.esm.js";import{FilterProvider as g}from"./Filters/FilterProvider.esm.js";import{Filters as h}from"./Filters/Filters.esm.js";import"./Filters/FiltersHeader.esm.js";import"./Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";const R=n(t=>({container:{display:"flex",margin:"-24px",backgroundColor:t.palette.background.paper,borderTop:`1px solid ${t.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${t.palette.divider}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:t.palette.background.paper,height:"100%",maxWidth:"100%"},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",backgroundColor:t.palette.background.default,"& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",borderTop:`1px solid ${t.palette.border}`,padding:`${t.spacing(3)}px !important`}}})),k=()=>{const t=R(),l=m(i),a=!l.getRegisteredFlags().find(o=>o.name==="soundcheck-enable-campaigns")||l.isActive("soundcheck-enable-campaigns");return e.createElement(g,null,e.createElement("div",{className:t.container},e.createElement("div",{className:t.fixedColumn},e.createElement(h,null)),e.createElement("div",{className:t.flexibleColumn},e.createElement(p,{className:t.pageLayout},e.createElement(c,null,e.createElement(s,{path:"/*",element:e.createElement(r,null,e.createElement(r.Route,{title:"Summary",path:"/"},e.createElement(u,null)),a&&e.createElement(r.Route,{title:"Campaigns",path:"/campaigns"},e.createElement(E,null)),e.createElement(r.Route,{title:"Checks",path:"/checks"},e.createElement(b,null)),e.createElement(r.Route,{title:"Tracks",path:"/tracks"},e.createElement(d,null)),e.createElement(r.Route,{title:"Entities",path:"/entities"},e.createElement(f,null)),e.createElement(r.Route,{title:"Teams",path:"/teams"},e.createElement(x,null)))}))))))};export{k as TechHealth};
1
+ import{TabbedLayout as r}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as i}from"@backstage/core-plugin-api";import{makeStyles as n,Box as p}from"@material-ui/core";import e from"react";import{Routes as c,Route as s}from"react-router-dom";import{TechHealthSummary as u}from"../TechHealthSummary/TechHealthSummary.esm.js";import"../TechHealthTabs/PassRateTabStyles.esm.js";import"../TechHealthTabs/OwnerColumn.esm.js";import{TrackResultsTab as d}from"../TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js";import{EntityResultsTab as f}from"../TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js";import{GroupResultsTab as h}from"../TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js";import{CampaignResultsTab as x}from"../TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js";import{CheckResultsTab as b}from"../TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js";import"./Filters/types.esm.js";import"./Filters/FacetFilter.esm.js";import{FilterProvider as E}from"./Filters/FilterProvider.esm.js";import{Filters as g}from"./Filters/Filters.esm.js";import"./Filters/FiltersHeader.esm.js";import"./Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";const R=n(t=>({container:{display:"flex",margin:"-24px",backgroundColor:t.palette.background.paper,borderTop:`1px solid ${t.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${t.palette.divider}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:t.palette.background.paper,height:"100%",maxWidth:"100%"},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",backgroundColor:t.palette.background.default,"& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",borderTop:`1px solid ${t.palette.border}`,padding:`${t.spacing(3)}px !important`}}})),k=()=>{const t=R(),l=m(i),a=!l.getRegisteredFlags().find(o=>o.name==="soundcheck-enable-campaigns")||l.isActive("soundcheck-enable-campaigns");return e.createElement(E,null,e.createElement("div",{className:t.container},e.createElement("div",{className:t.fixedColumn},e.createElement(g,null)),e.createElement("div",{className:t.flexibleColumn},e.createElement(p,{className:t.pageLayout,"aria-label":"tech health tabs"},e.createElement(c,null,e.createElement(s,{path:"/*",element:e.createElement(r,null,e.createElement(r.Route,{title:"Summary",path:"/"},e.createElement(u,null)),a&&e.createElement(r.Route,{title:"Campaigns",path:"/campaigns"},e.createElement(x,null)),e.createElement(r.Route,{title:"Checks",path:"/checks"},e.createElement(b,null)),e.createElement(r.Route,{title:"Tracks",path:"/tracks"},e.createElement(d,null)),e.createElement(r.Route,{title:"Entities",path:"/entities"},e.createElement(f,null)),e.createElement(r.Route,{title:"Teams",path:"/teams"},e.createElement(h,null)))}))))))};export{k as TechHealth};
2
2
  //# sourceMappingURL=TechHealth.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as I}from"@backstage/core-plugin-api";import{Typography as k,Box as M,Grid as S}from"@material-ui/core";import a,{useState as s,useEffect as A,useMemo as F}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"../../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as x}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as N}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{campaignDetailsRouteRef as V}from"../../../routes.esm.js";import{campaignTrackPassRatesCsvFilename as H}from"../../../utils/charts.esm.js";import{PassRateGrid as j}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as q}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 z}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 J}from"../../TechHealth/Loading/Loading.esm.js";import{PassRateTabHeader as K}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as O}from"../PassRateTabStyles.esm.js";import{trackPassRatesToCsv as Q}from"../TechHealthExportFunctions.esm.js";import{ViewMode as f,generateTrackPassRateGridData as U}from"../techHealthTabUtils.esm.js";import{generateColumns as W}from"../TrackResultsTab/TrackResultsTab.esm.js";const X=()=>{var g;const h=O(),{filter:v}=z(),n=I(V),{data:R}=x({orderAlphabetical:"default",searchByStatus:"active"}),T=R==null?void 0:R.edges.map(e=>e.node),r=T==null?void 0:T.map(({id:e,track:t})=>({campaignId:e,trackId:t.id})),C=r==null?void 0:r.map(({trackId:e})=>({trackId:e})),{data:o,isLoading:P,isError:E}=N({...v,tracks:C,trackTypes:{included:["campaign"]}}),[l,w]=s(f.TABLE),[m,b]=s(""),[c,p]=s(0),[d,L]=s(10);A(()=>{p(0)},[v,m]);const y=F(()=>{var e;return W((e=o==null?void 0:o.individualTrackPassRate)!=null?e:[],void 0,n,r)},[o==null?void 0:o.individualTrackPassRate,n,r]);if(P)return a.createElement(J,null);if(E)return a.createElement(k,{color:"error"},"Failed to load campaign tracks");const{individualTrackPassRate:u}=o;if(!u)return a.createElement(k,{color:"error"},"No available campaign tracks");const i=m.length?u.filter(({trackName:e})=>{var t;return(t=e==null?void 0:e.toLowerCase())==null?void 0:t.includes(m.toLowerCase())}):u,G=async()=>Q(i,r),B=(e,t)=>{p(()=>t)},D=e=>{L(+e.target.value),p(0)};return a.createElement(M,{className:h.root},a.createElement(S,{container:!0,direction:"row"},a.createElement(K,{viewMode:l,setViewMode:w,isLoading:P,searchTerm:m,setSearchTerm:b,searchPlaceholder:"Search Available Campaigns",fetchCsvData:G,csvFilename:H}),l===f.TABLE&&a.createElement(q,{data:i,columns:y}),l===f.GRID&&a.createElement(j,{data:U(i.slice(c*d,(c+1)*d),void 0,n,r),totalCount:(g=i==null?void 0:i.length)!=null?g:0,page:c,rowsPerPage:d,onPageChange:B,onRowsPerPageChange:D})))};export{X as CampaignResultsTab};
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"../../../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};
2
2
  //# sourceMappingURL=CampaignResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as N}from"@backstage/core-plugin-api";import{Typography as E,Box as A,Grid as D}from"@material-ui/core";import r,{useState as l,useEffect as y}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"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useCheckPassRateTrend as M}from"../../../hooks/aggregations/useCheckPassRateTrend.esm.js";import"react-router-dom";import{checkDetailsRouteRef as O}from"../../../routes.esm.js";import{checkPassRatesCsvFilename as S}from"../../../utils/charts.esm.js";import{PassRateGrid as F}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as G}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 B}from"../../TechHealth/Loading/Loading.esm.js";import{NameColumn as I}from"../NameColumn.esm.js";import{ActionColumn as V}from"../ActionColumn.esm.js";import{OwnerColumn as H}from"../OwnerColumn.esm.js";import{checkPassRatesToCsv as K}from"../TechHealthExportFunctions.esm.js";import{PassRateTabHeader as W}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as j}from"../PassRateTabStyles.esm.js";import{ViewMode as f,generateCheckPassRateGridData as q}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 z}from"../MostRecentColumn.esm.js";import{CheckTrendColumn as J}from"./CheckTrendColumn.esm.js";function Q(i){return[{label:"NAME",id:"checkName",renderCell:e=>{var t;return r.createElement(I,{name:(t=e.checkName)!=null?t:e.id,description:e.checkDescription})}},{label:"LATEST",id:"snapshotPassRate",renderCell:e=>r.createElement(z,{snapshot:e.snapshotPassRate})},{label:"TREND",id:"trendPassRate",renderCell:e=>r.createElement(J,{row:e})},{label:"OWNER",id:"checkOwner",renderCell:e=>{var t;return r.createElement(H,{ownerEntityRef:(t=e.checkOwnerRef)!=null?t:void 0})}},{label:"ACTION",id:"action",renderCell:e=>r.createElement(V,{navigateTo:i({checkId:e.id})})}]}const U=()=>{var i;const e=j(),{filter:t}=x(),h=N(O),{data:k,isLoading:C,isError:v}=M(t),[s,P]=l(f.TABLE),[o,T]=l(""),[c,p]=l(0),[d,g]=l(10);if(y(()=>{p(0)},[t,o]),C)return r.createElement(B,null);if(v)return r.createElement(E,{color:"error"},"Failed to load checks");const{individualCheckPassRates:u}=k;if(!u)return r.createElement(E,{color:"error"},"No available checks");const a=o.length?u.filter(({id:m,checkName:n})=>{var R;return((R=n==null?void 0:n.toLowerCase())==null?void 0:R.includes(o.toLowerCase()))||m.toLowerCase().includes(o.toLowerCase())}):u,w=async()=>K(a),b=(m,n)=>{p(()=>n)},L=m=>{g(+m.target.value),p(0)};return r.createElement(A,{className:e.root},r.createElement(D,{container:!0,direction:"row"},r.createElement(W,{viewMode:s,setViewMode:P,isLoading:C,searchTerm:o,setSearchTerm:T,searchPlaceholder:"Search Available Checks",fetchCsvData:w,csvFilename:S}),s===f.TABLE&&r.createElement(G,{data:a,columns:Q(h)}),s===f.GRID&&r.createElement(F,{data:q(a.slice(c*d,(c+1)*d),h),totalCount:(i=a==null?void 0:a.length)!=null?i:0,page:c,rowsPerPage:d,onPageChange:b,onRowsPerPageChange:L})))};export{U as CheckResultsTab};
1
+ import{useRouteRef as v}from"@backstage/core-plugin-api";import{Typography as u,Box as L,Grid as N}from"@material-ui/core";import r,{useState as i,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"../../../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 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 x}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 f,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(m){return[{label:"NAME",id:"checkName",renderCell:e=>r.createElement(x,{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=>r.createElement(B,{navigateTo:m({checkId:e.id})})}]}const K=()=>{const m=H(),{filter:e}=F(),h=v(y),{data:R,isLoading:C,isError:E}=D(e),[s,k]=i(f.TABLE),[t,P]=i(""),[n,c]=i(0),[l,T]=i(10);if(A(()=>{c(0)},[e,t]),C)return r.createElement(G,null);if(E)return r.createElement(u,{color:"error"},"Failed to load checks");const{individualCheckPassRates:p}=R;if(!p)return r.createElement(u,{color:"error"},"No available checks");const o=t.length?p.filter(({id:a,checkName:d})=>d?.toLowerCase()?.includes(t.toLowerCase())||a.toLowerCase().includes(t.toLowerCase())):p,g=async()=>V(o),w=(a,d)=>{c(()=>d)},b=a=>{T(+a.target.value),c(0)};return r.createElement(L,{className:m.root},r.createElement(N,{container:!0,direction:"row"},r.createElement(z,{viewMode:s,setViewMode:k,isLoading:C,searchTerm:t,setSearchTerm:P,searchPlaceholder:"Search Available Checks",fetchCsvData:g,csvFilename:M}),s===f.TABLE&&r.createElement(S,{data:o,columns:J(h)}),s===f.GRID&&r.createElement(O,{data:W(o.slice(n*l,(n+1)*l),h),totalCount:o?.length??0,page:n,rowsPerPage:l,onPageChange:w,onRowsPerPageChange:b})))};export{K as CheckResultsTab};
2
2
  //# sourceMappingURL=CheckResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as m}from"@material-ui/core";import r 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 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 n}from"../PassRateTabStyles.esm.js";const p=({row:o})=>{var t;const e=n(),a=s((t=o.trendPassRates)!=null?t:[]);return r.createElement(m,{className:e.flexColumn},r.createElement(i,{chartData:a,tableChart:!0}))};export{p as CheckTrendColumn};
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};
2
2
  //# sourceMappingURL=CheckTrendColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as A}from"@backstage/catalog-model";import{useApi as W,useRouteRef as $}from"@backstage/core-plugin-api";import{entityRouteRef as j}from"@backstage/plugin-catalog-react";import{Typography as I,Box as q,Grid as z}from"@material-ui/core";import r,{useState as n,useEffect as D}from"react";import{soundcheckApiRef as J}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useEntityPassRateTrend as K}from"../../../hooks/aggregations/useEntityPassRateTrend.esm.js";import"react-router-dom";import{entityPassRatesCsvFilename as U}from"../../../utils/charts.esm.js";import{PassRateGrid as X}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as Y}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as Z}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{ActionColumn as ee}from"../ActionColumn.esm.js";import{MostRecentColumn as te}from"../MostRecentColumn.esm.js";import{NameColumn as re}from"../NameColumn.esm.js";import{OwnerColumn as oe}from"../OwnerColumn.esm.js";import{PassRateTabHeader as ae}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as ie}from"../PassRateTabStyles.esm.js";import{entityPassRatesToCsv as ne}from"../TechHealthExportFunctions.esm.js";import{ViewMode as E,generateEntityPassRateGridData as se}from"../techHealthTabUtils.esm.js";import{EntityTrendColumn as le}from"./EntityTrendColumn.esm.js";function me(s){return[{label:"NAME",id:"entityName",renderCell:({id:t,entityDescription:l})=>r.createElement(re,{name:A(t).name,description:l})},{label:"LATEST",id:"latest",renderCell:t=>r.createElement(te,{snapshot:t.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:t=>r.createElement(le,{row:t})},{label:"OWNER",id:"entityOwnerRef",renderCell:({entityOwnerRef:t})=>r.createElement(oe,{ownerEntityRef:t!=null?t:void 0})},{label:"ACTION",id:"action",renderCell:({id:t})=>r.createElement(ee,{navigateTo:`${s(A(t))}/soundcheck`})}]}const de=()=>{var s,t,l;const M=ie(),S=W(J),{filter:p}=Z(),P=$(j),[R,v]=n([]),[C,m]=n(void 0),[y,c]=n(0),[f,x]=n(10),{data:a,isLoading:h,isError:F}=K({filter:p,first:f,after:C}),[o,O]=n(a==null?void 0:a.individualEntityPassRates),w=o!=null&&o.edges?o==null?void 0:o.edges[(o==null?void 0:o.edges.length)-1]:{cursor:""};D(()=>{a&&O(()=>{var e,i;return{totalCount:a.individualEntityPassRates.totalCount,edges:a.individualEntityPassRates.edges,pageInfo:{endCursor:a.individualEntityPassRates.pageInfo.endCursor,hasNextPage:(e=a.individualEntityPassRates.pageInfo.hasNextPage)!=null?e:!1,hasPreviousPage:(i=a.individualEntityPassRates.pageInfo.hasPreviousPage)!=null?i:!1}}})},[a]);const[g,B]=n(E.TABLE),[d,G]=n("");if(D(()=>{c(0),m("")},[p]),h)return r.createElement(_,null);if(F)return r.createElement(I,{color:"error"},"Failed to load entities");if(!((s=o==null?void 0:o.edges)!=null&&s.length))return r.createElement(I,{color:"error"},"No available entities");const u=d.length?{...o,edges:o.edges.filter(({node:e})=>e.id.toLowerCase().includes(d.toLowerCase())),totalCount:o.edges.filter(({node:e})=>e.id.toLowerCase().includes(d.toLowerCase())).length}:o,T=(t=u==null?void 0:u.edges.map(({node:e})=>e))!=null?t:[],b=(l=u==null?void 0:u.totalCount)!=null?l:0,k=async()=>{const{individualEntityPassRates:e}=await S.getIndividualEntityPassRates({filter:p});return ne(e.edges.map(({node:i})=>i))},V=()=>{v(e=>[...e,C]),m(w==null?void 0:w.cursor)},H=()=>{m(R[R.length-1]),v(e=>e.slice(0,-1))},N=(e,i)=>{c(Q=>(i>Q?V():H(),i))},L=e=>{m(void 0),x(+e.target.value),c(0)};return r.createElement(q,{className:M.root},r.createElement(z,{container:!0,direction:"row"},r.createElement(ae,{viewMode:g,setViewMode:B,isLoading:h,searchTerm:d,setSearchTerm:G,searchPlaceholder:"Search available entities",fetchCsvData:k,csvFilename:U}),g===E.TABLE&&r.createElement(Y,{data:T,totalCount:b,page:y,rowsPerPage:f,columns:me(P),onPageChange:N,onRowsPerPageChange:L}),g===E.GRID&&r.createElement(X,{data:se(T,P),totalCount:b,page:y,rowsPerPage:f,onPageChange:N,onRowsPerPageChange:L})))};export{de as EntityResultsTab};
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"../../../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};
2
2
  //# sourceMappingURL=EntityResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as a}from"@material-ui/core";import r 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:t}})=>{const o=i(),e=m(t!=null?t:[]);return r.createElement(a,{className:o.flexColumn},r.createElement(s,{chartData:e,tableChart:!0}))};export{n as EntityTrendColumn};
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};
2
2
  //# sourceMappingURL=EntityTrendColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as I}from"@backstage/catalog-model";import{useApi as j,useRouteRef as q}from"@backstage/core-plugin-api";import{entityRouteRef as z}from"@backstage/plugin-catalog-react";import{Typography as y,Box as J,Grid as K}from"@material-ui/core";import o,{useState as n,useEffect as x}from"react";import{soundcheckApiRef as U}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGroupPassRateTrend as W}from"../../../hooks/aggregations/useGroupPassRateTrend.esm.js";import"react-router-dom";import{groupPassRatesCsvFilename as X}from"../../../utils/charts.esm.js";import{PassRateGrid as Y}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as Z}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as _}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{ActionColumn as ee}from"../ActionColumn.esm.js";import{MostRecentColumn as oe}from"../MostRecentColumn.esm.js";import{NameColumn as re}from"../NameColumn.esm.js";import{PassRateTabHeader as te}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as ae}from"../PassRateTabStyles.esm.js";import{groupPassRatesToCsv as se}from"../TechHealthExportFunctions.esm.js";import{ViewMode as R,generateGroupPassRateGridData as ne}from"../techHealthTabUtils.esm.js";import{GroupTrendColumn as le}from"./GroupTrendColumn.esm.js";function ie(l){return[{label:"NAME",id:"groupName",renderCell:({groupTitle:r,id:i})=>o.createElement(re,{name:r!=null?r:I(i).name})},{label:"LATEST",id:"latest",renderCell:r=>o.createElement(oe,{snapshot:r.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:r=>o.createElement(le,{row:r})},{label:"ACTION",id:"action",renderCell:({id:r})=>o.createElement(ee,{navigateTo:l(I(r))})}]}const me=()=>{var l,r,i;const M=ae(),S=j(U),{filter:m}=_();m.context=void 0;const v=q(z),[C,h]=n([]),[E,u]=n(void 0),[T,c]=n(0),[f,D]=n(10),{data:s,isLoading:w,isError:B}=W({filter:m,first:f,after:E}),[t,F]=n(s==null?void 0:s.groupPassRates),b=t!=null&&t.edges?t==null?void 0:t.edges[(t==null?void 0:t.edges.length)-1]:{cursor:""};x(()=>{s&&F(()=>{var e,a;return{totalCount:s.groupPassRates.totalCount,edges:s.groupPassRates.edges,pageInfo:{endCursor:s.groupPassRates.pageInfo.endCursor,hasNextPage:(e=s.groupPassRates.pageInfo.hasNextPage)!=null?e:!1,hasPreviousPage:(a=s.groupPassRates.pageInfo.hasPreviousPage)!=null?a:!1}}})},[s]);const[P,V]=n(R.TABLE),[p,k]=n("");if(x(()=>{c(0),u("")},[m]),w)return o.createElement($,null);if(B)return o.createElement(y,{color:"error"},"Failed to load groups");if(!((l=t==null?void 0:t.edges)!=null&&l.length))return o.createElement(y,{color:"error"},"No available groups");const d=p.length?{...t,edges:t.edges.filter(({node:e})=>{var a,g;return((g=(a=e.groupTitle)==null?void 0:a.toLowerCase())==null?void 0:g.includes(p.toLowerCase()))||e.id.toLowerCase().includes(p.toLowerCase())})}:t,L=(r=d==null?void 0:d.edges.map(({node:e})=>e))!=null?r:[],N=(i=d==null?void 0:d.totalCount)!=null?i:0,H=async()=>{const{groupPassRates:e}=await S.getIndividualGroupPassRates({filter:m});return se(e.edges.map(({node:a})=>a))},O=()=>{h(e=>[...e,E]),u(b==null?void 0:b.cursor)},Q=()=>{u(C[C.length-1]),h(e=>e.slice(0,-1))},G=(e,a)=>{c(g=>(a>g?O():Q(),a))},A=e=>{u(void 0),D(+e.target.value),c(0)};return o.createElement(J,{className:M.root},o.createElement(K,{container:!0,direction:"row"},o.createElement(te,{viewMode:P,setViewMode:V,isLoading:w,searchTerm:p,setSearchTerm:k,searchPlaceholder:"Search available teams",csvFilename:X,fetchCsvData:H}),P===R.TABLE&&o.createElement(Z,{data:L,totalCount:N,page:T,rowsPerPage:f,columns:ie(v),onPageChange:G,onRowsPerPageChange:A}),P===R.GRID&&o.createElement(Y,{data:ne(L,v),totalCount:N,page:T,rowsPerPage:f,onPageChange:G,onRowsPerPageChange:A})))};export{me as GroupResultsTab};
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"../../../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};
2
2
  //# sourceMappingURL=GroupResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as a,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 l}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 n}from"../PassRateTabStyles.esm.js";const p=({row:{trendPassRates:e}})=>{const r=n(),o=s(e!=null?e:[]);return o.length?t.createElement(a,{className:r.flexColumn},t.createElement(l,{chartData:o,tableChart:!0})):t.createElement(a,{className:r.flexColumn},t.createElement(m,null,"No data"))};export{p as GroupTrendColumn};
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};
2
2
  //# sourceMappingURL=GroupTrendColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as r}from"@backstage/core-components";import{Box as n,Typography as a}from"@material-ui/core";import t from"react";import{usePassRateTabStyles as s}from"./PassRateTabStyles.esm.js";const l=({name:m="",description:o=""})=>{const e=s();return t.createElement(n,{className:e.flexColumn},t.createElement(a,{className:e.boldText},m),t.createElement(r,{className:e.descriptionText,content:o!=null?o:""}))};export{l as NameColumn};
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};
2
2
  //# sourceMappingURL=NameColumn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as m,parseEntityRef as f}from"@backstage/catalog-model";import{EntityRefLink as p}from"@backstage/plugin-catalog-react";import{makeStyles as y,Tooltip as s,Typography as u}from"@material-ui/core";import n from"react";import{useEntityByRef as c}from"../../hooks/catalog/useEntityByRef.esm.js";const d=e=>(e==null?void 0:e.kind)==="Group",E=e=>(e==null?void 0:e.kind)==="User",v=y(e=>({ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}},fontSize:e.typography.body1.fontSize}})),k=({ownerEntityRef:e})=>{var o,i;const{data:t,error:l}=c(e!=null?e:void 0),a=v();if(t){let r;return d(t)||E(t)?r=(i=t.metadata.title)!=null?i:(o=t.spec.profile)==null?void 0:o.displayName:r=t.metadata.name,n.createElement(p,{entityRef:m(t),title:r,className:a.ownerLink})}else if(l&&e)return n.createElement(s,{title:"Unable to pull owner reference from Catalog API"},n.createElement(u,{style:{color:"red"},variant:"body2"},(()=>{try{return f(e).name}catch{return e}})()));return null};export{k as OwnerColumn};
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};
2
2
  //# sourceMappingURL=OwnerColumn.esm.js.map