@spotify/backstage-plugin-soundcheck 0.18.1 → 0.19.0

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 (185) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/config.d.ts +21 -0
  3. package/dist/alpha/apis.esm.js +1 -1
  4. package/dist/alpha/entity-content.esm.js +1 -1
  5. package/dist/alpha/pages.esm.js +1 -1
  6. package/dist/alpha/plugin.esm.js +1 -1
  7. package/dist/alpha.d.ts +83 -77
  8. package/dist/api.esm.js +1 -1
  9. package/dist/components/Badges/CampaignBadge.esm.js +1 -1
  10. package/dist/components/Badges/StatusBadge.esm.js +1 -1
  11. package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
  12. package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
  13. package/dist/components/CampaignForm/Steps/CampaignTrackStepNew.esm.js +1 -1
  14. package/dist/components/CampaignForm/hooks/utils.esm.js +1 -1
  15. package/dist/components/CampaignForm/utils/campaignFormUtils.esm.js +2 -2
  16. package/dist/components/CampaignForm/utils/validation.esm.js +1 -1
  17. package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +1 -1
  18. package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
  19. package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +1 -1
  20. package/dist/components/CampaignInsightsPage/DaysRemainingTile.esm.js +1 -1
  21. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +1 -1
  22. package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
  23. package/dist/components/CategoryBar/CategoryBar.esm.js +1 -1
  24. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  25. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  26. package/dist/components/CheckDetails/FixMeDialog.esm.js +1 -1
  27. package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
  28. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  29. package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
  30. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  31. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
  32. package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +1 -1
  33. package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
  34. package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
  35. package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
  36. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
  37. package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
  38. package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +1 -1
  39. package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +1 -1
  40. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  41. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  42. package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
  43. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  44. package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
  45. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  46. package/dist/components/CollectorPage/Configurators/Common/CollectorConfigAlert.esm.js +2 -0
  47. package/dist/components/CollectorPage/Configurators/Common/PortalConfigAlert.esm.js +2 -0
  48. package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
  49. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  50. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
  51. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  52. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  53. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  54. package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
  55. package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
  56. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  57. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  58. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  59. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  60. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  61. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  62. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  63. package/dist/components/ColorChip/ColorChip.esm.js +1 -1
  64. package/dist/components/EmptyState/EmptyState.esm.js +1 -1
  65. package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
  66. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  67. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  68. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  69. package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
  70. package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +2 -0
  71. package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
  72. package/dist/components/Frequency/util.esm.js +1 -1
  73. package/dist/components/GroupHierarchySelector/GroupHierarchyChip.esm.js +1 -1
  74. package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +1 -1
  75. package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +1 -1
  76. package/dist/components/GroupHierarchySelector/GroupHierarchySelectorDialog.esm.js +1 -1
  77. package/dist/components/GroupHierarchySelector/getAllOwnedEntityCount.esm.js +2 -0
  78. package/dist/components/{TechInsights → HierarchicalTechInsightsPage}/ColorLegend.esm.js +1 -1
  79. package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +2 -0
  80. package/dist/components/HierarchicalTechInsightsPage/HierarchyTable.esm.js +2 -0
  81. package/dist/components/HierarchicalTechInsightsPage/LowestPerformingTeams.esm.js +2 -0
  82. package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +2 -0
  83. package/dist/components/HierarchicalTechInsightsPage/TeamPerformanceCard.esm.js +2 -0
  84. package/dist/components/HierarchicalTechInsightsPage/TopPerformingTeams.esm.js +2 -0
  85. package/dist/components/HierarchicalTechInsightsPage/getLeafNodes.esm.js +2 -0
  86. package/dist/components/HierarchicalTechInsightsPage/visualizations/LoadingOverlay.esm.js +2 -0
  87. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoCirclePacking.esm.js +2 -0
  88. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoHeatmap.esm.js +2 -0
  89. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoIcicle.esm.js +2 -0
  90. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoSunburst.esm.js +2 -0
  91. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoTreemap.esm.js +2 -0
  92. package/dist/components/HierarchicalTechInsightsPage/visualizations/VisualizationBreadcrumb.esm.js +2 -0
  93. package/dist/components/HierarchicalTechInsightsPage/visualizations/findNodePath.esm.js +2 -0
  94. package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +2 -0
  95. package/dist/components/ImportExportPanel/ImportExportPanel.esm.js +1 -1
  96. package/dist/components/LevelsTable/LevelsTable.esm.js +1 -1
  97. package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
  98. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  99. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  100. package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -2
  101. package/dist/components/QuickstartPage/styles.esm.js +1 -1
  102. package/dist/components/RoutingPage/NewFeatureTab.esm.js +2 -0
  103. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  104. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  105. package/dist/components/SoundcheckEntityLink/SoundcheckEntityLink.esm.js +2 -0
  106. package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
  107. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  108. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  109. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
  110. package/dist/components/TechInsights/FilterControls.esm.js +1 -1
  111. package/dist/components/TechInsights/SummaryTiles.esm.js +1 -1
  112. package/dist/components/TechInsights/TechInsightsCardsView.esm.js +1 -1
  113. package/dist/components/TechInsights/TechInsightsPage.esm.js +2 -0
  114. package/dist/components/TechInsights/TechInsightsTableView.esm.js +1 -1
  115. package/dist/components/TechInsights/TrackStatusCard.esm.js +2 -0
  116. package/dist/components/TechInsights/ViewModeControls.esm.js +1 -1
  117. package/dist/components/TechInsights/convertToCommonTrackStatus.esm.js +2 -0
  118. package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +1 -1
  119. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  120. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  121. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  122. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  123. package/dist/components/TrackPage/TrackStatusBar.esm.js +1 -1
  124. package/dist/components/TrackPage/TrackStatusTable.esm.js +1 -1
  125. package/dist/components/TrackSelection/TrackSelection.esm.js +1 -1
  126. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
  127. package/dist/components/TracksPage/TracksPage.esm.js +1 -1
  128. package/dist/graphql/generated/index.esm.js +113 -115
  129. package/dist/hooks/campaigns/useCreateCampaign.esm.js +1 -1
  130. package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
  131. package/dist/hooks/catalog/useGetLimitedEntityRefs.esm.js +2 -0
  132. package/dist/hooks/collectors/useDeleteCollectorConfig.esm.js +2 -0
  133. package/dist/hooks/graphqlKeys.esm.js +1 -1
  134. package/dist/hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js +1 -1
  135. package/dist/hooks/heirarchy/useGroupHierarchy.esm.js +1 -1
  136. package/dist/hooks/heirarchy/useGroupTypeHierarchy.esm.js +1 -1
  137. package/dist/hooks/heirarchy/useHierarchicalTrackStatus.esm.js +1 -1
  138. package/dist/hooks/tracks/useCreateTrack.esm.js +1 -1
  139. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  140. package/dist/hooks/useFeatureFlag.esm.js +1 -1
  141. package/dist/hooks/useLCPReporting.esm.js +2 -0
  142. package/dist/index.d.ts +2 -3
  143. package/dist/index.esm.js +1 -1
  144. package/dist/utils/colors.esm.js +1 -1
  145. package/dist/utils/lcpReporting.esm.js +2 -0
  146. package/package.json +17 -15
  147. package/dist/components/CheckCard/CheckCard.esm.js +0 -2
  148. package/dist/components/CheckCard/CheckHistoryChart.esm.js +0 -2
  149. package/dist/components/CheckCard/utils.esm.js +0 -2
  150. package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +0 -2
  151. package/dist/components/QuickstartPage/WelcomeModal.esm.js +0 -2
  152. package/dist/components/TechInsights/ColorSchemeSelector.esm.js +0 -2
  153. package/dist/components/TechInsights/HierarchicalTechInsightsPage.esm.js +0 -2
  154. package/dist/components/TechInsights/HierarchyTable.esm.js +0 -2
  155. package/dist/components/TechInsights/LoadingOverlay.esm.js +0 -2
  156. package/dist/components/TechInsights/LowestPerformingTeams.esm.js +0 -2
  157. package/dist/components/TechInsights/NivoCirclePacking.esm.js +0 -2
  158. package/dist/components/TechInsights/NivoIcicle.esm.js +0 -2
  159. package/dist/components/TechInsights/NivoSunburst.esm.js +0 -2
  160. package/dist/components/TechInsights/NivoTreemap.esm.js +0 -2
  161. package/dist/components/TechInsights/SelectedNodeSidebar.esm.js +0 -2
  162. package/dist/components/TechInsights/TeamComparison/FailingComponentsTable.esm.js +0 -2
  163. package/dist/components/TechInsights/TeamComparison/MultiCheckStatusHistoryChart.esm.js +0 -2
  164. package/dist/components/TechInsights/TeamPerformanceCard.esm.js +0 -2
  165. package/dist/components/TechInsights/TechInsightsChartView.esm.js +0 -2
  166. package/dist/components/TechInsights/TechInsightsPage2.esm.js +0 -2
  167. package/dist/components/TechInsights/TechInsightsViewSelector.esm.js +0 -2
  168. package/dist/components/TechInsights/Tiles/TileUtils.esm.js +0 -2
  169. package/dist/components/TechInsights/Tiles/TrackStatusCard.esm.js +0 -2
  170. package/dist/components/TechInsights/TopPerformingTeams.esm.js +0 -2
  171. package/dist/components/TechInsights/VisualizationBreadcrumb.esm.js +0 -2
  172. package/dist/components/TechInsights/colorContrast.esm.js +0 -2
  173. package/dist/components/TechInsights/findNodePath.esm.js +0 -2
  174. package/dist/components/TechInsights/hierarchy/GroupNode.esm.js +0 -2
  175. package/dist/components/TechInsights/hierarchy/Hierarchy.esm.js +0 -2
  176. package/dist/components/TechInsights/hierarchyToNivo.esm.js +0 -2
  177. package/dist/components/TechInsights/persistence/FavoriteViews.esm.js +0 -2
  178. package/dist/components/TechInsights/styles.esm.js +0 -2
  179. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +0 -2
  180. package/dist/hooks/aggregations/useCheckStatusHistories.esm.js +0 -2
  181. package/dist/hooks/heirarchy/useGetDescendentsOfGroups.esm.js +0 -2
  182. /package/dist/components/{TrackPage/FilterBar → FilterSidebar}/util.esm.js +0 -0
  183. /package/dist/components/{TechInsights → HierarchicalTechInsightsPage}/TeamPerformanceListCard.esm.js +0 -0
  184. /package/dist/components/{TechInsights → TeamStatusBar}/TeamStatusBar.esm.js +0 -0
  185. /package/dist/components/{TechInsights → TechInsightsGroupSelector}/TechInsightsGroupSelector.esm.js +0 -0
@@ -1,2 +1,2 @@
1
- import{jsxs as y,Fragment as F,jsx as r}from"react/jsx-runtime";import{makeStyles as L,Tooltip as $,IconButton as x,CircularProgress as b}from"@material-ui/core";import M from"@material-ui/icons/GetApp";import O from"@material-ui/icons/Publish";import P from"js-yaml";import{capitalize as a}from"lodash";import{useState as E}from"react";import{useSoundcheckAlert as H}from"../../hooks/useSoundcheckAlert.esm.js";const J=L(e=>({button:{height:"44px",lineHeight:"1.25rem",padding:e.spacing(1.5,1),marginRight:e.spacing(.5),borderRadius:"12px",color:e.palette.text.primary}})),V=({resourceType:e,disableImport:w,disableExport:I,onImport:A,onExport:S})=>{const k=`${a(e)} Import Success`,n=`Error Importing ${a(e)}s`,v=`Error Exporting ${a(e)}s`,l=J(),{showAlert:s}=H(),[z,c]=E(!1),[C,p]=E(!1),N=async()=>{try{p(!0),await S()}catch(t){s({title:v,message:`An error occurred while exporting ${e}s: ${t.message}`,severity:"error"})}finally{p(!1)}},R=async t=>{try{c(!0);const o=t.target?.files?.[0],m=new FileReader;o&&(m.readAsText(o,"utf-8"),m.onload=async T=>{const d=T.target?.result?.toString();if(d){const j=P.load(d);try{const{created:g,skipped:B,failed:i}=await A(j);let h=k,u="success",f=`Successfully imported ${g.length} ${e}(s), failed ${i.length} ${e}(s), ${B.length} ${e}(s) already existed.`;i.length&&(h=n,u=g.length?"warning":"error",f+=` Errors: ${JSON.stringify(i)}.`),s({title:h,message:f,severity:u})}catch{}}})}catch(o){s({title:n,message:`An error occurred while importing ${e}s: ${o.message}`,severity:"error"})}finally{t.target.value="",c(!1)}};return y(F,{children:[r($,{title:`Export all ${e}s`,children:r(x,{className:l.button,disabled:I,onClick:N,children:C?r(b,{size:24}):r(O,{})})}),r($,{title:`Import YAML ${e}(s)`,children:y(x,{className:l.button,disabled:w,component:"label",children:[z?r(b,{size:24}):r(M,{}),r("input",{type:"file",hidden:!0,onChange:R,accept:".yaml"})]})})]})};export{V as ImportExportPanel};
1
+ import{jsxs as y,Fragment as F,jsx as r}from"react/jsx-runtime";import{makeStyles as L,Tooltip as $,IconButton as x,CircularProgress as b}from"@material-ui/core";import M from"@material-ui/icons/GetApp";import O from"@material-ui/icons/Publish";import P from"js-yaml";import{capitalize as a}from"lodash";import{useState as E}from"react";import{useSoundcheckAlert as H}from"../../hooks/useSoundcheckAlert.esm.js";const J=L(e=>({button:{height:"44px",lineHeight:"1.25rem",padding:e.spacing(1.5,1),marginRight:e.spacing(.5),borderRadius:"12px",color:e.palette.text.primary}})),V=({resourceType:e,disableImport:w,disableExport:I,onImport:A,onExport:S})=>{const k=`${a(e)} Import Success`,n=`Error Importing ${a(e)}s`,v=`Error Exporting ${a(e)}s`,l=J(),{showAlert:s}=H(),[z,c]=E(!1),[C,p]=E(!1),N=async()=>{try{p(!0),await S()}catch(t){s({title:v,message:`An error occurred while exporting ${e}s: ${t.message}`,severity:"error"})}finally{p(!1)}},R=async t=>{try{c(!0);const o=t.target?.files?.[0],m=new FileReader;o&&(m.readAsText(o,"utf-8"),m.onload=async T=>{const d=T.target?.result?.toString();if(d){const j=P.load(d);try{const{created:g,skipped:B,failed:i}=await A(j);let h=k,u="success",f=`Successfully imported ${g.length} ${e}(s), failed ${i.length} ${e}(s), ${B.length} ${e}(s) already existed.`;i.length&&(h=n,u=g.length?"warning":"error",f+=` Errors: ${JSON.stringify(i)}.`),s({title:h,message:f,severity:u})}catch{}}})}catch(o){s({title:n,message:`An error occurred while importing ${e}s: ${o.message}`,severity:"error"})}finally{t.target.value="",c(!1)}};return y(F,{children:[r($,{title:`Export all ${e}s`,children:r(x,{className:l.button,disabled:I,onClick:N,children:C?r(b,{size:24}):r(M,{})})}),r($,{title:`Import YAML ${e}(s)`,children:y(x,{className:l.button,disabled:w,component:"label",children:[z?r(b,{size:24}):r(O,{}),r("input",{type:"file",hidden:!0,onChange:R,accept:".yaml"})]})})]})};export{V as ImportExportPanel};
2
2
  //# sourceMappingURL=ImportExportPanel.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,Fragment as o,jsxs as d}from"react/jsx-runtime";import{TableRow as s,useTheme as k,TableContainer as v,Table as m,TableBody as h,TableCell as p,Box as C,IconButton as x,Typography as y,Collapse as T}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import w from"@material-ui/icons/KeyboardArrowDown";import N from"@material-ui/icons/KeyboardArrowUp";import{memo as S,useState as I,useCallback as B}from"react";import{CheckRowContent as R}from"./CheckRowContent.esm.js";const g=b(l=>({root:{width:"100%"},levelCell:{display:"flex",alignItems:"flex-start",width:"100%",padding:l.spacing(1)},levelContent:{display:"flex",flexDirection:"column",gap:l.spacing(2),width:"100%"},levelHeader:{display:"flex",alignItems:"center"},levelName:{fontSize:"1rem",fontWeight:500,lineHeight:1,marginLeft:l.spacing(1)},headerCell:{fontWeight:500,color:l.palette.text.secondary,padding:l.spacing(2)}})),f=S(({checks:l,checkStatuses:i,theme:n,trackId:a})=>e(o,{children:l.map(t=>{const c=i?.find(r=>r.id===t.id);return e(s,{children:e(R,{check:t,status:c,theme:n,trackId:a})})})}));f.displayName="CheckRows";const u=({level:l,children:i})=>{const n=g(),[a,t]=I(!0),c=B(()=>{t(r=>!r)},[]);return d(o,{children:[e(s,{children:e(p,{colSpan:4,className:n.levelCell,children:d(C,{className:n.levelHeader,children:[e(x,{size:"small",onClick:c,children:a?e(N,{}):e(w,{})}),e(y,{className:n.levelName,children:l.name??`Level ${l.ordinal}`})]})})}),e(s,{children:e(p,{style:{paddingTop:0,paddingBottom:0},children:e(T,{in:a,timeout:"auto",unmountOnExit:!0,children:e(m,{size:"small",padding:"none",children:e(h,{children:i})})})})})]})},L=({track:l,checkStatuses:i})=>{const n=g(),a=k();return l.levels?.length?e(v,{component:"div",className:n.root,children:e(m,{children:e(h,{children:l.levels.map(t=>e(u,{level:t,children:e(f,{checks:t.checks,checkStatuses:i,theme:a,trackId:l.id})},t.ordinal))})})}):null};export{u as LevelRow,L as LevelsTable};
1
+ import{jsx as e,Fragment as d,jsxs as s}from"react/jsx-runtime";import{TableRow as r,useTheme as k,TableContainer as C,Table as h,TableBody as m,TableCell as p,Box as x,IconButton as y,Typography as T,Collapse as L}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import w from"@material-ui/icons/KeyboardArrowDown";import N from"@material-ui/icons/KeyboardArrowUp";import{memo as S,useState as I,useCallback as R}from"react";import{CheckRowContent as B}from"./CheckRowContent.esm.js";const g=b(l=>({root:{width:"100%"},levelCell:{display:"flex",alignItems:"flex-start",width:"100%",padding:l.spacing(1)},levelContent:{display:"flex",flexDirection:"column",gap:l.spacing(2),width:"100%"},levelHeader:{display:"flex",alignItems:"center"},levelName:{fontSize:"1rem",fontWeight:500,lineHeight:1,marginLeft:l.spacing(1)},headerCell:{fontWeight:500,color:l.palette.text.secondary,padding:l.spacing(2)}})),v=S(({checks:l,checkStatuses:a,theme:c,trackId:t})=>e(d,{children:l.map(n=>{const i=a?.find(o=>o.id===n.id);return e(r,{children:e(B,{check:n,status:i,theme:c,trackId:t})})})}));v.displayName="CheckRows";const f=({level:l,children:a,hideLevel:c})=>{const t=g(),[n,i]=I(!0),o=R(()=>{i(u=>!u)},[]);return s(d,{children:[!c&&e(r,{children:e(p,{colSpan:4,className:t.levelCell,children:s(x,{className:t.levelHeader,children:[e(y,{size:"small",onClick:o,children:n?e(N,{}):e(w,{})}),e(T,{className:t.levelName,children:l.name??`Level ${l.ordinal}`})]})})}),e(r,{children:e(p,{style:{paddingTop:0,paddingBottom:0},children:e(L,{in:n,timeout:"auto",unmountOnExit:!0,children:e(h,{size:"small",padding:"none",children:e(m,{children:a})})})})})]})},z=({track:l,checkStatuses:a,hideLevel:c})=>{const t=g(),n=k();return l.levels?.length?e(C,{component:"div",className:t.root,children:e(h,{children:e(m,{children:l.levels.map(i=>e(f,{level:i,hideLevel:c,children:e(v,{checks:i.checks,checkStatuses:a,theme:n,trackId:l.id})},i.ordinal))})})}):null};export{f as LevelRow,z as LevelsTable};
2
2
  //# sourceMappingURL=LevelsTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as n}from"react/jsx-runtime";import{Page as t,Header as c}from"@backstage/core-components";import{makeStyles as m}from"@material-ui/core";import{SpotifyLicenseBanner as s}from"@spotify/backstage-plugin-core";import{UserProvider as d}from"../../contexts/UserProvider.esm.js";import a from"../../hooks/useConfirmationModal.esm.js";import{soundcheckBackend as l,invalidLicenseMessage as p}from"../../utils/license.esm.js";import{SoundcheckQueryClientProvider as v}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{OverviewPageContent as f}from"./OverviewPageContent.esm.js";const h=m(r=>({overviewContainer:{padding:r.spacing(1,3)}})),g=r=>{const{title:i="Soundcheck"}=r,o=h();return e(v,{children:e(d,{children:e(a,{children:n(t,{themeId:"website",children:[e(s,{backend:l,invalidLicenseMessage:p}),e(c,{title:i}),e("div",{className:o.overviewContainer,children:e(f,{})})]})})})})};export{g as OverviewPage};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Page as n,Header as m}from"@backstage/core-components";import{makeStyles as c}from"@material-ui/core";import{SpotifyLicenseBanner as s}from"@spotify/backstage-plugin-core";import{UserProvider as a}from"../../contexts/UserProvider.esm.js";import d from"../../hooks/useConfirmationModal.esm.js";import{useLCPReporting as p}from"../../hooks/useLCPReporting.esm.js";import{soundcheckBackend as v,invalidLicenseMessage as l}from"../../utils/license.esm.js";import{SoundcheckQueryClientProvider as f}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{OverviewPageContent as h}from"./OverviewPageContent.esm.js";const g=c(r=>({overviewContainer:{padding:r.spacing(1,3)}})),u=r=>{const{title:i="Soundcheck"}=r,o=g();return p({routeName:"soundcheck-overview",additionalAttributes:{pageTitle:i}}),e(f,{children:e(a,{children:e(d,{children:t(n,{themeId:"website",children:[e(s,{backend:v,invalidLicenseMessage:l}),e(m,{title:i}),e("div",{className:o.overviewContainer,children:e(h,{})})]})})})})};export{u as OverviewPage};
2
2
  //# sourceMappingURL=OverviewPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as L}from"react/jsx-runtime";import{makeStyles as G,Grid as m}from"@material-ui/core";import{createContext as D,useState as t,useEffect as $,useCallback as j}from"react";import{useSearchParams as H}from"react-router-dom";import N from"react-use/lib/useDebounce";import{useFacetsForOwner as B}from"../../hooks/facets/useFacetsForOwner.esm.js";import{LoadingIndicator as R}from"../LoadingIndicator/LoadingIndicator.esm.js";import{OverviewTable as z}from"../OverviewTable/OverviewTable.esm.js";import{RowHeights as A}from"../OverviewTable/resultsTableUtils.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as I}from"../SoundcheckHeader/useHeader.esm.js";import{OverviewPageHeader as T}from"./OverviewPageHeader.esm.js";const Z=G(e=>({tableContainer:{padding:0,backgroundColor:"transparent",paddingBottom:A.paginationControl},campaignsGrid:{margin:`0 0 ${e.spacing(3)}px`,border:`1px solid ${e.palette.divider}`},campaignsCard:{display:"flex",width:"100%",flexDirection:"column",padding:e.spacing(2),gap:e.spacing(2)},campaignsLink:{textAlign:"center",margin:`${e.spacing(1)}rem 0 ${e.spacing(1)}`},tableLoading:{backgroundColor:e.palette.background.paper,padding:e.spacing(6)},noPadding:{padding:0},accordion:{boxShadow:"none"}})),b=D({searchValue:"",updateSearchValue:e=>{},debouncedSearchValue:"",updateDebouncedSearchValue:e=>{},pivot:!1,updatePivot:e=>{}}),q=({isFixedGroup:e=!1})=>{const[a,l]=H(),{group:g,kind:n,type:d}=Object.fromEntries(a.entries());I();const[i,u]=t(void 0),[k,x]=t(void 0),[y,C]=t(),[p,S]=t(""),[w,f]=t(""),[P,V]=t(!1);N(()=>{f(p)},800,[p]),$(()=>{(i?.kind!==n||i?.type!==d)&&u({kind:n,type:d})},[n,d,i]);const{data:h,isLoading:v}=B(g),E=k||y,O=j((o,c,F)=>{o&&(u({kind:o,type:c}),c?(a.set("kind",o),a.set("type",c)):(a.delete("type"),a.set("kind",o)),l(a,{replace:F}))},[a,l]),s=Z();return r(b.Provider,{value:{searchValue:p,updateSearchValue:S,debouncedSearchValue:w,updateDebouncedSearchValue:f,pivot:P,updatePivot:V},children:L(m,{container:!0,spacing:0,children:[r(m,{item:!0,xs:12,className:s.noPadding,children:r(T,{unfilteredFacets:h,kind:i?.kind,type:i?.type,onChange:O,setError:C,isLoading:v,isFixedGroup:e})}),r(m,{item:!0,xs:12,className:s.tableContainer,children:v?r("div",{className:s.tableLoading,children:r(R,{size:80})}):r(z,{facets:h,kind:i?.kind,type:i?.type,setError:x,hasError:E,ownerEntityRef:g,isFixedGroup:e})})]})})};export{q as OverviewPageContent,b as OverviewPageContext};
1
+ import{jsx as r,jsxs as L}from"react/jsx-runtime";import{makeStyles as G,Grid as m}from"@material-ui/core";import{createContext as D,useState as t,useEffect as $,useCallback as j}from"react";import{useSearchParams as H}from"react-router-dom";import N from"react-use/lib/useDebounce";import{useFacetsForOwner as B}from"../../hooks/facets/useFacetsForOwner.esm.js";import{LoadingIndicator as R}from"../LoadingIndicator/LoadingIndicator.esm.js";import{OverviewTable as z}from"../OverviewTable/OverviewTable.esm.js";import{RowHeights as A}from"../OverviewTable/resultsTableUtils.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as I}from"../SoundcheckHeader/useHeader.esm.js";import{OverviewPageHeader as T}from"./OverviewPageHeader.esm.js";const X=G(e=>({tableContainer:{padding:0,backgroundColor:"transparent",paddingBottom:A.paginationControl},campaignsGrid:{margin:`0 0 ${e.spacing(3)}px`,border:`1px solid ${e.palette.divider}`},campaignsCard:{display:"flex",width:"100%",flexDirection:"column",padding:e.spacing(2),gap:e.spacing(2)},campaignsLink:{textAlign:"center",margin:`${e.spacing(1)}rem 0 ${e.spacing(1)}`},tableLoading:{backgroundColor:e.palette.background.paper,padding:e.spacing(6)},noPadding:{padding:0},accordion:{boxShadow:"none"}})),b=D({searchValue:"",updateSearchValue:e=>{},debouncedSearchValue:"",updateDebouncedSearchValue:e=>{},pivot:!1,updatePivot:e=>{}}),q=({isFixedGroup:e=!1})=>{const[a,l]=H(),{group:g,kind:n,type:d}=Object.fromEntries(a.entries());I();const[i,u]=t(void 0),[k,x]=t(void 0),[y,C]=t(),[p,S]=t(""),[w,f]=t(""),[P,V]=t(!1);N(()=>{f(p)},800,[p]),$(()=>{(i?.kind!==n||i?.type!==d)&&u({kind:n,type:d})},[n,d,i]);const{data:h,isLoading:v}=B(g),E=k||y,O=j((o,c,F)=>{o&&(u({kind:o,type:c}),c?(a.set("kind",o),a.set("type",c)):(a.delete("type"),a.set("kind",o)),l(a,{replace:F}))},[a,l]),s=X();return r(b.Provider,{value:{searchValue:p,updateSearchValue:S,debouncedSearchValue:w,updateDebouncedSearchValue:f,pivot:P,updatePivot:V},children:L(m,{container:!0,spacing:0,children:[r(m,{item:!0,xs:12,className:s.noPadding,children:r(T,{unfilteredFacets:h,kind:i?.kind,type:i?.type,onChange:O,setError:C,isLoading:v,isFixedGroup:e})}),r(m,{item:!0,xs:12,className:s.tableContainer,children:v?r("div",{className:s.tableLoading,children:r(R,{size:80})}):r(z,{facets:h,kind:i?.kind,type:i?.type,setError:x,hasError:E,ownerEntityRef:g,isFixedGroup:e})})]})})};export{q as OverviewPageContent,b as OverviewPageContext};
2
2
  //# sourceMappingURL=OverviewPageContent.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as i,jsx as t}from"react/jsx-runtime";import{EntityRefLink as f}from"@backstage/plugin-catalog-react";import{makeStyles as y,List as N,Typography as o,ListItem as a,Tooltip as l,ListItemIcon as m,ListItemText as c}from"@material-ui/core";import x from"@material-ui/icons/Group";import g from"@material-ui/icons/TrendingDown";import L from"@material-ui/icons/TrendingFlat";import T from"@material-ui/icons/TrendingUp";import{Trend as s}from"./types.esm.js";const R=y(r=>({cardSection:{marginBottom:r.spacing(2)},listItem:{padding:0},listItemText:{margin:0},listItemIcon:{marginRight:r.spacing(1),minWidth:0},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),S=({ownerEntityRef:r,passRates:d})=>{const e=R();return i(N,{dense:!0,disablePadding:!0,className:e.cardSection,children:[t(o,{variant:"overline",color:"textSecondary",children:"Details"}),r&&i(a,{disableGutters:!0,className:e.listItem,children:[t(l,{title:"Owner",children:t(m,{className:e.listItemIcon,children:t(x,{color:"inherit",fontSize:"small"})})}),t(c,{className:e.listItemText,primary:t(f,{className:e.ownerLink,entityRef:r??"No Owner",hideIcon:!0})})]}),d.map(({name:h,value:p,trend:n},I)=>i(a,{disableGutters:!0,className:e.listItem,children:[t(l,{title:"The most recent pass rate.",children:i(m,{className:e.listItemIcon,children:[n===s.UP&&t(T,{color:"inherit",fontSize:"small"}),n===s.DOWN&&t(g,{color:"inherit",fontSize:"small"}),n===s.FLAT&&t(L,{color:"inherit",fontSize:"small"})]})}),t(c,{className:e.listItemText,primary:i(o,{variant:"body2",color:"textPrimary",children:[h??"Latest Pass Rate",": ",i("b",{children:[Math.round(p),"%"]})]})})]},I))]})};export{S as PassRateMetadata};
1
+ import{jsxs as i,jsx as t}from"react/jsx-runtime";import{EntityRefLink as f}from"@backstage/plugin-catalog-react";import{makeStyles as y,List as N,Typography as o,ListItem as a,Tooltip as l,ListItemIcon as m,ListItemText as c}from"@material-ui/core";import g from"@material-ui/icons/Group";import x from"@material-ui/icons/TrendingDown";import L from"@material-ui/icons/TrendingFlat";import T from"@material-ui/icons/TrendingUp";import{Trend as s}from"./types.esm.js";const R=y(r=>({cardSection:{marginBottom:r.spacing(2)},listItem:{padding:0},listItemText:{margin:0},listItemIcon:{marginRight:r.spacing(1),minWidth:0},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),S=({ownerEntityRef:r,passRates:d})=>{const e=R();return i(N,{dense:!0,disablePadding:!0,className:e.cardSection,children:[t(o,{variant:"overline",color:"textSecondary",children:"Details"}),r&&i(a,{disableGutters:!0,className:e.listItem,children:[t(l,{title:"Owner",children:t(m,{className:e.listItemIcon,children:t(g,{color:"inherit",fontSize:"small"})})}),t(c,{className:e.listItemText,primary:t(f,{className:e.ownerLink,entityRef:r??"No Owner",hideIcon:!0})})]}),d.map(({name:h,value:p,trend:n},I)=>i(a,{disableGutters:!0,className:e.listItem,children:[t(l,{title:"The most recent pass rate.",children:i(m,{className:e.listItemIcon,children:[n===s.UP&&t(T,{color:"inherit",fontSize:"small"}),n===s.DOWN&&t(x,{color:"inherit",fontSize:"small"}),n===s.FLAT&&t(L,{color:"inherit",fontSize:"small"})]})}),t(c,{className:e.listItemText,primary:i(o,{variant:"body2",color:"textPrimary",children:[h??"Latest Pass Rate",": ",i("b",{children:[Math.round(p),"%"]})]})})]},I))]})};export{S as PassRateMetadata};
2
2
  //# sourceMappingURL=PassRateMetadata.esm.js.map
@@ -1,3 +1,3 @@
1
- import{jsxs as n,jsx as e}from"react/jsx-runtime";import{Content as v}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as w,configApiRef as C,useRouteRef as a}from"@backstage/core-plugin-api";import{usePermission as P}from"@backstage/plugin-permission-react";import{Typography as l,Grid as t,Accordion as H,AccordionSummary as S,AccordionDetails as T}from"@material-ui/core";import h from"@material-ui/icons/BarChart";import z from"@material-ui/icons/CheckCircle";import I from"@material-ui/icons/Computer";import W from"@material-ui/icons/ExpandMore";import j from"@material-ui/icons/Flag";import D from"@material-ui/icons/Timeline";import{soundcheckCollectorReadPermission as F}from"@spotify/backstage-plugin-soundcheck-common";import{integrationsPageRouteRef as Q,tracksPageRouteRef as G,checksPageRouteRef as O,campaignsPageRouteRef as q,techHealthRouteRef as B,techInsightsPageRouteRef as M}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as V}from"../SoundcheckHeader/useHeader.esm.js";import{QuickstartCardBase as i}from"./QuickstartCardBase.esm.js";import{getQuickstartStyles as $}from"./styles.esm.js";import{WelcomeHelpSection as E}from"./WelcomeHelpSection.esm.js";import{WelcomeModal as J}from"./WelcomeModal.esm.js";const K=()=>{const o=$();V({title:"Welcome to Soundcheck!",description:"Soundcheck lets you define and monitor the tech health of your organization. What insights do you need today?"});const r=m(w),d=m(C).getOptionalStringArray("soundcheck.flags"),c=r.getRegisteredFlags(),u=(!c.find(s=>s.name==="soundcheck-enable-tech-insights")||r.isActive("soundcheck-enable-tech-insights"))&&(d?.includes("enable-tech-insights")??!1),{loading:g,allowed:p}=P({permission:F}),f=(!c.find(s=>s.name==="soundcheck-enable-collectors")||r.isActive("soundcheck-enable-collectors"))&&!g&&p,k=(!c.find(s=>s.name==="soundcheck-enable-tech-health")||r.isActive("soundcheck-enable-tech-health"))&&!d?.includes("soundcheck-disable-tech-health"),R=a(Q),y=a(G),b=a(O),x=a(q),A=a(B),N=a(M);return n(v,{className:o.introTitle,children:[e(J,{}),e(l,{className:o.welcomeSection,children:"This is your starting point for exploring and managing your tech health initiatives. Here are some key areas to get you started:"}),n(t,{container:!0,direction:"row",justifyContent:"flex-start","aria-label":"getting-started-items",className:o.grid,spacing:2,children:[u&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tech Insights",routeRef:N,icon:e(h,{}),description:`Visualize and analyze your technology landscape across teams and
2
- components.`})}),k&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tech Health",routeRef:A,icon:e(h,{}),description:"Detailed query and analysis tool across teams, components, tracks, and checks."})}),e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Campaigns",routeRef:x,icon:e(j,{}),description:"Organize and manage coordinated initiatives across your organization."})}),e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Checks",routeRef:b,icon:e(z,{}),description:"Checks are comparisons between defined acceptable fact values and actual fact values."})}),e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tracks",routeRef:y,icon:e(D,{}),description:"Tracks encourage alignment to architectural best practices and standards."})}),f&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Integrations",routeRef:R,icon:e(I,{}),description:"Integrations collect raw data about your components for use in checks and tracks."})})]}),n(H,{className:o.accordion,children:[e(S,{expandIcon:e(W,{}),"aria-controls":"howdoi-content",id:"howdoi-header",children:e(l,{variant:"h5",children:"How Do I...?"})}),e(T,{children:e(E,{})})]})]})};export{K as QuickstartPage};
1
+ import{jsxs as c,jsx as e}from"react/jsx-runtime";import{Content as P}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as v,configApiRef as w,useRouteRef as a}from"@backstage/core-plugin-api";import{usePermission as S}from"@backstage/plugin-permission-react";import{Typography as l,Grid as t,Accordion as T,AccordionSummary as z,AccordionDetails as I}from"@material-ui/core";import h from"@material-ui/icons/BarChart";import H from"@material-ui/icons/CheckCircle";import D from"@material-ui/icons/Computer";import j from"@material-ui/icons/ExpandMore";import O from"@material-ui/icons/Flag";import Q from"@material-ui/icons/Timeline";import{soundcheckCollectorReadPermission as W}from"@spotify/backstage-plugin-soundcheck-common";import{useLCPReporting as q}from"../../hooks/useLCPReporting.esm.js";import{integrationsPageRouteRef as B,tracksPageRouteRef as F,checksPageRouteRef as G,campaignsPageRouteRef as L,techHealthRouteRef as V,techInsightsPageRouteRef as $}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as E}from"../SoundcheckHeader/useHeader.esm.js";import{QuickstartCardBase as i}from"./QuickstartCardBase.esm.js";import{getQuickstartStyles as J}from"./styles.esm.js";import{WelcomeHelpSection as K}from"./WelcomeHelpSection.esm.js";const M=()=>{const o=J();E({title:"Welcome to Soundcheck!",description:"Soundcheck lets you define and monitor the tech health of your organization. What insights do you need today?"}),q({routeName:"soundcheck-quickstart"});const r=m(v),n=m(w),u=n.getOptionalStringArray("soundcheck.flags"),d=r.getRegisteredFlags(),p=n.getOptionalBoolean("soundcheck.techInsights.enabled"),{loading:g,allowed:f}=S({permission:W}),k=(!d.find(s=>s.name==="soundcheck-enable-collectors")||r.isActive("soundcheck-enable-collectors"))&&!g&&f,R=(!d.find(s=>s.name==="soundcheck-enable-tech-health")||r.isActive("soundcheck-enable-tech-health"))&&!u?.includes("soundcheck-disable-tech-health"),y=a(B),b=a(F),x=a(G),N=a(L),A=a(V),C=a($);return c(P,{className:o.introTitle,children:[e(l,{className:o.welcomeSection,children:"This is your starting point for exploring and managing your tech health initiatives. Here are some key areas to get you started:"}),c(t,{container:!0,direction:"row",justifyContent:"flex-start","aria-label":"getting-started-items",className:o.grid,spacing:2,children:[p&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tech Insights",routeRef:C,icon:e(h,{}),description:`Visualize and analyze your technology landscape across teams and
2
+ components.`})}),R&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tech Health",routeRef:A,icon:e(h,{}),description:"Detailed query and analysis tool across teams, components, tracks, and checks."})}),e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Campaigns",routeRef:N,icon:e(O,{}),description:"Organize and manage coordinated initiatives across your organization."})}),e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Checks",routeRef:x,icon:e(H,{}),description:"Checks are comparisons between defined acceptable fact values and actual fact values."})}),e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tracks",routeRef:b,icon:e(Q,{}),description:"Tracks encourage alignment to architectural best practices and standards."})}),k&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Integrations",routeRef:y,icon:e(D,{}),description:"Integrations collect raw data about your components for use in checks and tracks."})})]}),c(T,{className:o.accordion,children:[e(z,{expandIcon:e(j,{}),"aria-controls":"howdoi-content",id:"howdoi-header",children:e(l,{variant:"h5",children:"How Do I...?"})}),e(I,{children:e(K,{})})]})]})};export{M as QuickstartPage};
3
3
  //# sourceMappingURL=QuickstartPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as a}from"@material-ui/core";const t=a(n=>({grid:{padding:n.spacing(0),margin:n.spacing(0),width:"100%"},helpSection:{padding:n.spacing(1),margin:n.spacing(1)},howDoIList:{backgroundColor:n.palette.background.paper,width:"100%",padding:n.spacing(2),margin:n.spacing(1)},bgColorEven:{backgroundColor:n.palette.background.default,minHeight:"65px"},bgColorOdd:{backgroundColor:n.palette.background.paper,minHeight:"65px"},headers:{marginBottom:n.spacing(1),fontSize:"1.2rem"},divider:{marginTop:n.spacing(1),marginBottom:n.spacing(1)},cards:{width:"100%"},introTitle:{padding:n.spacing(1),paddingTop:n.spacing(2),paddingLeft:n.spacing(2),margin:"0, 3rem, 0, 0",display:"flex",flexDirection:"column",minHeight:"100vh"},page:{marginBottom:n.spacing(2)},link:{color:n.palette.link},list:{paddingLeft:n.spacing(0),padding:n.spacing(1)},mainPoint:{marginBottom:n.spacing(1),fontSize:"1.1rem",fontStyle:"italic"},modal:{padding:n.spacing(4)},card:{padding:n.spacing(1),margin:n.spacing(1),minHeight:"auto"},cardGrid:{padding:n.spacing(1),alignItems:"left",justifyContent:"left",width:"100%",textDecoration:"none",color:n.palette.text.primary},description:{margin:"0px",padding:"0px",textDecoration:"none"},buttonBox:{marginTop:"auto"},dontYellAtMeButton:{alignSelf:"flex-end",textTransform:"none",width:"100%",borderRadius:"30px",borderStyle:"solid",borderWidth:"1px",margin:n.spacing(.5)},headerButton:{fontSize:n.typography.body2.fontSize,textTransform:"none"},welcomeSection:{marginBottom:n.spacing(2),textAlign:"center"},cardBase:{minHeight:"75px",minWidth:"150px",cursor:"pointer","&:hover":{boxShadow:n.shadows[4]}},cardHeader:{display:"flex",alignItems:"center"},cardIcon:{marginRight:n.spacing(1),color:n.palette.primary.main},cardButtonBox:{marginTop:"auto"},accordion:{marginTop:n.spacing(3)},flexGrowGrid:{flexGrow:1},modalButtonContainer:{width:"100%",display:"flex",justifyContent:"flex-end"}}));export{t as getQuickstartStyles};
1
+ import{makeStyles as a}from"@material-ui/core";const t=a(n=>({grid:{padding:n.spacing(0),margin:n.spacing(0),width:"100%"},helpSection:{padding:n.spacing(1),margin:n.spacing(1)},howDoIList:{backgroundColor:n.palette.background.paper,width:"100%",padding:n.spacing(2),margin:n.spacing(1)},bgColorEven:{backgroundColor:n.palette.background.default,minHeight:"65px"},bgColorOdd:{backgroundColor:n.palette.background.paper,minHeight:"65px"},headers:{marginBottom:n.spacing(1),fontSize:"1.2rem",display:"flex",alignItems:"center"},divider:{marginTop:n.spacing(1),marginBottom:n.spacing(1)},cards:{width:"100%"},introTitle:{padding:n.spacing(1),paddingTop:n.spacing(2),paddingLeft:n.spacing(2),margin:"0, 3rem, 0, 0",display:"flex",flexDirection:"column",minHeight:"100vh"},page:{marginBottom:n.spacing(2)},link:{color:n.palette.link},list:{paddingLeft:n.spacing(0),padding:n.spacing(1)},mainPoint:{marginBottom:n.spacing(1),fontSize:"1.1rem",fontStyle:"italic"},card:{padding:n.spacing(1),margin:n.spacing(1),minHeight:"auto"},cardGrid:{padding:n.spacing(1),alignItems:"left",justifyContent:"left",width:"100%",textDecoration:"none",color:n.palette.text.primary},description:{margin:"0px",padding:"0px",textDecoration:"none"},buttonBox:{marginTop:"auto"},dontYellAtMeButton:{alignSelf:"flex-end",textTransform:"none",width:"100%",borderRadius:"30px",borderStyle:"solid",borderWidth:"1px",margin:n.spacing(.5)},headerButton:{fontSize:n.typography.body2.fontSize,textTransform:"none"},welcomeSection:{marginBottom:n.spacing(2),textAlign:"center"},cardBase:{minHeight:"75px",minWidth:"150px",cursor:"pointer","&:hover":{boxShadow:n.shadows[4]}},cardHeader:{display:"flex",alignItems:"center"},cardIcon:{marginRight:n.spacing(1),color:n.palette.primary.main},cardButtonBox:{marginTop:"auto"},accordion:{marginTop:n.spacing(3)},flexGrowGrid:{flexGrow:1}}));export{t as getQuickstartStyles};
2
2
  //# sourceMappingURL=styles.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as t,jsx as s}from"react/jsx-runtime";import{makeStyles as o,Box as p}from"@material-ui/core";const n=o(()=>({superScript:{fontSize:"0.5rem"}})),c=({title:e})=>{const r=n();return t(p,{component:"span",children:[e," ",s("sup",{className:r.superScript,children:"New"})]})};export{c as NewFeatureTab};
2
+ //# sourceMappingURL=NewFeatureTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as c,Fragment as k}from"react/jsx-runtime";import{Page as G,TabbedLayout as r}from"@backstage/core-components";import{useApi as f,featureFlagsApiRef as M,configApiRef as Q}from"@backstage/core-plugin-api";import{usePermission as s}from"@backstage/plugin-permission-react";import{makeStyles as W,Box as h}from"@material-ui/core";import{SpotifyLicenseBanner as q}from"@spotify/backstage-plugin-core";import{soundcheckCampaignCreatePermission as U,soundcheckCollectorReadPermission as V,soundcheckCheckCreatePermission as $,soundcheckTrackCreatePermission as z}from"@spotify/backstage-plugin-soundcheck-common";import{Routes as J,Route as t}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import{UserProvider as K}from"../../contexts/UserProvider.esm.js";import X from"../../hooks/useConfirmationModal.esm.js";import{AlertProvider as Y}from"../../hooks/useSoundcheckAlert.esm.js";import{CampaignInsightsPage as Z}from"../CampaignInsightsPage/CampaignInsightsPage.esm.js";import{CampaignsPage as _}from"../CampaignsPage/CampaignsPage.esm.js";import{CampaignCreatePage as ee}from"../CampaignCreatePage/CampaignCreatePage.esm.js";import{EditCampaignView as te}from"../CampaignsPage/EditCampaignView.esm.js";import{CheckCreatePage as ie}from"../CheckCreatePage/CheckCreatePage.esm.js";import{CheckEditPage as re}from"../CheckPage/CheckEditPage.esm.js";import{CheckInsightsPage as u}from"../CheckPage/CheckInsightsPage.esm.js";import{ChecksTab as oe}from"../ChecksTab/ChecksTab.esm.js";import{CheckTemplatesPage as ae}from"../CheckTemplatesPage/CheckTemplatesPage.esm.js";import{CollectorPage as ne}from"../CollectorPage/CollectorPage.esm.js";import{CollectorDetailsPage as ce}from"../CollectorPage/CollectorDetailsPage.esm.js";import{CollectorsPage as me}from"../CollectorsPage/CollectorsPage.esm.js";import{OverviewPageContent as se}from"../OverviewPage/OverviewPageContent.esm.js";import{QuickstartPage as P}from"../QuickstartPage/QuickstartPage.esm.js";import{SoundcheckHeader as le}from"../SoundcheckHeader/SoundcheckHeader.esm.js";import{SoundcheckHeaderProvider as pe}from"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{SoundcheckQueryClientProvider as he}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{TechHealth as de}from"../TechHealth/TechHealth.esm.js";import{HierarchicalTechInsightsPage as ge}from"../TechInsights/HierarchicalTechInsightsPage.esm.js";import"react-use/lib/useLocalStorage";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../TechInsights/styles.esm.js";import"../Charts/chartUtils.esm.js";import"../../routes.esm.js";import"../CategoryBar/CategoryBar.esm.js";import"../LoadingIndicator/LoadingIndicator.esm.js";import"../TechInsights/Tiles/TileUtils.esm.js";import"../TechInsights/TeamComparison/FailingComponentsTable.esm.js";import"../TechInsights/TeamComparison/MultiCheckStatusHistoryChart.esm.js";import"recharts";import"@material-ui/icons/Timer";import"../Charts/ChartTypes.esm.js";import"../TechInsights/hierarchy/Hierarchy.esm.js";import"../TechInsights/persistence/FavoriteViews.esm.js";import"../TechInsights/TechInsightsViewSelector.esm.js";import"@material-ui/lab";import"../GroupSelector/GroupSelector.esm.js";import{TechInsightsPage2 as ke}from"../TechInsights/TechInsightsPage2.esm.js";import{TrackCreatePage as fe}from"../TrackCreatePage/TrackCreatePage.esm.js";import{TrackEditPage as ue}from"../TrackEditPage/TrackEditPage.esm.js";import{TrackPage as Pe}from"../TrackPage/TrackPage.esm.js";import{TracksTab as Ce}from"../TracksTab/TracksTab.esm.js";const C=W(a=>({tabContent:{margin:0,padding:0},root:{"& > *":{display:"flex",flexDirection:"column",flexGrow:1}},pageContent:{display:"flex",flexDirection:"row",flexGrow:1},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",maxWidth:"100%","& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",padding:`${a.spacing(3)}px !important`}}})),b=({title:a="Soundcheck",children:l})=>{const m=C();return e(Y,{children:e(K,{children:e(he,{children:e(pe,{defaultTitle:a,children:e(X,{children:e(h,{className:m.root,children:c(G,{themeId:"website",children:[e(q,{backend:"soundcheck",invalidLicenseMessage:"Submitted facts and check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),e(le,{documentTitle:a}),e(h,{className:m.pageContent,children:e(h,{className:m.pageLayout,children:l})})]})})})})})})})},be=({title:a="Soundcheck",integrations:l})=>{const m=C(),o=f(M),p=f(Q).getOptionalStringArray("soundcheck.flags"),n=o.getRegisteredFlags(),v=(!n.find(i=>i.name==="soundcheck-enable-tech-insights")||o.isActive("soundcheck-enable-tech-insights"))&&(p?.includes("enable-tech-insights")??!1),x=(!n.find(i=>i.name==="soundcheck-enable-tech-health")||o.isActive("soundcheck-enable-tech-health"))&&!p?.includes("soundcheck-disable-tech-health"),I=!n.find(i=>i.name==="soundcheck-enable-collectors")||o.isActive("soundcheck-enable-collectors"),d=!n.find(i=>i.name==="soundcheck-enable-campaigns")||o.isActive("soundcheck-enable-campaigns"),{loading:T,allowed:w}=s({permission:U}),R=!T&&w,{loading:y,allowed:A}=s({permission:V}),{loading:S,allowed:D}=s({permission:$}),H=!n.find(i=>i.name==="soundcheck-enable-check-creation")||o.isActive("soundcheck-enable-check-creation"),L=!S&&D&&H,{loading:N,allowed:E}=s({permission:z}),F=!n.find(i=>i.name==="soundcheck-enable-track-creation")||o.isActive("soundcheck-enable-track-creation"),B=!N&&E&&F,O=I&&!y&&A,j=x,g=p?.includes("portal")??!1;return c(b,{title:a,children:[c(J,{children:[d&&c(k,{children:[e(t,{path:"/campaigns/:campaignId/edit",element:e(te,{})}),e(t,{path:"/campaigns/:campaignId",element:e(Z,{})}),R&&e(t,{path:"/campaigns/create",element:e(ee,{})})]}),e(t,{path:"/quickstart",element:e(P,{})}),e(t,{path:"/tech-insights/track",element:e(ge,{})}),e(t,{path:"/tracks/:trackId/edit",element:e(ue,{})}),B&&e(t,{path:"/tracks/create",element:e(fe,{})}),e(t,{path:"/tracks/:trackId",element:e(Pe,{})}),e(t,{path:"/tracks/:trackId/checks/:checkId",element:e(u,{})}),e(t,{path:"/checks/:checkId",element:e(u,{})}),e(t,{path:"/checks/:checkId/edit",element:e(re,{})}),L&&c(k,{children:[e(t,{path:"/checks/create",element:e(ie,{})}),e(t,{path:"/checks/templates",element:e(ae,{})})]}),e(t,{path:"/integrations/:integrationId",element:e(ce,{})}),e(t,{path:"/integrations/:integrationId/edit",element:e(ne,{})}),g&&e(t,{path:"/",element:e(P,{})}),e(t,{path:"/*",element:c(r,{children:[e(r.Route,{title:"Overview",path:g?"/overview":"/",children:e("div",{className:m.tabContent,children:e(se,{})})}),v&&e(r.Route,{title:"Tech Insights",path:"/tech-insights",children:e(ke,{})}),j&&e(r.Route,{title:"Tech Health",path:"/tech-health",children:e(de,{})}),e(r.Route,{title:"Checks",path:"/checks",children:e(oe,{})}),e(r.Route,{title:"Tracks",path:"/tracks",children:e(Ce,{})}),d&&e(r.Route,{title:"Campaigns",path:"/campaigns",children:e(_,{})}),O&&e(r.Route,{title:"Integrations",path:"/integrations",children:e(me,{integrations:l})})]})})]})," "]})};export{be as RoutingPage,b as RoutingPageWrapper};
1
+ import{jsx as e,jsxs as a,Fragment as h}from"react/jsx-runtime";import{Page as M,TabbedLayout as r}from"@backstage/core-components";import{useApi as u,featureFlagsApiRef as Q,configApiRef as W}from"@backstage/core-plugin-api";import{usePermission as s}from"@backstage/plugin-permission-react";import{makeStyles as q,Box as d}from"@material-ui/core";import{SpotifyLicenseBanner as U}from"@spotify/backstage-plugin-core";import{soundcheckCampaignCreatePermission as V,soundcheckCollectorReadPermission as $,soundcheckCheckCreatePermission as z,soundcheckTrackCreatePermission as J}from"@spotify/backstage-plugin-soundcheck-common";import{Helmet as K}from"react-helmet";import{Routes as X,Route as t}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import{UserProvider as Y}from"../../contexts/UserProvider.esm.js";import Z from"../../hooks/useConfirmationModal.esm.js";import{AlertProvider as _}from"../../hooks/useSoundcheckAlert.esm.js";import{CampaignInsightsPage as ee}from"../CampaignInsightsPage/CampaignInsightsPage.esm.js";import{CampaignsPage as te}from"../CampaignsPage/CampaignsPage.esm.js";import{CampaignCreatePage as ie}from"../CampaignCreatePage/CampaignCreatePage.esm.js";import{EditCampaignView as re}from"../CampaignsPage/EditCampaignView.esm.js";import{CheckCreatePage as ae}from"../CheckCreatePage/CheckCreatePage.esm.js";import{CheckEditPage as oe}from"../CheckPage/CheckEditPage.esm.js";import{CheckInsightsPage as P}from"../CheckPage/CheckInsightsPage.esm.js";import{ChecksTab as ce}from"../ChecksTab/ChecksTab.esm.js";import{CheckTemplatesPage as ne}from"../CheckTemplatesPage/CheckTemplatesPage.esm.js";import{CollectorPage as le}from"../CollectorPage/CollectorPage.esm.js";import{CollectorDetailsPage as se}from"../CollectorPage/CollectorDetailsPage.esm.js";import{CollectorsPage as me}from"../CollectorsPage/CollectorsPage.esm.js";import{HierarchicalTechInsightsPage as he}from"../HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js";import{OverviewPageContent as de}from"../OverviewPage/OverviewPageContent.esm.js";import{QuickstartPage as C}from"../QuickstartPage/QuickstartPage.esm.js";import{SoundcheckHeader as pe}from"../SoundcheckHeader/SoundcheckHeader.esm.js";import{SoundcheckHeaderProvider as ge}from"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{SoundcheckQueryClientProvider as ke}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{TechHealth as fe}from"../TechHealth/TechHealth.esm.js";import{TechInsightsPage as ue}from"../TechInsights/TechInsightsPage.esm.js";import{TrackCreatePage as Pe}from"../TrackCreatePage/TrackCreatePage.esm.js";import{TrackEditPage as Ce}from"../TrackEditPage/TrackEditPage.esm.js";import{TrackPage as be}from"../TrackPage/TrackPage.esm.js";import{TracksTab as ve}from"../TracksTab/TracksTab.esm.js";import{NewFeatureTab as Ie}from"./NewFeatureTab.esm.js";const b=q(o=>({tabContent:{margin:0,padding:0},root:{"& > *":{display:"flex",flexDirection:"column",flexGrow:1}},pageContent:{display:"flex",flexDirection:"row",flexGrow:1},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",maxWidth:"100%","& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",padding:`${o.spacing(3)}px !important`}}})),v=({title:o="Soundcheck",children:m})=>{const n=b();return e(_,{children:e(Y,{children:e(ke,{children:e(ge,{defaultTitle:o,children:e(Z,{children:e(d,{className:n.root,children:a(M,{themeId:"website",children:[e(U,{backend:"soundcheck",invalidLicenseMessage:"Submitted facts and check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),e(pe,{documentTitle:o}),e(d,{className:n.pageContent,children:e(d,{className:n.pageLayout,children:m})})]})})})})})})})},Te=({title:o="Soundcheck",integrations:m})=>{const n=b(),c=u(Q),p=u(W),g=p.getOptionalStringArray("soundcheck.flags"),l=c.getRegisteredFlags(),I=p.getOptionalBoolean("soundcheck.techInsights.enabled"),T=(!l.find(i=>i.name==="soundcheck-enable-tech-health")||c.isActive("soundcheck-enable-tech-health"))&&!g?.includes("soundcheck-disable-tech-health"),x=!l.find(i=>i.name==="soundcheck-enable-collectors")||c.isActive("soundcheck-enable-collectors"),k=!l.find(i=>i.name==="soundcheck-enable-campaigns")||c.isActive("soundcheck-enable-campaigns"),{loading:w,allowed:R}=s({permission:V}),y=!w&&R,{loading:A,allowed:S}=s({permission:$}),{loading:H,allowed:D}=s({permission:z}),L=!l.find(i=>i.name==="soundcheck-enable-check-creation")||c.isActive("soundcheck-enable-check-creation"),N=!H&&D&&L,{loading:F,allowed:O}=s({permission:J}),B=!l.find(i=>i.name==="soundcheck-enable-track-creation")||c.isActive("soundcheck-enable-track-creation"),E=!F&&O&&B,j=x&&!A&&S,G=T,f=g?.includes("portal")??!1;return a(v,{title:o,children:[a(X,{children:[k&&a(h,{children:[e(t,{path:"/campaigns/:campaignId/edit",element:e(re,{})}),e(t,{path:"/campaigns/:campaignId",element:e(ee,{})}),y&&e(t,{path:"/campaigns/create",element:e(ie,{})})]}),e(t,{path:"/quickstart",element:e(C,{})}),e(t,{path:"/tech-insights/track",element:e(he,{})}),e(t,{path:"/tracks/:trackId/edit",element:e(Ce,{})}),E&&e(t,{path:"/tracks/create",element:e(Pe,{})}),e(t,{path:"/tracks/:trackId",element:e(be,{})}),e(t,{path:"/tracks/:trackId/checks/:checkId",element:e(P,{})}),e(t,{path:"/checks/:checkId",element:e(P,{})}),e(t,{path:"/checks/:checkId/edit",element:e(oe,{})}),N&&a(h,{children:[e(t,{path:"/checks/create",element:e(ae,{})}),e(t,{path:"/checks/templates",element:e(ne,{})})]}),e(t,{path:"/integrations/:integrationId",element:e(se,{})}),e(t,{path:"/integrations/:integrationId/edit",element:e(le,{})}),f&&e(t,{path:"/",element:e(C,{})}),e(t,{path:"/*",element:a(r,{children:[e(r.Route,{title:"Overview",path:f?"/overview":"/",children:e("div",{className:n.tabContent,children:e(de,{})})}),I&&e(r.Route,{title:e(Ie,{title:"Tech Insights"}),path:"/tech-insights",children:a(h,{children:[e(K,{title:"Tech Insights"}),e(ue,{})]})}),G&&e(r.Route,{title:"Tech Health",path:"/tech-health",children:e(fe,{})}),e(r.Route,{title:"Checks",path:"/checks",children:e(ce,{})}),e(r.Route,{title:"Tracks",path:"/tracks",children:e(ve,{})}),k&&e(r.Route,{title:"Campaigns",path:"/campaigns",children:e(te,{})}),j&&e(r.Route,{title:"Integrations",path:"/integrations",children:e(me,{integrations:m})})]})})]})," "]})};export{Te as RoutingPage,v as RoutingPageWrapper};
2
2
  //# sourceMappingURL=RoutingPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e}from"react/jsx-runtime";import{makeStyles as h,TextField as u,InputAdornment as c,IconButton as f}from"@material-ui/core";import g from"@material-ui/icons/Close";import x from"@material-ui/icons/Search";import{useRef as B,useEffect as I}from"react";const N=h(r=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"},searchBar:{color:r.palette.text.primary,paddingLeft:r.spacing(1)},iconWrapper:{marginLeft:0}})),S=({searchTerm:r,setSearchTerm:o,showClear:s=!0,placeholder:i="Search...",disabled:a,...l})=>{const t=N(),n=B(null);I(()=>{!a&&n.current&&n.current.focus()},[a]);const p=m=>{o(m.target.value)},d=()=>{o("")};return e(u,{...l,disabled:a,inputRef:n,fullWidth:!0,placeholder:i,value:r,onChange:p,InputProps:{className:t.searchBar,startAdornment:e(c,{className:t.iconWrapper,position:"start",children:e(x,{className:t.searchIcon,"data-testid":"search-icon"})}),endAdornment:s&&r?e(c,{position:"end",children:e(f,{edge:"end",onClick:d,className:t.clearButton,children:e(g,{})})}):null}})};export{S as SearchBar};
1
+ import{jsx as e}from"react/jsx-runtime";import{makeStyles as h,TextField as u,InputAdornment as c,IconButton as f}from"@material-ui/core";import g from"@material-ui/icons/Close";import x from"@material-ui/icons/Search";import{useRef as B,useEffect as I}from"react";const y=h(r=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"},searchBar:{color:r.palette.text.primary,paddingLeft:r.spacing(1)},iconWrapper:{marginLeft:0}})),N=({searchTerm:r,setSearchTerm:o,showClear:s=!0,placeholder:i="Search...",disabled:a,...l})=>{const t=y(),n=B(null);I(()=>{!a&&n.current&&n.current.focus()},[a]);const p=m=>{o(m.target.value)},d=()=>{o("")};return e(u,{...l,disabled:a,inputRef:n,fullWidth:!0,placeholder:i,value:r,onChange:p,InputProps:{className:t.searchBar,startAdornment:e(c,{className:t.iconWrapper,position:"start",children:e(x,{className:t.searchIcon,"data-testid":"search-icon"})}),endAdornment:s&&r?e(c,{position:"end",children:e(f,{edge:"end",onClick:d,className:t.clearButton,children:e(g,{})})}):null}})};export{N as SearchBar};
2
2
  //# sourceMappingURL=SearchBar.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as i}from"react/jsx-runtime";import{parseEntityRef as m,stringifyEntityRef as s}from"@backstage/catalog-model";import{Link as f}from"@backstage/core-components";import{useRouteRef as k}from"@backstage/core-plugin-api";import{entityRouteRef as d}from"@backstage/plugin-catalog-react";const p=({entity:e,trackId:t,checkId:o,className:c})=>{const n=k(d),a=m(s(e));let r=`${n(a)}/soundcheck`;return t&&o?r+=`/tracks/${t}/checks/${o}`:t&&(r+=`/tracks/${t}`),i(f,{to:r,className:c,children:e.metadata.title||e.metadata.name})};export{p as SoundcheckEntityLink};
2
+ //# sourceMappingURL=SoundcheckEntityLink.esm.js.map
@@ -1,2 +1,2 @@
1
- const a=e=>{const c={"^/soundcheck/campaigns$":"Campaigns","^/soundcheck/campaigns/create":"Create","^/soundcheck/campaigns/.*/edit":"Edit","^/soundcheck/campaigns/[^/]+$":"Campaign Insights","^/soundcheck/tracks$":"Tracks","^/soundcheck/tracks/create":"Create","^/soundcheck/tracks/.*/edit":"Edit","^/soundcheck/tracks/[^/]+$":"Track Insights","^/soundcheck/tracks/.*/checks/[^/]+$":"Check Insights","^/soundcheck/checks$":"Checks","^/soundcheck/checks/.*/edit":"Edit","^/soundcheck/checks/create":"Create","^/soundcheck/checks/templates$":"Templates","^/soundcheck/checks/[^/]+$":"Details","^/soundcheck/integrations/.*/edit":"Configure","^/soundcheck/integrations/[^/]+$":"Details","^/soundcheck/integrations$":"Integrations","^/soundcheck/tech-health$":"Tech Health","^/soundcheck/tech-health/campaigns":"Campaigns","^/soundcheck/tech-health/checks":"Checks","^/soundcheck/tech-health/tracks":"Tracks","^/soundcheck/tech-health/entities":"Entities","^/soundcheck/tech-health/teams":"Teams","^/soundcheck/tech-insights$":"Tech Insights","^/soundcheck/quickstart":"Quick Start"};for(const[s,t]of Object.entries(c))if(new RegExp(s).test(e))return t;return null},i=e=>e.split("/").filter(c=>c).map((c,s,t)=>{const h=`/${t.slice(0,s+1).join("/")}`,n=a(h);if(n)return h===e?{title:n}:{path:h,title:n}}).filter(c=>!!c);export{i as generateBreadcrumbs};
1
+ const a=e=>{const c={"^/soundcheck/campaigns$":"Campaigns","^/soundcheck/campaigns/create":"Create","^/soundcheck/campaigns/.*/edit":"Edit","^/soundcheck/campaigns/[^/]+$":"Campaign Insights","^/soundcheck/tracks$":"Tracks","^/soundcheck/tracks/create":"Create","^/soundcheck/tracks/.*/edit":"Edit","^/soundcheck/tracks/[^/]+$":"Track Insights","^/soundcheck/tracks/.*/checks/[^/]+$":"Check Insights","^/soundcheck/checks$":"Checks","^/soundcheck/checks/.*/edit":"Edit","^/soundcheck/checks/create":"Create","^/soundcheck/checks/templates$":"Templates","^/soundcheck/checks/[^/]+$":"Details","^/soundcheck/integrations/.*/edit":"Configure","^/soundcheck/integrations/[^/]+$":"Details","^/soundcheck/integrations$":"Integrations","^/soundcheck/tech-health$":"Tech Health","^/soundcheck/tech-health/campaigns":"Campaigns","^/soundcheck/tech-health/checks":"Checks","^/soundcheck/tech-health/tracks":"Tracks","^/soundcheck/tech-health/entities":"Entities","^/soundcheck/tech-health/teams":"Teams","^/soundcheck/tech-insights/track$":"Track","^/soundcheck/tech-insights$":"Tech Insights","^/soundcheck/quickstart":"Quick Start"};for(const[s,t]of Object.entries(c))if(new RegExp(s).test(e))return t;return null},i=e=>e.split("/").filter(c=>c).map((c,s,t)=>{const h=`/${t.slice(0,s+1).join("/")}`,n=a(h);if(n)return h===e?{title:n}:{path:h,title:n}}).filter(c=>!!c);export{i as generateBreadcrumbs};
2
2
  //# sourceMappingURL=headerUtil.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as n,jsxs as S}from"react/jsx-runtime";import{makeStyles as L,alpha as y,Box as h,Chip as I,TextField as O,FormControlLabel as T,Checkbox as w}from"@material-ui/core";import E from"@material-ui/icons/CheckBox";import z from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as j}from"@material-ui/lab";import{remove as N}from"lodash";import{useState as m,useEffect as V,useCallback as g,useMemo as W}from"react";import{CollapsablePanel as $}from"../../CollapsablePanel/CollapsablePanel.esm.js";import{ListboxVirtualized as B}from"../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useFilterContext as D}from"./FilterProvider.esm.js";import{Facet as b,facetTooltips as H}from"./types.esm.js";const P=L(({palette:e,spacing:o})=>({chip:{maxWidth:"45%",textOverflow:"ellipsis",margin:o(.5,.5,.5,0),overflow:"hidden","& svg":{color:y(e.common.white,.7),"&:hover":{color:e.common.white}},backgroundColor:e.action.disabledBackground},autoCompleteInput:{"&& input":{margin:o(1,0,0,0),padding:`${o(0,1,1,1)} !important`,width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},"&& button":{"&:hover":{backgroundColor:"transparent"}}},autoComplete:{margin:o(.5,0,1,0)},selectionLabel:{lineHeight:"1em"}})),q=({facet:e})=>{const o=P(),{getFacetOptions:C,getFacetOptionLabel:r,getSelectedFacetValues:i,setSelectedFacetValues:p}=D(),[x,d]=m(!1),[k,u]=m(!1),[F,f]=m("");V(()=>{d(!!i(e)?.length)},[i,e]);const s=g(t=>{if(e===b.Entity&&t[t.length-1]){const l=t[t.length-1];if(!l.includes(":")||!l.includes("/")){u(!0),f("Custom entities require a valid kind and namespace such as: component:default/entity");return}}u(!1),f(""),p(e,t)},[e,p]),a=W(()=>i(e),[e,i]),v=g(t=>{const l=[...a];N(l,c=>c===t),s(l)},[a,s]);return n($,{label:e,tooltip:H[e],isExpanded:x,setIsExpanded:d,children:S(h,{children:[n(h,{children:a.map(t=>n(I,{label:r(e,t),size:"small",className:o.chip,onDelete:()=>v(t),clickable:!1},t))}),n(j,{className:o.autoComplete,disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:e===b.Entity,popupIcon:null,renderTags:()=>null,options:C(e),getOptionLabel:t=>r(e,t),value:a,onChange:(t,l)=>s(l),ListboxComponent:B,ListboxProps:{itemHeight:50},renderInput:t=>n(O,{...t,className:o.autoCompleteInput,placeholder:`Search for ${e}`,error:k,helperText:F}),renderOption:(t,{selected:l})=>n(T,{onClick:c=>c.preventDefault(),control:n(w,{icon:n(z,{fontSize:"small"}),checkedIcon:n(E,{fontSize:"small"}),checked:l}),classes:{label:o.selectionLabel},label:r(e,t)})})]})})};export{q as FacetFilter};
1
+ import{jsx as n,jsxs as S}from"react/jsx-runtime";import{makeStyles as L,alpha as y,Box as h,Chip as I,TextField as O,FormControlLabel as w,Checkbox as E}from"@material-ui/core";import T from"@material-ui/icons/CheckBox";import z from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as j}from"@material-ui/lab";import{remove as N}from"lodash";import{useState as m,useEffect as P,useCallback as g,useMemo as V}from"react";import{CollapsablePanel as W}from"../../CollapsablePanel/CollapsablePanel.esm.js";import{ListboxVirtualized as B}from"../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useFilterContext as D}from"./FilterProvider.esm.js";import{Facet as b,facetTooltips as H}from"./types.esm.js";const $=L(({palette:e,spacing:o})=>({chip:{maxWidth:"45%",textOverflow:"ellipsis",margin:o(.5,.5,.5,0),overflow:"hidden","& svg":{color:y(e.common.white,.7),"&:hover":{color:e.common.white}},backgroundColor:e.action.disabledBackground},autoCompleteInput:{"&& input":{margin:o(1,0,0,0),padding:`${o(0,1,1,1)} !important`,width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},"&& button":{"&:hover":{backgroundColor:"transparent"}}},autoComplete:{margin:o(.5,0,1,0)},selectionLabel:{lineHeight:"1em"}})),q=({facet:e})=>{const o=$(),{getFacetOptions:C,getFacetOptionLabel:r,getSelectedFacetValues:i,setSelectedFacetValues:p}=D(),[x,d]=m(!1),[k,u]=m(!1),[F,f]=m("");P(()=>{d(!!i(e)?.length)},[i,e]);const s=g(t=>{if(e===b.Entity&&t[t.length-1]){const l=t[t.length-1];if(!l.includes(":")||!l.includes("/")){u(!0),f("Custom entities require a valid kind and namespace such as: component:default/entity");return}}u(!1),f(""),p(e,t)},[e,p]),a=V(()=>i(e),[e,i]),v=g(t=>{const l=[...a];N(l,c=>c===t),s(l)},[a,s]);return n(W,{label:e,tooltip:H[e],isExpanded:x,setIsExpanded:d,children:S(h,{children:[n(h,{children:a.map(t=>n(I,{label:r(e,t),size:"small",className:o.chip,onDelete:()=>v(t),clickable:!1},t))}),n(j,{className:o.autoComplete,disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:e===b.Entity,popupIcon:null,renderTags:()=>null,options:C(e),getOptionLabel:t=>r(e,t),value:a,onChange:(t,l)=>s(l),ListboxComponent:B,ListboxProps:{itemHeight:50},renderInput:t=>n(O,{...t,className:o.autoCompleteInput,placeholder:`Search for ${e}`,error:k,helperText:F}),renderOption:(t,{selected:l})=>n(w,{onClick:c=>c.preventDefault(),control:n(E,{icon:n(z,{fontSize:"small"}),checkedIcon:n(T,{fontSize:"small"}),checked:l}),classes:{label:o.selectionLabel},label:r(e,t)})})]})})};export{q as FacetFilter};
2
2
  //# sourceMappingURL=FacetFilter.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import{TabbedLayout as r}from"@backstage/core-components";import{useApi as p,featureFlagsApiRef as m}from"@backstage/core-plugin-api";import{makeStyles as n,Box as s}from"@material-ui/core";import{Routes as c,Route as d}from"react-router-dom";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as u}from"../SoundcheckHeader/useHeader.esm.js";import{TechHealthSummary as h}from"../TechHealthSummary/TechHealthSummary.esm.js";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../TechHealthTabs/PassRateTabStyles.esm.js";import"../StyledTooltip/StyledTooltip.esm.js";import"../TechHealthTabs/OwnerColumn.esm.js";import{TrackResultsTab as f}from"../TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js";import{EntityResultsTab as x}from"../TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js";import{GroupResultsTab as b}from"../TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js";import{CampaignResultsTab as g}from"../TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js";import{CheckResultsTab as k}from"../TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js";import"./Filters/types.esm.js";import"./Filters/FacetFilter.esm.js";import{FilterProvider as R}from"./Filters/FilterProvider.esm.js";import{Filters as T}from"./Filters/Filters.esm.js";import"./Filters/FiltersHeader.esm.js";import"./Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";const y=n(t=>({container:{display:"flex",margin:"-24px",backgroundColor:t.palette.background.paper,borderTop:`1px solid ${t.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${t.palette.divider}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:t.palette.background.paper,height:"100%",maxWidth:"100%"},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",backgroundColor:t.palette.background.default,"& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",borderTop:`1px solid ${t.palette.border}`,padding:`${t.spacing(3)}px !important`}}})),C=()=>{u();const t=y(),i=p(m),a=!i.getRegisteredFlags().find(l=>l.name==="soundcheck-enable-campaigns")||i.isActive("soundcheck-enable-campaigns");return e(R,{children:o("div",{className:t.container,children:[e("div",{className:t.fixedColumn,children:e(T,{})}),e("div",{className:t.flexibleColumn,children:e(s,{className:t.pageLayout,"aria-label":"tech health tabs",children:e(c,{children:e(d,{path:"/*",element:o(r,{children:[e(r.Route,{title:"Summary",path:"/",children:e(h,{})}),a&&e(r.Route,{title:"Campaigns",path:"/campaigns",children:e(g,{})}),e(r.Route,{title:"Checks",path:"/checks",children:e(k,{})}),e(r.Route,{title:"Tracks",path:"/tracks",children:e(f,{})}),e(r.Route,{title:"Entities",path:"/entities",children:e(x,{})}),e(r.Route,{title:"Teams",path:"/teams",children:e(b,{})})]})})})})})]})})};export{C as TechHealth};
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{TabbedLayout as i}from"@backstage/core-components";import{useApi as p,featureFlagsApiRef as l}from"@backstage/core-plugin-api";import{makeStyles as n,Box as s}from"@material-ui/core";import{Routes as c,Route as d}from"react-router-dom";import{useLCPReporting as u}from"../../hooks/useLCPReporting.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as h}from"../SoundcheckHeader/useHeader.esm.js";import{TechHealthSummary as f}from"../TechHealthSummary/TechHealthSummary.esm.js";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../TechHealthTabs/PassRateTabStyles.esm.js";import"../StyledTooltip/StyledTooltip.esm.js";import"../TechHealthTabs/OwnerColumn.esm.js";import{TrackResultsTab as x}from"../TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js";import{EntityResultsTab as b}from"../TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js";import{GroupResultsTab as g}from"../TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js";import{CampaignResultsTab as R}from"../TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js";import{CheckResultsTab as k}from"../TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js";import"./Filters/types.esm.js";import"./Filters/FacetFilter.esm.js";import{FilterProvider as C}from"./Filters/FilterProvider.esm.js";import{Filters as T}from"./Filters/Filters.esm.js";import"./Filters/FiltersHeader.esm.js";import"./Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";const y=n(t=>({container:{display:"flex",margin:"-24px",backgroundColor:t.palette.background.paper,borderTop:`1px solid ${t.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${t.palette.divider}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:t.palette.background.paper,height:"100%",maxWidth:"100%"},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",backgroundColor:t.palette.background.default,"& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",borderTop:`1px solid ${t.palette.border}`,padding:`${t.spacing(3)}px !important`}}})),v=()=>{h();const t=y(),r=p(l),o=!r.getRegisteredFlags().find(m=>m.name==="soundcheck-enable-campaigns")||r.isActive("soundcheck-enable-campaigns");return u({routeName:"soundcheck-tech-health",additionalAttributes:{campaignsEnabled:o.toString()}}),e(C,{children:a("div",{className:t.container,children:[e("div",{className:t.fixedColumn,children:e(T,{})}),e("div",{className:t.flexibleColumn,children:e(s,{className:t.pageLayout,"aria-label":"tech health tabs",children:e(c,{children:e(d,{path:"/*",element:a(i,{children:[e(i.Route,{title:"Summary",path:"/",children:e(f,{})}),o&&e(i.Route,{title:"Campaigns",path:"/campaigns",children:e(R,{})}),e(i.Route,{title:"Checks",path:"/checks",children:e(k,{})}),e(i.Route,{title:"Tracks",path:"/tracks",children:e(x,{})}),e(i.Route,{title:"Entities",path:"/entities",children:e(b,{})}),e(i.Route,{title:"Teams",path:"/teams",children:e(g,{})})]})})})})})]})})};export{v as TechHealth};
2
2
  //# sourceMappingURL=TechHealth.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as o,jsx as e}from"react/jsx-runtime";import{Grid as s,Button as I,Menu as w,MenuItem as z,ListItemIcon as M,ListItemText as N}from"@material-ui/core";import{makeStyles as E}from"@material-ui/core/styles";import G from"@material-ui/icons/Apps";import P from"@material-ui/icons/GridOn";import V from"@material-ui/icons/KeyboardArrowDown";import j from"@material-ui/icons/Reorder";import{ToggleButtonGroup as R,ToggleButton as h}from"@material-ui/lab";import{useRef as A,useState as u,useEffect as D}from"react";import{CSVLink as O}from"react-csv";import{SearchBar as W}from"../SearchBar/SearchBar.esm.js";import{ViewMode as g}from"./techHealthTabUtils.esm.js";const _=E(r=>({header:{padding:r.spacing(0,0,1),display:"flex"},headerButtons:{display:"flex",gap:r.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},exportButton:{height:"40px",width:"112px"},csvLink:{display:"none"},menuIconSize:{minWidth:r.spacing(4),color:r.palette.text.primary},menuList:{backgroundColor:r.palette.background.paper,color:r.palette.text.primary}})),F=({viewMode:r,setViewMode:f,isLoading:c,searchTerm:x,setSearchTerm:v,searchPlaceholder:b,fetchCsvData:S,csvFilename:k})=>{const t=_(),m=A(),B=(i,p)=>{p!==null&&f(p)},[d,n]=u(null),[a,C]=u([]),l=!!d,L=i=>{n(i.currentTarget)},T=()=>{n(null)},y=async()=>{n(null);const i=await S();C(i)};return D(()=>{a.length&&m?.current?.link.click()},[a]),o(s,{container:!0,spacing:2,className:t.header,children:[e(s,{item:!0,xs:6,children:e(W,{searchTerm:x,setSearchTerm:v,disabled:c,placeholder:b||"Search",variant:"outlined",size:"small"})}),o(s,{item:!0,xs:6,className:t.headerButtons,children:[e(I,{id:"export-button",className:t.exportButton,disabled:c,variant:"contained",color:"primary","aria-controls":l?"export-menu":void 0,"aria-haspopup":"true","aria-expanded":l?"true":void 0,onClick:L,endIcon:e(V,{}),children:"Export"}),e(O,{data:a,filename:k,className:t.csvLink,ref:m,target:"_blank"}),e(w,{id:"export-menu",anchorEl:d,getContentAnchorEl:null,open:l,onClose:T,MenuListProps:{"aria-labelledby":"export-button",disablePadding:!0,className:t.menuList},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:o(z,{onClick:y,children:[e(M,{color:"inherit",className:t.menuIconSize,children:e(P,{fontSize:"small"})}),e(N,{children:"CSV"})]})}),o(R,{size:"small",value:r,exclusive:!0,onChange:B,children:[e(h,{value:g.TABLE,title:"Table view",children:e(j,{color:"inherit"})}),e(h,{value:g.GRID,title:"Grid view",children:e(G,{color:"inherit"})})]})]})]})};export{F as PassRateTabHeader};
1
+ import{jsxs as o,jsx as e}from"react/jsx-runtime";import{Grid as s,Button as I,Menu as w,MenuItem as z,ListItemIcon as M,ListItemText as N}from"@material-ui/core";import{makeStyles as E}from"@material-ui/core/styles";import G from"@material-ui/icons/Apps";import P from"@material-ui/icons/GridOn";import V from"@material-ui/icons/KeyboardArrowDown";import j from"@material-ui/icons/Reorder";import{ToggleButtonGroup as R,ToggleButton as h}from"@material-ui/lab";import{useRef as A,useState as u,useEffect as D}from"react";import{CSVLink as O}from"react-csv";import{SearchBar as W}from"../SearchBar/SearchBar.esm.js";import{ViewMode as g}from"./techHealthTabUtils.esm.js";const _=E(r=>({header:{padding:r.spacing(0,0,1),display:"flex"},headerButtons:{display:"flex",gap:r.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},exportButton:{height:"40px",width:"112px"},csvLink:{display:"none"},menuIconSize:{minWidth:r.spacing(4),color:r.palette.text.primary},menuList:{backgroundColor:r.palette.background.paper,color:r.palette.text.primary}})),F=({viewMode:r,setViewMode:f,isLoading:c,searchTerm:x,setSearchTerm:v,searchPlaceholder:b,fetchCsvData:L,csvFilename:S})=>{const t=_(),m=A(),k=(i,p)=>{p!==null&&f(p)},[d,n]=u(null),[a,C]=u([]),l=!!d,T=i=>{n(i.currentTarget)},y=()=>{n(null)},B=async()=>{n(null);const i=await L();C(i)};return D(()=>{a.length&&m?.current?.link.click()},[a]),o(s,{container:!0,spacing:2,className:t.header,children:[e(s,{item:!0,xs:6,children:e(W,{searchTerm:x,setSearchTerm:v,disabled:c,placeholder:b||"Search",variant:"outlined",size:"small"})}),o(s,{item:!0,xs:6,className:t.headerButtons,children:[e(I,{id:"export-button",className:t.exportButton,disabled:c,variant:"contained",color:"primary","aria-controls":l?"export-menu":void 0,"aria-haspopup":"true","aria-expanded":l?"true":void 0,onClick:T,endIcon:e(V,{}),children:"Export"}),e(O,{data:a,filename:S,className:t.csvLink,ref:m,target:"_blank"}),e(w,{id:"export-menu",anchorEl:d,getContentAnchorEl:null,open:l,onClose:y,MenuListProps:{"aria-labelledby":"export-button",disablePadding:!0,className:t.menuList},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:o(z,{onClick:B,children:[e(M,{color:"inherit",className:t.menuIconSize,children:e(P,{fontSize:"small"})}),e(N,{children:"CSV"})]})}),o(R,{size:"small",value:r,exclusive:!0,onChange:k,children:[e(h,{value:g.TABLE,title:"Table view",children:e(j,{color:"inherit"})}),e(h,{value:g.GRID,title:"Grid view",children:e(G,{color:"inherit"})})]})]})]})};export{F as PassRateTabHeader};
2
2
  //# sourceMappingURL=PassRateTabHeader.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as p,jsx as n}from"react/jsx-runtime";import{Box as d,TextField as c,InputAdornment as z,IconButton as C,Chip as I}from"@material-ui/core";import{useTheme as k}from"@material-ui/core/styles";import S from"@material-ui/icons/Clear";import g from"@material-ui/icons/Flag";import h from"@material-ui/icons/TrackChanges";import{Autocomplete as v}from"@material-ui/lab";const A=({searchText:o,onSearchTextChange:r,selectedTrackIds:s,onSelectedTrackIdsChange:f,trackOptions:m,applicableTracks:a,isLoading:u})=>{const l=k();return u||a.length===0?null:p(d,{display:"flex",alignItems:"center",marginBottom:2,style:{gap:"8px"},children:[n(c,{placeholder:"Search tracks or campaigns...",variant:"outlined",size:"small",value:o,onChange:e=>r(e.target.value),style:{flex:1},InputProps:{endAdornment:o&&n(z,{position:"end",children:n(C,{size:"small",onClick:()=>r(""),edge:"end",children:n(S,{})})})}}),n(v,{multiple:!0,options:m,getOptionLabel:e=>e.name,value:m.filter(e=>s.includes(e.id)),onChange:(e,i)=>f(i.map(t=>t.id)),renderOption:e=>{const i=a.find(t=>t.id===e.id)?.type==="campaign";return p(d,{display:"flex",alignItems:"center",style:{gap:8},children:[i?n(g,{style:{color:l.palette.warning.main,fontSize:16}}):n(h,{style:{color:l.palette.info.main,fontSize:16}}),n("span",{children:e.name})]})},renderInput:e=>n(c,{...e,variant:"outlined",size:"small",placeholder:s.length===0?"All Tracks/Campaigns":"",style:{minWidth:300}}),renderTags:(e,i)=>e.length===0?null:e.map((t,y)=>{const x=a.find(T=>T.id===t.id)?.type==="campaign";return n(I,{label:t.name,size:"small",icon:x?n(g,{style:{color:l.palette.warning.main,fontSize:14}}):n(h,{style:{color:l.palette.info.main,fontSize:14}}),...i({index:y})},t.id)}),style:{minWidth:300}})]})};export{A as FilterControls};
1
+ import{jsxs as h,jsx as n}from"react/jsx-runtime";import{makeStyles as x,Box as p,TextField as d,InputAdornment as k,IconButton as y,Chip as f}from"@material-ui/core";import C from"@material-ui/icons/Clear";import{Autocomplete as I}from"@material-ui/lab";const T=x(l=>({input:{backgroundColor:l.palette.background.paper}})),b=({searchText:l,onSearchTextChange:i,selectedTrackIds:r,onSelectedTrackIdsChange:c,trackOptions:s,applicableTracks:m,isLoading:g})=>{const o=T();return g||m.length===0?null:h(p,{display:"flex",alignItems:"center",style:{gap:"8px"},flex:1,children:[n(d,{placeholder:"Search tracks or campaigns...",variant:"outlined",size:"small",value:l,onChange:e=>i(e.target.value),style:{flex:1},InputProps:{className:o.input,endAdornment:l&&n(k,{position:"end",children:n(y,{size:"small",onClick:()=>i(""),edge:"end",children:n(C,{})})})}}),n(I,{multiple:!0,options:s,getOptionLabel:e=>e.name,value:s.filter(e=>r.includes(e.id)),onChange:(e,a)=>c(a.map(t=>t.id)),groupBy:e=>e.type,renderOption:e=>n(p,{display:"flex",alignItems:"center",style:{gap:8},children:n("span",{children:e.name})}),renderInput:e=>n(d,{...e,variant:"outlined",size:"small",placeholder:r.length===0?"All Tracks/Campaigns":"",className:o.input,style:{minWidth:300}}),renderTags:(e,a)=>e.length===0?null:e.map((t,u)=>n(f,{label:t.name,size:"small",...a({index:u})},t.id)),style:{minWidth:300}})]})};export{b as FilterControls};
2
2
  //# sourceMappingURL=FilterControls.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as i,jsx as r,Fragment as t}from"react/jsx-runtime";import{makeStyles as v,Box as n,Paper as o,CircularProgress as l,Typography as c}from"@material-ui/core";import{useTheme as f}from"@material-ui/core/styles";import k from"@material-ui/icons/Flag";import x from"@material-ui/icons/Group";import N from"@material-ui/icons/TrackChanges";import{Skeleton as g}from"@material-ui/lab";import{getColorInterpolator as I}from"./ColorSchemeSelector.esm.js";const S=v(a=>({summaryTilesContainer:{gap:24,display:"flex",marginBottom:32},summaryTile:{flex:1,padding:24,display:"flex",alignItems:"center",background:a.palette.background.paper},summaryIconTrackChanges:{color:a.palette.info.main,fontSize:32,marginRight:16},summaryIconGroup:{color:a.palette.text.secondary,fontSize:32,marginRight:16},summaryIconCampaign:{color:a.palette.primary.main,fontSize:32,marginRight:16},summaryCircularProgress:{marginRight:16},skeletonText:{marginBottom:4}})),z=({summaryStats:a,colorInterpolator:p,isLoading:d=!1})=>{const e=S(),s=f(),u=I(s,p),m=(y,h,C,T=!1)=>i(t,{children:[y,r(n,{children:d||T?i(t,{children:[r(g,{variant:"text",width:60,height:32,className:e.skeletonText}),r(g,{variant:"text",width:80,height:20})]}):i(t,{children:[r(c,{variant:"h5",children:h}),r(c,{variant:"body2",color:"textSecondary",children:C})]})})]});return i(n,{className:e.summaryTilesContainer,children:[r(o,{className:e.summaryTile,children:m(r(k,{style:{color:s.palette.warning.main},className:e.summaryIconCampaign}),a.totalCampaigns??0,(a.totalCampaigns??0)===1?"Campaign":"Campaigns",a.totalCampaigns===void 0)}),r(o,{className:e.summaryTile,children:m(r(N,{className:e.summaryIconTrackChanges}),a.totalTracks??0,(a.totalTracks??0)===1?"Track":"Tracks",a.totalTracks===void 0)}),r(o,{className:e.summaryTile,children:m(a.avgCompliance!==void 0?r(l,{variant:"determinate",value:a.avgCompliance,size:32,thickness:4,style:{color:u(a.avgCompliance/100)},className:e.summaryCircularProgress}):r(l,{variant:"indeterminate",size:32,thickness:4,className:e.summaryCircularProgress}),a.avgCompliance!==void 0?`${a.avgCompliance}%`:"0%","Avg Compliance",a.avgCompliance===void 0)}),r(o,{className:e.summaryTile,children:m(r(x,{className:e.summaryIconGroup}),a.numTeams??0,"Teams",a.numTeams===void 0)})]})};export{z as SummaryTiles};
1
+ import{jsxs as n,jsx as i,Fragment as c}from"react/jsx-runtime";import{useApi as v,configApiRef as T}from"@backstage/core-plugin-api";import{makeStyles as C,Box as m,Paper as t,CircularProgress as p,Typography as d}from"@material-ui/core";import{useTheme as f}from"@material-ui/core/styles";import k from"@material-ui/icons/Group";import x from"@material-ui/icons/Memory";import{Skeleton as u}from"@material-ui/lab";import{RiGroupLine as N,RiPuzzleLine as b}from"@remixicon/react";import{getColorInterpolator as I}from"../../utils/colors.esm.js";import"../Badges/LevelBadge.esm.js";import"../Badges/NoLevelBadge.esm.js";import{CampaignBadge as R}from"../Badges/CampaignBadge.esm.js";import{StatusBadge as S}from"../Badges/StatusBadge.esm.js";const y=C(a=>({summaryTilesContainer:{gap:24,display:"flex",marginBottom:32},summaryTile:{flex:1,padding:24,display:"flex",alignItems:"center",background:a.palette.background.paper},summaryIconTrackChanges:{color:a.palette.info.main,fontSize:32,marginRight:16},summaryIconGroup:{color:a.palette.text.secondary,fontSize:32,marginRight:16},summaryIconEntity:{color:a.palette.text.secondary,fontSize:32,marginRight:16},summaryIconCampaign:{color:a.palette.primary.main,fontSize:32,marginRight:16},summaryCircularProgress:{marginRight:16},skeletonText:{marginBottom:4}})),o=({icon:a,value:s,label:e,isLoading:r=!1})=>{const l=y();return n(c,{children:[a,i(m,{children:r?n(c,{children:[i(u,{variant:"text",width:60,height:32,className:l.skeletonText}),i(u,{variant:"text",width:80,height:20})]}):n(c,{children:[i(d,{variant:"h5",children:s}),i(d,{variant:"body2",color:"textSecondary",children:e})]})})]})},z=({summaryStats:a,colorInterpolator:s,isLoading:e=!1})=>{const r=y(),l=f(),g=v(T).getOptionalStringArray("soundcheck.flags")?.includes("portal")??!1,h=I(l,s);return n(m,{className:r.summaryTilesContainer,children:[i(t,{className:r.summaryTile,children:i(o,{icon:i(m,{marginRight:2,children:i(R,{})}),value:a.totalCampaigns??0,label:(a.totalCampaigns??0)===1?"Campaign":"Campaigns",isLoading:a.totalCampaigns===void 0||e})}),i(t,{className:r.summaryTile,children:i(o,{icon:i(m,{marginRight:2,children:i(S,{hideTooltip:!0,status:{passed:(a.totalTracks??0)*(a.avgCompliance??0),failed:0,error:0,exempt:0,notApplicable:0,notReported:(a.totalTracks??0)*(100-(a.avgCompliance??0)),passPercentage:a.avgCompliance??0,warning:0},size:"small"})}),value:a.totalTracks??0,label:(a.totalTracks??0)===1?"Track":"Tracks",isLoading:a.totalTracks===void 0||e})}),i(t,{className:r.summaryTile,children:i(o,{icon:a.avgCompliance!==void 0?i(p,{variant:"determinate",value:a.avgCompliance,size:32,thickness:4,style:{color:h(a.avgCompliance/100)},className:r.summaryCircularProgress}):i(p,{variant:"indeterminate",size:32,thickness:4,className:r.summaryCircularProgress}),value:a.avgCompliance!==void 0?`${a.avgCompliance}%`:"0%",label:"Avg Compliance",isLoading:a.avgCompliance===void 0||e})}),i(t,{className:r.summaryTile,children:i(o,{icon:g?i(N,{className:r.summaryIconEntity}):i(k,{className:r.summaryIconGroup}),value:a.numTeams??0,label:"Teams",isLoading:a.numTeams===void 0||e})}),i(t,{className:r.summaryTile,children:i(o,{icon:g?i(b,{className:r.summaryIconEntity}):i(x,{className:r.summaryIconEntity}),value:a.numEntities??0,label:"Entities",isLoading:a.numEntities===void 0||e})})]})};export{z as SummaryTiles};
2
2
  //# sourceMappingURL=SummaryTiles.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as t,Fragment as p,jsx as e}from"react/jsx-runtime";import{useTheme as d,Box as a,Typography as n,Divider as o}from"@material-ui/core";import h from"@material-ui/icons/Flag";import f from"@material-ui/icons/TrackChanges";const y=({filteredCampaignTracks:l,filteredNonCampaignTracks:s,campaignTracks:g,TrackCard:m,classes:i})=>{const c=d();return t(p,{children:[t(a,{display:"flex",alignItems:"center",className:i.sectionHeader,style:{marginTop:32,gap:12},children:[e(h,{style:{color:c.palette.warning.main},fontSize:"large"}),e(n,{variant:"h5",children:"Campaigns"})]}),e(o,{style:{marginBottom:16}}),l.length>0?e(a,{className:i.gridContainer,style:{marginTop:0},children:e(a,{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",style:{gap:24},children:l.map(r=>e(m,{track:r},r.id))})}):e(a,{className:i.emptyState,children:e(n,{variant:"h6",children:g.length>0?"No active campaigns matching the current filters":"No active campaigns."})}),s.length>0&&t(a,{className:i.gridContainer,children:[t(a,{display:"flex",alignItems:"center",className:i.sectionHeader,style:{gap:12},children:[e(f,{style:{color:c.palette.info.main},fontSize:"large"}),e(n,{variant:"h5",children:"Tracks"})]}),e(o,{style:{marginBottom:16}}),e(a,{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",style:{gap:24},children:s.map(r=>e(m,{track:r},r.id))})]})]})};export{y as TechInsightsCardsView};
1
+ import{jsxs as p,Fragment as P,jsx as e}from"react/jsx-runtime";import{Box as r,Typography as d,Divider as T}from"@material-ui/core";import{useCallback as x,useMemo as k}from"react";import"../Badges/LevelBadge.esm.js";import"../Badges/NoLevelBadge.esm.js";import{CampaignBadge as w}from"../Badges/CampaignBadge.esm.js";import{StatusBadge as G}from"../Badges/StatusBadge.esm.js";const I=({filteredCampaigns:g,filteredTracks:u,campaignTracks:B,TrackCard:h,classes:n,isTracksLoading:b,trackStatusMap:i,trackCountsMap:f})=>{const s=x(t=>i?[...t].sort((a,c)=>{const N=i.get(a.id),v=i.get(c.id),m=N?.status?.allPassPercentage,l=v?.status?.allPassPercentage;return typeof m=="number"&&typeof l=="number"?m-l:typeof m=="number"&&typeof l!="number"?-1:typeof m!="number"&&typeof l=="number"?1:0}):t,[i]),o=x(t=>{const a=i?.get(t.id)?.status,c=(a?.passed??0)+(a?.failed??0)+(a?.warning??0)+(a?.error??0)+(a?.notReported??0)+(a?.exempt??0);return!a||c>0},[i]),y=k(()=>s(g.filter(o)),[o,g,s]),C=k(()=>s(u.filter(o)),[o,u,s]);return b?null:p(P,{children:[p(r,{display:"flex",alignItems:"center",className:n.sectionHeader,marginBottom:.5,marginTop:4,gridGap:12,children:[e(w,{}),e(d,{variant:"h5",style:{marginBottom:0},children:"Campaigns"})]}),e(T,{style:{marginBottom:16}}),y.length>0?e(r,{className:n.gridContainer,style:{marginTop:0},children:e(r,{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",style:{gap:24},children:y.map(t=>e(h,{track:t,entityCount:f?.get(t.id)},t.id))})}):e(r,{className:n.emptyState,children:e(d,{variant:"h6",children:B.length>0?"No active campaigns matching the current filters":"No active campaigns."})}),C.length>0&&p(r,{className:n.gridContainer,children:[p(r,{display:"flex",alignItems:"center",className:n.sectionHeader,marginBottom:.5,gridGap:12,children:[e(G,{hideTooltip:!0,status:{passed:10,failed:10,error:0,exempt:0,notApplicable:0,notReported:10,passPercentage:50,warning:0},size:"small"}),e(d,{variant:"h5",style:{marginBottom:0},children:"Tracks"})]}),e(T,{style:{marginBottom:16}}),e(r,{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",gridGap:24,marginBottom:.5,children:C.map(t=>e(h,{track:t,entityCount:f?.get(t.id)},t.id))})]})]})};export{I as TechInsightsCardsView};
2
2
  //# sourceMappingURL=TechInsightsCardsView.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as r,jsxs as X}from"react/jsx-runtime";import{useApi as he,useRouteRef as fe}from"@backstage/core-plugin-api";import{entityPresentationApiRef as ke}from"@backstage/plugin-catalog-react";import{makeStyles as ye,Box as m,Typography as J,LinearProgress as Te}from"@material-ui/core";import{useTheme as Ce}from"@material-ui/core/styles";import{useState as A,useCallback as w,useMemo as l}from"react";import{useNavigate as we,useSearchParams as Se}from"react-router-dom";import ve from"react-use/lib/useDebounce";import"@tanstack/react-query";import"../../api.esm.js";import{useBatchedHierarchicalTrackStatuses as Re}from"../../hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js";import{useGroupHierarchy as Ie}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{useTracksApplicableToGroup as Le}from"../../hooks/tracks/useTracksApplicableToGroup.esm.js";import{useLCPReporting as Ee}from"../../hooks/useLCPReporting.esm.js";import{techInsightsTrackRouteRef as be}from"../../routes.esm.js";import{AlertPanel as Pe}from"../AlertPanel/AlertPanel.esm.js";import"../GroupHierarchySelector/GroupHierarchySelectorDialog.esm.js";import"../GroupHierarchySelector/GroupHierarchySelector.esm.js";import"react-use/lib/useLocalStorage";import{getAllOwnedEntityCount as Me}from"../GroupHierarchySelector/getAllOwnedEntityCount.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as xe}from"../SoundcheckHeader/useHeader.esm.js";import{TechInsightsGroupSelector as Ae}from"../TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js";import{FilterControls as Ne}from"./FilterControls.esm.js";import{SummaryTiles as Be}from"./SummaryTiles.esm.js";import{TechInsightsCardsView as Ge}from"./TechInsightsCardsView.esm.js";import{TechInsightsTableView as Ve}from"./TechInsightsTableView.esm.js";import{TrackStatusCard as He}from"./TrackStatusCard.esm.js";import{TECH_INSIGHTS_VIEW_MODE as N,ViewModeControls as Ue}from"./ViewModeControls.esm.js";const je=ye(a=>({container:{padding:a.spacing(3),position:"relative"},gridContainer:{marginTop:a.spacing(3)},gridItem:{cursor:"pointer","&:hover":{transform:"scale(1.02)",transition:"transform 0.2s ease-in-out"}},emptyState:{textAlign:"center",padding:a.spacing(4)},errorState:{textAlign:"center",padding:a.spacing(4)},headerControls:{display:"flex",alignItems:"center"},progressIndicator:{position:"absolute",top:0,left:0,right:0,zIndex:a.zIndex.speedDial},tableRow:{"&:hover":{backgroundColor:a.palette.action.hover}}})),ze=()=>{const a=je(),K=Ce(),B=we(),[s,p]=Se(),o=s.get("group")||"";xe();const[S,Q]=A(s.get("search")||""),[d,W]=A(s.get("tracks")?.split(",").filter(Boolean)||[]),G=he(ke),v=s.get("view")||N.Table;Ee({routeName:"soundcheck-tech-insights",additionalAttributes:{selectedGroup:o,viewMode:v,hasSearch:!!S,hasSelectedTracks:d.length>0}});const Y=s.get("sortBy"),Z=s.get("direction"),V=Y||"compliance",H=Z||"asc",[U,q]=A("");ve(()=>q(S),300,[S]);const ee=w(e=>{Q(e);const t=new URLSearchParams(s.toString());e?t.set("search",e):t.delete("search"),p(t,{replace:!0})},[s,p]),te=w(e=>{W(e);const t=new URLSearchParams(s.toString());e.length>0?t.set("tracks",e.join(",")):t.delete("tracks"),p(t,{replace:!0})},[s,p]),re=e=>{const t=V===e&&H==="asc"?"desc":"asc",i=new URLSearchParams(s.toString());i.set("sortBy",e),i.set("direction",t),p(i,{replace:!0})},{tracks:R,counts:I,isLoading:k,error:ae}=Le(o,{},{enabled:!!o}),g=R.filter(e=>e.type==="campaign"),y=R.filter(e=>e.type!=="campaign"),oe=l(()=>[...g,...y].map(e=>({id:e.id,name:e.name,type:e.type==="campaign"?"Campaign":"Track"})),[g,y]),u=g.filter(e=>{const t=U.toLowerCase(),i=(e.ownerEntityRef?G.forEntity(e.ownerEntityRef):void 0)?.snapshot.primaryTitle?.toLowerCase()||"",C=t===""||e.name.toLowerCase().includes(t)||e.ownerEntityRef?.toLowerCase().includes(t)||i.includes(t),c=d.length===0||d.includes(e.id);return C&&c}),h=y.filter(e=>{const t=U.toLowerCase(),i=(e.ownerEntityRef?G.forEntity(e.ownerEntityRef):void 0)?.snapshot.primaryTitle?.toLowerCase()||"",C=t===""||e.name.toLowerCase().includes(t)||e.ownerEntityRef?.toLowerCase().includes(t)||i.includes(t),c=d.length===0||d.includes(e.id);return C&&c}),L=l(()=>[...g.map(e=>e.id),...y.map(e=>e.id)],[g,y]),{data:E,isLoading:ie,error:se,progress:n}=Re({trackIds:L,groupRef:o||"",skip:!o||L.length===0}),{data:j,isLoading:z}=Ie(o,{includeParent:!0}),f=l(()=>{const e=new Map;return Array.isArray(E)&&E.forEach(t=>{t&&t.trackId&&e.set(t.trackId,t)}),e},[E]),D=l(()=>{const e=new Map;return Array.isArray(I)&&I.forEach(t=>{t&&t.id&&e.set(t.id,t.applicableEntityCount)}),e},[I]),ne=k,b=L.length>0&&ie,ce=ae||se,O=l(()=>({totalCampaigns:u.length,totalTracks:h.length}),[u.length,h.length]),_=l(()=>{if(b)return{numTeams:void 0,avgCompliance:void 0};let e=0,t=0;const i=new Set;return[...u,...h].forEach(C=>{const c=f.get(C.id);if(c){c.status&&typeof c.status.allPassPercentage=="number"&&(e+=c.status.allPassPercentage,t++),c.groupRef&&i.add(c.groupRef);const M=[c];for(;M.length>0;){const ue=M.pop();for(const x of ue.children)i.has(x.groupRef)||(i.add(x.groupRef),M.push(x))}}}),{numTeams:i.size,avgCompliance:t>0?Math.round(e/t):0}},[u,h,f,b]),$=l(()=>{if(z)return{numEntities:void 0};const e=j?.[o];return{numEntities:Me(e)}},[j,z,o]),le=l(()=>({...O,..._,...$}),[O,_,$]),F=fe(be),P=w(e=>{if(!o)return;const t=new URLSearchParams;t.set("group",o),t.set("track",e),t.set("node",o),B(`${F()}?${t.toString()}`)},[o,B,F]),pe=w(({track:e,entityCount:t})=>{const i=(f.get(e.id)??null)?.status??null;return r(m,{className:a.gridItem,onClick:()=>P(e.id),children:r(He,{track:e,trackStatus:i,entityCount:t})})},[a.gridItem,P,f]),me=w(e=>{const t=new URLSearchParams(s.toString());t.set("view",e),p(t,{replace:!0})},[s,p]),de=l(()=>!n||n.totalTracks===0?0:n.loadedTracks/n.totalTracks*100,[n]),ge=k&&o||b&&n&&n.totalTracks>0;if(ce)return r(m,{className:a.container,children:r(J,{variant:"h4",className:a.errorState,children:"Error loading tech insights data"})});let T;return R.length===0&&!k?T=r(m,{className:a.emptyState,children:r(J,{variant:"h6",children:o?"No applicable tracks found for the selected group":"Please select a group to view applicable tracks"})}):v===N.Cards?T=r(Ge,{filteredCampaigns:u,filteredTracks:h,campaignTracks:g,TrackCard:pe,classes:a,isTracksLoading:k,trackStatusMap:f,trackCountsMap:D}):v===N.Table?T=r(Ve,{tracks:[...u,...h],trackStatusMap:f,trackCountsMap:D,orderBy:V,order:H,handleSort:re,handleTrackClick:P,theme:K,classes:a}):T=r(Pe,{severity:"info",title:"View not supported"}),X(m,{className:a.container,children:[X(m,{display:"flex",justifyContent:"space-between",alignItems:"center",style:{marginBottom:24},gridGap:12,children:[r(Ae,{}),r(Ne,{searchText:S,onSearchTextChange:ee,selectedTrackIds:d,onSelectedTrackIdsChange:te,trackOptions:oe,applicableTracks:R,isLoading:ne}),r(Ue,{viewMode:v,onViewModeChange:me})]}),r(m,{style:{marginTop:0},children:r(Be,{summaryStats:le,colorInterpolator:"viridis",isLoading:k})}),ge&&r(m,{style:{marginBottom:16},children:r(Te,{variant:n&&n.totalTracks>0?"determinate":"indeterminate",value:n&&n.totalTracks>0?de:void 0,"data-testid":"batch-loading-indicator"})}),T]})};export{ze as TechInsightsPage};
2
+ //# sourceMappingURL=TechInsightsPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as c,Fragment as P}from"react/jsx-runtime";import{useApi as v}from"@backstage/core-plugin-api";import{entityPresentationApiRef as I}from"@backstage/plugin-catalog-react";import{TableContainer as R,Paper as k,Table as T,TableHead as L,TableRow as C,TableCell as d,TableBody as S,Typography as b,Box as A}from"@material-ui/core";import B from"@material-ui/icons/ArrowDownward";import w from"@material-ui/icons/ArrowUpward";import E from"@material-ui/icons/TrackChanges";import{ColorChip as z}from"../ColorChip/ColorChip.esm.js";import{getColorInterpolator as H}from"./ColorSchemeSelector.esm.js";import{TeamStatusBar as $}from"./TeamStatusBar.esm.js";const D=s=>({passed:s.passed,failed:s.failed,warning:s.warning,error:s.error,exempt:s.exempt,notApplicable:s.notApplicable,notReported:s.notReported,allPassPercentage:s.allPassPercentage??0,statusByLevel:s.statusByLevel.map(r=>({ordinal:r.ordinal,passed:r.passed,failed:r.failed,warning:r.warning,error:r.error,notApplicable:r.notApplicable,notReported:r.notReported,passPercentage:r.passPercentage??0,exempt:r.exempt}))}),V=({tracks:s,trackStatusMap:r,orderBy:f,order:p,handleSort:h,handleTrackClick:u,theme:g,classes:l})=>{const N=v(I),x=[...s].sort((a,t)=>{const m=r.get(a.id),i=r.get(t.id);let n,o;switch(f){case"name":n=a.name?.toLowerCase()||"",o=t.name?.toLowerCase()||"";break;case"type":n=a.type||"",o=t.type||"";break;case"owner":n=a.ownerEntityRef?.toLowerCase()||"",o=t.ownerEntityRef?.toLowerCase()||"";break;case"compliance":n=m?.allPassPercentage??0,o=i?.allPassPercentage??0;break;default:return 0}return typeof n=="number"&&typeof o=="number"?p==="asc"?n-o:o-n:typeof n=="string"&&typeof o=="string"?p==="asc"?n.localeCompare(o):o.localeCompare(n):0}),y=a=>f===a?p==="asc"?e(w,{className:l.sortIcon,fontSize:"small"}):e(B,{className:l.sortIcon,fontSize:"small"}):e(w,{className:l.sortIcon,fontSize:"small",style:{opacity:0}});return e(R,{component:k,children:c(T,{className:l.table,size:"medium",children:[e(L,{children:c(C,{children:[e(d,{style:{width:60},className:l.tableHeaderCell}),e(d,{className:`${l.tableHeaderCell} ${l.headerCell}`,onClick:()=>h("name"),style:{cursor:"pointer"},children:c("div",{className:l.headerContent,style:{display:"flex",alignItems:"center",flexDirection:"row"},children:["Name",e("div",{className:l.sortIconContainer,style:{marginLeft:8},children:y("name")})]})}),e(d,{className:`${l.tableHeaderCell} ${l.headerCell}`,onClick:()=>h("owner"),style:{cursor:"pointer"},children:c("div",{className:l.headerContent,style:{display:"flex",alignItems:"center",flexDirection:"row"},children:["Owner",e("div",{className:l.sortIconContainer,style:{marginLeft:8},children:y("owner")})]})}),e(d,{className:`${l.tableHeaderCell} ${l.headerCell}`,onClick:()=>h("compliance"),style:{cursor:"pointer"},children:c("div",{className:l.headerContent,style:{display:"flex",alignItems:"center",flexDirection:"row"},children:["Compliance",e("div",{className:l.sortIconContainer,style:{marginLeft:8},children:y("compliance")})]})})]})}),e(S,{children:x.map(a=>{const t=r.get(a.id);let m=0;if(t?.allPassPercentage!==null&&t?.allPassPercentage!==void 0)m=t.allPassPercentage;else if(t){const i=(t.passed??0)+(t.failed??0)+(t.warning??0)+(t.error??0)+(t.notReported??0);m=i>0?(t.passed??0)/i*100:0}return c(C,{onClick:()=>u(a.id),className:l.tableRow,style:{cursor:"pointer"},children:[e(d,{className:l.tableCell,children:e("div",{style:{display:"flex",alignItems:"center"},children:e(E,{style:{color:g.palette.info.main,marginRight:8}})})}),e(d,{className:l.tableCell,children:e(b,{variant:"body2",style:{fontWeight:500},children:a.name})}),e(d,{className:l.tableCell,children:a.ownerEntityRef&&e("div",{style:{display:"flex",alignItems:"center"},children:(()=>{const i=N.forEntity(a.ownerEntityRef);return c(P,{children:[i.snapshot.Icon&&e("span",{style:{marginRight:8},children:e(i.snapshot.Icon,{fontSize:"small"})}),e(b,{variant:"body2",children:i.snapshot.primaryTitle||a.ownerEntityRef})]})})()})}),e(d,{className:l.tableCell,children:c("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e(z,{value:`${Math.round(m)}%`,getColor:H(g,"default"),numericValue:m/100}),e(A,{flex:1}),e($,{status:t?D(t):void 0})]})})]},a.id)})})]})})};export{V as TechInsightsTableView};
1
+ import{jsx as e,jsxs as C,Fragment as T}from"react/jsx-runtime";import{useApi as R}from"@backstage/core-plugin-api";import{entityPresentationApiRef as $}from"@backstage/plugin-catalog-react";import{TableContainer as S,Paper as E,Table as H,TableHead as L,TableRow as v,TableCell as i,TableSortLabel as f,TableBody as z,Typography as b,Box as k}from"@material-ui/core";import B from"@material-ui/icons/ArrowDownward";import M from"@material-ui/icons/ArrowUpward";import{useMemo as A}from"react";import{getColorInterpolator as F}from"../../utils/colors.esm.js";import{ColorChip as j}from"../ColorChip/ColorChip.esm.js";import{TeamStatusBar as V}from"../TeamStatusBar/TeamStatusBar.esm.js";import{convertToCommonTrackStatus as D}from"./convertToCommonTrackStatus.esm.js";const O=({tracks:w,trackStatusMap:d,trackCountsMap:u,orderBy:o,order:s,handleSort:m,handleTrackClick:N,theme:x,classes:r})=>{const I=R($),P=A(()=>[...w].filter(l=>{const t=d.get(l.id)?.status,c=(t?.passed??0)+(t?.failed??0)+(t?.warning??0)+(t?.error??0)+(t?.notReported??0)+(t?.exempt??0);return!t||c>0}).sort((l,t)=>{const c=d.get(l.id),g=d.get(t.id);let n,a;switch(o){case"name":n=l.name?.toLowerCase()||"",a=t.name?.toLowerCase()||"";break;case"type":n=l.type||"",a=t.type||"";break;case"owner":n=l.ownerEntityRef?.toLowerCase()||"",a=t.ownerEntityRef?.toLowerCase()||"";break;case"compliance":n=c?.status?.allPassPercentage??null,a=g?.status?.allPassPercentage??null;break;case"checks":n=l.levels.reduce((p,y)=>p+y.checks.length,0),a=t.levels.reduce((p,y)=>p+y.checks.length,0);break;case"entities":n=u.get(l.id)??0,a=u.get(t.id)??0;break;default:return 0}return typeof n=="number"&&typeof a=="number"?s==="asc"?n-a:a-n:typeof n=="number"&&a===null?-1:n===null&&typeof a=="number"?1:typeof n=="string"&&typeof a=="string"?s==="asc"?n.localeCompare(a):a.localeCompare(n):0}),[s,o,d,u,w]),h=l=>l.direction==="asc"?e(M,{...l,fontSize:"small"}):e(B,{...l,fontSize:"small"});return e(S,{component:E,children:C(H,{className:r.table,size:"small",children:[e(L,{children:C(v,{children:[e(i,{width:"30%",className:`${r.tableHeaderCell} ${r.headerCell}`,children:e(f,{active:o==="name",direction:o==="name"?s:"desc",onClick:()=>m("name"),IconComponent:h,children:e("div",{className:r.headerContent,children:"Name"})})}),e(i,{width:"10%",className:`${r.tableHeaderCell} ${r.headerCell}`,children:e(f,{active:o==="checks",direction:o==="checks"?s:"desc",onClick:()=>m("checks"),IconComponent:h,children:e("div",{className:r.headerContent,children:"Checks"})})}),e(i,{width:"10%",className:`${r.tableHeaderCell} ${r.headerCell}`,children:e(f,{active:o==="entities",direction:o==="entities"?s:"desc",onClick:()=>m("entities"),IconComponent:h,children:e("div",{className:r.headerContent,children:"Entities"})})}),e(i,{width:"30%",className:`${r.tableHeaderCell} ${r.headerCell}`,children:e(f,{active:o==="compliance",direction:o==="compliance"?s:"desc",onClick:()=>m("compliance"),IconComponent:h,children:e("div",{className:r.headerContent,children:"Compliance"})})}),e(i,{width:"20%",className:`${r.tableHeaderCell} ${r.headerCell}`,children:e(f,{active:o==="owner",direction:o==="owner"?s:"desc",onClick:()=>m("owner"),IconComponent:h,children:e("div",{className:r.headerContent,children:"Track Owner"})})})]})}),e(z,{children:P.map(l=>{const t=d.get(l.id)?.status;let c=0;if(t?.allPassPercentage!==null&&t?.allPassPercentage!==void 0)c=t.allPassPercentage;else if(t){const a=(t.passed??0)+(t.failed??0)+(t.warning??0)+(t.error??0)+(t.notReported??0)+(t.exempt??0);c=a>0?((t.passed??0)+(t.exempt??0))/a*100:0}const g=l.levels.reduce((a,p)=>a+p.checks.length,0),n=u.get(l.id)??0;return C(v,{onClick:()=>N(l.id),className:r.tableRow,style:{cursor:"pointer"},children:[e(i,{className:r.tableCell,children:e(b,{variant:"body2",style:{fontWeight:500},children:l.name})}),e(i,{className:r.tableCell,children:e(b,{variant:"body2",children:g})}),e(i,{className:r.tableCell,children:e(b,{variant:"body2",children:new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(n)})}),e(i,{className:r.tableCell,children:C("div",{style:{display:"flex",alignItems:"center",gap:8},children:[t&&e(j,{value:`${Math.round(c)}%`,getColor:F(x,"default"),numericValue:c/100}),e(k,{flex:1}),t&&e(V,{status:D(t)})]})}),e(i,{className:r.tableCell,style:{verticalAlign:"middle"},children:l.ownerEntityRef&&e(k,{display:"flex",alignItems:"center",children:(()=>{const a=I.forEntity(l.ownerEntityRef);return C(T,{children:[a.snapshot.Icon&&e(k,{marginRight:1,display:"flex",alignItems:"center",height:"20px",children:e(a.snapshot.Icon,{fontSize:"small"})}),e(b,{variant:"body2",style:{lineHeight:"20px"},children:a.snapshot.primaryTitle||l.ownerEntityRef})]})})()})})]},l.id)})})]})})};export{O as TechInsightsTableView};
2
2
  //# sourceMappingURL=TechInsightsTableView.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as a,jsx as t}from"react/jsx-runtime";import{useApi as x}from"@backstage/core-plugin-api";import{entityPresentationApiRef as u}from"@backstage/plugin-catalog-react";import{useTheme as v,Paper as N,Box as r,Typography as n}from"@material-ui/core";import{makeStyles as w}from"@material-ui/core/styles";import{Skeleton as h}from"@material-ui/lab";import{interpolateRgb as S}from"d3-interpolate";import{scaleLinear as b}from"d3-scale";import{TeamStatusBar as k}from"../TeamStatusBar/TeamStatusBar.esm.js";import{convertToCommonTrackStatus as T}from"./convertToCommonTrackStatus.esm.js";const B=w(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,height:"100%",maxWidth:"280px",padding:e.spacing(2),cursor:"pointer"},content:{display:"flex",flex:1},categoryBarContainer:{width:"100%",height:e.spacing(1),marginBottom:e.spacing(1),cursor:"pointer"},cardHeader:{lineHeight:1.2}})),C=(e,o)=>b().domain([0,50,100]).range([e.palette.error.main,e.palette.warning.main,e.palette.success.main]).interpolate(S.gamma(2.2))(o),D=({track:e,trackStatus:o,entityCount:l})=>{const p=v(),f=x(u),i=B(),s=e.ownerEntityRef?f.forEntity(e.ownerEntityRef):null,c=o?.allPassPercentage??0,m=!o,d=e.levels.reduce((g,y)=>g+y.checks.length,0);return a(N,{className:i.card,children:[a(r,{display:"flex",flexDirection:"column",alignItems:"flex-start",mb:1,children:[t(n,{variant:"h6",className:i.cardHeader,children:e.name}),s&&t(n,{variant:"caption",color:"textSecondary",children:s.snapshot.primaryTitle})]}),a(r,{display:"flex",flexDirection:"column",alignItems:"flex-start",mb:1,children:[a(n,{variant:"caption",color:"textSecondary",children:[d," check",d!==1?"s":""]}),l!==void 0&&a(n,{variant:"caption",color:"textSecondary",children:[new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(l)," ","entit",l!==1?"ies":"y"]})]}),m&&t(r,{className:i.content,children:a(r,{width:"100%",children:[t(r,{mb:2,children:t(h,{variant:"text",width:"60%",height:48})}),t(r,{className:i.categoryBarContainer,children:t(h,{variant:"rect",width:"100%",height:8})})]})}),!m&&isNaN(c)&&t(r,{margin:"auto",children:t(n,{variant:"body2",children:"No Data"})}),!m&&!isNaN(c)&&t(r,{className:i.content,children:a(r,{width:"100%",children:[t(r,{mb:2,children:t(n,{variant:"h3",style:{color:C(p,Math.floor(c))},children:`${Math.floor(c)}%`})}),t(r,{className:i.categoryBarContainer,children:t(k,{status:T(o)})})]})})]})};export{D as TrackStatusCard};
2
+ //# sourceMappingURL=TrackStatusCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as a,jsx as t}from"react/jsx-runtime";import{Box as r,Button as n}from"@material-ui/core";import{makeStyles as s}from"@material-ui/core/styles";import l from"@material-ui/icons/ViewComfy";import c from"@material-ui/icons/ViewList";import d from"@material-ui/icons/ViewModule";const m=s(()=>({viewModeButton:{marginRight:8},viewModeButtonLast:{marginRight:16}})),h=({viewMode:e,onViewModeChange:o})=>{const i=m();return a(r,{display:"flex",alignItems:"center",children:[t(n,{variant:e==="cards"?"contained":"outlined",startIcon:t(d,{}),onClick:()=>o("cards"),size:"small",className:i.viewModeButton,children:"Cards"}),t(n,{variant:e==="table"?"contained":"outlined",startIcon:t(c,{}),onClick:()=>o("table"),size:"small",className:i.viewModeButton,children:"Table"}),t(n,{variant:e==="chart"?"contained":"outlined",startIcon:t(l,{}),onClick:()=>o("chart"),size:"small",className:i.viewModeButtonLast,children:"Chart"})]})};export{h as ViewModeControls};
1
+ import{jsxs as s,jsx as t}from"react/jsx-runtime";import{Box as l,Button as r}from"@material-ui/core";import{makeStyles as d}from"@material-ui/core/styles";import c from"@material-ui/icons/ViewList";import m from"@material-ui/icons/ViewModule";const C=d(()=>({viewModeButton:{marginRight:8},viewModeButtonLast:{marginRight:16}})),e={Cards:"cards",Table:"table"},o={Contained:"contained",Outlined:"outlined"},u=({viewMode:n,onViewModeChange:i})=>{const a=C();return s(l,{display:"flex",alignItems:"center",children:[t(r,{variant:n===e.Table?o.Contained:o.Outlined,startIcon:t(c,{}),onClick:()=>i(e.Table),size:"small",className:a.viewModeButton,children:"Table"}),t(r,{variant:n===e.Cards?o.Contained:o.Outlined,startIcon:t(m,{}),onClick:()=>i(e.Cards),size:"small",className:a.viewModeButton,children:"Cards"})]})};export{e as TECH_INSIGHTS_VIEW_MODE,u as ViewModeControls};
2
2
  //# sourceMappingURL=ViewModeControls.esm.js.map
@@ -0,0 +1,2 @@
1
+ const a=e=>({passed:e.passed,failed:e.failed,warning:e.warning,error:e.error,exempt:e.exempt,notApplicable:e.notApplicable,notReported:e.notReported,allPassPercentage:e.allPassPercentage??0,statusByLevel:(e.statusByLevel||[]).map(t=>({ordinal:t.ordinal,passed:t.passed,failed:t.failed,warning:t.warning,error:t.error,notApplicable:t.notApplicable,notReported:t.notReported,passPercentage:t.passPercentage??0,exempt:t.exempt}))});export{a as convertToCommonTrackStatus};
2
+ //# sourceMappingURL=convertToCommonTrackStatus.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as d}from"react/jsx-runtime";import{Link as b}from"@backstage/core-components";import{useRouteRef as x}from"@backstage/core-plugin-api";import{useTheme as N,TableContainer as v,Table as T,TableBody as y,TableRow as s,TableCell as r,Typography as h,Box as w}from"@material-ui/core";import{makeStyles as R}from"@material-ui/core/styles";import{Skeleton as m}from"@material-ui/lab";import{useMemo as $}from"react";import{trackCheckDetailsRouteRef as A}from"../../routes.esm.js";import{getCheckStatusColor as F}from"../../utils/colors.esm.js";import{LevelRow as S}from"../LevelsTable/LevelsTable.esm.js";const z=R(t=>({root:{width:"100%",height:"100%",display:"flex",flexDirection:"column"},checkNameLink:{color:"inherit",textDecoration:"none"},bar:{height:8,display:"block"},barContainer:{width:"100%",display:"block"},cell:{padding:t.spacing(1),width:"auto"},barCell:{width:150,padding:"4px 8px"},rightAlignedCell:{textAlign:"right",paddingRight:`${t.spacing(2)}px !important`},failingText:{color:t.palette.text.secondary,display:"flex",flexDirection:"column",alignItems:"flex-end",lineHeight:1.2,minWidth:"40px"},noFailingChecksText:{padding:t.spacing(2,1)}})),D=({track:t,checkStatuses:c,certificationStatus:o})=>{const i=z(),p=N(),f=x(A),g=$(()=>(t.levels??[]).map(n=>({...n,failingChecks:n.checks.map(l=>{const a=c?.find(u=>u.id===l.id),k=a?a.numberOfEntities-a.notApplicable-a.exempt:0,C=a?.failed??0;return{check:l,failedCount:C,applicableCount:k}}).filter(({failedCount:l})=>l>0).sort((l,a)=>(a.failedCount??0)-(l.failedCount??0))})),[t.levels,c]);return t.levels?.length?e(v,{component:"div",className:i.root,children:e(T,{children:e(y,{children:c===void 0||o===void 0?Array.from({length:10}).map((n,l)=>d(s,{children:[e(r,{className:i.barCell,children:e(m,{variant:"rect",width:30,height:8})}),e(r,{size:"medium",className:i.cell,children:e(m,{variant:"rect",width:140,height:8})}),e(r,{size:"small",className:i.cell,children:e(m,{variant:"rect",width:100,height:8})})]},`skeleton-${l}`)):g.map(n=>d(S,{level:n,children:[n.failingChecks.map(({check:l,failedCount:a})=>d(s,{children:[e(r,{className:i.barCell,children:e("div",{className:i.barContainer,children:e("span",{className:i.bar,style:{width:`${(a??0)/o.numberOfEntities*100}%`,backgroundColor:F(p,"failed")}})})}),e(r,{size:"medium",className:i.cell,children:e(b,{className:i.checkNameLink,to:f({trackId:t.id,checkId:l.id}),children:e(h,{children:l.name})})}),e(r,{size:"small",className:`${i.cell} ${i.rightAlignedCell}`,children:e(w,{className:i.failingText,children:e(h,{variant:"caption",children:`${new Intl.NumberFormat().format(a??0)} failing`})})})]},l.id)),c&&o&&n.failingChecks.length===0&&e(s,{children:e(r,{children:e(h,{variant:"body2",className:i.noFailingChecksText,children:"No Failing Checks"})})})]},n.ordinal))})})}):null};export{D as TopFailingChecksTable};
1
+ import{jsx as e,jsxs as d}from"react/jsx-runtime";import{Link as x}from"@backstage/core-components";import{useRouteRef as v}from"@backstage/core-plugin-api";import{useTheme as N,TableContainer as T,Table as y,TableBody as w,TableRow as s,TableCell as r,Typography as h,Box as R}from"@material-ui/core";import{makeStyles as L}from"@material-ui/core/styles";import{Skeleton as m}from"@material-ui/lab";import{useMemo as $}from"react";import{trackCheckDetailsRouteRef as A}from"../../routes.esm.js";import{getCheckStatusColor as D}from"../../utils/colors.esm.js";import{LevelRow as F}from"../LevelsTable/LevelsTable.esm.js";const S=L(t=>({root:{width:"100%",height:"100%",display:"flex",flexDirection:"column"},checkNameLink:{color:"inherit",textDecoration:"none"},bar:{height:8,display:"block"},barContainer:{width:"100%",display:"block"},cell:{padding:t.spacing(1),width:"auto"},barCell:{width:150,padding:"4px 8px"},rightAlignedCell:{textAlign:"right",paddingRight:`${t.spacing(2)}px !important`},failingText:{color:t.palette.text.secondary,display:"flex",flexDirection:"column",alignItems:"flex-end",lineHeight:1.2,minWidth:"40px"},noFailingChecksText:{padding:t.spacing(2,1)}})),z=({track:t,checkStatuses:c,certificationStatus:o,hideLevel:p})=>{const i=S(),f=N(),g=v(A),k=$(()=>(t.levels??[]).map(n=>({...n,failingChecks:n.checks.map(l=>{const a=c?.find(b=>b.id===l.id),C=a?a.numberOfEntities-a.notApplicable-a.exempt:0,u=a?.failed??0;return{check:l,failedCount:u,applicableCount:C}}).filter(({failedCount:l})=>l>0).sort((l,a)=>(a.failedCount??0)-(l.failedCount??0))})),[t.levels,c]);return t.levels?.length?e(T,{component:"div",className:i.root,children:e(y,{children:e(w,{children:c===void 0||o===void 0?Array.from({length:10}).map((n,l)=>d(s,{children:[e(r,{className:i.barCell,children:e(m,{variant:"rect",width:30,height:8})}),e(r,{size:"medium",className:i.cell,children:e(m,{variant:"rect",width:140,height:8})}),e(r,{size:"small",className:i.cell,children:e(m,{variant:"rect",width:100,height:8})})]},`skeleton-${l}`)):k.map(n=>d(F,{level:n,hideLevel:p,children:[n.failingChecks.map(({check:l,failedCount:a})=>d(s,{children:[e(r,{className:i.barCell,children:e("div",{className:i.barContainer,children:e("span",{className:i.bar,style:{width:`${(a??0)/o.numberOfEntities*100}%`,backgroundColor:D(f,"failed")}})})}),e(r,{size:"medium",className:i.cell,children:e(x,{className:i.checkNameLink,to:g({trackId:t.id,checkId:l.id}),children:e(h,{children:l.name})})}),e(r,{size:"small",className:`${i.cell} ${i.rightAlignedCell}`,children:e(R,{className:i.failingText,children:e(h,{variant:"caption",children:`${new Intl.NumberFormat().format(a??0)} failing`})})})]},l.id)),c&&o&&n.failingChecks.length===0&&e(s,{children:e(r,{children:e(h,{variant:"body2",className:i.noFailingChecksText,children:"No Failing Checks"})})})]},n.ordinal))})})}):null};export{z as TopFailingChecksTable};
2
2
  //# sourceMappingURL=TopFailingChecksTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as C}from"react/jsx-runtime";import{stringifyEntityRef as z}from"@backstage/catalog-model";import{Table as L}from"@backstage/core-components";import{makeStyles as P}from"@material-ui/core";import x from"lodash";import{useState as O,useEffect as D,useCallback as w}from"react";import{TrackEntityField as r,Direction as k}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as F}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as N}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as i}from"./columns.esm.js";import{toTrackEntityRow as j}from"./utils.esm.js";const q=10,A=n=>[i.createBadgeColumn(),i.createNameColumn(),i.createStatusColumn(n),i.createSystemColumn(),i.createOwnerColumn(),i.createSpecTypeColumn(),i.createSpecLifecycleColumn()],G=[r.CertificationLevel,r.Name,r.CheckPassRate,r.System,r.Owner,r.Type,r.Lifecycle],I=n=>{const{lifecycles:g,owners:a,types:s,systems:c}=n,f=g?.length?{"spec.lifecycle":g}:void 0,m=a?.length?{"relations.ownedBy":a}:void 0,d=s?.length?{"spec.type":s}:void 0,y=c?.length?{"relations.partOf":c}:void 0;return{...f,...m,...d,...y}},W=P({tableContainer:{display:"flex",flexDirection:"column",height:"100%"}}),H=({track:n,initialPageSize:g,lifecycles:a,owners:s,types:c,systems:f,getColor:m})=>{const d=W(),y=A(m),[e,u]=O({orderBy:void 0,filter:I({lifecycles:a,owners:s,types:c,systems:f}),pageInfo:{page:0,pageSize:g??q,direction:"forward",cursor:null}});D(()=>{u(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:I({lifecycles:a,owners:s,types:c,systems:f})}))},[a,s,c,f]);const{data:l,isLoading:h}=N({trackId:n.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}),S=w((t,p)=>{let o;t===-1?o=void 0:o={field:G[t],direction:p==="asc"?k.Asc:k.Desc},u({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),E=w((t,p)=>{const o=t>e.pageInfo.page?"forward":"backward",R=o==="forward"?l?.trackEntities.pageInfo.endCursor??null:l?.trackEntities.pageInfo.startCursor??null;u({...e,pageInfo:{page:t,pageSize:p,direction:o,cursor:R}})},[l,e]),b=l?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:v,isLoading:T}=F({entityRefs:b}),B=x.compact(l?.trackEntities.edges.map(t=>{const p=v?.items.find(o=>!!o&&z(o)===t.node.entityRef);return p?j({trackDetails:t.node,track:n,entity:p}):void 0}))??[];return C("div",{className:d.tableContainer,children:C(L,{columns:y,data:B,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:e.pageInfo.pageSize,search:!1,showTitle:!1,padding:"dense"},onOrderChange:S,onPageChange:E,page:e.pageInfo.page,totalCount:l?.trackEntities.totalCount??0,isLoading:h||T,components:{Toolbar:()=>null}})})};export{H as TrackEntitiesTable};
1
+ import{jsx as C}from"react/jsx-runtime";import{stringifyEntityRef as z}from"@backstage/catalog-model";import{Table as L}from"@backstage/core-components";import{makeStyles as P}from"@material-ui/core";import x from"lodash";import{useState as O,useEffect as D,useCallback as k}from"react";import{TrackEntityField as i,Direction as w}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as F}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as N}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as a}from"./columns.esm.js";import{toTrackEntityRow as j}from"./utils.esm.js";const q=10,A=(r,n)=>[a.createBadgeColumn(),a.createNameColumn({trackId:n}),a.createStatusColumn(r),a.createSystemColumn(),a.createOwnerColumn(),a.createSpecTypeColumn(),a.createSpecLifecycleColumn()],G=[i.CertificationLevel,i.Name,i.CheckPassRate,i.System,i.Owner,i.Type,i.Lifecycle],I=r=>{const{lifecycles:n,owners:s,types:c,systems:l}=r,g=n?.length?{"spec.lifecycle":n}:void 0,d=s?.length?{"relations.ownedBy":s}:void 0,m=c?.length?{"spec.type":c}:void 0,y=l?.length?{"relations.partOf":l}:void 0;return{...g,...d,...m,...y}},W=P({tableContainer:{display:"flex",flexDirection:"column",height:"100%"}}),H=({track:r,initialPageSize:n,lifecycles:s,owners:c,types:l,systems:g,getColor:d})=>{const m=W(),y=A(d,r.id),[e,u]=O({orderBy:void 0,filter:I({lifecycles:s,owners:c,types:l,systems:g}),pageInfo:{page:0,pageSize:n??q,direction:"forward",cursor:null}});D(()=>{u(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:I({lifecycles:s,owners:c,types:l,systems:g})}))},[s,c,l,g]);const{data:p,isLoading:h}=N({trackId:r.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}),S=k((t,f)=>{let o;t===-1?o=void 0:o={field:G[t],direction:f==="asc"?w.Asc:w.Desc},u({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),E=k((t,f)=>{const o=t>e.pageInfo.page?"forward":"backward",R=o==="forward"?p?.trackEntities.pageInfo.endCursor??null:p?.trackEntities.pageInfo.startCursor??null;u({...e,pageInfo:{page:t,pageSize:f,direction:o,cursor:R}})},[p,e]),b=p?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:v,isLoading:T}=F({entityRefs:b}),B=x.compact(p?.trackEntities.edges.map(t=>{const f=v?.items.find(o=>!!o&&z(o)===t.node.entityRef);return f?j({trackDetails:t.node,track:r,entity:f}):void 0}))??[];return C("div",{className:m.tableContainer,children:C(L,{columns:y,data:B,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:e.pageInfo.pageSize,search:!1,showTitle:!1,padding:"dense"},onOrderChange:S,onPageChange:E,page:e.pageInfo.page,totalCount:p?.trackEntities.totalCount??0,isLoading:h||T,components:{Toolbar:()=>null}})})};export{H as TrackEntitiesTable};
2
2
  //# sourceMappingURL=TrackEntitiesTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,Fragment as o}from"react/jsx-runtime";import{OverflowTooltip as m}from"@backstage/core-components";import{EntityRefLink as u,EntityRefLinks as s}from"@backstage/plugin-catalog-react";import{makeStyles as c,withStyles as p,Chip as d}from"@material-ui/core";import f from"@material-ui/icons/RemoveCircleOutline";import{LevelBadge as y}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as g}from"../../Badges/NoLevelBadge.esm.js";import{CampaignBadge as h}from"../../Badges/CampaignBadge.esm.js";import{TrackStatusChip as S}from"./TrackStatusChip.esm.js";import{getApplicableCheckCount as C}from"./utils.esm.js";const l=c(()=>({linkHover:{"& span":{"&:hover":{textDecoration:"underline"}}}})),b=p(e=>({root:{color:e.palette.text.disabled}}))(f),v=Object.freeze({createBadgeColumn(){return{title:"",field:"badge",render:e=>C(e.status)===0?r(b,{}):e.track.type==="campaign"?r(h,{}):e.badge?r(y,{badge:e.badge}):r(g,{}),width:"auto",align:"center",sorting:!1}},createStatusColumn(e){return{title:"Checks",field:"status",render:t=>t.status&&r(S,{track:t.track,status:t.status,getColor:e}),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=l();return r(u,{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=l();return r(s,{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=l();return r(s,{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(m,{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(o,{children:e.metadata.tags&&e.metadata.tags.map(t=>r(d,{label:t,size:"small",variant:"outlined",style:{marginBottom:"0px"}},t))}),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,i=n&&n[e]||t?.defaultValue;return r(o,{children:i&&r(d,{label:i,size:"small",variant:"outlined"},i)})},width:"auto",sorting:!1}},createNamespaceColumn(){return{title:"Namespace",field:"entity.metadata.namespace",customSort(e,t){return 0},width:"auto"}}});export{v as columnFactories};
1
+ import{jsx as r,Fragment as l}from"react/jsx-runtime";import{OverflowTooltip as m}from"@backstage/core-components";import{EntityRefLink as c,EntityRefLinks as s}from"@backstage/plugin-catalog-react";import{makeStyles as u,withStyles as p,Chip as d}from"@material-ui/core";import f from"@material-ui/icons/RemoveCircleOutline";import{LevelBadge as y}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as g}from"../../Badges/NoLevelBadge.esm.js";import{CampaignBadge as h}from"../../Badges/CampaignBadge.esm.js";import{SoundcheckEntityLink as S}from"../../SoundcheckEntityLink/SoundcheckEntityLink.esm.js";import{TrackStatusChip as C}from"./TrackStatusChip.esm.js";import{getApplicableCheckCount as k}from"./utils.esm.js";const o=u(()=>({linkHover:{"& span":{"&:hover":{textDecoration:"underline"}}}})),v=p(t=>({root:{color:t.palette.text.disabled}}))(f),b=Object.freeze({createBadgeColumn(){return{title:"",field:"badge",render:t=>k(t.status)===0?r(v,{}):t.track.type==="campaign"?r(h,{}):t.badge?r(y,{badge:t.badge}):r(g,{}),width:"auto",align:"center",sorting:!1}},createStatusColumn(t){return{title:"Checks",field:"status",render:e=>e.status&&r(C,{track:e.track,status:e.status,getColor:t}),width:"auto",align:"center",sorting:!1}},createNameColumn(t){return{title:"Name",field:"resolved.entityRef",highlight:!0,customSort(e,a){return 0},render:({entity:e})=>{const a=o();return t?.trackId?r(S,{entity:e,trackId:t.trackId,className:a.linkHover}):r(c,{entityRef:e,defaultKind:t?.defaultKind||"Component",className:a.linkHover})}}},createSystemColumn(){return{title:"System",field:"resolved.partOfSystemRelationTitle",customSort(t,e){return 0},render:({resolved:t})=>{const e=o();return r(s,{entityRefs:t.partOfSystemRelations,defaultKind:"system",className:e.linkHover})}}},createOwnerColumn(){return{title:"Owner",field:"resolved.ownedByRelationsTitle",customSort(t,e){return 0},render:({resolved:t})=>{const e=o();return r(s,{entityRefs:t.ownedByRelations,defaultKind:"group",className:e.linkHover})}}},createSpecTypeColumn(){return{title:"Type",field:"entity.spec.type",customSort(t,e){return 0}}},createSpecLifecycleColumn(){return{title:"Lifecycle",field:"entity.spec.lifecycle",customSort(t,e){return 0},width:"auto"}},createMetadataDescriptionColumn(){return{title:"Description",field:"entity.metadata.description",customSort(t,e){return 0},render:({entity:t})=>r(m,{text:t.metadata.description,placement:"bottom-start"}),width:"auto"}},createTagsColumn(){return{title:"Tags",field:"entity.metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:t})=>r(l,{children:t.metadata.tags&&t.metadata.tags.map(e=>r(d,{label:e,size:"small",variant:"outlined",style:{marginBottom:"0px"}},e))}),width:"auto",sorting:!1}},createTitleColumn(t){return{title:"Title",field:"entity.metadata.title",customSort(e,a){return 0},hidden:t?.hidden,searchable:!0}},createLabelColumn(t,e){return{title:e?.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,i=n&&n[t]||e?.defaultValue;return r(l,{children:i&&r(d,{label:i,size:"small",variant:"outlined"},i)})},width:"auto",sorting:!1}},createNamespaceColumn(){return{title:"Namespace",field:"entity.metadata.namespace",customSort(t,e){return 0},width:"auto"}}});export{b as columnFactories};
2
2
  //# sourceMappingURL=columns.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as n}from"react/jsx-runtime";import{useTheme as g,Typography as x}from"@material-ui/core";import L from"lodash";import{DateTime as b}from"luxon";import{ResponsiveContainer as C,AreaChart as A,CartesianGrid as $,XAxis as I,YAxis as f,Tooltip as T,Area as y}from"recharts";import{compactNumberFormatter as W}from"../../utils/formatters.esm.js";import{getChartColors as D,formatDate as E}from"../Charts/chartUtils.esm.js";import{LoadingChart as N}from"../Charts/LoadingChart.esm.js";import{TimePeriodBar as O}from"../TimePeriodBar/TimePeriodBar.esm.js";const k=i=>{const a=i?.certificationStatusHistory.history??[],l=i?.certificationStatusHistory.numberOfEntities,o=b.utc();return L.map(a,(s,r)=>{let t={name:E(o,a.length-r-1),totalEntities:l??0};const p=[];for(const d of s.statusByLevel)p.push(d.cumulativelyPassed);const c=l??0;let m=0;s.statusByLevel.forEach((d,v)=>{const h=c>0?Math.round(p[v]/c*100):0;t={...t,[`Level ${d.ordinal}`]:h},m+=h});const u=Math.max(0,100-m);return t={...t,"No Level":u},t})},F=({track:i,data:a,isError:l})=>{const o=g();if(l)return e(x,{color:"error",children:"Failed to load track data."});if(!i||!a)return e(N,{type:"area",numLines:3});const s=k(a),r=D(o);return n("div",{style:{height:290,width:"100%",position:"relative",borderRadius:"4px"},children:[e(O,{}),e(C,{height:250,debounce:1,children:n(A,{data:s,margin:{top:0,right:0,bottom:0,left:0},children:[n("defs",{children:[i?.levels.map(t=>n("linearGradient",{id:`gradient-${t.ordinal}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[e("stop",{offset:"5%",stopColor:r[t.ordinal%r.length],stopOpacity:.4}),e("stop",{offset:"95%",stopColor:r[t.ordinal%r.length],stopOpacity:0})]},`gradient-${t.ordinal}`)),n("linearGradient",{id:"gradient-no-level",x1:"0",y1:"0",x2:"0",y2:"1",children:[e("stop",{offset:"5%",stopColor:o.palette.action.disabled,stopOpacity:.4}),e("stop",{offset:"95%",stopColor:o.palette.action.disabled,stopOpacity:0})]})]}),e($,{stroke:o.palette.divider,strokeWidth:1,horizontal:!0,vertical:!1}),e(I,{dataKey:"name",tickLine:!1,axisLine:!1}),e(f,{yAxisId:"left",domain:[0,100],axisLine:!1,tickLine:!1,tickFormatter:t=>`${t}%`,ticks:[0,25,50,75,100]}),e(f,{yAxisId:"right",orientation:"right",dataKey:"totalEntities",axisLine:!1,tickLine:!1,tickFormatter:t=>W(t)}),e(T,{contentStyle:{backgroundColor:o.palette.background.paper,color:o.palette.text.primary,border:`1px solid ${o.palette.divider}`},cursor:{stroke:o.palette.divider,strokeWidth:1}}),[...i?.levels??[]].reverse().map(t=>e(y,{type:"monotone",dataKey:`Level ${t.ordinal}`,name:`Level ${t.ordinal}`,stackId:"1",yAxisId:"left",stroke:r[t.ordinal%r.length],strokeWidth:2,fill:`url(#gradient-${t.ordinal})`,isAnimationActive:!1,activeDot:{fill:r[t.ordinal%r.length],stroke:o.palette.background.paper,strokeWidth:1,r:5}},`Level ${t.ordinal}`)),e(y,{type:"monotone",dataKey:"No Level",name:"No Level",stackId:"1",yAxisId:"left",stroke:o.palette.action.disabled,strokeWidth:2,fill:"url(#gradient-no-level)",isAnimationActive:!1,activeDot:{fill:o.palette.action.disabled,stroke:o.palette.background.paper,strokeWidth:1,r:5}},"No Level")]})})]})};export{F as TrackHistoryChart,k as formatLineChartData};
1
+ import{jsx as r,jsxs as l}from"react/jsx-runtime";import{useTheme as v,Typography as g}from"@material-ui/core";import x from"lodash";import{DateTime as L}from"luxon";import{ResponsiveContainer as b,AreaChart as C,CartesianGrid as A,XAxis as $,YAxis as h,Tooltip as O,Area as u}from"recharts";import{compactNumberFormatter as p}from"../../utils/formatters.esm.js";import{getChartColors as I,formatDate as T}from"../Charts/chartUtils.esm.js";import{LoadingChart as W}from"../Charts/LoadingChart.esm.js";import{TimePeriodBar as D}from"../TimePeriodBar/TimePeriodBar.esm.js";const y=i=>{const a=i?.certificationStatusHistory.history??[],n=i?.certificationStatusHistory.numberOfEntities??0,e=L.utc();return x.map(a,(d,o)=>{let t={name:T(e,a.length-o-1)},m=0,f=0;d.statusByLevel.sort((s,c)=>c.ordinal-s.ordinal).forEach(s=>{const c=s.cumulativelyPassed-f;t={...t,[`Level ${s.ordinal}`]:c},m+=c,f=s.cumulativelyPassed}),d.statusByLevel.reverse();const k=Math.max(0,n-m);return t={...t,"No Level":k},t})},E=(i,a)=>{if(typeof i=="number"){const n=a.certificationStatusHistory.numberOfEntities??0,e=n>0?Math.round(i/n*100):0;return`${p(i)} of ${p(n)} (${e}%)`}return i},H=({track:i,data:a,isError:n})=>{const e=v();if(n)return r(g,{color:"error",children:"Failed to load track data."});if(!i||!a)return r(W,{type:"area",numLines:3});const d=y(a),o=I(e);return l("div",{style:{height:290,width:"100%",position:"relative",borderRadius:"4px"},children:[r(D,{}),r(b,{height:250,debounce:1,children:l(C,{data:d,margin:{top:0,right:0,bottom:0,left:0},children:[l("defs",{children:[i?.levels.map(t=>l("linearGradient",{id:`gradient-${t.ordinal}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[r("stop",{offset:"5%",stopColor:o[t.ordinal%o.length],stopOpacity:.4}),r("stop",{offset:"95%",stopColor:o[t.ordinal%o.length],stopOpacity:0})]},`gradient-${t.ordinal}`)),l("linearGradient",{id:"gradient-no-level",x1:"0",y1:"0",x2:"0",y2:"1",children:[r("stop",{offset:"5%",stopColor:e.palette.action.disabled,stopOpacity:.4}),r("stop",{offset:"95%",stopColor:e.palette.action.disabled,stopOpacity:0})]})]}),r(A,{stroke:e.palette.divider,strokeWidth:1,horizontal:!0,vertical:!1}),r($,{dataKey:"name",tickLine:!1,axisLine:!1}),r(h,{yAxisId:"left",domain:[0,100],axisLine:!1,tickLine:!1,tickFormatter:t=>`${t}%`,ticks:[0,25,50,75,100]}),r(h,{yAxisId:"right",orientation:"right",domain:[0,Math.max(a?.certificationStatusHistory.numberOfEntities,1)],axisLine:!1,tickLine:!1,tickFormatter:t=>p(t)}),r(O,{contentStyle:{backgroundColor:e.palette.background.paper,color:e.palette.text.primary,border:`1px solid ${e.palette.divider}`},cursor:{stroke:e.palette.divider,strokeWidth:1},formatter:t=>E(t,a)}),i?.levels?.map(t=>r(u,{type:"monotone",dataKey:`Level ${t.ordinal}`,name:t.name??`Level ${t.ordinal}`,stackId:"1",yAxisId:"right",stroke:o[t.ordinal%o.length],strokeWidth:2,fill:`url(#gradient-${t.ordinal})`,isAnimationActive:!1,activeDot:{fill:o[t.ordinal%o.length],stroke:e.palette.background.paper,strokeWidth:1,r:5}},`Level ${t.ordinal}`)),r(u,{type:"monotone",dataKey:"No Level",name:"No Level",stackId:"1",yAxisId:"right",stroke:e.palette.action.disabled,strokeWidth:2,fill:"url(#gradient-no-level)",isAnimationActive:!1,activeDot:{fill:e.palette.action.disabled,stroke:e.palette.background.paper,strokeWidth:1,r:5}},"No Level")]})})]})};export{H as TrackHistoryChart,y as formatLineChartData};
2
2
  //# sourceMappingURL=TrackHistoryChart.esm.js.map