@spotify/backstage-plugin-soundcheck 0.18.0 → 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.
- package/CHANGELOG.md +69 -0
- package/config.d.ts +21 -0
- package/dist/alpha/apis.esm.js +1 -1
- package/dist/alpha/entity-content.esm.js +1 -1
- package/dist/alpha/pages.esm.js +1 -1
- package/dist/alpha/plugin.esm.js +1 -1
- package/dist/alpha.d.ts +83 -77
- package/dist/api.esm.js +1 -1
- package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
- package/dist/components/Badges/CampaignBadge.esm.js +1 -1
- package/dist/components/Badges/StatusBadge.esm.js +1 -1
- package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
- package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignTrackStepNew.esm.js +1 -1
- package/dist/components/CampaignForm/hooks/utils.esm.js +1 -1
- package/dist/components/CampaignForm/utils/campaignFormUtils.esm.js +2 -2
- package/dist/components/CampaignForm/utils/validation.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/DaysRemainingTile.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
- package/dist/components/CategoryBar/CategoryBar.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
- package/dist/components/CheckDetails/FixMeDialog.esm.js +1 -1
- package/dist/components/CheckForm/CheckForm.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
- package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +1 -1
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
- package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorFactTable.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/CollectorConfigAlert.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Common/PortalConfigAlert.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/DependabotAlertsFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/IssuesFactDetailsInput.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
- package/dist/components/ColorChip/ColorChip.esm.js +2 -0
- package/dist/components/EmptyState/EmptyState.esm.js +1 -1
- package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
- package/dist/components/Expand/Expand.esm.js +1 -1
- package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorerContext.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorerDialog.esm.js +1 -1
- package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
- package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +2 -0
- package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.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/GroupHierarchySelector/GroupHierarchyCategorySelection.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchyChip.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchySelectorDialog.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/getAllOwnedEntityCount.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/usePreviousSelectedGroups.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/ColorLegend.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/HierarchyTable.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/LowestPerformingTeams.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/TeamPerformanceCard.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/TopPerformingTeams.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/getLeafNodes.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/LoadingOverlay.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoCirclePacking.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoHeatmap.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoIcicle.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoSunburst.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoTreemap.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/VisualizationBreadcrumb.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/findNodePath.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +2 -0
- package/dist/components/ImportExportPanel/ImportExportPanel.esm.js +1 -1
- package/dist/components/LevelsTable/LevelsTable.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
- package/dist/components/QuickstartPage/HowDoIListItem.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -1
- package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +5 -5
- package/dist/components/QuickstartPage/styles.esm.js +1 -1
- package/dist/components/RoutingPage/NewFeatureTab.esm.js +2 -0
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/SearchBar/SearchBar.esm.js +1 -1
- package/dist/components/SoundcheckEntityLink/SoundcheckEntityLink.esm.js +2 -0
- package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
- package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
- package/dist/components/TeamStatusBar/TeamStatusBar.esm.js +2 -0
- package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
- package/dist/components/TechHealth/Loading/Loading.esm.js +1 -1
- package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
- package/dist/components/TechHealth/TechHealth.esm.js +1 -1
- package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
- package/dist/components/TechInsights/FilterControls.esm.js +2 -0
- package/dist/components/TechInsights/SummaryTiles.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsCardsView.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsTableView.esm.js +2 -0
- package/dist/components/TechInsights/TrackStatusCard.esm.js +2 -0
- package/dist/components/TechInsights/ViewModeControls.esm.js +2 -0
- package/dist/components/TechInsights/convertToCommonTrackStatus.esm.js +2 -0
- package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +2 -0
- package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.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/TrackHistoryChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TrackPage/TrackStatusBar.esm.js +1 -1
- package/dist/components/TrackPage/TrackStatusTable.esm.js +1 -1
- package/dist/components/TrackSelection/TrackSelection.esm.js +2 -0
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
- package/dist/components/TracksPage/TracksPage.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +202 -149
- package/dist/hooks/cache/useEntityCountCached.esm.js +2 -0
- package/dist/hooks/cache/useTrackCountCached.esm.js +2 -0
- package/dist/hooks/campaigns/useCreateCampaign.esm.js +1 -1
- package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityCount.esm.js +2 -0
- package/dist/hooks/catalog/useGetLimitedEntityRefs.esm.js +2 -0
- package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
- package/dist/hooks/collectors/useDeleteCollectorConfig.esm.js +2 -0
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
- package/dist/hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js +2 -0
- package/dist/hooks/heirarchy/useGroupHierarchy.esm.js +1 -1
- package/dist/hooks/heirarchy/useGroupTypeHierarchy.esm.js +2 -0
- package/dist/hooks/heirarchy/useHierarchicalTrackStatus.esm.js +1 -1
- package/dist/hooks/tracks/useCreateTrack.esm.js +1 -1
- package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
- package/dist/hooks/tracks/useGetTracksApplicableEntityCount.esm.js +2 -0
- package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +2 -0
- package/dist/hooks/useFeatureFlag.esm.js +1 -1
- package/dist/hooks/useLCPReporting.esm.js +2 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.esm.js +1 -1
- package/dist/routes.esm.js +1 -1
- package/dist/utils/colors.esm.js +1 -1
- package/dist/utils/lcpReporting.esm.js +2 -0
- package/package.json +27 -24
- package/dist/components/CheckCard/CheckCard.esm.js +0 -2
- package/dist/components/CheckCard/CheckHistoryChart.esm.js +0 -2
- package/dist/components/CheckCard/utils.esm.js +0 -2
- package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +0 -2
- package/dist/components/QuickstartPage/QuickStartChecksCard.esm.js +0 -2
- package/dist/components/QuickstartPage/QuickstartCollectorConfigurationsCard.esm.js +0 -2
- package/dist/components/QuickstartPage/QuickstartTracksCard.esm.js +0 -2
- package/dist/components/QuickstartPage/WelcomeModal.esm.js +0 -2
- package/dist/components/TechHealth/Loading/Emoji.esm.js +0 -2
- package/dist/components/TechHealth/Loading/EmojiFountain.esm.js +0 -2
- package/dist/components/TechInsights/ColorLegend.esm.js +0 -2
- package/dist/components/TechInsights/LoadingOverlay.esm.js +0 -2
- package/dist/components/TechInsights/LowestPerformingTeams.esm.js +0 -2
- package/dist/components/TechInsights/NivoCirclePacking.esm.js +0 -2
- package/dist/components/TechInsights/NivoIcicle.esm.js +0 -2
- package/dist/components/TechInsights/NivoSunburst.esm.js +0 -2
- package/dist/components/TechInsights/NivoTreemap.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/CheckComparison.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/FailingComponentsTable.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/LineChartContainer.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/MultiCheckStatusHistoryChart.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/MultiTrackHistoryChart.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/TeamComparison.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/TrackComparison.esm.js +0 -2
- package/dist/components/TechInsights/TeamPerformanceCard.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsGroupSelector.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsPage2.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsSidebar.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsViewSelector.esm.js +0 -2
- package/dist/components/TechInsights/Tiles/CheckStatusTile.esm.js +0 -2
- package/dist/components/TechInsights/Tiles/TileUtils.esm.js +0 -2
- package/dist/components/TechInsights/Tiles/TrackStatusTile.esm.js +0 -2
- package/dist/components/TechInsights/TopPerformingTeams.esm.js +0 -2
- package/dist/components/TechInsights/TrackCardGrid.esm.js +0 -2
- package/dist/components/TechInsights/TrackCardGridBox.esm.js +0 -2
- package/dist/components/TechInsights/colorContrast.esm.js +0 -2
- package/dist/components/TechInsights/hierarchy/GroupNode.esm.js +0 -2
- package/dist/components/TechInsights/hierarchy/Hierarchy.esm.js +0 -2
- package/dist/components/TechInsights/hierarchy/VirtualRow.esm.js +0 -2
- package/dist/components/TechInsights/hierarchyToNivo.esm.js +0 -2
- package/dist/components/TechInsights/persistence/FavoriteViews.esm.js +0 -2
- package/dist/components/TechInsights/styles.esm.js +0 -2
- package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +0 -2
- package/dist/hooks/aggregations/useCertificationStatusHistories.esm.js +0 -2
- package/dist/hooks/aggregations/useCertificationStatuses.esm.js +0 -2
- package/dist/hooks/aggregations/useCheckStatusByGroups.esm.js +0 -2
- package/dist/hooks/aggregations/useCheckStatusHistories.esm.js +0 -2
- package/dist/hooks/aggregations/useCheckStatusHistoriesMultiFilter.esm.js +0 -2
- package/dist/hooks/heirarchy/useGetDescendentsOfGroups.esm.js +0 -2
- package/dist/hooks/heirarchy/useRootGroups.esm.js +0 -2
- package/dist/hooks/savedViews/useDeleteView.esm.js +0 -2
- package/dist/hooks/savedViews/useSaveView.esm.js +0 -2
- package/dist/hooks/savedViews/useSavedViews.esm.js +0 -2
- /package/dist/components/{TrackPage/FilterBar → FilterSidebar}/util.esm.js +0 -0
- /package/dist/components/{TechInsights → HierarchicalTechInsightsPage}/TeamPerformanceListCard.esm.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{makeStyles as
|
|
1
|
+
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{makeStyles as l,Typography as r}from"@material-ui/core";import{motion as c}from"framer-motion";import{LoadingIndicator as m}from"../../LoadingIndicator/LoadingIndicator.esm.js";const s=l(()=>({container:{position:"relative",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:1,height:"100%"},textContainer:{position:"relative",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"}}));function d({title:i,subtitle:e,children:a}){const n=s();return t("div",{className:n.container,children:o("div",{className:n.textContainer,children:[t(m,{}),t("div",{style:{marginBottom:"1.1rem"}}),a??"Loading...",o(c.div,{animate:{y:0,opacity:1},initial:{y:100,opacity:0},children:[i&&t(r,{align:"center",variant:"h6",children:i}),e&&t(r,{align:"center",variant:"subtitle2",children:e})]})]})})}export{d as Loading};
|
|
2
2
|
//# sourceMappingURL=Loading.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as l,jsx as o}from"react/jsx-runtime";import{makeStyles as a}from"@material-ui/core";import{Loading as
|
|
1
|
+
import{jsxs as l,jsx as o}from"react/jsx-runtime";import{makeStyles as a,Typography as i}from"@material-ui/core";import{useEntityCountCached as d}from"../../../hooks/cache/useEntityCountCached.esm.js";import{useTrackCountCached as c}from"../../../hooks/cache/useTrackCountCached.esm.js";import{Loading as s}from"./Loading.esm.js";const u=a(e=>({container:{display:"flex",margin:"-24px",backgroundColor:e.palette.background.paper,borderTop:`1px solid ${e.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${e.palette.border}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:e.palette.background.default,height:"100%",maxWidth:"100%"},tabsPlaceholder:{height:"36.5px",backgroundColor:e.palette.background.paper}})),p=({text:e,entityCount:r,trackCount:n})=>{const t=[];return t.push(o(i,{style:{fontSize:"1.1rem"},children:e??"Loading..."})),r!==null&&(t.push(o("div",{})),t.push(l(i,{style:{fontSize:"1.1rem"},children:["Processing ",r," entities..."]}))),n!==null&&(t.push(o("div",{})),t.push(l(i,{style:{fontSize:"1.1rem"},children:["Processing ",n," tracks..."]}))),o("div",{children:t})},h=({loadingText:e})=>{const r=u(),{entityCount:n}=d(),{trackCount:t}=c();return l("div",{className:r.container,children:[o("div",{className:r.fixedColumn}),l("div",{className:r.flexibleColumn,children:[o("div",{className:r.tabsPlaceholder}),o(s,{children:o(p,{text:e,entityCount:n,trackCount:t})})]})]})};export{h as TechHealthLoading};
|
|
2
2
|
//# sourceMappingURL=TechHealthLoading.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as
|
|
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:
|
|
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
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# sourceMappingURL=FilterControls.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# sourceMappingURL=SummaryTiles.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# sourceMappingURL=TechInsightsCardsView.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
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
2
|
//# sourceMappingURL=TechInsightsPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# 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
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# 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
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as h,jsx as l}from"react/jsx-runtime";import{useApi as y,configApiRef as S}from"@backstage/core-plugin-api";import{EntityDisplayName as G}from"@backstage/plugin-catalog-react";import{Box as g,Chip as x}from"@material-ui/core";import{useMemo as v,useEffect as R,useCallback as w}from"react";import{useSearchParams as L}from"react-router-dom";import P from"react-use/lib/useLocalStorage";import{useGroupOptions as b}from"../../hooks/groups/useGroupOptions.esm.js";import"../GroupHierarchySelector/GroupHierarchySelectorDialog.esm.js";import{GroupHierarchySelector as k}from"../GroupHierarchySelector/GroupHierarchySelector.esm.js";import{usePreviousSelectedGroups as C}from"../GroupHierarchySelector/usePreviousSelectedGroups.esm.js";const I=({onChange:m})=>{const{options:o,isLoading:n}=b(),[t,s]=L(),[c,p]=P("soundcheck.overview.groupRef",null),i=t.get("group"),u=y(S).getOptionalString("soundcheck.overview.defaultSelectedGroupType"),{addGroup:a}=C(),r=v(()=>{if(!n&&o.length){if(i||c){const e=i??c;return o.find(f=>f.ref===e)??o[0]}else if(u)return o.find(e=>e.type===u)??o[0];return o[0]}return null},[u,n,o,i,c]);R(()=>{if(!n&&o.length&&!i&&r){const e=new URLSearchParams(t.toString());e.set("group",r.ref),s(e,{replace:!0}),p(r.ref),m?.(r.ref),a(r.ref)}},[n,o,i,r,t,s,p]);const d=w(e=>{const f=new URLSearchParams(t.toString());f.set("group",e),s(f),p(e),m?.(e),a(e)},[a,m,t,p,s]);return h(g,{display:"flex",alignItems:"center",children:[l(k,{currentSelectedGroup:r?.ref,applyGroup:d},r?.ref),r?.ref&&l(g,{display:"flex",alignItems:"center",marginLeft:1,children:l(x,{size:"small",color:"secondary",style:{marginBottom:4,marginTop:4},label:l(G,{entityRef:r.ref})})})]})};export{I as TechInsightsGroupSelector};
|
|
2
|
+
//# sourceMappingURL=TechInsightsGroupSelector.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as d}from"react/jsx-runtime";import{Link as
|
|
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 e,jsxs as i,Fragment as d}from"react/jsx-runtime";import{makeStyles as m}from"@material-ui/core/styles";import{useFormContext as g,Controller as b}from"react-hook-form";import{BadgeVariant as l}from"../../../../../graphql/generated/index.esm.js";import{LevelBadge as n}from"../../../../Badges/LevelBadge.esm.js";import"../../../../Badges/NoLevelBadge.esm.js";import"../../../../Badges/CampaignBadge.esm.js";import{FormControlledAutocomplete as f}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/core";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as u}from"../../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"
|
|
1
|
+
import{jsx as e,jsxs as i,Fragment as d}from"react/jsx-runtime";import{makeStyles as m}from"@material-ui/core/styles";import{useFormContext as g,Controller as b}from"react-hook-form";import{BadgeVariant as l}from"../../../../../graphql/generated/index.esm.js";import{LevelBadge as n}from"../../../../Badges/LevelBadge.esm.js";import"../../../../Badges/NoLevelBadge.esm.js";import"../../../../Badges/CampaignBadge.esm.js";import{FormControlledAutocomplete as f}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/core";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as u}from"../../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"../../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as y}from"../../../../FormFieldLabel/FormFieldLabel.esm.js";const v=m(o=>({container:{display:"flex",flexDirection:"column",gap:o.spacing(1)},badgeTypeInput:{display:"flex",flexDirection:"row",gap:o.spacing(1)},badgeTypeIcon:{alignSelf:"center"}})),x=({disabled:o})=>{const t=v(),{control:a}=g(),r=[{value:"status",label:"Status",icon:e(n,{className:t.badgeTypeIcon,badge:{variant:l.Status,options:{status:{passed:3,failed:2,warning:0,exempt:0,error:0,notApplicable:0,notReported:0,passPercentage:60}}}})},{value:"medal",label:"Medal",icon:e(n,{className:t.badgeTypeIcon,badge:{variant:l.Medal,options:{color:"#FCE54F",level:3}}})}],p=u(r);return i("div",{className:t.container,children:[e("div",{children:e(y,{title:"Badge type",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks#certifications-and-badges"})}),i("div",{className:t.badgeTypeInput,children:[e(f,{name:"detailsStep.badgeType",disableClearable:!0,control:a,width:300,freeSolo:!1,disabled:o,placeholder:"Badge type",...p}),e(b,{name:"detailsStep.badgeType",control:a,render:({field:s})=>e(d,{children:r.find(c=>c.value===s.value)?.icon})})]})]})};export{x as TrackBadgeTypeSelect};
|
|
2
2
|
//# sourceMappingURL=TrackBadgeTypeSelect.esm.js.map
|
package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as n,jsx as
|
|
1
|
+
import{jsxs as n,jsx as i}from"react/jsx-runtime";import{parseEntityRef as h}from"@backstage/catalog-model";import{Typography as a}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import{uniqBy as g}from"lodash";import{useFormContext as w}from"react-hook-form";import"../../../../../contexts/TrackFormContext.esm.js";import"../../../../../contexts/CheckFormContext.esm.js";import"../../../../../contexts/CampaignFormContext.esm.js";import"react";import{useLoggedInUser as x}from"../../../../../contexts/UserProvider.esm.js";import{useGroupOptions as S}from"../../../../../hooks/groups/useGroupOptions.esm.js";import{FormControlledAutocomplete as E}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as R}from"../../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"../../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as L}from"../../../utils/trackFormUtils.esm.js";const O=b(m=>({container:{display:"flex",flexDirection:"column",gap:m.spacing(1)}})),T=({disabled:m,ownerEntityRef:r})=>{const p=O(),{options:l,isLoading:s}=S(),{user:c,userEntityRef:o}=x(),{control:d,formState:{errors:f}}=w();let e=g(l.map(t=>({value:t.ref,label:t.name})),"value");o&&(e=[{value:o,label:c?.metadata.name??o},...e]),r&&o!==r&&!e.some(t=>t.value===r)&&(e=[{value:r,label:h(r).name},...e]);const u=R(e),{name:v,description:y}=L.owner;return n("div",{className:p.container,children:[n("div",{children:[i(a,{variant:"subtitle2",children:v}),i(a,{variant:"caption",children:y})]}),i("div",{children:i(E,{name:"detailsStep.ownerEntityRef",control:d,width:300,freeSolo:!1,disabled:m||s,helperText:f?.detailsStep?.ownerEntityRef?.message??void 0,placeholder:"Owner",...u})})]})};export{T as TrackOwnerSelect};
|
|
2
2
|
//# sourceMappingURL=TrackOwnerSelect.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{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
|
|
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 l,jsxs as
|
|
1
|
+
import{jsx as l,jsxs as f}from"react/jsx-runtime";import{makeStyles as R,lighten as T,darken as $,Typography as i}from"@material-ui/core";import{useTheme as B}from"@material-ui/core/styles";import{useState as N,useRef as A}from"react";import{ColorChip as j}from"../../ColorChip/ColorChip.esm.js";import w from"../../RichTooltip/RichTooltip.esm.js";import{getProgressColor as r}from"../utils.esm.js";import{getApplicableCheckCount as m}from"./utils.esm.js";const C=t=>{const e=m(t);return e===0?-1:Math.round(t.passed/e*100)},z=(t,e)=>t.levels.find(o=>o.ordinal===e),M=R(t=>({cell:{backgroundColor:({passRate:e,getColor:o})=>o?o(e):r(t,e),color:({passRate:e,getColor:o})=>t.palette.getContrastText(o?o(e):r(t,e)),cursor:"default",borderRadius:"4px",textAlign:"center",fontSize:".9rem",width:"50px"},tooltip:{width:"225px"},topLevelStatus:{borderBottom:`1px solid ${t.palette.divider}`,paddingBottom:t.spacing(1)},levelStatus:{borderBottom:`1px solid ${t.palette.divider}`,paddingTop:t.spacing(1),paddingBottom:t.spacing(1)},bottomLevelStatus:{paddingTop:t.spacing(1)},levelPassRate:{backgroundColor:({passRate:e,getColor:o})=>T(o?o(e):r(t,e),.75),color:({passRate:e,getColor:o})=>$(o?o(e):r(t,e),.7),borderRadius:"4px",textAlign:"center",fontSize:".7rem",width:"32px",height:"15px"}})),P=({track:t,status:e,getColor:o})=>{const x=B(),u=C(e),s=M({passRate:u,getColor:o}),[y,p]=N(!1),g=A(null),b=()=>{g.current=setTimeout(()=>p(!0),500)},S=()=>{clearTimeout(g.current),p(!1)},k=m(e);return l(w,{content:l("div",{className:s.tooltip,children:e.statusByLevel?.map((a,d)=>{let n;d===0?n=s.topLevelStatus:e.statusByLevel?.length&&d===e.statusByLevel.length-1?n=s.bottomLevelStatus:n=s.levelStatus;const c=m(a),L=z(t,a.ordinal),h=C(a);return f("div",{className:n,style:{display:"flex",flexDirection:"column",justifyContent:"space-between"},children:[l("div",{children:l(i,{variant:"caption",style:{fontWeight:"bold"},children:L?.name??`Level ${a.ordinal}`})}),f("div",{style:{display:"flex",justifyContent:"space-between"},children:[l(i,{variant:"caption",children:c===0?"No Applicable Checks":`Passing ${a.passed} of ${c} checks`}),c===0?l(i,{className:s.levelPassRate,children:"N/A"}):l(j,{value:`${h}%`,getColor:v=>o?o(v):r(x,v),numericValue:h,size:"small"})]})]},d)})}),open:y,placement:"bottom",onClose:()=>p(!1),children:l("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},onMouseEnter:b,onMouseLeave:S,children:l(i,{className:s.cell,children:k===0?"N/A":`${u}%`})})})};export{P as TrackStatusChip};
|
|
2
2
|
//# sourceMappingURL=TrackStatusChip.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,Fragment as
|
|
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
|
|
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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i,jsxs as
|
|
1
|
+
import{jsx as i,jsxs as m,Fragment as G}from"react/jsx-runtime";import{useRouteRef as K}from"@backstage/core-plugin-api";import{EntityRefLink as Y}from"@backstage/plugin-catalog-react";import{usePermission as w}from"@backstage/plugin-permission-react";import{makeStyles as Z,Button as ee,Box as te,Tabs as ie,Tab as f}from"@material-ui/core";import{soundcheckTrackReadPermission as re,soundcheckTrackUpdatePermission as oe,toEntityFilterQuery as ae}from"@spotify/backstage-plugin-soundcheck-common";import{useState as se,useMemo as o,useCallback as ne}from"react";import{useNavigate as ce,useSearchParams as le,useParams as me}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useTrack as de}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as pe}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as ge}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useCheckStatuses as fe}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useLCPReporting as he}from"../../hooks/useLCPReporting.esm.js";import{trackEditRouteRef as ue}from"../../routes.esm.js";import{FilterSidebar as ke}from"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as ye}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as Ce}from"../FilterSidebar/util.esm.js";import{LevelsTable as ve}from"../LevelsTable/LevelsTable.esm.js";import{LoadingIndicator as Se}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as be}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as we}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContent as Fe}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";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"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{parseNumberOfDays as Te}from"../TechHealth/Filters/utils.esm.js";import{TopFailingChecksTable as Le}from"../TopFailingChecksTable/TopFailingChecksTable.esm.js";import{TrackEntitiesTable as Ne}from"./TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackProgressCard as Ee}from"./TrackProgressCard.esm.js";const xe=Z(e=>({root:{height:"100%",background:e.palette.background.default},pageContent:{display:"flex",minHeight:`calc(100vh - ${e.spacing(15)}px)`,borderTop:`1px solid ${e.palette.divider}`,height:"100%"},mainContentArea:{flex:1,display:"flex",flexDirection:"column",minWidth:0},trackProgressContainer:{padding:e.spacing(2,0,2,2),borderBottom:`1px solid ${e.palette.divider}`},levelCard:{margin:e.spacing(1,0,2)},editButton:{marginLeft:"auto"},contentArea:{flex:1,padding:e.spacing(0,2)},trackEntitiesContainer:{marginTop:e.spacing(1)},headerDescription:{fontSize:e.typography.body2.fontSize,margin:e.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},tabs:{padding:e.spacing(2,2,0,2)}})),Re=()=>{const e=xe(),[a,F]=se("checksByLevel"),h=ce(),u=K(ue),[k]=le(),y=o(()=>Te(k.get("numberOfDays")),[k]),{owners:s,lifecycles:n,types:c,systems:l,stagedLifecycles:T,setStagedLifecycles:L,stagedOwners:N,setStagedOwners:E,stagedTypes:x,setStagedTypes:R,stagedSystems:P,setStagedSystems:B,hasFilterChanges:D,handleApplyFilters:I,handleClearFilters:A}=ye(),O=ne((d,q)=>{F(q)},[]),{trackId:r}=me(),p=o(()=>Ce({lifecycles:n,owners:s,types:c,systems:l}),[n,s,c,l]),{data:t,isLoading:g,isError:j}=de(r),{data:C,isLoading:M,isError:H}=pe({trackId:r,filter:p},!!r),{data:$,isError:z}=ge({trackId:r,filter:p,numberOfDays:y},!!r),{loading:V,allowed:W}=w({permission:re,resourceRef:r}),{loading:v,allowed:S}=w({permission:oe,resourceRef:r}),Q=o(()=>t?.ownerEntityRef?i(Y,{color:"inherit",entityRef:t.ownerEntityRef,className:e.ownerLink}):null,[t?.ownerEntityRef,e.ownerLink]),U=o(()=>!v&&S&&t?.isEditable?i(ee,{className:e.editButton,variant:"contained",color:"primary",onClick:()=>{h(u({trackId:t.id}))},children:"Edit Track"}):null,[S,e.editButton,u,v,h,t]),J=o(()=>t?.description?i(Fe,{className:e.headerDescription,content:t.description}):null,[e.headerDescription,t?.description]);we({title:t?.name,description:J,customSubtitle:Q,sectionRight:U}),he({routeName:"soundcheck-track-details",additionalAttributes:{trackId:r||"unknown",trackName:t?.name||"unknown",selectedView:a,filtersApplied:(s.length+n.length+c.length+l.length).toString(),ownersFilter:s.join(",")||"none",lifecyclesFilter:n.join(",")||"none",typesFilter:c.join(",")||"none",systemsFilter:l.join(",")||"none",numberOfDays:y.toString()}});const X=t?.levels?.flatMap(d=>d.checks)??[],{data:b}=fe({trackId:r,checkIds:X.map(d=>d.id),filter:p},!!t),_=o(()=>ae(t?.filter),[t]);return m(G,{children:[i(be,{entityName:"track",entityId:r,showNotFound:!g&&!t,showCannotView:!V&&!W}),g&&i(Se,{}),t&&i("div",{className:e.root,children:m("div",{className:e.pageContent,children:[i(ke,{trackFilter:_,stagedTypes:x,stagedLifecycles:T,stagedOwners:N,stagedSystems:P,onTypesChange:R,onLifecyclesChange:L,onOwnersChange:E,onSystemsChange:B,onApplyFilters:I,onClearFilters:A,hasFilterChanges:D}),m("div",{className:e.mainContentArea,children:[i("div",{className:e.trackProgressContainer,children:i(Ee,{track:t,status:C,history:$,isError:j||H||z})}),i(te,{className:e.tabs,children:m(ie,{value:a,onChange:O,indicatorColor:"primary",textColor:"primary",children:[i(f,{label:"Checks By Level",value:"checksByLevel"}),i(f,{label:"Top Failing Checks",value:"topFailingChecks"}),i(f,{label:"Entities",value:"entities"})]})}),m("div",{className:e.contentArea,children:[a==="checksByLevel"&&i("div",{className:e.levelCard,children:i(ve,{track:t,checkStatuses:b,isLoading:g||M})}),a==="entities"&&i("div",{className:e.trackEntitiesContainer,children:i(Ne,{track:t,lifecycles:n,owners:s,types:c,systems:l})}),a==="topFailingChecks"&&i("div",{className:e.levelCard,children:i(Le,{track:t,checkStatuses:b,certificationStatus:C?.certificationStatus})})]})]})]})})]})};export{Re as TrackPage};
|
|
2
2
|
//# sourceMappingURL=TrackPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as n}from"react/jsx-runtime";import{useTheme as
|
|
1
|
+
import{jsx as n}from"react/jsx-runtime";import{useTheme as B,Box as L}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import{Skeleton as k}from"@material-ui/lab";import{useMemo as f}from"react";import{CategoryBar as N}from"../CategoryBar/CategoryBar.esm.js";import{getChartColors as $}from"../Charts/chartUtils.esm.js";const C=x(t=>({categoryBar:{"& .MuiBox-root > div":{height:"8px"}},skeleton:{height:"8px",width:"100%",margin:0,padding:0,display:"block"}})),S=({track:t,status:r,className:m})=>{const c=C(),i=B(),p=f(()=>{if(!r||!t)return{};const e={};let a=0,o=0;return(r.statusByLevel||[]).sort((s,l)=>l.ordinal-s.ordinal).forEach(({ordinal:s,cumulativelyPassed:l})=>{const g=t.levels.find(y=>y.ordinal===s)?.name??`Level ${s}`,u=l-o;e[g]=u,a+=u,o=l}),(r.statusByLevel||[]).reverse(),e["No Level"]=Math.max(0,r.numberOfEntities-a),e},[r,t]),v=f(()=>{if(!r||!t)return{};const e=$(i),a={};return(r.statusByLevel||[]).forEach(({ordinal:o})=>{const s=t.levels.find(l=>l.ordinal===o)?.name??`Level ${o}`;a[s]=e[o%e.length]}),a["No Level"]=i.palette.action.disabled,a},[i,r,t]);if(!t||!r)return n(k,{className:`${c.skeleton} ${m}`});const h=e=>e,d=(r.statusByLevel||[]).map(({ordinal:e})=>t.levels.find(a=>a.ordinal===e)?.name??`Level ${e}`);return d.push("No Level"),n(L,{className:m,style:{width:"100%"},children:n(N,{className:c.categoryBar,data:p,categories:d,categoryColors:v,showTooltip:!1,valueFormatter:e=>e.toString(),categoryFormatter:h})})};export{S as TrackStatusBar};
|
|
2
2
|
//# sourceMappingURL=TrackStatusBar.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as a,jsxs as
|
|
1
|
+
import{jsx as a,jsxs as m}from"react/jsx-runtime";import{useTheme as w,Typography as v}from"@material-ui/core";import{makeStyles as b,createStyles as C}from"@material-ui/core/styles";import{Skeleton as f}from"@material-ui/lab";import{memo as T,useMemo as z,Fragment as L}from"react";import{compactNumberFormatter as y}from"../../utils/formatters.esm.js";import{getChartColors as O}from"../Charts/chartUtils.esm.js";const W=b(e=>C({container:{display:"grid",gridTemplateColumns:"3fr 2fr",gap:e.spacing(1),minWidth:0},item:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0},legendDash:{width:e.spacing(2),height:e.spacing(.75),borderRadius:e.spacing(.375),marginRight:e.spacing(1)},category:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0,flex:1},categoryText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontSize:"0.875rem",minWidth:0,flex:1},value:{fontSize:"0.875rem",color:e.palette.text.primary},valueCell:{justifyContent:"flex-end",whiteSpace:"nowrap"},percentage:{color:e.palette.text.secondary,marginLeft:e.spacing(1)},skeleton:{backgroundColor:e.palette.action.hover}})),j=T(({track:e,status:l})=>{const r=w(),t=W(),k=z(()=>{if(!e)return[{name:"",key:1,color:r.palette.action.hover,value:0},{name:"",key:2,color:r.palette.action.hover,value:0},{name:"",key:3,color:r.palette.action.hover,value:0}];const i=O(r);let s=0,c=0;const n=e.levels.sort((h,o)=>o.ordinal-h.ordinal).map(({name:h,ordinal:o})=>{const g=l?.statusByLevel.find(S=>S.ordinal===o)?.cumulativelyPassed??0,u=g-c,N={name:h??`Level ${o}`,key:o,color:i[o%i.length],value:u};return s+=u,c=g,N}).reverse();e.levels.reverse();const p=l?.numberOfEntities??0,x=Math.max(0,p-s);return n.push({name:"No Level",key:-1,color:r.palette.action.disabled,value:x}),n},[r,e,l]),d=l?.numberOfEntities??0;return a("div",{className:t.container,children:k.map(({name:i,key:s,color:c,value:n})=>{const p=d>0?Math.round(n/d*100):0;return m(L,{children:[a("div",{className:t.item,children:m("div",{className:t.category,children:[a("span",{className:t.legendDash,style:{backgroundColor:c}}),e?a(v,{className:t.categoryText,children:i}):a(f,{width:80,height:20,className:t.skeleton})]})}),a("div",{className:`${t.item} ${t.valueCell}`,children:e&&l?m(v,{className:t.value,children:[y(n)," of"," ",y(d),m("span",{className:t.percentage,children:["(",p,"%)"]})]}):a(f,{width:120,height:20,className:t.skeleton})})]},s)})})});export{j as TrackStatusTable};
|
|
2
2
|
//# sourceMappingURL=TrackStatusTable.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as y}from"react/jsx-runtime";import{makeStyles as A,TextField as G}from"@material-ui/core";import{Autocomplete as w}from"@material-ui/lab";import{sortBy as x,isEmpty as E}from"lodash";import{useState as I,useMemo as o}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as $}from"../../hooks/campaigns/useGetCampaigns.esm.js";import{useGetAllTracks as B}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetTracksApplicableEntityCount as F}from"../../hooks/tracks/useGetTracksApplicableEntityCount.esm.js";const j=A(a=>({input:{backgroundColor:a.palette.background.paper}})),D=({selectTrack:a,selectedTrackId:n,showArchived:d,showDraft:m,selectedGroupRef:h})=>{const T=j(),{data:s,isLoading:C}=B({}),{data:l,isLoading:v}=$({}),[S,b]=I(n??""),u=o(()=>new Set(l?.edges.filter(({node:t})=>t.archived).map(({node:t})=>t.track.id)??[]),[l?.edges]),r=o(()=>{let t=s?.edges?.map(({node:e})=>({id:e.id,name:e.name,type:e.type==="campaign"?"Campaign":"Track",draft:!!e.draft}))??[];return t=t?.filter(e=>(d||!u.has(e.id))&&(m||!e.draft)),x(t,"type")},[u,d,m,s?.edges]),{data:c,isLoading:f}=F(h??"",{ids:r.map(t=>t.id)}),p=o(()=>{if(f)return r;const t=c??[],e=r.map(i=>{const k=t.find(({id:L})=>L===i.id);return{...i,count:k?k.applicableEntityCount:void 0}}).filter(i=>i.count!==0);return E(e)?r:e},[c,f,r]),g=o(()=>p?.find(t=>t.id===n),[n,p]);return y(w,{loading:C||v,options:p,onChange:(t,e)=>a(e?.id??""),inputValue:S,value:g??null,getOptionLabel:t=>`${t.name}${t.count?` (${t.count})`:""}`,groupBy:t=>t.type,fullWidth:!0,onInputChange:(t,e)=>b(e),renderInput:t=>y(G,{...t,placeholder:"Select Track",className:T.input,style:{margin:0},margin:"dense",variant:"outlined"})},g?.id??"no-value")};export{D as TrackSelection};
|
|
2
|
+
//# sourceMappingURL=TrackSelection.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as
|
|
1
|
+
import{jsx as r,jsxs as d}from"react/jsx-runtime";import{useRouteRef as K,useApi as C,featureFlagsApiRef as Q}from"@backstage/core-plugin-api";import{usePermission as U}from"@backstage/plugin-permission-react";import{makeStyles as Y,Button as v,Grid as a}from"@material-ui/core";import{soundcheckTrackCreatePermission as Z}from"@spotify/backstage-plugin-soundcheck-common";import{useState as i,useEffect as _}from"react";import{useNavigate as ee}from"react-router-dom";import re from"react-use/lib/useDebounce";import{soundcheckApiRef as te}from"../../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as ae}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGetTrackOwners as ie}from"../../../hooks/tracks/useGetTrackOwners.esm.js";import{useImportTracks as oe}from"../../../hooks/tracks/useImportTracks.esm.js";import se from"../../../images/no-results.svg";import{trackCreateRouteRef as ne}from"../../../routes.esm.js";import{exportTracks as ce}from"../../../utils/export.esm.js";import{FilterDefault as w}from"../../../utils/filters.esm.js";import{EmptyState as S}from"../../EmptyState/EmptyState.esm.js";import{ImportExportPanel as le}from"../../ImportExportPanel/ImportExportPanel.esm.js";import{Pagination as me}from"../../Pagination/Pagination.esm.js";import{SearchFilters as pe}from"../../SearchFilters/SearchFilters.esm.js";import{TrackEmptyState as g,TrackNoResults as B}from"./TrackEmptyState.esm.js";import{TracksOverviewSkeleton as de}from"./TracksOverviewSkeleton.esm.js";import{TrackSummaryCard as ge}from"./TrackSummaryCard.esm.js";const ue=Y(t=>({headerButtons:{display:"flex",gap:t.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:t.spacing(0,0,1)},container:{padding:t.spacing(3),gap:t.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:t.spacing(1.5),paddingBottom:t.spacing(1.5)}})),fe=({tracksPerPage:t,currentCursor:N})=>{const o=ue(),[u,f]=i(N),[l,R]=i(""),[h,F]=i(w.Alpha),[k,I]=i(w.Owner),[T,O]=i(""),{data:E,isLoading:L}=ie();re(()=>{O(l)},500,[l]);const{loading:P,allowed:j}=U({permission:Z}),G=ee(),D=K(ne),y=()=>G(D()),{data:m,isLoading:s}=ae({ids:void 0,types:["standard","playlist"],first:t,after:u,orderAlphabetical:h,searchByOwner:k,searchByName:T}),n=m?.edges?.map(e=>e.node),[b,x]=i([]);_(()=>{f(void 0),x([])},[T]);const A=C(Q),H=!A.getRegisteredFlags().find(e=>e.name==="soundcheck-enable-track-creation")||A.isActive("soundcheck-enable-track-creation"),p=!j||!H,W=e=>{F(e.target.value)},$=e=>{I(e.target.value)},q=C(te),{mutateAsync:z}=oe(),J=async e=>z(e),M=async()=>{const e=await q.getTracks({orderAlphabetical:"asc"});return ce(e.edges.map(X=>X.node))};if(!s&&!n)return r(S,{title:g.title,description:g.description,imgSrc:se,action:!P&&r(v,{disabled:p,variant:"contained",color:"primary",onClick:y,children:g.callToAction})});let c;s?c=r(de,{}):n?.length?c=n?.map(e=>r(a,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`track card ${e.id}`,children:r(ge,{summary:e})},e.id)):c=r(a,{xs:12,item:!0,role:"listitem","aria-label":"result",children:r(S,{title:B.title,description:B.description})});const V=m?.pageInfo.hasNextPage||b?.length>0;return d(a,{container:!0,direction:"row",className:o.container,children:[d(a,{container:!0,className:o.header,children:[r(pe,{searchPlaceholder:"Search Available Tracks",isLoading:s||L,searchTerm:l,setSearchTerm:R,filterAlpha:h,handleAlphabeticalFilterChange:W,filterOwner:k,handleOwnerFilterChange:$,owners:E}),d(a,{item:!0,xs:4,className:o.headerButtons,children:[r(le,{resourceType:"track",disableImport:p,disableExport:s||!n?.length,onImport:J,onExport:M}),!P&&r(v,{disabled:p,variant:"contained",color:"primary",onClick:y,className:o.createButton,children:"Create Track"})]})]}),r(a,{container:!0,spacing:4,role:"list","aria-label":"tracks",children:c}),V&&r(a,{item:!0,xs:12,children:r(me,{response:m,listingsPerPage:t,cursor:u,setCursor:f,prevCursors:b,setPrevCursors:x,labelPerPageDropdown:"Tracks Per Page:",urlRoute:"tracks?tracksPerPage="})})]})};export{fe as TrackListPage};
|
|
2
2
|
//# sourceMappingURL=TrackListPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as m}from"react/jsx-runtime";import{useSearchParams as
|
|
1
|
+
import{jsx as m}from"react/jsx-runtime";import{useSearchParams as i}from"react-router-dom";import{useLCPReporting as p}from"../../hooks/useLCPReporting.esm.js";import{RESULTS_PER_PAGE as e}from"../../utils/filters.esm.js";import{TrackListPage as a}from"./TrackListPage/TrackListPage.esm.js";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"../../routes.esm.js";import"js-yaml";import"lodash";import"../SummaryCard/SummaryCard.esm.js";import"./TrackListPage/TrackMetadata.esm.js";const s=()=>{const[o]=i(),r=o.get("tracksPerPage"),t=r?parseInt(r,10):e;return p({routeName:"soundcheck-tracks",additionalAttributes:{tracksPerPage:t.toString()}}),m(a,{tracksPerPage:t})};export{s as TracksPage};
|
|
2
2
|
//# sourceMappingURL=TracksPage.esm.js.map
|