@spotify/backstage-plugin-soundcheck 0.19.2 → 0.19.3
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 +34 -0
- package/config.d.ts +54 -1
- package/dist/api.esm.js +1 -1
- package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignPage.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignPageBUI.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignPageDeprecated.esm.js +2 -0
- package/dist/components/{CampaignInsightsPage → CampaignPage}/CampaignStatusTile.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js +2 -0
- package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +2 -0
- package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
- package/dist/components/Cards/CurrentStatusCard/CurrentStatusCard.esm.js +2 -0
- package/dist/components/Cards/CurrentStatusCard/CurrentStatusCardRow.esm.js +2 -0
- package/dist/components/Cards/DescriptionCard/DescriptionCard.esm.js +2 -0
- package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistComponent.esm.js +1 -1
- package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
- package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
- package/dist/components/CheckPage/utils.esm.js +1 -1
- package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +1 -1
- package/dist/components/CheckStatusBar/CheckStatusBarBUI.esm.js +2 -0
- package/dist/components/CheckStatusBar/CheckStatusBarCell.esm.js +2 -0
- package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js +2 -0
- package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +2 -0
- package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
- package/dist/components/ChecksTable/ChecksTable.esm.js +2 -0
- package/dist/components/ChipSelector/ChipSelector.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorFactTable.esm.js +1 -1
- 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/BigQuery/BigQueryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.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/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/Jira/IssuesFactDetailsComponent.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/validation.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/SonarQubeConfigurator.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
- package/dist/components/CustomCell/CustomCell.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateBUI.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateNoCampaigns.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateNoChecks.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +2 -0
- package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
- package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
- package/dist/components/FilterSidebar/FilterSidebar.esm.js +1 -1
- package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
- package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +1 -1
- package/dist/components/FilterSidebar/util.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/useLabelValueOptions.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +1 -1
- package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
- package/dist/components/LevelsTable/CheckRowContent.esm.js +1 -1
- package/dist/components/LevelsTable/LevelsTable.esm.js +1 -1
- package/dist/components/ListPageCustomActions/ListPageCustomActions.esm.js +2 -0
- package/dist/components/LoadingTableSkeleton/LoadingTableSkeleton.esm.js +2 -0
- package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
- package/dist/components/PageCustomActions/PageCustomActions.esm.js +2 -0
- package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -2
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
- package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +2 -0
- package/dist/components/TeamStatusBar/TeamStatusBar.esm.js +1 -1
- package/dist/components/TechInsights/FilterControls.esm.js +1 -1
- package/dist/components/TechInsights/SummaryTiles.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsTableView.esm.js +1 -1
- package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +1 -1
- package/dist/components/TimePeriodBar/TimePeriodBar.esm.js +1 -1
- package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +2 -0
- package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
- package/dist/components/TrackEditPage/TrackEditView.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/TrackEntitiesTableBUI.esm.js +2 -0
- package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TrackPage/TrackPageBUI.esm.js +2 -0
- package/dist/components/TrackPage/TrackPageDeprecated.esm.js +2 -0
- package/dist/components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js +2 -0
- package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
- package/dist/components/TracksPage/TracksListPageBUI.esm.js +2 -0
- package/dist/components/TracksPage/TracksPage.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +125 -117
- package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
- package/dist/hooks/catalog/useGetLimitedEntityRefs.esm.js +1 -1
- package/dist/hooks/catalog/useProfileImages.esm.js +2 -0
- package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
- package/dist/hooks/checks/useCheckStatusTotals.esm.js +2 -0
- package/dist/hooks/entities/useTrackEntities.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
- package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
- package/dist/hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js +1 -1
- package/dist/hooks/tracks/useRecertifyTrack.esm.js +2 -0
- package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
- package/dist/hooks/useConfirmationModal.esm.js +1 -1
- package/dist/hooks/useLoadTimeReporting.esm.js +2 -0
- package/dist/hooks/usePagination.esm.js +2 -0
- package/dist/hooks/useSearchName.esm.js +2 -0
- package/dist/utils/checks.esm.js +2 -0
- package/dist/utils/formatters.esm.js +1 -1
- package/dist/utils/helpers.esm.js +1 -1
- package/dist/utils/lcpReporting.esm.js +1 -1
- package/package.json +18 -27
- package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +0 -2
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +0 -2
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +0 -2
- package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsCardsView.esm.js +0 -2
- package/dist/components/TechInsights/TrackStatusCard.esm.js +0 -2
- package/dist/components/TechInsights/ViewModeControls.esm.js +0 -2
- package/dist/components/TechInsights/convertToCommonTrackStatus.esm.js +0 -2
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +0 -2
- /package/dist/components/{CampaignInsightsPage → CampaignPage}/CampaignStatusHistoryTile.esm.js +0 -0
- /package/dist/components/{CampaignInsightsPage → CampaignPage}/DaysRemainingTile.esm.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import{useEffect as p}from"react";import{TrackFormProvider as n,useTrackFormContext as k}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useCreateTrack as f}from"../../hooks/tracks/useCreateTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import{tracksPageRouteRef as d}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as g}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as h}from"../TrackForm/TrackForm.esm.js";const e=()=>{const{setIsLoading:r}=k(),{mutateAsync:i,isLoading:o}=f();p(()=>{r(o)},[r,o]);const[a,m]=u(d),c=async s=>{await i(s,{onSuccess:m})};return g({title:"Create Track",description:"Create a new track that aligns with your organization's long-term tech health initiatives by entering the details below.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),t(h,{handleClose:a,onSave:c})},l=()=>t(n,{children:t(e,{})});export{l as TrackCreatePage,e as TrackCreateView};
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{useEffect as p}from"react";import{TrackFormProvider as n,useTrackFormContext as k}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useCreateTrack as f}from"../../hooks/tracks/useCreateTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{tracksPageRouteRef as d}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as g}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as h}from"../TrackForm/TrackForm.esm.js";const e=()=>{const{setIsLoading:r}=k(),{mutateAsync:i,isLoading:o}=f();p(()=>{r(o)},[r,o]);const[a,m]=u(d),c=async s=>{await i(s,{onSuccess:m})};return g({title:"Create Track",description:"Create a new track that aligns with your organization's long-term tech health initiatives by entering the details below.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),t(h,{handleClose:a,onSave:c})},l=()=>t(n,{children:t(e,{})});export{l as TrackCreatePage,e as TrackCreateView};
|
|
2
2
|
//# sourceMappingURL=TrackCreatePage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as l}from"react/jsx-runtime";import{useEffect as i,useCallback as f}from"react";import{useTrackFormContext as g}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as y}from"../../hooks/useNavigateBack.esm.js";import{useUpdateTrack as E}from"../../hooks/tracks/useUpdateTrack.esm.js";import{tracksPageRouteRef as h}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as T}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as w}from"../TrackForm/TrackForm.esm.js";const b=({track:t,canEdit:p})=>{const{setSelectedItem:e,setIsLoading:m,selectedItem:n,showReadOnly:r}=g(),{mutateAsync:s,isLoading:c}=E();i(()=>m(c),[m,c]);const o=!p||!t.isEditable;i(()=>{o?r(t):e(t)},[t,e,o,r]);const[d,a]=y(h),k=f(async u=>{await s(u,{onSuccess:a})},[a,s]);return i(()=>{},[t,r,o]),T({title:`${o?"View":"Edit"} Track`,description:"Edit your track's details to match your needs.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),n?l(w,{handleClose:d,onSave:k}):null};export{b as TrackEditView};
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import{useEffect as i,useCallback as f}from"react";import{useTrackFormContext as g}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as y}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateTrack as E}from"../../hooks/tracks/useUpdateTrack.esm.js";import{tracksPageRouteRef as h}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as T}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as w}from"../TrackForm/TrackForm.esm.js";const b=({track:t,canEdit:p})=>{const{setSelectedItem:e,setIsLoading:m,selectedItem:n,showReadOnly:r}=g(),{mutateAsync:s,isLoading:c}=E();i(()=>m(c),[m,c]);const o=!p||!t.isEditable;i(()=>{o?r(t):e(t)},[t,e,o,r]);const[d,a]=y(h),k=f(async u=>{await s(u,{onSuccess:a})},[a,s]);return i(()=>{},[t,r,o]),T({title:`${o?"View":"Edit"} Track`,description:"Edit your track's details to match your needs.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),n?l(w,{handleClose:d,onSave:k}):null};export{b as TrackEditView};
|
|
2
2
|
//# sourceMappingURL=TrackEditView.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{
|
|
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"react";import{useLabelValueOptions as u}from"../../../../FormControlledAutocomplete/useLabelValueOptions.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
|
|
1
|
+
import{jsxs as a,jsx as i}from"react/jsx-runtime";import{parseEntityRef as h}from"@backstage/catalog-model";import{Typography as p}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{useLabelValueOptions as R}from"../../../../FormControlledAutocomplete/useLabelValueOptions.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(n=>({container:{display:"flex",flexDirection:"column",gap:n.spacing(1)}})),T=({disabled:n,ownerEntityRef:r})=>{const l=O(),{options:s,isLoading:d}=S(),{user:m,userEntityRef:t}=x(),{control:c,formState:{errors:f}}=w();let e=g(s.map(o=>({value:o.ref,label:o.name,description:o.description})),"value");t&&(e=[{value:t,label:m?.metadata.name??t,description:m?.metadata.description},...e]),r&&t!==r&&!e.some(o=>o.value===r)&&(e=[{value:r,label:h(r).name,description:void 0},...e]);const u=R(e),{name:v,description:y}=L.owner;return a("div",{className:l.container,children:[a("div",{children:[i(p,{variant:"subtitle2",children:v}),i(p,{variant:"caption",children:y})]}),i("div",{children:i(E,{name:"detailsStep.ownerEntityRef",control:c,width:300,freeSolo:!1,disabled:n||d,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
|
|
1
|
+
import{jsx as C}from"react/jsx-runtime";import{stringifyEntityRef as L}from"@backstage/catalog-model";import{Table as P}from"@backstage/core-components";import{makeStyles as x}from"@material-ui/core";import O from"lodash";import{useState as D,useEffect as F,useCallback as k}from"react";import{TrackEntityField as a,Direction as w}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as N}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as j}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as r}from"./columns.esm.js";import{toTrackEntityRow as q}from"./utils.esm.js";const A=10,G=(i,n)=>[r.createBadgeColumn(),r.createNameColumn({trackId:n}),r.createStatusColumn(i),r.createSystemColumn(),r.createOwnerColumn(),r.createSpecTypeColumn(),r.createSpecLifecycleColumn()],U=[a.CertificationLevel,a.Name,a.CheckPassRate,a.System,a.Owner,a.Type,a.Lifecycle],I=i=>{const{lifecycles:n,owners:s,types:c,systems:l}=i,g=n?.length?{"spec.lifecycle":n}:void 0,d=s?.length?{"relations.ownedBy":s}:void 0,m=c?.length?{"spec.type":c}:void 0,u=l?.length?{"relations.partOf":l}:void 0;return{...g,...d,...m,...u}},W=x({tableContainer:{display:"flex",flexDirection:"column",height:"100%"}}),H=({track:i,initialPageSize:n,lifecycles:s,owners:c,types:l,systems:g,certificationStatus:d,getColor:m})=>{const u=W(),S=G(m,i.id),[e,y]=D({orderBy:void 0,filter:I({lifecycles:s,owners:c,types:l,systems:g}),pageInfo:{page:0,pageSize:n??A,direction:"forward",cursor:null}});F(()=>{y(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:I({lifecycles:s,owners:c,types:l,systems:g}),certificationStatus:d}))},[s,c,l,g,d]);const{data:f,isLoading:h}=j({trackId:i.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,certificationStatus:d}),E=k((t,p)=>{let o;t===-1?o=void 0:o={field:U[t],direction:p==="asc"?w.Asc:w.Desc},y({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),b=k((t,p)=>{const o=t>e.pageInfo.page?"forward":"backward",z=o==="forward"?f?.trackEntities.pageInfo.endCursor??null:f?.trackEntities.pageInfo.startCursor??null;y({...e,pageInfo:{page:t,pageSize:p,direction:o,cursor:z}})},[f,e]),T=f?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:v,isLoading:B}=N({entityRefs:T}),R=O.compact(f?.trackEntities.edges.map(t=>{const p=v?.items.find(o=>!!o&&L(o)===t.node.entityRef);return p?q({trackDetails:t.node,track:i,entity:p}):void 0}))??[];return C("div",{className:u.tableContainer,children:C(P,{columns:S,data:R,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:e.pageInfo.pageSize,search:!1,showTitle:!1,padding:"dense",draggable:!1},onOrderChange:E,onPageChange:b,page:e.pageInfo.page,totalCount:f?.trackEntities.totalCount??0,isLoading:h||B,components:{Toolbar:()=>null}})})};export{H as TrackEntitiesTable};
|
|
2
2
|
//# sourceMappingURL=TrackEntitiesTable.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as d,Fragment as ee}from"react/jsx-runtime";import{stringifyEntityRef as x,parseEntityRef as te,RELATION_OWNED_BY as ie,RELATION_PART_OF as ne}from"@backstage/catalog-model";import{useRouteRef as re}from"@backstage/core-plugin-api";import{entityRouteRef as ae,getEntityRelations as L,humanizeEntityRef as B}from"@backstage/plugin-catalog-react";import{Table as oe,TableHeader as se,Column as g,TableBody as le,TablePagination as ce,Row as pe,Cell as u,Flex as fe,Box as N,Text as de,CellProfile as ge}from"@backstage/ui";import{makeStyles as me}from"@material-ui/core";import{compact as ye,uniq as ue}from"lodash";import{useState as T,useEffect as O,useCallback as D,useMemo as we}from"react";import{useNavigate as he}from"react-router-dom";import{TrackEntityField as a,Direction as F}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as Ie}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useProfileImages as Se}from"../../../hooks/catalog/useProfileImages.esm.js";import{useTrackEntities as ke}from"../../../hooks/entities/useTrackEntities.esm.js";import{getCheckStatusPercentages as Pe}from"../../../utils/checks.esm.js";import"../../CheckStatusBar/CheckStatusBar.esm.js";import{CheckStatusBarBUI as Re}from"../../CheckStatusBar/CheckStatusBarBUI.esm.js";import{CustomCell as Ce}from"../../CustomCell/CustomCell.esm.js";import{LoadingTableSkeleton as Ee}from"../../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{toTrackEntityRow as Be}from"./utils.esm.js";const Te=10,j=o=>{const{lifecycles:w,owners:l,types:c,systems:p}=o,m=w?.length?{"spec.lifecycle":w}:void 0,y=l?.length?{"relations.ownedBy":l}:void 0,k=c?.length?{"spec.type":c}:void 0,h=p?.length?{"relations.partOf":p}:void 0;return{...m,...y,...k,...h}},be=me(o=>({tableContainer:{display:"flex",flexDirection:"column",height:"100%"},passed:{color:`${o.palette.success.main} !important`},failed:{color:`${o.palette.error.main} !important`},statusBar:{width:"30%"}})),ve={name:a.Name,owner:a.Owner,certificationLevel:a.CertificationLevel,checkPassRate:a.CheckPassRate,system:a.System,type:a.Type,lifecycle:a.Lifecycle},ze=({track:o,initialPageSize:w,lifecycles:l,owners:c,types:p,systems:m,certificationStatus:y})=>{const k=be(),h=he(),b=re(ae),[P,A]=T("ascending"),[I,_]=T("name"),[i,S]=T({orderBy:void 0,filter:j({lifecycles:l,owners:c,types:p,systems:m}),pageInfo:{page:0,pageSize:w??Te,direction:"forward",cursor:null}});O(()=>{S(e=>({...e,pageInfo:{...e.pageInfo,page:0,cursor:null},filter:j({lifecycles:l,owners:c,types:p,systems:m}),certificationStatus:y}))},[l,c,p,m,y]);const{data:f,isLoading:K}=ke({trackId:o.id,orderBy:i.orderBy,filter:i.filter,[i.pageInfo.direction==="forward"?"first":"last"]:i.pageInfo.pageSize,[i.pageInfo.direction==="forward"?"after":"before"]:i.pageInfo.cursor,certificationStatus:y}),M=f?.trackEntities.edges.map(e=>e.node.entityRef)??[],{data:$,isLoading:H}=Ie({entityRefs:M}),v=ye(f?.trackEntities.edges.map(e=>{const n=$?.items.find(r=>!!r&&x(r)===e.node.entityRef);return n?Be({trackDetails:e.node,track:o,entity:n}):void 0}))??[],U=ue(v.flatMap(e=>e.entity.relations?.filter(({type:n,targetRef:r})=>n==="ownedBy"&&r).map(n=>n.targetRef)||[])),{profileImageMap:q}=Se(U);O(()=>{let e;I?e={field:ve[I]??a.Name,direction:P==="ascending"?F.Asc:F.Desc}:e=void 0,S(n=>({...n,orderBy:e,pageInfo:{...n.pageInfo,page:0,cursor:null}}))},[S,I,P]);const R=D((e,n)=>{const r=e>i.pageInfo.page?"forward":"backward",C=r==="forward"?f?.trackEntities.pageInfo.endCursor??null:f?.trackEntities.pageInfo.startCursor??null;S({...i,pageInfo:{page:e,pageSize:n,direction:r,cursor:C}})},[f,i]),W=D(e=>{const n=te(x(e)),r=b(n);h(`${r}/soundcheck`)},[h,b]),Y=({row:e})=>{const n=L(e.entity,ie).map(s=>B(s,{defaultKind:"group"})).join(", "),r=e.entity.relations?.find(({type:s})=>s==="ownedBy")?.targetRef,C=L(e.entity,ne,{kind:"system"}).map(s=>B(s,{defaultKind:"system"})).join(", ");let E;r&&(E=q?.[r]);const G=B(e.entity,{defaultKind:"Component"}),{passPercent:z,failPercent:J,warningPercent:Q}=we(()=>{const s=e.status.passed+e.status.failed+e.status.warning+e.status.error+e.status.notReported,{passPercentage:V,failPercentage:X,warningPercentage:Z}=Pe(e.status.passed,e.status.failed,e.status.warning,s);return{passPercent:V,failPercent:X,warningPercent:Z}},[e.status]);return d(pe,{onAction:()=>W(e.entity),children:[t(u,{title:G}),t(Ce,{children:d(fe,{align:"center",gap:"2",children:[t(N,{children:d(de,{children:[z,"%"]})}),t(N,{className:k.statusBar,children:t(Re,{passedPercent:z,failedPercent:J,warningPercent:Q})})]})}),t(u,{title:C}),t(u,{title:e.entity.spec?.type}),t(u,{title:e.entity.spec?.lifecycle}),E?t(ge,{name:n,src:E}):t(u,{title:n})]},e.id)};return K||H?t(Ee,{}):d(ee,{children:[d(oe,{onSortChange:({direction:e,column:n})=>{_(String(n)),A(e)},sortDescriptor:{direction:P,column:I},children:[d(se,{children:[t(g,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Name"}),t(g,{id:"checks",style:{width:"15%"},children:"Checks"}),t(g,{id:"system",allowsSorting:!0,style:{width:"15%"},children:"System"}),t(g,{id:"type",allowsSorting:!0,style:{width:"10%"},children:"Type"}),t(g,{id:"lifecycle",allowsSorting:!0,style:{width:"10%"},children:"Lifecycle"}),t(g,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Owner"})]}),t(le,{children:v.map(e=>t(Y,{row:e},e.id))})]}),t(ce,{offset:i.pageInfo.page*i.pageInfo.pageSize,tabIndex:i.pageInfo.page,showPageSizeOptions:!0,pageSize:i.pageInfo.pageSize,rowCount:f?.trackEntities.totalCount??0,onPreviousPage:()=>R(i.pageInfo.page-1,i.pageInfo.pageSize),onNextPage:()=>R(i.pageInfo.page+1,i.pageInfo.pageSize),onPageSizeChange:e=>R(i.pageInfo.page,e)})]})};export{ze as TrackEntitiesTableBUI};
|
|
2
|
+
//# sourceMappingURL=TrackEntitiesTableBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as l}from"react/jsx-runtime";import{
|
|
1
|
+
import{jsx as r,jsxs as l}from"react/jsx-runtime";import{useApi as v,configApiRef as g}from"@backstage/core-plugin-api";import{useTheme as x,Typography as b}from"@material-ui/core";import L from"lodash";import{DateTime as A}from"luxon";import{ResponsiveContainer as C,AreaChart as $,CartesianGrid as O,XAxis as N,YAxis as h,Tooltip as D,Area as u}from"recharts";import{compactNumberFormatter as m}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 E}from"../TimePeriodBar/TimePeriodBar.esm.js";const y=o=>{const a=o?.certificationStatusHistory.history??[],n=o?.certificationStatusHistory.numberOfEntities??0,e=A.utc();return L.map(a,(d,p)=>{let i={name:T(e,a.length-p-1)},t=0,f=0;d.statusByLevel.sort((s,c)=>c.ordinal-s.ordinal).forEach(s=>{const c=s.cumulativelyPassed-f;i={...i,[`Level ${s.ordinal}`]:c},t+=c,f=s.cumulativelyPassed}),d.statusByLevel.reverse();const k=Math.max(0,n-t);return i={...i,"No Level":k},i})},H=(o,a)=>{if(typeof o=="number"){const n=a.certificationStatusHistory.numberOfEntities??0,e=n>0?Math.round(o/n*100):0;return`${m(o)} of ${m(n)} (${e}%)`}return o},S=({track:o,data:a,isError:n})=>{const e=x(),d=v(g).getOptionalNumber("soundcheck.certifications.history.retentionTimeInDays");if(n)return r(b,{color:"error",children:"Failed to load track data."});if(!o||!a)return r(W,{type:"area",numLines:3});const p=y(a),i=I(e);return l("div",{style:{height:290,width:"100%",position:"relative",borderRadius:"4px"},children:[r(E,{maxNumberOfDays:d}),r(C,{height:250,debounce:1,children:l($,{data:p,margin:{top:0,right:0,bottom:0,left:0},children:[l("defs",{children:[o?.levels.map(t=>l("linearGradient",{id:`gradient-${t.ordinal}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[r("stop",{offset:"5%",stopColor:i[t.ordinal%i.length],stopOpacity:.4}),r("stop",{offset:"95%",stopColor:i[t.ordinal%i.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(O,{stroke:e.palette.divider,strokeWidth:1,horizontal:!0,vertical:!1}),r(N,{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=>m(t)}),r(D,{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=>H(t,a)}),o?.levels?.map(t=>r(u,{type:"monotone",dataKey:`Level ${t.ordinal}`,name:t.name??`Level ${t.ordinal}`,stackId:"1",yAxisId:"right",stroke:i[t.ordinal%i.length],strokeWidth:2,fill:`url(#gradient-${t.ordinal})`,isAnimationActive:!1,activeDot:{fill:i[t.ordinal%i.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{S as TrackHistoryChart,y as formatLineChartData};
|
|
2
2
|
//# sourceMappingURL=TrackHistoryChart.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{useFeatureFlag as a}from"../../hooks/useFeatureFlag.esm.js";import{TrackPageBUI as e}from"./TrackPageBUI.esm.js";import{TrackPageDeprecated as o}from"./TrackPageDeprecated.esm.js";const t=()=>a("backstage-ui")?r(e,{}):r(o,{});export{t as TrackPage};
|
|
2
2
|
//# sourceMappingURL=TrackPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,jsxs as o,Fragment as H}from"react/jsx-runtime";import{useApi as W,useRouteRef as X}from"@backstage/core-plugin-api";import{entityPresentationApiRef as Z,EntityRefLink as ee}from"@backstage/plugin-catalog-react";import{usePermission as F}from"@backstage/plugin-permission-react";import{Box as n,HeaderPage as te,Tabs as ie,TabList as re,Tab as _,TabPanel as O,Flex as b,Card as oe,CardHeader as ae,Text as C}from"@backstage/ui";import{makeStyles as ne,Button as se}from"@material-ui/core";import{soundcheckTrackReadPermission as ce,soundcheckTrackUpdatePermission as me}from"@spotify/backstage-plugin-soundcheck-common";import{useState as j,useMemo as h,useEffect as le}from"react";import{useSearchParams as pe,useNavigate as de,useParams as ue}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 he}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as fe}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCheckStatuses as ge}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useCheckStatusTotals as ke}from"../../hooks/checks/useCheckStatusTotals.esm.js";import{useLCPReporting as be}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Ce}from"../../hooks/useLoadTimeReporting.esm.js";import{trackEditRouteRef as ye}from"../../routes.esm.js";import{getEntitiesBucket as Ee,getChecksBucket as Se}from"../../utils/helpers.esm.js";import{DescriptionCard as ve}from"../Cards/DescriptionCard/DescriptionCard.esm.js";import{CurrentStatusCard as Te}from"../Cards/CurrentStatusCard/CurrentStatusCard.esm.js";import{ChecksTable as Le}from"../ChecksTable/ChecksTable.esm.js";import{ChipSelector as we}from"../ChipSelector/ChipSelector.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as A}from"../EmptyState/EmptyStateBUI.esm.js";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Ie}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as Ne}from"../FilterSidebar/util.esm.js";import{LoadingTableSkeleton as Be}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{PageCustomActions as Pe}from"../PageCustomActions/PageCustomActions.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Re}from"../SoundcheckHeader/useHeader.esm.js";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 xe}from"../TechHealth/Filters/utils.esm.js";import{TopFailingChecksTableBUI as He}from"../TopFailingChecksTable/TopFailingChecksTableBUI.esm.js";import{TrackEntitiesTableBUI as Fe}from"./TrackEntitiesTable/TrackEntitiesTableBUI.esm.js";const _e=ne(()=>({emptyContainer:{padding:"var(--bui-space-1)"},container:{padding:"0 var(--bui-space-3)"},tabPanel:{padding:"var(--bui-space-6) 0 0"},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},editButton:{marginLeft:"auto"},tables:{margin:"0 var(--bui-space-2)"},tabs:{marginBottom:"var(--bui-space-6)"},tableContent:{margin:"var(--bui-space-3) 0 var(--bui-space-6)"},levelSection:{margin:"0 0 var(--bui-space-6)"},levelHeading:{padding:"var(--bui-space-3)",background:"var(--bui-fg-solid)"}})),p={CHECKS_BY_LEVELS:"Checks By Levels",TOP_FAILING_CHECKS:"Top Failing Checks",ENTITIES:"Entities"},Oe=()=>{const i=_e(),[y]=pe(),[E,K]=j(new Set([p.CHECKS_BY_LEVELS])),f=E.values().next().value??p.CHECKS_BY_LEVELS,[V,D]=j(""),S=de(),U=W(Z),{trackId:a}=ue(),{data:t,isLoading:d}=he(a),Y=t?U.forEntity(t.ownerEntityRef):void 0,q=Array.from(new Set(t?.levels.flatMap(r=>r.checks).map(r=>r.id)??[])),{owners:s,lifecycles:c,types:m,systems:l}=Ie(),v=X(ye),T=h(()=>Ne({lifecycles:c,owners:s,types:m,systems:l}),[c,s,m,l]),L=h(()=>xe(y.get("numberOfDays")),[y]),w=h(()=>({routeName:"soundcheck-track-insights",additionalAttributes:{trackId:a||"",filtersApplied:s.length+c.length+m.length+l.length,ownersFilter:s.join(",")||"",lifecyclesFilter:c.join(",")||"",typesFilter:m.join(",")||"",systemsFilter:l.join(",")||"",numberOfDays:L}}),[a,s,c,m,l,L]),{reportContentLoaded:I}=Ce(w),{reporter:G}=be(w),{data:g,isLoading:N}=fe({trackId:a,filter:T},!!a),{data:u,isLoading:k}=ge({trackId:t?.id,checkIds:q,filter:T},!!t),M=ke(u),{loading:$,allowed:z}=F({permission:ce,resourceRef:a}),{loading:B,allowed:P}=F({permission:me,resourceRef:a}),J=h(()=>t?.ownerEntityRef?e(ee,{color:"inherit",entityRef:t.ownerEntityRef,className:i.ownerLink}):null,[t?.ownerEntityRef,i.ownerLink]),Q=h(()=>!B&&P&&t?.isEditable?e(se,{className:i.editButton,variant:"contained",color:"primary",onClick:()=>{S(v({trackId:t.id}))},children:"Edit Track"}):null,[P,i.editButton,v,B,S,t]);Re({title:t?.name,description:t?.description,customSubtitle:J,sectionRight:Q});const R=G?.getLCPValue();return le(()=>{if(!d&&!k&&!N){const r=g?.certificationStatus?.numberOfEntities??0,x=u?.length??0;I({lcp:R,numberOfEntities:r,entitiesBucket:Ee(r),numberOfChecks:x,checksBucket:Se(x)})}},[d,k,N,u,g,I,R]),d?e(Be,{}):!d&&!t?e(n,{className:i.emptyContainer,children:e(A,{title:"Track not found",body:`There is no track with the requested id: ${a}.`})}):!$&&!z?e(n,{className:i.emptyContainer,children:e(A,{title:"Cannot view track",body:`No permission to view track with the requested id: ${a}.`})}):o(H,{children:[e(n,{children:e(te,{title:t?.name})}),o(n,{className:i.container,children:[o(ie,{className:i.tabs,children:[o(re,{children:[e(_,{id:"campaign-overview",children:"Campaign Overview"}),e(_,{id:"tech-insights-explorer",children:"Tech Insights Explorer"})]}),e(O,{id:"campaign-overview",children:o(b,{className:i.tabPanel,children:[e(ve,{description:t?.description??void 0,owner:Y?.snapshot.primaryTitle??void 0}),e(Te,{totals:M}),e(oe,{children:e(ae,{children:e(C,{color:"secondary",children:"Historical Status"})})})]})}),e(O,{id:"tech-insights-explorer",children:e(n,{className:i.tabPanel,children:"Tech Insights Explorer"})})]}),t&&o(n,{className:i.tables,children:[o(b,{justify:"between",children:[e(we,{options:Object.values(p),selected:E,ariaLabel:"Sections",onSelectionChange:K}),e(Pe,{searchValue:V,setSearchValue:r=>D(r)})]}),o(n,{className:i.tableContent,children:[f===p.CHECKS_BY_LEVELS&&e(H,{children:t.levels.map(r=>o(n,{className:i.levelSection,children:[o(b,{align:"center",gap:"4",className:i.levelHeading,children:[o(C,{color:"secondary",children:["Level ",r.ordinal]})," ",e(C,{children:r.name})]}),e(Le,{checks:r.checks,checkStatuses:u,isLoading:d||k})]},r.ordinal))}),f===p.TOP_FAILING_CHECKS&&e(He,{track:t,checkStatuses:u,certificationStatus:g?.certificationStatus}),f===p.ENTITIES&&e(Fe,{track:t,lifecycles:c,owners:s,types:m,systems:l})]})]})]})]})};export{Oe as TrackPageBUI};
|
|
2
|
+
//# sourceMappingURL=TrackPageBUI.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as p,Fragment as ie}from"react/jsx-runtime";import{useRouteRef as re}from"@backstage/core-plugin-api";import{EntityRefLink as oe}from"@backstage/plugin-catalog-react";import{usePermission as R}from"@backstage/plugin-permission-react";import{makeStyles as ae,Button as se,Box as ne,Tabs as ce,Tab as b}from"@material-ui/core";import{soundcheckTrackReadPermission as le,soundcheckTrackUpdatePermission as me,toEntityFilterQuery as de}from"@spotify/backstage-plugin-soundcheck-common";import{useMemo as s,useState as pe,useCallback as ge,useEffect as fe}from"react";import{useSearchParams as ue,useParams as he,useNavigate as ke}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 ye}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as Ce}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as be}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useCheckStatuses as ve}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useLCPReporting as Se}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Le}from"../../hooks/useLoadTimeReporting.esm.js";import{trackEditRouteRef as Te}from"../../routes.esm.js";import{getEntitiesBucket as Fe,getChecksBucket as we}from"../../utils/helpers.esm.js";import{FilterSidebar as Ee}from"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Ne}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as xe}from"../FilterSidebar/util.esm.js";import{LevelsTable as Re}from"../LevelsTable/LevelsTable.esm.js";import{LoadingIndicator as Be}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as Pe}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as De}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContent as Oe}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 Ie}from"../TechHealth/Filters/utils.esm.js";import{TopFailingChecksTable as Ae}from"../TopFailingChecksTable/TopFailingChecksTable.esm.js";import{TrackEntitiesTable as je}from"./TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackProgressCard as He}from"./TrackProgressCard.esm.js";const Me=ae(r=>({root:{height:"100%",background:r.palette.background.default},pageContent:{display:"flex",minHeight:`calc(100vh - ${r.spacing(15)}px)`,borderTop:`1px solid ${r.palette.divider}`,height:"100%"},mainContentArea:{flex:1,display:"flex",flexDirection:"column",minWidth:0},trackProgressContainer:{padding:r.spacing(2,0,2,2),borderBottom:`1px solid ${r.palette.divider}`},levelCard:{margin:r.spacing(1,0,2)},editButton:{marginLeft:"auto"},contentArea:{flex:1,padding:r.spacing(0,2)},trackEntitiesContainer:{marginTop:r.spacing(1)},headerDescription:{fontSize:r.typography.body2.fontSize,margin:r.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},tabs:{padding:r.spacing(2,2,0,2)}})),$e=()=>{const[r]=ue(),{trackId:o}=he(),k=s(()=>Ie(r.get("numberOfDays")),[r]),{owners:n,lifecycles:c,types:l,systems:m,stagedLifecycles:B,setStagedLifecycles:P,stagedOwners:D,setStagedOwners:O,stagedTypes:I,setStagedTypes:A,stagedSystems:j,setStagedSystems:H,hasFilterChanges:M,handleApplyFilters:$,handleClearFilters:z}=Ne(),v=s(()=>({routeName:"soundcheck-track-insights",additionalAttributes:{trackId:o||"",filtersApplied:n.length+c.length+l.length+m.length,ownersFilter:n.join(",")||"",lifecyclesFilter:c.join(",")||"",typesFilter:l.join(",")||"",systemsFilter:m.join(",")||"",numberOfDays:k}}),[o,n,c,l,m,k]),{reportContentLoaded:S}=Le(v),{reporter:V}=Se(v),i=Me(),[g,W]=pe("checksByLevel"),L=ke(),T=re(Te),Q=ge((a,h)=>{W(h)},[]),y=s(()=>xe({lifecycles:c,owners:n,types:l,systems:m}),[c,n,l,m]),{data:e,isLoading:d,isError:U}=ye(o),{data:f,isLoading:C,isError:q}=Ce({trackId:o,filter:y},!!o),{data:G,isLoading:F,isError:J}=be({trackId:o,filter:y,numberOfDays:k},!!o),{loading:K,allowed:X}=R({permission:le,resourceRef:o}),{loading:w,allowed:E}=R({permission:me,resourceRef:o}),Y=s(()=>e?.ownerEntityRef?t(oe,{color:"inherit",entityRef:e.ownerEntityRef,className:i.ownerLink}):null,[e?.ownerEntityRef,i.ownerLink]),Z=s(()=>!w&&E&&e?.isEditable?t(se,{className:i.editButton,variant:"contained",color:"primary",onClick:()=>{L(T({trackId:e.id}))},children:"Edit Track"}):null,[E,i.editButton,T,w,L,e]),_=s(()=>e?.description?t(Oe,{className:i.headerDescription,content:e.description}):null,[i.headerDescription,e?.description]);De({title:e?.name,description:_,customSubtitle:Y,sectionRight:Z});const ee=e?.levels?.flatMap(a=>a.checks)??[],{data:u,isLoading:N}=ve({trackId:o,checkIds:ee.map(a=>a.id),filter:y},!!e),te=s(()=>de(e?.filter),[e]),x=V?.getLCPValue();return fe(()=>{if(!d&&!N&&!C&&!F){const a=f?.certificationStatus?.numberOfEntities??0,h=u?.length??0;S({lcp:x,numberOfEntities:a,entitiesBucket:Fe(a),numberOfChecks:h,checksBucket:we(h)})}},[d,N,C,F,u,f,S,x]),p(ie,{children:[t(Pe,{entityName:"track",entityId:o,showNotFound:!d&&!e,showCannotView:!K&&!X}),d&&t(Be,{}),e&&t("div",{className:i.root,children:p("div",{className:i.pageContent,children:[t(Ee,{trackFilter:te,stagedTypes:I,stagedLifecycles:B,stagedOwners:D,stagedSystems:j,onTypesChange:A,onLifecyclesChange:P,onOwnersChange:O,onSystemsChange:H,onApplyFilters:$,onClearFilters:z,hasFilterChanges:M}),p("div",{className:i.mainContentArea,children:[t("div",{className:i.trackProgressContainer,children:t(He,{track:e,status:f,history:G,isError:U||q||J})}),t(ne,{className:i.tabs,children:p(ce,{value:g,onChange:Q,indicatorColor:"primary",textColor:"primary",children:[t(b,{label:"Checks By Level",value:"checksByLevel"}),t(b,{label:"Top Failing Checks",value:"topFailingChecks"}),t(b,{label:"Entities",value:"entities"})]})}),p("div",{className:i.contentArea,children:[g==="checksByLevel"&&t("div",{className:i.levelCard,children:t(Re,{track:e,checkStatuses:u,isLoading:d||C})}),g==="entities"&&t("div",{className:i.trackEntitiesContainer,children:t(je,{track:e,lifecycles:c,owners:n,types:l,systems:m})}),g==="topFailingChecks"&&t("div",{className:i.levelCard,children:t(Ae,{track:e,checkStatuses:u,certificationStatus:f?.certificationStatus})})]})]})]})})]})};export{$e as TrackPageDeprecated};
|
|
2
|
+
//# sourceMappingURL=TrackPageDeprecated.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as r,jsxs as k}from"react/jsx-runtime";import{useRouteRef as _,useApi as S,featureFlagsApiRef as ee}from"@backstage/core-plugin-api";import{usePermission as re}from"@backstage/plugin-permission-react";import{makeStyles as te,Button as N,Grid as a}from"@material-ui/core";import{soundcheckTrackCreatePermission as ae}from"@spotify/backstage-plugin-soundcheck-common";import{useState as i,useMemo as oe,useEffect as B}from"react";import{useNavigate as ie}from"react-router-dom";import se from"react-use/lib/useDebounce";import{soundcheckApiRef as ne}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 ce}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGetTrackOwners as me}from"../../../hooks/tracks/useGetTrackOwners.esm.js";import{useImportTracks as le}from"../../../hooks/tracks/useImportTracks.esm.js";import{useLCPReporting as pe}from"../../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as de}from"../../../hooks/useLoadTimeReporting.esm.js";import ge from"../../../images/no-results.svg";import{trackCreateRouteRef as ue}from"../../../routes.esm.js";import{exportTracks as fe}from"../../../utils/export.esm.js";import{FilterDefault as L}from"../../../utils/filters.esm.js";import{EmptyState as F}from"../../EmptyState/EmptyState.esm.js";import"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/ui";import{ImportExportPanel as he}from"../../ImportExportPanel/ImportExportPanel.esm.js";import{Pagination as ke}from"../../Pagination/Pagination.esm.js";import{SearchFilters as Pe}from"../../SearchFilters/SearchFilters.esm.js";import{TrackEmptyState as P,TrackNoResults as I}from"./TrackEmptyState.esm.js";import{TracksOverviewSkeleton as Te}from"./TracksOverviewSkeleton.esm.js";import{TrackSummaryCard as ye}from"./TrackSummaryCard.esm.js";const Ce=te(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)}})),be=({tracksPerPage:t,currentCursor:O})=>{const[s,T]=i(O),[g,E]=i(""),[n,j]=i(L.Alpha),[c,D]=i(L.Owner),[m,G]=i(""),y=oe(()=>({routeName:"soundcheck-tracks",additionalAttributes:{tracksPerPage:t,pageCursor:s||"",sortOrder:n||"",ownerFilter:c||"",nameSearch:m||""}}),[t,s,n,c,m]),{reportContentLoaded:C}=de(y),{reporter:H}=pe(y),l=Ce(),{data:M,isLoading:u}=me();se(()=>{G(g)},500,[g]);const{loading:b,allowed:V}=re({permission:ae}),W=ie(),$=_(ue),x=()=>W($()),{data:f,isLoading:o}=ce({ids:void 0,types:["standard","playlist"],first:t,after:s,orderAlphabetical:n,searchByOwner:c,searchByName:m}),p=f?.edges?.map(e=>e.node),[A,v]=i([]);B(()=>{T(void 0),v([])},[m]);const w=S(ee),q=!w.getRegisteredFlags().find(e=>e.name==="soundcheck-enable-track-creation")||w.isActive("soundcheck-enable-track-creation"),h=!V||!q,z=e=>{j(e.target.value)},J=e=>{D(e.target.value)},K=S(ne),{mutateAsync:Q}=le(),U=async e=>Q(e),X=async()=>{const e=await K.getTracks({orderAlphabetical:"asc"});return fe(e.edges.map(Z=>Z.node))},R=H?.getLCPValue();if(B(()=>{!o&&!u&&C({lcp:R})},[o,u,C,R]),!o&&!p)return r(F,{title:P.title,description:P.description,imgSrc:ge,action:!b&&r(N,{disabled:h,variant:"contained",color:"primary",onClick:x,children:P.callToAction})});let d;o?d=r(Te,{}):p?.length?d=p?.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(ye,{summary:e})},e.id)):d=r(a,{xs:12,item:!0,role:"listitem","aria-label":"result",children:r(F,{title:I.title,description:I.description})});const Y=f?.pageInfo.hasNextPage||A?.length>0;return k(a,{container:!0,direction:"row",className:l.container,children:[k(a,{container:!0,className:l.header,children:[r(Pe,{searchPlaceholder:"Search Available Tracks",isLoading:o||u,searchTerm:g,setSearchTerm:E,filterAlpha:n,handleAlphabeticalFilterChange:z,filterOwner:c,handleOwnerFilterChange:J,owners:M}),k(a,{item:!0,xs:4,className:l.headerButtons,children:[r(he,{resourceType:"track",disableImport:h,disableExport:o||!p?.length,onImport:U,onExport:X}),!b&&r(N,{disabled:h,variant:"contained",color:"primary",onClick:x,className:l.createButton,children:"Create Track"})]})]}),r(a,{container:!0,spacing:4,role:"list","aria-label":"tracks",children:d}),Y&&r(a,{item:!0,xs:12,children:r(ke,{response:f,listingsPerPage:t,cursor:s,setCursor:T,prevCursors:A,setPrevCursors:v,labelPerPageDropdown:"Tracks Per Page:",urlRoute:"tracks?tracksPerPage="})})]})};export{be as TrackListPageDeprecated};
|
|
2
|
+
//# sourceMappingURL=TrackListPageDeprecated.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import{useRouteRef as p,useApi as I,configApiRef as v}from"@backstage/core-plugin-api";import{usePermission as a}from"@backstage/plugin-permission-react";import{soundcheckTrackUpdatePermission as u,soundcheckTrackDeletePermission as x}from"@spotify/backstage-plugin-soundcheck-common";import{useCallback as i}from"react";import{useNavigate as A}from"react-router-dom";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{useConfirmationModal as C}from"../../../hooks/useConfirmationModal.esm.js";import{useDeleteTrack as P}from"../../../hooks/tracks/useDeleteTrack.esm.js";import{useRecertifyTrack as M}from"../../../hooks/tracks/useRecertifyTrack.esm.js";import{trackDetailsRouteRef as N,trackEditRouteRef as O}from"../../../routes.esm.js";import{exportTrack as $}from"../../../utils/export.esm.js";import{SummaryCard as S}from"../../SummaryCard/SummaryCard.esm.js";import{TrackMetadata as j}from"./TrackMetadata.esm.js";const B=({summary:e})=>{const{loading:f,allowed:k}=a({permission:u,resourceRef:e.id}),{loading:y,allowed:h}=a({permission:x,resourceRef:e.id}),{loading:g,allowed:w}=a({permission:u,resourceRef:e.id}),{showModal:r}=C(),{mutate:m}=M(),{mutate:n}=P(),o=A(),s=p(N),c=p(O),d=I(v).getOptionalConfig("soundcheck.certifications.history");let t=d?.getOptionalBoolean("enable")?d?.getOptionalNumber("retentionTimeInDays")??120:1;t=Math.min(t,365);const R=i(async()=>{await r({title:"Recertify Track",message:`Are you sure you want to recertify track ${e.name}? It will erase existing certification data, which cannot be undone. New data will be generated for the past ${t} day(s), reflecting the track's current configuration. This process may take some time, you will be notified upon completion.`})&&m({trackId:e.id,numberOfDays:t})},[r,e.id,e.name,m,t]),T=i(async()=>{await r({title:"Delete Track",message:`Are you sure you want to delete track ${e.name}?`})&&n(e.id)},[r,e.id,e.name,n]),b=i(()=>{o(s({trackId:e.id}))},[o,e.id,s]),D=i(()=>{o(c({trackId:e.id}))},[o,e.id,c]),E=i(()=>{$(e)},[e]);return l(S,{title:e.name,description:e.description,children:l(j,{track:e}),handleView:b,handleEdit:e.isEditable&&!g&&w?D:void 0,handleDelete:e.isEditable&&!y&&h?T:void 0,handleExport:E,handleRecertify:!f&&k?R:void 0,viewIsPrimaryAction:!0})};export{B as TrackSummaryCard};
|
|
2
2
|
//# sourceMappingURL=TrackSummaryCard.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as l,Fragment as U,jsx as e}from"react/jsx-runtime";import{useApi as $,useRouteRef as S}from"@backstage/core-plugin-api";import{entityPresentationApiRef as H}from"@backstage/plugin-catalog-react";import{usePermission as M}from"@backstage/plugin-permission-react";import{Box as T,HeaderPage as D,Table as V,TableHeader as j,Column as i,TableBody as O,TablePagination as z,Icon as F}from"@backstage/ui";import{makeStyles as G}from"@material-ui/core";import{soundcheckTrackCreatePermission as W}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as Y,isEmpty as _}from"lodash";import{useState as u,useMemo as p,useEffect as q}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as J}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSearchName as K}from"../../hooks/useSearchName.esm.js";import{usePagination as Q}from"../../hooks/usePagination.esm.js";import{useProfileImages as X}from"../../hooks/catalog/useProfileImages.esm.js";import{useLCPReporting as Z}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ee}from"../../hooks/useLoadTimeReporting.esm.js";import{trackCreateRouteRef as te,trackDetailsRouteRef as re}from"../../routes.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as oe}from"../EmptyState/EmptyStateBUI.esm.js";import{EmptyStateNoTracks as ie}from"../EmptyState/EmptyStateNoTracks.esm.js";import{ListPageCustomActions as ae}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as ne}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{TableRowWithOwner as se}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const C=10,me=G(()=>({container:{padding:"0 var(--bui-space-3)"},emptySpacing:{margin:"var(--bui-space-3) 0"}})),ce=({track:t,profileImageMap:a})=>{const c=p(()=>t.levels.reduce((d,n)=>d+(n.checks?.length??0),0),[t.levels]),o=S(re);return e(se,{ownerEntityRef:t.ownerEntityRef,href:o({trackId:t.id}),actions:["export","edit","delete"],profileImageSrc:a[t.ownerEntityRef],cells:[{title:t.name??t.id},{title:"",onClick:()=>{},icon:t.documentationURL?e("a",{href:/^https?:\/\//i.test(t.documentationURL)?t.documentationURL:`http://${t.documentationURL}`,target:"_blank",rel:"noreferrer noopener",children:e(F,{name:"external-link"})}):void 0},{title:t.draft?"Draft":"Active"},{title:`${t.levels.length} Level${t.levels.length===1?"":"s"}`},{title:`${c} Check${c===1?"":"s"}`}]})},le=()=>{const t=me(),[a,c]=u("ascending"),[o,d]=u(""),[n,v]=u(""),g=p(()=>({routeName:"soundcheck-tracks"}),[]),{reportContentLoaded:h}=ee(g),{reporter:b}=Z(g),{data:k,isLoading:s}=J({types:["standard","playlist"]}),y=p(()=>k?.edges?.map(r=>r.node)??[],[k?.edges]),{profileImageMap:E}=X(y.map(r=>r.ownerEntityRef)),w=$(H),f=K({items:y,searchTerm:n}),R=p(()=>{if(!o)return f;const r=Y(f,m=>o==="owner"?w.forEntity(m.ownerEntityRef).snapshot.primaryTitle.toLowerCase():o==="status"?m.draft?"draft":"active":m.name.toLowerCase());return a==="descending"&&r.reverse(),r},[w,o,a,f]),{paginatedItems:L,reset:I,paginationProps:x}=Q({pageParam:"tracksPerPage",defaultPageSize:C,items:R}),P=b?.getLCPValue();q(()=>{s||h({lcp:P})},[s,h,P]);const N=S(te),{loading:A,allowed:B}=M({permission:W});return l(U,{children:[e(T,{children:e(D,{title:"Tracks",customActions:e(ae,{searchValue:n,setSearchValue:r=>{I(),v(r)},canCreate:!A&&B,createHref:N()})})}),l(T,{className:t.container,children:[l(V,{onSortChange:({direction:r,column:m})=>{d(String(m)),c(r)},sortDescriptor:{direction:a,column:o},children:[l(j,{children:[e(i,{id:"name",allowsSorting:!0,isRowHeader:!0,children:"Track Name"}),e(i,{style:{width:"30px"},id:"documentation"}),e(i,{allowsSorting:!0,id:"status",children:"Status"}),e(i,{id:"levels",children:"Levels"}),e(i,{id:"checks",children:"Checks"}),e(i,{id:"owner",allowsSorting:!0,children:"Track Owner"}),e(i,{style:{width:"30px"}})]}),e(O,{children:!s&&L.map(r=>e(ce,{track:r,profileImageMap:E??{}},r.id))})]}),R.length>C&&e(z,{...x}),!s&&_(L)&&e("div",{className:t.emptySpacing,children:n?e(oe,{title:"No tracks found",body:"Your current search term did not return any tracks. Please try a different search term."}):e(ie,{})}),s&&e(ne,{rowCount:10})]})]})};export{le as TracksListPageBUI};
|
|
2
|
+
//# sourceMappingURL=TracksListPageBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{useSearchParams as i}from"react-router-dom";import{useFeatureFlag as p}from"../../hooks/useFeatureFlag.esm.js";import{RESULTS_PER_PAGE as e}from"../../utils/filters.esm.js";import{TrackListPageDeprecated as a}from"./TrackListPage/TrackListPageDeprecated.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"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"../../routes.esm.js";import"js-yaml";import"lodash";import"../SummaryCard/SummaryCard.esm.js";import"./TrackListPage/TrackMetadata.esm.js";import{TracksListPageBUI as s}from"./TracksListPageBUI.esm.js";const c=()=>{const[o]=i(),r=o.get("tracksPerPage"),m=r?parseInt(r,10):e;return p("backstage-ui")?t(s,{}):t(a,{tracksPerPage:m})};export{c as TracksPage};
|
|
2
2
|
//# sourceMappingURL=TracksPage.esm.js.map
|