@spotify/backstage-plugin-soundcheck 0.12.9 → 0.12.11

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 (178) 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/CampaignSupportChannelField.esm.js +1 -1
  19. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignMilestonesStep.esm.js +1 -1
  20. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignTrackStep.esm.js +1 -1
  21. package/dist/components/CampaignsTab/MutateCampaignsViews/hooks/utils.esm.js +1 -1
  22. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  23. package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
  24. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  25. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  26. package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
  27. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  28. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  29. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  30. package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
  31. package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
  32. package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
  33. package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
  34. package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
  35. package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
  36. package/dist/components/CheckCard/CheckCard.esm.js +1 -1
  37. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  38. package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
  39. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  40. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +2 -0
  41. package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +2 -0
  42. package/dist/components/CheckPage/CheckEntitiesTable/utils.esm.js +2 -0
  43. package/dist/components/CheckPage/CheckInsightsPage.esm.js +2 -0
  44. package/dist/components/CheckPage/CheckPage.esm.js +1 -1
  45. package/dist/components/CheckPage/CheckStatusBar.esm.js +2 -0
  46. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +2 -0
  47. package/dist/components/CheckPage/CheckStatusTable.esm.js +2 -0
  48. package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +2 -0
  49. package/dist/components/CheckPage/StatusRow.esm.js +2 -0
  50. package/dist/components/CheckPage/utils.esm.js +2 -0
  51. package/dist/components/ChecksErrors/ChecksErrors.esm.js +1 -1
  52. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
  53. package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
  54. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  55. package/dist/components/ChecksPage/MutateCheckViews/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  56. package/dist/components/ChecksPage/MutateCheckViews/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
  57. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js +1 -1
  58. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  59. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  60. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  61. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/useRuleInputHandlers.esm.js +1 -1
  62. package/dist/components/ChecksPage/MutateCheckViews/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  63. package/dist/components/ChecksPage/MutateCheckViews/utils/checkFormUtils.esm.js +1 -1
  64. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  65. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  66. package/dist/components/CollectorPage/Configurators/Github/FactCollectionConfig.esm.js +1 -1
  67. package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
  68. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
  69. package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
  70. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  71. package/dist/components/DraggableChip/DraggableChip.esm.js +1 -1
  72. package/dist/components/DroppableInput/DroppableInput.esm.js +1 -1
  73. package/dist/components/EditTrackPage/EditTrackPage.esm.js +1 -1
  74. package/dist/components/EmptyState/EmptyState.esm.js +1 -1
  75. package/dist/components/EntityContent/EntityContent.esm.js +1 -1
  76. package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
  77. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  78. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  79. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  80. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  81. package/dist/components/Filter/utils.esm.js +1 -1
  82. package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
  83. package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
  84. package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
  85. package/dist/components/Frequency/util.esm.js +1 -1
  86. package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
  87. package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
  88. package/dist/components/LevelCard/LevelCard.esm.js +1 -1
  89. package/dist/components/LevelCard/LevelTooltip.esm.js +1 -1
  90. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  91. package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
  92. package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
  93. package/dist/components/OverviewPage/CampaignRow/CampaignRow.esm.js +1 -1
  94. package/dist/components/OverviewPage/CampaignRow/utils.esm.js +1 -1
  95. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  96. package/dist/components/OverviewPage/OverviewTabs.esm.js +1 -1
  97. package/dist/components/OverviewPage/TableContent/TableContent.esm.js +1 -1
  98. package/dist/components/OverviewPage/TableContent/VirtualTableContent.esm.js +1 -1
  99. package/dist/components/Pagination/CursorPagination.esm.js +1 -1
  100. package/dist/components/Pagination/Pagination.esm.js +1 -1
  101. package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
  102. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  103. package/dist/components/ResultsTable/CheckCell/CheckCell.esm.js +1 -1
  104. package/dist/components/ResultsTable/HighestLevelBadge.esm.js +1 -1
  105. package/dist/components/ResultsTable/ProgramCheckIndicator.esm.js +1 -1
  106. package/dist/components/ResultsTable/ProgramCheckRow.esm.js +1 -1
  107. package/dist/components/ResultsTable/ProgramTitleRow.esm.js +1 -1
  108. package/dist/components/ResultsTable/ResultsTableFooter.esm.js +1 -1
  109. package/dist/components/ResultsTable/skeletons/ResultsTableSkeleton.esm.js +1 -1
  110. package/dist/components/ResultsTable/virtualized/Row.esm.js +1 -1
  111. package/dist/components/ResultsTable/virtualized/VirtualizedResultsTable.esm.js +1 -1
  112. package/dist/components/Router.esm.js +1 -1
  113. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  114. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  115. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  116. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  117. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  118. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  119. package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
  120. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
  121. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  122. package/dist/components/TechHealth/Filters/utils.esm.js +1 -1
  123. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  124. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  125. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  126. package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
  127. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  128. package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
  129. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  130. package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
  131. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  132. package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
  133. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
  134. package/dist/components/TechHealthTabs/TechHealthExportFunctions.esm.js +1 -1
  135. package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
  136. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  137. package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
  138. package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +1 -1
  139. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +1 -1
  140. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +1 -1
  141. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
  142. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
  143. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
  144. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
  145. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  146. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  147. package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
  148. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
  149. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  150. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
  151. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  152. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  153. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  154. package/dist/components/TrackPage/TrackLevelsChart.esm.js +1 -1
  155. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  156. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
  157. package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
  158. package/dist/graphql/generated/index.esm.js +47 -27
  159. package/dist/hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js +1 -1
  160. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  161. package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
  162. package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
  163. package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
  164. package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
  165. package/dist/hooks/checks/useExecuteCheck.esm.js +2 -0
  166. package/dist/hooks/entities/useCheckEntities.esm.js +2 -0
  167. package/dist/hooks/entities/useEntityRefsForUser.esm.js +1 -1
  168. package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
  169. package/dist/hooks/graphqlKeys.esm.js +1 -1
  170. package/dist/hooks/groups/useAllGroups.esm.js +1 -1
  171. package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
  172. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  173. package/dist/hooks/tracks/useGetChecksMap.esm.js +1 -1
  174. package/dist/images/k8s_blue.svg +108 -0
  175. package/dist/images/k8s_white.svg +108 -0
  176. package/dist/routes.esm.js +1 -1
  177. package/dist/text.esm.js +1 -1
  178. package/package.json +26 -19
@@ -1,2 +1,2 @@
1
- import{useRouteRef as A}from"@backstage/core-plugin-api";import{Typography as k,Box as y,Grid as D}from"@material-ui/core";import r,{useState as f,useEffect as S,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"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as G}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{trackDetailsRouteRef as $}from"../../../routes.esm.js";import{trackPassRatesCsvFilename as x}from"../../../utils/charts.esm.js";import{PassRateGrid as B}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as V}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as I}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as H}from"../../TechHealth/Loading/Loading.esm.js";import{trackPassRatesToCsv as W}from"../TechHealthExportFunctions.esm.js";import{ActionColumn as j}from"../ActionColumn.esm.js";import{NameColumn as q}from"../NameColumn.esm.js";import{OwnerColumn as z}from"../OwnerColumn.esm.js";import{PassRateTabHeader as J}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as K}from"../PassRateTabStyles.esm.js";import{ViewMode as P,generateTrackPassRateGridData as Q,getDetailsRoute as U}from"../techHealthTabUtils.esm.js";import{TrackTrendColumn as X}from"./TrackLevelTrendColumn.esm.js";const h=(l,u,n)=>{const i=Math.min(5,u-l+1);return Array.from({length:i}).map((o,m)=>{const c=l+m;return{label:n?"PROGRESS":`LEVEL ${c}`,id:`levels-${m}`,renderCell:e=>{var t;const a=(t=e.levels)==null?void 0:t.find(({levelOrdinal:v})=>v===c);return a?r.createElement(X,{row:a}):r.createElement(r.Fragment,null)}}})},w=(l,u,n,i)=>{const o=l.flatMap(e=>{var t;return((t=e.levels)==null?void 0:t.map(a=>a.levelOrdinal))||[]}),m=Math.min(...o),c=Math.max(...o);return[{label:"NAME",id:"trackName",renderCell:e=>{var t;return r.createElement(q,{name:(t=e.trackName)!=null?t:e.id,description:e.trackDescription})}},...h(m,c,!!n),{label:"OWNER",id:"trackOwnerRef",renderCell:e=>{var t;return r.createElement(z,{ownerEntityRef:(t=e.trackOwnerRef)!=null?t:void 0})}},{label:"ACTION",id:"action",renderCell:({id:e})=>r.createElement(j,{navigateTo:U(e,u,n,i)})}]},Y=()=>{var l;const u=K(),{filter:n}=I(),i=A($),{data:o,isLoading:m,isError:c}=G(n),[e,t]=f(P.TABLE),[a,v]=f(""),[R,E]=f(0),[T,L]=f(10);S(()=>{E(0)},[n,a]);const b=F(()=>{var s;return w((s=o==null?void 0:o.individualTrackPassRate)!=null?s:[],i)},[o==null?void 0:o.individualTrackPassRate,i]);if(m)return r.createElement(H,null);if(c)return r.createElement(k,{color:"error"},"Failed to load tracks");const{individualTrackPassRate:C}=o;if(!C)return r.createElement(k,{color:"error"},"No available tracks");const d=a.length?C.filter(({id:s,trackName:p})=>{var g;return((g=p==null?void 0:p.toLowerCase())==null?void 0:g.includes(a.toLowerCase()))||s.toLowerCase().includes(a.toLowerCase())}):C,M=async()=>W(d),N=(s,p)=>{E(()=>p)},O=s=>{L(+s.target.value),E(0)};return r.createElement(y,{className:u.root},r.createElement(D,{container:!0,direction:"row"},r.createElement(J,{viewMode:e,setViewMode:t,isLoading:m,searchTerm:a,setSearchTerm:v,searchPlaceholder:"Search Available Tracks",fetchCsvData:M,csvFilename:x}),e===P.TABLE&&r.createElement(V,{data:d,columns:b}),e===P.GRID&&r.createElement(B,{data:Q(d.slice(R*T,(R+1)*T),i),totalCount:(l=d==null?void 0:d.length)!=null?l:0,page:R,rowsPerPage:T,onPageChange:N,onRowsPerPageChange:O})))};export{Y as TrackResultsTab,w as generateColumns,h as generateTrendColumns};
1
+ import{useRouteRef as N}from"@backstage/core-plugin-api";import{Typography as k,Box as O,Grid as A}from"@material-ui/core";import e,{useState as d,useEffect as y,useMemo as D}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as S}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{trackDetailsRouteRef as F}from"../../../routes.esm.js";import{trackPassRatesCsvFilename as G}from"../../../utils/charts.esm.js";import{PassRateGrid as x}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as B}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as V}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as I}from"../../TechHealth/Loading/Loading.esm.js";import{trackPassRatesToCsv as $}from"../TechHealthExportFunctions.esm.js";import{ActionColumn as H}from"../ActionColumn.esm.js";import{NameColumn as W}from"../NameColumn.esm.js";import{OwnerColumn as j}from"../OwnerColumn.esm.js";import{PassRateTabHeader as q}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as z}from"../PassRateTabStyles.esm.js";import{ViewMode as g,generateTrackPassRateGridData as J,getDetailsRoute as K}from"../techHealthTabUtils.esm.js";import{TrackTrendColumn as Q}from"./TrackLevelTrendColumn.esm.js";const v=(m,n,a)=>{const i=Math.min(5,n-m+1);return Array.from({length:i}).map((l,s)=>{const o=m+s;return{label:a?"PROGRESS":`LEVEL ${o}`,id:`levels-${s}`,renderCell:r=>{const t=r.levels?.find(({levelOrdinal:u})=>u===o);return t?e.createElement(Q,{row:t}):e.createElement(e.Fragment,null)}}})},P=(m,n,a,i)=>{const l=m.flatMap(r=>r.levels?.map(t=>t.levelOrdinal)||[]),s=Math.min(...l),o=Math.max(...l);return[{label:"NAME",id:"trackName",renderCell:r=>e.createElement(W,{name:r.trackName??r.id,description:r.trackDescription})},...v(s,o,!!a),{label:"OWNER",id:"trackOwnerRef",renderCell:r=>e.createElement(j,{ownerEntityRef:r.trackOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>e.createElement(H,{navigateTo:K(r,n,a,i)})}]},U=()=>{const m=z(),{filter:n}=V(),a=N(F),{data:i,isLoading:l,isError:s}=S(n),[o,r]=d(g.TABLE),[t,u]=d(""),[f,R]=d(0),[E,h]=d(10);y(()=>{R(0)},[n,t]);const w=D(()=>P(i?.individualTrackPassRate??[],a),[i?.individualTrackPassRate,a]);if(l)return e.createElement(I,null);if(s)return e.createElement(k,{color:"error"},"Failed to load tracks");const{individualTrackPassRate:T}=i;if(!T)return e.createElement(k,{color:"error"},"No available tracks");const c=t.length?T.filter(({id:p,trackName:C})=>C?.toLowerCase()?.includes(t.toLowerCase())||p.toLowerCase().includes(t.toLowerCase())):T,b=async()=>$(c),L=(p,C)=>{R(()=>C)},M=p=>{h(+p.target.value),R(0)};return e.createElement(O,{className:m.root},e.createElement(A,{container:!0,direction:"row"},e.createElement(q,{viewMode:o,setViewMode:r,isLoading:l,searchTerm:t,setSearchTerm:u,searchPlaceholder:"Search Available Tracks",fetchCsvData:b,csvFilename:G}),o===g.TABLE&&e.createElement(B,{data:c,columns:w}),o===g.GRID&&e.createElement(x,{data:J(c.slice(f*E,(f+1)*E),a),totalCount:c?.length??0,page:f,rowsPerPage:E,onPageChange:L,onRowsPerPageChange:M})))};export{U as TrackResultsTab,P as generateColumns,v as generateTrendColumns};
2
2
  //# sourceMappingURL=TrackResultsTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as m}from"@backstage/catalog-model";import"react";import"recharts";import{convertPassRateToDataPoints as p}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{formatLineChartData as D}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"../PassRateGrid/PassRateGrid.esm.js";import{Trend as l}from"../PassRateGrid/types.esm.js";var g=(t=>(t[t.TABLE=0]="TABLE",t[t.GRID=1]="GRID",t))(g||{});function c(t){if(!t||!t.length)return l.FLAT;if(t.length===1)return t[0]>0?l.UP:l.FLAT;const r=t[t.length-1]-t[0];return r<0?l.DOWN:r>0?l.UP:l.FLAT}function L(t,r){return t.map(a=>{var s,e,n,i,o;return{id:a.id,name:(s=a.checkName)!=null?s:a.id,description:(e=a.checkDescription)!=null?e:void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:c((n=a.trendPassRates)!=null?n:[])}],trendPassRates:p((i=a.trendPassRates)!=null?i:[])},owner:(o=a.checkOwnerRef)!=null?o:void 0,navigateTo:r({checkId:a.id})}})}function w(t,r){return t.map(a=>{var s,e,n,i;return{id:a.id,name:m(a.id).name,description:(s=a.entityDescription)!=null?s:void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:c((e=a.trendPassRates)!=null?e:[])}],trendPassRates:p((n=a.trendPassRates)!=null?n:[])},owner:(i=a.entityOwnerRef)!=null?i:void 0,navigateTo:`${r(m(a.id))}/soundcheck`}})}function C(t,r){return t.map(a=>{var s,e,n;return{id:a.id,name:(s=a.groupTitle)!=null?s:m(a.id).name,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:c((e=a.trendPassRates)!=null?e:[])}],trendPassRates:p((n=a.trendPassRates)!=null?n:[])},navigateTo:r(m(a.id))}})}const T=(t,r,a,s)=>{var e;if(r)return r({trackId:t});if(a&&s){const n=(e=s.find(({trackId:i})=>i===t))==null?void 0:e.campaignId;if(n)return a({campaignId:n})}};function G(t,r,a,s){return t.map(e=>{var n,i,o,v,R,P,f;return{id:e.id,name:(n=e.trackName)!=null?n:e.id,description:(i=e.trackDescription)!=null?i:void 0,lineChart:{snapshotPassRates:(v=(o=e.levels)==null?void 0:o.map(({levelOrdinal:d,levelName:u,snapshotPassRate:k,trendPassRates:h})=>({name:u?`Level ${d} (${u})`:`Level ${d}`,value:k,trend:c(h!=null?h:[])})))!=null?v:[],trendPassRates:D({overallTrackPassRate:e.levels}),lineConfigs:(P=(R=e.levels)==null?void 0:R.map(({levelOrdinal:d,levelName:u})=>({dataKey:`Level${d}`,name:u!=null?u:`Level ${d}`})))!=null?P:[]},owner:(f=e.trackOwnerRef)!=null?f:void 0,navigateTo:T(e.id,r,a,s)}})}export{g as ViewMode,c as calculateTrend,L as generateCheckPassRateGridData,w as generateEntityPassRateGridData,C as generateGroupPassRateGridData,G as generateTrackPassRateGridData,T as getDetailsRoute};
1
+ import{parseEntityRef as p}from"@backstage/catalog-model";import"react";import"recharts";import{convertPassRateToDataPoints as l}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{formatLineChartData as P}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"../PassRateGrid/PassRateGrid.esm.js";import{Trend as n}from"../PassRateGrid/types.esm.js";var m=(e=>(e[e.TABLE=0]="TABLE",e[e.GRID=1]="GRID",e))(m||{});function i(e){if(!e||!e.length)return n.FLAT;if(e.length===1)return e[0]>0?n.UP:n.FLAT;const t=e[e.length-1]-e[0];return t<0?n.DOWN:t>0?n.UP:n.FLAT}function u(e,t){return e.map(a=>({id:a.id,name:a.checkName??a.id,description:a.checkDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.checkOwnerRef??void 0,navigateTo:t({checkId:a.id})}))}function h(e,t){return e.map(a=>({id:a.id,name:p(a.id).name,description:a.entityDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.entityOwnerRef??void 0,navigateTo:`${t(p(a.id))}/soundcheck`}))}function f(e,t){return e.map(a=>({id:a.id,name:a.groupTitle??p(a.id).name,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},navigateTo:t(p(a.id))}))}const c=(e,t,a,o)=>{if(t)return t({trackId:e});if(a&&o){const s=o.find(({trackId:r})=>r===e)?.campaignId;if(s)return a({campaignId:s})}};function g(e,t,a,o){return e.map(s=>({id:s.id,name:s.trackName??s.id,description:s.trackDescription??void 0,lineChart:{snapshotPassRates:s.levels?.map(({levelOrdinal:r,levelName:d,snapshotPassRate:R,trendPassRates:v})=>({name:d?`Level ${r} (${d})`:`Level ${r}`,value:R,trend:i(v??[])}))??[],trendPassRates:P({overallTrackPassRate:s.levels}),lineConfigs:s.levels?.map(({levelOrdinal:r,levelName:d})=>({dataKey:`Level${r}`,name:d??`Level ${r}`}))??[]},owner:s.trackOwnerRef??void 0,navigateTo:c(s.id,t,a,o)}))}export{m as ViewMode,i as calculateTrend,u as generateCheckPassRateGridData,h as generateEntityPassRateGridData,f as generateGroupPassRateGridData,g as generateTrackPassRateGridData,c as getDetailsRoute};
2
2
  //# sourceMappingURL=techHealthTabUtils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as g,Grid as i,Typography as m}from"@material-ui/core";import e,{useState as x}from"react";import{DraggableChip as b}from"../../../../DraggableChip/DraggableChip.esm.js";import{LoadingIndicator as C}from"../../../../LoadingIndicator/LoadingIndicator.esm.js";import{SearchBar as E}from"../../../../SearchBar/SearchBar.esm.js";const f=g(t=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:0},subtitle:{color:t.palette.text.primary},chipContainer:{display:"flex",flexDirection:"column",alignItems:"flex-start",padding:t.spacing(1),gap:t.spacing(.75)}})),y=({chips:t,disabled:l,onContextMenuAdd:a})=>e.createElement(e.Fragment,null,t.map(n=>e.createElement(b,{disabled:l,key:n.id,chip:n,onContextMenuAdd:a?()=>a(n):void 0}))),S=()=>e.createElement(m,{variant:"body1",color:"textSecondary"},"There are no matches."),T=({isLoading:t,chips:l=[],disabled:a,label:n,onContextMenuAdd:d})=>{const c=f(),[o,p]=x(""),s=l.filter(h=>h.name.toLowerCase().includes(o.toLowerCase())),u=l.length>0||o;let r=null;return t?r=e.createElement(C,null):s.length>0?r=e.createElement(y,{disabled:a!=null?a:!1,chips:s,onContextMenuAdd:d}):u&&(r=e.createElement(S,null)),e.createElement(i,{container:!0},e.createElement(i,{item:!0,xs:12,className:c.columnHeader},e.createElement(m,{variant:"subtitle1",className:c.subtitle},n!=null?n:"Checks")),e.createElement(i,{item:!0,xs:12},e.createElement(E,{searchTerm:o,disabled:t||a,setSearchTerm:p,placeholder:"Search Available Checks",variant:"outlined",size:"small"})),e.createElement(i,{item:!0,className:c.chipContainer,xs:12},r))};export{T as ChecksSection};
1
+ import{makeStyles as g,Grid as i,Typography as m}from"@material-ui/core";import e,{useState as x}from"react";import{DraggableChip as b}from"../../../../DraggableChip/DraggableChip.esm.js";import{LoadingIndicator as C}from"../../../../LoadingIndicator/LoadingIndicator.esm.js";import{SearchBar as E}from"../../../../SearchBar/SearchBar.esm.js";const f=g(t=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:0},subtitle:{color:t.palette.text.primary},chipContainer:{display:"flex",flexDirection:"column",alignItems:"flex-start",padding:t.spacing(1),gap:t.spacing(.75)}})),y=({chips:t,disabled:l,onContextMenuAdd:a})=>e.createElement(e.Fragment,null,t.map(n=>e.createElement(b,{disabled:l,key:n.id,chip:n,onContextMenuAdd:a?()=>a(n):void 0}))),S=()=>e.createElement(m,{variant:"body1",color:"textSecondary"},"There are no matches."),T=({isLoading:t,chips:l=[],disabled:a,label:n,onContextMenuAdd:d})=>{const o=f(),[c,p]=x(""),s=l.filter(u=>u.name.toLowerCase().includes(c.toLowerCase())),h=l.length>0||c;let r=null;return t?r=e.createElement(C,null):s.length>0?r=e.createElement(y,{disabled:a??!1,chips:s,onContextMenuAdd:d}):h&&(r=e.createElement(S,null)),e.createElement(i,{container:!0},e.createElement(i,{item:!0,xs:12,className:o.columnHeader},e.createElement(m,{variant:"subtitle1",className:o.subtitle},n??"Checks")),e.createElement(i,{item:!0,xs:12},e.createElement(E,{searchTerm:c,disabled:t||a,setSearchTerm:p,placeholder:"Search Available Checks",variant:"outlined",size:"small"})),e.createElement(i,{item:!0,className:o.chipContainer,xs:12},r))};export{T as ChecksSection};
2
2
  //# sourceMappingURL=ChecksSection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as E}from"@material-ui/core";import{findIndex as S}from"lodash";import n,{useCallback as u,useEffect as b}from"react";import{useFormContext as y,useFieldArray as F}from"react-hook-form";import{ChecksErrors as I}from"../../../../ChecksErrors/ChecksErrors.esm.js";import{DroppableInput as $}from"../../../../DroppableInput/DroppableInput.esm.js";const g=E(()=>({container:{display:"flex",flexDirection:"column"}})),q=({index:s,disabled:v,addedCheck:o,onRemoveCheck:i})=>{var c,d,m;const h=g(),{control:f,formState:{errors:a}}=y(),{fields:l,remove:p,append:e}=F({control:f,name:`levelsStep.levels.${s}.checks`,rules:{required:!0}}),k=u(r=>{e(r)},[e]),C=u(r=>{const x=S(l,D=>D.id===r.id);p(x),i(r)},[p,i,l]);b(()=>{o&&e(o)},[o,e]);const t=(m=(d=(c=a==null?void 0:a.levelsStep)==null?void 0:c.levels)==null?void 0:d[s])==null?void 0:m.checks;return n.createElement("div",{className:h.container},n.createElement($,{chips:l,onDelete:C,onDrop:k,error:!!t,placeholder:"Drag and drop checks here to include them in this level",disabled:v}),t&&n.createElement(I,{checksErrors:t}))};export{q as LevelChipsSection};
1
+ import{makeStyles as x}from"@material-ui/core";import{findIndex as C}from"lodash";import s,{useCallback as m,useEffect as D}from"react";import{useFormContext as E,useFieldArray as S}from"react-hook-form";import{ChecksErrors as b}from"../../../../ChecksErrors/ChecksErrors.esm.js";import{DroppableInput as y}from"../../../../DroppableInput/DroppableInput.esm.js";const F=x(()=>({container:{display:"flex",flexDirection:"column"}})),I=({index:c,disabled:a,addedCheck:o,onRemoveCheck:n})=>{const d=F(),{control:p,formState:{errors:f}}=E(),{fields:t,remove:i,append:e}=S({control:p,name:`levelsStep.levels.${c}.checks`,rules:{required:!0}}),h=m(r=>{e(r)},[e]),u=m(r=>{const k=C(t,v=>v.id===r.id);i(k),n(r)},[i,n,t]);D(()=>{o&&e(o)},[o,e]);const l=f?.levelsStep?.levels?.[c]?.checks;return s.createElement("div",{className:d.container},s.createElement(y,{chips:t,onDelete:u,onDrop:h,error:!!l,placeholder:"Drag and drop checks here to include them in this level",disabled:a}),l&&s.createElement(b,{checksErrors:l}))};export{I as LevelChipsSection};
2
2
  //# sourceMappingURL=LevelChipsSection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as L,Grid as l,Typography as $,FormHelperText as z}from"@material-ui/core";import e from"react";import{useFormContext as H,useFieldArray as T}from"react-hook-form";import{FormTextInput as S}from"../../../../FormTextInput/FormTextInput.esm.js";import{NoBorderButton as b}from"../../../../NoBorderButton/NoBorderButton.esm.js";import{LevelChipsSection as F}from"./LevelChipsSection.esm.js";const I=L(t=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{color:t.palette.text.primary},levelHeader:{display:"flex",alignItems:"center"},removeButton:{minWidth:120,display:"flex",alignItems:"center",marginLeft:t.spacing(1)},inputNameBase:{fontSize:t.typography.subtitle1.fontSize,fontWeight:700},inputDescriptionBase:{fontSize:t.typography.fontSize,fontWeight:"normal"},errorText:{color:t.palette.error.main},buttonContainer:{marginRight:t.spacing(2)}})),R=({disabled:t,addedCheck:y,onRemoveCheck:k})=>{const a=I(),{control:r,formState:{errors:i},getValues:s}=H(),{fields:o,remove:C,append:N}=T({control:r,name:"levelsStep.levels"});return e.createElement(l,{container:!0},e.createElement(l,{item:!0,xs:12,className:a.columnHeader},e.createElement($,{variant:"subtitle1",className:a.subtitle},"Levels"),e.createElement("div",{className:a.buttonContainer},!t&&e.createElement(b,{label:"Add Level",onClick:()=>N({name:`Level ${o.length+1}`,description:"",checks:[]})}))),e.createElement(l,{container:!0,item:!0,spacing:5},o.map((B,n)=>{var m,c,p,d,v,u,g,h,f,E,x;return e.createElement(l,{container:!0,item:!0,xs:12,spacing:2,key:B.id},e.createElement(l,{item:!0,xs:12,className:a.levelHeader},e.createElement(l,{container:!0,spacing:1},e.createElement(l,{item:!0,xs:!0},e.createElement(S,{name:`levelsStep.levels.${n}.name`,placeholder:"Level Name",control:r,disabled:t,variant:"outlined",size:"small",inputProps:{classes:{input:a.inputNameBase}},margin:"none",error:(p=(c=(m=i==null?void 0:i.levelsStep)==null?void 0:m.levels)==null?void 0:c[n])==null?void 0:p.name})),!t&&o.length>1&&e.createElement(l,{item:!0,className:a.removeButton},e.createElement(b,{label:"Remove Level",onClick:()=>C(n),disabled:t})))),e.createElement(l,{item:!0,xs:12},e.createElement(F,{index:n,disabled:t,addedCheck:y,onRemoveCheck:k}),((g=(u=(v=(d=i==null?void 0:i.levelsStep)==null?void 0:d.levels)==null?void 0:v[n])==null?void 0:u.checks)==null?void 0:g.message)&&e.createElement(z,{className:a.errorText},(x=(E=(f=(h=i==null?void 0:i.levelsStep)==null?void 0:h.levels)==null?void 0:f[n])==null?void 0:E.checks)==null?void 0:x.message)),e.createElement(l,{item:!0,xs:12},e.createElement(S,{name:`levelsStep.levels.${n}.description`,placeholder:"Enter description here",control:r,disabled:t,label:`${s(`levelsStep.levels.${n}.name`)}'s description`,variant:"outlined",size:"small",inputProps:{classes:{input:a.inputDescriptionBase},"aria-label":`${s(`levelsStep.levels.${n}.name`)} description`},margin:"none"})))})))};export{R as LevelsSection};
1
+ import{makeStyles as h,Grid as n,Typography as f,FormHelperText as E}from"@material-ui/core";import e from"react";import{useFormContext as b,useFieldArray as x}from"react-hook-form";import{FormTextInput as m}from"../../../../FormTextInput/FormTextInput.esm.js";import{NoBorderButton as c}from"../../../../NoBorderButton/NoBorderButton.esm.js";import{LevelChipsSection as S}from"./LevelChipsSection.esm.js";const y=h(t=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{color:t.palette.text.primary},levelHeader:{display:"flex",alignItems:"center"},removeButton:{minWidth:120,display:"flex",alignItems:"center",marginLeft:t.spacing(1)},inputNameBase:{fontSize:t.typography.subtitle1.fontSize,fontWeight:700},inputDescriptionBase:{fontSize:t.typography.fontSize,fontWeight:"normal"},errorText:{color:t.palette.error.main},buttonContainer:{marginRight:t.spacing(2)}})),k=({disabled:t,addedCheck:p,onRemoveCheck:d})=>{const a=y(),{control:r,formState:{errors:s},getValues:o}=b(),{fields:i,remove:v,append:u}=x({control:r,name:"levelsStep.levels"});return e.createElement(n,{container:!0},e.createElement(n,{item:!0,xs:12,className:a.columnHeader},e.createElement(f,{variant:"subtitle1",className:a.subtitle},"Levels"),e.createElement("div",{className:a.buttonContainer},!t&&e.createElement(c,{label:"Add Level",onClick:()=>u({name:`Level ${i.length+1}`,description:"",checks:[]})}))),e.createElement(n,{container:!0,item:!0,spacing:5},i.map((g,l)=>e.createElement(n,{container:!0,item:!0,xs:12,spacing:2,key:g.id},e.createElement(n,{item:!0,xs:12,className:a.levelHeader},e.createElement(n,{container:!0,spacing:1},e.createElement(n,{item:!0,xs:!0},e.createElement(m,{name:`levelsStep.levels.${l}.name`,placeholder:"Level Name",control:r,disabled:t,variant:"outlined",size:"small",inputProps:{classes:{input:a.inputNameBase}},margin:"none",error:s?.levelsStep?.levels?.[l]?.name})),!t&&i.length>1&&e.createElement(n,{item:!0,className:a.removeButton},e.createElement(c,{label:"Remove Level",onClick:()=>v(l),disabled:t})))),e.createElement(n,{item:!0,xs:12},e.createElement(S,{index:l,disabled:t,addedCheck:p,onRemoveCheck:d}),s?.levelsStep?.levels?.[l]?.checks?.message&&e.createElement(E,{className:a.errorText},s?.levelsStep?.levels?.[l]?.checks?.message)),e.createElement(n,{item:!0,xs:12},e.createElement(m,{name:`levelsStep.levels.${l}.description`,placeholder:"Enter description here",control:r,disabled:t,label:`${o(`levelsStep.levels.${l}.name`)}'s description`,variant:"outlined",size:"small",inputProps:{classes:{input:a.inputDescriptionBase},"aria-label":`${o(`levelsStep.levels.${l}.name`)} description`},margin:"none"}))))))};export{k as LevelsSection};
2
2
  //# sourceMappingURL=LevelsSection.esm.js.map
@@ -1,2 +1,2 @@
1
- import a from"react";import{useFormContext as c}from"react-hook-form";import{FormMarkdownInput as l}from"../../../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as m}from"../../../utils/trackFormUtils.esm.js";const s=({isLoading:e,disabled:r})=>{var o;const{control:t,formState:{errors:i}}=c(),{name:n,description:p,placeholder:d}=m.description;return a.createElement(l,{name:"detailsStep.description",control:t,error:(o=i.detailsStep)==null?void 0:o.description,label:n,description:p,placeholder:r?void 0:d,disabled:r||e})};export{s as TrackDescriptionInput};
1
+ import d from"react";import{useFormContext as m}from"react-hook-form";import{FormMarkdownInput as s}from"../../../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as a}from"../../../utils/trackFormUtils.esm.js";const c=({isLoading:e,disabled:r})=>{const{control:o,formState:{errors:t}}=m(),{name:i,description:n,placeholder:p}=a.description;return d.createElement(s,{name:"detailsStep.description",control:o,error:t.detailsStep?.description,label:i,description:n,placeholder:r?void 0:p,disabled:r||e})};export{c as TrackDescriptionInput};
2
2
  //# sourceMappingURL=TrackDescriptionInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as a}from"@material-ui/core/styles";import e from"react";import{useTrackFormContext as m}from"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import"../../../../contexts/UserProvider.esm.js";import{TrackDescriptionInput as l}from"./TrackDescriptionInput/TrackDescriptionInput.esm.js";import{TrackDocumentationUrlInput as c}from"./TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js";import{TrackNameInput as s}from"./TrackNameInput/TrackNameInput.esm.js";import{TrackOwnerSelect as p}from"./TrackOwnerSelect/TrackOwnerSelect.esm.js";const d=a(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)}})),f=()=>{var t;const n=d(),{isLoading:r,isReadOnly:o,selectedItem:i}=m();return e.createElement("div",{className:n.container},e.createElement(s,{disabled:o,isLoading:r}),e.createElement(l,{isLoading:r,disabled:o}),e.createElement(p,{disabled:r||o,ownerEntityRef:(t=i==null?void 0:i.ownerEntityRef)!=null?t:void 0}),e.createElement(c,{isLoading:r,disabled:o}))};export{f as TrackDetailsStep};
1
+ import{makeStyles as n}from"@material-ui/core/styles";import e from"react";import{useTrackFormContext as a}from"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import"../../../../contexts/UserProvider.esm.js";import{TrackDescriptionInput as m}from"./TrackDescriptionInput/TrackDescriptionInput.esm.js";import{TrackDocumentationUrlInput as c}from"./TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js";import{TrackNameInput as l}from"./TrackNameInput/TrackNameInput.esm.js";import{TrackOwnerSelect as s}from"./TrackOwnerSelect/TrackOwnerSelect.esm.js";const p=n(o=>({container:{display:"flex",flexDirection:"column",gap:o.spacing(2)}})),d=()=>{const o=p(),{isLoading:t,isReadOnly:r,selectedItem:i}=a();return e.createElement("div",{className:o.container},e.createElement(l,{disabled:r,isLoading:t}),e.createElement(m,{isLoading:t,disabled:r}),e.createElement(s,{disabled:t||r,ownerEntityRef:i?.ownerEntityRef??void 0}),e.createElement(c,{isLoading:t,disabled:r}))};export{d as TrackDetailsStep};
2
2
  //# sourceMappingURL=TrackDetailsStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as v,Typography as m}from"@material-ui/core";import e from"react";import{useFormContext as f}from"react-hook-form";import{FormTextInput as g}from"../../../../FormTextInput/FormTextInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as x}from"../../../utils/trackFormUtils.esm.js";const E=v(o=>({container:{display:"flex",flexDirection:"column"},fieldContainer:{width:"300px",marginTop:o.spacing(1)}})),L=({isLoading:o,disabled:d})=>{var n,r,i,a;const l=E(),{control:c,formState:{errors:t}}=f(),{name:s,description:p,placeholder:u}=x.documentationURL;return e.createElement("div",{className:l.container},e.createElement("div",null,e.createElement(m,{variant:"subtitle2"},s),e.createElement(m,{variant:"caption"},p)),e.createElement("div",{className:l.fieldContainer},e.createElement(g,{name:"detailsStep.documentationURL",control:c,placeholder:u,disabled:d||o,variant:"outlined",margin:"dense",error:(n=t==null?void 0:t.detailsStep)==null?void 0:n.documentationURL,helperText:(a=(i=(r=t==null?void 0:t.detailsStep)==null?void 0:r.documentationURL)==null?void 0:i.message)!=null?a:void 0})))};export{L as TrackDocumentationUrlInput};
1
+ import{makeStyles as d,Typography as r}from"@material-ui/core";import e from"react";import{useFormContext as s}from"react-hook-form";import{FormTextInput as p}from"../../../../FormTextInput/FormTextInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as u}from"../../../utils/trackFormUtils.esm.js";const f=d(t=>({container:{display:"flex",flexDirection:"column"},fieldContainer:{width:"300px",marginTop:t.spacing(1)}})),v=({isLoading:t,disabled:a})=>{const n=f(),{control:i,formState:{errors:o}}=s(),{name:m,description:l,placeholder:c}=u.documentationURL;return e.createElement("div",{className:n.container},e.createElement("div",null,e.createElement(r,{variant:"subtitle2"},m),e.createElement(r,{variant:"caption"},l)),e.createElement("div",{className:n.fieldContainer},e.createElement(p,{name:"detailsStep.documentationURL",control:i,placeholder:c,disabled:a||t,variant:"outlined",margin:"dense",error:o?.detailsStep?.documentationURL,helperText:o?.detailsStep?.documentationURL?.message??void 0})))};export{v as TrackDocumentationUrlInput};
2
2
  //# sourceMappingURL=TrackDocumentationUrlInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as m,TextField as T}from"@material-ui/core";import{makeStyles as g}from"@material-ui/core/styles";import e from"react";import{useFormContext as h,Controller as v}from"react-hook-form";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as E}from"../../../utils/trackFormUtils.esm.js";const S=g(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)},helperText:{marginLeft:0},field:{marginTop:"-10px"}})),y=({disabled:t,isLoading:p})=>{const r=S(),{control:d,formState:{errors:l}}=h(),{placeholder:s,name:c,description:f,helperText:u}=E.name;return e.createElement("div",{className:r.container},e.createElement("div",null,e.createElement(m,{variant:"subtitle2"},c),e.createElement(m,{variant:"caption"},f)),e.createElement(v,{name:"detailsStep.name",control:d,defaultValue:"",render:({field:x})=>{var a,n,o,i;return e.createElement(T,{...x,FormHelperTextProps:{className:r.helperText},className:r.field,variant:"outlined",margin:"dense",fullWidth:!0,placeholder:s,disabled:p||t,type:"text",error:!!((a=l.detailsStep)!=null&&a.name),helperText:(i=(o=(n=l.detailsStep)==null?void 0:n.name)==null?void 0:o.message)!=null?i:u})}}))};export{y as TrackNameInput};
1
+ import{Typography as l,TextField as d}from"@material-ui/core";import{makeStyles as f}from"@material-ui/core/styles";import e from"react";import{useFormContext as x,Controller as u}from"react-hook-form";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as T}from"../../../utils/trackFormUtils.esm.js";const g=f(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)},helperText:{marginLeft:0},field:{marginTop:"-10px"}})),h=({disabled:t,isLoading:n})=>{const r=g(),{control:o,formState:{errors:a}}=x(),{placeholder:i,name:m,description:p,helperText:s}=T.name;return e.createElement("div",{className:r.container},e.createElement("div",null,e.createElement(l,{variant:"subtitle2"},m),e.createElement(l,{variant:"caption"},p)),e.createElement(u,{name:"detailsStep.name",control:o,defaultValue:"",render:({field:c})=>e.createElement(d,{...c,FormHelperTextProps:{className:r.helperText},className:r.field,variant:"outlined",margin:"dense",fullWidth:!0,placeholder:i,disabled:n||t,type:"text",error:!!a.detailsStep?.name,helperText:a.detailsStep?.name?.message??s})}))};export{h as TrackNameInput};
2
2
  //# sourceMappingURL=TrackNameInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as S}from"@backstage/catalog-model";import{Typography as u}from"@material-ui/core";import{makeStyles as g}from"@material-ui/core/styles";import{uniqBy as b}from"lodash";import t from"react";import{useFormContext as w}from"react-hook-form";import"../../../../../contexts/TrackFormContext.esm.js";import"../../../../../contexts/CheckFormContext.esm.js";import"../../../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as R}from"../../../../../contexts/UserProvider.esm.js";import{FormControlledSelect as x}from"../../../../FormControlledSelect/FormControlledSelect.esm.js";import{useOptions as T}from"../../../../GroupSelector/useOptions.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as C}from"../../../utils/trackFormUtils.esm.js";const F=g(n=>({container:{display:"flex",flexDirection:"column",gap:n.spacing(1)}})),L=({disabled:n,ownerEntityRef:o})=>{var l,a,m;const d=F(),{options:f,isLoading:p}=T(),{user:s,userEntityRef:i}=R(),{control:v,formState:{errors:c}}=w();let e=b(f.map(r=>({value:r.ref,label:r.name})),"value");i&&(e=[{value:i,label:s==null?void 0:s.metadata.name},...e]),o&&i!==o&&!e.some(r=>r.value===o)&&(e=[{value:o,label:S(o).name},...e]);const{name:E,description:y}=C.owner;return t.createElement("div",{className:d.container},t.createElement("div",null,t.createElement(u,{variant:"subtitle2"},E),t.createElement(u,{variant:"caption"},y)),t.createElement("div",null,t.createElement(x,{name:"detailsStep.ownerEntityRef",control:v,options:p?void 0:e,disabled:n||p,helperText:(m=(a=(l=c==null?void 0:c.detailsStep)==null?void 0:l.ownerEntityRef)==null?void 0:a.message)!=null?m:void 0})))};export{L as TrackOwnerSelect};
1
+ import{parseEntityRef as v}from"@backstage/catalog-model";import{Typography as m}from"@material-ui/core";import{makeStyles as E}from"@material-ui/core/styles";import{uniqBy as y}from"lodash";import t from"react";import{useFormContext as g}from"react-hook-form";import"../../../../../contexts/TrackFormContext.esm.js";import"../../../../../contexts/CheckFormContext.esm.js";import"../../../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as S}from"../../../../../contexts/UserProvider.esm.js";import{FormControlledSelect as b}from"../../../../FormControlledSelect/FormControlledSelect.esm.js";import{useOptions as R}from"../../../../GroupSelector/useOptions.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as w}from"../../../utils/trackFormUtils.esm.js";const x=E(n=>({container:{display:"flex",flexDirection:"column",gap:n.spacing(1)}})),F=({disabled:n,ownerEntityRef:o})=>{const l=x(),{options:p,isLoading:i}=R(),{user:s,userEntityRef:a}=S(),{control:c,formState:{errors:f}}=g();let e=y(p.map(r=>({value:r.ref,label:r.name})),"value");a&&(e=[{value:a,label:s?.metadata.name},...e]),o&&a!==o&&!e.some(r=>r.value===o)&&(e=[{value:o,label:v(o).name},...e]);const{name:d,description:u}=w.owner;return t.createElement("div",{className:l.container},t.createElement("div",null,t.createElement(m,{variant:"subtitle2"},d),t.createElement(m,{variant:"caption"},u)),t.createElement("div",null,t.createElement(b,{name:"detailsStep.ownerEntityRef",control:c,options:i?void 0:e,disabled:n||i,helperText:f?.detailsStep?.ownerEntityRef?.message??void 0})))};export{F as TrackOwnerSelect};
2
2
  //# sourceMappingURL=TrackOwnerSelect.esm.js.map
@@ -1,2 +1,2 @@
1
- import{zodResolver as v}from"@hookform/resolvers/zod";import{useMemo as S,useEffect as h}from"react";import{useForm as k}from"react-hook-form";import{v4 as R}from"uuid";import{useTrackFormContext as y}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as E}from"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as F}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetChecksMap as L}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{mapInputFilterToFormFilters as w,mapFiltersToInputFilter as T}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{trackFormSchema as g}from"./validation.esm.js";const u={detailsStep:{name:"",description:"",ownerEntityRef:""},levelsStep:{levels:[{name:"Level 1",description:"",checks:[]}]},filtersStep:{}},M=({name:o,description:e,ownerEntityRef:a,filter:r,levels:i,documentationURL:m})=>({detailsStep:{name:o,ownerEntityRef:a,description:e!=null?e:"",documentationURL:m!=null?m:void 0},levelsStep:{levels:(i==null?void 0:i.map(l=>{var n,c,p;return{name:(c=(n=l.name)!=null?n:`Level ${l.ordinal}`)!=null?c:"Level 1",description:(p=l.description)!=null?p:"",checks:l.checks.map(s=>{var t,d;return{id:s.id,name:(t=s.name)!=null?t:s.id,description:(d=s.description)!=null?d:""}})}}))||[]},filtersStep:{filter:w(r)}}),f=(o,e,a)=>{var r,i,m,l;return{id:(r=a==null?void 0:a.id)!=null?r:R(),ownerEntityRef:o.detailsStep.ownerEntityRef,description:o.detailsStep.description,name:o.detailsStep.name,documentationURL:(i=o.detailsStep.documentationURL)!=null?i:"",type:(m=a==null?void 0:a.type)!=null?m:"standard",levels:(l=o.levelsStep.levels)==null?void 0:l.map((n,c)=>{var p,s;return{ordinal:c+1,name:(p=n.name)!=null?p:"",description:(s=n.description)!=null?s:"",checks:n.checks.map(t=>e[t.id])}}),filter:T(o.filtersStep.filter)}},C=o=>{const{selectedItem:e}=y(),a=S(()=>e?M(e):u,[e]),r=k({defaultValues:a,mode:"onChange",resolver:v(g)}),{userEntityRef:i}=E();h(()=>{!e&&i&&!r.getValues("detailsStep.ownerEntityRef")&&r.setValue("detailsStep.ownerEntityRef",i)},[e,i,r]);const{checkChips:m,checksLoading:l,checksMap:n}=L(),c=new Set(r.getValues("levelsStep.levels").flatMap(t=>t.checks.map(d=>d.id))),p=m.filter(t=>!c.has(t.id)),{showModal:s}=F();return{formMethods:r,onSubmit:async t=>{if(!await s({title:"Save Track",message:`Are you sure you want to save track: ${t.detailsStep.name}?`,error:!1}))return;const d=f(t,n!=null?n:{},e);o(d)},selectableChips:p,checksLoading:l}};export{u as DEFAULT_TRACK_FORM_VALUES,f as mapTrackFormToInput,C as useTrackForm};
1
+ import{zodResolver as S}from"@hookform/resolvers/zod";import{useMemo as v,useEffect as h}from"react";import{useForm as k}from"react-hook-form";import{v4 as R}from"uuid";import{useTrackFormContext as y}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as F}from"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetChecksMap as w}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{mapInputFilterToFormFilters as E,mapFiltersToInputFilter as T}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{trackFormSchema as g}from"./validation.esm.js";const l={detailsStep:{name:"",description:"",ownerEntityRef:""},levelsStep:{levels:[{name:"Level 1",description:"",checks:[]}]},filtersStep:{}},M=({name:t,description:o,ownerEntityRef:r,filter:e,levels:i,documentationURL:a})=>({detailsStep:{name:t,ownerEntityRef:r,description:o??"",documentationURL:a??void 0},levelsStep:{levels:i?.map(s=>({name:s.name??`Level ${s.ordinal}`??"Level 1",description:s.description??"",checks:s.checks.map(n=>({id:n.id,name:n.name??n.id,description:n.description??""}))}))||[]},filtersStep:{filter:E(e)}}),c=(t,o,r)=>({id:r?.id??R(),ownerEntityRef:t.detailsStep.ownerEntityRef,description:t.detailsStep.description,name:t.detailsStep.name,documentationURL:t.detailsStep.documentationURL??"",type:r?.type??"standard",levels:t.levelsStep.levels?.map((e,i)=>({ordinal:i+1,name:e.name??"",description:e.description??"",checks:e.checks.map(a=>o[a.id])})),filter:T(t.filtersStep.filter)}),C=t=>{const{selectedItem:o}=y(),r=v(()=>o?M(o):l,[o]),e=k({defaultValues:r,mode:"onChange",resolver:S(g)}),{userEntityRef:i}=F();h(()=>{!o&&i&&!e.getValues("detailsStep.ownerEntityRef")&&e.setValue("detailsStep.ownerEntityRef",i)},[o,i,e]);const{checkChips:a,checksLoading:s,checksMap:n}=w(),d=new Set(e.getValues("levelsStep.levels").flatMap(m=>m.checks.map(p=>p.id))),f=a.filter(m=>!d.has(m.id)),{showModal:u}=L();return{formMethods:e,onSubmit:async m=>{if(!await u({title:"Save Track",message:`Are you sure you want to save track: ${m.detailsStep.name}?`,error:!1}))return;const p=c(m,n??{},o);t(p)},selectableChips:f,checksLoading:s}};export{l as DEFAULT_TRACK_FORM_VALUES,c as mapTrackFormToInput,C as useTrackForm};
2
2
  //# sourceMappingURL=useTrackForm.esm.js.map
@@ -1,2 +1,2 @@
1
- import t from"react";import{trackPassRatesSummaryCsvFilename as i}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{TrackPassRateHistoryLineChart as l}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"@backstage/catalog-model";import"luxon";import{useSummaryAggregationsContext as n}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import{TrackSummaryBarChart as p}from"../Charts/BarChart/TrackSummaryBarChart.esm.js";import{OverviewChartCard as c}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallTrackPassRatesToCsv as v}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const u=()=>{var a;const{trackPassRateOverviewTrend:{data:r,isLoading:e,isError:o}}=n(),m=(a=r==null?void 0:r.overallTrackPassRate)==null?void 0:a.length,s=!(r!=null&&r.overallTrackPassRate)||!m||e||o;return t.createElement(c,{title:"Track pass rate",subtitle:"Aggregate pass rate for tracks",summaryCardContent:t.createElement(p,null),chartSectionContent:t.createElement(l,null),disableDataExport:s,csvFilename:i,csvData:v(r)})};export{u as TrackHistoryChartCard};
1
+ import t from"react";import{trackPassRatesSummaryCsvFilename as s}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{TrackPassRateHistoryLineChart as i}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"@backstage/catalog-model";import"luxon";import{useSummaryAggregationsContext as n}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import{TrackSummaryBarChart as p}from"../Charts/BarChart/TrackSummaryBarChart.esm.js";import{OverviewChartCard as c}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallTrackPassRatesToCsv as l}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const C=()=>{const{trackPassRateOverviewTrend:{data:r,isLoading:a,isError:e}}=n(),o=r?.overallTrackPassRate?.length,m=!r?.overallTrackPassRate||!o||a||e;return t.createElement(c,{title:"Track pass rate",subtitle:"Aggregate pass rate for tracks",summaryCardContent:t.createElement(p,null),chartSectionContent:t.createElement(i,null),disableDataExport:m,csvFilename:s,csvData:l(r)})};export{C as TrackHistoryChartCard};
2
2
  //# sourceMappingURL=TrackHistoryChartCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as S}from"@backstage/catalog-model";import{EntityDisplayName as I}from"@backstage/plugin-catalog-react";import{makeStyles as B,Typography as C,Checkbox as D}from"@material-ui/core";import G from"@material-ui/icons/Category";import M from"@material-ui/icons/Class";import N from"@material-ui/icons/Group";import Q from"@material-ui/icons/Loop";import{toEntityFilterQuery as $}from"@spotify/backstage-plugin-soundcheck-common";import e,{useMemo as j}from"react";import{useGetEntityFacets as r}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import n from"../../MultiSelectFilter/MultiSelectFilter.esm.js";const q=B(t=>({root:{display:"flex",flexDirection:"row",alignItems:"center",gap:t.spacing(2)}})),p=(t,{selected:i})=>e.createElement(e.Fragment,null,e.createElement(D,{value:t,checked:i,color:"primary"}),e.createElement(I,{entityRef:t,hideIcon:!0})),z=({track:t,label:i,owners:y,setOwners:f,lifecycles:d,setLifecycles:u,types:E,setTypes:g,systems:b,setSystems:h})=>{const w=q(),l=$(t.filter),{data:c,isLoading:F}=r("relations.ownedBy",l),{data:o,isLoading:L}=r("spec.lifecycle",l),{data:s,isLoading:k}=r("spec.type",l),{data:a,isLoading:v}=r("relations.partOf",l),m=j(()=>a==null?void 0:a.filter(R=>{try{return S(R).kind.toLowerCase()==="system"}catch{return!1}}),[a]),O=(o||[]).length<=1,T=(s||[]).length<=1,x=(m||[]).length<=1;return e.createElement("div",{className:w.root},e.createElement(C,{variant:"caption"},`${i}:`),e.createElement(n,{name:"system",label:"System",icon:e.createElement(G,null),filters:b,setFilters:h,options:m!=null?m:[],disabled:v||x,customRenderOption:p}),e.createElement(n,{name:"owner",label:"Owner",icon:e.createElement(N,null),filters:y,setFilters:f,options:c!=null?c:[],disabled:F,customRenderOption:p}),e.createElement(n,{name:"type",label:"Type",icon:e.createElement(M,null),filters:E,setFilters:g,options:s!=null?s:[],disabled:k||T}),e.createElement(n,{name:"lifecycle",label:"Lifecycle",icon:e.createElement(Q,null),filters:d,setFilters:u,options:o!=null?o:[],disabled:L||O}))};export{z as FilterBar};
1
+ import{parseEntityRef as T}from"@backstage/catalog-model";import{EntityDisplayName as I}from"@backstage/plugin-catalog-react";import{makeStyles as $,Typography as B,Checkbox as C}from"@material-ui/core";import D from"@material-ui/icons/Category";import G from"@material-ui/icons/Class";import M from"@material-ui/icons/Group";import N from"@material-ui/icons/Loop";import{toEntityFilterQuery as j}from"@spotify/backstage-plugin-soundcheck-common";import e,{useMemo as P}from"react";import{useGetEntityFacets as l}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import i from"../../MultiSelectFilter/MultiSelectFilter.esm.js";const Q=$(t=>({root:{display:"flex",flexDirection:"row",alignItems:"center",gap:t.spacing(2)}})),c=(t,{selected:n})=>e.createElement(e.Fragment,null,e.createElement(C,{value:t,checked:n,color:"primary"}),e.createElement(I,{entityRef:t,hideIcon:!0})),q=({track:t,label:n,owners:p,setOwners:y,lifecycles:f,setLifecycles:d,types:E,setTypes:u,systems:g,setSystems:b})=>{const h=Q(),r=j(t.filter),{data:w,isLoading:F}=l("relations.ownedBy",r),{data:o,isLoading:L}=l("spec.lifecycle",r),{data:s,isLoading:O}=l("spec.type",r),{data:a,isLoading:k}=l("relations.partOf",r),m=P(()=>a?.filter(S=>{try{return T(S).kind.toLowerCase()==="system"}catch{return!1}}),[a]),v=(o||[]).length<=1,x=(s||[]).length<=1,R=(m||[]).length<=1;return e.createElement("div",{className:h.root},e.createElement(B,{variant:"caption"},`${n}:`),e.createElement(i,{name:"system",label:"System",icon:e.createElement(D,null),filters:g,setFilters:b,options:m??[],disabled:k||R,customRenderOption:c}),e.createElement(i,{name:"owner",label:"Owner",icon:e.createElement(M,null),filters:p,setFilters:y,options:w??[],disabled:F,customRenderOption:c}),e.createElement(i,{name:"type",label:"Type",icon:e.createElement(G,null),filters:E,setFilters:u,options:s??[],disabled:O||x}),e.createElement(i,{name:"lifecycle",label:"Lifecycle",icon:e.createElement(N,null),filters:f,setFilters:d,options:o??[],disabled:L||v}))};export{q as FilterBar};
2
2
  //# sourceMappingURL=FilterBar.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as P}from"@backstage/catalog-model";import{Table as z}from"@backstage/core-components";import{makeStyles as D}from"@material-ui/core";import F from"lodash";import v,{useState as x,useEffect as N,useCallback as I}from"react";import{TrackEntityField as s,Direction as h}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as W}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as j}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as c}from"./columns.esm.js";import{toTrackEntityRow as A}from"./utils.esm.js";const _=[c.createBadgeColumn(),c.createNameColumn(),c.createStatusColumn(),c.createSystemColumn(),c.createOwnerColumn(),c.createSpecTypeColumn(),c.createSpecLifecycleColumn()],$=[s.CertificationLevel,s.Name,s.CheckPassRate,s.System,s.Owner,s.Type,s.Lifecycle],E=f=>{const{lifecycles:r,owners:i,types:a,systems:l}=f,d=r!=null&&r.length?{"spec.lifecycle":r}:void 0,u=i!=null&&i.length?{"relations.ownedBy":i}:void 0,g=a!=null&&a.length?{"spec.type":a}:void 0,m=l!=null&&l.length?{"relations.partOf":l}:void 0;return{...d,...u,...g,...m}},q=D({tableContainer:{display:"flex",flexDirection:"column",height:"100%",width:"99%"}}),G=({track:f,lifecycles:r,owners:i,types:a,systems:l})=>{var d,u,g;const m=q(),[e,y]=x({orderBy:void 0,filter:E({lifecycles:r,owners:i,types:a,systems:l}),pageInfo:{page:0,pageSize:25,direction:"forward",cursor:null}});N(()=>{y(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:E({lifecycles:r,owners:i,types:a,systems:l})}))},[r,i,a,l]);const{data:o,isLoading:S}=j({trackId:f.id,orderBy:e.orderBy,filter:e.filter,[e.pageInfo.direction==="forward"?"first":"last"]:e.pageInfo.pageSize,[e.pageInfo.direction==="forward"?"after":"before"]:e.pageInfo.cursor}),T=I((t,p)=>{let n;t===-1?n=void 0:n={field:$[t],direction:p==="asc"?h.Asc:h.Desc},y({...e,orderBy:n,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),b=I((t,p)=>{var n,w;const C=t>e.pageInfo.page?"forward":"backward",O=C==="forward"?(n=o==null?void 0:o.trackEntities.pageInfo.endCursor)!=null?n:null:(w=o==null?void 0:o.trackEntities.pageInfo.startCursor)!=null?w:null;y({...e,pageInfo:{page:t,pageSize:p,direction:C,cursor:O}})},[o,e]),B=(d=o==null?void 0:o.trackEntities.edges.map(t=>t.node.entityRef))!=null?d:[],{data:k,isLoading:R}=W({entityRefs:B}),L=(u=F.compact(o==null?void 0:o.trackEntities.edges.map(t=>{const p=k==null?void 0:k.items.find(n=>!!n&&P(n)===t.node.entityRef);return p?A({trackDetails:t.node,track:f,entity:p}):void 0})))!=null?u:[];return v.createElement("div",{className:m.tableContainer},v.createElement(z,{columns:_,data:L,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:25,search:!1,showTitle:!1,padding:"dense"},onOrderChange:T,onPageChange:b,page:e.pageInfo.page,totalCount:(g=o==null?void 0:o.trackEntities.totalCount)!=null?g:0,isLoading:S||R,components:{Toolbar:()=>null}}))};export{G as TrackEntitiesTable};
1
+ import{stringifyEntityRef as v}from"@backstage/catalog-model";import{Table as B}from"@backstage/core-components";import{makeStyles as R}from"@material-ui/core";import L from"lodash";import m,{useState as z,useEffect as O,useCallback as y}from"react";import{TrackEntityField as n,Direction as u}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as P}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as x}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as a}from"./columns.esm.js";import{toTrackEntityRow as D}from"./utils.esm.js";const N=[a.createBadgeColumn(),a.createNameColumn(),a.createStatusColumn(),a.createSystemColumn(),a.createOwnerColumn(),a.createSpecTypeColumn(),a.createSpecLifecycleColumn()],F=[n.CertificationLevel,n.Name,n.CheckPassRate,n.System,n.Owner,n.Type,n.Lifecycle],w=d=>{const{lifecycles:i,owners:s,types:c,systems:l}=d,g=i?.length?{"spec.lifecycle":i}:void 0,e=s?.length?{"relations.ownedBy":s}:void 0,f=c?.length?{"spec.type":c}:void 0,r=l?.length?{"relations.partOf":l}:void 0;return{...g,...e,...f,...r}},A=R({tableContainer:{display:"flex",flexDirection:"column",height:"100%",width:"99%"}}),W=({track:d,lifecycles:i,owners:s,types:c,systems:l})=>{const g=A(),[e,f]=z({orderBy:void 0,filter:w({lifecycles:i,owners:s,types:c,systems:l}),pageInfo:{page:0,pageSize:25,direction:"forward",cursor:null}});O(()=>{f(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:w({lifecycles:i,owners:s,types:c,systems:l})}))},[i,s,c,l]);const{data:r,isLoading:C}=x({trackId:d.id,orderBy:e.orderBy,filter:e.filter,[e.pageInfo.direction==="forward"?"first":"last"]:e.pageInfo.pageSize,[e.pageInfo.direction==="forward"?"after":"before"]:e.pageInfo.cursor}),k=y((t,p)=>{let o;t===-1?o=void 0:o={field:F[t],direction:p==="asc"?u.Asc:u.Desc},f({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),h=y((t,p)=>{const o=t>e.pageInfo.page?"forward":"backward",b=o==="forward"?r?.trackEntities.pageInfo.endCursor??null:r?.trackEntities.pageInfo.startCursor??null;f({...e,pageInfo:{page:t,pageSize:p,direction:o,cursor:b}})},[r,e]),I=r?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:E,isLoading:S}=P({entityRefs:I}),T=L.compact(r?.trackEntities.edges.map(t=>{const p=E?.items.find(o=>!!o&&v(o)===t.node.entityRef);return p?D({trackDetails:t.node,track:d,entity:p}):void 0}))??[];return m.createElement("div",{className:g.tableContainer},m.createElement(B,{columns:N,data:T,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:25,search:!1,showTitle:!1,padding:"dense"},onOrderChange:k,onPageChange:h,page:e.pageInfo.page,totalCount:r?.trackEntities.totalCount??0,isLoading:C||S,components:{Toolbar:()=>null}}))};export{W as TrackEntitiesTable};
2
2
  //# sourceMappingURL=TrackEntitiesTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as b,lighten as h,darken as R,Typography as r}from"@material-ui/core";import a,{useState as E,useRef as S}from"react";import C from"../../RichTooltip/RichTooltip.esm.js";import{getProgressColor as i}from"../utils.esm.js";const g=e=>{const t=e.passed+e.failed+e.warning+e.notReported;return t===0?100:Math.round(e.passed/t*100)},L=(e,t)=>e.levels.find(l=>l.ordinal===t),k=b(e=>({cell:{backgroundColor:({passRate:t})=>i(e,t),color:({passRate:t})=>e.palette.getContrastText(i(e,t)),cursor:"default",borderRadius:"4px",textAlign:"center",fontSize:".9rem",width:"50px"},tooltip:{width:"225px"},topLevelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingBottom:e.spacing(1)},levelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingTop:e.spacing(1),paddingBottom:e.spacing(1)},bottomLevelStatus:{paddingTop:e.spacing(1)},levelPassRate:{backgroundColor:({passRate:t})=>h(i(e,t),.75),color:({passRate:t})=>R(i(e,t),.7),borderRadius:"4px",textAlign:"center",fontSize:".7rem",width:"32px",height:"15px"}})),T=({track:e,status:t})=>{const l=g(t),s=k({passRate:l}),[v,p]=E(!1),d=S(null),f=()=>{d.current=setTimeout(()=>p(!0),500)},y=()=>{clearTimeout(d.current),p(!1)};return a.createElement(C,{content:a.createElement("div",{className:s.tooltip},t.statusByLevel.map((o,c)=>{var m;let n;c===0?n=s.topLevelStatus:c===t.statusByLevel.length-1?n=s.bottomLevelStatus:n=s.levelStatus;const x=o.passed+o.failed+o.warning+o.notReported,u=L(e,o.ordinal);return a.createElement("div",{key:c,className:n,style:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},a.createElement("div",null,a.createElement(r,{variant:"caption",style:{fontWeight:"bold"}},(m=u==null?void 0:u.name)!=null?m:`Level ${o.ordinal}`)),a.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.createElement(r,{variant:"caption"},`Passing ${o.passed} of ${x} checks`),a.createElement(r,{className:s.levelPassRate},`${g(o)}%`)))})),open:v,placement:"bottom",onClose:()=>p(!1)},a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},onMouseEnter:f,onMouseLeave:y},a.createElement(r,{className:s.cell},`${l}%`)))};export{T as TrackStatusChip};
1
+ import{makeStyles as x,lighten as b,darken as h,Typography as r}from"@material-ui/core";import a,{useState as R,useRef as E}from"react";import S from"../../RichTooltip/RichTooltip.esm.js";import{getProgressColor as i}from"../utils.esm.js";const m=e=>{const t=e.passed+e.failed+e.warning+e.notReported;return t===0?100:Math.round(e.passed/t*100)},C=(e,t)=>e.levels.find(n=>n.ordinal===t),L=x(e=>({cell:{backgroundColor:({passRate:t})=>i(e,t),color:({passRate:t})=>e.palette.getContrastText(i(e,t)),cursor:"default",borderRadius:"4px",textAlign:"center",fontSize:".9rem",width:"50px"},tooltip:{width:"225px"},topLevelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingBottom:e.spacing(1)},levelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingTop:e.spacing(1),paddingBottom:e.spacing(1)},bottomLevelStatus:{paddingTop:e.spacing(1)},levelPassRate:{backgroundColor:({passRate:t})=>b(i(e,t),.75),color:({passRate:t})=>h(i(e,t),.7),borderRadius:"4px",textAlign:"center",fontSize:".7rem",width:"32px",height:"15px"}})),k=({track:e,status:t})=>{const n=m(t),s=L({passRate:n}),[u,p]=R(!1),d=E(null),g=()=>{d.current=setTimeout(()=>p(!0),500)},v=()=>{clearTimeout(d.current),p(!1)};return a.createElement(S,{content:a.createElement("div",{className:s.tooltip},t.statusByLevel.map((o,c)=>{let l;c===0?l=s.topLevelStatus:c===t.statusByLevel.length-1?l=s.bottomLevelStatus:l=s.levelStatus;const f=o.passed+o.failed+o.warning+o.notReported,y=C(e,o.ordinal);return a.createElement("div",{key:c,className:l,style:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},a.createElement("div",null,a.createElement(r,{variant:"caption",style:{fontWeight:"bold"}},y?.name??`Level ${o.ordinal}`)),a.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.createElement(r,{variant:"caption"},`Passing ${o.passed} of ${f} checks`),a.createElement(r,{className:s.levelPassRate},`${m(o)}%`)))})),open:u,placement:"bottom",onClose:()=>p(!1)},a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},onMouseEnter:g,onMouseLeave:v},a.createElement(r,{className:s.cell},`${n}%`)))};export{k as TrackStatusChip};
2
2
  //# sourceMappingURL=TrackStatusChip.esm.js.map
@@ -1,2 +1,2 @@
1
- import{OverflowTooltip as d}from"@backstage/core-components";import{EntityRefLink as u,EntityRefLinks as m}from"@backstage/plugin-catalog-react";import{makeStyles as c,Chip as s}from"@material-ui/core";import r from"react";import{LevelBadge as p}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as f}from"../../Badges/NoLevelBadge.esm.js";import"../../Badges/CampaignBadge.esm.js";import{TrackStatusChip as y}from"./TrackStatusChip.esm.js";const i=c(()=>({linkHover:{"& span":{"&:hover":{textDecoration:"underline"}}}})),g=Object.freeze({createBadgeColumn(){return{title:"",field:"badge",render:e=>e.badge?r.createElement(p,{badge:e.badge}):r.createElement(f,null),width:"auto",align:"center",sorting:!1}},createStatusColumn(){return{title:"Checks",field:"status",render:e=>e.status&&r.createElement(y,{track:e.track,status:e.status}),width:"auto",align:"center",sorting:!1}},createNameColumn(e){return{title:"Name",field:"resolved.entityRef",highlight:!0,customSort(t,a){return 0},render:({entity:t})=>{const a=i();return r.createElement(u,{entityRef:t,defaultKind:(e==null?void 0:e.defaultKind)||"Component",className:a.linkHover})}}},createSystemColumn(){return{title:"System",field:"resolved.partOfSystemRelationTitle",customSort(e,t){return 0},render:({resolved:e})=>{const t=i();return r.createElement(m,{entityRefs:e.partOfSystemRelations,defaultKind:"system",className:t.linkHover})}}},createOwnerColumn(){return{title:"Owner",field:"resolved.ownedByRelationsTitle",customSort(e,t){return 0},render:({resolved:e})=>{const t=i();return r.createElement(m,{entityRefs:e.ownedByRelations,defaultKind:"group",className:t.linkHover})}}},createSpecTypeColumn(){return{title:"Type",field:"entity.spec.type",customSort(e,t){return 0}}},createSpecLifecycleColumn(){return{title:"Lifecycle",field:"entity.spec.lifecycle",customSort(e,t){return 0},width:"auto"}},createMetadataDescriptionColumn(){return{title:"Description",field:"entity.metadata.description",customSort(e,t){return 0},render:({entity:e})=>r.createElement(d,{text:e.metadata.description,placement:"bottom-start"}),width:"auto"}},createTagsColumn(){return{title:"Tags",field:"entity.metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:e})=>r.createElement(r.Fragment,null,e.metadata.tags&&e.metadata.tags.map(t=>r.createElement(s,{key:t,label:t,size:"small",variant:"outlined",style:{marginBottom:"0px"}}))),width:"auto",sorting:!1}},createTitleColumn(e){return{title:"Title",field:"entity.metadata.title",customSort(t,a){return 0},hidden:e==null?void 0:e.hidden,searchable:!0}},createLabelColumn(e,t){return{title:(t==null?void 0:t.title)||"Label",field:"entity.metadata.labels",customSort(a,n){return 0},cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:a})=>{var n;const o=(n=a.metadata)==null?void 0:n.labels,l=o&&o[e]||(t==null?void 0:t.defaultValue);return r.createElement(r.Fragment,null,l&&r.createElement(s,{key:l,label:l,size:"small",variant:"outlined"}))},width:"auto",sorting:!1}},createNamespaceColumn(){return{title:"Namespace",field:"entity.metadata.namespace",customSort(e,t){return 0},width:"auto"}}});export{g as columnFactories};
1
+ import{OverflowTooltip as s}from"@backstage/core-components";import{EntityRefLink as d,EntityRefLinks as o}from"@backstage/plugin-catalog-react";import{makeStyles as u,Chip as m}from"@material-ui/core";import r from"react";import{LevelBadge as c}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as p}from"../../Badges/NoLevelBadge.esm.js";import"../../Badges/CampaignBadge.esm.js";import{TrackStatusChip as f}from"./TrackStatusChip.esm.js";const i=u(()=>({linkHover:{"& span":{"&:hover":{textDecoration:"underline"}}}})),y=Object.freeze({createBadgeColumn(){return{title:"",field:"badge",render:e=>e.badge?r.createElement(c,{badge:e.badge}):r.createElement(p,null),width:"auto",align:"center",sorting:!1}},createStatusColumn(){return{title:"Checks",field:"status",render:e=>e.status&&r.createElement(f,{track:e.track,status:e.status}),width:"auto",align:"center",sorting:!1}},createNameColumn(e){return{title:"Name",field:"resolved.entityRef",highlight:!0,customSort(t,a){return 0},render:({entity:t})=>{const a=i();return r.createElement(d,{entityRef:t,defaultKind:e?.defaultKind||"Component",className:a.linkHover})}}},createSystemColumn(){return{title:"System",field:"resolved.partOfSystemRelationTitle",customSort(e,t){return 0},render:({resolved:e})=>{const t=i();return r.createElement(o,{entityRefs:e.partOfSystemRelations,defaultKind:"system",className:t.linkHover})}}},createOwnerColumn(){return{title:"Owner",field:"resolved.ownedByRelationsTitle",customSort(e,t){return 0},render:({resolved:e})=>{const t=i();return r.createElement(o,{entityRefs:e.ownedByRelations,defaultKind:"group",className:t.linkHover})}}},createSpecTypeColumn(){return{title:"Type",field:"entity.spec.type",customSort(e,t){return 0}}},createSpecLifecycleColumn(){return{title:"Lifecycle",field:"entity.spec.lifecycle",customSort(e,t){return 0},width:"auto"}},createMetadataDescriptionColumn(){return{title:"Description",field:"entity.metadata.description",customSort(e,t){return 0},render:({entity:e})=>r.createElement(s,{text:e.metadata.description,placement:"bottom-start"}),width:"auto"}},createTagsColumn(){return{title:"Tags",field:"entity.metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:e})=>r.createElement(r.Fragment,null,e.metadata.tags&&e.metadata.tags.map(t=>r.createElement(m,{key:t,label:t,size:"small",variant:"outlined",style:{marginBottom:"0px"}}))),width:"auto",sorting:!1}},createTitleColumn(e){return{title:"Title",field:"entity.metadata.title",customSort(t,a){return 0},hidden:e?.hidden,searchable:!0}},createLabelColumn(e,t){return{title:t?.title||"Label",field:"entity.metadata.labels",customSort(a,n){return 0},cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:a})=>{const n=a.metadata?.labels,l=n&&n[e]||t?.defaultValue;return r.createElement(r.Fragment,null,l&&r.createElement(m,{key:l,label:l,size:"small",variant:"outlined"}))},width:"auto",sorting:!1}},createNamespaceColumn(){return{title:"Namespace",field:"entity.metadata.namespace",customSort(e,t){return 0},width:"auto"}}});export{y as columnFactories};
2
2
  //# sourceMappingURL=columns.esm.js.map
@@ -1,2 +1,2 @@
1
- import{RELATION_PART_OF as m,RELATION_OWNED_BY as f,stringifyEntityRef as R}from"@backstage/catalog-model";import{getEntityRelations as d,humanizeEntityRef as n}from"@backstage/plugin-catalog-react";function u(l){var i;const{trackDetails:a,track:y,entity:t}=l,o=d(t,m,{kind:"system"}),s=d(t,f),r=R(t);return{id:r,entity:t,badge:(i=a.badge)!=null?i:void 0,track:y,status:a.status,resolved:{name:n(t,{defaultKind:"Component"}),entityRef:r,ownedByRelationsTitle:s.map(e=>n(e,{defaultKind:"group"})).join(", "),ownedByRelations:s,partOfSystemRelationTitle:o.map(e=>n(e,{defaultKind:"system"})).join(", "),partOfSystemRelations:o}}}export{u as toTrackEntityRow};
1
+ import{RELATION_PART_OF as y,RELATION_OWNED_BY as f,stringifyEntityRef as l}from"@backstage/catalog-model";import{getEntityRelations as r,humanizeEntityRef as i}from"@backstage/plugin-catalog-react";function R(d){const{trackDetails:n,track:m,entity:t}=d,a=r(t,y,{kind:"system"}),o=r(t,f),s=l(t);return{id:s,entity:t,badge:n.badge??void 0,track:m,status:n.status,resolved:{name:i(t,{defaultKind:"Component"}),entityRef:s,ownedByRelationsTitle:o.map(e=>i(e,{defaultKind:"group"})).join(", "),ownedByRelations:o,partOfSystemRelationTitle:a.map(e=>i(e,{defaultKind:"system"})).join(", "),partOfSystemRelations:a}}}export{R as toTrackEntityRow};
2
2
  //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as f}from"@material-ui/core";import d from"lodash";import{DateTime as v}from"luxon";import u from"react";import"recharts";import"../Charts/ChartTypes.esm.js";import{LineChart as y}from"../Charts/LineChart/LineChart.esm.js";import{formatDate as h}from"../Charts/chartUtils.esm.js";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";const p=t=>{var r;const a=(r=t==null?void 0:t.certificationStatusHistory.history)!=null?r:[],o=t==null?void 0:t.certificationStatusHistory.numberOfEntities,l=v.utc();return d.map(a,(e,i)=>{let n={name:h(l,a.length-i-1)};const c=[];for(const m of e.statusByLevel){const s=m.cumulativelyPassed;c.push(o?Math.round(s/o*100):100)}return e.statusByLevel.forEach((m,s)=>{n={...n,[`Level ${m.ordinal}`]:c[s]}}),n})},L=({track:t,data:r,isError:a})=>{var o;if(a)return u.createElement(f,{color:"error"},"Failed to load track data.");const l=p(r),e=r!=null&&r.certificationStatusHistory?(o=t==null?void 0:t.levels.map(i=>({dataKey:`Level ${i.ordinal}`,name:`Level ${i.ordinal}`})))!=null?o:[]:[];return u.createElement(y,{data:l,lines:e})};export{L as TrackHistoryChart,p as formatLineChartData};
1
+ import{Typography as f}from"@material-ui/core";import u from"lodash";import{DateTime as d}from"luxon";import l from"react";import"recharts";import"../Charts/ChartTypes.esm.js";import{LineChart as y}from"../Charts/LineChart/LineChart.esm.js";import{formatDate as h}from"../Charts/chartUtils.esm.js";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";const p=r=>{const t=r?.certificationStatusHistory.history??[],o=r?.certificationStatusHistory.numberOfEntities,i=d.utc();return u.map(t,(e,a)=>{let m={name:h(i,t.length-a-1)};const c=[];for(const n of e.statusByLevel){const s=n.cumulativelyPassed;c.push(o?Math.round(s/o*100):100)}return e.statusByLevel.forEach((n,s)=>{m={...m,[`Level ${n.ordinal}`]:c[s]}}),m})},v=({track:r,data:t,isError:o})=>{if(o)return l.createElement(f,{color:"error"},"Failed to load track data.");const i=p(t),e=t?.certificationStatusHistory?r?.levels.map(a=>({dataKey:`Level ${a.ordinal}`,name:`Level ${a.ordinal}`}))??[]:[];return l.createElement(y,{data:i,lines:e})};export{v as TrackHistoryChart,p as formatLineChartData};
2
2
  //# sourceMappingURL=TrackHistoryChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useTheme as s}from"@material-ui/core";import r from"react";import{ChartWrapper as u}from"../Charts/ChartWrapper/ChartWrapper.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import{getChartColors as p}from"../Charts/chartUtils.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import{BarChart as c,BarChartLayout as f}from"../Charts/BarChart/BarChart.esm.js";const h=(e,t)=>{var a;if(!t)return[];const m=[],i=t.numberOfEntities;for(const n of t.statusByLevel){const o=n.cumulativelyPassed;m.push(i?Math.round(o/i*100):100)}const l=p(e);return(a=t.statusByLevel.map(({ordinal:n},o)=>({name:`Level ${n}`,passRate:m[o],fill:l[o%l.length]})))!=null?a:[]},d=({data:e,isLoading:t})=>{const a=s();return r.createElement(r.Fragment,null,!t&&e&&r.createElement("div",null,r.createElement(u,null,r.createElement(c,{data:h(a,e.certificationStatus),layout:f.Horizontal}))))};export{d as TrackLevelsChart};
1
+ import{useTheme as l}from"@material-ui/core";import r from"react";import{ChartWrapper as s}from"../Charts/ChartWrapper/ChartWrapper.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import{getChartColors as p}from"../Charts/chartUtils.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import{BarChart as u,BarChartLayout as c}from"../Charts/BarChart/BarChart.esm.js";const f=(e,t)=>{if(!t)return[];const a=[],m=t.numberOfEntities;for(const n of t.statusByLevel){const o=n.cumulativelyPassed;a.push(m?Math.round(o/m*100):100)}const i=p(e);return t.statusByLevel.map(({ordinal:n},o)=>({name:`Level ${n}`,passRate:a[o],fill:i[o%i.length]}))??[]},h=({data:e,isLoading:t})=>{const a=l();return r.createElement(r.Fragment,null,!t&&e&&r.createElement("div",null,r.createElement(s,null,r.createElement(u,{data:f(a,e.certificationStatus),layout:c.Horizontal}))))};export{h as TrackLevelsChart};
2
2
  //# sourceMappingURL=TrackLevelsChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as V}from"@backstage/core-components";import{useRouteRef as G}from"@backstage/core-plugin-api";import{EntityRefLink as W}from"@backstage/plugin-catalog-react";import{usePermission as h}from"@backstage/plugin-permission-react";import{makeStyles as j,Paper as q,Typography as z,Button as J,Divider as K,Tabs as Q,Tab as C}from"@material-ui/core";import{soundcheckTrackReadPermission as X,soundcheckTrackUpdatePermission as Y}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as Z}from"react";import{useParams as _,useNavigate as $}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as ee}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as te}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as re}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useSearchParam as p}from"../../hooks/useSearchParam.esm.js";import{trackEditRouteRef as ae}from"../../routes.esm.js";import{LevelCard as ne}from"../LevelCard/LevelCard.esm.js";import{LoadingIndicator as ie}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as oe}from"../PageWarningMessage/PageWarningMessage.esm.js";import{FilterBar as le}from"./FilterBar/FilterBar.esm.js";import{TrackEntitiesTable as se}from"./TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackProgressCard as ce}from"./TrackProgressCard.esm.js";const me=j(t=>({root:{height:"100%",background:t.palette.background.default},header:{backgroundColor:t.palette.background.paper,borderRadius:0},trackProgressContainer:{margin:t.spacing(2,0,2,2)},trackContainerContent:{padding:t.spacing(2,2,1),backgroundColor:t.palette.background.paper},levelCard:{margin:t.spacing(1,0,2)},editButton:{marginLeft:"auto"},tabsContainer:{margin:t.spacing(1,0,1,2)},filterBar:{marginTop:t.spacing(1)},trackEntitiesContainer:{marginTop:t.spacing(1)}}));function b({children:t,value:c,index:m}){return e.createElement("div",{hidden:c!==m},c===m&&t)}const de=()=>{var t,c,m,k;const a=me(),[u,w]=Z(0),[n,T]=p("owners"),[i,N]=p("lifecycles"),[o,L]=p("types"),[l,P]=p("systems"),R=(v,y)=>{w(y)},{trackId:s}=_(),{data:f,isLoading:d,isError:B}=ee({ids:[s!=null?s:""],first:1}),r=(c=(t=f==null?void 0:f.edges)==null?void 0:t[0])==null?void 0:c.node,{data:g,isLoading:E,isError:I}=te({trackId:s,filter:{"spec.lifecycle":i!=null&&i.length?i:void 0,"relations.ownedBy":n!=null&&n.length?n:void 0,"spec.type":o!=null&&o.length?o:void 0,"relations.partOf":l!=null&&l.length?l:void 0}},!d&&!!f),{data:x,isLoading:S,isError:O}=re({trackId:s,filter:{"spec.lifecycle":i!=null&&i.length?i:void 0,"relations.ownedBy":n!=null&&n.length?n:void 0,"spec.type":o!=null&&o.length?o:void 0,"relations.partOf":l!=null&&l.length?l:void 0},numberOfDays:30},!E&&!!g),{loading:F,allowed:D}=h({permission:X,resourceRef:s}),{loading:M,allowed:A}=h({permission:Y,resourceRef:s}),H=$(),U=G(ae);return e.createElement("div",null,e.createElement(oe,{entityName:"track",entityId:s,showNotFound:!d&&!r,showCannotView:!F&&!D}),d&&e.createElement(ie,null),r&&e.createElement("div",{className:a.root},e.createElement(q,{elevation:3,className:a.header},e.createElement("div",{className:a.trackContainerContent},e.createElement("div",{style:{display:"flex",alignItems:"center"}},e.createElement("div",null,e.createElement(z,{variant:"h5"},r.name),e.createElement(W,{entityRef:r.ownerEntityRef})),!M&&A&&r.isEditable&&e.createElement(J,{className:a.editButton,variant:"contained",color:"primary",onClick:()=>{H(U({trackId:r.id}))}},"Edit Track")),e.createElement(V,{content:(m=r.description)!=null?m:""}),e.createElement(K,null),e.createElement("div",{className:a.filterBar},e.createElement(le,{label:"Filter",track:r,owners:n,setOwners:T,lifecycles:i,setLifecycles:N,types:o,setTypes:L,systems:l,setSystems:P})))),e.createElement("div",{className:a.trackProgressContainer},e.createElement(ce,{track:r,status:g,history:x,isLoading:d||E||S,isError:B||I||O})),e.createElement("div",{className:a.tabsContainer},e.createElement(Q,{value:u,onChange:R},e.createElement(C,{label:"Levels"}),e.createElement(C,{label:"Entities"})),e.createElement(b,{value:u,index:0},r&&((k=r.levels)==null?void 0:k.map((v,y)=>e.createElement("div",{className:a.levelCard,key:v.ordinal},e.createElement(ne,{track:r,level:v,index:y,data:g,isLoading:d||E,lifecycles:i,owners:n,types:o,systems:l}))))),e.createElement(b,{value:u,index:1},r&&e.createElement("div",{className:a.trackEntitiesContainer},e.createElement(se,{track:r,lifecycles:i,owners:n,types:o,systems:l}))))))};export{de as TrackPage};
1
+ import{MarkdownContent as M}from"@backstage/core-components";import{useRouteRef as U}from"@backstage/core-plugin-api";import{EntityRefLink as V}from"@backstage/plugin-catalog-react";import{usePermission as v}from"@backstage/plugin-permission-react";import{makeStyles as A,Paper as G,Typography as W,Button as j,Divider as q,Tabs as z,Tab as C}from"@material-ui/core";import{soundcheckTrackReadPermission as J,soundcheckTrackUpdatePermission as K}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as Q}from"react";import{useParams as X,useNavigate as Y}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as Z}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as _}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as $}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useSearchParam as g}from"../../hooks/useSearchParam.esm.js";import{trackEditRouteRef as ee}from"../../routes.esm.js";import{LevelCard as te}from"../LevelCard/LevelCard.esm.js";import{LoadingIndicator as re}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as ae}from"../PageWarningMessage/PageWarningMessage.esm.js";import{FilterBar as ie}from"./FilterBar/FilterBar.esm.js";import{TrackEntitiesTable as ne}from"./TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackProgressCard as se}from"./TrackProgressCard.esm.js";const h=t=>{const{lifecycles:a,owners:l,types:i,systems:m}=t,n=a?.length?{"spec.lifecycle":a}:void 0,d=l?.length?{"relations.ownedBy":l}:void 0,s=i?.length?{"spec.type":i}:void 0,p=m?.length?{"relations.partOf":m}:void 0;if(n||d||s||p)return{...n,...d,...s,...p}},oe=A(t=>({root:{height:"100%",background:t.palette.background.default},header:{backgroundColor:t.palette.background.paper,borderRadius:0},trackProgressContainer:{margin:t.spacing(2,0,2,2)},trackContainerContent:{padding:t.spacing(2,2,1),backgroundColor:t.palette.background.paper},levelCard:{margin:t.spacing(1,0,2)},editButton:{marginLeft:"auto"},tabsContainer:{margin:t.spacing(1,0,1,2)},filterBar:{marginTop:t.spacing(1)},trackEntitiesContainer:{marginTop:t.spacing(1)}}));function b({children:t,value:a,index:l}){return e.createElement("div",{hidden:a!==l},a===l&&t)}const le=()=>{const t=oe(),[a,l]=Q(0),[i,m]=g("owners"),[n,d]=g("lifecycles"),[s,p]=g("types"),[c,w]=g("systems"),T=(u,y)=>{l(y)},{trackId:o}=X(),{data:N,isLoading:f,isError:L}=Z({ids:[o??""],first:1}),r=N?.edges?.[0]?.node,{data:E,isLoading:k,isError:P}=_({trackId:o,filter:h({lifecycles:n,owners:i,types:s,systems:c})},!!o),{data:R,isLoading:B,isError:I}=$({trackId:o,filter:h({lifecycles:n,owners:i,types:s,systems:c}),numberOfDays:30},!!o),{loading:x,allowed:S}=v({permission:J,resourceRef:o}),{loading:F,allowed:O}=v({permission:K,resourceRef:o}),D=Y(),H=U(ee);return e.createElement("div",null,e.createElement(ae,{entityName:"track",entityId:o,showNotFound:!f&&!r,showCannotView:!x&&!S}),f&&e.createElement(re,null),r&&e.createElement("div",{className:t.root},e.createElement(G,{elevation:3,className:t.header},e.createElement("div",{className:t.trackContainerContent},e.createElement("div",{style:{display:"flex",alignItems:"center"}},e.createElement("div",null,e.createElement(W,{variant:"h5"},r.name),e.createElement(V,{entityRef:r.ownerEntityRef})),!F&&O&&r.isEditable&&e.createElement(j,{className:t.editButton,variant:"contained",color:"primary",onClick:()=>{D(H({trackId:r.id}))}},"Edit Track")),e.createElement(M,{content:r.description??""}),e.createElement(q,null),e.createElement("div",{className:t.filterBar},e.createElement(ie,{label:"Filter",track:r,owners:i,setOwners:m,lifecycles:n,setLifecycles:d,types:s,setTypes:p,systems:c,setSystems:w})))),e.createElement("div",{className:t.trackProgressContainer},e.createElement(se,{track:r,status:E,history:R,isLoading:f||k||B,isError:L||P||I})),e.createElement("div",{className:t.tabsContainer},e.createElement(z,{value:a,onChange:T},e.createElement(C,{label:"Levels"}),e.createElement(C,{label:"Entities"})),e.createElement(b,{value:a,index:0},r&&r.levels?.map((u,y)=>e.createElement("div",{className:t.levelCard,key:u.ordinal},e.createElement(te,{track:r,level:u,index:y,data:E,isLoading:f||k,lifecycles:n,owners:i,types:s,systems:c})))),e.createElement(b,{value:a,index:1},r&&e.createElement("div",{className:t.trackEntitiesContainer},e.createElement(ne,{track:r,lifecycles:n,owners:i,types:s,systems:c}))))))};export{le as TrackPage};
2
2
  //# sourceMappingURL=TrackPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as Q,featureFlagsApiRef as Y}from"@backstage/core-plugin-api";import{usePermission as z}from"@backstage/plugin-permission-react";import{makeStyles as J,Button as y,Grid as o}from"@material-ui/core";import{soundcheckTrackCreatePermission as K}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as i,useEffect as U}from"react";import V from"react-use/lib/useDebounce";import{useTrackFormContext as X}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as Z}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetTrackOwners as _}from"../../../hooks/tracks/useGetTrackOwners.esm.js";import $ from"../../../images/no-results.svg";import{FilterDefault as w}from"../../../utils/filters.esm.js";import{EmptyState as x}from"../../EmptyState/EmptyState.esm.js";import{Pagination as ee}from"../../Pagination/Pagination.esm.js";import{SearchFilters as re}from"../../SearchFilters/SearchFilters.esm.js";import{TrackEmptyState as u,TrackNoResults as b}from"./TrackEmptyState.esm.js";import{TracksOverviewSkeleton as te}from"./TracksOverviewSkeleton.esm.js";import{TrackSummaryCard as ae}from"./TrackSummaryCard.esm.js";const oe=J(a=>({headerButtons:{display:"flex",gap:a.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:a.spacing(0,0,1)},container:{padding:a.spacing(3),gap:a.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:a.spacing(1.5),paddingBottom:a.spacing(1.5)}})),ie=({tracksPerPage:a,currentCursor:A})=>{var g;const l=oe(),[f,S]=i(A),[c,N]=i(""),[h,B]=i(w.Alpha),[k,I]=i(w.Owner),[F,O]=i(""),{data:L,isLoading:R}=_();V(()=>{O(c)},500,[c]);const{setShowAddModal:P}=X(),{loading:v,allowed:G}=z({permission:K}),{data:t,isLoading:p}=Z({ids:void 0,types:["standard","playlist"],first:a,after:f,orderAlphabetical:h,searchByOwner:k,searchByName:F}),[n,D]=i(t),s=(g=n==null?void 0:n.edges)==null?void 0:g.map(r=>r.node),[d,j]=i([]),C=Q(Y),H=!C.getRegisteredFlags().find(r=>r.name==="soundcheck-enable-track-creation")||C.isActive("soundcheck-enable-track-creation"),E=!G||!H,M=r=>{B(r.target.value)},W=r=>{I(r.target.value)};if(U(()=>{t&&D(()=>{var r,T;return{totalCount:t.totalCount,edges:t.edges,pageInfo:{startCursor:t.pageInfo.startCursor,endCursor:t.pageInfo.endCursor,hasNextPage:(r=t==null?void 0:t.pageInfo.hasNextPage)!=null?r:!1,hasPreviousPage:(T=t==null?void 0:t.pageInfo.hasPreviousPage)!=null?T:!1}}})},[t]),!p&&!s)return e.createElement(x,{title:u.title,description:u.description,imgSrc:$,action:!v&&e.createElement(y,{disabled:E,variant:"contained",color:"primary",onClick:()=>P(!0)},u.callToAction)});let m;p?m=e.createElement(te,null):s!=null&&s.length?m=s==null?void 0:s.map(r=>e.createElement(o,{key:r.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},e.createElement(ae,{summary:r}))):m=e.createElement(o,{xs:12,item:!0,role:"listitem","aria-label":"result"},e.createElement(x,{title:b.title,description:b.description}));const q=(n==null?void 0:n.pageInfo.hasNextPage)||(d==null?void 0:d.length)>0;return e.createElement(o,{container:!0,direction:"row",className:l.container},e.createElement(o,{container:!0,className:l.header},e.createElement(re,{searchPlaceholder:"Search Available Tracks",isLoading:p||R,searchTerm:c,setSearchTerm:N,filterAlpha:h,handleAlphabeticalFilterChange:M,filterOwner:k,handleOwnerFilterChange:W,owners:L}),e.createElement(o,{item:!0,xs:2,className:l.headerButtons},!v&&e.createElement(y,{disabled:E,variant:"contained",color:"primary",onClick:()=>P(!0),className:l.createButton},"Create Track"))),e.createElement(o,{container:!0,spacing:4,role:"list","aria-label":"tracks"},m),q&&e.createElement(o,{item:!0,xs:12},e.createElement(ee,{response:n,listingsPerPage:a,cursor:f,setCursor:S,prevCursors:d,setPrevCursors:j,labelPerPageDropdown:"Tracks Per Page:",urlRoute:"tracks?tracksPerPage="})))};export{ie as TrackListPage};
1
+ import{useApi as Q,featureFlagsApiRef as U}from"@backstage/core-plugin-api";import{usePermission as W}from"@backstage/plugin-permission-react";import{makeStyles as Z,Button as T,Grid as o}from"@material-ui/core";import{soundcheckTrackCreatePermission as $}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as i,useEffect as q}from"react";import z from"react-use/lib/useDebounce";import{useTrackFormContext as J}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as K}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetTrackOwners as V}from"../../../hooks/tracks/useGetTrackOwners.esm.js";import X from"../../../images/no-results.svg";import{FilterDefault as y}from"../../../utils/filters.esm.js";import{EmptyState as v}from"../../EmptyState/EmptyState.esm.js";import{Pagination as Y}from"../../Pagination/Pagination.esm.js";import{SearchFilters as _}from"../../SearchFilters/SearchFilters.esm.js";import{TrackEmptyState as d,TrackNoResults as x}from"./TrackEmptyState.esm.js";import{TracksOverviewSkeleton as ee}from"./TracksOverviewSkeleton.esm.js";import{TrackSummaryCard as re}from"./TrackSummaryCard.esm.js";const te=Z(t=>({headerButtons:{display:"flex",gap:t.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:t.spacing(0,0,1)},container:{padding:t.spacing(3),gap:t.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:t.spacing(1.5),paddingBottom:t.spacing(1.5)}})),ae=({tracksPerPage:t,currentCursor:w})=>{const n=te(),[g,A]=i(w),[l,b]=i(""),[u,S]=i(y.Alpha),[f,N]=i(y.Owner),[B,F]=i(""),{data:I,isLoading:O}=V();z(()=>{F(l)},500,[l]);const{setShowAddModal:h}=J(),{loading:k,allowed:L}=W({permission:$}),{data:a,isLoading:c}=K({ids:void 0,types:["standard","playlist"],first:t,after:g,orderAlphabetical:u,searchByOwner:f,searchByName:B}),[m,G]=i(a),p=m?.edges?.map(r=>r.node),[P,R]=i([]),C=Q(U),D=!C.getRegisteredFlags().find(r=>r.name==="soundcheck-enable-track-creation")||C.isActive("soundcheck-enable-track-creation"),E=!L||!D,j=r=>{S(r.target.value)},H=r=>{N(r.target.value)};if(q(()=>{a&&G(()=>({totalCount:a.totalCount,edges:a.edges,pageInfo:{startCursor:a.pageInfo.startCursor,endCursor:a.pageInfo.endCursor,hasNextPage:a?.pageInfo.hasNextPage??!1,hasPreviousPage:a?.pageInfo.hasPreviousPage??!1}}))},[a]),!c&&!p)return e.createElement(v,{title:d.title,description:d.description,imgSrc:X,action:!k&&e.createElement(T,{disabled:E,variant:"contained",color:"primary",onClick:()=>h(!0)},d.callToAction)});let s;c?s=e.createElement(ee,null):p?.length?s=p?.map(r=>e.createElement(o,{key:r.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`track card ${r.id}`},e.createElement(re,{summary:r}))):s=e.createElement(o,{xs:12,item:!0,role:"listitem","aria-label":"result"},e.createElement(v,{title:x.title,description:x.description}));const M=m?.pageInfo.hasNextPage||P?.length>0;return e.createElement(o,{container:!0,direction:"row",className:n.container},e.createElement(o,{container:!0,className:n.header},e.createElement(_,{searchPlaceholder:"Search Available Tracks",isLoading:c||O,searchTerm:l,setSearchTerm:b,filterAlpha:u,handleAlphabeticalFilterChange:j,filterOwner:f,handleOwnerFilterChange:H,owners:I}),e.createElement(o,{item:!0,xs:2,className:n.headerButtons},!k&&e.createElement(T,{disabled:E,variant:"contained",color:"primary",onClick:()=>h(!0),className:n.createButton},"Create Track"))),e.createElement(o,{container:!0,spacing:4,role:"list","aria-label":"tracks"},s),M&&e.createElement(o,{item:!0,xs:12},e.createElement(Y,{response:m,listingsPerPage:t,cursor:g,setCursor:A,prevCursors:P,setPrevCursors:R,labelPerPageDropdown:"Tracks Per Page:",urlRoute:"tracks?tracksPerPage="})))};export{ae as TrackListPage};
2
2
  //# sourceMappingURL=TrackListPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Link as f}from"@backstage/core-components";import{EntityRefLink as v}from"@backstage/plugin-catalog-react";import{makeStyles as I,List as u,Typography as m,ListItem as a,Tooltip as n,ListItemIcon as l,ListItemText as i}from"@material-ui/core";import y from"@material-ui/icons/DoneAllRounded";import N from"@material-ui/icons/Group";import k from"@material-ui/icons/Menu";import L from"@material-ui/icons/OpenInNew";import e from"react";const g=I(r=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:r.spacing(2)},listItem:{padding:0},listItemText:{margin:0},iconContainer:{minWidth:"auto",paddingRight:r.spacing(1)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),x=({track:r})=>{var o,c,s;const t=g(),E=(c=(o=r.levels)==null?void 0:o.length)!=null?c:0,d=(s=r.levels)==null?void 0:s.reduce((p,h)=>p+h.checks.length,0);return e.createElement(u,{dense:!0,disablePadding:!0,className:t.cardSection},e.createElement(m,{variant:"overline",color:"textSecondary"},"Track Details"),e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Levels"},e.createElement(l,{className:t.iconContainer},e.createElement(k,{color:"inherit",fontSize:"small"}))),e.createElement(i,{className:t.listItemText,primary:e.createElement(m,{variant:"body2",color:"textPrimary"},`${E} ${E===1?"Level":"Levels"}`)})),e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Checks"},e.createElement(l,{className:t.iconContainer},e.createElement(y,{color:"inherit",fontSize:"small"}))),e.createElement(i,{className:t.listItemText,primary:e.createElement(m,{variant:"body2",color:"textPrimary"},`${d} ${d===1?"Check":"Checks"}`)})),r.documentationURL&&e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Documentation"},e.createElement(l,{className:t.iconContainer},e.createElement(L,{color:"inherit",fontSize:"small"}))),e.createElement(i,{className:t.listItemText,primary:e.createElement(f,{to:r.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Owner"},e.createElement(l,{className:t.iconContainer},e.createElement(N,{color:"inherit",fontSize:"small"}))),e.createElement(i,{className:t.listItemText,primary:e.createElement(v,{entityRef:r.ownerEntityRef,hideIcon:!0,underline:"hover",className:t.ownerLink})})))};export{x as TrackMetadata};
1
+ import{Link as d}from"@backstage/core-components";import{EntityRefLink as p}from"@backstage/plugin-catalog-react";import{makeStyles as h,List as f,Typography as m,ListItem as a,Tooltip as n,ListItemIcon as i,ListItemText as l}from"@material-ui/core";import y from"@material-ui/icons/DoneAllRounded";import I from"@material-ui/icons/Group";import g from"@material-ui/icons/Menu";import L from"@material-ui/icons/OpenInNew";import e from"react";const N=h(r=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:r.spacing(2)},listItem:{padding:0},listItemText:{margin:0},iconContainer:{minWidth:"auto",paddingRight:r.spacing(1)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),k=({track:r})=>{const t=N(),o=r.levels?.length??0,c=r.levels?.reduce((s,E)=>s+E.checks.length,0);return e.createElement(f,{dense:!0,disablePadding:!0,className:t.cardSection},e.createElement(m,{variant:"overline",color:"textSecondary"},"Track Details"),e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Levels"},e.createElement(i,{className:t.iconContainer},e.createElement(g,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:t.listItemText,primary:e.createElement(m,{variant:"body2",color:"textPrimary"},`${o} ${o===1?"Level":"Levels"}`)})),e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Checks"},e.createElement(i,{className:t.iconContainer},e.createElement(y,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:t.listItemText,primary:e.createElement(m,{variant:"body2",color:"textPrimary"},`${c} ${c===1?"Check":"Checks"}`)})),r.documentationURL&&e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Documentation"},e.createElement(i,{className:t.iconContainer},e.createElement(L,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:t.listItemText,primary:e.createElement(d,{to:r.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Owner"},e.createElement(i,{className:t.iconContainer},e.createElement(I,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:t.listItemText,primary:e.createElement(p,{entityRef:r.ownerEntityRef,hideIcon:!0,underline:"hover",className:t.ownerLink})})))};export{k as TrackMetadata};
2
2
  //# sourceMappingURL=TrackMetadata.esm.js.map