@spotify/backstage-plugin-soundcheck 0.22.4 → 0.22.5
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 +7 -0
- package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
- package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
- package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
- package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
- package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
- package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
- package/dist/components/CheckForm/CheckForm.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
- package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
- package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +1 -1
- package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
- package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
- package/dist/components/ChecksTable/FixMeCell.esm.js +1 -1
- package/dist/components/ChecksTable/PullRequestsTable.esm.js +1 -1
- package/dist/components/ChecksTable/utils.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.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/GithubConfigurator.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/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/SonarQubeConfigurator.esm.js +1 -1
- package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
- package/dist/components/GroupSelectorBUI/GroupSelectList.esm.js +1 -1
- package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
- package/dist/components/Menus/useCampaignActions.esm.js +1 -1
- package/dist/components/Menus/useCheckActions.esm.js +1 -1
- package/dist/components/Menus/useTrackActions.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
- package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js +1 -1
- package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
- package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
- package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
- package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
- package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
- package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
- package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
- package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
- package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
- package/dist/contexts/UserProvider.esm.js +1 -1
- package/dist/hooks/checks/useChecks.esm.js +2 -0
- package/dist/hooks/fixMe/useFixMe.esm.js +1 -1
- package/dist/hooks/fixWithAika/useFixWithAika.esm.js +1 -1
- package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as p,Fragment as j}from"react/jsx-runtime";import{useRouteRef as k,useApi as q}from"@backstage/core-plugin-api";import{entityPresentationApiRef as D}from"@backstage/plugin-catalog-react";import{usePermission as M}from"@backstage/plugin-permission-react";import{Container as l,HeaderPage as U,Box as b,Flex as $,SearchField as z}from"@backstage/ui";import{makeStyles as J}from"@material-ui/core";import{soundcheckTrackReadPermission as K}from"@spotify/backstage-plugin-soundcheck-common";import{useState as I,useMemo as T,useEffect as Q}from"react";import{useSearchParams as W,useParams as X}from"react-router-dom";import Y from"react-use/lib/useDebounce";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as Z}from"../../hooks/tracks/useGetAllTracks.esm.js";import{useTrack as _}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useHierarchicalTrackStatus as ee}from"../../hooks/heirarchy/useHierarchicalTrackStatus.esm.js";import{useGroupHierarchy as re}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{useLCPReporting as te}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as oe}from"../../hooks/useLoadTimeReporting.esm.js";import{tracksPageRouteRef as ie,trackOverviewRouteRef as ae,trackExplorerRouteRef as me}from"../../routes.esm.js";import{getAllOwnedEntityCount as se}from"../../utils/getAllOwnedEntityCount.esm.js";import{getEntitiesBucket as ne,getTracksBucket as ce}from"../../utils/helpers.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as A}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"../HierarchicalTechInsightsPage/visualizations/NivoCirclePacking.esm.js";import"../HierarchicalTechInsightsPage/visualizations/NivoHeatmap.esm.js";import"../HierarchicalTechInsightsPage/visualizations/NivoIcicle.esm.js";import"../HierarchicalTechInsightsPage/visualizations/NivoSunburst.esm.js";import"../HierarchicalTechInsightsPage/visualizations/NivoTreemap.esm.js";import"../HierarchicalTechInsightsPage/visualizations/VisualizationBreadcrumb.esm.js";import{hierarchyToNivo as pe}from"../HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js";import{LoadingTableSkeleton as le}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as de}from"../Menus/SimpleMenu.esm.js";import"js-yaml";import"lodash";import{useTrackActions as ue}from"../Menus/useTrackActions.esm.js";import"uuid";import"../CampaignPage/CampaignActionsContext.esm.js";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TechInsightsExplorerTable as fe}from"../TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js";import{TechInsightsGroupSelector as he}from"../TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js";import{TopAndBottomPerformingTeams as ge}from"../TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js";const ke=J(()=>({container:{marginBottom:"var(--bui-space-12)"},teams:{margin:"0 0 var(--bui-space-12)"},tableContent:{margin:"var(--bui-space-3) 0 0"},filters:{width:"25rem",marginLeft:"auto"}})),be=()=>{const i=ke(),[d,N]=W(),[a,y]=I(d.get("search")||""),t=d.get("group"),[u,C]=I(""),{trackId:e}=X(),{data:f,isLoading:s}=_(e),v=ue(f??void 0),E=k(ie);Y(()=>{C(a);const o=new URLSearchParams(d.toString());a?o.set("search",a):o.delete("search"),N(o,{replace:!0})},300,[a]);const R=T(()=>({routeName:"soundcheck-tech-insights-explorer",additionalAttributes:{trackId:e||"",group:t||"",groupsSearch:u||""}}),[e,t,u]),{reportContentLoaded:S}=oe(R),{reporter:B}=te(R),{loading:O,allowed:F}=M({permission:K,resourceRef:e}),{data:h,isLoading:n}=ee({trackId:e??"",groupRef:t??"",skip:!e}),{data:L}=Z({}),m=T(()=>L?.edges.find(o=>o.node.id===e)?.node,[L?.edges,e]),{data:c,isLoading:g}=re(t||void 0,{enabled:!!t&&!!e&&!!m,ownedEntitiesFilter:m?.filter??void 0}),P=q(D),G=T(()=>{if(!t)return;const o=c?.[t];return o?pe(o,h||null,()=>"var(--bui-fg-primary)",P,void 0):void 0},[c,P,t,h]),w=B?.getLCPValue();Q(()=>{if(!s&&!g&&!n){const o=t?se(c?.[t]):0,x=m?1:0;S({lcp:w,numberOfEntities:o,entitiesBucket:ne(o),numberOfTracks:x,tracksBucket:ce(x)})}},[s,S,g,n,c,t,m,w]);const H=k(ae),V=k(me);return s?r(l,{className:i.container,children:r(le,{})}):!s&&!f?r(l,{className:i.container,children:r(A,{title:"Track not found",body:`There is no track with the requested id: ${e}.`})}):!O&&!F?r(l,{className:i.container,children:r(A,{title:"Cannot view track",body:`No permission to view track with the requested id: ${e}.`})}):p(j,{children:[r(U,{title:f?.name,customActions:r(de,{label:"Track Actions",disabled:!v.length,placement:"left top",menuActions:v}),breadcrumbs:[{label:"Tracks",href:E()}],tabs:[{id:"overview",label:"Track Overview",href:e?H({trackId:e}):""},{id:"explorer",label:"Tech Insights Explorer",href:e?V({trackId:e}):""}]}),p(l,{className:i.container,children:[r(b,{className:i.teams,children:r(ge,{trackStatus:h??void 0,isLoading:n})}),p(b,{children:[p($,{align:"center",gap:"3",className:i.filters,children:[r(he,{}),r(z,{value:a,onChange:y,"aria-label":"Search",placeholder:"Search"})]}),r(b,{className:i.tableContent,children:r(fe,{tableData:G,isLoading:g||n,selectedGroup:t??void 0,searchValue:u,trackId:m?.id})})]})]})]})};export{be as TrackTechInsightsExplorerPage};
|
|
1
|
+
import{jsx as r,jsxs as p,Fragment as j}from"react/jsx-runtime";import{useRouteRef as k,useApi as q}from"@backstage/core-plugin-api";import{entityPresentationApiRef as D}from"@backstage/plugin-catalog-react";import{usePermission as M}from"@backstage/plugin-permission-react";import{Container as l,HeaderPage as U,Box as b,Flex as $,SearchField as z}from"@backstage/ui";import{makeStyles as J}from"@material-ui/core";import{soundcheckTrackReadPermission as K}from"@spotify/backstage-plugin-soundcheck-common";import{useState as I,useMemo as T,useEffect as Q}from"react";import{useSearchParams as W,useParams as X}from"react-router-dom";import Y from"react-use/lib/useDebounce";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as Z}from"../../hooks/tracks/useGetAllTracks.esm.js";import{useTrack as _}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useHierarchicalTrackStatus as ee}from"../../hooks/heirarchy/useHierarchicalTrackStatus.esm.js";import{useGroupHierarchy as re}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{useLCPReporting as te}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as oe}from"../../hooks/useLoadTimeReporting.esm.js";import{tracksPageRouteRef as ie,trackOverviewRouteRef as ae,trackExplorerRouteRef as me}from"../../routes.esm.js";import{getAllOwnedEntityCount as se}from"../../utils/getAllOwnedEntityCount.esm.js";import{getEntitiesBucket as ne,getTracksBucket as ce}from"../../utils/helpers.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as A}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"../HierarchicalTechInsightsPage/visualizations/NivoCirclePacking.esm.js";import"../HierarchicalTechInsightsPage/visualizations/NivoHeatmap.esm.js";import"../HierarchicalTechInsightsPage/visualizations/NivoIcicle.esm.js";import"../HierarchicalTechInsightsPage/visualizations/NivoSunburst.esm.js";import"../HierarchicalTechInsightsPage/visualizations/NivoTreemap.esm.js";import"../HierarchicalTechInsightsPage/visualizations/VisualizationBreadcrumb.esm.js";import{hierarchyToNivo as pe}from"../HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js";import{LoadingTableSkeleton as le}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as de}from"../Menus/SimpleMenu.esm.js";import"js-yaml";import"lodash";import{useTrackActions as ue}from"../Menus/useTrackActions.esm.js";import"uuid";import"../CampaignPage/CampaignActionsContext.esm.js";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TechInsightsExplorerTable as fe}from"../TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js";import{TechInsightsGroupSelector as he}from"../TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js";import{TopAndBottomPerformingTeams as ge}from"../TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js";const ke=J(()=>({container:{marginBottom:"var(--bui-space-12)"},teams:{margin:"0 0 var(--bui-space-12)"},tableContent:{margin:"var(--bui-space-3) 0 0"},filters:{width:"25rem",marginLeft:"auto"}})),be=()=>{const i=ke(),[d,N]=W(),[a,y]=I(d.get("search")||""),t=d.get("group"),[u,C]=I(""),{trackId:e}=X(),{data:f,isLoading:s}=_(e),v=ue(f??void 0),E=k(ie);Y(()=>{C(a);const o=new URLSearchParams(d.toString());a?o.set("search",a):o.delete("search"),N(o,{replace:!0})},300,[a]);const R=T(()=>({routeName:"soundcheck-tech-insights-explorer",additionalAttributes:{trackId:e||"",group:t||"",groupsSearch:u||""}}),[e,t,u]),{reportContentLoaded:S}=oe(R),{reporter:B}=te(R),{loading:O,allowed:F}=M({permission:K,resourceRef:e}),{data:h,isLoading:n}=ee({trackId:e??"",groupRef:t??"",skip:!e}),{data:L}=Z({}),m=T(()=>L?.edges.find(o=>o.node.id===e)?.node,[L?.edges,e]),{data:c,isLoading:g}=re(t||void 0,{enabled:!!t&&!!e&&!!m,ownedEntitiesFilter:m?.filter??void 0}),P=q(D),G=T(()=>{if(!t)return;const o=c?.[t];return o?pe(o,h||null,()=>"var(--bui-fg-primary)",P,void 0):void 0},[c,P,t,h]),w=B?.getLCPValue();Q(()=>{if(!s&&!g&&!n){const o=t?se(c?.[t]):0,x=m?1:0;S({lcp:w,numberOfEntities:o,entitiesBucket:ne(o),numberOfTracks:x,tracksBucket:ce(x)})}},[s,S,g,n,c,t,m,w]);const H=k(ae),V=k(me);return s?r(l,{className:i.container,children:r(le,{})}):!s&&!f?r(l,{className:i.container,children:r(A,{title:"Track not found",body:`There is no track with the requested id: ${e}.`})}):!O&&!F?r(l,{className:i.container,children:r(A,{title:"Cannot view track",body:`No permission to view track with the requested id: ${e}.`})}):p(j,{children:[r(U,{title:f?.name,customActions:r(de,{label:"Track Actions",disabled:!v.length,placement:"left top",menuActions:v}),breadcrumbs:[{label:"Tracks",href:E()}],tabs:[{id:"overview",label:"Track Overview",href:e?H({trackId:e}):""},{id:"explorer",label:"Tech Insights Explorer",href:e?V({trackId:e}):""}]}),p(l,{className:i.container,children:[r(b,{className:i.teams,children:r(ge,{trackStatus:h??void 0,isLoading:n})}),p(b,{children:[p($,{align:"center",gap:"3",className:i.filters,children:[r(he,{}),r(z,{value:a,onChange:y,"aria-label":"Search",placeholder:"Search"})]}),r(b,{className:i.tableContent,children:r(fe,{tableData:G,isLoading:g||n,selectedGroup:t??void 0,searchValue:u,trackId:m?.id})})]})]})]})};export{be as TrackTechInsightsExplorerPage};
|
|
2
2
|
//# sourceMappingURL=TrackTechInsightsExplorerPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,jsxs as d,Fragment as Y}from"react/jsx-runtime";import{useApi as z,useRouteRef as B}from"@backstage/core-plugin-api";import{entityPresentationApiRef as _}from"@backstage/plugin-catalog-react";import{usePermission as q}from"@backstage/plugin-permission-react";import{HeaderPage as X,Flex as Z,Container as ee,TableRoot as te,TableHeader as re,Column as m,TableBody as oe,TablePagination as ie}from"@backstage/ui";import{makeStyles as ae}from"@material-ui/core";import{soundcheckTrackCreatePermission as ne}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as se,isEmpty as R}from"lodash";import{useState as T,useMemo as u,useEffect as me}from"react";import{useSearchParams as ce}from"react-router-dom";import pe from"react-use/lib/useDebounce";import{soundcheckApiRef as le}from"../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as de}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as fe}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useProfileImages as ge}from"../../hooks/catalog/useProfileImages.esm.js";import{useImportTracks as ue}from"../../hooks/tracks/useImportTracks.esm.js";import{useLCPReporting as he}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Pe}from"../../hooks/useLoadTimeReporting.esm.js";import{useSearchNameOwner as we}from"../../hooks/useSearchNameOwner.esm.js";import{newTrackRouteRef as ye,trackDetailsRouteRef as ke}from"../../routes.esm.js";import{exportTracks as Se}from"../../utils/export.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as Re}from"../EmptyState/EmptyStateBUI.esm.js";import{EmptyStateNoTracks as Te}from"../EmptyState/EmptyStateNoTracks.esm.js";import"@remixicon/react";import{ImportExportPanelBUI as ve}from"../ImportExportPanel/ImportExportPanelBUI.esm.js";import"../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{ListPageCustomActions as Ce}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as Le}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import{useTrackActions as Ie}from"../Menus/useTrackActions.esm.js";import"uuid";import"../CampaignPage/CampaignActionsContext.esm.js";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TableRowWithOwner as Ee}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const D=10,Ae=["name","status","owner"],be=({track:r,profileImageMap:a})=>{const c=u(()=>r.levels.reduce((p,P)=>p+(P.checks?.length??0),0),[r.levels]),o=B(ke),h=Ie(r);return t(Ee,{ownerEntityRef:r.ownerEntityRef,href:o({trackId:r.id}),menuActions:h,profileImageSrc:a[r.ownerEntityRef],name:r.name??r.id,description:r.description??"",documentationURL:r.documentationURL??void 0,cells:[{title:r.draft?"Draft":"Active"},{title:`${r.levels.length} Level${r.levels.length===1?"":"s"}`},{title:`${c} Check${c===1?"":"s"}`}]})},xe=ae(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ne=()=>{const r=xe(),[a,c]=ce(),[o,h]=T(()=>a.get("search")??""),[p,P]=T(()=>a.get("sortDirection")==="descending"?"descending":"ascending"),[l,H]=T(()=>{const e=a.get("sort");return e&&Ae.includes(e)?e:""}),v=u(()=>({routeName:"soundcheck-tracks"}),[]),{reportContentLoaded:C}=Pe(v),{reporter:M}=he(v),{data:L,isLoading:n}=de({types:["standard","playlist"]}),w=u(()=>L?.edges?.map(e=>e.node)??[],[L?.edges]),{profileImageMap:$}=ge(w.map(e=>e.ownerEntityRef)),I=z(_),y=we(w,o),f=u(()=>{if(!l)return y;const e=se(y,s=>l==="owner"?I.forEntity(s.ownerEntityRef).snapshot.primaryTitle.toLowerCase():l==="status"?s.draft?"draft":"active":s.name.toLowerCase());return p==="descending"&&e.reverse(),e},[I,l,p,y]),{paginatedItems:k,reset:E,paginationProps:i}=fe({pageParam:"perPage",defaultPageSize:D,items:f});pe(()=>{E();const e=new URLSearchParams(a.toString());o?e.set("search",o):e.delete("search"),c(e,{replace:!0})},300,[o]);const V=({direction:e,column:s})=>{const S=String(s);H(S),P(e),E();const g=new URLSearchParams(a);S?g.set("sort",S):g.delete("sort"),g.set("sortDirection",e),c(g,{replace:!0})},A=M?.getLCPValue();me(()=>{n||C({lcp:A})},[n,C,A]);const F=B(ye),{loading:b,allowed:x}=q({permission:ne}),O=z(le),{mutateAsync:j}=ue(),G=async e=>j(e),W=async()=>{const e=await O.getTracks({orderAlphabetical:"asc"});return Se(e.edges.map(s=>s.node))},J=!n&&!R(k),K=f.length>D,N=!n&&R(k),Q=n;let U=null;return N&&(U=o?t(Re,{title:"No tracks found",body:"Your current search term did not return any tracks. Please try a different search term."}):t(Te,{})),d(Y,{children:[t(X,{title:"Tracks",customActions:d(Z,{gap:"2",align:"center",children:[t(ve,{resourceType:"track",disableImport:!b&&!x,disableExport:n||R(w),onImport:G,onExport:W}),t(Ce,{searchValue:o,setSearchValue:h,canCreate:!b&&x,createHref:F()})]})}),d(ee,{className:r.container,children:[Q&&t(Le,{rowCount:10}),N&&U,J&&d(te,{onSortChange:V,sortDescriptor:{direction:p,column:l},children:[d(re,{children:[t(m,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"50%"},children:"Track Name"}),t(m,{allowsSorting:!0,id:"status",style:{width:"10%"},children:"Status"}),t(m,{id:"levels",style:{width:"10%"},children:"Levels"}),t(m,{id:"checks",style:{width:"10%"},children:"Checks"}),t(m,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Track Owner"}),t(m,{id:"actions",style:{width:"3%"}})]}),t(oe,{children:!n&&k.map(e=>t(be,{track:e,profileImageMap:$??{}},e.id))})]}),K&&t(ie,{totalCount:f.length,offset:i.offset,hasNextPage:i.offset+i.pageSize<(f.length??0),hasPreviousPage:i.offset>0,onNextPage:i.onNextPage,onPreviousPage:i.onPreviousPage,onPageSizeChange:i.onPageSizeChange,pageSize:i.pageSize})]})]})};export{Ne as TracksListPageBUI};
|
|
1
|
+
import{jsx as t,jsxs as d,Fragment as Y}from"react/jsx-runtime";import{useApi as z,useRouteRef as B}from"@backstage/core-plugin-api";import{entityPresentationApiRef as _}from"@backstage/plugin-catalog-react";import{usePermission as q}from"@backstage/plugin-permission-react";import{HeaderPage as X,Flex as Z,Container as ee,TableRoot as te,TableHeader as re,Column as m,TableBody as oe,TablePagination as ie}from"@backstage/ui";import{makeStyles as ae}from"@material-ui/core";import{soundcheckTrackCreatePermission as ne}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as se,isEmpty as R}from"lodash";import{useState as T,useMemo as u,useEffect as me}from"react";import{useSearchParams as ce}from"react-router-dom";import pe from"react-use/lib/useDebounce";import{soundcheckApiRef as le}from"../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as de}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as fe}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useProfileImages as ge}from"../../hooks/catalog/useProfileImages.esm.js";import{useImportTracks as ue}from"../../hooks/tracks/useImportTracks.esm.js";import{useLCPReporting as he}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Pe}from"../../hooks/useLoadTimeReporting.esm.js";import{useSearchNameOwner as we}from"../../hooks/useSearchNameOwner.esm.js";import{newTrackRouteRef as ye,trackDetailsRouteRef as ke}from"../../routes.esm.js";import{exportTracks as Se}from"../../utils/export.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as Re}from"../EmptyState/EmptyStateBUI.esm.js";import{EmptyStateNoTracks as Te}from"../EmptyState/EmptyStateNoTracks.esm.js";import"@remixicon/react";import{ImportExportPanelBUI as ve}from"../ImportExportPanel/ImportExportPanelBUI.esm.js";import"../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{ListPageCustomActions as Ce}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as Le}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import{useTrackActions as Ie}from"../Menus/useTrackActions.esm.js";import"uuid";import"../CampaignPage/CampaignActionsContext.esm.js";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TableRowWithOwner as Ee}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const D=10,Ae=["name","status","owner"],be=({track:r,profileImageMap:a})=>{const c=u(()=>r.levels.reduce((p,P)=>p+(P.checks?.length??0),0),[r.levels]),o=B(ke),h=Ie(r);return t(Ee,{ownerEntityRef:r.ownerEntityRef,href:o({trackId:r.id}),menuActions:h,profileImageSrc:a[r.ownerEntityRef],name:r.name??r.id,description:r.description??"",documentationURL:r.documentationURL??void 0,cells:[{title:r.draft?"Draft":"Active"},{title:`${r.levels.length} Level${r.levels.length===1?"":"s"}`},{title:`${c} Check${c===1?"":"s"}`}]})},xe=ae(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ne=()=>{const r=xe(),[a,c]=ce(),[o,h]=T(()=>a.get("search")??""),[p,P]=T(()=>a.get("sortDirection")==="descending"?"descending":"ascending"),[l,H]=T(()=>{const e=a.get("sort");return e&&Ae.includes(e)?e:""}),v=u(()=>({routeName:"soundcheck-tracks"}),[]),{reportContentLoaded:C}=Pe(v),{reporter:M}=he(v),{data:L,isLoading:n}=de({types:["standard","playlist"]}),w=u(()=>L?.edges?.map(e=>e.node)??[],[L?.edges]),{profileImageMap:$}=ge(w.map(e=>e.ownerEntityRef)),I=z(_),y=we(w,o),f=u(()=>{if(!l)return y;const e=se(y,s=>l==="owner"?I.forEntity(s.ownerEntityRef).snapshot.primaryTitle.toLowerCase():l==="status"?s.draft?"draft":"active":s.name.toLowerCase());return p==="descending"&&e.reverse(),e},[I,l,p,y]),{paginatedItems:k,reset:E,paginationProps:i}=fe({pageParam:"perPage",defaultPageSize:D,items:f});pe(()=>{E();const e=new URLSearchParams(a.toString());o?e.set("search",o):e.delete("search"),c(e,{replace:!0})},300,[o]);const V=({direction:e,column:s})=>{const S=String(s);H(S),P(e),E();const g=new URLSearchParams(a);S?g.set("sort",S):g.delete("sort"),g.set("sortDirection",e),c(g,{replace:!0})},A=M?.getLCPValue();me(()=>{n||C({lcp:A})},[n,C,A]);const F=B(ye),{loading:b,allowed:x}=q({permission:ne}),O=z(le),{mutateAsync:j}=ue(),G=async e=>j(e),W=async()=>{const e=await O.getTracks({orderAlphabetical:"asc"});return Se(e.edges.map(s=>s.node))},J=!n&&!R(k),K=f.length>D,N=!n&&R(k),Q=n;let U=null;return N&&(U=o?t(Re,{title:"No tracks found",body:"Your current search term did not return any tracks. Please try a different search term."}):t(Te,{})),d(Y,{children:[t(X,{title:"Tracks",customActions:d(Z,{gap:"2",align:"center",children:[t(ve,{resourceType:"track",disableImport:!b&&!x,disableExport:n||R(w),onImport:G,onExport:W}),t(Ce,{searchValue:o,setSearchValue:h,canCreate:!b&&x,createHref:F()})]})}),d(ee,{className:r.container,children:[Q&&t(Le,{rowCount:10}),N&&U,J&&d(te,{onSortChange:V,sortDescriptor:{direction:p,column:l},children:[d(re,{children:[t(m,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"50%"},children:"Track Name"}),t(m,{allowsSorting:!0,id:"status",style:{width:"10%"},children:"Status"}),t(m,{id:"levels",style:{width:"10%"},children:"Levels"}),t(m,{id:"checks",style:{width:"10%"},children:"Checks"}),t(m,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Track Owner"}),t(m,{id:"actions",style:{width:"3%"}})]}),t(oe,{children:!n&&k.map(e=>t(be,{track:e,profileImageMap:$??{}},e.id))})]}),K&&t(ie,{totalCount:f.length,offset:i.offset,hasNextPage:i.offset+i.pageSize<(f.length??0),hasPreviousPage:i.offset>0,onNextPage:i.onNextPage,onPreviousPage:i.onPreviousPage,onPageSizeChange:i.onPageSizeChange,pageSize:i.pageSize})]})]})};export{Ne as TracksListPageBUI};
|
|
2
2
|
//# sourceMappingURL=TracksListPageBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as d}from"react/jsx-runtime";import{stringifyEntityRef as g}from"@backstage/catalog-model";import{useApi as a,identityApiRef as p}from"@backstage/core-plugin-api";import{catalogApiRef as y}from"@backstage/plugin-catalog-react";import{createContext as R,useState as E,useEffect as v,useContext as x}from"react";import
|
|
1
|
+
import{jsx as d}from"react/jsx-runtime";import{stringifyEntityRef as g}from"@backstage/catalog-model";import{useApi as a,identityApiRef as p}from"@backstage/core-plugin-api";import{catalogApiRef as y}from"@backstage/plugin-catalog-react";import{createContext as R,useState as E,useEffect as v,useContext as x}from"react";import A from"react-use/lib/useAsync";const f={loading:!0},l=R(f),C=()=>x(l),P=({children:u})=>{const[m,n]=E(f),s=a(y),t=a(p),{value:e,loading:r,error:o}=A(async()=>{const[{token:i},c]=await Promise.all([t.getCredentials(),t.getBackstageIdentity()]);return i?await s.getEntityByRef(c.userEntityRef):null},[s,t]);return v(()=>{if(e){const i=g(e);n({user:e,userEntityRef:i,loading:r,error:o})}else n({loading:r,error:o})},[e,r,o]),d(l.Provider,{value:m,children:u})};export{P as UserProvider,C as useLoggedInUser};
|
|
2
2
|
//# sourceMappingURL=UserProvider.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useApi as s}from"@backstage/core-plugin-api";import{useQueries as t}from"@tanstack/react-query";import{soundcheckApiRef as c}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";const m=e=>e!==void 0;function n(e){const o=s(c),i=[...new Set(e.filter(m))];return t({queries:i.map(r=>({queryKey:[u.Check,r],queryFn:async()=>o.getCheck(r),staleTime:300*1e3,refetchOnWindowFocus:!1}))})}export{n as useChecks};
|
|
2
|
+
//# sourceMappingURL=useChecks.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as
|
|
1
|
+
import{useApi as g,fetchApiRef as b,discoveryApiRef as q}from"@backstage/core-plugin-api";import B from"react-use/lib/useAsync";import{PULL_REQUEST_STATUS as f}from"../../components/ChecksTable/utils.esm.js";import{CheckerType as L}from"../../graphql/generated/index.esm.js";import{useRemediesForCheck as T}from"../remedy/useRemediesForCheck.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"react-use/lib/useAsyncRetry";import"../../api.esm.js";import{useFeatureFlag as R}from"../useFeatureFlag.esm.js";const S=t=>(t?.failed??0)>0,v=t=>t===L.Manual,C=(t,s)=>!!t&&!v(s);function F({isPortal:t,isPortalAiFm:s,type:u,rule:o,checkStatus:l}){return t&&s&&S(l)&&C(o,u)}const P=t=>t.toLowerCase().replace(/\s+/g,"-"),w=t=>`soundcheck-${P(t)}`,A=t=>`shifts/${P(t)}`,D=({type:t,rule:s,checkStatus:u,checkId:o,checkName:l})=>{const h=R("portal"),p=R("portal-ai-fm"),y=g(b),E=g(q),{value:a}=T(o);let r;a?.length&&a[0].shiftName?r=a[0].shiftName:r=w(l);const m=h&&p,{value:N}=B(async()=>{if(!m)return;const e=await E.getBaseUrl("fleetshift"),k=await y.fetch(`${e}/shifts/${encodeURIComponent(r)}`);if(k.ok)return k.json()},[r,m]),n=!!N,i=a?.filter(({prUrl:e})=>e).map(e=>({id:e.id,title:e.label,branch:e.prBranch??A(l),url:e.prUrl,component:e.component,owner:e.owner,status:e.prStatus,remedyStatus:e.status}))??[],U=i?.length,x=i?.filter(({status:e})=>e===f.MERGED).length,M=i?.filter(({status:e})=>e===f.CLOSED).length,$=i?.filter(({status:e})=>e===f.OPEN).length,d=F({isPortal:h,isPortalAiFm:p,type:t,rule:s,checkStatus:u,hasShift:n});let c;return d&&(n?c=`/fleetshift/shifts/${r}`:c=`/fleetshift/shifts/new?source=soundcheck.check.${o}`),{showFixMeButton:d,hasShift:n,href:c,pullRequests:i,pullRequestsCount:U,mergedPullRequestsCount:x,failedPullRequestsCount:M,openPullRequestsCount:$}};export{A as getBranchName,w as getShiftName,C as isCheckAutofixable,S as isCheckFailed,F as isFixMeEligible,D as useFixMe};
|
|
2
2
|
//# sourceMappingURL=useFixMe.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{PULL_REQUEST_STATUS as R}from"../../components/ChecksTable/utils.esm.js";import{ResultState as h,CheckerType as k}from"../../graphql/generated/index.esm.js";import{useFeatureFlag as e}from"../useFeatureFlag.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"react-use/lib/useAsyncRetry";import"@backstage/core-plugin-api";import"../../api.esm.js";import{useRemediesForEntity as y}from"../remedy/useRemediesForEntity.esm.js";const F=({result:r,type:i,rule:o,entityRef:p,checkId:m})=>{const u=e("portal"),a=e("portal-ai-fm"),l=r===h.Failed,s=i===k.Manual,f=u&&a&&l&&!!o&&!s,{value:n}=y({entityRef:p??"",checkId:m??""}),c=n?.filter(({prUrl:t})=>t)?.filter(t=>t.prStatus===R.OPEN)?.[0];return{showAikaButton:f,pullRequest:c}};export{F as useFixWithAika};
|
|
2
2
|
//# sourceMappingURL=useFixWithAika.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useMemo as c}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../graphqlKeys.esm.js";import{useAllGroups as d}from"./useAllGroups.esm.js";import{useUsersGroupClaims as f}from"./useUsersGroupClaims.esm.js";import"../useSoundcheckAlert.esm.js";import"../useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"
|
|
1
|
+
import{useMemo as c}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../graphqlKeys.esm.js";import{useAllGroups as d}from"./useAllGroups.esm.js";import{useUsersGroupClaims as f}from"./useUsersGroupClaims.esm.js";import"../useSoundcheckAlert.esm.js";import"../useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../components/ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react-use/lib/useAsyncRetry";const y=()=>{const{data:i,isLoading:m,isError:n}=f(),{data:t,isLoading:a,isError:u}=d();return{options:c(()=>{const o=new Map;return i&&i.forEach(({name:p,description:e,ref:r,type:s})=>{o.set(`${r}`,{name:p,description:e,ref:r,type:s,key:"My Groups"})}),t&&t.forEach(({name:p,description:e,ref:r,type:s})=>{o.has(`${r}`)||o.set(`${r}`,{name:p,description:e,ref:r,type:s,key:"All Groups"})}),[...o.values()]},[i,t]),isLoading:m||a,isError:n||u}};export{y as useGroupOptions};
|
|
2
2
|
//# sourceMappingURL=useGroupOptions.esm.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spotify/backstage-plugin-soundcheck",
|
|
3
3
|
"description": "Ensure quality, reliability and alignment of software development with codified checks and guidance.",
|
|
4
|
-
"version": "0.22.
|
|
4
|
+
"version": "0.22.5",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"homepage": "https://backstage.spotify.com",
|
|
7
7
|
"main": "./dist/index.esm.js",
|