@spotify/backstage-plugin-soundcheck 0.14.3 → 0.14.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 +26 -0
- package/config.d.ts +14 -0
- package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
- package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +1 -1
- package/dist/components/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/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/CheckCard/CheckCard.esm.js +1 -1
- package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
- package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js +1 -1
- package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
- package/dist/components/CheckForm/utils/checkFormUtils.esm.js +1 -1
- package/dist/components/CheckPage/CheckDetailsView.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/CollectorOption.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/CollectorSchedulingOptions.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataDog/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Gitlab/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Kubernetes/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/NewRelic/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/FactCollectionConfig.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/validation.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/LevelCard/LevelCard.esm.js +1 -1
- package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
- package/dist/components/PassRateTable/PassRateTable.esm.js +2 -2
- package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
- package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
- package/dist/components/TechHealth/TechHealth.esm.js +1 -1
- package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
- package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
- package/dist/components/TrackCreatePage/TrackCreatePage.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/FilterBar/util.esm.js +2 -0
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
- package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
- package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
- package/dist/hooks/facets/useFacetsForOwner.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
- package/dist/hooks/tracks/useCreateTrack.esm.js +1 -1
- package/dist/hooks/tracks/useDeleteTrack.esm.js +1 -1
- package/dist/hooks/tracks/useUpdateTrack.esm.js +1 -1
- package/dist/utils/export.esm.js +3 -3
- package/dist/utils/getGroupFilterFromConfig.esm.js +2 -0
- package/package.json +21 -20
- package/dist/components/CampaignDetailsPage/CampaignDetailRow.esm.js +0 -2
- package/dist/components/CampaignDetailsPage/CampaignDetails.esm.js +0 -2
- package/dist/components/OverviewPage/CampaignBanner/CampaignArea.esm.js +0 -2
- package/dist/components/OverviewPage/CampaignBanner/CampaignBanner.esm.js +0 -2
- package/dist/components/OverviewPage/CampaignBanner/useCampaignBannerStyles.esm.js +0 -2
- package/dist/components/OverviewPage/CampaignBanner/utils.esm.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRouteRef as m,useRouteRefParams as d}from"@backstage/core-plugin-api";import{useEntity as s}from"@backstage/plugin-catalog-react";import{SecretsContextProvider as v}from"@backstage/plugin-scaffolder-react";import e from"react";import{Routes as $,Route as
|
|
1
|
+
import{useRouteRef as m,useRouteRefParams as d}from"@backstage/core-plugin-api";import{useEntity as s}from"@backstage/plugin-catalog-react";import{SecretsContextProvider as v}from"@backstage/plugin-scaffolder-react";import e from"react";import{Routes as $,Route as c,Navigate as u}from"react-router-dom";import{useAllCertifications as L}from"../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../api.esm.js";import"../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as R}from"../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../hooks/useSoundcheckAlert.esm.js";import"../hooks/useConfirmationModal.esm.js";import{usePlaylists as y}from"../hooks/playlists/usePlaylists.esm.js";import{certificationPlaylistTrackCheckRouteRef as I,certificationPlaylistTrackRouteRef as E,certificationPlaylistRouteRef as f,certificationTrackRouteRef as k,certificationRouteRef as g}from"../routes.esm.js";import{EntityContent as o}from"./EntityContent/EntityContent.esm.js";const x=()=>{const{entity:l}=s(),t=m(f),a=m(k),{isLoading:i,data:r}=y(l),{isLoading:n,data:C}=L(l);if(i||n)return null;const p=r?.[0]?.id,h=C?.[0]?.program.id;return!p&&!h?null:e.createElement(u,{to:p?t({playlistId:p}):a({trackId:h}),replace:!0})},T=()=>{const{entity:l}=s(),{playlistId:t}=d(f),a=m(E),{data:i}=y(l),r=i?.find(n=>n.id===t)?.trackIds[0];return r?e.createElement(u,{to:a({playlistId:t,trackId:r}),replace:!0}):null},F=()=>{const{entity:l}=s(),{playlistId:t,trackId:a}=d(E),{data:i}=R(l,a),r=m(I),n=i?.levels[0]?.checks[0]?.id;return n?e.createElement(u,{to:r({playlistId:t,trackId:a,checkId:n}),replace:!0}):null},P=()=>{const{entity:l}=s(),{trackId:t}=d(k),a=m(g),{data:i}=R(l,t),r=i?.levels?.find(n=>n.checks.length>0)?.checks[0].id;return r?e.createElement(u,{to:a({trackId:t,checkId:r}),replace:!0}):null},A=()=>e.createElement(v,null,e.createElement($,null,e.createElement(c,{path:I.path,element:e.createElement(o,null)}),e.createElement(c,{path:E.path,element:e.createElement(e.Fragment,null,e.createElement(o,null),e.createElement(F,null))}),e.createElement(c,{path:f.path,element:e.createElement(e.Fragment,null,e.createElement(o,null),e.createElement(T,null))}),e.createElement(c,{path:k.path,element:e.createElement(e.Fragment,null,e.createElement(o,null),e.createElement(P,null))}),e.createElement(c,{path:g.path,element:e.createElement(o,null)}),e.createElement(c,{path:"/",element:e.createElement(e.Fragment,null,e.createElement(o,null),e.createElement(x,null))})));export{P as RedirectToFirstCheck,T as RedirectToFirstPlaylistTrack,F as RedirectToFirstPlaylistTrackCheck,A as Router};
|
|
2
2
|
//# sourceMappingURL=Router.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Page as F,TabbedLayout as l}from"@backstage/core-components";import{useApi as s,featureFlagsApiRef as S,configApiRef as L}from"@backstage/core-plugin-api";import{usePermission as m}from"@backstage/plugin-permission-react";import{makeStyles as D,Box as i}from"@material-ui/core";import{SpotifyLicenseBanner as H}from"@spotify/backstage-plugin-core";import{soundcheckCampaignCreatePermission as N,soundcheckCollectorReadPermission as O,soundcheckCheckCreatePermission as B,soundcheckTrackCreatePermission as G}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{Routes as Q,Route as t}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import{UserProvider as $}from"../../contexts/UserProvider.esm.js";import q from"../../hooks/useConfirmationModal.esm.js";import{AlertProvider as M}from"../../hooks/useSoundcheckAlert.esm.js";import{CampaignInsightsPage as U}from"../CampaignInsightsPage/CampaignInsightsPage.esm.js";import{CampaignsPage as V}from"../CampaignsPage/CampaignsPage.esm.js";import{CampaignCreatePage as W}from"../CampaignCreatePage/CampaignCreatePage.esm.js";import{EditCampaignView as j}from"../CampaignsPage/EditCampaignView.esm.js";import{CheckCreatePage as z}from"../CheckCreatePage/CheckCreatePage.esm.js";import{CheckPage as J}from"../CheckPage/CheckPage.esm.js";import{CheckInsightsPage as p}from"../CheckPage/CheckInsightsPage.esm.js";import{ChecksTab as K}from"../ChecksTab/ChecksTab.esm.js";import{CheckTemplatesPage as X}from"../CheckTemplatesPage/CheckTemplatesPage.esm.js";import{CollectorPage as Y}from"../CollectorPage/CollectorPage.esm.js";import{CollectorsPage as Z}from"../CollectorsPage/CollectorsPage.esm.js";import{OverviewPageContent as _}from"../OverviewPage/OverviewPageContent.esm.js";import{QuickstartPage as ee}from"../QuickstartPage/QuickstartPage.esm.js";import{SoundcheckHeader as te}from"../SoundcheckHeader/SoundcheckHeader.esm.js";import{SoundcheckHeaderProvider as ae}from"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{SoundcheckQueryClientProvider as ne}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{TechHealth as le}from"../TechHealth/TechHealth.esm.js";import{TrackCreatePage as re}from"../TrackCreatePage/TrackCreatePage.esm.js";import{TrackEditPage as ce}from"../TrackEditPage/TrackEditPage.esm.js";import{TrackPage as me}from"../TrackPage/TrackPage.esm.js";import{TracksTab as ie}from"../TracksTab/TracksTab.esm.js";const oe=D(r=>({tabContent:{margin:0,padding:0},root:{"& > *":{display:"flex",flexDirection:"column",flexGrow:1}},pageContent:{display:"flex",flexDirection:"row",flexGrow:1},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",maxWidth:"100%","& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",padding:`${r.spacing(3)}px !important`}}})),se=({title:r="Soundcheck"})=>{const c=oe(),a=s(S),d=s(L).getOptionalStringArray("soundcheck.flags"),h=(!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-tech-health")||a.isActive("soundcheck-enable-tech-health"))&&!d?.includes("soundcheck-disable-tech-health"),u=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-collectors")||a.isActive("soundcheck-enable-collectors"),o=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-campaigns")||a.isActive("soundcheck-enable-campaigns"),{loading:g,allowed:k}=m({permission:N}),f=!g&&k,{loading:E,allowed:C}=m({permission:O}),{loading:
|
|
1
|
+
import{Page as F,TabbedLayout as l}from"@backstage/core-components";import{useApi as s,featureFlagsApiRef as S,configApiRef as L}from"@backstage/core-plugin-api";import{usePermission as m}from"@backstage/plugin-permission-react";import{makeStyles as D,Box as i}from"@material-ui/core";import{SpotifyLicenseBanner as H}from"@spotify/backstage-plugin-core";import{soundcheckCampaignCreatePermission as N,soundcheckCollectorReadPermission as O,soundcheckCheckCreatePermission as B,soundcheckTrackCreatePermission as G}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{Routes as Q,Route as t}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import{UserProvider as $}from"../../contexts/UserProvider.esm.js";import q from"../../hooks/useConfirmationModal.esm.js";import{AlertProvider as M}from"../../hooks/useSoundcheckAlert.esm.js";import{CampaignInsightsPage as U}from"../CampaignInsightsPage/CampaignInsightsPage.esm.js";import{CampaignsPage as V}from"../CampaignsPage/CampaignsPage.esm.js";import{CampaignCreatePage as W}from"../CampaignCreatePage/CampaignCreatePage.esm.js";import{EditCampaignView as j}from"../CampaignsPage/EditCampaignView.esm.js";import{CheckCreatePage as z}from"../CheckCreatePage/CheckCreatePage.esm.js";import{CheckPage as J}from"../CheckPage/CheckPage.esm.js";import{CheckInsightsPage as p}from"../CheckPage/CheckInsightsPage.esm.js";import{ChecksTab as K}from"../ChecksTab/ChecksTab.esm.js";import{CheckTemplatesPage as X}from"../CheckTemplatesPage/CheckTemplatesPage.esm.js";import{CollectorPage as Y}from"../CollectorPage/CollectorPage.esm.js";import{CollectorsPage as Z}from"../CollectorsPage/CollectorsPage.esm.js";import{OverviewPageContent as _}from"../OverviewPage/OverviewPageContent.esm.js";import{QuickstartPage as ee}from"../QuickstartPage/QuickstartPage.esm.js";import{SoundcheckHeader as te}from"../SoundcheckHeader/SoundcheckHeader.esm.js";import{SoundcheckHeaderProvider as ae}from"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{SoundcheckQueryClientProvider as ne}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{TechHealth as le}from"../TechHealth/TechHealth.esm.js";import{TrackCreatePage as re}from"../TrackCreatePage/TrackCreatePage.esm.js";import{TrackEditPage as ce}from"../TrackEditPage/TrackEditPage.esm.js";import{TrackPage as me}from"../TrackPage/TrackPage.esm.js";import{TracksTab as ie}from"../TracksTab/TracksTab.esm.js";const oe=D(r=>({tabContent:{margin:0,padding:0},root:{"& > *":{display:"flex",flexDirection:"column",flexGrow:1}},pageContent:{display:"flex",flexDirection:"row",flexGrow:1},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",maxWidth:"100%","& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",padding:`${r.spacing(3)}px !important`}}})),se=({title:r="Soundcheck"})=>{const c=oe(),a=s(S),d=s(L).getOptionalStringArray("soundcheck.flags"),h=(!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-tech-health")||a.isActive("soundcheck-enable-tech-health"))&&!d?.includes("soundcheck-disable-tech-health"),u=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-collectors")||a.isActive("soundcheck-enable-collectors"),o=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-campaigns")||a.isActive("soundcheck-enable-campaigns"),{loading:g,allowed:k}=m({permission:N}),f=!g&&k,{loading:E,allowed:C}=m({permission:O}),{loading:P,allowed:b}=m({permission:B}),v=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-check-creation")||a.isActive("soundcheck-enable-check-creation"),x=!P&&b&&v,{loading:R,allowed:w}=m({permission:G}),T=!a.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-track-creation")||a.isActive("soundcheck-enable-track-creation"),I=!R&&w&&T,y=u&&!E&&C,A=h;return e.createElement(M,null,e.createElement($,null,e.createElement(ne,null,e.createElement(ae,{defaultTitle:r},e.createElement(q,null,e.createElement(i,{className:c.root},e.createElement(F,{themeId:"website"},e.createElement(H,{backend:"soundcheck",invalidLicenseMessage:"Submitted facts and check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),e.createElement(te,{documentTitle:r}),e.createElement(i,{className:c.pageContent},e.createElement(i,{className:c.pageLayout},e.createElement(Q,null,o&&e.createElement(e.Fragment,null,e.createElement(t,{path:"/campaigns/:campaignId/edit",element:e.createElement(j,null)}),e.createElement(t,{path:"/campaigns/:campaignId",element:e.createElement(U,null)}),f&&e.createElement(t,{path:"/campaigns/create",element:e.createElement(W,null)})),e.createElement(t,{path:"/quickstart",element:e.createElement(ee,null)}),e.createElement(t,{path:"/tracks/:trackId/edit",element:e.createElement(ce,null)}),I&&e.createElement(t,{path:"/tracks/create",element:e.createElement(re,null)}),e.createElement(t,{path:"/tracks/:trackId",element:e.createElement(me,null)}),e.createElement(t,{path:"/tracks/:trackId/checks/:checkId",element:e.createElement(p,null)}),e.createElement(t,{path:"/checks/:checkId",element:e.createElement(p,null)}),e.createElement(t,{path:"/checks/:checkId/edit",element:e.createElement(J,null)}),x&&e.createElement(e.Fragment,null,e.createElement(t,{path:"/checks/create",element:e.createElement(z,null)}),e.createElement(t,{path:"/checks/templates",element:e.createElement(X,null)})),e.createElement(t,{path:"/integrations/:integrationId",element:e.createElement(Y,null)}),e.createElement(t,{path:"/*",element:e.createElement(l,null,e.createElement(l.Route,{title:"Overview",path:"/"},e.createElement("div",{className:c.tabContent},e.createElement(_,null))),A&&e.createElement(l.Route,{title:"Tech Health",path:"/tech-health"},e.createElement(le,null)),e.createElement(l.Route,{title:"Checks",path:"/checks"},e.createElement(K,null)),e.createElement(l.Route,{title:"Tracks",path:"/tracks"},e.createElement(ie,null)),o&&e.createElement(l.Route,{title:"Campaigns",path:"/campaigns"},e.createElement(V,null)),y&&e.createElement(l.Route,{title:"Integrations",path:"/integrations"},e.createElement(Z,null)))}))," ")))))))))};export{se as RoutingPage};
|
|
2
2
|
//# sourceMappingURL=RoutingPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as F,alpha as w,Box as i,Typography as z,Tooltip as L,Icon as N,IconButton as O,Chip as T,TextField as D,FormControlLabel as
|
|
1
|
+
import{makeStyles as F,alpha as w,Box as i,Typography as z,Tooltip as L,Icon as N,IconButton as O,Chip as T,TextField as D,FormControlLabel as V,Checkbox as j}from"@material-ui/core";import B from"@material-ui/icons/ArrowDropDown";import $ from"@material-ui/icons/ArrowDropUp";import A from"@material-ui/icons/CheckBox";import H from"@material-ui/icons/CheckBoxOutlineBlank";import K from"@material-ui/icons/HelpOutline";import{Autocomplete as W}from"@material-ui/lab";import{remove as q}from"lodash";import l,{useState as p,useEffect as J,useCallback as y,useMemo as M}from"react";import P from"../../Expand/Expand.esm.js";import{ListboxVirtualized as G}from"../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useFilterContext as Q}from"./FilterProvider.esm.js";import{Facet as x,facetTooltips as C}from"./types.esm.js";const R=F(({palette:t,spacing:n})=>({header:{display:"flex",alignItems:"left",flexDirection:"row",cursor:"pointer",justifyContent:"space-between"},label:{display:"flex",alignItems:"center"},tooltipIcon:{display:"flex",alignItems:"center",justifyContent:"center",color:t.text.primary},chip:{maxWidth:"45%",textOverflow:"ellipsis",margin:n(.5,.5,.5,0),overflow:"hidden","& svg":{color:w(t.common.white,.7),"&:hover":{color:t.common.white}},backgroundColor:t.action.disabledBackground},autoCompleteInput:{"&& input":{margin:n(1,0,0,0),padding:`${n(0,1,1,1)} !important`,width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},"&& button":{"&:hover":{backgroundColor:"transparent"}}},autoComplete:{margin:n(.5,0,1,0)},selectionLabel:{lineHeight:"1em"}})),U=({facet:t})=>{const n=R(),{getFacetOptions:k,getFacetOptionLabel:c,getSelectedFacetValues:a,setSelectedFacetValues:u}=Q(),[f,d]=p(!1),[v,h]=p(!1),[I,b]=p("");J(()=>{d(!!a(t)?.length)},[a,t]);const E=()=>{d(e=>!e)},g=e=>{(e.key==="Enter"||e.key===" ")&&E()},m=y(e=>{if(t===x.Entity&&e[e.length-1]){const o=e[e.length-1];if(!o.includes(":")||!o.includes("/")){h(!0),b("Custom entities require a valid kind and namespace such as: component:default/entity");return}}h(!1),b(""),u(t,e)},[t,u]),r=M(()=>a(t),[t,a]),S=y(e=>{const o=[...r];q(o,s=>s===e),m(o)},[r,m]);return l.createElement(i,null,l.createElement("div",{className:n.header,onClick:E,onKeyDown:g,role:"button",tabIndex:0},l.createElement("div",{className:n.label},l.createElement(i,null,l.createElement(z,{variant:"subtitle2"},t)),C[t]&&l.createElement(L,{title:C[t],className:n.tooltipIcon},l.createElement(N,null,l.createElement(K,{style:{fontSize:16,verticalAlign:"text-top"}})))),l.createElement(i,null,l.createElement(O,{size:"small",onKeyDown:g},f?l.createElement($,{fontSize:"small"}):l.createElement(B,{fontSize:"small"})))),l.createElement(P,{visible:f},l.createElement(i,null,r.map(e=>l.createElement(T,{key:e,label:c(t,e),size:"small",className:n.chip,onDelete:()=>S(e),clickable:!1}))),l.createElement(W,{className:n.autoComplete,disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:t===x.Entity,popupIcon:null,renderTags:()=>null,options:k(t),getOptionLabel:e=>c(t,e),value:r,onChange:(e,o)=>m(o),ListboxComponent:G,ListboxProps:{itemHeight:50},renderInput:e=>l.createElement(D,{...e,className:n.autoCompleteInput,placeholder:`Search for ${t}`,error:v,helperText:I}),renderOption:(e,{selected:o})=>l.createElement(V,{onClick:s=>s.preventDefault(),control:l.createElement(j,{icon:l.createElement(H,{fontSize:"small"}),checkedIcon:l.createElement(A,{fontSize:"small"}),checked:o}),classes:{label:n.selectionLabel},label:c(t,e)})})))};export{U as FacetFilter};
|
|
2
2
|
//# sourceMappingURL=FacetFilter.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as T}from"@backstage/catalog-model";import C from"lodash";import{useState as $,useMemo as l,useEffect as A}from"react";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as S}from"../../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import{useAllGroups as x}from"../../../hooks/groups/useAllGroups.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as U}from"../../../hooks/checks/useGetChecks.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as q}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetEntityFacets as f}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import{useEntityRefsForUser as B}from"../../../hooks/entities/useEntityRefsForUser.esm.js";import{Facet as s}from"./types.esm.js";const I=(i,o)=>{const a=[];for(const r of i)a.push({label:r.name??r.id,value:r.id});const e=i.map(r=>r.id);for(const r of o)for(const m of r.levels??[])for(const n of m.checks??[])e.includes(n.id)||(e.push(n.id),a.push({label:n.name??n.id,value:n.id}));return a},K=i=>{const o=[];for(const a of i??[])for(const e of a.levels??[])o.includes(e.ordinal)||o.push(e.ordinal);return o.sort().map(a=>({label:`Level ${a}`,value:`${a}`}))},M=(i,o)=>{const a=new Set(i.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef));return Array.from(a).map(e=>({label:o[e]??e,value:e}))},d=i=>(i??[]).map(o=>({label:o,value:o})),V=()=>{const[i,o]=$(!1),{userEntityRef:a}=S(),{data:e,isLoading:r}=B(a),{data:m,isLoading:n}=x(),u=l(()=>C.mapValues(C.keyBy(m??[],"ref"),t=>t.name),[m]),{data:y,isLoading:g}=q({first:100}),p=l(()=>y?.edges.map(t=>t.node)??[],[y]),{data:L,isLoading:v}=U({first:100}),c=l(()=>L?.edges.map(t=>t.node)??[],[L]),{data:E,isLoading:b}=f("kind"),{data:h,isLoading:k}=f("spec.lifecycle"),{data:R,isLoading:w}=f("spec.type"),{data:F,isLoading:O}=f("spec.system"),G=l(()=>({[s.Kind]:d(E),[s.Lifecycle]:d(h),[s.Type]:d(R),[s.System]:d(F),[s.Entity]:e.map(t=>({label:T(t).name,value:t})),[s.EntityOwner]:m?.map(t=>({label:t.name,value:t.ref}))??[],[s.Track]:p.map(t=>({label:t.name,value:t.id})),[s.Level]:K(p),[s.Check]:I(c,p),[s.CheckOwner]:M(c,u)}),[E,h,R,e,m,u,p,c,F]);return A(()=>{o(b||k||w||r||n||g||v||O)},[b,k,w,r,n,g,v,O]),{facetOptions:G,isLoading:i}};export{V as useFacetOptions};
|
|
1
|
+
import{parseEntityRef as T}from"@backstage/catalog-model";import C from"lodash";import{useState as $,useMemo as l,useEffect as A}from"react";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as S}from"../../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import{useAllGroups as x}from"../../../hooks/groups/useAllGroups.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import{useGetChecks as U}from"../../../hooks/checks/useGetChecks.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as q}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetEntityFacets as f}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import{useEntityRefsForUser as B}from"../../../hooks/entities/useEntityRefsForUser.esm.js";import{Facet as s}from"./types.esm.js";const I=(i,o)=>{const a=[];for(const r of i)a.push({label:r.name??r.id,value:r.id});const e=i.map(r=>r.id);for(const r of o)for(const m of r.levels??[])for(const n of m.checks??[])e.includes(n.id)||(e.push(n.id),a.push({label:n.name??n.id,value:n.id}));return a},K=i=>{const o=[];for(const a of i??[])for(const e of a.levels??[])o.includes(e.ordinal)||o.push(e.ordinal);return o.sort().map(a=>({label:`Level ${a}`,value:`${a}`}))},M=(i,o)=>{const a=new Set(i.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef));return Array.from(a).map(e=>({label:o[e]??e,value:e}))},d=i=>(i??[]).map(o=>({label:o,value:o})),V=()=>{const[i,o]=$(!1),{userEntityRef:a}=S(),{data:e,isLoading:r}=B(a),{data:m,isLoading:n}=x(),u=l(()=>C.mapValues(C.keyBy(m??[],"ref"),t=>t.name),[m]),{data:y,isLoading:g}=q({first:100}),p=l(()=>y?.edges.map(t=>t.node)??[],[y]),{data:L,isLoading:v}=U({first:100}),c=l(()=>L?.edges.map(t=>t.node)??[],[L]),{data:E,isLoading:b}=f("kind"),{data:h,isLoading:k}=f("spec.lifecycle"),{data:R,isLoading:w}=f("spec.type"),{data:F,isLoading:O}=f("spec.system"),G=l(()=>({[s.Kind]:d(E),[s.Lifecycle]:d(h),[s.Type]:d(R),[s.System]:d(F),[s.Entity]:e.map(t=>({label:T(t).name,value:t})),[s.EntityOwner]:m?.map(t=>({label:t.name,value:t.ref}))??[],[s.Track]:p.map(t=>({label:t.name,value:t.id})),[s.Level]:K(p),[s.Check]:I(c,p),[s.CheckOwner]:M(c,u)}),[E,h,R,e,m,u,p,c,F]);return A(()=>{o(b||k||w||r||n||g||v||O)},[b,k,w,r,n,g,v,O]),{facetOptions:G,isLoading:i}};export{V as useFacetOptions};
|
|
2
2
|
//# sourceMappingURL=useFacetOptions.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{TabbedLayout as r}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as i}from"@backstage/core-plugin-api";import{makeStyles as p,Box as n}from"@material-ui/core";import e from"react";import{Routes as c,Route as s}from"react-router-dom";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as u}from"../SoundcheckHeader/useHeader.esm.js";import{TechHealthSummary as d}from"../TechHealthSummary/TechHealthSummary.esm.js";import"../TechHealthTabs/PassRateTabStyles.esm.js";import"../StyledTooltip/StyledTooltip.esm.js";import"../TechHealthTabs/OwnerColumn.esm.js";import{TrackResultsTab as f}from"../TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js";import{EntityResultsTab as x}from"../TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js";import{GroupResultsTab as b}from"../TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js";import{CampaignResultsTab as h}from"../TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js";import{CheckResultsTab as E}from"../TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js";import"./Filters/types.esm.js";import"./Filters/FacetFilter.esm.js";import{FilterProvider as g}from"./Filters/FilterProvider.esm.js";import{Filters as k}from"./Filters/Filters.esm.js";import"./Filters/FiltersHeader.esm.js";import"./Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";const R=p(t=>({container:{display:"flex",margin:"-24px",backgroundColor:t.palette.background.paper,borderTop:`1px solid ${t.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${t.palette.divider}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:t.palette.background.paper,height:"100%",maxWidth:"100%"},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",backgroundColor:t.palette.background.default,"& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",borderTop:`1px solid ${t.palette.border}`,padding:`${t.spacing(3)}px !important`}}})),T=()=>{u();const t=R(),l=m(i),a=!l.getRegisteredFlags().find(o=>o.name==="soundcheck-enable-campaigns")||l.isActive("soundcheck-enable-campaigns");return e.createElement(g,null,e.createElement("div",{className:t.container},e.createElement("div",{className:t.fixedColumn},e.createElement(k,null)),e.createElement("div",{className:t.flexibleColumn},e.createElement(n,{className:t.pageLayout,"aria-label":"tech health tabs"},e.createElement(c,null,e.createElement(s,{path:"/*",element:e.createElement(r,null,e.createElement(r.Route,{title:"Summary",path:"/"},e.createElement(d,null)),a&&e.createElement(r.Route,{title:"Campaigns",path:"/campaigns"},e.createElement(h,null)),e.createElement(r.Route,{title:"Checks",path:"/checks"},e.createElement(E,null)),e.createElement(r.Route,{title:"Tracks",path:"/tracks"},e.createElement(f,null)),e.createElement(r.Route,{title:"Entities",path:"/entities"},e.createElement(x,null)),e.createElement(r.Route,{title:"Teams",path:"/teams"},e.createElement(b,null)))}))))))};export{T as TechHealth};
|
|
1
|
+
import{TabbedLayout as r}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as i}from"@backstage/core-plugin-api";import{makeStyles as p,Box as n}from"@material-ui/core";import e from"react";import{Routes as c,Route as s}from"react-router-dom";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as u}from"../SoundcheckHeader/useHeader.esm.js";import{TechHealthSummary as d}from"../TechHealthSummary/TechHealthSummary.esm.js";import"../TechHealthTabs/PassRateTabStyles.esm.js";import"../StyledTooltip/StyledTooltip.esm.js";import"../TechHealthTabs/OwnerColumn.esm.js";import{TrackResultsTab as f}from"../TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js";import{EntityResultsTab as x}from"../TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js";import{GroupResultsTab as b}from"../TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js";import{CampaignResultsTab as h}from"../TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js";import{CheckResultsTab as E}from"../TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js";import"./Filters/types.esm.js";import"./Filters/FacetFilter.esm.js";import{FilterProvider as g}from"./Filters/FilterProvider.esm.js";import{Filters as k}from"./Filters/Filters.esm.js";import"./Filters/FiltersHeader.esm.js";import"./Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";const R=p(t=>({container:{display:"flex",margin:"-24px",backgroundColor:t.palette.background.paper,borderTop:`1px solid ${t.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${t.palette.divider}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:t.palette.background.paper,height:"100%",maxWidth:"100%"},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",backgroundColor:t.palette.background.default,"& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",borderTop:`1px solid ${t.palette.border}`,padding:`${t.spacing(3)}px !important`}}})),T=()=>{u();const t=R(),l=m(i),a=!l.getRegisteredFlags().find(o=>o.name==="soundcheck-enable-campaigns")||l.isActive("soundcheck-enable-campaigns");return e.createElement(g,null,e.createElement("div",{className:t.container},e.createElement("div",{className:t.fixedColumn},e.createElement(k,null)),e.createElement("div",{className:t.flexibleColumn},e.createElement(n,{className:t.pageLayout,"aria-label":"tech health tabs"},e.createElement(c,null,e.createElement(s,{path:"/*",element:e.createElement(r,null,e.createElement(r.Route,{title:"Summary",path:"/"},e.createElement(d,null)),a&&e.createElement(r.Route,{title:"Campaigns",path:"/campaigns"},e.createElement(h,null)),e.createElement(r.Route,{title:"Checks",path:"/checks"},e.createElement(E,null)),e.createElement(r.Route,{title:"Tracks",path:"/tracks"},e.createElement(f,null)),e.createElement(r.Route,{title:"Entities",path:"/entities"},e.createElement(x,null)),e.createElement(r.Route,{title:"Teams",path:"/teams"},e.createElement(b,null)))}))))))};export{T as TechHealth};
|
|
2
2
|
//# sourceMappingURL=TechHealth.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import s,{createContext as d,useMemo as p,useContext as g}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useAggregatedCheckPassRateTrend as v}from"../../hooks/aggregations/useAggregatedCheckPassRateTrend.esm.js";import{useAggregatedTrackPassRateTrend as u}from"../../hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js";import{useAggregatedEntityPassRateTrend as c}from"../../hooks/aggregations/useAggregatedEntityPassRateTrend.esm.js";import{useAggregatedGroupPassRateTrend as P}from"../../hooks/aggregations/useAggregatedGroupPassRateTrend.esm.js";import"react-router-dom";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as T}from"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{Loading as R}from"../TechHealth/Loading/Loading.esm.js";const a=d({checkPassRateTrend:{data:void 0,isLoading:!0,isError:!1},trackPassRateOverviewTrend:{data:void 0,isLoading:!0,isError:!1},entityPassRatesOverviewTrends:{data:void 0,isLoading:!0,isError:!1},groupPassRatesOverviewTrends:{data:void 0,isLoading:!0,isError:!1}}),f=()=>g(a),L=m=>{const{filter:r}=T(),e=v(r),t=u(r),i=c(r),o=P({filter:r,first:5}),n=p(()=>({checkPassRateTrend:e,trackPassRateOverviewTrend:t,entityPassRatesOverviewTrends:i,groupPassRatesOverviewTrends:o}),[e,t,i,o]);return e.isLoading||t.isLoading||i.isLoading||o.isLoading?s.createElement(R,null):s.createElement(a.Provider,{...m,value:n})};export{L as SummaryAggregationsProvider,f as useSummaryAggregationsContext};
|
|
1
|
+
import s,{createContext as d,useMemo as p,useContext as g}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useAggregatedCheckPassRateTrend as v}from"../../hooks/aggregations/useAggregatedCheckPassRateTrend.esm.js";import{useAggregatedTrackPassRateTrend as u}from"../../hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js";import{useAggregatedEntityPassRateTrend as c}from"../../hooks/aggregations/useAggregatedEntityPassRateTrend.esm.js";import{useAggregatedGroupPassRateTrend as P}from"../../hooks/aggregations/useAggregatedGroupPassRateTrend.esm.js";import"react-router-dom";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as T}from"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{Loading as R}from"../TechHealth/Loading/Loading.esm.js";const a=d({checkPassRateTrend:{data:void 0,isLoading:!0,isError:!1},trackPassRateOverviewTrend:{data:void 0,isLoading:!0,isError:!1},entityPassRatesOverviewTrends:{data:void 0,isLoading:!0,isError:!1},groupPassRatesOverviewTrends:{data:void 0,isLoading:!0,isError:!1}}),f=()=>g(a),L=m=>{const{filter:r}=T(),e=v(r),t=u(r),i=c(r),o=P({filter:r,first:5}),n=p(()=>({checkPassRateTrend:e,trackPassRateOverviewTrend:t,entityPassRatesOverviewTrends:i,groupPassRatesOverviewTrends:o}),[e,t,i,o]);return e.isLoading||t.isLoading||i.isLoading||o.isLoading?s.createElement(R,null):s.createElement(a.Provider,{...m,value:n})};export{L as SummaryAggregationsProvider,f as useSummaryAggregationsContext};
|
|
2
2
|
//# sourceMappingURL=SummaryAggregationsProvider.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRouteRef as I}from"@backstage/core-plugin-api";import{Typography as T,Box as M,Grid as S}from"@material-ui/core";import a,{useState as i,useEffect as A,useMemo as B}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as D}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as F}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{campaignDetailsRouteRef as x}from"../../../routes.esm.js";import{campaignTrackPassRatesCsvFilename as N}from"../../../utils/charts.esm.js";import{PassRateGrid as V}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as H}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as j}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as q}from"../../TechHealth/Loading/Loading.esm.js";import{PassRateTabHeader as z}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as J}from"../PassRateTabStyles.esm.js";import{trackPassRatesToCsv as K}from"../TechHealthExportFunctions.esm.js";import{ViewMode as u,generateTrackPassRateGridData as O}from"../techHealthTabUtils.esm.js";import{generateColumns as Q}from"../TrackResultsTab/TrackResultsTab.esm.js";const U=()=>{const k=J(),{filter:g}=j(),m=I(x),{data:P}=D({orderAlphabetical:"default",searchByStatus:"active"}),r=P?.edges.map(e=>e.node)?.map(({id:e,track:f})=>({campaignId:e,trackId:f.id})),v=r?.map(({trackId:e})=>({trackId:e})),{data:s,isLoading:R,isError:h}=F({...g,tracks:v,trackTypes:{included:["campaign"]}}),[c,C]=i(u.TABLE),[t,E]=i(""),[n,p]=i(0),[l,w]=i(10);A(()=>{p(0)},[g,t]);const b=B(()=>Q(s?.individualTrackPassRate??[],void 0,m,r),[s?.individualTrackPassRate,m,r]);if(R)return a.createElement(q,null);if(h)return a.createElement(T,{color:"error"},"Failed to load campaign tracks");const{individualTrackPassRate:d}=s;if(!d)return a.createElement(T,{color:"error"},"No available campaign tracks");const o=t.length?d.filter(({trackName:e})=>e?.toLowerCase()?.includes(t.toLowerCase())):d,L=async()=>K(o,r),y=(e,f)=>{p(()=>f)},G=e=>{w(+e.target.value),p(0)};return a.createElement(M,{className:k.root},a.createElement(S,{container:!0,direction:"row"},a.createElement(z,{viewMode:c,setViewMode:C,isLoading:R,searchTerm:t,setSearchTerm:E,searchPlaceholder:"Search Available Campaigns",fetchCsvData:L,csvFilename:N}),c===u.TABLE&&a.createElement(H,{data:o,columns:b}),c===u.GRID&&a.createElement(V,{data:O(o.slice(n*l,(n+1)*l),void 0,m,r),totalCount:o?.length??0,page:n,rowsPerPage:l,onPageChange:y,onRowsPerPageChange:G})))};export{U as CampaignResultsTab};
|
|
1
|
+
import{useRouteRef as I}from"@backstage/core-plugin-api";import{Typography as T,Box as M,Grid as S}from"@material-ui/core";import a,{useState as i,useEffect as A,useMemo as B}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as D}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as F}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{campaignDetailsRouteRef as x}from"../../../routes.esm.js";import{campaignTrackPassRatesCsvFilename as N}from"../../../utils/charts.esm.js";import{PassRateGrid as V}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as H}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as j}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as q}from"../../TechHealth/Loading/Loading.esm.js";import{PassRateTabHeader as z}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as J}from"../PassRateTabStyles.esm.js";import{trackPassRatesToCsv as K}from"../TechHealthExportFunctions.esm.js";import{ViewMode as u,generateTrackPassRateGridData as O}from"../techHealthTabUtils.esm.js";import{generateColumns as Q}from"../TrackResultsTab/TrackResultsTab.esm.js";const U=()=>{const k=J(),{filter:g}=j(),m=I(x),{data:P}=D({orderAlphabetical:"default",searchByStatus:"active"}),r=P?.edges.map(e=>e.node)?.map(({id:e,track:f})=>({campaignId:e,trackId:f.id})),v=r?.map(({trackId:e})=>({trackId:e})),{data:s,isLoading:R,isError:h}=F({...g,tracks:v,trackTypes:{included:["campaign"]}}),[c,C]=i(u.TABLE),[t,E]=i(""),[n,p]=i(0),[l,w]=i(10);A(()=>{p(0)},[g,t]);const b=B(()=>Q(s?.individualTrackPassRate??[],void 0,m,r),[s?.individualTrackPassRate,m,r]);if(R)return a.createElement(q,null);if(h)return a.createElement(T,{color:"error"},"Failed to load campaign tracks");const{individualTrackPassRate:d}=s;if(!d)return a.createElement(T,{color:"error"},"No available campaign tracks");const o=t.length?d.filter(({trackName:e})=>e?.toLowerCase()?.includes(t.toLowerCase())):d,L=async()=>K(o,r),y=(e,f)=>{p(()=>f)},G=e=>{w(+e.target.value),p(0)};return a.createElement(M,{className:k.root},a.createElement(S,{container:!0,direction:"row"},a.createElement(z,{viewMode:c,setViewMode:C,isLoading:R,searchTerm:t,setSearchTerm:E,searchPlaceholder:"Search Available Campaigns",fetchCsvData:L,csvFilename:N}),c===u.TABLE&&a.createElement(H,{data:o,columns:b}),c===u.GRID&&a.createElement(V,{data:O(o.slice(n*l,(n+1)*l),void 0,m,r),totalCount:o?.length??0,page:n,rowsPerPage:l,onPageChange:y,onRowsPerPageChange:G})))};export{U as CampaignResultsTab};
|
|
2
2
|
//# sourceMappingURL=CampaignResultsTab.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRouteRef as v}from"@backstage/core-plugin-api";import{Typography as R,Box as L,Grid as N}from"@material-ui/core";import r,{useState as m,useEffect as A}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useCheckPassRateTrend as D}from"../../../hooks/aggregations/useCheckPassRateTrend.esm.js";import"react-router-dom";import{checkDetailsRouteRef as y}from"../../../routes.esm.js";import{checkPassRatesCsvFilename as M}from"../../../utils/charts.esm.js";import{PassRateGrid as O}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as S}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as x}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as F}from"../../TechHealth/Loading/Loading.esm.js";import{NameColumn as G}from"../NameColumn.esm.js";import{ActionColumn as B}from"../ActionColumn.esm.js";import{OwnerColumn as I}from"../OwnerColumn.esm.js";import{checkPassRatesToCsv as V}from"../TechHealthExportFunctions.esm.js";import{PassRateTabHeader as z}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as H}from"../PassRateTabStyles.esm.js";import{ViewMode as C,generateCheckPassRateGridData as W}from"../techHealthTabUtils.esm.js";import"recharts";import"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../../Charts/BarChart/BarChart.esm.js";import"../../PassRateTable/NewPassRateTable.esm.js";import{MostRecentColumn as j}from"../MostRecentColumn.esm.js";import{CheckTrendColumn as q}from"./CheckTrendColumn.esm.js";function J(s){return[{label:"NAME",id:"checkName",renderCell:e=>r.createElement(G,{name:e.checkName??e.id,description:e.checkDescription})},{label:"LATEST",id:"snapshotPassRate",renderCell:e=>r.createElement(j,{snapshot:e.snapshotPassRate})},{label:"TREND",id:"trendPassRate",renderCell:e=>r.createElement(q,{row:e})},{label:"OWNER",id:"checkOwner",renderCell:e=>r.createElement(I,{ownerEntityRef:e.checkOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:(e,o,n)=>r.createElement(B,{navigateTo:s({checkId:e.id}),disabled:o,toolTipText:n})}]}const K=()=>{const s=H(),{filter:e}=x(),o=v(y),{data:n,isLoading:u,isError:E}=D(e),[c,k]=m(C.TABLE),[t,T]=m(""),[l,p]=m(0),[d,P]=m(10);if(A(()=>{p(0)},[e,t]),u)return r.createElement(F,null);if(E)return r.createElement(R,{color:"error"},"Failed to load checks");const{individualCheckPassRates:h}=n;if(!h)return r.createElement(R,{color:"error"},"No available checks");const a=t.length?h.filter(({id:i,checkName:f})=>f?.toLowerCase()?.includes(t.toLowerCase())||i.toLowerCase().includes(t.toLowerCase())):h,w=async()=>V(a),g=(i,f)=>{p(()=>f)},b=i=>{P(+i.target.value),p(0)};return r.createElement(L,{className:s.root},r.createElement(N,{container:!0,direction:"row"},r.createElement(z,{viewMode:c,setViewMode:k,isLoading:u,searchTerm:t,setSearchTerm:T,searchPlaceholder:"Search for Available Checks",fetchCsvData:w,csvFilename:M}),c===C.TABLE&&r.createElement(S,{data:a,columns:J(o),showsCheckData:!0}),c===C.GRID&&r.createElement(O,{data:W(a.slice(l*d,(l+1)*d),o),totalCount:a?.length??0,page:l,rowsPerPage:d,onPageChange:g,onRowsPerPageChange:b})))};export{K as CheckResultsTab};
|
|
1
|
+
import{useRouteRef as v}from"@backstage/core-plugin-api";import{Typography as R,Box as L,Grid as N}from"@material-ui/core";import r,{useState as m,useEffect as A}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useCheckPassRateTrend as D}from"../../../hooks/aggregations/useCheckPassRateTrend.esm.js";import"react-router-dom";import{checkDetailsRouteRef as y}from"../../../routes.esm.js";import{checkPassRatesCsvFilename as M}from"../../../utils/charts.esm.js";import{PassRateGrid as O}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as S}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as x}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as F}from"../../TechHealth/Loading/Loading.esm.js";import{NameColumn as G}from"../NameColumn.esm.js";import{ActionColumn as B}from"../ActionColumn.esm.js";import{OwnerColumn as I}from"../OwnerColumn.esm.js";import{checkPassRatesToCsv as V}from"../TechHealthExportFunctions.esm.js";import{PassRateTabHeader as z}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as H}from"../PassRateTabStyles.esm.js";import{ViewMode as C,generateCheckPassRateGridData as W}from"../techHealthTabUtils.esm.js";import"recharts";import"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../../Charts/BarChart/BarChart.esm.js";import"../../PassRateTable/NewPassRateTable.esm.js";import{MostRecentColumn as j}from"../MostRecentColumn.esm.js";import{CheckTrendColumn as q}from"./CheckTrendColumn.esm.js";function J(s){return[{label:"NAME",id:"checkName",renderCell:e=>r.createElement(G,{name:e.checkName??e.id,description:e.checkDescription})},{label:"LATEST",id:"snapshotPassRate",renderCell:e=>r.createElement(j,{snapshot:e.snapshotPassRate})},{label:"TREND",id:"trendPassRate",renderCell:e=>r.createElement(q,{row:e})},{label:"OWNER",id:"checkOwner",renderCell:e=>r.createElement(I,{ownerEntityRef:e.checkOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:(e,o,n)=>r.createElement(B,{navigateTo:s({checkId:e.id}),disabled:o,toolTipText:n})}]}const K=()=>{const s=H(),{filter:e}=x(),o=v(y),{data:n,isLoading:u,isError:E}=D(e),[c,k]=m(C.TABLE),[t,T]=m(""),[l,p]=m(0),[d,P]=m(10);if(A(()=>{p(0)},[e,t]),u)return r.createElement(F,null);if(E)return r.createElement(R,{color:"error"},"Failed to load checks");const{individualCheckPassRates:h}=n;if(!h)return r.createElement(R,{color:"error"},"No available checks");const a=t.length?h.filter(({id:i,checkName:f})=>f?.toLowerCase()?.includes(t.toLowerCase())||i.toLowerCase().includes(t.toLowerCase())):h,w=async()=>V(a),g=(i,f)=>{p(()=>f)},b=i=>{P(+i.target.value),p(0)};return r.createElement(L,{className:s.root},r.createElement(N,{container:!0,direction:"row"},r.createElement(z,{viewMode:c,setViewMode:k,isLoading:u,searchTerm:t,setSearchTerm:T,searchPlaceholder:"Search for Available Checks",fetchCsvData:w,csvFilename:M}),c===C.TABLE&&r.createElement(S,{data:a,columns:J(o),showsCheckData:!0}),c===C.GRID&&r.createElement(O,{data:W(a.slice(l*d,(l+1)*d),o),totalCount:a?.length??0,page:l,rowsPerPage:d,onPageChange:g,onRowsPerPageChange:b})))};export{K as CheckResultsTab};
|
|
2
2
|
//# sourceMappingURL=CheckResultsTab.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as N}from"@backstage/catalog-model";import{useApi as V,useRouteRef as H}from"@backstage/core-plugin-api";import{entityRouteRef as W}from"@backstage/plugin-catalog-react";import{Typography as L,Box as $,Grid as j}from"@material-ui/core";import t,{useState as i,useEffect as A}from"react";import{soundcheckApiRef as q}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useEntityPassRateTrend as z}from"../../../hooks/aggregations/useEntityPassRateTrend.esm.js";import"react-router-dom";import{entityPassRatesCsvFilename as J}from"../../../utils/charts.esm.js";import{PassRateGrid as K}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as Q}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as U}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as X}from"../../TechHealth/Loading/Loading.esm.js";import{ActionColumn as Y}from"../ActionColumn.esm.js";import{MostRecentColumn as Z}from"../MostRecentColumn.esm.js";import{NameColumn as _}from"../NameColumn.esm.js";import{OwnerColumn as ee}from"../OwnerColumn.esm.js";import{PassRateTabHeader as te}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as re}from"../PassRateTabStyles.esm.js";import{entityPassRatesToCsv as oe}from"../TechHealthExportFunctions.esm.js";import{ViewMode as f,generateEntityPassRateGridData as ae}from"../techHealthTabUtils.esm.js";import{EntityTrendColumn as ie}from"./EntityTrendColumn.esm.js";function ne(d){return[{label:"NAME",id:"entityName",renderCell:({id:r,entityDescription:n})=>t.createElement(_,{name:N(r).name,description:n})},{label:"LATEST",id:"latest",renderCell:r=>t.createElement(Z,{snapshot:r.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:r=>t.createElement(ie,{row:r})},{label:"OWNER",id:"entityOwnerRef",renderCell:({entityOwnerRef:r})=>t.createElement(ee,{ownerEntityRef:r??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>t.createElement(Y,{navigateTo:`${d(N(r))}/soundcheck`})}]}const se=()=>{const d=re(),r=V(q),{filter:n}=U(),g=H(W),[E,P]=i([]),[R,s]=i(void 0),[C,p]=i(0),[u,I]=i(10),{data:o,isLoading:y,isError:x}=z({filter:n,first:u,after:R}),[a,D]=i(o?.individualEntityPassRates),S=a?.edges?a?.edges[a?.edges.length-1]:{cursor:""};A(()=>{o&&D(()=>({totalCount:o.individualEntityPassRates.totalCount,edges:o.individualEntityPassRates.edges,pageInfo:{endCursor:o.individualEntityPassRates.pageInfo.endCursor,hasNextPage:o.individualEntityPassRates.pageInfo.hasNextPage??!1,hasPreviousPage:o.individualEntityPassRates.pageInfo.hasPreviousPage??!1}}))},[o]);const[c,F]=i(f.TABLE),[m,G]=i("");if(A(()=>{p(0),s("")},[n]),y)return t.createElement(X,null);if(x)return t.createElement(L,{color:"error"},"Failed to load entities");if(!a?.edges?.length)return t.createElement(L,{color:"error"},"No available entities");const h=m.length?{...a,edges:a.edges.filter(({node:e})=>e.id.toLowerCase().includes(m.toLowerCase())),totalCount:a.edges.filter(({node:e})=>e.id.toLowerCase().includes(m.toLowerCase())).length}:a,v=h?.edges.map(({node:e})=>e)??[],w=h?.totalCount??0,M=async()=>{const{individualEntityPassRates:e}=await r.getIndividualEntityPassRates({filter:n});return oe(e.edges.map(({node:l})=>l))},O=()=>{P(e=>[...e,R]),s(S?.cursor)},B=()=>{s(E[E.length-1]),P(e=>e.slice(0,-1))},T=(e,l)=>{p(k=>(l>k?O():B(),l))},b=e=>{s(void 0),I(+e.target.value),p(0)};return t.createElement($,{className:d.root},t.createElement(j,{container:!0,direction:"row"},t.createElement(te,{viewMode:c,setViewMode:F,isLoading:y,searchTerm:m,setSearchTerm:G,searchPlaceholder:"Search available entities",fetchCsvData:M,csvFilename:J}),c===f.TABLE&&t.createElement(Q,{data:v,totalCount:w,page:C,rowsPerPage:u,columns:ne(g),onPageChange:T,onRowsPerPageChange:b}),c===f.GRID&&t.createElement(K,{data:ae(v,g),totalCount:w,page:C,rowsPerPage:u,onPageChange:T,onRowsPerPageChange:b})))};export{se as EntityResultsTab};
|
|
1
|
+
import{parseEntityRef as N}from"@backstage/catalog-model";import{useApi as V,useRouteRef as H}from"@backstage/core-plugin-api";import{entityRouteRef as W}from"@backstage/plugin-catalog-react";import{Typography as L,Box as $,Grid as j}from"@material-ui/core";import t,{useState as i,useEffect as A}from"react";import{soundcheckApiRef as q}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useEntityPassRateTrend as z}from"../../../hooks/aggregations/useEntityPassRateTrend.esm.js";import"react-router-dom";import{entityPassRatesCsvFilename as J}from"../../../utils/charts.esm.js";import{PassRateGrid as K}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as Q}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as U}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as X}from"../../TechHealth/Loading/Loading.esm.js";import{ActionColumn as Y}from"../ActionColumn.esm.js";import{MostRecentColumn as Z}from"../MostRecentColumn.esm.js";import{NameColumn as _}from"../NameColumn.esm.js";import{OwnerColumn as ee}from"../OwnerColumn.esm.js";import{PassRateTabHeader as te}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as re}from"../PassRateTabStyles.esm.js";import{entityPassRatesToCsv as oe}from"../TechHealthExportFunctions.esm.js";import{ViewMode as f,generateEntityPassRateGridData as ae}from"../techHealthTabUtils.esm.js";import{EntityTrendColumn as ie}from"./EntityTrendColumn.esm.js";function ne(d){return[{label:"NAME",id:"entityName",renderCell:({id:r,entityDescription:n})=>t.createElement(_,{name:N(r).name,description:n})},{label:"LATEST",id:"latest",renderCell:r=>t.createElement(Z,{snapshot:r.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:r=>t.createElement(ie,{row:r})},{label:"OWNER",id:"entityOwnerRef",renderCell:({entityOwnerRef:r})=>t.createElement(ee,{ownerEntityRef:r??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>t.createElement(Y,{navigateTo:`${d(N(r))}/soundcheck`})}]}const se=()=>{const d=re(),r=V(q),{filter:n}=U(),g=H(W),[E,P]=i([]),[R,s]=i(void 0),[C,p]=i(0),[u,I]=i(10),{data:o,isLoading:y,isError:x}=z({filter:n,first:u,after:R}),[a,D]=i(o?.individualEntityPassRates),S=a?.edges?a?.edges[a?.edges.length-1]:{cursor:""};A(()=>{o&&D(()=>({totalCount:o.individualEntityPassRates.totalCount,edges:o.individualEntityPassRates.edges,pageInfo:{endCursor:o.individualEntityPassRates.pageInfo.endCursor,hasNextPage:o.individualEntityPassRates.pageInfo.hasNextPage??!1,hasPreviousPage:o.individualEntityPassRates.pageInfo.hasPreviousPage??!1}}))},[o]);const[c,F]=i(f.TABLE),[m,G]=i("");if(A(()=>{p(0),s("")},[n]),y)return t.createElement(X,null);if(x)return t.createElement(L,{color:"error"},"Failed to load entities");if(!a?.edges?.length)return t.createElement(L,{color:"error"},"No available entities");const h=m.length?{...a,edges:a.edges.filter(({node:e})=>e.id.toLowerCase().includes(m.toLowerCase())),totalCount:a.edges.filter(({node:e})=>e.id.toLowerCase().includes(m.toLowerCase())).length}:a,v=h?.edges.map(({node:e})=>e)??[],w=h?.totalCount??0,M=async()=>{const{individualEntityPassRates:e}=await r.getIndividualEntityPassRates({filter:n});return oe(e.edges.map(({node:l})=>l))},O=()=>{P(e=>[...e,R]),s(S?.cursor)},B=()=>{s(E[E.length-1]),P(e=>e.slice(0,-1))},T=(e,l)=>{p(k=>(l>k?O():B(),l))},b=e=>{s(void 0),I(+e.target.value),p(0)};return t.createElement($,{className:d.root},t.createElement(j,{container:!0,direction:"row"},t.createElement(te,{viewMode:c,setViewMode:F,isLoading:y,searchTerm:m,setSearchTerm:G,searchPlaceholder:"Search available entities",fetchCsvData:M,csvFilename:J}),c===f.TABLE&&t.createElement(Q,{data:v,totalCount:w,page:C,rowsPerPage:u,columns:ne(g),onPageChange:T,onRowsPerPageChange:b}),c===f.GRID&&t.createElement(K,{data:ae(v,g),totalCount:w,page:C,rowsPerPage:u,onPageChange:T,onRowsPerPageChange:b})))};export{se as EntityResultsTab};
|
|
2
2
|
//# sourceMappingURL=EntityResultsTab.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as G}from"@backstage/catalog-model";import{useApi as H,useRouteRef as O}from"@backstage/core-plugin-api";import{entityRouteRef as j}from"@backstage/plugin-catalog-react";import{Typography as L,Box as q,Grid as z}from"@material-ui/core";import r,{useState as s,useEffect as A}from"react";import{soundcheckApiRef as J}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGroupPassRateTrend as K}from"../../../hooks/aggregations/useGroupPassRateTrend.esm.js";import"react-router-dom";import{groupPassRatesCsvFilename as Q}from"../../../utils/charts.esm.js";import{PassRateGrid as U}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as W}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as X}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as Y}from"../../TechHealth/Loading/Loading.esm.js";import{ActionColumn as Z}from"../ActionColumn.esm.js";import{MostRecentColumn as _}from"../MostRecentColumn.esm.js";import{NameColumn as $}from"../NameColumn.esm.js";import{PassRateTabHeader as ee}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as re}from"../PassRateTabStyles.esm.js";import{groupPassRatesToCsv as te}from"../TechHealthExportFunctions.esm.js";import{ViewMode as c,generateGroupPassRateGridData as oe}from"../techHealthTabUtils.esm.js";import{GroupTrendColumn as ae}from"./GroupTrendColumn.esm.js";function se(p){return[{label:"NAME",id:"groupName",renderCell:({groupTitle:t,id:i})=>r.createElement($,{name:t??G(i).name})},{label:"LATEST",id:"latest",renderCell:t=>r.createElement(_,{snapshot:t.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:t=>r.createElement(ae,{row:t})},{label:"ACTION",id:"action",renderCell:({id:t})=>r.createElement(Z,{navigateTo:p(G(t))})}]}const ie=()=>{const p=re(),t=H(J),{filter:i}=X();i.context=void 0;const f=O(j),[P,R]=s([]),[C,n]=s(void 0),[h,u]=s(0),[g,I]=s(10),{data:o,isLoading:E,isError:x}=K({filter:i,first:g,after:C}),[a,y]=s(o?.groupPassRates),S=a?.edges?a?.edges[a?.edges.length-1]:{cursor:""};A(()=>{o&&y(()=>({totalCount:o.groupPassRates.totalCount,edges:o.groupPassRates.edges,pageInfo:{endCursor:o.groupPassRates.pageInfo.endCursor,hasNextPage:o.groupPassRates.pageInfo.hasNextPage??!1,hasPreviousPage:o.groupPassRates.pageInfo.hasPreviousPage??!1}}))},[o]);const[d,D]=s(c.TABLE),[m,F]=s("");if(A(()=>{u(0),n("")},[i]),E)return r.createElement(Y,null);if(x)return r.createElement(L,{color:"error"},"Failed to load groups");if(!a?.edges?.length)return r.createElement(L,{color:"error"},"No available groups");const T=m.length?{...a,edges:a.edges.filter(({node:e})=>e.groupTitle?.toLowerCase()?.includes(m.toLowerCase())||e.id.toLowerCase().includes(m.toLowerCase()))}:a,v=T?.edges.map(({node:e})=>e)??[],w=T?.totalCount??0,M=async()=>{const{groupPassRates:e}=await t.getIndividualGroupPassRates({filter:i});return te(e.edges.map(({node:l})=>l))},B=()=>{R(e=>[...e,C]),n(S?.cursor)},V=()=>{n(P[P.length-1]),R(e=>e.slice(0,-1))},b=(e,l)=>{u(k=>(l>k?B():V(),l))},N=e=>{n(void 0),I(+e.target.value),u(0)};return r.createElement(q,{className:p.root},r.createElement(z,{container:!0,direction:"row"},r.createElement(ee,{viewMode:d,setViewMode:D,isLoading:E,searchTerm:m,setSearchTerm:F,searchPlaceholder:"Search available teams",csvFilename:Q,fetchCsvData:M}),d===c.TABLE&&r.createElement(W,{data:v,totalCount:w,page:h,rowsPerPage:g,columns:se(f),onPageChange:b,onRowsPerPageChange:N}),d===c.GRID&&r.createElement(U,{data:oe(v,f),totalCount:w,page:h,rowsPerPage:g,onPageChange:b,onRowsPerPageChange:N})))};export{ie as GroupResultsTab};
|
|
1
|
+
import{parseEntityRef as G}from"@backstage/catalog-model";import{useApi as H,useRouteRef as O}from"@backstage/core-plugin-api";import{entityRouteRef as j}from"@backstage/plugin-catalog-react";import{Typography as L,Box as q,Grid as z}from"@material-ui/core";import r,{useState as s,useEffect as A}from"react";import{soundcheckApiRef as J}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGroupPassRateTrend as K}from"../../../hooks/aggregations/useGroupPassRateTrend.esm.js";import"react-router-dom";import{groupPassRatesCsvFilename as Q}from"../../../utils/charts.esm.js";import{PassRateGrid as U}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as W}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as X}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as Y}from"../../TechHealth/Loading/Loading.esm.js";import{ActionColumn as Z}from"../ActionColumn.esm.js";import{MostRecentColumn as _}from"../MostRecentColumn.esm.js";import{NameColumn as $}from"../NameColumn.esm.js";import{PassRateTabHeader as ee}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as re}from"../PassRateTabStyles.esm.js";import{groupPassRatesToCsv as te}from"../TechHealthExportFunctions.esm.js";import{ViewMode as c,generateGroupPassRateGridData as oe}from"../techHealthTabUtils.esm.js";import{GroupTrendColumn as ae}from"./GroupTrendColumn.esm.js";function se(p){return[{label:"NAME",id:"groupName",renderCell:({groupTitle:t,id:i})=>r.createElement($,{name:t??G(i).name})},{label:"LATEST",id:"latest",renderCell:t=>r.createElement(_,{snapshot:t.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:t=>r.createElement(ae,{row:t})},{label:"ACTION",id:"action",renderCell:({id:t})=>r.createElement(Z,{navigateTo:p(G(t))})}]}const ie=()=>{const p=re(),t=H(J),{filter:i}=X();i.context=void 0;const f=O(j),[P,R]=s([]),[C,n]=s(void 0),[h,u]=s(0),[g,I]=s(10),{data:o,isLoading:E,isError:x}=K({filter:i,first:g,after:C}),[a,y]=s(o?.groupPassRates),S=a?.edges?a?.edges[a?.edges.length-1]:{cursor:""};A(()=>{o&&y(()=>({totalCount:o.groupPassRates.totalCount,edges:o.groupPassRates.edges,pageInfo:{endCursor:o.groupPassRates.pageInfo.endCursor,hasNextPage:o.groupPassRates.pageInfo.hasNextPage??!1,hasPreviousPage:o.groupPassRates.pageInfo.hasPreviousPage??!1}}))},[o]);const[d,D]=s(c.TABLE),[m,F]=s("");if(A(()=>{u(0),n("")},[i]),E)return r.createElement(Y,null);if(x)return r.createElement(L,{color:"error"},"Failed to load groups");if(!a?.edges?.length)return r.createElement(L,{color:"error"},"No available groups");const T=m.length?{...a,edges:a.edges.filter(({node:e})=>e.groupTitle?.toLowerCase()?.includes(m.toLowerCase())||e.id.toLowerCase().includes(m.toLowerCase()))}:a,v=T?.edges.map(({node:e})=>e)??[],w=T?.totalCount??0,M=async()=>{const{groupPassRates:e}=await t.getIndividualGroupPassRates({filter:i});return te(e.edges.map(({node:l})=>l))},B=()=>{R(e=>[...e,C]),n(S?.cursor)},V=()=>{n(P[P.length-1]),R(e=>e.slice(0,-1))},b=(e,l)=>{u(k=>(l>k?B():V(),l))},N=e=>{n(void 0),I(+e.target.value),u(0)};return r.createElement(q,{className:p.root},r.createElement(z,{container:!0,direction:"row"},r.createElement(ee,{viewMode:d,setViewMode:D,isLoading:E,searchTerm:m,setSearchTerm:F,searchPlaceholder:"Search available teams",csvFilename:Q,fetchCsvData:M}),d===c.TABLE&&r.createElement(W,{data:v,totalCount:w,page:h,rowsPerPage:g,columns:se(f),onPageChange:b,onRowsPerPageChange:N}),d===c.GRID&&r.createElement(U,{data:oe(v,f),totalCount:w,page:h,rowsPerPage:g,onPageChange:b,onRowsPerPageChange:N})))};export{ie as GroupResultsTab};
|
|
2
2
|
//# sourceMappingURL=GroupResultsTab.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRouteRef as N}from"@backstage/core-plugin-api";import{Typography as k,Box as O,Grid as A}from"@material-ui/core";import e,{useState as d,useEffect as y,useMemo as D}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as S}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{trackDetailsRouteRef as F}from"../../../routes.esm.js";import{trackPassRatesCsvFilename as G}from"../../../utils/charts.esm.js";import{PassRateGrid as x}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as B}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as V}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as I}from"../../TechHealth/Loading/Loading.esm.js";import{trackPassRatesToCsv as $}from"../TechHealthExportFunctions.esm.js";import{ActionColumn as H}from"../ActionColumn.esm.js";import{NameColumn as W}from"../NameColumn.esm.js";import{OwnerColumn as j}from"../OwnerColumn.esm.js";import{PassRateTabHeader as q}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as z}from"../PassRateTabStyles.esm.js";import{ViewMode as g,generateTrackPassRateGridData as J,getDetailsRoute as K}from"../techHealthTabUtils.esm.js";import{TrackTrendColumn as Q}from"./TrackLevelTrendColumn.esm.js";const v=(m,n,a)=>{const i=Math.min(5,n-m+1);return Array.from({length:i}).map((l,s)=>{const o=m+s;return{label:a?"PROGRESS":`LEVEL ${o}`,id:`levels-${s}`,renderCell:r=>{const t=r.levels?.find(({levelOrdinal:u})=>u===o);return t?e.createElement(Q,{row:t}):e.createElement(e.Fragment,null)}}})},P=(m,n,a,i)=>{const l=m.flatMap(r=>r.levels?.map(t=>t.levelOrdinal)||[]),s=Math.min(...l),o=Math.max(...l);return[{label:"NAME",id:"trackName",renderCell:r=>e.createElement(W,{name:r.trackName??r.id,description:r.trackDescription})},...v(s,o,!!a),{label:"OWNER",id:"trackOwnerRef",renderCell:r=>e.createElement(j,{ownerEntityRef:r.trackOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>e.createElement(H,{navigateTo:K(r,n,a,i)})}]},U=()=>{const m=z(),{filter:n}=V(),a=N(F),{data:i,isLoading:l,isError:s}=S(n),[o,r]=d(g.TABLE),[t,u]=d(""),[f,R]=d(0),[E,h]=d(10);y(()=>{R(0)},[n,t]);const w=D(()=>P(i?.individualTrackPassRate??[],a),[i?.individualTrackPassRate,a]);if(l)return e.createElement(I,null);if(s)return e.createElement(k,{color:"error"},"Failed to load tracks");const{individualTrackPassRate:T}=i;if(!T)return e.createElement(k,{color:"error"},"No available tracks");const c=t.length?T.filter(({id:p,trackName:C})=>C?.toLowerCase()?.includes(t.toLowerCase())||p.toLowerCase().includes(t.toLowerCase())):T,b=async()=>$(c),L=(p,C)=>{R(()=>C)},M=p=>{h(+p.target.value),R(0)};return e.createElement(O,{className:m.root},e.createElement(A,{container:!0,direction:"row"},e.createElement(q,{viewMode:o,setViewMode:r,isLoading:l,searchTerm:t,setSearchTerm:u,searchPlaceholder:"Search Available Tracks",fetchCsvData:b,csvFilename:G}),o===g.TABLE&&e.createElement(B,{data:c,columns:w}),o===g.GRID&&e.createElement(x,{data:J(c.slice(f*E,(f+1)*E),a),totalCount:c?.length??0,page:f,rowsPerPage:E,onPageChange:L,onRowsPerPageChange:M})))};export{U as TrackResultsTab,P as generateColumns,v as generateTrendColumns};
|
|
1
|
+
import{useRouteRef as N}from"@backstage/core-plugin-api";import{Typography as k,Box as O,Grid as A}from"@material-ui/core";import e,{useState as d,useEffect as y,useMemo as D}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as S}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{trackDetailsRouteRef as F}from"../../../routes.esm.js";import{trackPassRatesCsvFilename as G}from"../../../utils/charts.esm.js";import{PassRateGrid as x}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as B}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as V}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as I}from"../../TechHealth/Loading/Loading.esm.js";import{trackPassRatesToCsv as $}from"../TechHealthExportFunctions.esm.js";import{ActionColumn as H}from"../ActionColumn.esm.js";import{NameColumn as W}from"../NameColumn.esm.js";import{OwnerColumn as j}from"../OwnerColumn.esm.js";import{PassRateTabHeader as q}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as z}from"../PassRateTabStyles.esm.js";import{ViewMode as g,generateTrackPassRateGridData as J,getDetailsRoute as K}from"../techHealthTabUtils.esm.js";import{TrackTrendColumn as Q}from"./TrackLevelTrendColumn.esm.js";const v=(m,n,a)=>{const i=Math.min(5,n-m+1);return Array.from({length:i}).map((l,s)=>{const o=m+s;return{label:a?"PROGRESS":`LEVEL ${o}`,id:`levels-${s}`,renderCell:r=>{const t=r.levels?.find(({levelOrdinal:u})=>u===o);return t?e.createElement(Q,{row:t}):e.createElement(e.Fragment,null)}}})},P=(m,n,a,i)=>{const l=m.flatMap(r=>r.levels?.map(t=>t.levelOrdinal)||[]),s=Math.min(...l),o=Math.max(...l);return[{label:"NAME",id:"trackName",renderCell:r=>e.createElement(W,{name:r.trackName??r.id,description:r.trackDescription})},...v(s,o,!!a),{label:"OWNER",id:"trackOwnerRef",renderCell:r=>e.createElement(j,{ownerEntityRef:r.trackOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>e.createElement(H,{navigateTo:K(r,n,a,i)})}]},U=()=>{const m=z(),{filter:n}=V(),a=N(F),{data:i,isLoading:l,isError:s}=S(n),[o,r]=d(g.TABLE),[t,u]=d(""),[f,R]=d(0),[E,h]=d(10);y(()=>{R(0)},[n,t]);const w=D(()=>P(i?.individualTrackPassRate??[],a),[i?.individualTrackPassRate,a]);if(l)return e.createElement(I,null);if(s)return e.createElement(k,{color:"error"},"Failed to load tracks");const{individualTrackPassRate:T}=i;if(!T)return e.createElement(k,{color:"error"},"No available tracks");const c=t.length?T.filter(({id:p,trackName:C})=>C?.toLowerCase()?.includes(t.toLowerCase())||p.toLowerCase().includes(t.toLowerCase())):T,b=async()=>$(c),L=(p,C)=>{R(()=>C)},M=p=>{h(+p.target.value),R(0)};return e.createElement(O,{className:m.root},e.createElement(A,{container:!0,direction:"row"},e.createElement(q,{viewMode:o,setViewMode:r,isLoading:l,searchTerm:t,setSearchTerm:u,searchPlaceholder:"Search Available Tracks",fetchCsvData:b,csvFilename:G}),o===g.TABLE&&e.createElement(B,{data:c,columns:w}),o===g.GRID&&e.createElement(x,{data:J(c.slice(f*E,(f+1)*E),a),totalCount:c?.length??0,page:f,rowsPerPage:E,onPageChange:L,onRowsPerPageChange:M})))};export{U as TrackResultsTab,P as generateColumns,v as generateTrendColumns};
|
|
2
2
|
//# sourceMappingURL=TrackResultsTab.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t,{useEffect as s}from"react";import{TrackFormProvider as p,useTrackFormContext as l}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useCreateTrack as k}from"../../hooks/tracks/useCreateTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import{tracksPageRouteRef as f}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as g}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as d}from"../TrackForm/TrackForm.esm.js";const o=()=>{const{setIsLoading:e}=l(),{mutateAsync:i,isLoading:r}=k();s(()=>{e(r)},[e,r]);const[a,m]=u(f),c=async n=>{await i(n,{onSuccess:m})};return g({title:"Create Track",description:"Create a new track that aligns with your organization's long-term tech health initiatives by entering the details below.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),t.createElement(d,{handleClose:a,onSave:c})},h=()=>t.createElement(p,null,t.createElement(o,null));export{h as TrackCreatePage,o as TrackCreateView};
|
|
1
|
+
import t,{useEffect as s}from"react";import{TrackFormProvider as p,useTrackFormContext as l}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useCreateTrack as k}from"../../hooks/tracks/useCreateTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import{tracksPageRouteRef as f}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as g}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as d}from"../TrackForm/TrackForm.esm.js";const o=()=>{const{setIsLoading:e}=l(),{mutateAsync:i,isLoading:r}=k();s(()=>{e(r)},[e,r]);const[a,m]=u(f),c=async n=>{await i(n,{onSuccess:m})};return g({title:"Create Track",description:"Create a new track that aligns with your organization's long-term tech health initiatives by entering the details below.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),t.createElement(d,{handleClose:a,onSave:c})},h=()=>t.createElement(p,null,t.createElement(o,null));export{h as TrackCreatePage,o as TrackCreateView};
|
|
2
2
|
//# sourceMappingURL=TrackCreatePage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import l,{useEffect as e,useCallback as f}from"react";import{useTrackFormContext as E}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as g}from"../../hooks/useNavigateBack.esm.js";import{useUpdateTrack as y}from"../../hooks/tracks/useUpdateTrack.esm.js";import{tracksPageRouteRef as h}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as T}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as w}from"../TrackForm/TrackForm.esm.js";const b=({track:t,canEdit:p})=>{const{setSelectedItem:i,setIsLoading:
|
|
1
|
+
import l,{useEffect as e,useCallback as f}from"react";import{useTrackFormContext as E}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as g}from"../../hooks/useNavigateBack.esm.js";import{useUpdateTrack as y}from"../../hooks/tracks/useUpdateTrack.esm.js";import{tracksPageRouteRef as h}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as T}from"../SoundcheckHeader/useHeader.esm.js";import{TrackForm as w}from"../TrackForm/TrackForm.esm.js";const b=({track:t,canEdit:p})=>{const{setSelectedItem:i,setIsLoading:m,selectedItem:n,showReadOnly:r}=E(),{mutateAsync:c,isLoading:s}=y();e(()=>m(s),[m,s]);const o=!p||!t.isEditable;e(()=>{o?r(t):i(t)},[t,i,o,r]);const[d,a]=g(h),k=f(async u=>{await c(u,{onSuccess:a})},[a,c]);return e(()=>{},[t,r,o]),T({title:`${o?"View":"Edit"} Track`,description:"Edit your track's details to match your needs.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks"}),n?l.createElement(w,{handleClose:d,onSave:k}):null};export{b as TrackEditView};
|
|
2
2
|
//# sourceMappingURL=TrackEditView.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{zodResolver as S}from"@hookform/resolvers/zod";import{useMemo as v,useEffect as h}from"react";import{useForm as k}from"react-hook-form";import{v4 as R}from"uuid";import{useTrackFormContext as y}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as F}from"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetChecksMap as w}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{mapInputFilterToFormFilters as E,mapFiltersToInputFilter as T}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{trackFormSchema as g}from"./validation.esm.js";const l={detailsStep:{name:"",description:"",ownerEntityRef:""},levelsStep:{levels:[{name:"Level 1",description:"",checks:[]}]},filtersStep:{}},M=({name:t,description:o,ownerEntityRef:r,filter:e,levels:i,documentationURL:
|
|
1
|
+
import{zodResolver as S}from"@hookform/resolvers/zod";import{useMemo as v,useEffect as h}from"react";import{useForm as k}from"react-hook-form";import{v4 as R}from"uuid";import{useTrackFormContext as y}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as F}from"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetChecksMap as w}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{mapInputFilterToFormFilters as E,mapFiltersToInputFilter as T}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{trackFormSchema as g}from"./validation.esm.js";const l={detailsStep:{name:"",description:"",ownerEntityRef:""},levelsStep:{levels:[{name:"Level 1",description:"",checks:[]}]},filtersStep:{}},M=({name:t,description:o,ownerEntityRef:r,filter:e,levels:i,documentationURL:p})=>({detailsStep:{name:t,ownerEntityRef:r,description:o??"",documentationURL:p??void 0},levelsStep:{levels:i?.map(s=>({name:s.name??`Level ${s.ordinal}`??"Level 1",description:s.description??"",checks:s.checks.map(n=>({id:n.id,name:n.name??n.id,description:n.description??""}))}))||[]},filtersStep:{filter:E(e)}}),c=(t,o,r)=>({id:r?.id??R(),ownerEntityRef:t.detailsStep.ownerEntityRef,description:t.detailsStep.description,name:t.detailsStep.name,documentationURL:t.detailsStep.documentationURL??"",type:r?.type??"standard",levels:t.levelsStep.levels?.map((e,i)=>({ordinal:i+1,name:e.name??"",description:e.description??"",checks:e.checks.map(p=>o[p.id])})),filter:T(t.filtersStep.filter)}),C=t=>{const{selectedItem:o}=y(),r=v(()=>o?M(o):l,[o]),e=k({defaultValues:r,mode:"onChange",resolver:S(g)}),{userEntityRef:i}=F();h(()=>{!o&&i&&!e.getValues("detailsStep.ownerEntityRef")&&e.setValue("detailsStep.ownerEntityRef",i)},[o,i,e]);const{checkChips:p,checksLoading:s,checksMap:n}=w(),d=new Set(e.getValues("levelsStep.levels").flatMap(m=>m.checks.map(a=>a.id))),f=p.filter(m=>!d.has(m.id)),{showModal:u}=L();return{formMethods:e,onSubmit:async m=>{if(!await u({title:"Save Track",message:`Are you sure you want to save track: ${m.detailsStep.name}?`,error:!1}))return;const a=c(m,n??{},o);t(a)},selectableChips:f,checksLoading:s}};export{l as DEFAULT_TRACK_FORM_VALUES,c as mapTrackFormToInput,C as useTrackForm};
|
|
2
2
|
//# sourceMappingURL=useTrackForm.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const p=r=>{const{lifecycles:e,owners:t,types:s,systems:l}=r,n=e?.length?{"spec.lifecycle":e}:void 0,o=t?.length?{"relations.ownedBy":t}:void 0,i=s?.length?{"spec.type":s}:void 0,c=l?.length?{"relations.partOf":l}:void 0;if(n||o||i||c)return{...n,...o,...i,...c}};export{p as toFilter};
|
|
2
|
+
//# sourceMappingURL=util.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{stringifyEntityRef as B}from"@backstage/catalog-model";import{Table as R}from"@backstage/core-components";import{makeStyles as
|
|
1
|
+
import{stringifyEntityRef as B}from"@backstage/catalog-model";import{Table as R}from"@backstage/core-components";import{makeStyles as z}from"@material-ui/core";import L from"lodash";import u,{useState as P,useEffect as O,useCallback as y}from"react";import{TrackEntityField as r,Direction as C}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as x}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as D}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as a}from"./columns.esm.js";import{toTrackEntityRow as F}from"./utils.esm.js";const N=10,A=[a.createBadgeColumn(),a.createNameColumn(),a.createStatusColumn(),a.createSystemColumn(),a.createOwnerColumn(),a.createSpecTypeColumn(),a.createSpecLifecycleColumn()],W=[r.CertificationLevel,r.Name,r.CheckPassRate,r.System,r.Owner,r.Type,r.Lifecycle],k=g=>{const{lifecycles:d,owners:n,types:i,systems:s}=g,p=d?.length?{"spec.lifecycle":d}:void 0,m=n?.length?{"relations.ownedBy":n}:void 0,e=i?.length?{"spec.type":i}:void 0,f=s?.length?{"relations.partOf":s}:void 0;return{...p,...m,...e,...f}},_=z({tableContainer:{display:"flex",flexDirection:"column",height:"100%"}}),j=({track:g,initialPageSize:d,lifecycles:n,owners:i,types:s,systems:p})=>{const m=_(),[e,f]=P({orderBy:void 0,filter:k({lifecycles:n,owners:i,types:s,systems:p}),pageInfo:{page:0,pageSize:d??N,direction:"forward",cursor:null}});O(()=>{f(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:k({lifecycles:n,owners:i,types:s,systems:p})}))},[n,i,s,p]);const{data:c,isLoading:w}=D({trackId:g.id,orderBy:e.orderBy,filter:e.filter,[e.pageInfo.direction==="forward"?"first":"last"]:e.pageInfo.pageSize,[e.pageInfo.direction==="forward"?"after":"before"]:e.pageInfo.cursor}),I=y((t,l)=>{let o;t===-1?o=void 0:o={field:W[t],direction:l==="asc"?C.Asc:C.Desc},f({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),h=y((t,l)=>{const o=t>e.pageInfo.page?"forward":"backward",v=o==="forward"?c?.trackEntities.pageInfo.endCursor??null:c?.trackEntities.pageInfo.startCursor??null;f({...e,pageInfo:{page:t,pageSize:l,direction:o,cursor:v}})},[c,e]),S=c?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:E,isLoading:T}=x({entityRefs:S}),b=L.compact(c?.trackEntities.edges.map(t=>{const l=E?.items.find(o=>!!o&&B(o)===t.node.entityRef);return l?F({trackDetails:t.node,track:g,entity:l}):void 0}))??[];return u.createElement("div",{className:m.tableContainer},u.createElement(R,{columns:A,data:b,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:e.pageInfo.pageSize,search:!1,showTitle:!1,padding:"dense"},onOrderChange:I,onPageChange:h,page:e.pageInfo.page,totalCount:c?.trackEntities.totalCount??0,isLoading:w||T,components:{Toolbar:()=>null}}))};export{j as TrackEntitiesTable};
|
|
2
2
|
//# sourceMappingURL=TrackEntitiesTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{MarkdownContent as
|
|
1
|
+
import{MarkdownContent as V,Content as b}from"@backstage/core-components";import{useRouteRef as W}from"@backstage/core-plugin-api";import{EntityRefLink as $}from"@backstage/plugin-catalog-react";import{usePermission as w}from"@backstage/plugin-permission-react";import{makeStyles as j,Button as q,Paper as J,Tabs as K,Tab as L}from"@material-ui/core";import{soundcheckTrackReadPermission as Q,soundcheckTrackUpdatePermission as X}from"@spotify/backstage-plugin-soundcheck-common";import t,{useState as Y,useMemo as d}from"react";import{useParams as Z,useNavigate as _}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as ee}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as te}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as re}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useSearchParam as p}from"../../hooks/useSearchParam.esm.js";import{trackEditRouteRef as ae}from"../../routes.esm.js";import{LevelCard as ie}from"../LevelCard/LevelCard.esm.js";import{LoadingIndicator as ne}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as oe}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as se}from"../SoundcheckHeader/useHeader.esm.js";import{FilterBar as ce}from"./FilterBar/FilterBar.esm.js";import{toFilter as me}from"./FilterBar/util.esm.js";import{TrackEntitiesTable as le}from"./TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackProgressCard as de}from"./TrackProgressCard.esm.js";const pe=j(e=>({root:{height:"100%",background:e.palette.background.default},header:{backgroundColor:e.palette.background.paper,borderRadius:0,marginBottom:e.spacing(2)},trackProgressContainer:{marginBottom:e.spacing(3)},trackContainerContent:{paddingTop:e.spacing(1),paddingBottom:e.spacing(1),backgroundColor:e.palette.background.paper},levelCard:{margin:e.spacing(1,0,2)},editButton:{marginLeft:"auto"},tabsContainer:{margin:e.spacing(3,0)},trackEntitiesContainer:{marginTop:e.spacing(1)},headerDescription:{fontSize:e.typography.body2.fontSize,margin:e.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},content:{paddingTop:0},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}}}));function N({children:e,value:i,index:n}){return t.createElement("div",{hidden:i!==n},i===n&&e)}const ue=()=>{const e=pe(),[i,n]=Y(0),[o,T]=p("owners"),[s,R]=p("lifecycles"),[c,P]=p("types"),[m,S]=p("systems"),B=(f,g)=>{n(g)},{trackId:a}=Z(),u=d(()=>me({lifecycles:s,owners:o,types:c,systems:m}),[s,o,c,m]),{data:x,isLoading:l,isError:D}=ee({ids:[a??""],first:1}),r=x?.edges?.[0]?.node,{data:k,isLoading:E,isError:I}=te({trackId:a,filter:u},!!a),{data:F,isLoading:M,isError:z}=re({trackId:a,filter:u,numberOfDays:30},!!a),{loading:H,allowed:O}=w({permission:Q,resourceRef:a}),{loading:y,allowed:C}=w({permission:X,resourceRef:a}),h=_(),v=W(ae),A=d(()=>r?.ownerEntityRef?t.createElement($,{color:"inherit",entityRef:r.ownerEntityRef,className:e.ownerLink}):null,[r?.ownerEntityRef,e.ownerLink]),G=d(()=>!y&&C&&r?.isEditable?t.createElement(q,{className:e.editButton,variant:"contained",color:"primary",onClick:()=>{h(v({trackId:r.id}))}},"Edit Track"):null,[C,e.editButton,v,y,h,r]),U=d(()=>r?.description?t.createElement(V,{className:e.headerDescription,content:r.description}):null,[e.headerDescription,r?.description]);return se({title:r?.name,description:U,customSubtitle:A,sectionRight:G}),t.createElement("div",null,t.createElement(oe,{entityName:"track",entityId:a,showNotFound:!l&&!r,showCannotView:!H&&!O}),l&&t.createElement(ne,null),r&&t.createElement("div",{className:e.root},t.createElement(J,{elevation:1,className:e.header},t.createElement(b,{className:e.trackContainerContent},t.createElement(ce,{track:r,owners:o,setOwners:T,lifecycles:s,setLifecycles:R,types:c,setTypes:P,systems:m,setSystems:S}))),t.createElement(b,{className:e.content},t.createElement("div",{className:e.trackProgressContainer},t.createElement(de,{track:r,status:k,history:F,isLoading:l||E||M,isError:D||I||z})),t.createElement("div",{className:e.tabsContainer},t.createElement(K,{value:i,onChange:B},t.createElement(L,{label:"Levels"}),t.createElement(L,{label:"Entities"})),t.createElement(N,{value:i,index:0},r&&r.levels?.map((f,g)=>t.createElement("div",{className:e.levelCard,key:f.ordinal},t.createElement(ie,{track:r,filter:u,level:f,index:g,data:k,isLoading:l||E})))),t.createElement(N,{value:i,index:1},r&&t.createElement("div",{className:e.trackEntitiesContainer},t.createElement(le,{track:r,lifecycles:s,owners:o,types:c,systems:m})))))))};export{ue as TrackPage};
|
|
2
2
|
//# sourceMappingURL=TrackPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as
|
|
1
|
+
import{useApi as m}from"@backstage/core-plugin-api";import{useQuery as c}from"@tanstack/react-query";import{soundcheckApiRef as s}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";function f(e,r,o,t,n){const i=m(s);return c([u.GetTrackOverviewForOwner,e??"",r??"",o??"",t??"",n??""],async()=>i.getProgramOverviewForOwner(e,r,o,t,n),{enabled:!!e&&!!r?.kind,staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}export{f as useProgramOverviewForOwner};
|
|
2
2
|
//# sourceMappingURL=useProgramOverviewForOwner.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as
|
|
1
|
+
import{useApi as i}from"@backstage/core-plugin-api";import{useQueryClient as a,useMutation as u}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{MutationKeys as p,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as h}from"../useSoundcheckAlert.esm.js";const k="Error Creating Check";function l(){const o=i(m),s=a(),{showAlert:c}=h(),n=async r=>{const e=await o.updateCheck(r);if(!e)throw new Error("Failed to update check.");return e};return u([p.UpdateCheck],n,{onSuccess:()=>{const r=[t.GetChecks,t.GetCheckOwners,t.ExecutableChecks,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return Promise.all(r.map(e=>s.invalidateQueries({queryKey:[e]})))},onError:r=>{let e="Failed to update check.";r instanceof Error&&(e=r.message),c({severity:"error",title:k,message:e})}})}export{l as useUpdateCheck};
|
|
2
2
|
//# sourceMappingURL=useUpdateCheck.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{camelCase as l}from"lodash";import{useCallback as _,useEffect as g,useLayoutEffect as b}from"react";import{useSearchParams as N,useLocation as D,useNavigate as j}from"react-router-dom";import E from"react-use/lib/useLocalStorage";import{Facet as n}from"../../components/TechHealth/Filters/types.esm.js";import"../../components/TechHealth/Filters/FacetFilter.esm.js";import"../../components/TechHealth/Filters/FilterProvider.esm.js";import"../../components/TechHealth/Filters/Filters.esm.js";import"../../components/TechHealth/Filters/FiltersHeader.esm.js";import"../../components/TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../useSoundcheckAlert.esm.js";import"../useConfirmationModal.esm.js";import{emptyFacetFilters as h,DEFAULT_NUMBER_OF_DAYS as f,MIN_NUMBER_OF_DAYS as v,MAX_NUMBER_OF_DAYS as A}from"../../components/TechHealth/Filters/utils.esm.js";const M=(S,O)=>{const[e]=N(),s=D(),i=j(),u=O??S[n.EntityOwner][0]?.value,[a=h(u),p]=E("soundcheck.techHealth.facetFilters",h(u));a&&Object.values(n).forEach(t=>{a[t]||(a[t]=[])});const[c=f,F]=E("soundcheck.techHealth.numberOfDays",f),d=t=>!isNaN(t)&&t>=v&&t<=A,y=_((t,r)=>{const o={...a??h()};o[t]=r,p(o)},[a,p]);return g(()=>{const t=e.get("days");if(t&&t!==c.toString()){const r=parseInt(t,10);F(d(r)?r:f)}},[]),g(()=>{const t=e.get("days");(!t||t!==c.toString())&&(e.set("days",c.toString()),i({pathname:s.pathname,search:`?${e.toString()}`}))},[c,e,s,i]),b(()=>{let t=!0;const r=a;Object.values(n).forEach(o=>{const m=e.get(l(o));m?(t=!1,r[o]=m.split(",")):r[o]=[]}),t||p(r)},[]),g(()=>{Object.values(n).forEach(t=>{const r=a[t].join(","),o=l(t);r.length&&e.get(o)!==r&&(e.set(o,r),i({pathname:s.pathname,search:`?${e.toString()}`}))})},[a,e,s,i,u]),{setFacetFilter:(t,r)=>{y(t,r);const o=l(t);if(r.length){const m=r.join(",");e.get(o)!==m&&e.set(o,m)}else e.delete(o);i({pathname:s.pathname,search:`?${e.toString()}`})},getFacetFilter:t=>a?a[t]:[],clearFacetFilters:()=>{F(f),p(h()),e.delete("days"),Object.values(n).forEach(t=>{e.delete(l(t))}),i({pathname:s.pathname,search:`?${e.toString()}`})},facetFilters:a,numberOfDays:c,setNumberOfDays:F}};export{M as useFacetFilters};
|
|
1
|
+
import{camelCase as l}from"lodash";import{useCallback as _,useEffect as g,useLayoutEffect as b}from"react";import{useSearchParams as N,useLocation as D,useNavigate as j}from"react-router-dom";import E from"react-use/lib/useLocalStorage";import{Facet as n}from"../../components/TechHealth/Filters/types.esm.js";import"../../components/TechHealth/Filters/FacetFilter.esm.js";import"../../components/TechHealth/Filters/FilterProvider.esm.js";import"../../components/TechHealth/Filters/Filters.esm.js";import"../../components/TechHealth/Filters/FiltersHeader.esm.js";import"../../components/TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../useSoundcheckAlert.esm.js";import"../useConfirmationModal.esm.js";import{emptyFacetFilters as h,DEFAULT_NUMBER_OF_DAYS as f,MIN_NUMBER_OF_DAYS as v,MAX_NUMBER_OF_DAYS as A}from"../../components/TechHealth/Filters/utils.esm.js";const M=(S,O)=>{const[e]=N(),s=D(),i=j(),u=O??S[n.EntityOwner][0]?.value,[a=h(u),p]=E("soundcheck.techHealth.facetFilters",h(u));a&&Object.values(n).forEach(t=>{a[t]||(a[t]=[])});const[c=f,F]=E("soundcheck.techHealth.numberOfDays",f),d=t=>!isNaN(t)&&t>=v&&t<=A,y=_((t,r)=>{const o={...a??h()};o[t]=r,p(o)},[a,p]);return g(()=>{const t=e.get("days");if(t&&t!==c.toString()){const r=parseInt(t,10);F(d(r)?r:f)}},[]),g(()=>{const t=e.get("days");(!t||t!==c.toString())&&(e.set("days",c.toString()),i({pathname:s.pathname,search:`?${e.toString()}`}))},[c,e,s,i]),b(()=>{let t=!0;const r=a;Object.values(n).forEach(o=>{const m=e.get(l(o));m?(t=!1,r[o]=m.split(",")):r[o]=[]}),t||p(r)},[]),g(()=>{Object.values(n).forEach(t=>{const r=a[t].join(","),o=l(t);r.length&&e.get(o)!==r&&(e.set(o,r),i({pathname:s.pathname,search:`?${e.toString()}`}))})},[a,e,s,i,u]),{setFacetFilter:(t,r)=>{y(t,r);const o=l(t);if(r.length){const m=r.join(",");e.get(o)!==m&&e.set(o,m)}else e.delete(o);i({pathname:s.pathname,search:`?${e.toString()}`})},getFacetFilter:t=>a?a[t]:[],clearFacetFilters:()=>{F(f),p(h()),e.delete("days"),Object.values(n).forEach(t=>{e.delete(l(t))}),i({pathname:s.pathname,search:`?${e.toString()}`})},facetFilters:a,numberOfDays:c,setNumberOfDays:F}};export{M as useFacetFilters};
|
|
2
2
|
//# sourceMappingURL=useFacetFilters.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as o}from"@backstage/core-plugin-api";import{useQuery as t}from"@tanstack/react-query";import{soundcheckApiRef as n}from"../../api.esm.js";function c(e){const r=o(n);return t([
|
|
1
|
+
import{useApi as o}from"@backstage/core-plugin-api";import{useQuery as t}from"@tanstack/react-query";import{soundcheckApiRef as n}from"../../api.esm.js";import{QueryKeys as s}from"../graphqlKeys.esm.js";function c(e){const r=o(n);return t([s.GetFacetsForOwner,e],async()=>r.getFacetsForOwner(e),{enabled:!!e,staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}export{c as useFacetsForOwner};
|
|
2
2
|
//# sourceMappingURL=useFacetsForOwner.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t=(e=>(e.GetAllPrograms="soundcheck/programs",e.GetChecks="soundcheck/checks",e.GetCollectors="soundcheck/collectors",e.GetFactSchema="soundcheck/collectors/schema",e.GetEntityFacets="soundcheck/catalog/facets",e.GetSoftwareEntityRefsForUser="soundcheck/entities/softwareEntityRefsForUser",e.GetEntityRefs="soundcheck/catalog/entityRefs",e.ExecutableChecks="soundcheck/executableChecks",e.GetCampaigns="soundcheck/campaigns",e.GetCampaignProgress="soundcheck/campaigns/getCampaignProgress",e.GetOverallCheckPassRateTrends="soundcheck/charts/overallCheckPassRateTrends",e.GetIndividualCheckPassRateTrends="soundcheck/charts/getIndividualCheckPassRateTrends",e.GetOverallTrackPassRateTrends="soundcheck/charts/overallTrackPassRateTrends",e.GetIndividualTrackPassRateTrends="soundcheck/charts/individualTrackPassRateTrends",e.GetOverallEntityPassRateTrends="soundcheck/charts/overallEntityPassRateTrends",e.GetIndividualEntityPassRateTrends="soundcheck/charts/individualEntityPassRateTrends",e.GetOverallGroupPassRateTrends="soundcheck/charts/overallGroupPassRateTrends",e.GetIndividualGroupPassRateTrends="soundcheck/charts/individualGroupPassRateTrends",e.EntityByRef="soundcheck/catalog/entityByRef",e.EntitiesByRefs="soundcheck/catalog/entitiesByRef",e.TrackEntities="soundcheck/track/entities",e.CheckEntities="soundcheck/check/entities",e.CertificationStatus="soundcheck/certificationStatus",e.CertificationStatusHistory="soundcheck/certificationStatusHistory",e.CheckStatus="soundcheck/checkStatus",e.CheckStatusHistory="soundcheck/checkStatusHistory",e.CheckDetails="soundcheck/checkDetails",e.Certifications="soundcheck/certifications",e.CertificationDetails="soundcheck/certificationDetails",e.GetCheckOwners="soundcheck/checks/getOwners",e.GetTrackOwners="soundcheck/tracks/getOwners",e.GetCampaignOwners="soundcheck/campaigns/getOwners",e.GetTrackRelatedGroups="soundcheck/track/getTrackRelatedGroups",e.CheckTemplates="soundcheck/checkTemplates",e))(t||{}),s=(e=>(e.DeleteCheck="soundcheck/deleteCheck",e.CreateCheck="soundcheck/createCheck",e.UpdateCheck="soundcheck/updateCheck",e.ExecuteCheck="soundcheck/executeCheck",e.DeleteProgram="soundcheck/deleteProgram",e.CreateProgram="soundcheck/createProgram",e.UpdateProgram="soundcheck/updateProgram",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e.CreateCampaign="soundcheck/createCampaign",e.UpdateCampaign="soundcheck/updateCampaign",e.DeleteCampaign="soundcheck/deleteCampaign",e.ArchiveCampaign="soundcheck/archiveCampaign",e))(s||{});export{s as MutationKeys,t as QueryKeys};
|
|
1
|
+
var t=(e=>(e.GetAllPrograms="soundcheck/programs",e.GetChecks="soundcheck/checks",e.GetCollectors="soundcheck/collectors",e.GetFactSchema="soundcheck/collectors/schema",e.GetEntityFacets="soundcheck/catalog/facets",e.GetSoftwareEntityRefsForUser="soundcheck/entities/softwareEntityRefsForUser",e.GetEntityRefs="soundcheck/catalog/entityRefs",e.ExecutableChecks="soundcheck/executableChecks",e.GetCampaigns="soundcheck/campaigns",e.GetCampaignProgress="soundcheck/campaigns/getCampaignProgress",e.GetOverallCheckPassRateTrends="soundcheck/charts/overallCheckPassRateTrends",e.GetIndividualCheckPassRateTrends="soundcheck/charts/getIndividualCheckPassRateTrends",e.GetOverallTrackPassRateTrends="soundcheck/charts/overallTrackPassRateTrends",e.GetIndividualTrackPassRateTrends="soundcheck/charts/individualTrackPassRateTrends",e.GetOverallEntityPassRateTrends="soundcheck/charts/overallEntityPassRateTrends",e.GetIndividualEntityPassRateTrends="soundcheck/charts/individualEntityPassRateTrends",e.GetOverallGroupPassRateTrends="soundcheck/charts/overallGroupPassRateTrends",e.GetIndividualGroupPassRateTrends="soundcheck/charts/individualGroupPassRateTrends",e.EntityByRef="soundcheck/catalog/entityByRef",e.EntitiesByRefs="soundcheck/catalog/entitiesByRef",e.TrackEntities="soundcheck/track/entities",e.CheckEntities="soundcheck/check/entities",e.CertificationStatus="soundcheck/certificationStatus",e.CertificationStatusHistory="soundcheck/certificationStatusHistory",e.CheckStatus="soundcheck/checkStatus",e.CheckStatusHistory="soundcheck/checkStatusHistory",e.CheckDetails="soundcheck/checkDetails",e.Certifications="soundcheck/certifications",e.CertificationDetails="soundcheck/certificationDetails",e.GetCheckOwners="soundcheck/checks/getOwners",e.GetTrackOwners="soundcheck/tracks/getOwners",e.GetCampaignOwners="soundcheck/campaigns/getOwners",e.GetTrackRelatedGroups="soundcheck/track/getTrackRelatedGroups",e.CheckTemplates="soundcheck/checkTemplates",e.GetFacetsForOwner="soundcheck/facets-for-owner",e.GetTrackOverviewForOwner="soundcheck/track-overview-for-owner",e))(t||{}),s=(e=>(e.DeleteCheck="soundcheck/deleteCheck",e.CreateCheck="soundcheck/createCheck",e.UpdateCheck="soundcheck/updateCheck",e.ExecuteCheck="soundcheck/executeCheck",e.DeleteProgram="soundcheck/deleteProgram",e.CreateProgram="soundcheck/createProgram",e.UpdateProgram="soundcheck/updateProgram",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e.CreateCampaign="soundcheck/createCampaign",e.UpdateCampaign="soundcheck/updateCampaign",e.DeleteCampaign="soundcheck/deleteCampaign",e.ArchiveCampaign="soundcheck/archiveCampaign",e))(s||{});export{s as MutationKeys,t as QueryKeys};
|
|
2
2
|
//# sourceMappingURL=graphqlKeys.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{stringifyEntityRef as
|
|
1
|
+
import{stringifyEntityRef as n}from"@backstage/catalog-model";import{useApi as t,configApiRef as p}from"@backstage/core-plugin-api";import{catalogApiRef as f}from"@backstage/plugin-catalog-react";import{combineEntityFilterQueries as s}from"@spotify/backstage-plugin-soundcheck-common";import{useQuery as l}from"@tanstack/react-query";import{getGroupFilterFromConfig as c}from"../../utils/getGroupFilterFromConfig.esm.js";function u(){const i=t(f),r=t(p);return l(["soundcheck/all-groups"],async()=>{const a=c(r),o=s({kind:"Group"},a),{items:m}=await i.getEntities({filter:o,fields:["spec.profile.displayName","metadata.title","metadata.name","metadata.namespace","kind"]});return m.filter(e=>e?.kind==="Group").map(e=>({name:e.spec?.profile?.displayName??e.metadata.title??e.metadata.name,ref:n(e)}))},{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}export{u as useAllGroups};
|
|
2
2
|
//# sourceMappingURL=useAllGroups.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{stringifyEntityRef as
|
|
1
|
+
import{stringifyEntityRef as n}from"@backstage/catalog-model";import{useApi as t,identityApiRef as p,configApiRef as f}from"@backstage/core-plugin-api";import{catalogApiRef as m}from"@backstage/plugin-catalog-react";import{useQuery as u}from"@tanstack/react-query";import{getGroupFilterFromConfig as c}from"../../utils/getGroupFilterFromConfig.esm.js";function y(){const i=t(p),r=t(m),o=t(f);return u(["soundcheck/user-groups-claims"],async()=>{const{ownershipEntityRefs:s}=await i.getBackstageIdentity(),a=c(o);return(await r.getEntitiesByRefs({entityRefs:s,filter:a})).items.filter(e=>e?.kind==="Group").map(e=>({name:e.spec?.profile?.displayName??e.metadata.title??e.metadata.name,ref:n(e),type:e.spec?.type}))})}export{y as useUsersGroupClaims};
|
|
2
2
|
//# sourceMappingURL=useUsersGroupClaims.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as
|
|
1
|
+
import{useApi as c}from"@backstage/core-plugin-api";import{useQueryClient as i,useMutation as u}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{MutationKeys as l,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as k}from"../useSoundcheckAlert.esm.js";const p="Error Creating Track";function d(){const a=c(m),o=i(),{showAlert:s}=k(),n=async e=>{const r=await a.createProgram(e);if(!r)throw new Error("Failed to create track.");return r};return u([l.CreateProgram],n,{onSuccess:async()=>{const e=[t.GetAllPrograms,t.GetOverallTrackPassRateTrends,t.GetIndividualTrackPassRateTrends,t.GetTrackOwners,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return Promise.all(e.map(r=>o.invalidateQueries({queryKey:[r]})))},onError:e=>{let r="Failed to create track.";e instanceof Error&&(r=e.message),s({severity:"error",title:p,message:r})}})}export{d as useCreateTrack};
|
|
2
2
|
//# sourceMappingURL=useCreateTrack.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as
|
|
1
|
+
import{useApi as c}from"@backstage/core-plugin-api";import{useQueryClient as l,useMutation as u}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{MutationKeys as d,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as k}from"../useSoundcheckAlert.esm.js";const f="Error Deleting Track";function p(){const s=c(m),a=l(),{showAlert:n}=k(),i=async e=>{const r=await s.deleteProgram(e);if(!r)throw new Error(`Failed to delete track ${e}`);return r};return u([d.DeleteProgram],i,{onSuccess:()=>{const e=[t.GetAllPrograms,t.GetOverallTrackPassRateTrends,t.GetIndividualTrackPassRateTrends,t.GetTrackOwners,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return Promise.all(e.map(r=>a.invalidateQueries({queryKey:[r]})))},onError:(e,r)=>{let o=`Failed to delete track ${r}`;e instanceof Error&&(o=e.message),n({severity:"error",title:f,message:o})}})}export{p as useDeleteTrack};
|
|
2
2
|
//# sourceMappingURL=useDeleteTrack.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as
|
|
1
|
+
import{useApi as i}from"@backstage/core-plugin-api";import{useQueryClient as c,useMutation as u}from"@tanstack/react-query";import{soundcheckApiRef as m}from"../../api.esm.js";import{MutationKeys as l,QueryKeys as t}from"../graphqlKeys.esm.js";import{useSoundcheckAlert as d}from"../useSoundcheckAlert.esm.js";const p="Error Updating Track";function k(){const a=i(m),o=c(),{showAlert:s}=d(),n=async e=>{const r=await a.updateProgram(e);if(!r)throw new Error("Failed to update track.");return r};return u([l.UpdateProgram],n,{onSuccess:async()=>{const e=[t.GetAllPrograms,t.GetOverallTrackPassRateTrends,t.GetIndividualTrackPassRateTrends,t.GetTrackOwners,t.GetFacetsForOwner,t.GetTrackOverviewForOwner];return Promise.all(e.map(r=>o.invalidateQueries({queryKey:[r]})))},onError:e=>{let r="Failed to update track.";e instanceof Error&&(r=e.message),s({severity:"error",title:p,message:r})}})}export{k as useUpdateTrack};
|
|
2
2
|
//# sourceMappingURL=useUpdateTrack.esm.js.map
|
package/dist/utils/export.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{dump as a}from"js-yaml";const r=e=>{const
|
|
1
|
+
import{dump as a}from"js-yaml";const r=e=>{const t={ordinal:e.ordinal,checks:e.checks};return e.name&&(t.name=e.name),e.description&&(e.description=e.description),t},i=(e,t)=>{const s=new Blob([e],{type:"text/plain"}),n=window.document.createElement("a");n.href=window.URL.createObjectURL(s),n.download=t,n.click(),n.remove()},o=e=>{const t={id:e.id,name:e.name,ownerEntityRef:e.ownerEntityRef,levels:e.levels.map(r)};e.description&&(t.description=e.description),e.documentationURL&&(t.documentationURL=e.documentationURL),e.filter&&(t.filter=e.filter);const s=`# Exported YAML Track. You can rename the track id if needed.
|
|
2
2
|
# Please ensure you have also exported the associated checks and that the ids match.
|
|
3
|
-
`+a(
|
|
3
|
+
`+a(t,{noRefs:!0});return i(s,`track-${e.id}.yaml`),s},c=e=>{const t={id:e.id,rule:e.rule};e.ownerEntityRef&&(t.ownerEntityRef=e.ownerEntityRef),e.name&&(t.name=e.name),e.description&&(t.description=e.description),e.pathResolver&&(t.pathResolver=e.pathResolver),e.filter&&(t.filter=e.filter),e.warning&&(t.warning=e.warning),e.passedMessage&&(t.passedMessage=e.passedMessage),e.failedMessage&&(t.failedMessage=e.failedMessage),e.passedMessage&&(t.passedMessage=e.passedMessage),e.schedule&&(t.schedule=e.schedule);const s=`# Exported YAML Check. You can rename the check id if needed.
|
|
4
4
|
# Please ensure the ids match in the associated tracks.
|
|
5
|
-
`+a(
|
|
5
|
+
`+a(t,{noRefs:!0});return i(s,`check-${e.id}.yaml`),s};export{c as exportCheck,o as exportTrack};
|
|
6
6
|
//# sourceMappingURL=export.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{FilterSchema as o}from"@spotify/backstage-plugin-soundcheck-common";function r(e){const t=e.getOptionalConfig("soundcheck.entityFilters.group")?.get();if(t&&o.safeParse(t).success)return t}export{r as getGroupFilterFromConfig};
|
|
2
|
+
//# sourceMappingURL=getGroupFilterFromConfig.esm.js.map
|