@spotify/backstage-plugin-soundcheck 0.20.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/alpha/integrations.esm.js +1 -1
  3. package/dist/alpha/pages.esm.js +1 -1
  4. package/dist/alpha.d.ts +68 -23
  5. package/dist/api.esm.js +1 -1
  6. package/dist/blueprints/CampaignActionBlueprint.esm.js +2 -0
  7. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  8. package/dist/components/AccordionSection/AccordionSection.esm.js +2 -0
  9. package/dist/components/Alert/Alert.esm.js +2 -0
  10. package/dist/components/CampaignPage/CampaignActionsContext.esm.js +2 -0
  11. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
  12. package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
  13. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  14. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  15. package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
  16. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +1 -1
  17. package/dist/components/CheckPage/CheckPageBUI.esm.js +1 -1
  18. package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +1 -1
  19. package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +1 -1
  20. package/dist/components/CheckTemplatesPage/TemplateCategoryBUI.esm.js +1 -1
  21. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
  22. package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
  23. package/dist/components/CollectorPage/CollectorFactTableBUI.esm.js +1 -1
  24. package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
  25. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  26. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  27. package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
  28. package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +1 -1
  29. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
  30. package/dist/components/CreateNewTrackPage/CreateNewTrackPage.esm.js +2 -0
  31. package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +1 -1
  32. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  33. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  34. package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +1 -1
  35. package/dist/components/FilterSidebar/util.esm.js +1 -1
  36. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  37. package/dist/components/GroupSelectorBUI/GroupSelectorBUI.esm.js +1 -1
  38. package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
  39. package/dist/components/Loading/Loading.esm.js +2 -0
  40. package/dist/components/Menus/useCampaignActions.esm.js +1 -1
  41. package/dist/components/RoutingPage/RoutingPageBUI.esm.js +1 -1
  42. package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +1 -1
  43. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js +1 -1
  44. package/dist/components/Stepper/Stepper.esm.js +2 -0
  45. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
  46. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
  47. package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +1 -1
  48. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
  49. package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +1 -1
  50. package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +1 -1
  51. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
  52. package/dist/components/TrackBuilderPage/TrackBuilderPage.esm.js +2 -0
  53. package/dist/components/TrackBuilderPage/components/CheckItem/CheckItem.esm.js +2 -0
  54. package/dist/components/TrackBuilderPage/components/IntegrationTags/IntegrationTags.esm.js +2 -0
  55. package/dist/components/TrackBuilderPage/components/RunChecksStep/RunChecksStep.esm.js +2 -0
  56. package/dist/components/TrackBuilderPage/components/SelectProviderStep/SelectProviderStep.esm.js +2 -0
  57. package/dist/components/TrackBuilderPage/components/SelectTracksStep/SelectTracksStep.esm.js +2 -0
  58. package/dist/components/TrackBuilderPage/components/TrackAccordion/TrackAccordion.esm.js +2 -0
  59. package/dist/components/TrackBuilderPage/components/TrackBuilderStatus/TrackBuilderStatus.esm.js +2 -0
  60. package/dist/components/TrackBuilderPage/hooks/useTrackBuilderStatus.esm.js +2 -0
  61. package/dist/components/TrackBuilderPage/hooks/useTrackCheckExecutions.esm.js +2 -0
  62. package/dist/components/TrackBuilderPage/utils.esm.js +4 -0
  63. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
  64. package/dist/components/TrackPage/TrackHistoryChartBUI.esm.js +1 -1
  65. package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
  66. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
  67. package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
  68. package/dist/graphql/generated/index.esm.js +163 -84
  69. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  70. package/dist/hooks/filters/useFilters.esm.js +1 -1
  71. package/dist/hooks/graphqlKeys.esm.js +1 -1
  72. package/dist/hooks/tracks/useDeleteTrack.esm.js +1 -1
  73. package/dist/hooks/tracks/useOutOfBoxTracks.esm.js +2 -0
  74. package/dist/hooks/tracks/useSaveOutOfBoxTracks.esm.js +2 -0
  75. package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
  76. package/dist/index.d.ts +30 -2
  77. package/dist/index.esm.js +1 -1
  78. package/dist/routes.esm.js +1 -1
  79. package/dist/utils/facetFilters/utils.esm.js +2 -0
  80. package/package.json +25 -25
  81. package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +0 -2
  82. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +0 -2
  83. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +0 -2
  84. package/dist/components/TechHealth/Filters/Filters.esm.js +0 -2
  85. package/dist/components/TechHealth/Filters/FiltersHeader.esm.js +0 -2
  86. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +0 -2
  87. package/dist/components/TechHealth/Filters/NumberOfDaysFilter.esm.js +0 -2
  88. package/dist/components/TechHealth/Filters/utils.esm.js +0 -2
  89. package/dist/components/TechHealth/Loading/Loading.esm.js +0 -2
  90. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +0 -2
  91. /package/dist/{components/TechHealth/Filters → utils/facetFilters}/types.esm.js +0 -0
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as h,Fragment as pe}from"react/jsx-runtime";import{stringifyEntityRef as $,parseEntityRef as ge,RELATION_OWNED_BY as me,RELATION_PART_OF as ue}from"@backstage/catalog-model";import{useRouteRef as ye}from"@backstage/core-plugin-api";import{entityRouteRef as he,getEntityRelations as q,humanizeEntityRef as N}from"@backstage/plugin-catalog-react";import{Table as we,TableHeader as Se,Column as f,TableBody as ke,TablePagination as Pe,Row as Ie,Flex as J,CellText as T,Box as Q,Text as Re,CellProfile as Ee}from"@backstage/ui";import{makeStyles as Te}from"@material-ui/core";import{compact as Ce,uniq as Be}from"lodash";import{useState as z,useMemo as o,useEffect as W,useCallback as A}from"react";import{useNavigate as be}from"react-router-dom";import{TrackEntityField as c,Direction as l}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as ve}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useProfileImages as xe}from"../../../hooks/catalog/useProfileImages.esm.js";import{useTrackEntities as De}from"../../../hooks/entities/useTrackEntities.esm.js";import{useSortSearchParams as Ne}from"../../../hooks/useSortSearchParams.esm.js";import{getPercentage as P}from"../../../utils/formatters.esm.js";import{getTrackStatusTotal as ze}from"../../../utils/tracks.esm.js";import{CertificationBadge as Ae}from"../../Badges/CertificationBadge.esm.js";import{CustomCell as X}from"../../CustomCell/CustomCell.esm.js";import"../../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as Le}from"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../routes.esm.js";import{LoadingTableSkeleton as Oe}from"../../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{StatusBar as Fe}from"../../StatusBar/StatusBar.esm.js";import{toTrackEntityRow as Ke}from"./utils.esm.js";const Y=10,Z=p=>{const{lifecycles:g,owners:m,types:u,systems:y}=p,w=g?.length?{"spec.lifecycle":g}:void 0,C=m?.length?{"relations.ownedBy":m}:void 0,I=u?.length?{"spec.type":u}:void 0,R=y?.length?{"relations.partOf":y}:void 0;return{...w,...C,...I,...R}},_e=Te(()=>({tableContainer:{display:"flex",flexDirection:"column",height:"100%"},statusPercent:{width:"var(--bui-space-12)"},statusBar:{width:"100%"}})),L={name:c.Name,owner:c.Owner,certificationLevel:c.CertificationLevel,checkPassRate:c.CheckPassRate,system:c.System,type:c.Type,lifecycle:c.Lifecycle},je=({track:p,lifecycles:g,owners:m,types:u,systems:y,certificationStatus:w,isCampaign:C})=>{const I=_e(),R=be(),{updateSortParams:O,searchParams:S}=Ne(),F=ye(he),[B,K]=z(()=>{const e=S.get("sortDirection");return e==="ascending"?l.Asc:e==="descending"?l.Desc:l.Asc}),[E,_]=z(()=>{const e=S.get("sort");return e&&L[e]?e:"name"}),G=B===l.Asc?"ascending":"descending",[r,b]=z({orderBy:{field:c.CheckPassRate,direction:l.Desc},filter:Z({lifecycles:g,owners:m,types:u,systems:y}),pageInfo:{page:0,pageSize:Y,direction:"forward",cursor:null}}),{data:d,isLoading:V}=De({trackId:p?.id??"",orderBy:r.orderBy,filter:r.filter,[r.pageInfo.direction==="forward"?"first":"last"]:r.pageInfo.pageSize,[r.pageInfo.direction==="forward"?"after":"before"]:r.pageInfo.cursor,certificationStatus:w}),k=o(()=>d?.trackEntities.edges??[],[d]),ee=o(()=>d?.trackEntities.totalCount??0,[d])>Y,te=k.map(e=>e.node.entityRef)??[],{data:v,isLoading:ie}=ve({entityRefs:te}),j=o(()=>!p||!k?.length||!v?.items?.length?[]:Ce(k.map(e=>{const i=v.items.find(n=>!!n&&$(n)===e.node.entityRef);return i?Ke({trackDetails:e.node,track:p,entity:i}):void 0})),[k,v?.items,p]),re=Be(j.flatMap(e=>e.entity.relations?.filter(({type:i,targetRef:n})=>i==="ownedBy"&&n).map(i=>i.targetRef)||[])),{profileImageMap:ne}=xe(re);W(()=>{const e=S.get("sortDirection");(e==="ascending"||e==="descending")&&K(e==="ascending"?l.Asc:l.Desc);const i=S.get("sort");i&&L[i]&&_(i)},[S]),W(()=>{let e;E?e={field:L[E]??c.Name,direction:B}:e=void 0,b(i=>({...i,pageInfo:{...i.pageInfo,page:0,cursor:null},orderBy:e,filter:Z({lifecycles:g,owners:m,types:u,systems:y}),certificationStatus:w}))},[b,E,B,w,g,m,y,u]);const ae=A(e=>{const i=ge($(e)),n=F(i);R(`${n}/soundcheck`)},[R,F]),x=A((e,i)=>{const n=e>r.pageInfo.page?"forward":"backward",D=n==="forward"?d?.trackEntities.pageInfo.endCursor??null:d?.trackEntities.pageInfo.startCursor??null;b({...r,pageInfo:{page:e,pageSize:i,direction:n,cursor:D}})},[d,r]),se=A(({direction:e,column:i})=>{_(String(i)),K(e==="ascending"?l.Desc:l.Asc),O({sort:String(i),sortDirection:e})},[O]),oe=({row:e})=>{const i=q(e.entity,me).map(s=>N(s,{defaultKind:s.kind})).join(", "),n=e.entity.relations?.find(({type:s})=>s==="ownedBy")?.targetRef,D=q(e.entity,ue,{kind:"system"}).map(s=>N(s,{defaultKind:"system"})).join(", ");let M;n&&(M=ne?.[n]);const H=N(e.entity,{defaultKind:e.entity.kind}),a=o(()=>ze(e.status),[e.status]),U=o(()=>{let s;return e.status?.allPassPercentage!==null&&e.status?.allPassPercentage!==void 0?s=e.status.allPassPercentage:e.status&&(s=P(e.status.passed+e.status.exempt,a)),s},[e.status,a]),ce=o(()=>P(e.status?.failed,a),[e.status,a]),le=o(()=>P(e.status?.warning,a),[e.status,a]),de=o(()=>P(e.status?.notReported,a),[e.status,a]),fe=o(()=>P(e.status?.error,a),[e.status,a]);return h(Ie,{onAction:()=>ae(e.entity),children:[t(X,{children:t(J,{children:t(Ae,{badge:e.badge,trackType:C?"campaign":void 0})})}),t(T,{title:H}),t(X,{children:h(J,{align:"center",gap:"2",children:[t(Q,{className:I.statusPercent,children:h(Re,{children:[U,"%"]})}),t(Q,{className:I.statusBar,children:t(Fe,{passedPercent:U,failedPercent:ce,warningPercent:le,notReportedPercent:de,errorPercent:fe})})]})}),t(T,{title:D}),t(T,{title:e.entity.spec?.type}),t(T,{title:e.entity.spec?.lifecycle}),t(Ee,{name:i,src:M??H})]},e.id)};return V||ie?t(Oe,{}):k.length?h(pe,{children:[h(we,{onSortChange:se,sortDescriptor:{direction:G,column:E},children:[h(Se,{children:[t(f,{id:"state",style:{width:"5%"}}),t(f,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"25%"},children:"Name"}),t(f,{id:"checkPassRate",style:{width:"15%"},children:"Checks"}),t(f,{id:"system",allowsSorting:!0,style:{width:"20%"},children:"System"}),t(f,{id:"type",allowsSorting:!0,style:{width:"10%"},children:"Type"}),t(f,{id:"lifecycle",allowsSorting:!0,style:{width:"10%"},children:"Lifecycle"}),t(f,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Owner"})]}),t(ke,{children:j.map(e=>t(oe,{row:e},e.id))})]}),ee&&t(Pe,{showPageSizeOptions:!0,tabIndex:r.pageInfo.page,pageSize:r.pageInfo.pageSize,rowCount:d?.trackEntities.totalCount,offset:r.pageInfo.page*r.pageInfo.pageSize,onPreviousPage:()=>{const e=r.pageInfo.page-1;x(e,r.pageInfo.pageSize)},onNextPage:()=>{const e=r.pageInfo.page+1;x(e,r.pageInfo.pageSize)},onPageSizeChange:e=>{x(r.pageInfo.page,e)}})]}):t(Le,{title:"No track entities found",body:"There are no track entities found."})};export{je as TrackEntitiesTableBUI};
1
+ import{jsx as t,jsxs as h,Fragment as fe}from"react/jsx-runtime";import{stringifyEntityRef as z,parseEntityRef as ge,RELATION_OWNED_BY as me,RELATION_PART_OF as ue}from"@backstage/catalog-model";import{useRouteRef as ye}from"@backstage/core-plugin-api";import{entityRouteRef as he,useEntityPresentation as we,getEntityRelations as U,humanizeEntityRef as Q}from"@backstage/plugin-catalog-react";import{TableRoot as Pe,TableHeader as Se,Column as p,TableBody as ke,TablePagination as Re,Row as Ie,Flex as $,CellText as C,Box as q,Text as Ee,CellProfile as Te}from"@backstage/ui";import{makeStyles as Ce}from"@material-ui/core";import{compact as Be,uniq as be}from"lodash";import{useState as N,useMemo as c,useEffect as J,useCallback as A}from"react";import{useNavigate as ve}from"react-router-dom";import{TrackEntityField as l,Direction as d}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as xe}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useProfileImages as De}from"../../../hooks/catalog/useProfileImages.esm.js";import{useTrackEntities as ze}from"../../../hooks/entities/useTrackEntities.esm.js";import{useSortSearchParams as Ne}from"../../../hooks/useSortSearchParams.esm.js";import{getPercentage as k}from"../../../utils/formatters.esm.js";import{getTrackStatusTotal as Ae}from"../../../utils/tracks.esm.js";import{CertificationBadge as Le}from"../../Badges/CertificationBadge.esm.js";import{CustomCell as W}from"../../CustomCell/CustomCell.esm.js";import"../../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as Oe}from"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../routes.esm.js";import{LoadingTableSkeleton as Fe}from"../../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{StatusBar as _e}from"../../StatusBar/StatusBar.esm.js";import{toTrackEntityRow as je}from"./utils.esm.js";const X=10,Y=f=>{const{lifecycles:g,owners:m,types:u,systems:y}=f,w=g?.length?{"spec.lifecycle":g}:void 0,B=m?.length?{"relations.ownedBy":m}:void 0,R=u?.length?{"spec.type":u}:void 0,I=y?.length?{"relations.partOf":y}:void 0;return{...w,...B,...R,...I}},Me=Ce(()=>({tableContainer:{display:"flex",flexDirection:"column",height:"100%"},statusPercent:{width:"var(--bui-space-12)"},statusBar:{width:"100%"}})),L={name:l.Name,owner:l.Owner,certificationLevel:l.CertificationLevel,checkPassRate:l.CheckPassRate,system:l.System,type:l.Type,lifecycle:l.Lifecycle},He=({track:f,lifecycles:g,owners:m,types:u,systems:y,certificationStatus:w,isCampaign:B})=>{const R=Me(),I=ve(),{updateSortParams:O,searchParams:P}=Ne(),F=ye(he),[b,_]=N(()=>{const e=P.get("sortDirection");return e==="ascending"?d.Asc:e==="descending"?d.Desc:d.Asc}),[E,j]=N(()=>{const e=P.get("sort");return e&&L[e]?e:"name"}),Z=b===d.Asc?"ascending":"descending",[r,v]=N({orderBy:{field:l.CheckPassRate,direction:d.Desc},filter:Y({lifecycles:g,owners:m,types:u,systems:y}),pageInfo:{page:0,pageSize:X,direction:"forward",cursor:null}}),{data:s,isLoading:G}=ze({trackId:f?.id??"",orderBy:r.orderBy,filter:r.filter,[r.pageInfo.direction==="forward"?"first":"last"]:r.pageInfo.pageSize,[r.pageInfo.direction==="forward"?"after":"before"]:r.pageInfo.cursor,certificationStatus:w}),S=c(()=>s?.trackEntities.edges??[],[s]),V=c(()=>s?.trackEntities.totalCount??0,[s])>X,ee=S.map(e=>e.node.entityRef)??[],{data:x,isLoading:te}=xe({entityRefs:ee}),M=c(()=>!f||!S?.length||!x?.items?.length?[]:Be(S.map(e=>{const i=x.items.find(a=>!!a&&z(a)===e.node.entityRef);return i?je({trackDetails:e.node,track:f,entity:i}):void 0})),[S,x?.items,f]),ie=be(M.flatMap(e=>e.entity.relations?.filter(({type:i,targetRef:a})=>i==="ownedBy"&&a).map(i=>i.targetRef)||[])),{profileImageMap:re}=De(ie);J(()=>{const e=P.get("sortDirection");(e==="ascending"||e==="descending")&&_(e==="ascending"?d.Asc:d.Desc);const i=P.get("sort");i&&L[i]&&j(i)},[P]),J(()=>{let e;E?e={field:L[E]??l.Name,direction:b}:e=void 0,v(i=>({...i,pageInfo:{...i.pageInfo,page:0,cursor:null},orderBy:e,filter:Y({lifecycles:g,owners:m,types:u,systems:y}),certificationStatus:w}))},[v,E,b,w,g,m,y,u]);const ae=A(e=>{const i=ge(z(e)),a=F(i);I(`${a}/soundcheck`)},[I,F]),D=A((e,i)=>{const a=e>r.pageInfo.page?"forward":"backward",T=a==="forward"?s?.trackEntities.pageInfo.endCursor??null:s?.trackEntities.pageInfo.startCursor??null;v({...r,pageInfo:{page:e,pageSize:i,direction:a,cursor:T}})},[s,r]),ne=A(({direction:e,column:i})=>{j(String(i)),_(e==="ascending"?d.Desc:d.Asc),O({sort:String(i),sortDirection:e})},[O]),oe=({row:e})=>{const{primaryTitle:i}=we(z(e.entity)),a=U(e.entity,me).map(o=>Q(o,{defaultKind:o.kind})).join(", "),T=e.entity.relations?.find(({type:o})=>o==="ownedBy")?.targetRef,se=U(e.entity,ue,{kind:"system"}).map(o=>Q(o,{defaultKind:"system"})).join(", ");let H;T&&(H=re?.[T]);const n=c(()=>Ae(e.status),[e.status]),K=c(()=>{let o;return e.status?.allPassPercentage!==null&&e.status?.allPassPercentage!==void 0?o=e.status.allPassPercentage:e.status&&(o=k(e.status.passed+e.status.exempt,n)),o},[e.status,n]),ce=c(()=>k(e.status?.failed,n),[e.status,n]),le=c(()=>k(e.status?.warning,n),[e.status,n]),de=c(()=>k(e.status?.notReported,n),[e.status,n]),pe=c(()=>k(e.status?.error,n),[e.status,n]);return h(Ie,{onAction:()=>ae(e.entity),children:[t(W,{children:t($,{children:t(Le,{badge:e.badge,trackType:B?"campaign":void 0})})}),t(C,{title:i}),t(W,{children:h($,{align:"center",gap:"2",children:[t(q,{className:R.statusPercent,children:h(Ee,{children:[K,"%"]})}),t(q,{className:R.statusBar,children:t(_e,{passedPercent:K,failedPercent:ce,warningPercent:le,notReportedPercent:de,errorPercent:pe})})]})}),t(C,{title:se}),t(C,{title:e.entity.spec?.type}),t(C,{title:e.entity.spec?.lifecycle}),t(Te,{name:a,src:H??i})]},e.id)};return G||te?t(Fe,{}):S.length?h(fe,{children:[h(Pe,{onSortChange:ne,sortDescriptor:{direction:Z,column:E},children:[h(Se,{children:[t(p,{id:"state",style:{width:"5%"}}),t(p,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"25%"},children:"Name"}),t(p,{id:"checkPassRate",style:{width:"15%"},children:"Checks"}),t(p,{id:"system",allowsSorting:!0,style:{width:"20%"},children:"System"}),t(p,{id:"type",allowsSorting:!0,style:{width:"10%"},children:"Type"}),t(p,{id:"lifecycle",allowsSorting:!0,style:{width:"10%"},children:"Lifecycle"}),t(p,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Owner"})]}),t(ke,{children:M.map(e=>t(oe,{row:e},e.id))})]}),V&&t(Re,{showPageSizeOptions:!0,totalCount:s?.trackEntities.totalCount,pageSize:r.pageInfo.pageSize,offset:r.pageInfo.page*r.pageInfo.pageSize,onPreviousPage:()=>{const e=r.pageInfo.page-1;D(e,r.pageInfo.pageSize)},onNextPage:()=>{const e=r.pageInfo.page+1;D(e,r.pageInfo.pageSize)},onPageSizeChange:e=>{D(r.pageInfo.page,e)},hasNextPage:(r.pageInfo.page+1)*r.pageInfo.pageSize<(s?.trackEntities.totalCount??0),hasPreviousPage:r.pageInfo.page>0})]}):t(Oe,{title:"No track entities found",body:"There are no track entities found."})};export{He as TrackEntitiesTableBUI};
2
2
  //# sourceMappingURL=TrackEntitiesTableBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i,jsxs as e}from"react/jsx-runtime";import{Box as m}from"@backstage/ui";import{makeStyles as f,useTheme as p}from"@material-ui/core";import{ResponsiveContainer as g,AreaChart as h,CartesianGrid as b,XAxis as v,YAxis as n,Tooltip as y,Area as s}from"recharts";import{compactNumberFormatter as u}from"../../utils/formatters.esm.js";import{getTrackHistoryLineChartData as k,getChartColors as x,formatTrackHistoryChartTooltip as L}from"../Charts/chartUtils.esm.js";import{LoadingTableSkeleton as A}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";const C=f(()=>({container:{height:180,overflow:"hidden"},"@global":{".recharts-default-tooltip li":{margin:"0 !important",padding:"0 !important"}}})),I=({track:a,history:o})=>{const l=C(),d=k(o),c=p(),t=x(c);return!a||!o?i(A,{}):i(m,{className:l.container,children:i(g,{debounce:1,children:e(h,{data:d,margin:{top:0,right:0,bottom:0,left:0},children:[e("defs",{children:[a?.levels.map(r=>e("linearGradient",{id:`gradient-${r.ordinal}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[i("stop",{offset:"5%",stopColor:t[r.ordinal%t.length],stopOpacity:.4}),i("stop",{offset:"95%",stopColor:t[r.ordinal%t.length],stopOpacity:0})]},`gradient-${r.ordinal}`)),e("linearGradient",{id:"gradient-no-level",x1:"0",y1:"0",x2:"0",y2:"1",children:[i("stop",{offset:"5%",stopColor:"var(--bui-fg-disabled)",stopOpacity:.4}),i("stop",{offset:"95%",stopColor:"var(--bui-fg-disabled)",stopOpacity:0})]})]}),i(b,{stroke:"var(--bui-border)",strokeWidth:1,horizontal:!0,vertical:!1}),i(v,{dataKey:"name",tickLine:!1,axisLine:!1}),i(n,{yAxisId:"left",domain:[0,100],axisLine:!1,tickLine:!1,tickFormatter:r=>`${r}%`,ticks:[0,25,50,75,100]}),i(n,{yAxisId:"right",orientation:"right",domain:[0,Math.max(o?.certificationStatusHistory.numberOfEntities,1)],axisLine:!1,tickLine:!1,tickFormatter:r=>u(r)}),i(y,{contentStyle:{backgroundColor:"var(--bui-bg-surface-1)",color:"var(--bui-fg-secondary)",border:"1px solid var(--bui-border)",borderRadius:"var(--bui-radius-3)"},cursor:{stroke:"var(--bui-fg-secondary)",strokeWidth:1},formatter:r=>L(r,o)}),a?.levels?.map(r=>i(s,{type:"monotone",dataKey:`Level ${r.ordinal}`,name:r.name??`Level ${r.ordinal}`,stackId:"1",yAxisId:"right",stroke:t[r.ordinal%t.length]||"var(--bui-fg-disabled)",strokeWidth:2,fill:`url(#gradient-${r.ordinal})`,isAnimationActive:!1,activeDot:{fill:t[r.ordinal%t.length]||"var(--bui-fg-disabled)",stroke:"var(--bui-fg-secondary)",strokeWidth:1,r:5}},`Level ${r.ordinal}`)),i(s,{type:"monotone",dataKey:"No Level",name:"No Level",stackId:"1",yAxisId:"right",stroke:"var(--bui-fg-secondary)",strokeWidth:2,fill:"url(#gradient-no-level)",isAnimationActive:!1,activeDot:{fill:"var(--bui-fg-disabled)",stroke:"var(--bui-fg-secondary)",strokeWidth:1,r:5}},"No Level")]})})})};export{I as TrackHistoryChartBUI};
1
+ import{jsx as o,jsxs as e}from"react/jsx-runtime";import{Box as m}from"@backstage/ui";import{makeStyles as p,useTheme as f}from"@material-ui/core";import{ResponsiveContainer as g,AreaChart as h,CartesianGrid as v,XAxis as b,YAxis as n,Tooltip as y,Area as s}from"recharts";import{compactNumberFormatter as k}from"../../utils/formatters.esm.js";import{getTrackHistoryLineChartData as u,getChartColors as x,formatTrackHistoryChartTooltip as L}from"../Charts/chartUtils.esm.js";import{LoadingTableSkeleton as A}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";const C=p(()=>({container:{height:180,overflow:"hidden"},"@global":{".recharts-default-tooltip li":{margin:"0 !important",padding:"0 !important"}}})),I=({track:a,history:i})=>{const l=C(),d=u(i),c=f(),t=x(c);return!a||!i?o(A,{}):o(m,{className:l.container,children:o(g,{debounce:1,children:e(h,{data:d,margin:{top:0,right:0,bottom:0,left:0},children:[e("defs",{children:[a?.levels.map(r=>e("linearGradient",{id:`gradient-${r.ordinal}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[o("stop",{offset:"5%",stopColor:t[r.ordinal%t.length],stopOpacity:.4}),o("stop",{offset:"95%",stopColor:t[r.ordinal%t.length],stopOpacity:0})]},`gradient-${r.ordinal}`)),e("linearGradient",{id:"gradient-no-level",x1:"0",y1:"0",x2:"0",y2:"1",children:[o("stop",{offset:"5%",stopColor:"var(--bui-fg-disabled)",stopOpacity:.4}),o("stop",{offset:"95%",stopColor:"var(--bui-fg-disabled)",stopOpacity:0})]})]}),o(v,{stroke:"var(--bui-border)",strokeWidth:1,horizontal:!0,vertical:!1}),o(b,{dataKey:"name",tickLine:!1,axisLine:!1}),o(n,{yAxisId:"left",domain:[0,100],axisLine:!1,tickLine:!1,tickFormatter:r=>`${r}%`,ticks:[0,25,50,75,100]}),o(n,{yAxisId:"right",orientation:"right",domain:[0,Math.max(i?.certificationStatusHistory.numberOfEntities,1)],axisLine:!1,tickLine:!1,tickFormatter:r=>k(r)}),o(y,{contentStyle:{backgroundColor:"var(--bui-bg-popover)",color:"var(--bui-fg-secondary)",border:"1px solid var(--bui-border)",borderRadius:"var(--bui-radius-3)"},cursor:{stroke:"var(--bui-fg-secondary)",strokeWidth:1},formatter:r=>L(r,i)}),a?.levels?.map(r=>o(s,{type:"monotone",dataKey:`Level ${r.ordinal}`,name:r.name??`Level ${r.ordinal}`,stackId:"1",yAxisId:"right",stroke:t[r.ordinal%t.length]||"var(--bui-fg-disabled)",strokeWidth:2,fill:`url(#gradient-${r.ordinal})`,isAnimationActive:!1,activeDot:{fill:t[r.ordinal%t.length]||"var(--bui-fg-disabled)",stroke:"var(--bui-fg-secondary)",strokeWidth:1,r:5}},`Level ${r.ordinal}`)),o(s,{type:"monotone",dataKey:"No Level",name:"No Level",stackId:"1",yAxisId:"right",stroke:"var(--bui-fg-secondary)",strokeWidth:2,fill:"url(#gradient-no-level)",isAnimationActive:!1,activeDot:{fill:"var(--bui-fg-disabled)",stroke:"var(--bui-fg-secondary)",strokeWidth:1,r:5}},"No Level")]})})})};export{I as TrackHistoryChartBUI};
2
2
  //# sourceMappingURL=TrackHistoryChartBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as a,Fragment as he}from"react/jsx-runtime";import{parseEntityRef as ke}from"@backstage/catalog-model";import{useRouteRef as O}from"@backstage/core-plugin-api";import{usePermission as ge}from"@backstage/plugin-permission-react";import{Container as E,HeaderPage as Se,Box as u,Flex as U,Text as M}from"@backstage/ui";import{makeStyles as be}from"@material-ui/core";import{toEntityFilterQuery as Ee,soundcheckTrackReadPermission as ve}from"@spotify/backstage-plugin-soundcheck-common";import{useState as v,useMemo as C,useEffect as Y}from"react";import{useSearchParams as Ce,useParams as ye}from"react-router-dom";import Te from"react-use/lib/useDebounce";import Le from"react-use/lib/useLocalStorage";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useTrack as Ie}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as we}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as Re}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useCheckStatuses as Ne}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useFilters as Be}from"../../hooks/filters/useFilters.esm.js";import{useLCPReporting as Fe}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Oe}from"../../hooks/useLoadTimeReporting.esm.js";import{tracksPageRouteRef as Pe,trackOverviewRouteRef as _e,trackExplorerRouteRef as xe}from"../../routes.esm.js";import{getEntitiesBucket as He,getChecksBucket as Ae}from"../../utils/helpers.esm.js";import{DescriptionCard as Ve}from"../Cards/DescriptionCard/DescriptionCard.esm.js";import{HistoricalTrackStatusCard as je}from"../Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js";import{TrackStatusCard as Ke}from"../Cards/TrackStatusCard/TrackStatusCard.esm.js";import{ChecksTable as De}from"../ChecksTable/ChecksTable.esm.js";import{ChipSelector as Ue}from"../ChipSelector/ChipSelector.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as $}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Me}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as Ye}from"../FilterSidebar/util.esm.js";import{LoadingTableSkeleton as $e}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as qe}from"../Menus/SimpleMenu.esm.js";import"js-yaml";import"lodash";import{useTrackActions as Ge}from"../Menus/useTrackActions.esm.js";import"uuid";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{PageCustomActions as Qe}from"../PageCustomActions/PageCustomActions.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"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{parseNumberOfDays as Je}from"../TechHealth/Filters/utils.esm.js";import{TopFailingChecksTableBUI as We}from"../TopFailingChecksTable/TopFailingChecksTableBUI.esm.js";import{TrackEntitiesTableBUI as ze}from"./TrackEntitiesTable/TrackEntitiesTableBUI.esm.js";const Xe=be(()=>({container:{marginBottom:"var(--bui-space-12)"},cards:{margin:"0 0 var(--bui-space-12)",display:"flex",gridGap:"var(--bui-space-4)"},tableContent:{margin:"var(--bui-space-3) 0 0"},levelSection:{margin:"0 0 var(--bui-space-6)"},levelHeading:{padding:"var(--bui-space-3)",background:"var(--bui-bg-surface-2)"}})),n={CHECKS_BY_LEVELS:"Checks By Levels",TOP_FAILING_CHECKS:"Top Failing Checks",ENTITIES:"Entities"},Ze=()=>{const s=Xe(),[o,y]=Ce(),[P,q]=v(new Set([n.CHECKS_BY_LEVELS])),k=P.values().next().value??n.CHECKS_BY_LEVELS,[c,_]=v(o.get("search")||""),[x,G]=v(""),{trackId:i}=ye(),{data:t,isLoading:m,isError:Q}=Ie(i),J=O(Pe),H=Ge(t??void 0),A=t?.ownerEntityRef,W=A?ke(A).name:void 0,z=Array.from(new Set(t?.levels.flatMap(e=>e.checks).map(e=>e.id)??[])),{owners:l,lifecycles:p,types:d,systems:f}=Me(),T=C(()=>Ye({lifecycles:p,owners:l,types:d,systems:f}),[p,l,d,f]),L=C(()=>Je(o.get("numberOfDays")),[o]),[g,V]=v(!1),[I,w]=Le("track-overview-search-params","");Y(()=>{!g&&o?.toString()?(I!==o.toString()&&w(o.toString()),V(!0)):g?g&&I!==o.toString()&&w(o.toString()):V(!0)},[o,y,w,I,g]),Te(()=>{G(c);const e=new URLSearchParams(o.toString());c?e.set("search",c):e.delete("search"),y(e,{replace:!0})},300,[c]);const j=C(()=>({routeName:"soundcheck-track-insights",additionalAttributes:{trackId:i||"",filtersApplied:l.length+p.length+d.length+f.length,ownersFilter:l.join(",")||"",lifecyclesFilter:p.join(",")||"",typesFilter:d.join(",")||"",systemsFilter:f.join(",")||"",numberOfDays:L,tracksSearch:x||""}}),[i,l,p,d,f,L,x]),{reportContentLoaded:K}=Oe(j),{reporter:X}=Fe(j),Z=e=>{q(e),_(""),y({},{replace:!0})},{data:S,isLoading:R,isError:ee}=we({trackId:i,filter:T},!!i),{data:re,isLoading:N,isError:te}=Re({trackId:i,filter:T,numberOfDays:L},!!i),{data:b,isLoading:B}=Ne({trackId:i,checkIds:z,filter:T},!!t),ie=C(()=>Ee(t?.filter),[t]),F=Q||ee||te,{loading:oe,allowed:ae}=ge({permission:ve,resourceRef:i}),{filters:se,selected:ce,setSelected:ne,onRemoveTag:me,selectedTags:le}=Be({entityFilterQuery:ie}),pe=t?.levels.flatMap(e=>{const h=c?.trim().toLowerCase();return{...e,checks:h?e.checks.filter(({name:ue})=>ue.toLowerCase().includes(h)):e.checks}})??[],D=X?.getLCPValue();Y(()=>{if(!m&&!B&&!R&&!N){const e=S?.certificationStatus?.numberOfEntities??0,h=b?.length??0;K({lcp:D,numberOfEntities:e,entitiesBucket:He(e),numberOfChecks:h,checksBucket:Ae(h)})}},[m,B,R,N,b,S,K,D]);const de=O(_e),fe=O(xe);return m?r(E,{className:s.container,children:r($e,{})}):!m&&!t?r(E,{className:s.container,children:r($,{title:"Track not found",body:`There is no track with the requested id: ${i}.`})}):!oe&&!ae?r(E,{className:s.container,children:r($,{title:"Cannot view track",body:`No permission to view track with the requested id: ${i}.`})}):a(he,{children:[r(Se,{title:t?.name,customActions:r(qe,{label:"Track Actions",disabled:!H.length,placement:"left top",menuActions:H}),breadcrumbs:[{label:"Tracks",href:J()}],tabs:[{id:"overview",label:"Track Overview",href:i?de({trackId:i}):""},{id:"explorer",label:"Tech Insights Explorer",href:i?fe({trackId:i}):""}]}),a(E,{className:s.container,children:[a(u,{className:s.cards,children:[r(Ve,{description:t?.description??void 0,owner:W,isError:F,isLoading:m}),r(Ke,{track:t??void 0,status:S,isError:F,isLoading:R}),r(je,{track:t??void 0,history:re,isError:F,isLoading:N})]}),t&&a(u,{children:[a(U,{justify:"between",children:[r(u,{minWidth:"18rem",children:r(Ue,{options:Object.values(n),selected:P,ariaLabel:"Sections",onSelectionChange:Z})}),r(Qe,{searchValue:c,setSearchValue:e=>_(e),filters:se,selected:ce,setSelected:ne,onRemoveTag:me,selectedTags:le,showSearch:k!==n.ENTITIES})]}),a(u,{className:s.tableContent,children:[k===n.CHECKS_BY_LEVELS&&r(u,{mt:"3",children:pe.map(e=>a(u,{className:s.levelSection,children:[a(U,{align:"center",gap:"4",className:s.levelHeading,children:[a(M,{color:"secondary",children:["Level ",e.ordinal]})," ",r(M,{children:e.name})]}),r(De,{trackId:t.id,checks:e.checks,checkStatuses:b,isLoading:m||B,levelOrdinal:e.ordinal})]},e.ordinal))}),k===n.TOP_FAILING_CHECKS&&r(We,{track:t,checkStatuses:b,certificationStatus:S?.certificationStatus,searchValue:c}),k===n.ENTITIES&&r(ze,{track:t,lifecycles:p,owners:l,types:d,systems:f,searchValue:c})]})]})]})]})};export{Ze as TrackPageBUI};
1
+ import{jsx as t,jsxs as c,Fragment as he}from"react/jsx-runtime";import{parseEntityRef as ke}from"@backstage/catalog-model";import{useRouteRef as H}from"@backstage/core-plugin-api";import{usePermission as ge}from"@backstage/plugin-permission-react";import{Container as T,HeaderPage as Se,Box as h,Flex as G,Text as M}from"@backstage/ui";import{makeStyles as Ee}from"@material-ui/core";import{toEntityFilterQuery as Ce,soundcheckTrackReadPermission as ve}from"@spotify/backstage-plugin-soundcheck-common";import{useState as b,useMemo as y,useEffect as U}from"react";import{useSearchParams as Te,useParams as be}from"react-router-dom";import ye from"react-use/lib/useDebounce";import Le from"react-use/lib/useLocalStorage";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useTrack as Ie}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as we}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as _e}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useCheckStatuses as Ne}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useFilters as Be}from"../../hooks/filters/useFilters.esm.js";import{useLCPReporting as Fe}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Re}from"../../hooks/useLoadTimeReporting.esm.js";import{tracksPageRouteRef as He,trackOverviewRouteRef as Oe,trackExplorerRouteRef as Pe}from"../../routes.esm.js";import"../../utils/facetFilters/types.esm.js";import{parseNumberOfDays as xe}from"../../utils/facetFilters/utils.esm.js";import{getEntitiesBucket as Ae,getChecksBucket as Ve}from"../../utils/helpers.esm.js";import{DescriptionCard as Ke}from"../Cards/DescriptionCard/DescriptionCard.esm.js";import{HistoricalTrackStatusCard as je}from"../Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js";import{TrackStatusCard as Ye}from"../Cards/TrackStatusCard/TrackStatusCard.esm.js";import{ChecksTable as De}from"../ChecksTable/ChecksTable.esm.js";import{ChipSelector as Ge}from"../ChipSelector/ChipSelector.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as $}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Me}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as Ue}from"../FilterSidebar/util.esm.js";import{LoadingTableSkeleton as $e}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as Qe}from"../Menus/SimpleMenu.esm.js";import"js-yaml";import"lodash";import{useTrackActions as qe}from"../Menus/useTrackActions.esm.js";import"uuid";import"../CampaignPage/CampaignActionsContext.esm.js";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{PageCustomActions as Je}from"../PageCustomActions/PageCustomActions.esm.js";import{TopFailingChecksTableBUI as We}from"../TopFailingChecksTable/TopFailingChecksTableBUI.esm.js";import{TrackEntitiesTableBUI as Xe}from"./TrackEntitiesTable/TrackEntitiesTableBUI.esm.js";const Ze=Ee(()=>({container:{marginBottom:"var(--bui-space-12)"},cards:{margin:"0 0 var(--bui-space-12)",display:"flex",gridGap:"var(--bui-space-4)"},tableContent:{margin:"var(--bui-space-3) 0 0"},levelSection:{margin:"0 0 var(--bui-space-6)"},levelHeading:{padding:"var(--bui-space-3)",background:"var(--bui-bg-neutral-1)"}})),o={CHECKS_BY_LEVELS:"Checks By Levels",TOP_FAILING_CHECKS:"Top Failing Checks",ENTITIES:"Entities"},ze={"checks-by-levels":o.CHECKS_BY_LEVELS,"top-failing-checks":o.TOP_FAILING_CHECKS,entities:o.ENTITIES},et={[o.CHECKS_BY_LEVELS]:"checks-by-levels",[o.TOP_FAILING_CHECKS]:"top-failing-checks",[o.ENTITIES]:"entities"},tt=()=>{const n=Ze(),[a,k]=Te(),[O,Q]=b(()=>{const e=a.get("section"),s=e?ze[e]:null;return new Set([s??o.CHECKS_BY_LEVELS])}),g=O.values().next().value??o.CHECKS_BY_LEVELS,[l,P]=b(a.get("search")||""),[x,q]=b(""),{trackId:i}=be(),{data:r,isLoading:m,isError:J}=Ie(i),W=H(He),A=qe(r??void 0),V=r?.ownerEntityRef,X=V?ke(V).name:void 0,Z=Array.from(new Set(r?.levels.flatMap(e=>e.checks).map(e=>e.id)??[])),{owners:d,lifecycles:p,types:u,systems:f}=Me(),L=y(()=>Ue({lifecycles:p,owners:d,types:u,systems:f}),[p,d,u,f]),I=y(()=>xe(a.get("numberOfDays")),[a]),[S,K]=b(!1),[w,_]=Le("track-overview-search-params","");U(()=>{!S&&a?.toString()?(w!==a.toString()&&_(a.toString()),K(!0)):S?S&&w!==a.toString()&&_(a.toString()):K(!0)},[a,k,_,w,S]),ye(()=>{q(l);const e=new URLSearchParams(a.toString());l?e.set("search",l):e.delete("search"),k(e,{replace:!0})},300,[l]);const j=y(()=>({routeName:"soundcheck-track-insights",additionalAttributes:{trackId:i||"",filtersApplied:d.length+p.length+u.length+f.length,ownersFilter:d.join(",")||"",lifecyclesFilter:p.join(",")||"",typesFilter:u.join(",")||"",systemsFilter:f.join(",")||"",numberOfDays:I,tracksSearch:x||""}}),[i,d,p,u,f,I,x]),{reportContentLoaded:Y}=Re(j),{reporter:z}=Fe(j),ee=e=>{Q(e),P("");const s=e.values().next().value,v=s?et[s]:void 0;v?k({section:v},{replace:!0}):k({},{replace:!0})},{data:E,isLoading:N,isError:te}=we({trackId:i,filter:L},!!i),{data:re,isLoading:B,isError:ie}=_e({trackId:i,filter:L,numberOfDays:I},!!i),{data:C,isLoading:F}=Ne({trackId:i,checkIds:Z,filter:L},!!r),oe=y(()=>Ce(r?.filter),[r]),R=J||te||ie,{loading:ae,allowed:se}=ge({permission:ve,resourceRef:i}),{filters:ce,selected:ne,setSelected:le,onRemoveTag:me,selectedTags:de}=Be({entityFilterQuery:oe}),pe=r?.levels.flatMap(e=>{const s=l?.trim().toLowerCase();return{...e,checks:s?e.checks.filter(({name:v})=>v.toLowerCase().includes(s)):e.checks}})??[],D=z?.getLCPValue();U(()=>{if(!m&&!F&&!N&&!B){const e=E?.certificationStatus?.numberOfEntities??0,s=C?.length??0;Y({lcp:D,numberOfEntities:e,entitiesBucket:Ae(e),numberOfChecks:s,checksBucket:Ve(s)})}},[m,F,N,B,C,E,Y,D]);const ue=H(Oe),fe=H(Pe);return m?t(T,{className:n.container,children:t($e,{})}):!m&&!r?t(T,{className:n.container,children:t($,{title:"Track not found",body:`There is no track with the requested id: ${i}.`})}):!ae&&!se?t(T,{className:n.container,children:t($,{title:"Cannot view track",body:`No permission to view track with the requested id: ${i}.`})}):c(he,{children:[t(Se,{title:r?.name,customActions:t(Qe,{label:"Track Actions",disabled:!A.length,placement:"left top",menuActions:A}),breadcrumbs:[{label:"Tracks",href:W()}],tabs:[{id:"overview",label:"Track Overview",href:i?ue({trackId:i}):""},{id:"explorer",label:"Tech Insights Explorer",href:i?fe({trackId:i}):""}]}),c(T,{className:n.container,children:[c(h,{className:n.cards,children:[t(Ke,{description:r?.description??void 0,owner:X,isError:R,isLoading:m}),t(Ye,{track:r??void 0,status:E,isError:R,isLoading:N}),t(je,{track:r??void 0,history:re,isError:R,isLoading:B})]}),r&&c(h,{children:[c(G,{justify:"between",children:[t(h,{minWidth:"18rem",children:t(Ge,{options:Object.values(o),selected:O,ariaLabel:"Sections",onSelectionChange:ee})}),t(Je,{searchValue:l,setSearchValue:e=>P(e),filters:ce,selected:ne,setSelected:le,onRemoveTag:me,selectedTags:de,showSearch:g!==o.ENTITIES})]}),c(h,{className:n.tableContent,children:[g===o.CHECKS_BY_LEVELS&&t(h,{mt:"3",children:pe.map(e=>c(h,{className:n.levelSection,children:[c(G,{align:"center",gap:"4",className:n.levelHeading,children:[c(M,{color:"secondary",children:["Level ",e.ordinal]})," ",t(M,{children:e.name})]}),t(De,{trackId:r.id,checks:e.checks,checkStatuses:C,isLoading:m||F,levelOrdinal:e.ordinal})]},e.ordinal))}),g===o.TOP_FAILING_CHECKS&&t(We,{track:r,checkStatuses:C,certificationStatus:E?.certificationStatus,searchValue:l}),g===o.ENTITIES&&t(Xe,{track:r,lifecycles:p,owners:d,types:u,systems:f,searchValue:l})]})]})]})]})};export{tt as TrackPageBUI};
2
2
  //# sourceMappingURL=TrackPageBUI.esm.js.map
@@ -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{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"../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{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 p,Fragment as Y}from"react/jsx-runtime";import{useApi as B,useRouteRef as D}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,Table as te,TableHeader as re,Column as n,TableBody as oe,TablePagination as ie}from"@backstage/ui";import{makeStyles as ae}from"@material-ui/core";import{soundcheckTrackCreatePermission as se}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as ne,isEmpty as R}from"lodash";import{useState as P,useMemo as f,useEffect as me}from"react";import{useSearchParams as ce}from"react-router-dom";import le from"react-use/lib/useDebounce";import{soundcheckApiRef as pe}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{useProfileImages as ue}from"../../hooks/catalog/useProfileImages.esm.js";import{useImportTracks as ge}from"../../hooks/tracks/useImportTracks.esm.js";import{useLCPReporting as he}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ye}from"../../hooks/useLoadTimeReporting.esm.js";import{useSearchNameOwner as ke}from"../../hooks/useSearchNameOwner.esm.js";import{trackCreateRouteRef as we,trackDetailsRouteRef as Re}from"../../routes.esm.js";import{exportTracks as Pe}from"../../utils/export.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as Te}from"../EmptyState/EmptyStateBUI.esm.js";import{EmptyStateNoTracks as Se}from"../EmptyState/EmptyStateNoTracks.esm.js";import"@remixicon/react";import{ImportExportPanelBUI as Le}from"../ImportExportPanel/ImportExportPanelBUI.esm.js";import"../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{ListPageCustomActions as Ce}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as Ie}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import{useTrackActions as ve}from"../Menus/useTrackActions.esm.js";import"uuid";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TableRowWithOwner as Ee}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const N=10,Ae=["name","status","owner"],be=({track:r,profileImageMap:i})=>{const m=f(()=>r.levels.reduce((c,g)=>c+(g.checks?.length??0),0),[r.levels]),o=D(Re),u=ve(r);return t(Ee,{ownerEntityRef:r.ownerEntityRef,href:o({trackId:r.id}),menuActions:u,profileImageSrc:i[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:`${m} Check${m===1?"":"s"}`}]})},xe=ae(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ue=()=>{const r=xe(),[i,m]=ce(),[o,u]=P(()=>i.get("search")??""),[c,g]=P(()=>i.get("sortDirection")==="descending"?"descending":"ascending"),[l,H]=P(()=>{const e=i.get("sort");return e&&Ae.includes(e)?e:""}),T=f(()=>({routeName:"soundcheck-tracks"}),[]),{reportContentLoaded:S}=ye(T),{reporter:M}=he(T),{data:L,isLoading:a}=de({types:["standard","playlist"]}),h=f(()=>L?.edges?.map(e=>e.node)??[],[L?.edges]),{profileImageMap:$}=ue(h.map(e=>e.ownerEntityRef)),C=B(_),y=ke(h,o),I=f(()=>{if(!l)return y;const e=ne(y,s=>l==="owner"?C.forEntity(s.ownerEntityRef).snapshot.primaryTitle.toLowerCase():l==="status"?s.draft?"draft":"active":s.name.toLowerCase());return c==="descending"&&e.reverse(),e},[C,l,c,y]),{paginatedItems:k,reset:v,paginationProps:V}=fe({pageParam:"perPage",defaultPageSize:N,items:I});le(()=>{v();const e=new URLSearchParams(i.toString());o?e.set("search",o):e.delete("search"),m(e,{replace:!0})},300,[o]);const F=({direction:e,column:s})=>{const w=String(s);H(w),g(e),v();const d=new URLSearchParams(i);w?d.set("sort",w):d.delete("sort"),d.set("sortDirection",e),m(d,{replace:!0})},E=M?.getLCPValue();me(()=>{a||S({lcp:E})},[a,S,E]);const O=D(we),{loading:A,allowed:b}=q({permission:se}),j=B(pe),{mutateAsync:z}=ge(),G=async e=>z(e),W=async()=>{const e=await j.getTracks({orderAlphabetical:"asc"});return Pe(e.edges.map(s=>s.node))},J=!a&&!R(k),K=I.length>N,x=!a&&R(k),Q=a;let U=null;return x&&(U=o?t(Te,{title:"No tracks found",body:"Your current search term did not return any tracks. Please try a different search term."}):t(Se,{})),p(Y,{children:[t(X,{title:"Tracks",customActions:p(Z,{gap:"2",align:"center",children:[t(Le,{resourceType:"track",disableImport:!A&&!b,disableExport:a||R(h),onImport:G,onExport:W}),t(Ce,{searchValue:o,setSearchValue:u,canCreate:!A&&b,createHref:O()})]})}),p(ee,{className:r.container,children:[Q&&t(Ie,{rowCount:10}),x&&U,J&&p(te,{onSortChange:F,sortDescriptor:{direction:c,column:l},children:[p(re,{children:[t(n,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"50%"},children:"Track Name"}),t(n,{allowsSorting:!0,id:"status",style:{width:"10%"},children:"Status"}),t(n,{id:"levels",style:{width:"10%"},children:"Levels"}),t(n,{id:"checks",style:{width:"10%"},children:"Checks"}),t(n,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Track Owner"}),t(n,{id:"actions",style:{width:"3%"}})]}),t(oe,{children:!a&&k.map(e=>t(be,{track:e,profileImageMap:$??{}},e.id))})]}),K&&t(ie,{...V})]})]})};export{Ue 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 ae}from"@backstage/ui";import{makeStyles as ie}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 le from"react-use/lib/useDebounce";import{soundcheckApiRef as pe}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{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:i})=>{const c=u(()=>r.levels.reduce((l,P)=>l+(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:i[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=ie(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ne=()=>{const r=xe(),[i,c]=ce(),[o,h]=T(()=>i.get("search")??""),[l,P]=T(()=>i.get("sortDirection")==="descending"?"descending":"ascending"),[p,H]=T(()=>{const e=i.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(!p)return y;const e=se(y,s=>p==="owner"?I.forEntity(s.ownerEntityRef).snapshot.primaryTitle.toLowerCase():p==="status"?s.draft?"draft":"active":s.name.toLowerCase());return l==="descending"&&e.reverse(),e},[I,p,l,y]),{paginatedItems:k,reset:E,paginationProps:a}=fe({pageParam:"perPage",defaultPageSize:D,items:f});le(()=>{E();const e=new URLSearchParams(i.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(i);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(pe),{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:l,column:p},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(ae,{totalCount:f.length,offset:a.offset,hasNextPage:a.offset+a.pageSize<(f.length??0),hasPreviousPage:a.offset>0,onNextPage:a.onNextPage,onPreviousPage:a.onPreviousPage,onPageSizeChange:a.onPageSizeChange,pageSize:a.pageSize})]})]})};export{Ne as TracksListPageBUI};
2
2
  //# sourceMappingURL=TracksListPageBUI.esm.js.map