@spotify/backstage-plugin-soundcheck 0.12.9 → 0.12.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/alpha/package.json +2 -2
- package/dist/api.esm.js +1 -1
- package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
- package/dist/components/CacheConfig/utils.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignChecks.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignDetailsPage.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignResultsTable.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignListPage/CampaignListPage.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/CampaignForm.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/EditCampaignView.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignScheduleField/CampaignScheduleField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignMilestonesStep.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignTrackStep.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/hooks/utils.esm.js +1 -1
- package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
- package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
- package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
- package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
- package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
- package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
- package/dist/components/CheckCard/CheckCard.esm.js +1 -1
- package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
- package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
- package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +2 -0
- package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +2 -0
- package/dist/components/CheckPage/CheckEntitiesTable/utils.esm.js +2 -0
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +2 -0
- package/dist/components/CheckPage/CheckPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusBar.esm.js +2 -0
- package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +2 -0
- package/dist/components/CheckPage/CheckStatusTable.esm.js +2 -0
- package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +2 -0
- package/dist/components/CheckPage/StatusRow.esm.js +2 -0
- package/dist/components/CheckPage/utils.esm.js +2 -0
- package/dist/components/ChecksErrors/ChecksErrors.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/useRuleInputHandlers.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/utils/checkFormUtils.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/FactCollectionConfig.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
- package/dist/components/DraggableChip/DraggableChip.esm.js +1 -1
- package/dist/components/DroppableInput/DroppableInput.esm.js +1 -1
- package/dist/components/EditTrackPage/EditTrackPage.esm.js +1 -1
- package/dist/components/EmptyState/EmptyState.esm.js +1 -1
- package/dist/components/EntityContent/EntityContent.esm.js +1 -1
- package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/Filter/FilterComponent.esm.js +1 -1
- package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
- package/dist/components/Filter/utils.esm.js +1 -1
- package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
- package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
- package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
- package/dist/components/Frequency/util.esm.js +1 -1
- package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
- package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
- package/dist/components/LevelCard/LevelCard.esm.js +1 -1
- package/dist/components/LevelCard/LevelTooltip.esm.js +1 -1
- package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
- package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
- package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
- package/dist/components/OverviewPage/CampaignRow/CampaignRow.esm.js +1 -1
- package/dist/components/OverviewPage/CampaignRow/utils.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewTabs.esm.js +1 -1
- package/dist/components/OverviewPage/TableContent/TableContent.esm.js +1 -1
- package/dist/components/OverviewPage/TableContent/VirtualTableContent.esm.js +1 -1
- package/dist/components/Pagination/CursorPagination.esm.js +1 -1
- package/dist/components/Pagination/Pagination.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
- package/dist/components/ResultsTable/CheckCell/CheckCell.esm.js +1 -1
- package/dist/components/ResultsTable/HighestLevelBadge.esm.js +1 -1
- package/dist/components/ResultsTable/ProgramCheckIndicator.esm.js +1 -1
- package/dist/components/ResultsTable/ProgramCheckRow.esm.js +1 -1
- package/dist/components/ResultsTable/ProgramTitleRow.esm.js +1 -1
- package/dist/components/ResultsTable/ResultsTableFooter.esm.js +1 -1
- package/dist/components/ResultsTable/skeletons/ResultsTableSkeleton.esm.js +1 -1
- package/dist/components/ResultsTable/virtualized/Row.esm.js +1 -1
- package/dist/components/ResultsTable/virtualized/VirtualizedResultsTable.esm.js +1 -1
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/SearchBar/SearchBar.esm.js +1 -1
- package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
- package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
- package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
- package/dist/components/TechHealth/Filters/utils.esm.js +1 -1
- package/dist/components/TechHealth/TechHealth.esm.js +1 -1
- package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
- package/dist/components/TechHealthTabs/TechHealthExportFunctions.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
- package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
- package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
- package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
- package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackLevelsChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +47 -27
- package/dist/hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
- package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
- package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
- package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
- package/dist/hooks/checks/useExecuteCheck.esm.js +2 -0
- package/dist/hooks/entities/useCheckEntities.esm.js +2 -0
- package/dist/hooks/entities/useEntityRefsForUser.esm.js +1 -1
- package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
- package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
- package/dist/hooks/tracks/useGetChecksMap.esm.js +1 -1
- package/dist/images/k8s_blue.svg +108 -0
- package/dist/images/k8s_white.svg +108 -0
- package/dist/routes.esm.js +1 -1
- package/dist/text.esm.js +1 -1
- package/package.json +26 -19
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{MarkdownContent as b}from"@backstage/core-components";import{useRouteRef as N}from"@backstage/core-plugin-api";import{usePermission as v}from"@backstage/plugin-permission-react";import{makeStyles as k,CardContent as
|
|
1
|
+
import{MarkdownContent as b}from"@backstage/core-components";import{useRouteRef as N}from"@backstage/core-plugin-api";import{usePermission as v}from"@backstage/plugin-permission-react";import{makeStyles as k,CardContent as p,CardHeader as x,Typography as u,Divider as I,CardActions as S,Button as T}from"@material-ui/core";import{soundcheckCollectorUpdatePermission as $}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{useNavigate as A}from"react-router-dom";import{collectorDetailsRouteRef as B}from"../../../routes.esm.js";import{useSummaryCardStyles as L,Card as M}from"../../SummaryCard/SummaryCard.esm.js";import{hasLogo as R,CollectorLogo as D}from"./CollectorLogo.esm.js";const H=k(o=>({cardContent:{flex:1,paddingTop:o.spacing(1)},logoHeader:{paddingBottom:0,flex:0},headerContent:{display:"flex",alignItems:"center",height:o.spacing(5),marginBottom:o.spacing(1.5)},headerTypography:{marginBottom:0}})),i=["github"],P=({collector:o})=>{const{description:g,id:t,isConfigurable:c,isEditable:m,name:f}=o,{loading:s,allowed:d}=v({permission:$}),C=A(),y=N(B),r=L(),n=H(),h=i.includes(t)&&c&&m&&!s&&d,E=()=>{C(y({collectorId:t}))};let a;s||!d?a="You don't have permissions to configure this collector.":c?m?i.includes(t)||(a="Collector can only be configured through YAML"):a="Collector is already configured via YAML and cannot be configured through the UI.":a="Collector is not configurable.";const l=f??t;return e.createElement(M,{"data-testid":t,className:r.card},R(t)?e.createElement(p,{className:n.logoHeader},e.createElement(D,{collectorId:t})):e.createElement(x,{title:l,titleTypographyProps:{className:`${r.summaryName} ${n.headerTypography}`},classes:{content:n.headerContent}}),e.createElement(p,{className:n.cardContent},e.createElement(u,{variant:"body1",component:"div"},e.createElement(b,{className:r.summaryDescription,content:g??""})),e.createElement(u,{color:"textSecondary",variant:"body2"},a)),h&&e.createElement("div",null,e.createElement(I,null),e.createElement(S,{className:r.actionArea},e.createElement(T,{"aria-label":`${l}-edit`,"data-testid":`${l}-button`,size:"medium",color:"primary",role:"link",onClick:E,className:r.button},"Configure"))))};export{P as CollectorSummaryCard,i as ConfigurableCollectorIds};
|
|
2
2
|
//# sourceMappingURL=CollectorSummaryCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Chip as
|
|
1
|
+
import{Chip as u,Tooltip as C}from"@material-ui/core";import g from"@material-ui/icons/DragIndicator";import x from"@material-ui/icons/Visibility";import e from"react";import{useDrag as f}from"react-dnd";import{useContextMenu as M}from"../../hooks/useContextMenu.esm.js";import{ContextMenu as h}from"../ContextMenu/ContextMenu.esm.js";import{useChipStyles as b}from"./chipStyles.esm.js";const D=({chip:t,disabled:i,onContextMenuAdd:o})=>{const[E,r]=f(()=>({type:"chip",item:t,collect:d=>({isDragging:d.isDragging()})})),m=b(),l=["Add check"],{contextMenu:n,onContextMenu:c,onContextMenuClose:a,onContextMenuClick:s}=M(),p=()=>{s(),o?.(t)};return e.createElement(e.Fragment,null,e.createElement(u,{ref:r,label:t.name,className:m.chip,icon:e.createElement(g,{"data-testid":"drag-indicator-icon"}),disabled:i,onDelete:()=>{},onContextMenu:o?c:void 0,deleteIcon:e.createElement(C,{title:t.description??""},e.createElement(x,{"data-testid":"visibility-icon"}))}),e.createElement(h,{x:n.mouseX,y:n.mouseY,menuItems:l,onClose:a,onClick:p}))};export{D as DraggableChip};
|
|
2
2
|
//# sourceMappingURL=DraggableChip.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as y,Chip as M}from"@material-ui/core";import D from"@material-ui/icons/DragIndicator";import r,{useState as E}from"react";import{useDrop as S}from"react-dnd";import{useContextMenu as B}from"../../hooks/useContextMenu.esm.js";import{ContextMenu as N}from"../ContextMenu/ContextMenu.esm.js";import{useChipStyles as O}from"../DraggableChip/chipStyles.esm.js";const z=y(e=>({input:{border:`1px solid ${e.palette.divider}`,borderRadius:4,padding:e.spacing(1),minHeight:80},hoverBackground:{background:e.palette.action.hover},normalBackground:{background:e.palette.background.default},error:{border:"1px solid red"},chipContainer:{display:"flex",flexDirection:"column",fontSize:e.typography.body1.fontSize,color:e.palette.text.primary,gap:e.spacing(.75)}})),I=({chips:e,onDelete:a,onDrop:i,error:c=!1,placeholder:m="",disabled:s})=>{const o=z(),d=O(),[{isOver:u},
|
|
1
|
+
import{makeStyles as y,Chip as M}from"@material-ui/core";import D from"@material-ui/icons/DragIndicator";import r,{useState as E}from"react";import{useDrop as S}from"react-dnd";import{useContextMenu as B}from"../../hooks/useContextMenu.esm.js";import{ContextMenu as N}from"../ContextMenu/ContextMenu.esm.js";import{useChipStyles as O}from"../DraggableChip/chipStyles.esm.js";const z=y(e=>({input:{border:`1px solid ${e.palette.divider}`,borderRadius:4,padding:e.spacing(1),minHeight:80},hoverBackground:{background:e.palette.action.hover},normalBackground:{background:e.palette.background.default},error:{border:"1px solid red"},chipContainer:{display:"flex",flexDirection:"column",fontSize:e.typography.body1.fontSize,color:e.palette.text.primary,gap:e.spacing(.75)}})),I=({chips:e,onDelete:a,onDrop:i,error:c=!1,placeholder:m="",disabled:s})=>{const o=z(),d=O(),[{isOver:u},h]=S(()=>({accept:"chip",drop:t=>{i(t)},collect:t=>({isOver:t.isOver()})}),[i]),g=["Remove check"],{contextMenu:l,onContextMenu:x,onContextMenuClose:C,onContextMenuClick:f}=B(),[p,b]=E(null),k=(t,n)=>{x(t),b(n)},v=()=>{f(),p&&a(p)};return r.createElement("div",{ref:h,className:`${o.input} ${c?o.error:""} ${u?o.hoverBackground:o.normalBackground}`,"data-testid":"droppable-input"},r.createElement("div",{className:o.chipContainer},e?.length?e.map(t=>r.createElement(M,{key:t.id,label:t.name,className:d.chip,icon:r.createElement(D,null),style:{cursor:"pointer"},onDelete:()=>a(t),disabled:s,onContextMenu:n=>k(n,t)})):m),r.createElement(N,{x:l.mouseX,y:l.mouseY,menuItems:g,onClose:C,onClick:v}))};export{I as DroppableInput};
|
|
2
2
|
//# sourceMappingURL=DroppableInput.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{usePermission as
|
|
1
|
+
import{usePermission as n}from"@backstage/plugin-permission-react";import{soundcheckTrackUpdatePermission as p,soundcheckTrackReadPermission as d}from"@spotify/backstage-plugin-soundcheck-common";import r from"react";import{useParams as l}from"react-router-dom";import{TrackFormProvider as f}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as u}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as k}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as g}from"../PageWarningMessage/PageWarningMessage.esm.js";import{EditTrackView as E}from"./EditTrackView.esm.js";const P=()=>{const{trackId:e}=l(),{data:s,isLoading:t}=u({ids:[e??""],first:1}),o=s?.edges?.[0]?.node,{loading:i,allowed:c}=n({permission:p,resourceRef:e}),{loading:m,allowed:a}=n({permission:d,resourceRef:e});return r.createElement(r.Fragment,null,r.createElement(g,{entityName:"track",entityId:e,showNotFound:!t&&!o,showCannotView:!i&&!m&&!a}),t||i||m?r.createElement(k,null):a&&o&&r.createElement(f,null,r.createElement(E,{track:o,canEdit:c})))};export{P as EditTrackPage};
|
|
2
2
|
//# sourceMappingURL=EditTrackPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as l}from"@backstage/catalog-model";import{humanizeEntityRef as c}from"@backstage/plugin-catalog-react";import{makeStyles as m,Card as
|
|
1
|
+
import{parseEntityRef as l}from"@backstage/catalog-model";import{humanizeEntityRef as c}from"@backstage/plugin-catalog-react";import{makeStyles as m,Card as f,Typography as s}from"@material-ui/core";import t from"react";import g from"../../images/empty-state.svg";const u=m(e=>({card:{backgroundColor:e.palette.background.paper,border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius,display:"flex",padding:e.spacing(5)},container:{margin:"0 auto",display:"flex",flexDirection:"row",alignItems:"center",gap:e.spacing(5)},content:{width:"20rem",display:"flex",flexDirection:"column",gap:e.spacing(2)},header:{display:"flex",flexDirection:"column",gap:e.spacing(2)},action:{display:"inline-block"},img:{maxHeight:400}})),r=({title:e,description:n,imgSrc:a,action:o})=>{const i=u();return t.createElement(f,{className:i.card},t.createElement("div",{className:i.container},t.createElement("div",{className:i.content},t.createElement("header",{className:i.header},t.createElement(s,{variant:"h5"},e),t.createElement(s,{color:"textSecondary",variant:"body1"},n)),o&&t.createElement("div",{className:i.action},o)),t.createElement("div",null,t.createElement("img",{src:a??g,className:i.img,alt:e}))))},p="No certifications available",y=({ownerEntityRef:e,selectGroupHint:n})=>{let a="There are no tracks configured that apply to this entity.";return e&&(a=`Looks like the group '${c(l(e),{defaultKind:"Group"})}' doesn't own any entities that have any applicable tracks configured. ${n}`),t.createElement(r,{title:p,description:a})},d="Missing entities",E=({ownerEntityRef:e,selectGroupHint:n})=>{if(!e)return null;const a=c(l(e),{defaultKind:"Group"});return t.createElement(r,{title:d,description:`The group '${a}' doesn't own any entities. ${n??""}`})};export{r as EmptyState,y as NoCertifications,E as NoEntities,p as noCertificationsTitle,d as noEntitiesTitle};
|
|
2
2
|
//# sourceMappingURL=EmptyState.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as n}from"@material-ui/core";import{SpotifyLicenseBanner as
|
|
1
|
+
import{makeStyles as n}from"@material-ui/core";import{SpotifyLicenseBanner as r}from"@spotify/backstage-plugin-core";import e from"react";import{AlertProvider as o}from"../../hooks/useSoundcheckAlert.esm.js";import{soundcheckBackend as i,invalidLicenseMessage as a}from"../../utils/license.esm.js";import{CertificationsPage as m}from"../CertificationsPage/CertificationsPage.esm.js";const c=n(t=>({root:{"&:not(:first-child)":{marginTop:t.spacing(2)}}})),l=()=>{const t=c();return e.createElement(e.Fragment,null,e.createElement(o,null,e.createElement(r,{backend:i,invalidLicenseMessage:a,inline:!0}),e.createElement("div",{className:t.root},e.createElement(m,null))))};export{l as EntityContent};
|
|
2
2
|
//# sourceMappingURL=EntityContent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"react";import{entityPassRatesSummaryCsvFilename as o}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import"luxon";import{useSummaryAggregationsContext as m}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{EntityPassRateHistoryLineChart as n}from"../Charts/LineChart/EntityPassRateHistoryLineChart.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"@backstage/catalog-model";import{OverviewChartCard as l}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallEntityPassRatesToCsv as p}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const y=()=>{const{entityPassRatesOverviewTrends:{data:t,isLoading:r,isError:a}}=m(),s=t?.overallEntityPassRates?.length,i=!t?.overallEntityPassRates||!s||r||a;return e.createElement(l,{title:"Entity pass rate",subtitle:"By default, this chart shows the top 5 entities by pass rate for all teams with which you are associated. To see a different set of entities, use the filters.",chartSectionContent:e.createElement(n,null),disableDataExport:i,csvFilename:o,csvData:p(t)})};export{y as EntityPassRateCard};
|
|
2
2
|
//# sourceMappingURL=EntityPassRateCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Link as
|
|
1
|
+
import{Link as u,InfoCard as k}from"@backstage/core-components";import{useRouteRef as c}from"@backstage/core-plugin-api";import{useEntity as h}from"@backstage/plugin-catalog-react";import{Divider as v}from"@material-ui/core";import C from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as L}from"@spotify/backstage-plugin-core";import e,{Fragment as R}from"react";import{useAllCertifications as S}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as I}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationTrackRouteRef as w,certificationPlaylistRouteRef as b}from"../../routes.esm.js";import{soundcheckBackend as N,invalidLicenseMessage as A}from"../../utils/license.esm.js";import{AlertPanel as P}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as x}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as B}from"../EmptyState/EmptyState.esm.js";import{CardSkeleton as D}from"./skeletons/CardSkeleton.esm.js";const n=C(t=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:t.spacing(2)},emptyState:{overflow:"hidden"}})),m=({children:t,title:i})=>{const o=n();return e.createElement(k,{title:i},e.createElement("div",{className:o.infoCard},e.createElement(L,{inline:!0,backend:N,invalidLicenseMessage:A}),t))},M=(t,i)=>t.find(o=>o.trackIds.some(a=>a===i))?.id??"",T=({title:t="Soundcheck"})=>{const{entity:i}=h(),o=n(),{data:a,isError:p,isLoading:s}=S(i),{data:l,isError:d,isLoading:f}=I(i),g=c(w),y=c(b);return p||d?e.createElement(m,{title:t},e.createElement(P,{severity:"error",title:"Error loading certifications"})):s||f||!a||!l?e.createElement(m,{title:t},e.createElement(D,null)):a.length?e.createElement(m,{title:t},a.map((r,E)=>e.createElement(R,{key:r.program.name},e.createElement("div",{className:o.certificationWrapper,"data-testid":"soundcheck-track-row"},e.createElement(x,{key:r.program.id,name:r.program.name,badge:r.highestLevel?.badge,trackType:r.program?.type}),e.createElement(u,{to:r.program.type==="playlist"?y({playlistId:M(l,r.program.id),trackId:r.program.id}):g({trackId:r.program.id})},"View Details")),E<a.length-1?e.createElement(v,null):null))):e.createElement(m,{title:t},e.createElement("div",{className:o.emptyState},e.createElement(B,null)))};export{T as Card,n as useStyles};
|
|
2
2
|
//# sourceMappingURL=Card.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as y,Typography as f,Box as L,FormControlLabel as O,Checkbox as w,TextField as z}from"@material-ui/core";import F from"@material-ui/icons/CheckBox";import A from"@material-ui/icons/CheckBoxOutlineBlank";import I from"@material-ui/icons/ExpandMore";import{Autocomplete as T}from"@material-ui/lab";import t,{useState as B,useMemo as G,useCallback as u}from"react";import{useGetEntityFacets as M}from"../../hooks/catalog/useGetEntityFacets.esm.js";const N=y({container:{padding:0},formControl:{flexGrow:1}}),U=({facet:m,label:s,values:a,onChange:l,disabled:b,filter:C})=>{const p=N(),[E,r]=B(!1),{data:n,isLoading:g,error:h}=M(m,C),o=G(()=>n?.map(e=>e.toLocaleLowerCase("en-US")),[n]),d=a?.map(e=>e.toLocaleLowerCase("en-US"))??[],x=u((e,i)=>{l(i),o&&o.every(c=>i.includes(c))&&r(!1)},[o,l,r]),S=u(()=>{l(a?.length?a:void 0)},[a,l]);if(!n||!o||h)return t.createElement(f,{color:"error"},"Failed to load facet: ",m);const k=b||g||!a?.length&&(!n?.length||!o?.length),v=Array.from(new Set([...o,...d]));return t.createElement(L,{pb:1,pt:1,className:p.container},t.createElement(f,{variant:"subtitle2"},s),t.createElement(T,{open:E,onOpen:()=>r(!0),onClose:()=>r(!1),className:p.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":s,options:v,value:d,getOptionLabel:e=>n[o.indexOf(e)]??e,onChange:x,onBlur:S,disabled:k,renderOption:(e,{selected:i})=>t.createElement(O,{onClick:c=>c.preventDefault(),control:t.createElement(w,{icon:t.createElement(A,{fontSize:"small"}),checkedIcon:t.createElement(F,{fontSize:"small"}),checked:i}),label:n[o.indexOf(e)]??e}),size:"small",popupIcon:t.createElement(I,{"data-testid":"selected-facets-expand"}),renderInput:e=>t.createElement(z,{...e,variant:"outlined"})}))};export{U as EntityAutocompletePicker};
|
|
2
2
|
//# sourceMappingURL=EntityAutocompletePicker.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{EntityListProvider as c}from"@backstage/plugin-catalog-react";import{makeStyles as
|
|
1
|
+
import{EntityListProvider as c}from"@backstage/plugin-catalog-react";import{makeStyles as s,Grid as r}from"@material-ui/core";import t from"react";import{EntityAutocompletePicker as f}from"./EntityAutocompletePicker.esm.js";import{FilterPreviewTable as p}from"./FilterPreviewTable/FilterPreviewTable.esm.js";import{FILTER_OPTIONS as E}from"./types.esm.js";const d=s(()=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap"}})),y=10,g=({value:i,onChange:a,disabled:n})=>{const l=d(),m=e=>o=>{a({...i,[e]:o??[]})};return t.createElement(r,{container:!0,spacing:6},t.createElement(r,{item:!0,container:!0,className:l.filterContainer,spacing:2},E.map(e=>t.createElement(r,{item:!0,xs:12,sm:6,md:4,key:e.key},t.createElement(f,{facet:e.facet,label:e.label,values:i?.[e.key],onChange:m(e.key),disabled:n,filter:e.filter})))),t.createElement(r,{item:!0,xs:12},t.createElement(c,{pagination:{limit:y}},t.createElement(p,{filter:i}))))};export{g as FilterComponent};
|
|
2
2
|
//# sourceMappingURL=FilterComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Table as
|
|
1
|
+
import{Table as d}from"@backstage/core-components";import{EntityTable as a,useEntityList as y,EntityTypeFilter as g,EntityOwnerFilter as u,EntityLifecycleFilter as f}from"@backstage/plugin-catalog-react";import{makeStyles as E,Chip as T,useTheme as w}from"@material-ui/core";import t,{useEffect as b}from"react";import{EntityKindsFilter as h}from"./EntityKindsFilter.esm.js";import{EntitySystemsFilter as S}from"./EntitySystemsFilter.esm.js";import{CatalogTableToolbar as v}from"./EntityTableToolbar.esm.js";import{EntityTagFilter as x}from"./EntityTagFilter.esm.js";const F=E(()=>({entityTable:{'& span[class*="CatalogReactEntityDisplayName-root"]':{"&:hover":{textDecoration:"underline"}}}})),C=[a.columns.createEntityRefColumn({}),a.columns.createSystemColumn(),a.columns.createOwnerColumn(),a.columns.createSpecTypeColumn(),a.columns.createSpecLifecycleColumn(),{title:"Tags",field:"metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:e=>t.createElement(t.Fragment,null,e.metadata.tags&&e.metadata.tags.map(n=>t.createElement(T,{key:n,label:n,size:"small",variant:"outlined",style:{marginTop:"4px",marginBottom:"4px"}})))}],L=e=>({kinds:e.selectedKinds.length?new h(e.selectedKinds):void 0,systems:e.selectedSystems.length?new S(e.selectedSystems):void 0,type:e.selectedTypes.length?new g(e.selectedTypes):void 0,owners:e.selectedOwners.length?new u(e.selectedOwners):void 0,lifecycles:e.selectedLifecycles.length?new f(e.selectedLifecycles):void 0,tag:e.selectedTags.length?new x(e.selectedTags):void 0}),z=({filter:e})=>{const{updateFilters:n,entities:s,pageInfo:l,totalItems:i,loading:r}=y(),m=w(),c=F();b(()=>{const o=L(e);n(o)},[e,n]);const p=`All (${i||0})`;return t.createElement(t.Fragment,null,t.createElement("div",{className:c.entityTable},t.createElement(d,{title:p,columns:C,data:s,options:{padding:"dense",paging:!!l?.next||!!l?.prev,toolbar:!0,draggable:!1,tableLayout:"fixed",search:!1,showTitle:!0,rowStyle:{fontSize:m.typography.body1.fontSize},showFirstLastPageButtons:!1,emptyRowsWhenPaging:!1,pageSizeOptions:[],loadingType:"linear",showEmptyDataSourceMessage:!r,pageSize:10},onPageChange:o=>{o>0?l?.next?.():l?.prev?.()},components:{Toolbar:v},page:l?.prev?1:0,totalCount:l?.next?Number.MAX_VALUE:Number.MIN_SAFE_INTEGER,localization:{pagination:{labelDisplayedRows:""}}})))};export{z as FilterPreviewTable};
|
|
2
2
|
//# sourceMappingURL=FilterPreviewTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{asArray as
|
|
1
|
+
import{asArray as l}from"@spotify/backstage-plugin-soundcheck-common";import{emptyFilters as o}from"./types.esm.js";const c={selectedKinds:"kind",selectedTypes:"spec.type",selectedLifecycles:"spec.lifecycle",selectedOwners:"spec.owner",selectedSystems:"spec.system",selectedTags:"metadata.tags"},a=e=>!e||Object.values(e).every(t=>t.length===0)?void 0:{catalog:Object.entries(e).reduce((t,[r,s])=>{const n=c[r];return s.length>0&&(t[n]=s),t},{})},i=e=>Object.keys(c).reduce((t,r)=>(t[r]=l(e?.catalog?.[c[r]]??[]),t),{}),p=e=>{if(!e||Object.values(e).every(r=>r.length===0))return;const t={};for(const[r,s]of Object.entries(e))s?.length>0&&(t[c[r]]=s);return[t]},y=e=>{if(e&&Array.isArray(e)&&e.length){const t=e[0];return Object.keys(c).reduce((r,s)=>(r[s]=l(t?.[c[s]]??[]),r),{})}return o()};export{y as mapCatalogFilterToFilters,p as mapFiltersToCatalogFilter,a as mapFiltersToInputFilter,i as mapInputFilterToFormFilters};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as v,FormControl as E,InputLabel as f,Select as k,MenuItem as c,FormHelperText as y}from"@material-ui/core";import e from"react";import{Controller as h}from"react-hook-form";const x=v(l=>({helperText:{marginLeft:0},selectField:{width:"100%",display:"flex",alignItems:"center"},menuBackground:{backgroundColor:l.palette.background.paper}})),F=({name:l,control:d,selectLabel:r,options:i,disabled:p,rules:u,style:b,helperText:n,placeholder:o})=>{const a=x();return e.createElement(h,{name:l,control:d,rules:u,render:({field:s,fieldState:t})=>e.createElement(E,{variant:"outlined",style:b??{minWidth:200},error:t.invalid},r&&e.createElement(f,{id:`${l}-select-label`},r),e.createElement(k,{...s,className:a.selectField,disabled:p,error:t.invalid,"data-testid":`${l}-select`,labelId:`${l}-select-label`,label:r,displayEmpty:!0,value:s.value??"",MenuProps:{classes:{paper:a.menuBackground}},margin:"dense"},o&&e.createElement(c,{value:"",disabled:!0},o),i?.map(({value:m,label:g})=>e.createElement(c,{key:m,value:m},g))),(n||t.error)&&e.createElement(y,{className:a.helperText},t.error?t.error.message:n))})};export{F as FormControlledSelect};
|
|
2
2
|
//# sourceMappingURL=FormControlledSelect.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Typography as
|
|
1
|
+
import{Typography as l}from"@material-ui/core";import e from"react";import{Controller as a}from"react-hook-form";import{formStyles as p}from"../../utils/formStyles.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import{emptyFilters as c}from"../Filter/types.esm.js";import{FilterComponent as s}from"../Filter/FilterComponent.esm.js";const d=({control:o,description:t,name:m,disabled:n})=>{const i=p();return e.createElement("div",{className:i.filters},e.createElement(l,{variant:"body2"},t),e.createElement(a,{name:m,control:o,render:({field:r})=>e.createElement(s,{value:r.value??c(),onChange:r.onChange,disabled:n})}))};export{d as FormFilterSection};
|
|
2
2
|
//# sourceMappingURL=FormFilterSection.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as x,Grid as i,RadioGroup as $,Radio as u,Typography as s,TextField as g,FormControl as k,InputLabel as D,Select as M,MenuItem as U,Divider as _}from"@material-ui/core";import e,{useState as E,useEffect as R}from"react";import{getCronDescription as q}from"../../utils/cron.esm.js";import{MIN_TIME_UNIT_VALUE as F,MAX_TIME_UNIT_VALUE as S}from"../../utils/time.esm.js";import{TimeUnit as w}from"./types.esm.js";import{VALID_TIME_UNITS as A,toTimeUnit as H}from"./util.esm.js";const B=x(t=>({divider:{marginTop:t.spacing(3),marginBottom:t.spacing(3)},title:{cursor:"pointer"},humanDurationContainer:{alignItems:"flex-start",marginTop:3},cronInput:{width:250,marginTop:3},noPaddingLeft:{paddingLeft:0},noPadding:{padding:0},fullWidth:{width:"100%"},radioOptions:{width:"80%",paddingLeft:t.spacing(1)},selectField:{paddingRight:t.spacing(2)},inputLabel:{color:`${t.palette.text.primary} !important`},menuBackground:{backgroundColor:t.palette.background.paper}})),v=32,f=12,y=t=>t?(Math.ceil(t.length/v)-1)*f:0,O=({value:t,onChange:d,disabled:o,errors:c})=>{const a=B(),[n,l]=E(t),[h,N]=E(`${t.value}`);R(()=>{d&&d(n)},[n,d]);const b=r=>{l({...t,type:r.target.value})},I=r=>{N(r.target.value);const m=parseInt(r.target.value,10);l({...t,value:isNaN(m)?0:m})},L=r=>{l({...n,unit:H(r.target.value)??w.Hours})},P=r=>{const m=r.target.value;l({...n,cron:m})},T=()=>{l({...n,type:"cron"})},C=()=>{l({...n,type:"HumanDuration"})},p=c?.message??q(n.cron);return e.createElement(i,{container:!0,direction:"row"},e.createElement(i,{item:!0,className:`${a.noPadding} ${a.fullWidth}`},e.createElement($,{name:"frequencyType",value:n.type,onChange:b},e.createElement(i,{container:!0,alignItems:"flex-start",className:a.fullWidth},e.createElement(i,{item:!0,className:a.noPaddingLeft},e.createElement(u,{disabled:o,value:"HumanDuration"})),e.createElement(i,{item:!0,className:`${a.noPadding} ${a.radioOptions}`},e.createElement(s,{variant:"body1",className:a.title,onClick:C},"Run on a regular interval"),e.createElement(s,{variant:"caption"},"Run on a regular interval that you define"),n.type==="HumanDuration"&&e.createElement(i,{container:!0,className:a.humanDurationContainer,spacing:2},e.createElement(i,{item:!0,className:a.noPadding},e.createElement(g,{id:"every",type:"number",inputProps:{min:F,max:S},label:"Every",name:"every",disabled:o,value:h,error:!!c?.message,helperText:c?.message,onChange:I,InputLabelProps:{className:a.inputLabel}})),e.createElement(i,{item:!0,className:a.noPadding},e.createElement(k,null,e.createElement(D,{className:a.inputLabel,id:"frequency-unit"},"Unit"),e.createElement(M,{labelId:"frequency-unit",disabled:o,value:n.unit,onChange:L,"data-testid":"frequency-unit",className:a.selectField,MenuProps:{classes:{paper:a.menuBackground}}},A.map(r=>e.createElement(U,{key:r,value:r},r)))))))),e.createElement(_,{className:a.divider}),e.createElement(i,{container:!0,alignItems:"flex-start"},e.createElement(i,{item:!0,className:a.noPaddingLeft},e.createElement(u,{disabled:o,value:"cron"})),e.createElement(i,{item:!0,className:`${a.noPadding} ${a.radioOptions}`},e.createElement(s,{variant:"body1",className:a.title,onClick:T},"Run on a schedule"),e.createElement(s,{variant:"caption"},"Run on a schedule defined via cron expression"),n.type==="cron"&&e.createElement(i,{item:!0,className:a.noPadding},e.createElement(g,{id:"cron-expression","data-testid":"cron-expression",className:a.cronInput,label:p,disabled:o,placeholder:"* * * * *",error:!!c?.message,value:n.cron,onChange:P,InputProps:{style:{paddingTop:`${y(p)}px`}}})))))))};export{O as FrequencyComponent,y as calculateCronLabelPadding,v as characterLimitPerLine,f as paddingPerExtraLine};
|
|
2
2
|
//# sourceMappingURL=FrequencyComponent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import a from"lodash";import{TimeUnit as n}from"./types.esm.js";const s=()=>({type:"HumanDuration",unit:n.Hours,value:1,cron:""}),c=[n.Months,n.Weeks,n.Days,n.Hours,n.Minutes,n.Seconds];function m(r){return c.includes(r)}function i(r){switch(r){case"months":return n.Months;case"weeks":return n.Weeks;case"days":return n.Days;case"hours":return n.Hours;case"minutes":return n.Minutes;case"seconds":return n.Seconds;default:return null}}function f(r){if(r){const{cron:t,type:e,unit:u,value:o}=r;return e==="HumanDuration"?{[u]:o}:{cron:t}}}function l(r){const t=s();if(r&&a.isObject(r)){if("cron"in r)return{...t,type:"cron",cron:r.cron};const e=Object.entries(r);if(e.length){const[u,o]=e[0];return{...t,unit:i(u)??n.Hours,value:o}}}return t}export{c as VALID_TIME_UNITS,s as defaultFrequency,m as isTimeUnit,f as mapFrequencyToHumanDurationOrCron,l as mapHumanDurationOrCronToFrequency,i as toTimeUnit};
|
|
2
2
|
//# sourceMappingURL=util.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"react";import{groupPassRatesSummaryCsvFilename as m}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import"luxon";import{useSummaryAggregationsContext as i}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{GroupPassRateHistoryBarChart as p}from"../Charts/BarChart/GroupPassRateHistoryBarChart.esm.js";import{OverviewChartCard as n}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallGroupPassRatesToCsv as g}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const u=()=>{const{groupPassRatesOverviewTrends:{data:r,isLoading:e,isError:a}}=i(),o=r?.groupPassRates?.edges.length,s=!r?.groupPassRates||!o||e||a;return t.createElement(n,{title:"Team pass rate",subtitle:"Compare the aggregate pass rate for teams",chartSectionContent:t.createElement(p,null),disableDataExport:s,csvFilename:m,csvData:g(r)})};export{u as GroupPassRateCard};
|
|
2
2
|
//# sourceMappingURL=GroupPassRateCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as
|
|
1
|
+
import{useApi as S,configApiRef as v}from"@backstage/core-plugin-api";import{makeStyles as E,alpha as b,TextField as O,CircularProgress as k}from"@material-ui/core";import y from"@material-ui/lab/Autocomplete";import u,{useMemo as F,useCallback as C,useEffect as g}from"react";import{useSearchParams as P}from"react-router-dom";import w from"react-use/lib/useLocalStorage";import{useOptions as x}from"./useOptions.esm.js";const A=E(r=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:b(r.page.fontColor,.25)},"&:hover $notchedOutline":{borderColor:r.page.fontColor}},input:{backgroundColor:"transparent",color:r.page.fontColor},clearIndicator:{color:r.page.fontColor},popupIndicator:{color:r.page.fontColor},notchedOutline:{}}),{name:"SoundcheckGroupSelector"}),G=({setError:r})=>{const{options:o,isLoading:a,isError:s}=x(),t=A(),[i,f]=P(),[n,h]=w("soundcheck.overview.groupRef",null),p=i.get("group"),d=S(v).getOptionalString("soundcheck.overview.defaultSelectedGroupType"),m=F(()=>{if(!a&&o.length){if(p||n){const e=p??n;return o.find(c=>c.ref===e)??o[0]}else if(d)return o.find(e=>e.type===d)??o[0];return o[0]}return null},[d,a,o,p,n]),l=C((e,c)=>{e&&i.get("group")!==e&&(i.set("group",e),f(i,{replace:c}),h(e))},[i,h,f]),I=C((e,c)=>{l?.(c?.ref)},[l]);return g(()=>{n&&!p&&l(n,!0)},[n,p,l]),g(()=>{l(m?.ref,!0)},[l,m]),g(()=>{r?.(s?new Error("Error loading groups"):void 0)},[s,r]),s?null:u.createElement(y,{"aria-label":"Current group",className:t.root,classes:{clearIndicator:t.clearIndicator,popupIndicator:t.popupIndicator},disableClearable:!0,options:o??[],loading:a,groupBy:e=>e.key,value:m,freeSolo:!1,onChange:I,getOptionLabel:e=>e.name,renderInput:e=>u.createElement(O,{...e,variant:"outlined",placeholder:a?"Loading":"Select a group",className:t.textField,InputProps:{...e.InputProps,className:t.input,classes:{notchedOutline:t.notchedOutline},endAdornment:u.createElement(u.Fragment,null,a?u.createElement(k,{color:"inherit",size:20}):null,e.InputProps.endAdornment)}})})};export{G as GroupSelector};
|
|
2
2
|
//# sourceMappingURL=GroupSelector.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{LinearGauge as
|
|
1
|
+
import{LinearGauge as E}from"@backstage/core-components";import{useTheme as C,Paper as N,Grid as c,Typography as p,Box as S}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import t from"react";import{LevelBadge as L}from"../Badges/LevelBadge.esm.js";import"../Badges/NoLevelBadge.esm.js";import"../Badges/CampaignBadge.esm.js";import{generateBadge as w}from"../Badges/badge.esm.js";import{getChartColors as x}from"../Charts/chartUtils.esm.js";import{CheckCard as B}from"../CheckCard/CheckCard.esm.js";import{LevelTooltip as I}from"./LevelTooltip.esm.js";const u=(e,a)=>{if(!e?.certificationStatus?.numberOfEntities||a===void 0)return;const o=e.certificationStatus.statusByLevel.findIndex(s=>s.ordinal===a);if(o===-1)return;const r=e.certificationStatus.numberOfEntities,n=[];for(const s of e.certificationStatus.statusByLevel){const l=s.cumulativelyPassed;n.push(r?Math.round(l/r*100):100)}return n[o]},f=(e,a)=>{if(!e?.certificationStatus?.numberOfEntities||a===void 0)return;const o=e.certificationStatus.statusByLevel.findIndex(n=>n.ordinal===a);if(o===-1)return 0;const r=[];for(const n of e.certificationStatus.statusByLevel){const s=n.cumulativelyPassed;r.push(s)}for(let n=r.length-2;n>=0;n--)r[n]=Math.min(r[n]+r[n+1],100);return r[o]},k=b(e=>({card:{border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"1.1rem",cursor:"default"},header:{borderBottom:`1px solid ${e.palette.divider}`,width:"100%",padding:e.spacing(1,2),margin:0},levelNameContainer:{gridGap:e.spacing(1),width:"fit-content",padding:0},passRate:{fontWeight:"bold",fontSize:e.typography.overline.fontSize,cursor:"default"},gaugeContainer:{width:200,paddingLeft:e.spacing(.75),paddingRight:e.spacing(.75),paddingTop:2},content:{padding:e.spacing(2.5,2),display:"flex",gap:e.spacing(2)},description:{padding:0},gridItem:{padding:0}})),P=({track:e,level:a,index:o,data:r,lifecycles:n,owners:s,types:l,systems:g})=>{const i=k(),v=x(C()),m=u(r,a.ordinal),h=f(r,a.ordinal),y=m!==void 0?`${m}%`:"";return t.createElement(N,{elevation:1,className:i.card},t.createElement(c,{container:!0,alignItems:"center",justifyContent:"space-between",direction:"row",className:i.header},t.createElement(c,{item:!0,container:!0,alignItems:"center",direction:"row",className:i.levelNameContainer},t.createElement(L,{badge:a.badge??w(a.ordinal,e)}),t.createElement(I,{level:a,numerator:h??0,denominator:r?.certificationStatus?.numberOfEntities??0},t.createElement(p,{className:i.title},a.name??`Level ${a.ordinal}`))),t.createElement(c,{item:!0,className:i.gridItem},t.createElement(c,{container:!0,item:!0,className:i.gridItem},t.createElement(p,{variant:"overline",className:i.passRate},y),t.createElement("div",{className:i.gaugeContainer},t.createElement(E,{value:(m??0)/100,getColor:d=>v[o]}))))),t.createElement(S,{className:i.content},t.createElement(c,{container:!0,spacing:1},a.checks.map(d=>t.createElement(c,{item:!0,xs:12,sm:6,md:4,className:i.gridItem,key:d.id},t.createElement(B,{track:e,check:d,lifecycles:n,owners:s,types:l,systems:g}))))))};export{P as LevelCard,u as calculateCumulativePassRate,f as calculateCumulativePassRateNumerator};
|
|
2
2
|
//# sourceMappingURL=LevelCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{MarkdownContent as s}from"@backstage/core-components";import{makeStyles as d,Typography as i}from"@material-ui/core";import e from"react";import{StyledTooltip as p}from"../StyledTooltip/StyledTooltip.esm.js";const
|
|
1
|
+
import{MarkdownContent as s}from"@backstage/core-components";import{makeStyles as d,Typography as i}from"@material-ui/core";import e from"react";import{StyledTooltip as p}from"../StyledTooltip/StyledTooltip.esm.js";const m=d(()=>({root:{display:"flex"},boldCaption:{fontWeight:"bold"}})),v=({ordinal:o,name:a,description:r,numerator:l,denominator:t})=>{const n=m();return e.createElement("div",{className:n.root},e.createElement("div",null,a?e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement(i,{variant:"caption",className:n.boldCaption},a)),e.createElement("div",null,e.createElement(i,{variant:"caption"},`Level ${o}`))):e.createElement(i,{variant:"caption",className:n.boldCaption},`Level ${o}`),r&&e.createElement(s,{content:r}),t&&t>0?`${l} of ${t} entities passing`:`${l} entities passing`))},E=({children:o,level:a,numerator:r,denominator:l})=>{const{ordinal:t,name:n,description:c}=a;return e.createElement(p,{arrow:!0,title:e.createElement(v,{ordinal:t,name:n??void 0,description:c??void 0,numerator:r,denominator:l}),enterDelay:500,placement:"bottom"},o)};export{E as LevelTooltip,m as useStyles};
|
|
2
2
|
//# sourceMappingURL=LevelTooltip.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useEntity as
|
|
1
|
+
import{useEntity as d}from"@backstage/plugin-catalog-react";import{makeStyles as y}from"@material-ui/core";import m,{useState as g,useEffect as v}from"react";import C from"react-confetti";import E from"react-use/lib/useMeasure";import p from"react-use/lib/usePrevious";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as L}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";const w=y(()=>({root:{position:"absolute",width:"100%",height:"100%"}})),P=({programId:t})=>{const a=w(),{entity:n}=d(),{data:s,isLoading:f}=L(n,t),[l,{width:c,height:h}]=E(),o=f?void 0:s?.highestLevel?.ordinal??-1,i=p(o),e=p(t),[u,r]=g(!1);return v(()=>{typeof i<"u"&&typeof o<"u"&&t===e&&o>i&&r(!0)},[o,i,t,e]),u?m.createElement("div",{ref:l,className:a.root},m.createElement(C,{width:c,height:h,numberOfPieces:1e3,gravity:1,initialVelocityY:20,recycle:!1,onConfettiComplete:()=>r(!1)})):null};export{P as LevelUpParty};
|
|
2
2
|
//# sourceMappingURL=LevelUpParty.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as i,Grid as r,CircularProgress as a}from"@material-ui/core";import n from"react";const o=i(e=>({loadingContainer:{marginTop:e.spacing(1),display:"flex",justifyContent:"center",alignItems:"center",height:"100%"}})),s=({size:e})=>{const t=o();return n.createElement(r,{"aria-label":"loading indicator",container:!0,className:t.loadingContainer},n.createElement(a,{size:e}))};export{s as LoadingIndicator};
|
|
2
2
|
//# sourceMappingURL=LoadingIndicator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{withStyles as v,Button as k,makeStyles as w,Popover as
|
|
1
|
+
import{withStyles as v,Button as k,makeStyles as w,Popover as O,TextField as y,Checkbox as C}from"@material-ui/core";import F from"@material-ui/icons/ArrowDropDown";import{Autocomplete as P}from"@material-ui/lab";import t,{useState as I}from"react";const p=v(e=>({root:{color:e.palette.text.primary,paddingLeft:e.spacing(1),paddingRight:e.spacing(1),textTransform:"initial"}}))(k),S=w(e=>({root:{borderBottom:`1px solid ${e.palette.grey.A100}`,padding:e.spacing(1.5),backgroundColor:e.palette.background.paper},popper:{width:300,height:400,overflow:"hidden"},paper:{boxShadow:"none",margin:0},popperDisablePortal:{width:"100% !important"},option:{padding:e.spacing(.5),'&[data-selected="true"]':{background:"inherit"}},chips:{display:"flex",flexWrap:"wrap"},chip:{margin:1},listbox:{margin:1,height:320}})),T=({name:e,options:c,label:a,icon:s,filters:d,setFilters:m,disabled:u,customRenderOption:g})=>{const r=S(),[n,i]=I(null),h=o=>{i(o.currentTarget)},f=()=>{i(null)},b=(o,l)=>{m(l)},x=o=>t.createElement(y,{...o,name:"filter",variant:"outlined",placeholder:"Filter",fullWidth:!0}),E=(o,{selected:l})=>t.createElement(t.Fragment,null,t.createElement(C,{value:o,checked:l,color:"primary"}),o);return t.createElement(t.Fragment,null,t.createElement(p,{startIcon:s,endIcon:t.createElement(F,null),onClick:h,disabled:u},a),t.createElement(O,{id:`${a}-filter-popover`,open:!!n,anchorEl:n,onClose:f,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},PaperProps:{elevation:2,className:r.popper}},t.createElement(P,{multiple:!0,disablePortal:!0,classes:{root:r.root,paper:r.paper,popperDisablePortal:r.popperDisablePortal,option:r.option,listbox:r.listbox},renderOption:g??E,id:`multi-select-filter-${e}--select`,value:d,options:c,limitTags:3,onChange:b,getOptionSelected:(o,l)=>o.toLowerCase()===l.toLowerCase(),renderInput:x,renderTags:()=>null,closeIcon:null,popupIcon:null,handleHomeEndKeys:!0,clearOnEscape:!0,open:!0})))};export{p as QuickFilterButton,T as default};
|
|
2
2
|
//# sourceMappingURL=MultiSelectFilter.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRouteRef as
|
|
1
|
+
import{useRouteRef as u}from"@backstage/core-plugin-api";import{EntityRefLink as L}from"@backstage/plugin-catalog-react";import{Typography as t,Button as M,Menu as O,MenuItem as E}from"@material-ui/core";import z from"@material-ui/icons/ArrowDropDown";import j from"@material-ui/icons/ArrowDropUp";import e,{useState as q}from"react";import{useNavigate as A}from"react-router-dom";import{useEntityPassRateTrend as B}from"../../../hooks/aggregations/useEntityPassRateTrend.esm.js";import{campaignDetailsRouteRef as F,campaignEditRouteRef as Q}from"../../../routes.esm.js";import{convertToReadableDate as p}from"../../CampaignsTab/CampaignDetailsPage/CampaignDetails.esm.js";import{Loading as V}from"../../TechHealth/Loading/Loading.esm.js";import{useCampaignRowStyles as W}from"./useCampaignRowStyles.esm.js";import{calculateOverallPassPercent as G,calculatePassingEntities as H}from"./utils.esm.js";const J=l=>{if(l?.edges.length){const a=H(l);return e.createElement(t,{variant:"body2"},a,"/",l.edges.length)}return e.createElement(t,{variant:"body2"},"No progress found.")},K=({campaign:l})=>{const a=W(),v=u(F),f=u(Q),m=A(),[n,c]=q(null),o=150,g=l.track.levels.flatMap(({checks:s})=>s.map(({id:T})=>T)),{data:N,isLoading:b,isError:y}=B({filter:{tracks:[{trackId:l.track.id}],checkIds:{included:g},numberOfDays:void 0}}),i=N?.individualEntityPassRates??{totalCount:0,edges:[],pageInfo:{hasNextPage:!1,hasPreviousPage:!1}},C=s=>{c(s.currentTarget)},R=()=>{c(null)},x=()=>{m(f({campaignId:l.id}))},h=()=>{m(v({campaignId:l.id}))};if(b)return e.createElement("div",{"data-testid":"loading-indicator"},e.createElement(V,null));if(y)return e.createElement(t,{color:"error"},"Failed to load campaigns progress.");const w=i.edges.length?G(i):0,k=J(i),{name:P,description:r,ownerEntityRef:D,targetCompletionDate:I,startDate:S,supportChannel:d}=l;return e.createElement("div",{className:a.campaignCards},e.createElement("div",{className:a.campaignCard},e.createElement("div",{className:a.flexRow,style:{justifyContent:"space-between"}},e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"h5"},P),e.createElement(t,{variant:"body1",className:a.description},r.length>o?`${r.substring(0,o)}...`:r)),e.createElement("div",null,e.createElement(M,{variant:"text","aria-controls":"menu","aria-haspopup":"true",onClick:C},e.createElement("div",{className:a.actions},e.createElement("div",{className:a.actionsText},"Actions"),e.createElement("div",{className:a.flexRow},n?e.createElement(j,{fontSize:"small"}):e.createElement(z,{fontSize:"small"})))),e.createElement(O,{id:"campaign-menu",anchorEl:n,keepMounted:!0,open:!!n,onClose:R,classes:{list:a.menuList}},e.createElement(E,{onClick:h},"View"),e.createElement(E,{onClick:x},"Edit")))),e.createElement("div",{className:a.detailSection},e.createElement("div",{className:a.flexColumn},e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Owner:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},e.createElement(L,{className:a.ownerLink,entityRef:D}))),d&&e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Support Channel:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},d))),e.createElement("div",{className:a.flexColumn},e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Start Date:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},p(S))),e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Target Completion Date:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},p(I)))),e.createElement("div",{className:a.flexRow,style:{minWidth:"300px"}},e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"subtitle1",className:a.label},"Checks Passing"),e.createElement(t,{variant:"body2"},w,"%")),e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"subtitle1",className:a.label},"Entities Complete"),k)))))};export{K as CampaignRow};
|
|
2
2
|
//# sourceMappingURL=CampaignRow.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const a=e=>{
|
|
1
|
+
const a=e=>{let s=0;return e?.edges.forEach(({node:t})=>{s+=t.snapshotPassRate}),Math.round(s/(e?.edges.length??1))},n=e=>e?.edges.filter(({node:s})=>s.snapshotPassRate===100).length;export{a as calculateOverallPassPercent,n as calculatePassingEntities};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Link as O}from"@backstage/core-components";import{useRouteRef as A}from"@backstage/core-plugin-api";import{makeStyles as G,Grid as
|
|
1
|
+
import{Link as O}from"@backstage/core-components";import{useRouteRef as A}from"@backstage/core-plugin-api";import{makeStyles as G,Grid as c,Accordion as L,AccordionSummary as R,Typography as P,AccordionDetails as F}from"@material-ui/core";import T from"@material-ui/icons/ExpandMore";import e,{useState as k,useEffect as $,useCallback as I}from"react";import{useSearchParams as B}from"react-router-dom";import{useGetCampaigns as D}from"../../hooks/campaigns/useGetCampaigns.esm.js";import{useFacetsForOwner as M}from"../../hooks/facets/useFacetsForOwner.esm.js";import{campaignsPageRouteRef as V}from"../../routes.esm.js";import{LoadingIndicator as _}from"../LoadingIndicator/LoadingIndicator.esm.js";import{CampaignRow as j}from"./CampaignRow/CampaignRow.esm.js";import{OverviewTabs as q}from"./OverviewTabs.esm.js";import{OverviewTabsSkeleton as z}from"./skeletons/OverviewTabsSkeleton.esm.js";import{TableContent as U}from"./TableContent/TableContent.esm.js";const W=G(a=>({tableContainer:{padding:0,backgroundColor:"transparent"},campaignsGrid:{margin:`0 0 ${a.spacing(3)}px`,border:`1px solid ${a.palette.divider}`},campaignsCard:{display:"flex",width:"100%",flexDirection:"column",padding:a.spacing(2),gap:a.spacing(2)},campaignsLink:{textAlign:"center",margin:`${a.spacing(1)}rem 0 ${a.spacing(1)}`},tableLoading:{backgroundColor:a.palette.background.paper,padding:a.spacing(6)},noPadding:{padding:0},accordion:{boxShadow:"none"}})),l=3,H=({groupSelectorError:a,isFixedGroup:y=!1})=>{const[n,g]=B(),{group:o,kind:s,type:p}=Object.fromEntries(n.entries()),C=A(V),[r,E]=k(void 0),[b,x]=k(void 0);$(()=>{(r?.kind!==s||r?.type!==p)&&E({kind:s,type:p})},[s,p,r]);const{data:f,isLoading:u}=M(o),{data:v}=D({orderAlphabetical:"default",searchByOwner:o,searchByStatus:"active"},!!o),m=v?.edges.map(t=>t.node),h=m?.slice(0,l),w=b||a,S=I((t,d,N)=>{t&&(E({kind:t,type:d}),d?(n.set("kind",t),n.set("type",d)):(n.delete("type"),n.set("kind",t)),g(n,{replace:N}))},[n,g]),i=W();return e.createElement(c,{container:!0,spacing:0},m&&m.length>0&&e.createElement(c,{item:!0,xs:12,className:i.campaignsGrid},e.createElement(L,{style:{boxShadow:"none"}},e.createElement(R,{expandIcon:e.createElement(T,null)},e.createElement(P,{variant:"h6"},"Campaigns")),e.createElement(F,null,e.createElement("div",{className:i.campaignsCard},h?.map(t=>e.createElement("div",{key:t.id},e.createElement(j,{campaign:t})))),m.length>l&&e.createElement(O,{to:C(),className:i.campaignsLink},"More Campaigns")))),e.createElement(c,{item:!0,xs:12,className:i.noPadding},u?e.createElement(z,null):e.createElement(q,{unfilteredFacets:f,kind:r?.kind,type:r?.type,onChange:S})),e.createElement(c,{item:!0,xs:12,className:i.tableContainer},u?e.createElement("div",{className:i.tableLoading},e.createElement(_,{size:80})):e.createElement(U,{facets:f,kind:r?.kind,type:r?.type,setError:x,hasError:w,ownerEntityRef:o,isFixedGroup:y})))};export{l as OVERVIEW_CAMPAIGNS_COUNT,H as OverviewPageContent};
|
|
2
2
|
//# sourceMappingURL=OverviewPageContent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as f,Tabs as b,Tab as g}from"@material-ui/core";import s,{useCallback as k,useEffect as $}from"react";import{RefetchingIndicator as v}from"../RefetchingIndicator/RefetchingIndicator.esm.js";const x=f(o=>({root:{borderTop:`1px solid ${o.palette.divider}`,borderBottom:`1px solid ${o.palette.divider}`},tab:{textTransform:"uppercase",paddingTop:o.spacing(2),paddingBottom:o.spacing(2)}})),T=({unfilteredFacets:o,onChange:a,kind:p,type:r})=>{const m=x(),t={types:o?.types.filter(({count:e})=>e>0)??[]},u=k((e,n)=>{a(t?.types[n].kind??"",t?.types[n].type)},[t?.types,a]);$(()=>{const e=t?.types&&t.types.length>=0,n=!p&&e,i=p&&e&&!t?.types.find(({kind:l,type:y})=>p===l&&(!r&&!y||r===y));(n||i)&&a(t?.types[0]?.kind??"",t?.types[0]?.type,!0)},[p,r,t?.types,a]);const d=t?.types.map(({kind:e,type:n,count:i})=>{const l=`${e}|${n??""}`;return{key:l,label:`${n??e} (${i>50?"50+":i})`,id:l,className:m.tab}})??[];if(!d.length)return null;const c=t?.types.findIndex(e=>e.kind===p&&(!e.type&&!r||e.type===r))??-1;return s.createElement(s.Fragment,null,s.createElement(v,null),s.createElement(b,{onChange:u,indicatorColor:"primary",variant:"scrollable",value:c>-1?c:!1},d.map(e=>s.createElement(g,{...e}))))};export{T as OverviewTabs};
|
|
2
2
|
//# sourceMappingURL=OverviewTabs.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as m}from"@material-ui/core";import e from"react";import{AlertPanel as f}from"../../AlertPanel/AlertPanel.esm.js";import{NoCertifications as E,NoEntities as u}from"../../EmptyState/EmptyState.esm.js";import{VirtualTableContent as y}from"./VirtualTableContent.esm.js";const d=m(()=>({scrollContainer:{overflow:"auto"}})),h=({facets:t,ownerEntityRef:r,hasError:o,kind:i,type:s,setError:a,isFixedGroup:l})=>{const c=d();if(o)return e.createElement(f,{severity:"error",title:o.message});const n="Use the groups drop-down list at the top-right of the page to select another group.";return t&&(t.types?.length??0)>0?t.types?.find(p=>p.count>0)?e.createElement("div",{className:c.scrollContainer},e.createElement(y,{facets:t,kind:i,type:s,setError:a,ownerEntityRef:r,hasError:o})):e.createElement(E,{ownerEntityRef:r,selectGroupHint:n}):e.createElement(u,{ownerEntityRef:r,selectGroupHint:l?void 0:n})};export{h as TableContent};
|
|
2
2
|
//# sourceMappingURL=TableContent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import a,{useMemo as
|
|
1
|
+
import a,{useMemo as u}from"react";import{VirtualizedResultsTable as m}from"../../ResultsTable/virtualized/VirtualizedResultsTable.esm.js";const y=({facets:e,ownerEntityRef:t,kind:l,type:c,setError:r})=>{const p=u(()=>{const n=new Map;return e.types.forEach(({kind:o,type:s})=>{const i=`${o}|${s??""}`;n.set(i,a.createElement(m,{key:i,ownerEntityRef:t,kind:o,type:s,setError:r}))}),n},[e,t,r]);return a.createElement("div",null,p.get(`${l}|${c??""}`))};export{y as VirtualTableContent};
|
|
2
2
|
//# sourceMappingURL=VirtualTableContent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as f,TablePagination as h}from"@material-ui/core";import S,{useState as d,useCallback as c}from"react";import{useSearchParams as v}from"react-router-dom";const k=f(a=>({pagination:{width:"-webkit-fill-available",display:"flex",justifyContent:"center",position:"fixed",bottom:"0",left:"0",backgroundColor:a.palette.background.paper,borderTop:`1px solid ${a.palette.divider}`,zIndex:1e3}})),x=({defaultPageSize:a,label:r})=>{const[t,o]=d(),[e,n]=v(),s=e.get(r),g=s?parseInt(s,10):a,[l,i]=d(0),P=c(u=>{e.set("entitiesPerPage",u.target.value??a),n(e,{replace:!0}),i(0),o(void 0)},[a,e,n]);return{cursor:t,setCursor:o,pageSize:g,currentPage:l,setCurrentPage:i,onRowsPerPageChange:P}},z=({totalCount:a,setCursor:r,endCursor:t,prevCursor:o,defaultPageSize:e,currentPage:n,setCurrentPage:s,onRowsPerPageChange:g,pageSize:l,labelRowsPerPage:i,rowsPerPageOptions:P})=>{const u=k(),b=c(()=>{t&&r(t)},[t,r]),m=c(()=>{o&&r(o)},[o,r]),w=(R,p)=>{s(C=>(p>C?b():p<C&&m(),p))};return S.createElement(h,{className:u.pagination,component:"div",count:a,page:n,onPageChange:w,rowsPerPage:l??e,onRowsPerPageChange:g,labelRowsPerPage:i,rowsPerPageOptions:P??[e,e*2,e*4]})};export{z as CursorPagination,x as useCursorPagination};
|
|
2
2
|
//# sourceMappingURL=CursorPagination.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as k,TablePagination as C}from"@material-ui/core";import v,{useState as R}from"react";import{RESULTS_PER_PAGE as t}from"../../utils/filters.esm.js";const x=k(e=>({pagination:{width:"-webkit-fill-available",display:"flex",justifyContent:"center",position:"fixed",bottom:"0",backgroundColor:e.palette.background.paper,borderTop:`1px solid ${e.palette.divider}`,marginRight:"40px"}})),E=({response:e,listingsPerPage:i,cursor:g,setCursor:r,prevCursors:a,setPrevCursors:s,labelPerPageDropdown:l,urlRoute:p})=>{const P=x(),c=e?.edges?e?.edges[e?.edges.length-1]:{cursor:""},[u,d]=R(0),m=()=>{s(o=>[...o,g]),r(c?.cursor)},b=()=>{r(a[a.length-1]),s(o=>o.slice(0,-1))},f=(o,n)=>{d(h=>(n>h?m():b(),n))},w=o=>{window.open(`/soundcheck/${p??"tracks?tracksPerPage="}${o.target.value}`,"_self")};return v.createElement(C,{className:P.pagination,component:"div",count:e?.totalCount??-1,rowsPerPage:i??10,onPageChange:f,page:u,onRowsPerPageChange:w,labelRowsPerPage:l??"Listings per page:",rowsPerPageOptions:[t,t*2,t*4]})};export{E as Pagination};
|
|
2
2
|
//# sourceMappingURL=Pagination.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Box as
|
|
1
|
+
import{Box as r,Grid as n,TablePagination as P}from"@material-ui/core";import{makeStyles as f}from"@material-ui/core/styles";import t from"react";import{useNavigate as h}from"react-router-dom";import"recharts";import"../Charts/ChartTypes.esm.js";import{LineChart as C}from"../Charts/LineChart/LineChart.esm.js";import"../Charts/chartUtils.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{SummaryCard as w}from"../SummaryCard/SummaryCard.esm.js";import{PassRateMetadata as x}from"./PassRateMetadata.esm.js";const u=f(a=>({root:{display:"flex",flexDirection:"column",width:"100%"},gridContainer:{flexGrow:1},cardContent:{display:"flex",flexDirection:"column",gap:a.spacing(1),height:"100%"},footer:{display:"flex",flexDirection:"column",gap:a.spacing(1),justifyContent:"end",marginTop:"auto"}})),E=({data:a,totalCount:i,rowsPerPage:s,page:m,onPageChange:l,onRowsPerPageChange:p})=>{const o=u(),c=h(),g=[{dataKey:"passRate",name:"Pass rate"}];return t.createElement(r,{className:o.root},t.createElement(n,{container:!0,spacing:2,className:o.gridContainer},a.map((e,d)=>t.createElement(n,{item:!0,key:d,xs:12,sm:12,md:6,lg:4,xl:3},t.createElement(w,{title:e.name??e.id,description:e.description,children:t.createElement(r,{className:o.cardContent},t.createElement(r,{className:o.footer},t.createElement(x,{ownerEntityRef:e.owner,passRates:e.lineChart.snapshotPassRates}),t.createElement(C,{data:e.lineChart.trendPassRates,lines:e.lineChart.lineConfigs??g,height:150}))),handleView:()=>e.navigateTo?c(e.navigateTo):void 0})))),t.createElement(P,{rowsPerPageOptions:[10,25,50],component:"div",count:i,rowsPerPage:s,page:m,onPageChange:l,onRowsPerPageChange:p,labelRowsPerPage:"Items per page:"}))};export{E as PassRateGrid};
|
|
2
2
|
//# sourceMappingURL=PassRateGrid.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{EntityRefLink as I}from"@backstage/plugin-catalog-react";import{makeStyles as f,List as
|
|
1
|
+
import{EntityRefLink as I}from"@backstage/plugin-catalog-react";import{makeStyles as f,List as h,Typography as m,ListItem as i,Tooltip as l,ListItemIcon as o,ListItemText as s}from"@material-ui/core";import y from"@material-ui/icons/Group";import N from"@material-ui/icons/TrendingDown";import L from"@material-ui/icons/TrendingFlat";import g from"@material-ui/icons/TrendingUp";import e from"react";import{Trend as n}from"./types.esm.js";const T=f(a=>({cardSection:{marginBottom:a.spacing(2)},listItem:{padding:0},listItemText:{margin:0},listItemIcon:{marginRight:a.spacing(1),minWidth:0},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),x=({ownerEntityRef:a,passRates:c})=>{const t=T();return e.createElement(h,{dense:!0,disablePadding:!0,className:t.cardSection},e.createElement(m,{variant:"overline",color:"textSecondary"},"Details"),a&&e.createElement(i,{disableGutters:!0,className:t.listItem},e.createElement(l,{title:"Owner"},e.createElement(o,{className:t.listItemIcon},e.createElement(y,{color:"inherit",fontSize:"small"}))),e.createElement(s,{className:t.listItemText,primary:e.createElement(I,{className:t.ownerLink,entityRef:a??"No Owner",hideIcon:!0})})),c.map(({name:p,value:d,trend:r},E)=>e.createElement(i,{disableGutters:!0,className:t.listItem,key:E},e.createElement(l,{title:"The most recent pass rate."},e.createElement(o,{className:t.listItemIcon},r===n.UP&&e.createElement(g,{color:"inherit",fontSize:"small"}),r===n.DOWN&&e.createElement(N,{color:"inherit",fontSize:"small"}),r===n.FLAT&&e.createElement(L,{color:"inherit",fontSize:"small"}))),e.createElement(s,{className:t.listItemText,primary:e.createElement(m,{variant:"body2",color:"textPrimary"},p??"Latest Pass Rate",": ",e.createElement("b",null,Math.round(d),"%"))}))))};export{x as PassRateMetadata};
|
|
2
2
|
//# sourceMappingURL=PassRateMetadata.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as
|
|
1
|
+
import{parseEntityRef as f}from"@backstage/catalog-model";import{Link as h}from"@backstage/core-components";import{makeStyles as u}from"@material-ui/core";import t,{memo as k}from"react";import{ResultState as s}from"../../../graphql/generated/index.esm.js";import{CheckIcon as v}from"../../CheckIcon/CheckIcon.esm.js";import{CheckCellTooltip as $}from"./CheckCellTooltip.esm.js";const E=u(r=>({root:{padding:0},iconWrapper:{padding:r.spacing(1.5),display:"flex",alignItems:"center",justifyContent:"center"},link:{"&:hover $iconWrapper, &:active $iconWrapper, &:focus $iconWrapper":{backgroundColor:r.palette.action.hover}},icon:{width:"17px",height:"17px"},virtualized:{borderBottom:`1px solid ${r.palette.divider}`,borderRight:`1px solid ${r.palette.divider}`}})),N=k(({programId:r,check:a,entityRef:o,result:i,entityRoute:d,isVirtualized:c})=>{const e=E();if(typeof o!="string"){const p=t.createElement("div",{className:e.iconWrapper},t.createElement("div",{className:e.icon}));return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`,"aria-hidden":!0},p):t.createElement("td",{className:e.root,"aria-hidden":!0},p)}const n=t.createElement(v,{className:e.icon,result:i??s.NotReported}),l=t.createElement("div",{className:e.iconWrapper},n),m=i&&i===s.NotApplicable?l:t.createElement(h,{className:e.link,to:`${d(f(o))}/soundcheck/tracks/${r}/checks/${a.id}`},l);return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`},t.createElement($,{check:a,icon:n,entityRef:o},m)):t.createElement("td",{className:`${e.root}`},m)});export{N as CheckCell};
|
|
2
2
|
//# sourceMappingURL=CheckCell.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as d}from"@material-ui/core";import
|
|
1
|
+
import{makeStyles as d}from"@material-ui/core";import e,{memo as c}from"react";import{LevelBadge as m}from"../Badges/LevelBadge.esm.js";import{NoLevelBadge as n}from"../Badges/NoLevelBadge.esm.js";import{CampaignBadge as g}from"../Badges/CampaignBadge.esm.js";import{RowHeights as s,NO_LEVEL_BADGE_NAME as p}from"./virtualized/virtualizedTableUtils.esm.js";const f=d(t=>({virtualized:{borderRight:`1px solid ${t.palette.divider}`,height:`${s.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),v=c(({entityRef:t,highestLevels:l,trackType:r})=>{const a=l.find(o=>o.entityRef===t);let i=a?.badge?e.createElement(m,{badge:a.badge}):e.createElement(n,null);return r==="campaign"&&(i=e.createElement(g,null)),i}),E=({highestLevel:t,trackType:l})=>{const r=f();if(!t?.badge)return e.createElement("div",{className:r.virtualized},"\xA0");let a=t.name!==p?e.createElement(m,{badge:t.badge}):e.createElement(n,null);return l==="campaign"&&(a=e.createElement(g,null)),e.createElement("div",{className:r.virtualized},a)};export{v as HighestLevelBadge,E as HighestLevelBadgeCell};
|
|
2
2
|
//# sourceMappingURL=HighestLevelBadge.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as p,Tooltip as
|
|
1
|
+
import{makeStyles as p,Tooltip as l,LinearProgress as m}from"@material-ui/core";import s,{useMemo as g}from"react";import{ResultState as a}from"../../graphql/generated/index.esm.js";const d=p(e=>({root:{height:"8px",minWidth:"64px",marginLeft:e.spacing(2),borderRadius:"100vh",backgroundColor:e.palette.action.hover},bar:{backgroundColor:e.palette.success.main,transition:"none"}})),u=e=>{const r=d(e),t=g(()=>Object.entries(e.progress).reduce((i,[,c])=>i+c,0),[e.progress]);if(t===0)return null;const o=e.progress[a.Passed]??0,n=Math.round(o/t*100);return s.createElement(l,{arrow:!0,title:`Check passing at ${n}%, ${o} of ${t} ${t===1?"entity":"entities"} passing.`,enterDelay:0,placement:"top"},s.createElement(m,{variant:"determinate",value:(e.progress[a.Passed]??0)/t*100,classes:{root:r.root,bar:r.bar}}))};export{u as ProgramCheckIndicator};
|
|
2
2
|
//# sourceMappingURL=ProgramCheckIndicator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as f,Typography as s}from"@material-ui/core";import t,{memo as u,useMemo as C}from"react";import{CheckCell as E}from"./CheckCell/CheckCell.esm.js";import{ProgramCheckIndicator as i}from"./ProgramCheckIndicator.esm.js";import{RowHeights as p}from"./virtualized/virtualizedTableUtils.esm.js";const h=f(e=>({checkNameCell:{padding:0,backgroundColor:e.palette.background.paper},checkNameContent:{padding:`0 ${e.spacing(2)}px`,display:"flex",justifyContent:"space-between",alignItems:"center"},checkNameTypography:{overflow:"hidden",textOverflow:"ellipsis",fontWeight:e.typography.body1.fontWeight},checkIndicator:{flexBasis:e.spacing(8)},checkNameCellVirtualized:{height:`${p.check}px`,lineHeight:`${p.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}}));u(({programId:e,programName:l,check:a,entityRefs:d,results:k,entityRoute:g,level:m})=>{const r=h(),y=C(()=>{let c=0,o=0;return m.checks.forEach(n=>{o+=n.totalCount-n.totalPassing,c+=n.totalPassing}),{PASSED:c,FAILED:o}},[m]),N=new Map(k.map(c=>[c.entityRef,c.result]));return t.createElement("tr",{"data-testid":"track-check-row"},t.createElement("th",{scope:"row",className:r.checkNameCell,"aria-label":`${a.name} check for ${l} track`},t.createElement("div",{className:r.checkNameContent},t.createElement(s,{className:r.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(i,{className:r.checkIndicator,progress:y}))),d.map((c,o)=>t.createElement(E,{key:o,programId:e,check:a,entityRef:c,result:typeof c=="string"?N.get(c):void 0,entityRoute:g})))});const v=({name:e,progress:l})=>{const a=h();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(s,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(i,{className:a.checkIndicator,progress:l})))};export{v as CheckNameCell};
|
|
2
2
|
//# sourceMappingURL=ProgramCheckRow.esm.js.map
|