@spotify/backstage-plugin-soundcheck 0.19.4 → 0.19.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.
Files changed (52) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/alpha/integrations.esm.js +1 -1
  3. package/dist/api.esm.js +1 -1
  4. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  5. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  6. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
  7. package/dist/components/CampaignPage/CampaignPageDeprecated.esm.js +1 -1
  8. package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +1 -1
  9. package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
  10. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  11. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  12. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  13. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +1 -1
  14. package/dist/components/CheckPage/CheckPageBUI.esm.js +1 -1
  15. package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +1 -1
  16. package/dist/components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js +1 -1
  17. package/dist/components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js +1 -1
  18. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
  19. package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
  20. package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +1 -1
  21. package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +1 -1
  22. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  23. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
  24. package/dist/components/DescriptionCell/DescriptionCell.esm.js +1 -1
  25. package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
  26. package/dist/components/Menus/SimpleMenu.esm.js +1 -1
  27. package/dist/components/Menus/useCampaignActions.esm.js +1 -1
  28. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  29. package/dist/components/PageCustomActions/PageCustomActions.esm.js +1 -1
  30. package/dist/components/RoutingPage/RoutingPageBUI.esm.js +1 -1
  31. package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js +2 -0
  32. package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +1 -1
  33. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
  34. package/dist/components/TechInsights/SummaryTilesBUI.esm.js +1 -1
  35. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
  36. package/dist/components/TechInsights/TechInsightsPageDeprecated.esm.js +1 -1
  37. package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +1 -1
  38. package/dist/components/TechInsights/TechInsightsTableView.esm.js +1 -1
  39. package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +1 -1
  40. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
  41. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  42. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  43. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
  44. package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
  45. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
  46. package/dist/components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js +1 -1
  47. package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
  48. package/dist/hooks/filters/useFilters.esm.js +1 -1
  49. package/dist/routes.esm.js +1 -1
  50. package/dist/utils/tracks.esm.js +2 -0
  51. package/package.json +1 -1
  52. package/dist/components/RoutingPage/RoutingMainMenu.esm.js +0 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @spotify/backstage-plugin-soundcheck
2
2
 
3
+ ## 0.19.5
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix for a RangeError for large catalogs.
8
+ - Fixed various Backstage UI related bugs.
9
+
3
10
  ## 0.19.4
4
11
 
5
12
  ### Patch Changes
@@ -1,2 +1,2 @@
1
- import{jsx as a}from"react/jsx-runtime";import{IntegrationPageBlueprint as t}from"../blueprints/IntegrationPageBlueprint.esm.js";const r=t.make({name:"azure",params:{integrationId:"azure",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"azure",includeHeader:!0}))}}),o=t.make({name:"bigquery",params:{integrationId:"bigquery",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"bigquery",includeHeader:!0}))}}),n=t.make({name:"catalog",params:{integrationId:"catalog",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"catalog",includeHeader:!0}))}}),i=t.make({name:"datadog",params:{integrationId:"datadog",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"datadog",includeHeader:!0}))}}),l=t.make({name:"data-registry",params:{integrationId:"data-registry",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"data-registry",includeHeader:!0}))}}),d=t.make({name:"github",params:{integrationId:"github",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"github",includeHeader:!0}))}}),c=t.make({name:"gitlab",params:{integrationId:"gitlab",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"gitlab",includeHeader:!0}))}}),g=t.make({name:"http",params:{integrationId:"http",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"http",includeHeader:!0}))}}),m=t.make({name:"jira",params:{integrationId:"jira",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"jira",includeHeader:!0}))}}),s=t.make({name:"kubernetes",params:{integrationId:"kubernetes",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"kubernetes",includeHeader:!0}))}}),I=t.make({name:"newrelic",params:{integrationId:"newrelic",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"newrelic",includeHeader:!0}))}}),p=t.make({name:"pagerduty",params:{integrationId:"pagerduty",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"pagerduty",includeHeader:!0}))}}),u=t.make({name:"scm",params:{integrationId:"scm",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"scm",includeHeader:!0}))}}),y=t.make({name:"sonarqube",params:{integrationId:"sonarqube",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(e=>a(e.CollectorPage,{collectorId:"sonarqube",includeHeader:!0}))}});export{r as azureIntegration,o as bigqueryIntegration,n as catalogIntegration,l as dataRegistryIntegration,i as datadogIntegration,d as githubIntegration,c as gitlabIntegration,g as httpIntegration,m as jiraIntegration,s as kubernetesIntegration,I as newrelicIntegration,p as pagerdutyIntegration,u as scmIntegration,y as sonarqubeIntegration};
1
+ import{jsx as e}from"react/jsx-runtime";import{IntegrationPageBlueprint as t}from"../blueprints/IntegrationPageBlueprint.esm.js";const r=t.make({name:"azure",params:{integrationId:"azure",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"azure"}))}}),o=t.make({name:"bigquery",params:{integrationId:"bigquery",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"bigquery"}))}}),n=t.make({name:"catalog",params:{integrationId:"catalog",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"catalog"}))}}),i=t.make({name:"datadog",params:{integrationId:"datadog",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"datadog"}))}}),l=t.make({name:"data-registry",params:{integrationId:"data-registry",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"data-registry"}))}}),g=t.make({name:"github",params:{integrationId:"github",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"github"}))}}),c=t.make({name:"gitlab",params:{integrationId:"gitlab",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"gitlab"}))}}),m=t.make({name:"http",params:{integrationId:"http",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"http"}))}}),d=t.make({name:"jira",params:{integrationId:"jira",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"jira"}))}}),s=t.make({name:"kubernetes",params:{integrationId:"kubernetes",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"kubernetes"}))}}),I=t.make({name:"newrelic",params:{integrationId:"newrelic",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"newrelic"}))}}),p=t.make({name:"pagerduty",params:{integrationId:"pagerduty",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"pagerduty"}))}}),y=t.make({name:"scm",params:{integrationId:"scm",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"scm"}))}}),u=t.make({name:"sonarqube",params:{integrationId:"sonarqube",loader:async()=>import("../components/CollectorPage/CollectorPage.esm.js").then(a=>e(a.CollectorPage,{collectorId:"sonarqube"}))}});export{r as azureIntegration,o as bigqueryIntegration,n as catalogIntegration,l as dataRegistryIntegration,i as datadogIntegration,g as githubIntegration,c as gitlabIntegration,m as httpIntegration,d as jiraIntegration,s as kubernetesIntegration,I as newrelicIntegration,p as pagerdutyIntegration,y as scmIntegration,u as sonarqubeIntegration};
2
2
  //# sourceMappingURL=integrations.esm.js.map
package/dist/api.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createApiRef as u}from"@backstage/core-plugin-api";import{GraphQLClient as y}from"graphql-request";import o from"pako";import{getSdk as l}from"./graphql/generated/index.esm.js";const g=u({id:"plugin.soundcheck"}),k=i=>"response"in i&&"errors"in i.response,p=i=>"response"in i&&"message"in i.response;class w{#a;#s;#t;constructor(t){this.#a=t.fetchApi,this.#s=t.discoveryApi;const e=new y("/graphql",{fetch:async(a,s)=>{const r=`${await this.#s.getBaseUrl("soundcheck")}${a}`;return this.#a.fetch(r,s)}});this.#t=l(e)}#r=t=>k(t)?t.response?.errors?.[0].message??`${t}`:p(t)?t.response.message:`${t}`;#e=async t=>{try{return await t()}catch(e){throw new Error(`Error from Soundcheck backend: ${this.#r(e)}`)}};async getMultipleTrackStatuses(t){return this.#e(async()=>{const{multipleTrackStatuses:e}=await this.#t.getMultipleTrackStatuses({input:t});return e})}async getAllCertifications(t,e=!1,a=!1){return this.#e(async()=>{const{certifications:s}=await this.#t.getAllCertifications({entityRef:t,includeFilteredChecks:e,includeDraftTracks:a});return s})}async getCertificationDetails(t,e=!1,a=!1){return this.#e(async()=>{const{certifications:s}=await this.#t.getCertificationDetails({entityRef:t,includeFilteredChecks:e,includeDraftTracks:a});return s})}async getCertificationDetailsForTrack(t,e,a){return this.#e(async()=>{const{trackCertification:s}=await this.#t.getCertificationDetailsForTrack({entityRef:t,trackId:e,includeFilteredChecks:a});return s})}async getCheckResultDetails(t,e,a){return this.#e(async()=>{const{checkResult:s}=await this.#t.getCheckResultDetails({entityRef:t,trackId:e,checkId:a});return s})}async getFacetsForOwner(t){return this.#e(async()=>{const{facetsForOwner:e}=await this.#t.getFacetsForOwner({ownerEntityRef:t});return e})}async getTrackOverviewForOwner(t,e,a,s,r){return this.#e(async()=>{const{trackOverviewForOwner:n}=await this.#t.getTrackOverviewForOwner({ownerEntityRef:t,facet:e,first:a,after:s,entitySearch:r});return n})}async getTracks(t){return this.#e(async()=>{const{tracks:e}=await this.#t.getTracks({filter:t});return e})}async getTracksApplicableEntityCount(t,e){return this.#e(async()=>{const{tracks:a}=await this.#t.getTracksApplicableEntityCount({filter:t,groupRef:e});return a?.edges?.map(({node:s})=>({id:s.id,applicableEntityCount:s.applicableEntityCount??0}))})}async getTrack(t){return this.#e(async()=>{const{track:e}=await this.#t.getTrack({id:t});return e})}async createTrack(t){return this.#e(async()=>{const{track:e}=await this.#t.createTrack({input:t});return e})}async updateTrack(t){return this.#e(async()=>{const{track:e}=await this.#t.updateTrack({input:t});return e})}async deleteTrack(t){return this.#e(async()=>{const{trackDeleted:e}=await this.#t.deleteTrack({trackId:t});return e})}async importTracks(t){return this.#e(async()=>{const{status:e}=await this.#t.importTracks({tracks:t});return e})}async recertifyTrack(t,e,a){return this.#e(async()=>{const{trackRecertified:s}=await this.#t.recertifyTrack({trackId:t,numberOfDays:e,loggedInUserRef:a});return s})}async getPlaylists(t){return this.#e(async()=>{const{playlists:e}=await this.#t.getPlaylists({entityRef:t});return e})}async getOperators(){return this.#e(async()=>{const{operators:t}=await this.#t.getOperators();return t})}async getCheck(t){return this.#e(async()=>(await this.#t.getCheck({id:t})).check)}async getChecks(t){return this.#e(async()=>{const{checkers:e}=await this.#t.getCheckers({filter:t});return e})}async getExecutableChecks(){return this.#e(async()=>{const{executableChecks:t}=await this.#t.getExecutableChecks();return t})}async createCheck(t){return this.#e(async()=>{const{check:e}=await this.#t.createCheck({input:t});return e})}async updateCheck(t){return this.#e(async()=>{const{check:e}=await this.#t.updateCheck({input:t});return e})}async deleteCheck(t){return this.#e(async()=>await this.#t.deleteChecker({checkerId:t}))}async executeCheck(t){return this.#e(async()=>{const{result:e}=await this.#t.executeCheck({input:t});return e})}async importChecks(t){return this.#e(async()=>{const{status:e}=await this.#t.importCheckers({checkers:t});return e})}async setEntityExempt(t){return this.#e(async()=>{const{setEntityExempt:e}=await this.#t.setEntityExempt({input:t});return e})}async setManualCheckResult(t){return this.#e(async()=>await this.#t.setManualCheckResult({input:t}))}async deleteExemption(t,e){return this.#e(async()=>await this.#t.deleteExemption({checkId:t,entityRef:e}))}async getExemption(t,e){return this.#e(async()=>await this.#t.getExemption({checkId:t,entityRef:e}))}async getExemptions(t,e,a,s,r){return this.#e(async()=>await this.#t.getExemptions({checkId:t,first:e,after:a,last:s,before:r}))}async getExemptCheckIds(t,e){return this.#e(async()=>await this.#t.getExemptCheckIds({entityRef:t,trackId:e}))}async getCollectors(t){return this.#e(async()=>{const{collectors:e}=await this.#t.getCollectors({ids:t});return e})}async getFactSchema(t,e){if(!(!t||!e))return this.#e(async()=>{const{factSchema:a}=await this.#t.getFactSchemas({collectorId:t,factName:e});return a})}async updateCollectorConfig(t){return this.#e(async()=>{const{collector:e}=await this.#t.updateCollectorConfig({input:t});return e})}async deleteCollectorConfig(t){return this.#e(async()=>await this.#t.deleteCollectorConfig({collectorId:t}))}async getOverallCheckPassRates(t){return this.#e(async()=>await this.#t.getOverallCheckPassRates({filter:t}))}async getIndividualCheckPassRates(t){return this.#e(async()=>await this.#t.getIndividualCheckPassRates({filter:t}))}async getOverallTrackPassRate(t){return this.#e(async()=>await this.#t.getOverallTrackPassRate({filter:t}))}async getIndividualTrackPassRate(t){return this.#e(async()=>await this.#t.getIndividualTrackPassRate({filter:t}))}async getOverallEntityPassRates(t){return this.#e(async()=>await this.#t.getOverallEntityPassRates({filter:t}))}async getIndividualEntityPassRates(t){return this.#e(async()=>await this.#t.getIndividualEntityPassRates({input:t}))}async getOverallGroupPassRates(t){return this.#e(async()=>await this.#t.getOverallGroupPassRates({input:t}))}async getIndividualGroupPassRates(t){return this.#e(async()=>await this.#t.getIndividualGroupPassRates({input:t}))}async getEntityRefsForTechHealthFilter(t){return this.#e(async()=>await this.#t.getEntityRefsForTechHealthFilter({ownerEntityRef:t}))}async getTrackEntities(t){return this.#e(async()=>await this.#t.getTrackEntities({input:t}))}async getCampaigns(t,e){return this.#e(async()=>{const{campaigns:a}=await this.#t.getCampaigns({filter:t,byTrackIds:e});return a})}async createCampaign(t){return this.#e(async()=>{const{campaign:e}=await this.#t.createCampaign({input:t});return e})}async updateCampaign(t){return this.#e(async()=>{const{campaign:e}=await this.#t.updateCampaign({input:t});return e})}async deleteCampaign(t){return this.#e(async()=>{const{campaignDeleted:e}=await this.#t.deleteCampaign({campaignId:t});return e})}async sendCampaignNotification(t){return this.#e(async()=>{const{sendCampaignNotification:e}=await this.#t.sendCampaignNotification({input:t});return e})}async archiveCampaign(t){return this.#e(async()=>{const{campaignArchived:e}=await this.#t.archiveCampaign({campaignId:t});return e})}async getCampaignOwners(){return this.#e(async()=>{const{campaignOwners:t}=await this.#t.getCampaignOwners();return t})}async getCheckOwners(){return this.#e(async()=>{const{checkOwners:t}=await this.#t.getCheckOwners();return t})}async getTrackOwners(){return this.#e(async()=>{const{trackOwners:t}=await this.#t.getTrackOwners();return t})}async getCertificationStatus(t){return this.#e(async()=>this.#t.getCertificationStatus({input:t}))}async getCertificationStatusHistory(t){return this.#e(async()=>this.#t.getCertificationStatusHistory({input:t}))}async getTrackStatusHistory(t){return this.#e(async()=>(await this.#t.getTrackStatusHistory({input:t})).trackStatusHistory)}async getTrackStatusHistories(t){return this.#e(async()=>(await this.#t.getTrackStatusHistories({input:t})).trackStatusHistories)}async getCheckStatus(t){return this.#e(async()=>(await this.#t.getCheckStatus({input:t})).checkStatus)}async getCheckStatuses(t){return this.#e(async()=>(await this.#t.getCheckStatuses({input:t})).checkStatuses)}async getCheckStatusHistory(t){return this.#e(async()=>(await this.#t.getCheckStatusHistory({input:t})).checkStatusHistory)}async getCheckStatusHistoriesMultiFilter(t){return this.#e(async()=>(await this.#t.getCheckStatusHistoriesMultiFilter({input:t})).checkStatusHistoriesMultiFilter)}async getCheckStatusHistories(t){return this.#e(async()=>(await this.#t.getCheckStatusHistories({input:t})).checkStatusHistories)}async getCheckEntities(t){return this.#e(async()=>await this.#t.getCheckEntities({input:t}))}async getSavedViews(t){return this.#e(async()=>await this.#t.getSavedViews({input:t}))}async saveView(t){return this.#e(async()=>{const{saveView:e}=await this.#t.saveView({input:t});return e})}async deleteView(t){return this.#e(async()=>{const{deleteView:e}=await this.#t.deleteView({input:t});return e})}async getPathResolvers(){return this.#e(async()=>{const{pathResolvers:t}=await this.#t.getPathResolvers();return t})}async getCheckTemplates(){return this.#e(async()=>{const{checkerTemplates:t}=await this.#t.getCheckTemplates();return t})}async getFact(t){return this.#e(async()=>{const{fact:e}=await this.#t.getFact(t);return e})}async getGroupTypeHierarchy(){return this.#e(async()=>{const{groupTypeHierarchy:t}=await this.#t.getGroupTypeHierarchy();return t})}async getGroupHierarchy(t,e,a){return this.#e(async()=>{const{groupHierarchy:s}=await this.#t.getGroupHierarchy({groupRef:t,ownedEntitiesFilter:e,includeParent:a}),r=Uint8Array.from(atob(s.hierarchy),h=>h.charCodeAt(0)),n=o.inflate(r),c=String.fromCharCode(...n);return{hierarchy:JSON.parse(c)}})}async getHierarchicalTrackStatus(t,e){return this.#e(async()=>{const{hierarchicalTrackStatus:a}=await this.#t.getHierarchicalTrackStatus({trackId:t,groupRef:e});return a})}async getHierarchicalTrackStatuses(t,e){return this.#e(async()=>{const{hierarchicalTrackStatuses:a}=await this.#t.getHierarchicalTrackStatuses({trackIds:t,groupRef:e});return a})}async recordLoadTime(t){return this.#e(async()=>await this.#t.recordLoadTime({input:{metricType:t.metricType,routeName:t.routeName,loadTimeMs:t.loadTimeMs,additionalAttributes:t.additionalAttributes}}))}}export{w as SoundcheckApi,g as soundcheckApiRef};
1
+ import{createApiRef as u}from"@backstage/core-plugin-api";import{GraphQLClient as y}from"graphql-request";import o from"pako";import{getSdk as l}from"./graphql/generated/index.esm.js";const g=u({id:"plugin.soundcheck"}),k=i=>"response"in i&&"errors"in i.response,p=i=>"response"in i&&"message"in i.response;class w{#a;#s;#t;constructor(t){this.#a=t.fetchApi,this.#s=t.discoveryApi;const e=new y("/graphql",{fetch:async(a,s)=>{const r=`${await this.#s.getBaseUrl("soundcheck")}${a}`;return this.#a.fetch(r,s)}});this.#t=l(e)}#r=t=>k(t)?t.response?.errors?.[0].message??`${t}`:p(t)?t.response.message:`${t}`;#e=async t=>{try{return await t()}catch(e){throw new Error(`Error from Soundcheck backend: ${this.#r(e)}`)}};async getMultipleTrackStatuses(t){return this.#e(async()=>{const{multipleTrackStatuses:e}=await this.#t.getMultipleTrackStatuses({input:t});return e})}async getAllCertifications(t,e=!1,a=!1){return this.#e(async()=>{const{certifications:s}=await this.#t.getAllCertifications({entityRef:t,includeFilteredChecks:e,includeDraftTracks:a});return s})}async getCertificationDetails(t,e=!1,a=!1){return this.#e(async()=>{const{certifications:s}=await this.#t.getCertificationDetails({entityRef:t,includeFilteredChecks:e,includeDraftTracks:a});return s})}async getCertificationDetailsForTrack(t,e,a){return this.#e(async()=>{const{trackCertification:s}=await this.#t.getCertificationDetailsForTrack({entityRef:t,trackId:e,includeFilteredChecks:a});return s})}async getCheckResultDetails(t,e,a){return this.#e(async()=>{const{checkResult:s}=await this.#t.getCheckResultDetails({entityRef:t,trackId:e,checkId:a});return s})}async getFacetsForOwner(t){return this.#e(async()=>{const{facetsForOwner:e}=await this.#t.getFacetsForOwner({ownerEntityRef:t});return e})}async getTrackOverviewForOwner(t,e,a,s,r){return this.#e(async()=>{const{trackOverviewForOwner:n}=await this.#t.getTrackOverviewForOwner({ownerEntityRef:t,facet:e,first:a,after:s,entitySearch:r});return n})}async getTracks(t){return this.#e(async()=>{const{tracks:e}=await this.#t.getTracks({filter:t});return e})}async getTracksApplicableEntityCount(t,e){return this.#e(async()=>{const{tracks:a}=await this.#t.getTracksApplicableEntityCount({filter:t,groupRef:e});return a?.edges?.map(({node:s})=>({id:s.id,applicableEntityCount:s.applicableEntityCount??0}))})}async getTrack(t){return this.#e(async()=>{const{track:e}=await this.#t.getTrack({id:t});return e})}async createTrack(t){return this.#e(async()=>{const{track:e}=await this.#t.createTrack({input:t});return e})}async updateTrack(t){return this.#e(async()=>{const{track:e}=await this.#t.updateTrack({input:t});return e})}async deleteTrack(t){return this.#e(async()=>{const{trackDeleted:e}=await this.#t.deleteTrack({trackId:t});return e})}async importTracks(t){return this.#e(async()=>{const{status:e}=await this.#t.importTracks({tracks:t});return e})}async recertifyTrack(t,e,a){return this.#e(async()=>{const{trackRecertified:s}=await this.#t.recertifyTrack({trackId:t,numberOfDays:e,loggedInUserRef:a});return s})}async getPlaylists(t){return this.#e(async()=>{const{playlists:e}=await this.#t.getPlaylists({entityRef:t});return e})}async getOperators(){return this.#e(async()=>{const{operators:t}=await this.#t.getOperators();return t})}async getCheck(t){return this.#e(async()=>(await this.#t.getCheck({id:t})).check)}async getChecks(t){return this.#e(async()=>{const{checkers:e}=await this.#t.getCheckers({filter:t});return e})}async getExecutableChecks(){return this.#e(async()=>{const{executableChecks:t}=await this.#t.getExecutableChecks();return t})}async createCheck(t){return this.#e(async()=>{const{check:e}=await this.#t.createCheck({input:t});return e})}async updateCheck(t){return this.#e(async()=>{const{check:e}=await this.#t.updateCheck({input:t});return e})}async deleteCheck(t){return this.#e(async()=>await this.#t.deleteChecker({checkerId:t}))}async executeCheck(t){return this.#e(async()=>{const{result:e}=await this.#t.executeCheck({input:t});return e})}async importChecks(t){return this.#e(async()=>{const{status:e}=await this.#t.importCheckers({checkers:t});return e})}async setEntityExempt(t){return this.#e(async()=>{const{setEntityExempt:e}=await this.#t.setEntityExempt({input:t});return e})}async setManualCheckResult(t){return this.#e(async()=>await this.#t.setManualCheckResult({input:t}))}async deleteExemption(t,e){return this.#e(async()=>await this.#t.deleteExemption({checkId:t,entityRef:e}))}async getExemption(t,e){return this.#e(async()=>await this.#t.getExemption({checkId:t,entityRef:e}))}async getExemptions(t,e,a,s,r){return this.#e(async()=>await this.#t.getExemptions({checkId:t,first:e,after:a,last:s,before:r}))}async getExemptCheckIds(t,e){return this.#e(async()=>await this.#t.getExemptCheckIds({entityRef:t,trackId:e}))}async getCollectors(t){return this.#e(async()=>{const{collectors:e}=await this.#t.getCollectors({ids:t});return e})}async getFactSchema(t,e){if(!(!t||!e))return this.#e(async()=>{const{factSchema:a}=await this.#t.getFactSchemas({collectorId:t,factName:e});return a})}async updateCollectorConfig(t){return this.#e(async()=>{const{collector:e}=await this.#t.updateCollectorConfig({input:t});return e})}async deleteCollectorConfig(t){return this.#e(async()=>await this.#t.deleteCollectorConfig({collectorId:t}))}async getOverallCheckPassRates(t){return this.#e(async()=>await this.#t.getOverallCheckPassRates({filter:t}))}async getIndividualCheckPassRates(t){return this.#e(async()=>await this.#t.getIndividualCheckPassRates({filter:t}))}async getOverallTrackPassRate(t){return this.#e(async()=>await this.#t.getOverallTrackPassRate({filter:t}))}async getIndividualTrackPassRate(t){return this.#e(async()=>await this.#t.getIndividualTrackPassRate({filter:t}))}async getOverallEntityPassRates(t){return this.#e(async()=>await this.#t.getOverallEntityPassRates({filter:t}))}async getIndividualEntityPassRates(t){return this.#e(async()=>await this.#t.getIndividualEntityPassRates({input:t}))}async getOverallGroupPassRates(t){return this.#e(async()=>await this.#t.getOverallGroupPassRates({input:t}))}async getIndividualGroupPassRates(t){return this.#e(async()=>await this.#t.getIndividualGroupPassRates({input:t}))}async getEntityRefsForTechHealthFilter(t){return this.#e(async()=>await this.#t.getEntityRefsForTechHealthFilter({ownerEntityRef:t}))}async getTrackEntities(t){return this.#e(async()=>await this.#t.getTrackEntities({input:t}))}async getCampaigns(t,e){return this.#e(async()=>{const{campaigns:a}=await this.#t.getCampaigns({filter:t,byTrackIds:e});return a})}async createCampaign(t){return this.#e(async()=>{const{campaign:e}=await this.#t.createCampaign({input:t});return e})}async updateCampaign(t){return this.#e(async()=>{const{campaign:e}=await this.#t.updateCampaign({input:t});return e})}async deleteCampaign(t){return this.#e(async()=>{const{campaignDeleted:e}=await this.#t.deleteCampaign({campaignId:t});return e})}async sendCampaignNotification(t){return this.#e(async()=>{const{sendCampaignNotification:e}=await this.#t.sendCampaignNotification({input:t});return e})}async archiveCampaign(t){return this.#e(async()=>{const{campaignArchived:e}=await this.#t.archiveCampaign({campaignId:t});return e})}async getCampaignOwners(){return this.#e(async()=>{const{campaignOwners:t}=await this.#t.getCampaignOwners();return t})}async getCheckOwners(){return this.#e(async()=>{const{checkOwners:t}=await this.#t.getCheckOwners();return t})}async getTrackOwners(){return this.#e(async()=>{const{trackOwners:t}=await this.#t.getTrackOwners();return t})}async getCertificationStatus(t){return this.#e(async()=>this.#t.getCertificationStatus({input:t}))}async getCertificationStatusHistory(t){return this.#e(async()=>this.#t.getCertificationStatusHistory({input:t}))}async getTrackStatusHistory(t){return this.#e(async()=>(await this.#t.getTrackStatusHistory({input:t})).trackStatusHistory)}async getTrackStatusHistories(t){return this.#e(async()=>(await this.#t.getTrackStatusHistories({input:t})).trackStatusHistories)}async getCheckStatus(t){return this.#e(async()=>(await this.#t.getCheckStatus({input:t})).checkStatus)}async getCheckStatuses(t){return this.#e(async()=>(await this.#t.getCheckStatuses({input:t})).checkStatuses)}async getCheckStatusHistory(t){return this.#e(async()=>(await this.#t.getCheckStatusHistory({input:t})).checkStatusHistory)}async getCheckStatusHistoriesMultiFilter(t){return this.#e(async()=>(await this.#t.getCheckStatusHistoriesMultiFilter({input:t})).checkStatusHistoriesMultiFilter)}async getCheckStatusHistories(t){return this.#e(async()=>(await this.#t.getCheckStatusHistories({input:t})).checkStatusHistories)}async getCheckEntities(t){return this.#e(async()=>await this.#t.getCheckEntities({input:t}))}async getSavedViews(t){return this.#e(async()=>await this.#t.getSavedViews({input:t}))}async saveView(t){return this.#e(async()=>{const{saveView:e}=await this.#t.saveView({input:t});return e})}async deleteView(t){return this.#e(async()=>{const{deleteView:e}=await this.#t.deleteView({input:t});return e})}async getPathResolvers(){return this.#e(async()=>{const{pathResolvers:t}=await this.#t.getPathResolvers();return t})}async getCheckTemplates(){return this.#e(async()=>{const{checkerTemplates:t}=await this.#t.getCheckTemplates();return t})}async getFact(t){return this.#e(async()=>{const{fact:e}=await this.#t.getFact(t);return e})}async getGroupTypeHierarchy(){return this.#e(async()=>{const{groupTypeHierarchy:t}=await this.#t.getGroupTypeHierarchy();return t})}async getGroupHierarchy(t,e,a){return this.#e(async()=>{const{groupHierarchy:s}=await this.#t.getGroupHierarchy({groupRef:t,ownedEntitiesFilter:e,includeParent:a}),r=Uint8Array.from(atob(s.hierarchy),h=>h.charCodeAt(0)),n=o.inflate(r),c=new TextDecoder("utf-8").decode(n);return{hierarchy:JSON.parse(c)}})}async getHierarchicalTrackStatus(t,e){return this.#e(async()=>{const{hierarchicalTrackStatus:a}=await this.#t.getHierarchicalTrackStatus({trackId:t,groupRef:e});return a})}async getHierarchicalTrackStatuses(t,e){return this.#e(async()=>{const{hierarchicalTrackStatuses:a}=await this.#t.getHierarchicalTrackStatuses({trackIds:t,groupRef:e});return a})}async recordLoadTime(t){return this.#e(async()=>await this.#t.recordLoadTime({input:{metricType:t.metricType,routeName:t.routeName,loadTimeMs:t.loadTimeMs,additionalAttributes:t.additionalAttributes}}))}}export{w as SoundcheckApi,g as soundcheckApiRef};
2
2
  //# sourceMappingURL=api.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i}from"react/jsx-runtime";import{compatWrapper as u}from"@backstage/core-compat-api";import{createExtensionDataRef as c,createExtensionBlueprint as s,coreExtensionData as t,ExtensionBoundary as g}from"@backstage/frontend-plugin-api";import{lazy as l}from"react";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@backstage/ui";import"@spotify/backstage-plugin-soundcheck-common";import"react-helmet";import"react-router-dom";import"../routes.esm.js";import"../components/CampaignPage/CampaignPageBUI.esm.js";import"../components/CampaignPage/CampaignPageDeprecated.esm.js";import"../components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js";import"../utils/filters.esm.js";import"../components/SoundcheckHeader/SoundcheckHeader.esm.js";import"../components/SoundcheckHeader/SoundcheckHeaderContext.esm.js";import"../components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js";import"../components/CampaignsPage/CampaignListPage/CampaignTypes.esm.js";import"../components/CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import"../components/CampaignsPage/CampaignListPageBUI.esm.js";import"../contexts/TrackFormContext.esm.js";import"../contexts/CheckFormContext.esm.js";import"../contexts/CampaignFormContext.esm.js";import"../contexts/UserProvider.esm.js";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"react-use/lib/useLocalStorage";import"../components/CampaignForm/CampaignForm.esm.js";import"@remixicon/react";import"../components/PageWarningMessage/PageWarningMessage.esm.js";import"../components/TechHealth/Loading/Loading.esm.js";import"../components/CampaignsPage/CampaignEmptyState.esm.js";import"uuid";import"@backstage/core-components";import"react-hook-form";import"../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../components/SoundcheckDialog/SoundcheckDialog.esm.js";import"../components/FactExplorer/FactExplorer.esm.js";import"../components/FactExplorer/FactExplorerContext.esm.js";import"../components/FormStepper/FormStepper.esm.js";import"../components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js";import"../components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../components/FormMarkdownInput/FormMarkdownInput.esm.js";import"../components/CheckForm/utils/checkFormUtils.esm.js";import"../components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js";import"../components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"../components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/styles.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../components/CheckForm/FormFields/CheckPathResolverInput.esm.js";import"../components/CheckForm/Steps/CheckDetailsStep.esm.js";import"../components/CheckForm/Steps/CheckRulesStep.esm.js";import"../components/CheckForm/Steps/CheckApplicabilityStep.esm.js";import"../components/CheckForm/Steps/CheckReviewStep.esm.js";import"../components/CheckForm/types/ExpressionType.esm.js";import"../components/Frequency/types.esm.js";import"../components/Frequency/util.esm.js";import"../components/Frequency/FrequencyComponent.esm.js";import"../components/CheckForm/types/Path.esm.js";import"@hookform/resolvers/zod";import"../components/CheckForm/utils/validation.esm.js";import"../components/LoadingIndicator/LoadingIndicator.esm.js";import"../components/CheckPage/CheckPageBUI.esm.js";import"../components/CheckPage/CheckPageDeprecated.esm.js";import"../components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js";import"../components/ChecksPage/ChecksListPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js";import"../components/RoutingPage/RoutingMainMenu.esm.js";import"../components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js";import"../components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js";import"../components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js";import"../components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js";import"../components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js";import"../components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js";import"../components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js";import"../components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js";import"../components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js";import"../components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js";import"../components/CollectorPage/CollectorDetailsPageBUI.esm.js";import"../components/CollectorPage/CollectorDetailsPageDeprecated.esm.js";import"../components/CollectorsPage/CollectorsPage.esm.js";import"../components/OverviewPage/OverviewPageContent.esm.js";import"../components/TechHealth/TechHealth.esm.js";import"../components/TechInsights/TechInsightsPageBUI.esm.js";import"../components/TechInsights/TechInsightsPageDeprecated.esm.js";import"lodash";import"../components/Filter/FilterComponent.esm.js";import"../components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js";import"../components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js";import"../components/TrackForm/utils/validation.esm.js";import"../graphql/generated/index.esm.js";import"../components/TrackPage/TrackPageBUI.esm.js";import"../components/TrackPage/TrackPageDeprecated.esm.js";import"../components/TrackPage/TrackTechInsightsExplorerPage.esm.js";import"../components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js";import"js-yaml";import"../components/SummaryCard/SummaryCard.esm.js";import"../components/TracksPage/TrackListPage/TrackMetadata.esm.js";import"../components/TracksPage/TracksListPageBUI.esm.js";import"@spotify/backstage-plugin-core";import"../components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js";import"../components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import"../components/RoutingPage/RoutingPageDeprecated.esm.js";import{RoutingPageWrapper as f}from"../components/RoutingPage/RoutingPageWrapper.esm.js";const o=c().with({id:"soundcheck.integrationId"}),h=s({kind:"integration",attachTo:[{id:"page:soundcheck/SoundcheckRoutingPage",input:"integrations"},{id:"app/routes",input:"routes"}],output:[t.routePath,t.reactElement,t.routeRef.optional(),o],dataRefs:{integrationId:o},*factory({integrationId:r,loader:m,path:e,routeRef:p},{node:n}){const a=l(()=>m().then(d=>({default:()=>d})));yield t.routePath(e??`/soundcheck/integrations/${r}/edit`),yield t.reactElement(u(i(g,{node:n,children:i(f,{children:i(a,{})})}))),p&&(yield t.routeRef(p)),yield o(r)}});export{h as IntegrationPageBlueprint,o as integrationIdExtensionDataRef};
1
+ import{jsx as i}from"react/jsx-runtime";import{compatWrapper as u}from"@backstage/core-compat-api";import{createExtensionDataRef as c,createExtensionBlueprint as s,coreExtensionData as t,ExtensionBoundary as g}from"@backstage/frontend-plugin-api";import{lazy as l}from"react";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@backstage/ui";import"@spotify/backstage-plugin-soundcheck-common";import"react-helmet";import"react-router-dom";import"../routes.esm.js";import"../components/CampaignPage/CampaignPageBUI.esm.js";import"../components/CampaignPage/CampaignPageDeprecated.esm.js";import"../components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js";import"../utils/filters.esm.js";import"../components/SoundcheckHeader/SoundcheckHeader.esm.js";import"../components/SoundcheckHeader/SoundcheckHeaderContext.esm.js";import"../components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js";import"../components/CampaignsPage/CampaignListPage/CampaignTypes.esm.js";import"../components/CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import"../components/CampaignsPage/CampaignListPageBUI.esm.js";import"../contexts/TrackFormContext.esm.js";import"../contexts/CheckFormContext.esm.js";import"../contexts/CampaignFormContext.esm.js";import"../contexts/UserProvider.esm.js";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"react-use/lib/useLocalStorage";import"../components/CampaignForm/CampaignForm.esm.js";import"@remixicon/react";import"../components/PageWarningMessage/PageWarningMessage.esm.js";import"../components/TechHealth/Loading/Loading.esm.js";import"../components/CampaignsPage/CampaignEmptyState.esm.js";import"uuid";import"@backstage/core-components";import"react-hook-form";import"../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../components/SoundcheckDialog/SoundcheckDialog.esm.js";import"../components/FactExplorer/FactExplorer.esm.js";import"../components/FactExplorer/FactExplorerContext.esm.js";import"../components/FormStepper/FormStepper.esm.js";import"../components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js";import"../components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../components/FormMarkdownInput/FormMarkdownInput.esm.js";import"../components/CheckForm/utils/checkFormUtils.esm.js";import"../components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js";import"../components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"../components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/styles.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../components/CheckForm/FormFields/CheckPathResolverInput.esm.js";import"../components/CheckForm/Steps/CheckDetailsStep.esm.js";import"../components/CheckForm/Steps/CheckRulesStep.esm.js";import"../components/CheckForm/Steps/CheckApplicabilityStep.esm.js";import"../components/CheckForm/Steps/CheckReviewStep.esm.js";import"../components/CheckForm/types/ExpressionType.esm.js";import"../components/Frequency/types.esm.js";import"../components/Frequency/util.esm.js";import"../components/Frequency/FrequencyComponent.esm.js";import"../components/CheckForm/types/Path.esm.js";import"@hookform/resolvers/zod";import"../components/CheckForm/utils/validation.esm.js";import"../components/LoadingIndicator/LoadingIndicator.esm.js";import"../components/CheckPage/CheckPageBUI.esm.js";import"../components/CheckPage/CheckPageDeprecated.esm.js";import"../components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js";import"../components/ChecksPage/ChecksListPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js";import"../components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js";import"../components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js";import"../components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js";import"../components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js";import"../components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js";import"../components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js";import"../components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js";import"../components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js";import"../components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js";import"../components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js";import"../components/CollectorPage/CollectorDetailsPageBUI.esm.js";import"../components/CollectorPage/CollectorDetailsPageDeprecated.esm.js";import"../components/CollectorsPage/CollectorsPage.esm.js";import"../components/OverviewPage/OverviewPageContent.esm.js";import"../components/TechHealth/TechHealth.esm.js";import"../components/TechInsights/TechInsightsPageBUI.esm.js";import"../components/TechInsights/TechInsightsPageDeprecated.esm.js";import"lodash";import"../components/Filter/FilterComponent.esm.js";import"../components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js";import"../components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js";import"../components/TrackForm/utils/validation.esm.js";import"../graphql/generated/index.esm.js";import"../components/TrackPage/TrackPageBUI.esm.js";import"../components/TrackPage/TrackPageDeprecated.esm.js";import"../components/TrackPage/TrackTechInsightsExplorerPage.esm.js";import"../components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js";import"js-yaml";import"../components/SummaryCard/SummaryCard.esm.js";import"../components/TracksPage/TrackListPage/TrackMetadata.esm.js";import"../components/TracksPage/TracksListPageBUI.esm.js";import"@spotify/backstage-plugin-core";import"../components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import"../components/RoutingPage/RoutingPageDeprecated.esm.js";import{RoutingPageWrapper as f}from"../components/RoutingPage/RoutingPageWrapper.esm.js";const o=c().with({id:"soundcheck.integrationId"}),h=s({kind:"integration",attachTo:[{id:"page:soundcheck/SoundcheckRoutingPage",input:"integrations"},{id:"app/routes",input:"routes"}],output:[t.routePath,t.reactElement,t.routeRef.optional(),o],dataRefs:{integrationId:o},*factory({integrationId:r,loader:m,path:e,routeRef:p},{node:n}){const a=l(()=>m().then(d=>({default:()=>d})));yield t.routePath(e??`/soundcheck/integrations/${r}/edit`),yield t.reactElement(u(i(g,{node:n,children:i(f,{children:i(a,{})})}))),p&&(yield t.routeRef(p)),yield o(r)}});export{h as IntegrationPageBlueprint,o as integrationIdExtensionDataRef};
2
2
  //# sourceMappingURL=IntegrationPageBlueprint.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as c,Fragment as g,jsx as o}from"react/jsx-runtime";import{useRouteRef as u}from"@backstage/core-plugin-api";import{Box as f,HeaderPage as d}from"@backstage/ui";import{useEffect as C}from"react";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{CampaignFormProvider as i,useCampaignFormContext as l}from"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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{useCreateCampaign as h}from"../../hooks/campaigns/useCreateCampaign.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as k}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useFeatureFlag as b}from"../../hooks/useFeatureFlag.esm.js";import{campaignsPageRouteRef as m}from"../../routes.esm.js";import{CampaignForm as F}from"../CampaignForm/CampaignForm.esm.js";import{DocLinkButton as x}from"../DocLinkButton/DocLinkButton.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as y}from"../SoundcheckHeader/useHeader.esm.js";const L=()=>{const{setIsLoading:t}=l(),{mutateAsync:r,isLoading:e}=h();C(()=>{t(e)},[t,e]);const[a,s]=k(m),p=async n=>{await r(n,{onSuccess:s})};return y({title:"Create a Campaign",description:"Create, monitor, and manage software updates or system transitions.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns"}),o(i,{children:o(F,{onSave:p,onCancel:a})})},P=()=>{const t=b("backstage-ui"),r=u(m);return c(g,{children:[t&&o(f,{children:o(d,{title:"Create Campaign",breadcrumbs:[{label:"All Campaigns",href:r()}],customActions:o(x,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/"})})}),o(i,{children:o(L,{})})]})};export{P as CampaignCreatePage};
1
+ import{jsxs as c,Fragment as g,jsx as o}from"react/jsx-runtime";import{useRouteRef as u}from"@backstage/core-plugin-api";import{HeaderPage as f}from"@backstage/ui";import{useEffect as d}from"react";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{CampaignFormProvider as i,useCampaignFormContext as C}from"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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{useCreateCampaign as l}from"../../hooks/campaigns/useCreateCampaign.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as h}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useFeatureFlag as k}from"../../hooks/useFeatureFlag.esm.js";import{campaignsPageRouteRef as m}from"../../routes.esm.js";import{CampaignForm as b}from"../CampaignForm/CampaignForm.esm.js";import{DocLinkButton as F}from"../DocLinkButton/DocLinkButton.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as y}from"../SoundcheckHeader/useHeader.esm.js";const x=()=>{const{setIsLoading:t}=C(),{mutateAsync:r,isLoading:e}=l();d(()=>{t(e)},[t,e]);const[a,s]=h(m),p=async n=>{await r(n,{onSuccess:s})};return y({title:"Create a Campaign",description:"Create, monitor, and manage software updates or system transitions.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns"}),o(i,{children:o(b,{onSave:p,onCancel:a})})},L=()=>{const t=k("backstage-ui"),r=u(m);return c(g,{children:[t&&o(f,{title:"Create Campaign",breadcrumbs:[{label:"All Campaigns",href:r()}],customActions:o(F,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/"})}),o(i,{children:o(x,{})})]})};export{L as CampaignCreatePage};
2
2
  //# sourceMappingURL=CampaignCreatePage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as r,Fragment as B}from"react/jsx-runtime";import{parseEntityRef as he}from"@backstage/catalog-model";import{useRouteRef as w}from"@backstage/core-plugin-api";import{Box as o,HeaderPage as ue,Flex as G,Text as f,Grid as F}from"@backstage/ui";import{makeStyles as ge}from"@material-ui/core";import{toEntityFilterQuery as Se}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as Ce}from"lodash";import{DateTime as S}from"luxon";import{useState as b,useMemo as v,useEffect as K}from"react";import{useParams as ye,useSearchParams as be}from"react-router-dom";import ve from"react-use/lib/useDebounce";import ke from"react-use/lib/useLocalStorage";import{useCheckStatuses as Ie}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useFilters as Te}from"../../hooks/filters/useFilters.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{useGetCampaigns as Ee}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as we}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as Fe}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useLCPReporting as Re}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Le}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignsPageRouteRef as Pe,campaignOverviewRouteRef as xe,campaignExplorerRouteRef as Ae}from"../../routes.esm.js";import{DescriptionCard as Ne}from"../Cards/DescriptionCard/DescriptionCard.esm.js";import{HistoricalTrackStatusCard as He}from"../Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js";import{TrackStatusCard as Me}from"../Cards/TrackStatusCard/TrackStatusCard.esm.js";import{ChecksTable as Oe}from"../ChecksTable/ChecksTable.esm.js";import{ChipSelector as je}from"../ChipSelector/ChipSelector.esm.js";import{EmptyStateBUI as De}from"../EmptyState/EmptyStateBUI.esm.js";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Ue}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as Ve,CERTIFICATION_STATUS_MAP as Be}from"../FilterSidebar/util.esm.js";import{LoadingTableSkeleton as Ge}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as Ke}from"../Menus/SimpleMenu.esm.js";import{useCampaignActions as _e}from"../Menus/useCampaignActions.esm.js";import{PageCustomActions as $e}from"../PageCustomActions/PageCustomActions.esm.js";import{TopFailingChecksTableBUI as Qe}from"../TopFailingChecksTable/TopFailingChecksTableBUI.esm.js";import{TrackEntitiesTableBUI as qe}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js";const We=ge(()=>({emptyContainer:{padding:"var(--bui-space-1)"},container:{padding:"0 var(--bui-space-1) var(--bui-space-6)"},tables:{margin:"0 var(--bui-space-2)"},tableContent:{margin:"var(--bui-space-3) 0 0"},tabPanel:{padding:"var(--bui-space-6) 0 0"},tabs:{margin:"0 0 var(--bui-space-12)"},cards:{margin:"0 var(--bui-space-2) var(--bui-space-12)",display:"flex",gridGap:"var(--bui-space-4)"}})),C={CHECKS:"Checks",TOP_FAILING_CHECKS:"Top Failing Checks",ENTITIES:"Entities"},ze=()=>{const{owners:m,lifecycles:l,types:d,systems:p,certificationStatuses:R}=Ue(),{campaignId:s}=ye(),_=w(Pe),[n,k]=be(),[c,$]=b(n.get("search")||""),[L,Q]=b(""),[P,q]=b(new Set([C.CHECKS])),I=P.values().next().value??C.CHECKS;ve(()=>{Q(c);const a=new URLSearchParams(n.toString());c?a.set("search",c):a.delete("search"),k(a,{replace:!0})},300,[c]);const x=v(()=>({routeName:"soundcheck-campaign-insights",additionalAttributes:{campaignId:s||"",filtersApplied:m.length+l.length+d.length+p.length,ownersFilter:m?.join(",")||"",lifecyclesFilter:l?.join(",")||"",typesFilter:d?.join(",")||"",systemsFilter:p?.join(",")||"",campaignsSearch:L||""}}),[s,m,l,d,p,L]),{reportContentLoaded:A}=Le(x),{reporter:W}=Re(x),h=We(),T=v(()=>Ve({lifecycles:l,owners:m,types:d,systems:p}),[l,m,d,p]),{data:z,isLoading:u}=Ee({ids:[s],first:1}),i=z?.edges?.[0]?.node,N=_e(i??void 0),t=i?.track,J=v(()=>t?.levels.flatMap(a=>a.checks),[t?.levels]),X=Array.from(new Set(t?.levels.flatMap(a=>a.checks).map(a=>a.id)??[])),{data:H,isLoading:Y}=Ie({trackId:t?.id,checkIds:X,filter:T},!!t),Z=v(()=>Se(t?.filter),[t]),{filters:ee,selected:te,setSelected:ie,onRemoveTag:ae,selectedTags:re}=Te({entityFilterQuery:Z,hasCertificationStatusFilters:!0}),{data:M,isLoading:O}=we({trackId:t?.id??"",filter:T},!!i),oe=S.fromISO(i?.startDate),se=Math.max(Math.ceil(S.now().diff(oe,"days").days),1),{data:ne}=Fe({trackId:t?.id??"",filter:T,numberOfDays:se},!!i),j=W?.getLCPValue();K(()=>{!u&&!O&&A({lcp:j})},[u,O,A,j]);const[y,D]=b(!1),[g,E]=ke("campaign-overview-search-params","");K(()=>{!y&&n?.toString()?(g!==n.toString()&&E(n.toString()),D(!0)):!y&&g?(k(new URLSearchParams(g)),D(!0)):y&&g!==n.toString()&&E(n.toString())},[n,k,E,g,y]);const ce=w(xe),me=w(Ae);if(u)return e(Ge,{});if(!u&&!i)return e(o,{className:h.emptyContainer,children:e(De,{title:"Campaign not found",body:`There is no campaign with the requested id: ${s}.`})});const U=i?.ownerEntityRef,le=U?he(U).name:void 0,de=S.fromISO(i?.startDate),V=S.fromISO(i?.targetCompletionDate),pe=S.now(),fe=Math.max(Math.ceil(V.diff(pe,"days").days),0);return r(B,{children:[e(o,{children:e(ue,{title:i?.name,customActions:e(Ke,{disabled:!N.length,placement:"left top",menuActions:N,label:"Campaign Actions"}),breadcrumbs:[{label:"Campaigns",href:_()}],tabs:[{id:"overview",label:"Campaign Overview",href:s?ce({campaignId:s}):""},{id:"explorer",label:"Tech Insights Explorer",href:s?me({campaignId:s}):""}]})}),r(o,{className:h.container,children:[r(o,{className:h.cards,children:[e(Ne,{description:i?.description??void 0,owner:le}),e(Me,{track:t??void 0,status:M,isCampaign:!0,children:r(B,{children:[r(G,{align:"baseline",mt:"3",children:[e(f,{as:"h1",variant:"title-medium",weight:"bold",children:fe}),e(f,{variant:"body-small",children:"Days remaining"})]}),r(F.Root,{children:[r(F.Item,{children:[e(o,{children:e(f,{color:"secondary",variant:"body-small",children:"Start date"})}),e(o,{children:e(f,{variant:"body-small",children:de.toLocaleString({month:"short",day:"numeric",year:"numeric"})})})]}),r(F.Item,{children:[e(o,{children:e(f,{color:"secondary",variant:"body-small",children:"End date"})}),e(o,{children:e(f,{variant:"body-small",children:V.toLocaleString({month:"short",day:"numeric",year:"numeric"})})})]})]})]})}),e(He,{track:i?.track,history:ne,isCampaign:!0})]}),t&&r(o,{className:h.tables,children:[r(G,{justify:"between",children:[e(o,{minWidth:"16rem",children:e(je,{options:["Checks","Top Failing Checks","Entities"],selected:P,ariaLabel:"Sections",onSelectionChange:q})}),e($e,{searchValue:c,setSearchValue:a=>$(a),filters:ee,selected:te,setSelected:ie,onRemoveTag:ae,selectedTags:re})]}),r(o,{className:h.tableContent,children:[I===C.CHECKS&&e(Oe,{trackId:t.id,checks:J,checkStatuses:H,isLoading:u||Y,searchValue:c}),I===C.TOP_FAILING_CHECKS&&e(Qe,{track:t,checkStatuses:H,certificationStatus:M?.certificationStatus,searchValue:c}),I===C.ENTITIES&&e(qe,{isCampaign:!0,track:t,lifecycles:l,owners:m,types:d,systems:p,certificationStatus:Ce(R)?void 0:Be[R[0]],searchValue:c})]})]})]})]})};export{ze as CampaignPageBUI};
1
+ import{jsx as e,jsxs as r,Fragment as G}from"react/jsx-runtime";import{parseEntityRef as Se}from"@backstage/catalog-model";import{useRouteRef as w}from"@backstage/core-plugin-api";import{Container as F,HeaderPage as Ce,Box as c,Flex as _,Text as h,Grid as R}from"@backstage/ui";import{makeStyles as ye}from"@material-ui/core";import{toEntityFilterQuery as be}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as ve}from"lodash";import{DateTime as C}from"luxon";import{useState as v,useMemo as I,useEffect as q}from"react";import{useParams as Ie,useSearchParams as Te}from"react-router-dom";import ke from"react-use/lib/useDebounce";import Ee from"react-use/lib/useLocalStorage";import{useCheckStatuses as we}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useFilters as Fe}from"../../hooks/filters/useFilters.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{useGetCampaigns as Re}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as Le}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as Ne}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useLCPReporting as Pe}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as xe}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignsPageRouteRef as Ae,campaignOverviewRouteRef as De,campaignExplorerRouteRef as Oe}from"../../routes.esm.js";import{DescriptionCard as He}from"../Cards/DescriptionCard/DescriptionCard.esm.js";import{HistoricalTrackStatusCard as Me}from"../Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js";import{TrackStatusCard as Ue}from"../Cards/TrackStatusCard/TrackStatusCard.esm.js";import{ChecksTable as Be}from"../ChecksTable/ChecksTable.esm.js";import{ChipSelector as je}from"../ChipSelector/ChipSelector.esm.js";import{EmptyStateBUI as Ke}from"../EmptyState/EmptyStateBUI.esm.js";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Ve}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as Ge,CERTIFICATION_STATUS_MAP as _e}from"../FilterSidebar/util.esm.js";import{LoadingTableSkeleton as qe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as Qe}from"../Menus/SimpleMenu.esm.js";import{useCampaignActions as We}from"../Menus/useCampaignActions.esm.js";import{PageCustomActions as Ye}from"../PageCustomActions/PageCustomActions.esm.js";import{SendCampaignNotificationDialogBUI as $e}from"../SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js";import{TopFailingChecksTableBUI as ze}from"../TopFailingChecksTable/TopFailingChecksTableBUI.esm.js";import{TrackEntitiesTableBUI as Je}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js";const Xe=ye(()=>({container:{marginBottom:"var(--bui-space-12)"},tableContent:{margin:"var(--bui-space-3) 0 0"},tabPanel:{padding:"var(--bui-space-6) 0 0"},tabs:{margin:"0 0 var(--bui-space-12)"},cards:{margin:"0 0 var(--bui-space-12)",display:"flex",gridGap:"var(--bui-space-4)"}})),f={CHECKS:"Checks",TOP_FAILING_CHECKS:"Top Failing Checks",ENTITIES:"Entities"},Ze=()=>{const{owners:m,lifecycles:l,types:d,systems:p,certificationStatuses:L}=Ve(),{campaignId:o}=Ie(),Q=w(Ae),[s,T]=Te(),[n,W]=v(s.get("search")||""),[N,Y]=v(""),[P,$]=v(new Set([f.CHECKS])),y=P.values().next().value??f.CHECKS;ke(()=>{Y(n);const a=new URLSearchParams(s.toString());n?a.set("search",n):a.delete("search"),T(a,{replace:!0})},300,[n]);const x=I(()=>({routeName:"soundcheck-campaign-insights",additionalAttributes:{campaignId:o||"",filtersApplied:m.length+l.length+d.length+p.length,ownersFilter:m?.join(",")||"",lifecyclesFilter:l?.join(",")||"",typesFilter:d?.join(",")||"",systemsFilter:p?.join(",")||"",campaignsSearch:N||""}}),[o,m,l,d,p,N]),{reportContentLoaded:A}=xe(x),{reporter:z}=Pe(x),g=Xe(),k=I(()=>Ge({lifecycles:l,owners:m,types:d,systems:p}),[l,m,d,p]),{data:J,isLoading:u}=Re({ids:[o],first:1}),t=J?.edges?.[0]?.node,{actions:D,showNotificationDialog:O,setShowNotificationDialog:X}=We(t??void 0),i=t?.track,Z=I(()=>i?.levels.flatMap(a=>a.checks),[i?.levels]),ee=Array.from(new Set(i?.levels.flatMap(a=>a.checks).map(a=>a.id)??[])),{data:H,isLoading:te}=we({trackId:i?.id,checkIds:ee,filter:k},!!i),ie=I(()=>be(i?.filter),[i]),{filters:ae,selected:re,setSelected:oe,onRemoveTag:se,selectedTags:ne}=Fe({entityFilterQuery:ie,hasCertificationStatusFilters:!0}),{data:M,isLoading:U}=Le({trackId:i?.id??"",filter:k},!!t),ce=C.fromISO(t?.startDate),me=Math.max(Math.ceil(C.now().diff(ce,"days").days),1),{data:le}=Ne({trackId:i?.id??"",filter:k,numberOfDays:me},!!t),B=z?.getLCPValue();q(()=>{!u&&!U&&A({lcp:B})},[u,U,A,B]);const[b,j]=v(!1),[S,E]=Ee("campaign-overview-search-params","");q(()=>{!b&&s?.toString()?(S!==s.toString()&&E(s.toString()),j(!0)):!b&&S?(T(new URLSearchParams(S)),j(!0)):b&&S!==s.toString()&&E(s.toString())},[s,T,E,S,b]);const de=w(De),pe=w(Oe);if(u)return e(F,{className:g.container,children:e(qe,{})});if(!u&&!t)return e(F,{className:g.container,children:e(Ke,{title:"Campaign not found",body:`There is no campaign with the requested id: ${o}.`})});const K=t?.ownerEntityRef,he=K?Se(K).name:void 0,fe=C.fromISO(t?.startDate),V=C.fromISO(t?.targetCompletionDate),ge=C.now(),ue=Math.max(Math.ceil(V.diff(ge,"days").days),0);return r(G,{children:[e(Ce,{title:t?.name,customActions:e(Qe,{disabled:!D.length,placement:"left top",menuActions:D,label:"Campaign Actions"}),breadcrumbs:[{label:"Campaigns",href:Q()}],tabs:[{id:"overview",label:"Campaign Overview",href:o?de({campaignId:o}):""},{id:"explorer",label:"Tech Insights Explorer",href:o?pe({campaignId:o}):""}]}),r(F,{className:g.container,children:[r(c,{className:g.cards,children:[e(He,{description:t?.description??void 0,owner:he}),e(Ue,{track:i??void 0,status:M,isCampaign:!0,children:r(G,{children:[r(_,{align:"baseline",mt:"3",children:[e(h,{as:"h1",variant:"title-medium",weight:"bold",children:ue}),e(h,{variant:"body-small",children:"Days remaining"})]}),r(R.Root,{children:[r(R.Item,{children:[e(c,{children:e(h,{color:"secondary",variant:"body-small",children:"Start date"})}),e(c,{children:e(h,{variant:"body-small",children:fe.toLocaleString({month:"short",day:"numeric",year:"numeric"})})})]}),r(R.Item,{children:[e(c,{children:e(h,{color:"secondary",variant:"body-small",children:"End date"})}),e(c,{children:e(h,{variant:"body-small",children:V.toLocaleString({month:"short",day:"numeric",year:"numeric"})})})]})]})]})}),e(Me,{track:t?.track,history:le,isCampaign:!0})]}),i&&r(c,{children:[r(_,{justify:"between",children:[e(c,{minWidth:"16rem",children:e(je,{options:["Checks","Top Failing Checks","Entities"],selected:P,ariaLabel:"Sections",onSelectionChange:$})}),e(Ye,{searchValue:n,setSearchValue:a=>W(a),filters:ae,selected:re,setSelected:oe,onRemoveTag:se,selectedTags:ne,showSearch:y!==f.ENTITIES})]}),r(c,{className:g.tableContent,children:[y===f.CHECKS&&e(Be,{trackId:i.id,checks:Z,checkStatuses:H,isLoading:u||te,searchValue:n}),y===f.TOP_FAILING_CHECKS&&e(ze,{track:i,checkStatuses:H,certificationStatus:M?.certificationStatus,searchValue:n}),y===f.ENTITIES&&e(Je,{isCampaign:!0,track:i,lifecycles:l,owners:m,types:d,systems:p,certificationStatus:ve(L)?void 0:_e[L[0]],searchValue:n})]})]}),t&&O&&e($e,{campaign:t,isOpen:O,handleClose:()=>X(!1)})]})]})};export{Ze as CampaignPageBUI};
2
2
  //# sourceMappingURL=CampaignPageBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i,jsxs as n,Fragment as ne}from"react/jsx-runtime";import{useRouteRef as re,useApi as se,configApiRef as ce}from"@backstage/core-plugin-api";import{EntityRefLink as le}from"@backstage/plugin-catalog-react";import{usePermission as y}from"@backstage/plugin-permission-react";import{makeStyles as me,Button as pe,Box as s,Typography as D,Divider as de,Tabs as ge,Tab as C}from"@material-ui/core";import{soundcheckCampaignReadPermission as fe,soundcheckCampaignUpdatePermission as he,soundcheckCampaignNotificationsCreatePermission as ue,toEntityFilterQuery as ye}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as Ce}from"lodash";import{useMemo as d,useState as ke,useCallback as Se,useEffect as be}from"react";import{useParams as Te,useNavigate as we}from"react-router-dom";import{useCheckStatuses as ve}from"../../hooks/aggregations/useCheckStatuses.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as Fe}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as xe}from"../../hooks/aggregations/useCertificationStatus.esm.js";import"react-use/lib/useLocalStorage";import{useLCPReporting as Le}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Ne}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignEditRouteRef as Re}from"../../routes.esm.js";import{FilterSidebar as Ae}from"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Be}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as Ee,CERTIFICATION_STATUS_MAP as De}from"../FilterSidebar/util.esm.js";import{LevelsTable as Ie}from"../LevelsTable/LevelsTable.esm.js";import{LoadingIndicator as Pe}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as je}from"../PageWarningMessage/PageWarningMessage.esm.js";import{SendCampaignNotificationDialog as Oe}from"../SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Me}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContentDeprecated as ze}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{TopFailingChecksTable as He}from"../TopFailingChecksTable/TopFailingChecksTable.esm.js";import{TrackEntitiesTable as We}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js";import{CampaignStatusHistoryTile as _e}from"./CampaignStatusHistoryTile.esm.js";import{CampaignStatusTile as $e}from"./CampaignStatusTile.esm.js";import{DaysRemainingTile as Ue}from"./DaysRemainingTile.esm.js";const Ve=me(e=>({root:{height:"100%",background:e.palette.background.default,display:"flex",width:"100%",borderTop:`1px solid ${e.palette.divider}`},progressContainer:{flex:1,borderBottom:`1px solid ${e.palette.divider}`,padding:e.spacing(2)},campaignContainerContent:{paddingTop:e.spacing(1),paddingBottom:e.spacing(1),backgroundColor:e.palette.background.paper},editButton:{marginLeft:"auto"},notificationButton:{marginRight:e.spacing(1)},checksContainer:{},entitiesContainer:{marginTop:e.spacing(3)},headerDescription:{fontSize:e.typography.body2.fontSize,margin:e.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},content:{paddingTop:0,flex:1},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},sectionTitle:{paddingBottom:e.spacing(1)},chartSection:{flex:1,flexBasis:"auto",minWidth:320,display:"flex",flexDirection:"column",height:"100%"},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${e.typography.h5.fontSize}px`,cursor:"default",marginBottom:e.spacing(2)},divider:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},tabs:{padding:e.spacing(2,2,0,2)},contentArea:{flex:1,padding:e.spacing(0,2)},tableArea:{margin:e.spacing(1,0,2)}})),Ge=()=>{const{owners:e,lifecycles:l,types:m,systems:p,certificationStatuses:k,stagedLifecycles:I,setStagedLifecycles:P,stagedOwners:j,setStagedOwners:O,stagedTypes:M,setStagedTypes:z,stagedSystems:H,setStagedSystems:W,stagedCertificationStatuses:S,setStagedCertificationStatuses:_,hasFilterChanges:$,handleApplyFilters:U,handleClearFilters:V}=Be(),{campaignId:r}=Te(),b=d(()=>({routeName:"soundcheck-campaign-insights",additionalAttributes:{campaignId:r||"",filtersApplied:e.length+l.length+m.length+p.length,ownersFilter:e?.join(",")||"",lifecyclesFilter:l?.join(",")||"",typesFilter:m?.join(",")||"",systemsFilter:p?.join(",")||""}}),[r,e,l,m,p]),{reportContentLoaded:T}=Ne(b),{reporter:G}=Le(b),t=Ve(),f=d(()=>Ee({lifecycles:l,owners:e,types:m,systems:p}),[l,e,m,p]),[h,Q]=ke("checks"),q=Se((c,oe)=>{Q(oe)},[]),{data:J,isLoading:g}=Fe({ids:[r],first:1}),o=J?.edges?.[0]?.node,a=o?.track,{loading:K,allowed:X}=y({permission:fe,resourceRef:r}),{loading:w,allowed:v}=y({permission:he,resourceRef:r}),Y=Array.from(new Set(a?.levels.flatMap(c=>c.checks).map(c=>c.id)??[])),{data:F,isLoading:u}=ve({trackId:a?.id,checkIds:Y,filter:f},!!a),x=we(),L=re(Re),Z=d(()=>a?.ownerEntityRef?i(le,{color:"inherit",entityRef:a.ownerEntityRef,className:t.ownerLink}):null,[a?.ownerEntityRef,t.ownerLink]),N=se(ce).getOptionalBoolean("soundcheck.notifications.enabled"),{loading:R,allowed:A}=y({permission:ue}),{data:ee,isLoading:B}=xe({trackId:a?.id??"",filter:f},!!o),ie=d(()=>n(ne,{children:[N&&!R&&A&&o&&i(Oe,{campaign:o,buttonClass:t.notificationButton}),!w&&v&&a?.isEditable?i(pe,{className:t.editButton,variant:"contained",color:"primary",onClick:()=>{x(L({campaignId:r}))},children:"Edit Campaign"}):null]}),[N,R,A,o,t.notificationButton,t.editButton,w,v,a?.isEditable,x,L,r]),te=d(()=>a?.description?i(ze,{className:t.headerDescription,content:a.description}):null,[t.headerDescription,a?.description]);Me({title:a?.name,description:te,customSubtitle:Z,sectionRight:ie});const ae=d(()=>ye(a?.filter),[a]),E=G?.getLCPValue();return be(()=>{!g&&!u&&!B&&T({lcp:E})},[g,u,B,T,E]),n("div",{children:[i(je,{entityName:"track",entityId:r,showNotFound:!g&&!o,showCannotView:!K&&!X}),g&&i(Pe,{}),a&&n("div",{className:t.root,children:[i(s,{children:i(Ae,{trackFilter:ae,stagedTypes:M,stagedLifecycles:I,stagedOwners:j,stagedSystems:H,stagedCertificationStatus:S?S[0]:"",onTypesChange:z,onLifecyclesChange:P,onOwnersChange:O,onSystemsChange:W,onCertificationStatusChange:c=>_(c?[c]:[]),onApplyFilters:U,onClearFilters:V,hasFilterChanges:$})}),n(s,{className:t.content,children:[i("div",{className:t.progressContainer,children:n(s,{display:"flex",marginTop:2,children:[n(s,{display:"flex",flexDirection:"column",marginRight:3,minWidth:320,children:[i(D,{className:t.title,children:"Current Status"}),i($e,{campaign:o,filter:f}),i(de,{className:t.divider}),i(Ue,{campaign:o})]}),n(s,{className:t.chartSection,children:[i(D,{className:t.title,children:"Historical Status"}),i(_e,{campaign:o,filter:f})]})]})}),i(s,{className:t.tabs,children:n(ge,{value:h,onChange:q,indicatorColor:"primary",textColor:"primary",children:[i(C,{label:"Checks",value:"checks"}),i(C,{label:"Top Failing Checks",value:"topFailingChecks"}),i(C,{label:"Entities",value:"entities"})]})}),n(s,{className:t.contentArea,children:[h==="checks"&&i("div",{className:t.tableArea,children:i(Ie,{track:a,checkStatuses:F,isLoading:g||u,hideLevel:!0})}),h==="entities"&&i(s,{marginTop:1,children:i(We,{track:a,lifecycles:l,owners:e,types:m,systems:p,certificationStatus:Ce(k)?void 0:De[k[0]]})}),h==="topFailingChecks"&&i("div",{className:t.tableArea,children:i(He,{track:a,checkStatuses:F,certificationStatus:ee?.certificationStatus,hideLevel:!0})})]})]})]})]})};export{Ge as CampaignPageDeprecated};
1
+ import{jsx as i,jsxs as r,Fragment as re}from"react/jsx-runtime";import{useRouteRef as ne,useApi as se,configApiRef as ce}from"@backstage/core-plugin-api";import{EntityRefLink as le}from"@backstage/plugin-catalog-react";import{usePermission as y}from"@backstage/plugin-permission-react";import{makeStyles as me,Button as pe,Box as s,Typography as D,Divider as de,Tabs as ge,Tab as C}from"@material-ui/core";import{soundcheckCampaignReadPermission as fe,soundcheckCampaignUpdatePermission as he,soundcheckCampaignNotificationsCreatePermission as ue,toEntityFilterQuery as ye}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as Ce}from"lodash";import{useMemo as d,useState as ke,useCallback as Se,useEffect as be}from"react";import{useParams as Te,useNavigate as we}from"react-router-dom";import{useCheckStatuses as ve}from"../../hooks/aggregations/useCheckStatuses.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as Fe}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as xe}from"../../hooks/aggregations/useCertificationStatus.esm.js";import"react-use/lib/useLocalStorage";import{useLCPReporting as Le}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Ne}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignEditRouteRef as Re}from"../../routes.esm.js";import{FilterSidebar as Ae}from"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Be}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as Ee,CERTIFICATION_STATUS_MAP as De}from"../FilterSidebar/util.esm.js";import{LevelsTable as Ie}from"../LevelsTable/LevelsTable.esm.js";import{LoadingIndicator as Pe}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as je}from"../PageWarningMessage/PageWarningMessage.esm.js";import{SendCampaignNotificationDialog as Oe}from"../SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"react-hook-form";import"../ListboxVirtualized/ListboxVirtualized.esm.js";import"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import"../FormFieldLabel/FormFieldLabel.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Me}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContentDeprecated as ze}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{TopFailingChecksTable as He}from"../TopFailingChecksTable/TopFailingChecksTable.esm.js";import{TrackEntitiesTable as We}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js";import{CampaignStatusHistoryTile as _e}from"./CampaignStatusHistoryTile.esm.js";import{CampaignStatusTile as $e}from"./CampaignStatusTile.esm.js";import{DaysRemainingTile as Ue}from"./DaysRemainingTile.esm.js";const Ve=me(e=>({root:{height:"100%",background:e.palette.background.default,display:"flex",width:"100%",borderTop:`1px solid ${e.palette.divider}`},progressContainer:{flex:1,borderBottom:`1px solid ${e.palette.divider}`,padding:e.spacing(2)},campaignContainerContent:{paddingTop:e.spacing(1),paddingBottom:e.spacing(1),backgroundColor:e.palette.background.paper},editButton:{marginLeft:"auto"},notificationButton:{marginRight:e.spacing(1)},checksContainer:{},entitiesContainer:{marginTop:e.spacing(3)},headerDescription:{fontSize:e.typography.body2.fontSize,margin:e.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},content:{paddingTop:0,flex:1},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},sectionTitle:{paddingBottom:e.spacing(1)},chartSection:{flex:1,flexBasis:"auto",minWidth:320,display:"flex",flexDirection:"column",height:"100%"},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${e.typography.h5.fontSize}px`,cursor:"default",marginBottom:e.spacing(2)},divider:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},tabs:{padding:e.spacing(2,2,0,2)},contentArea:{flex:1,padding:e.spacing(0,2)},tableArea:{margin:e.spacing(1,0,2)}})),Ge=()=>{const{owners:e,lifecycles:l,types:m,systems:p,certificationStatuses:k,stagedLifecycles:I,setStagedLifecycles:P,stagedOwners:j,setStagedOwners:O,stagedTypes:M,setStagedTypes:z,stagedSystems:H,setStagedSystems:W,stagedCertificationStatuses:S,setStagedCertificationStatuses:_,hasFilterChanges:$,handleApplyFilters:U,handleClearFilters:V}=Be(),{campaignId:n}=Te(),b=d(()=>({routeName:"soundcheck-campaign-insights",additionalAttributes:{campaignId:n||"",filtersApplied:e.length+l.length+m.length+p.length,ownersFilter:e?.join(",")||"",lifecyclesFilter:l?.join(",")||"",typesFilter:m?.join(",")||"",systemsFilter:p?.join(",")||""}}),[n,e,l,m,p]),{reportContentLoaded:T}=Ne(b),{reporter:G}=Le(b),t=Ve(),f=d(()=>Ee({lifecycles:l,owners:e,types:m,systems:p}),[l,e,m,p]),[h,Q]=ke("checks"),q=Se((c,oe)=>{Q(oe)},[]),{data:J,isLoading:g}=Fe({ids:[n],first:1}),o=J?.edges?.[0]?.node,a=o?.track,{loading:K,allowed:X}=y({permission:fe,resourceRef:n}),{loading:w,allowed:v}=y({permission:he,resourceRef:n}),Y=Array.from(new Set(a?.levels.flatMap(c=>c.checks).map(c=>c.id)??[])),{data:F,isLoading:u}=ve({trackId:a?.id,checkIds:Y,filter:f},!!a),x=we(),L=ne(Re),Z=d(()=>a?.ownerEntityRef?i(le,{color:"inherit",entityRef:a.ownerEntityRef,className:t.ownerLink}):null,[a?.ownerEntityRef,t.ownerLink]),N=se(ce).getOptionalBoolean("soundcheck.notifications.enabled"),{loading:R,allowed:A}=y({permission:ue}),{data:ee,isLoading:B}=xe({trackId:a?.id??"",filter:f},!!o),ie=d(()=>r(re,{children:[N&&!R&&A&&o&&i(Oe,{campaign:o,buttonClass:t.notificationButton}),!w&&v&&a?.isEditable?i(pe,{className:t.editButton,variant:"contained",color:"primary",onClick:()=>{x(L({campaignId:n}))},children:"Edit Campaign"}):null]}),[N,R,A,o,t.notificationButton,t.editButton,w,v,a?.isEditable,x,L,n]),te=d(()=>a?.description?i(ze,{className:t.headerDescription,content:a.description}):null,[t.headerDescription,a?.description]);Me({title:a?.name,description:te,customSubtitle:Z,sectionRight:ie});const ae=d(()=>ye(a?.filter),[a]),E=G?.getLCPValue();return be(()=>{!g&&!u&&!B&&T({lcp:E})},[g,u,B,T,E]),r("div",{children:[i(je,{entityName:"track",entityId:n,showNotFound:!g&&!o,showCannotView:!K&&!X}),g&&i(Pe,{}),a&&r("div",{className:t.root,children:[i(s,{children:i(Ae,{trackFilter:ae,stagedTypes:M,stagedLifecycles:I,stagedOwners:j,stagedSystems:H,stagedCertificationStatus:S?S[0]:"",onTypesChange:z,onLifecyclesChange:P,onOwnersChange:O,onSystemsChange:W,onCertificationStatusChange:c=>_(c?[c]:[]),onApplyFilters:U,onClearFilters:V,hasFilterChanges:$})}),r(s,{className:t.content,children:[i("div",{className:t.progressContainer,children:r(s,{display:"flex",marginTop:2,children:[r(s,{display:"flex",flexDirection:"column",marginRight:3,minWidth:320,children:[i(D,{className:t.title,children:"Current Status"}),i($e,{campaign:o,filter:f}),i(de,{className:t.divider}),i(Ue,{campaign:o})]}),r(s,{className:t.chartSection,children:[i(D,{className:t.title,children:"Historical Status"}),i(_e,{campaign:o,filter:f})]})]})}),i(s,{className:t.tabs,children:r(ge,{value:h,onChange:q,indicatorColor:"primary",textColor:"primary",children:[i(C,{label:"Checks",value:"checks"}),i(C,{label:"Top Failing Checks",value:"topFailingChecks"}),i(C,{label:"Entities",value:"entities"})]})}),r(s,{className:t.contentArea,children:[h==="checks"&&i("div",{className:t.tableArea,children:i(Ie,{track:a,checkStatuses:F,isLoading:g||u,hideLevel:!0})}),h==="entities"&&i(s,{marginTop:1,children:i(We,{track:a,lifecycles:l,owners:e,types:m,systems:p,certificationStatus:Ce(k)?void 0:De[k[0]]})}),h==="topFailingChecks"&&i("div",{className:t.tableArea,children:i(He,{track:a,checkStatuses:F,certificationStatus:ee?.certificationStatus,hideLevel:!0})})]})]})]})]})};export{Ge as CampaignPageDeprecated};
2
2
  //# sourceMappingURL=CampaignPageDeprecated.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as c,Fragment as M}from"react/jsx-runtime";import{useRouteRef as C,useApi as U}from"@backstage/core-plugin-api";import{entityPresentationApiRef as q}from"@backstage/plugin-catalog-react";import{Box as m,HeaderPage as V,Flex as $,SearchField as z}from"@backstage/ui";import{makeStyles as J}from"@material-ui/core";import{useState as x,useMemo as y,useEffect as K}from"react";import{useParams as Q,useSearchParams as W}from"react-router-dom";import X from"react-use/lib/useDebounce";import{useGroupHierarchy as Y}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{useHierarchicalTrackStatus as Z}from"../../hooks/heirarchy/useHierarchicalTrackStatus.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as _}from"../../hooks/campaigns/useGetCampaigns.esm.js";import{useGetAllTracks as ee}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useLCPReporting as re}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ie}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignsPageRouteRef as ae,campaignOverviewRouteRef as te,campaignExplorerRouteRef as oe}from"../../routes.esm.js";import{EmptyStateBUI as me}from"../EmptyState/EmptyStateBUI.esm.js";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as ne}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import"../FilterSidebar/util.esm.js";import{hierarchyToNivo as se}from"../HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js";import{LoadingTableSkeleton as pe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as ce}from"../Menus/SimpleMenu.esm.js";import{useCampaignActions as le}from"../Menus/useCampaignActions.esm.js";import{TechInsightsExplorerTable as de}from"../TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js";import{TechInsightsGroupSelector as ge}from"../TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js";import{TopAndBottomPerformingTeams as fe}from"../TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js";const ue=J(()=>({emptyContainer:{padding:"var(--bui-space-1)"},container:{padding:"0 var(--bui-space-1) var(--bui-space-6)"},teams:{margin:"0 var(--bui-space-2) var(--bui-space-12)"},tables:{margin:"0 var(--bui-space-2)"},tableContent:{margin:"var(--bui-space-3) 0 0"},filters:{width:"25rem",marginLeft:"auto"}})),he=()=>{const{owners:l,lifecycles:d,types:g,systems:f}=ne(),a=ue(),{campaignId:r}=Q(),[u,F]=W(),[n,N]=x(u.get("search")||""),t=u.get("group"),[T,E]=x(""),j=C(ae);X(()=>{E(n);const i=new URLSearchParams(u.toString());n?i.set("search",n):i.delete("search"),F(i,{replace:!0})},300,[n]);const I=y(()=>({routeName:"soundcheck-campaign-insights",additionalAttributes:{campaignId:r||"",filtersApplied:l.length+d.length+g.length+f.length,ownersFilter:l?.join(",")||"",lifecyclesFilter:d?.join(",")||"",typesFilter:g?.join(",")||"",systemsFilter:f?.join(",")||"",campaignsSearch:T||""}}),[r,l,d,g,f,T]),{reportContentLoaded:R}=ie(I),{reporter:G}=re(I),{data:B,isLoading:s}=_({ids:[r],first:1}),h=B?.edges?.[0]?.node,L=le(h??void 0),o=h?.track,k=U(q),{data:A}=ee({}),b=y(()=>A?.edges.find(i=>i.node.id===o?.id)?.node,[A?.edges,o?.id]),{data:P,isLoading:v}=Y(t||void 0,{enabled:!!t&&!!o?.id&&!!b,ownedEntitiesFilter:b?.filter??void 0}),{data:S,isLoading:p}=Z({trackId:o?.id??"",groupRef:t??"",skip:!o?.id}),H=y(()=>{if(!t)return;const i=P?.[t];return i?se(i,S||null,()=>"var(--bui-fg-primary)",k,void 0):void 0},[P,k,t,S]),w=G?.getLCPValue();K(()=>{!s&&!v&&!p&&R({lcp:w})},[s,v,p,R,w]);const O=C(te),D=C(oe);return s?e(pe,{}):!s&&!h?e(m,{className:a.emptyContainer,children:e(me,{title:"Campaign not found",body:`There is no campaign with the requested id: ${r}.`})}):c(M,{children:[e(m,{children:e(V,{title:o?.name,customActions:e(ce,{disabled:!L.length,placement:"left top",menuActions:L,label:"Campaign Actions"}),breadcrumbs:[{label:"Campaigns",href:j()}],tabs:[{id:"overview",label:"Campaign Overview",href:r?O({campaignId:r}):""},{id:"explorer",label:"Tech Insights Explorer",href:r?D({campaignId:r}):""}]})}),c(m,{className:a.container,children:[e(m,{className:a.teams,children:e(fe,{trackStatus:S??void 0,isLoading:p,campaignId:r})}),c(m,{className:a.tables,children:[c($,{align:"center",gap:"3",className:a.filters,children:[e(ge,{}),e(z,{value:n,onChange:N,"aria-label":"Search",placeholder:"Search"})]}),e(m,{className:a.tableContent,children:e(de,{tableData:H,isLoading:v||p,trackId:b?.id,campaignId:r})})]})]})]})};export{he as CampaignTechInsightsExplorerPage};
1
+ import{jsx as e,jsxs as c,Fragment as q}from"react/jsx-runtime";import{useRouteRef as S,useApi as $}from"@backstage/core-plugin-api";import{entityPresentationApiRef as z}from"@backstage/plugin-catalog-react";import{Container as C,HeaderPage as J,Box as I,Flex as K,SearchField as Q}from"@backstage/ui";import{makeStyles as W}from"@material-ui/core";import{useState as F,useMemo as R,useEffect as X}from"react";import{useParams as Y,useSearchParams as Z}from"react-router-dom";import _ from"react-use/lib/useDebounce";import{useGroupHierarchy as ee}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{useHierarchicalTrackStatus as ie}from"../../hooks/heirarchy/useHierarchicalTrackStatus.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as re}from"../../hooks/campaigns/useGetCampaigns.esm.js";import{useGetAllTracks as te}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useLCPReporting as ae}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as oe}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignsPageRouteRef as ne,campaignOverviewRouteRef as me,campaignExplorerRouteRef as se}from"../../routes.esm.js";import{EmptyStateBUI as pe}from"../EmptyState/EmptyStateBUI.esm.js";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as ce}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import"../FilterSidebar/util.esm.js";import{hierarchyToNivo as le}from"../HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js";import{LoadingTableSkeleton as de}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as ge}from"../Menus/SimpleMenu.esm.js";import{useCampaignActions as fe}from"../Menus/useCampaignActions.esm.js";import{SendCampaignNotificationDialogBUI as he}from"../SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js";import{TechInsightsExplorerTable as ue}from"../TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js";import{TechInsightsGroupSelector as be}from"../TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js";import{TopAndBottomPerformingTeams as ve}from"../TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js";const Se=W(()=>({container:{marginBottom:"var(--bui-space-12)"},teams:{margin:"0 0 var(--bui-space-12)"},tableContent:{margin:"var(--bui-space-3) 0 0"},filters:{width:"25rem",marginLeft:"auto"}})),Ce=()=>{const a=Se(),{owners:l,lifecycles:d,types:g,systems:f}=ce(),{campaignId:i}=Y(),[h,E]=Z(),[n,j]=F(h.get("search")||""),t=h.get("group"),[T,B]=F(""),G=S(ne);_(()=>{B(n);const r=new URLSearchParams(h.toString());n?r.set("search",n):r.delete("search"),E(r,{replace:!0})},300,[n]);const y=R(()=>({routeName:"soundcheck-campaign-insights",additionalAttributes:{campaignId:i||"",filtersApplied:l.length+d.length+g.length+f.length,ownersFilter:l?.join(",")||"",lifecyclesFilter:d?.join(",")||"",typesFilter:g?.join(",")||"",systemsFilter:f?.join(",")||"",campaignsSearch:T||""}}),[i,l,d,g,f,T]),{reportContentLoaded:k}=oe(y),{reporter:D}=ae(y),{data:H,isLoading:s}=re({ids:[i],first:1}),m=H?.edges?.[0]?.node,{actions:w,showNotificationDialog:L,setShowNotificationDialog:O}=fe(m??void 0),o=m?.track,N=$(z),{data:x}=te({}),u=R(()=>x?.edges.find(r=>r.node.id===o?.id)?.node,[x?.edges,o?.id]),{data:A,isLoading:b}=ee(t||void 0,{enabled:!!t&&!!o?.id&&!!u,ownedEntitiesFilter:u?.filter??void 0}),{data:v,isLoading:p}=ie({trackId:o?.id??"",groupRef:t??"",skip:!o?.id}),U=R(()=>{if(!t)return;const r=A?.[t];return r?le(r,v||null,()=>"var(--bui-fg-primary)",N,void 0):void 0},[A,N,t,v]),P=D?.getLCPValue();X(()=>{!s&&!b&&!p&&k({lcp:P})},[s,b,p,k,P]);const M=S(me),V=S(se);return s?e(C,{className:a.container,children:e(de,{})}):!s&&!m?e(C,{className:a.container,children:e(pe,{title:"Campaign not found",body:`There is no campaign with the requested id: ${i}.`})}):c(q,{children:[e(J,{title:o?.name,customActions:e(ge,{disabled:!w.length,placement:"left top",menuActions:w,label:"Campaign Actions"}),breadcrumbs:[{label:"Campaigns",href:G()}],tabs:[{id:"overview",label:"Campaign Overview",href:i?M({campaignId:i}):""},{id:"explorer",label:"Tech Insights Explorer",href:i?V({campaignId:i}):""}]}),c(C,{className:a.container,children:[e(I,{className:a.teams,children:e(ve,{trackStatus:v??void 0,isLoading:p,campaignId:i})}),c(I,{children:[c(K,{align:"center",gap:"3",className:a.filters,children:[e(be,{}),e(Q,{value:n,onChange:j,"aria-label":"Search",placeholder:"Search"})]}),e(I,{className:a.tableContent,children:e(ue,{tableData:U,isLoading:b||p,selectedGroup:t??void 0,trackId:u?.id,campaignId:i})})]}),m&&L&&e(he,{campaign:m,isOpen:L,handleClose:()=>O(!1)})]})]})};export{Ce as CampaignTechInsightsExplorerPage};
2
2
  //# sourceMappingURL=CampaignTechInsightsExplorerPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as l,Fragment as G}from"react/jsx-runtime";import{useApi as U,useRouteRef as L}from"@backstage/core-plugin-api";import{entityPresentationApiRef as F}from"@backstage/plugin-catalog-react";import{usePermission as W}from"@backstage/plugin-permission-react";import{Box as b,HeaderPage as Y,Table as q,TableHeader as J,Column as n,TableBody as K,TablePagination as Q}from"@backstage/ui";import{makeStyles as X}from"@material-ui/core";import{RiCalendarLine as Z}from"@remixicon/react";import{soundcheckCampaignCreatePermission as _}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as ee,isEmpty as I}from"lodash";import{DateTime as k}from"luxon";import{useState as y,useMemo as p,useEffect as te}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as re}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSearchName as ie}from"../../hooks/useSearchName.esm.js";import{usePagination as ae}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useProfileImages as oe}from"../../hooks/catalog/useProfileImages.esm.js";import{useLCPReporting as ne}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as me}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignCreateRouteRef as se,campaignDetailsRouteRef as pe}from"../../routes.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as ce}from"../EmptyState/EmptyStateBUI.esm.js";import{EmptyStateNoCampaigns as de}from"../EmptyState/EmptyStateNoCampaigns.esm.js";import{ListPageCustomActions as le}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as ge}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import"js-yaml";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{useCampaignActions as fe}from"../Menus/useCampaignActions.esm.js";import{TableRowWithOwner as ue}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const A=10,he=X(()=>({container:{padding:"0 var(--bui-space-3) var(--bui-space-6)"},emptySpacing:{margin:"var(--bui-space-3) 0"}})),E=e=>{const m=k.fromISO(e),a=k.now();return Math.max(Math.ceil(m.diff(a,"days").days),0)},ye=({campaign:e,profileImageMap:m})=>{const a=p(()=>e.archived?0:E(e.targetCompletionDate),[e.archived,e.targetCompletionDate]),g=L(pe),i=p(()=>e.track.levels.reduce((c,d)=>c+(d.checks?.length??0),0),[e.track.levels]),f=fe(e);return t(ue,{ownerEntityRef:e.ownerEntityRef,href:g({campaignId:e.id}),profileImageSrc:m[e.ownerEntityRef],menuActions:f,name:e.name??"",description:e.description??"",cells:[{title:e.archived?"Archived":"Active"},{title:`${a} day${a===1?"":"s"} remaining`,icon:t(Z,{size:16})},{title:`${i} Check${i===1?"":"s"}`}]})},we=()=>{const[e,m]=y(""),[a,g]=y("ascending"),[i,f]=y(""),c=he(),{data:d,isLoading:s}=re({}),w=p(()=>d?.edges?.map(r=>r.node)??[],[d?.edges]),{profileImageMap:T}=oe(w.map(r=>r.ownerEntityRef)),u=ie({items:w,searchTerm:e}),C=U(F),S=p(()=>{if(!i)return u;const r=ee(u,o=>i==="owner"?C.forEntity(o.ownerEntityRef).snapshot.primaryTitle.toLowerCase():i==="status"?o.archived?"archived":"active":i==="days-remaining"?o.archived?-1:E(o.targetCompletionDate):o.name.toLowerCase());return a==="descending"&&r.reverse(),r},[C,i,a,u]),{paginatedItems:h,reset:D,paginationProps:N}=ae({pageParam:"perPage",defaultPageSize:A,items:S}),{loading:M,allowed:x}=W({permission:_}),B=L(se),R=p(()=>({routeName:"soundcheck-campaigns",additionalAttributes:{}}),[]),{reportContentLoaded:v}=me(R),{reporter:H}=ne(R),P=H?.getLCPValue();te(()=>{s||v({lcp:P})},[s,v,P]);const $=!s&&!I(h),O=S.length>A,V=!s&&I(h),z=s,j=e?t(ce,{title:"No campaigns found",body:"Your current search term did not return any campaigns. Please try a different search term."}):t(de,{});return l(G,{children:[t(b,{children:t(Y,{customActions:t(le,{searchValue:e,setSearchValue:r=>{D(),m(r)},canCreate:!M&&x,createHref:B()}),title:"Campaigns"})}),l(b,{className:c.container,children:[z&&t(ge,{rowCount:10}),V&&t("div",{className:c.emptySpacing,children:j}),$&&l(q,{onSortChange:({direction:r,column:o})=>{f(String(o)),g(r)},sortDescriptor:{direction:a,column:i},children:[l(J,{children:[t(n,{allowsSorting:!0,isRowHeader:!0,id:"name",style:{width:"48%"},children:"Name"}),t(n,{allowsSorting:!0,id:"status",style:{width:"10%"},children:"Status"}),t(n,{allowsSorting:!0,id:"days-remaining",style:{width:"15%"},children:"Days Remaining"}),t(n,{id:"checks",style:{width:"10%"},children:"Checks"}),t(n,{allowsSorting:!0,id:"owner",style:{width:"15%"},children:"Campaign Owner"}),t(n,{style:{width:"2%"}})]}),t(K,{children:h.map(r=>t(ye,{campaign:r,profileImageMap:T??{}},r.id))})]}),O&&t(Q,{...N})]})]})};export{we as CampaignListPageBUI};
1
+ import{jsx as t,jsxs as c,Fragment as L}from"react/jsx-runtime";import{useApi as j,useRouteRef as k}from"@backstage/core-plugin-api";import{entityPresentationApiRef as G}from"@backstage/plugin-catalog-react";import{usePermission as F}from"@backstage/plugin-permission-react";import{HeaderPage as W,Container as Y,Table as q,TableHeader as J,Column as s,TableBody as K,TablePagination as Q}from"@backstage/ui";import{makeStyles as X}from"@material-ui/core";import{RiCalendarLine as Z}from"@remixicon/react";import{soundcheckCampaignCreatePermission as _}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as ee,isEmpty as E}from"lodash";import{DateTime as I}from"luxon";import{useState as w,useMemo as l,useEffect as te}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as ie}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSearchName as re}from"../../hooks/useSearchName.esm.js";import{usePagination as oe}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useProfileImages as ae}from"../../hooks/catalog/useProfileImages.esm.js";import{useLCPReporting as ne}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as me}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignCreateRouteRef as se,campaignDetailsRouteRef as pe}from"../../routes.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as ce}from"../EmptyState/EmptyStateBUI.esm.js";import{EmptyStateNoCampaigns as le}from"../EmptyState/EmptyStateNoCampaigns.esm.js";import{ListPageCustomActions as de}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as ge}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import"js-yaml";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{useCampaignActions as fe}from"../Menus/useCampaignActions.esm.js";import"@material-ui/icons/AddAlert";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"react-hook-form";import"../ListboxVirtualized/ListboxVirtualized.esm.js";import"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import"../FormFieldLabel/FormFieldLabel.esm.js";import"../LoadingIndicator/LoadingIndicator.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import{SendCampaignNotificationDialogBUI as he}from"../SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js";import{TableRowWithOwner as ue}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const b=10,A=e=>{const o=I.fromISO(e),m=I.now();return Math.max(Math.ceil(o.diff(m,"days").days),0)},ye=({campaign:e,profileImageMap:o})=>{const m=l(()=>e.archived?0:A(e.targetCompletionDate),[e.archived,e.targetCompletionDate]),p=k(pe),d=l(()=>e.track.levels.reduce((a,h)=>a+(h.checks?.length??0),0),[e.track.levels]),{actions:r,showNotificationDialog:g,setShowNotificationDialog:f}=fe(e);return c(L,{children:[t(ue,{ownerEntityRef:e.ownerEntityRef,href:p({campaignId:e.id}),profileImageSrc:o[e.ownerEntityRef],menuActions:r,name:e.name??"",description:e.description??"",cells:[{title:e.archived?"Archived":"Active"},{title:`${m} day${m===1?"":"s"} remaining`,icon:t(Z,{size:16})},{title:`${d} Check${d===1?"":"s"}`}]}),e&&g&&t(he,{campaign:e,isOpen:g,handleClose:()=>f(!1)})]})},we=X(()=>({container:{marginBottom:"var(--bui-space-12)"}})),Ce=()=>{const e=we(),[o,m]=w(""),[p,d]=w("ascending"),[r,g]=w(""),{data:f,isLoading:a}=ie({}),h=l(()=>f?.edges?.map(i=>i.node)??[],[f?.edges]),{profileImageMap:D}=ae(h.map(i=>i.ownerEntityRef)),u=re({items:h,searchTerm:o}),C=j(G),S=l(()=>{if(!r)return u;const i=ee(u,n=>r==="owner"?C.forEntity(n.ownerEntityRef).snapshot.primaryTitle.toLowerCase():r==="status"?n.archived?"archived":"active":r==="days-remaining"?n.archived?-1:A(n.targetCompletionDate):n.name.toLowerCase());return p==="descending"&&i.reverse(),i},[C,r,p,u]),{paginatedItems:y,reset:N,paginationProps:T}=oe({pageParam:"perPage",defaultPageSize:b,items:S}),{loading:B,allowed:M}=F({permission:_}),H=k(se),R=l(()=>({routeName:"soundcheck-campaigns",additionalAttributes:{}}),[]),{reportContentLoaded:P}=me(R),{reporter:O}=ne(R),v=O?.getLCPValue();te(()=>{a||P({lcp:v})},[a,P,v]);const $=!a&&!E(y),x=S.length>b,U=!a&&E(y),V=a,z=o?t(ce,{title:"No campaigns found",body:"Your current search term did not return any campaigns. Please try a different search term."}):t(le,{});return c(L,{children:[t(W,{customActions:t(de,{searchValue:o,setSearchValue:i=>{N(),m(i)},canCreate:!B&&M,createHref:H()}),title:"Campaigns"}),c(Y,{className:e.container,children:[V&&t(ge,{rowCount:10}),U&&z,$&&c(q,{onSortChange:({direction:i,column:n})=>{g(String(n)),d(i)},sortDescriptor:{direction:p,column:r},children:[c(J,{children:[t(s,{allowsSorting:!0,isRowHeader:!0,id:"name",style:{width:"48%"},children:"Name"}),t(s,{allowsSorting:!0,id:"status",style:{width:"10%"},children:"Status"}),t(s,{allowsSorting:!0,id:"days-remaining",style:{width:"15%"},children:"Days Remaining"}),t(s,{id:"checks",style:{width:"10%"},children:"Checks"}),t(s,{allowsSorting:!0,id:"owner",style:{width:"15%"},children:"Campaign Owner"}),t(s,{style:{width:"2%"}})]}),t(K,{children:y.map(i=>t(ye,{campaign:i,profileImageMap:D??{}},i.id))})]}),x&&t(Q,{...T})]})]})};export{Ce as CampaignListPageBUI};
2
2
  //# sourceMappingURL=CampaignListPageBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as o,jsxs as b,Fragment as s}from"react/jsx-runtime";import{useRouteRef as n}from"@backstage/core-plugin-api";import{usePermission as R}from"@backstage/plugin-permission-react";import{Box as L,HeaderPage as P}from"@backstage/ui";import{soundcheckCampaignUpdatePermission as x}from"@spotify/backstage-plugin-soundcheck-common";import{useEffect as E}from"react";import{useParams as F}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as w}from"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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{useUpdateCampaign as I}from"../../hooks/campaigns/useUpdateCampaign.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as U}from"../../hooks/useNavigateBack.esm.js";import"react-use/lib/useLocalStorage";import{useGetCampaign as A}from"../../hooks/campaigns/useGetCampaign.esm.js";import{useFeatureFlag as B}from"../../hooks/useFeatureFlag.esm.js";import{campaignsPageRouteRef as p,campaignDetailsRouteRef as D}from"../../routes.esm.js";import{CampaignForm as S}from"../CampaignForm/CampaignForm.esm.js";import{DocLinkButton as j}from"../DocLinkButton/DocLinkButton.esm.js";import{PageWarningMessage as v}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as H}from"../SoundcheckHeader/useHeader.esm.js";import{Loading as N}from"../TechHealth/Loading/Loading.esm.js";import{EmptyCampaignState as G}from"./CampaignEmptyState.esm.js";const M=()=>{H({title:"Update Campaign",description:"Update your campaign, including schedule, milestones, and other associated details.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns"});const[c,d]=U(p),{campaignId:t}=F(),{setIsLoading:e}=w(),{mutateAsync:g,isLoading:a}=I(),{data:f,isLoading:m}=A(t??""),i=f?.edges?.[0]?.node,{loading:u,allowed:r}=R({permission:x,resourceRef:i?.id});E(()=>e(a),[e,a]);const l=B("backstage-ui"),h=n(p),C=n(D);if(!m&&!i)return o(G,{});const k=async y=>{await g(y,{onSuccess:d})};return b(s,{children:[l&&o(L,{children:o(P,{title:`Edit ${i?.name??t??"Campaign"}`,breadcrumbs:[{label:"All Campaigns",href:h()},{label:"Details",href:C({campaignId:t??""})}],customActions:o(j,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/"})})}),o(v,{entityId:i?.id,entityName:i?.name??"",showCannotEdit:!u&&!r}),m?o(N,{}):o(s,{children:r&&o(S,{onSave:k,onCancel:c,selectedCampaign:i})})]})};export{M as EditCampaignView};
1
+ import{jsx as o,jsxs as b,Fragment as s}from"react/jsx-runtime";import{useRouteRef as n}from"@backstage/core-plugin-api";import{usePermission as R}from"@backstage/plugin-permission-react";import{HeaderPage as L}from"@backstage/ui";import{soundcheckCampaignUpdatePermission as P}from"@spotify/backstage-plugin-soundcheck-common";import{useEffect as E}from"react";import{useParams as F}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as w}from"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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{useUpdateCampaign as x}from"../../hooks/campaigns/useUpdateCampaign.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as I}from"../../hooks/useNavigateBack.esm.js";import"react-use/lib/useLocalStorage";import{useGetCampaign as U}from"../../hooks/campaigns/useGetCampaign.esm.js";import{useFeatureFlag as A}from"../../hooks/useFeatureFlag.esm.js";import{campaignsPageRouteRef as p,campaignDetailsRouteRef as D}from"../../routes.esm.js";import{CampaignForm as S}from"../CampaignForm/CampaignForm.esm.js";import{DocLinkButton as j}from"../DocLinkButton/DocLinkButton.esm.js";import{PageWarningMessage as v}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as B}from"../SoundcheckHeader/useHeader.esm.js";import{Loading as H}from"../TechHealth/Loading/Loading.esm.js";import{EmptyCampaignState as N}from"./CampaignEmptyState.esm.js";const G=()=>{B({title:"Update Campaign",description:"Update your campaign, including schedule, milestones, and other associated details.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns"});const[c,d]=I(p),{campaignId:t}=F(),{setIsLoading:e}=w(),{mutateAsync:g,isLoading:a}=x(),{data:f,isLoading:m}=U(t??""),i=f?.edges?.[0]?.node,{loading:u,allowed:r}=R({permission:P,resourceRef:i?.id});E(()=>e(a),[e,a]);const l=A("backstage-ui"),C=n(p),h=n(D);if(!m&&!i)return o(N,{});const k=async y=>{await g(y,{onSuccess:d})};return b(s,{children:[l&&o(L,{title:`Edit ${i?.name??t??"Campaign"}`,breadcrumbs:[{label:"All Campaigns",href:C()},{label:"Details",href:h({campaignId:t??""})}],customActions:o(j,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/"})}),o(v,{entityId:i?.id,entityName:i?.name??"",showCannotEdit:!u&&!r}),m?o(H,{}):o(s,{children:r&&o(S,{onSave:k,onCancel:c,selectedCampaign:i})})]})};export{G as EditCampaignView};
2
2
  //# sourceMappingURL=EditCampaignView.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as d,Fragment as h,jsx as t}from"react/jsx-runtime";import{useRouteRef as p}from"@backstage/core-plugin-api";import{Box as k,HeaderPage as g}from"@backstage/ui";import{useEffect as n}from"react";import{v4 as C}from"uuid";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as y,useCheckFormContext as b}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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{useNavigateBack as F}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useCheckTemplates as I}from"../../hooks/checks/useCheckTemplates.esm.js";import{useCreateCheck as L}from"../../hooks/checks/useCreateCheck.esm.js";import{useFeatureFlag as P}from"../../hooks/useFeatureFlag.esm.js";import{useSearchParam as R}from"../../hooks/useSearchParam.esm.js";import{checkTemplatesRouteRef as x,checksPageRouteRef as l}from"../../routes.esm.js";import{CheckForm as S}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import{DocLinkButton as v}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as w}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as A}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as B}from"../SoundcheckHeader/useHeader.esm.js";const N=({template:e})=>{const{setIsLoading:o,selectedItem:i,setSelectedItem:r}=b(),{mutateAsync:c,isLoading:m}=L();n(()=>{r(e?{...e,id:C()}:null)},[e,r]),n(()=>{o(m)},[o,m]);const[s,a]=F(l),u=async f=>{await c(f,{onSuccess:a})};return B({title:"Create a Check",description:"Identify if your software meets organizational standards by setting up a check.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),e&&!i?null:t(S,{onSave:u,onClose:s})},T=()=>{const[[e]]=R("template"),{isLoading:o,data:i}=I(),r=e&&i?i.find(a=>a.id===e)??null:null,c=P("backstage-ui"),m=p(x),s=p(l);return d(h,{children:[c&&t(k,{children:t(g,{title:"Create Check",breadcrumbs:[{label:"All Checks",href:s()},{label:"Templates",href:m()}],customActions:t(v,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})})}),t(A,{entityName:"check template",entityId:e,showNotFound:!!e&&!o&&!r}),o&&t(w,{}),t(y,{children:!o&&(!e||r)&&t(N,{template:r})})]})};export{T as CheckCreatePage};
1
+ import{jsxs as d,Fragment as h,jsx as t}from"react/jsx-runtime";import{useRouteRef as p}from"@backstage/core-plugin-api";import{HeaderPage as k}from"@backstage/ui";import{useEffect as n}from"react";import{v4 as g}from"uuid";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as C,useCheckFormContext as y}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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{useNavigateBack as b}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useCheckTemplates as F}from"../../hooks/checks/useCheckTemplates.esm.js";import{useCreateCheck as I}from"../../hooks/checks/useCreateCheck.esm.js";import{useFeatureFlag as L}from"../../hooks/useFeatureFlag.esm.js";import{useSearchParam as P}from"../../hooks/useSearchParam.esm.js";import{checkTemplatesRouteRef as R,checksPageRouteRef as l}from"../../routes.esm.js";import{CheckForm as S}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import{DocLinkButton as v}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as x}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as w}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as A}from"../SoundcheckHeader/useHeader.esm.js";const N=({template:e})=>{const{setIsLoading:o,selectedItem:m,setSelectedItem:r}=y(),{mutateAsync:s,isLoading:i}=I();n(()=>{r(e?{...e,id:g()}:null)},[e,r]),n(()=>{o(i)},[o,i]);const[c,a]=b(l),u=async f=>{await s(f,{onSuccess:a})};return A({title:"Create a Check",description:"Identify if your software meets organizational standards by setting up a check.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),e&&!m?null:t(S,{onSave:u,onClose:c})},T=()=>{const[[e]]=P("template"),{isLoading:o,data:m}=F(),r=e&&m?m.find(a=>a.id===e)??null:null,s=L("backstage-ui"),i=p(R),c=p(l);return d(h,{children:[s&&t(k,{title:"Create Check",breadcrumbs:[{label:"All Checks",href:c()},{label:"Templates",href:i()}],customActions:t(v,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})}),t(w,{entityName:"check template",entityId:e,showNotFound:!!e&&!o&&!r}),o&&t(x,{}),t(C,{children:!o&&(!e||r)&&t(N,{template:r})})]})};export{T as CheckCreatePage};
2
2
  //# sourceMappingURL=CheckCreatePage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as h,Fragment as f,jsx as o}from"react/jsx-runtime";import{useRouteRef as m}from"@backstage/core-plugin-api";import{usePermission as k}from"@backstage/plugin-permission-react";import{Box as u,HeaderPage as l}from"@backstage/ui";import{soundcheckCheckUpdatePermission as g}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as C}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as P}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useCheck as b}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useFeatureFlag as R}from"../../hooks/useFeatureFlag.esm.js";import{checkDetailsRouteRef as E,checksPageRouteRef as F}from"../../routes.esm.js";import{DocLinkButton as w}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as x}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as I}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckEditView as y}from"./CheckEditView.esm.js";const D=()=>{const{checkId:e}=C(),{data:r,isLoading:c}=b(e),{loading:s,allowed:a}=k({permission:g,resourceRef:e}),t=s||c,i=a&&r?.isEditable,p=R("backstage-ui"),n=m(E),d=m(F);return h(f,{children:[p&&o(u,{children:o(l,{title:`Edit ${r?.name??e??"Check"}`,breadcrumbs:[{label:"All Checks",href:d()},{label:"Details",href:n({checkId:e??""})}],customActions:o(w,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})})}),o(I,{entityName:"check",entityId:e,showCannotEdit:!t&&!i,showNotFound:!t&&!r}),t&&o(x,{}),o(P,{children:!t&&!!r&&i&&o(y,{check:r})})]})};export{D as CheckEditPage};
1
+ import{jsxs as h,Fragment as f,jsx as o}from"react/jsx-runtime";import{useRouteRef as m}from"@backstage/core-plugin-api";import{usePermission as k}from"@backstage/plugin-permission-react";import{HeaderPage as u}from"@backstage/ui";import{soundcheckCheckUpdatePermission as l}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as g}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as C}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useCheck as P}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useFeatureFlag as b}from"../../hooks/useFeatureFlag.esm.js";import{checkDetailsRouteRef as R,checksPageRouteRef as E}from"../../routes.esm.js";import{DocLinkButton as F}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as w}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as I}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckEditView as x}from"./CheckEditView.esm.js";const y=()=>{const{checkId:e}=g(),{data:r,isLoading:c}=P(e),{loading:s,allowed:a}=k({permission:l,resourceRef:e}),t=s||c,i=a&&r?.isEditable,p=b("backstage-ui"),n=m(R),d=m(E);return h(f,{children:[p&&o(u,{title:`Edit ${r?.name??e??"Check"}`,breadcrumbs:[{label:"All Checks",href:d()},{label:"Details",href:n({checkId:e??""})}],customActions:o(F,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})}),o(I,{entityName:"check",entityId:e,showCannotEdit:!t&&!i,showNotFound:!t&&!r}),t&&o(w,{}),o(C,{children:!t&&!!r&&i&&o(x,{check:r})})]})};export{y as CheckEditPage};
2
2
  //# sourceMappingURL=CheckEditPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as f,Fragment as $}from"react/jsx-runtime";import{stringifyEntityRef as T,parseEntityRef as X,RELATION_OWNED_BY as Z,RELATION_PART_OF as ee}from"@backstage/catalog-model";import{useRouteRef as te}from"@backstage/core-plugin-api";import{entityRouteRef as ie,getEntityRelations as v,humanizeEntityRef as w}from"@backstage/plugin-catalog-react";import{Table as re,TableHeader as oe,Column as l,TableBody as ne,TablePagination as ae,Row as se,Flex as le,Cell as y,CellProfile as me}from"@backstage/ui";import{RiCheckLine as de,RiCloseLine as ce,RiAlertLine as pe,RiErrorWarningFill as fe,RiProhibitedLine as ye,RiIndeterminateCircleLine as he,RiInformationOffLine as ge}from"@remixicon/react";import{compact as ue,uniq as Re,startCase as we}from"lodash";import{useState as k,useEffect as ke,useMemo as E,useCallback as Ee}from"react";import{useNavigate as be}from"react-router-dom";import{ResultState as s,CheckEntityField as m,Direction as I}from"../../../graphql/generated/index.esm.js";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useSearchName as Ce}from"../../../hooks/useSearchName.esm.js";import{usePagination as Se}from"../../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useEntitiesByRefs as Le}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useProfileImages as Ne}from"../../../hooks/catalog/useProfileImages.esm.js";import{useCheckEntities as Te}from"../../../hooks/entities/useCheckEntities.esm.js";import{CustomCell as ve}from"../../CustomCell/CustomCell.esm.js";import"../../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as Ie}from"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"../../../routes.esm.js";import{LoadingTableSkeleton as Be}from"../../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{toResultState as B}from"../utils.esm.js";import{toCheckEntityRow as Pe}from"./utils.esm.js";const P=10,Ae=["kind","metadata.name","metadata.namespace","spec.profile.displayName","metadata.title","relations","spec.lifecycle","spec.type"],Oe={[s.Passed]:t(de,{style:{color:"var(--bui-fg-success)"}}),[s.Failed]:t(ce,{style:{color:"var(--bui-fg-danger)"}}),[s.Warning]:t(pe,{}),[s.Error]:t(fe,{}),[s.Exempt]:t(ye,{style:{color:"var(--bui-fg-disabled)"}}),[s.NotReported]:t(he,{style:{color:"var(--bui-fg-disabled)"}}),[s.NotApplicable]:t(ge,{style:{color:"var(--bui-fg-disabled)"}})},xe={name:m.Name,owner:m.Owner,system:m.System,type:m.Type,lifecycle:m.Lifecycle},Fe=({checkId:A,trackId:O,filter:h,states:g,searchValue:x})=>{const[u,F]=k("ascending"),[c,j]=k("name"),[p,D]=k({orderBy:void 0,filter:h,states:g?.map(B).filter(e=>e!==void 0)});ke(()=>{let e;c?e={field:xe[c]??m.Name,direction:u==="ascending"?I.Asc:I.Desc}:e=void 0,D(r=>({...r,orderBy:e,filter:h,states:g?.map(B).filter(n=>n!==void 0)}))},[h,g,c,u]);const{data:o,isLoading:_}=Te({checkId:A,trackId:O,orderBy:p.orderBy,filter:p.filter,states:p.states?.length?p.states:void 0}),K=o?.checkEntities.edges.map(e=>e.node.entityRef)??[],{data:R,isLoading:M}=Le({entityRefs:K,fields:Ae}),W=E(()=>o?.checkEntities.edges??[],[o]),z=E(()=>o?.checkEntities.totalCount??0,[o])>P,b=E(()=>!o?.checkEntities.edges?.length||!R?.items?.length?[]:ue(o.checkEntities.edges.map(e=>{const r=R.items.find(n=>!!n&&T(n)===e.node.entityRef);return r?Pe({checkDetails:e.node,entity:r}):void 0})),[o?.checkEntities.edges,R?.items]),C=Ce({items:b.map(e=>({id:e.entity.metadata.name,name:e.entity.metadata.name,row:e})),searchTerm:x}).map(({row:e})=>e),{paginatedItems:H,paginationProps:U}=Se({pageParam:"perPage",defaultPageSize:P,items:C}),q=({row:e})=>{const r=be(),n=te(ie),V=Ee(i=>{const a=X(T(i)),d=n(a);r(`${d}/soundcheck`)},[r,n]),Y=v(e.entity,Z).map(i=>w(i,{defaultKind:i.kind})).join(", "),G=v(e.entity,ee,{kind:"system"}).map(i=>w(i,{defaultKind:"system"})).join(", "),J=Re(b.flatMap(i=>i.entity.relations?.filter(({type:a,targetRef:d})=>a==="ownedBy"&&d).map(a=>a.targetRef)||[])),{profileImageMap:Q}=Ne(J),S=e.entity.relations?.find(({type:i})=>i==="ownedBy")?.targetRef;let L;S&&(L=Q?.[S]);const N=w(e.entity,{defaultKind:"Component"});return f(se,{onAction:()=>V(e.entity),children:[t(ve,{children:t(le,{children:(i=>{const a=Oe[i],d=we(i.toLowerCase());return t("span",{title:d,children:a})})(e.state)})}),t(y,{title:N}),t(y,{title:G}),t(me,{name:Y,src:L??N}),t(y,{title:e.entity.spec?.type}),t(y,{title:e.entity.spec?.lifecycle})]},e.id)};return _||M?t(Be,{}):!W.length||!C.length?t(Ie,{title:"No check entities found",body:"There are no check entities found."}):f($,{children:[f(re,{onSortChange:({direction:e,column:r})=>{j(String(r)),F(e)},sortDescriptor:{direction:u,column:c},children:[f(oe,{children:[t(l,{id:"state",style:{width:"5%"}}),t(l,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Name"}),t(l,{id:"system",allowsSorting:!0,style:{width:"20%"},children:"System"}),t(l,{id:"owner",allowsSorting:!0,style:{width:"20%"},children:"Owner"}),t(l,{id:"type",allowsSorting:!0,style:{width:"10%"},children:"Type"}),t(l,{id:"lifecycle",allowsSorting:!0,style:{width:"10%"},children:"Lifecycle"})]}),t(ne,{children:H.map(e=>t(q,{row:e},e.id))})]}),z&&t(ae,{...U})]})};export{Fe as CheckEntitiesTableBUI};
1
+ import{jsx as t,jsxs as m,Fragment as $}from"react/jsx-runtime";import{stringifyEntityRef as P,parseEntityRef as J,RELATION_OWNED_BY as V,RELATION_PART_OF as X}from"@backstage/catalog-model";import{useRouteRef as Z}from"@backstage/core-plugin-api";import{entityRouteRef as ee,getEntityRelations as B,humanizeEntityRef as E}from"@backstage/plugin-catalog-react";import{Table as te,TableHeader as ie,Column as d,TableBody as oe,TablePagination as ne,Row as re,Flex as ae,Cell as g,CellProfile as se}from"@backstage/ui";import{RiCheckLine as le,RiCloseLine as ce,RiAlertLine as de,RiErrorWarningFill as fe,RiProhibitedLine as pe,RiIndeterminateCircleLine as me,RiInformationOffLine as ge}from"@remixicon/react";import{compact as ye,uniq as he,startCase as ue}from"lodash";import{useState as S,useEffect as Ie,useMemo as b,useCallback as z}from"react";import{useNavigate as Re}from"react-router-dom";import{ResultState as l,CheckEntityField as c,Direction as y}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as we}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useProfileImages as ke}from"../../../hooks/catalog/useProfileImages.esm.js";import{useCheckEntities as Ee}from"../../../hooks/entities/useCheckEntities.esm.js";import{CustomCell as Se}from"../../CustomCell/CustomCell.esm.js";import"../../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as be}from"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../routes.esm.js";import{LoadingTableSkeleton as Ce}from"../../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{toResultState as A}from"../utils.esm.js";import{toCheckEntityRow as Le}from"./utils.esm.js";const x=10,Te=["kind","metadata.name","metadata.namespace","spec.profile.displayName","metadata.title","relations","spec.lifecycle","spec.type"],ve={[l.Passed]:t(le,{style:{color:"var(--bui-fg-success)"}}),[l.Failed]:t(ce,{style:{color:"var(--bui-fg-danger)"}}),[l.Warning]:t(de,{}),[l.Error]:t(fe,{}),[l.Exempt]:t(pe,{style:{color:"var(--bui-fg-disabled)"}}),[l.NotReported]:t(me,{style:{color:"var(--bui-fg-disabled)"}}),[l.NotApplicable]:t(ge,{style:{color:"var(--bui-fg-disabled)"}})},Ne={name:c.Name,owner:c.Owner,system:c.System,type:c.Type,lifecycle:c.Lifecycle},Pe=({checkId:O,trackId:F,filter:h,states:u})=>{const[I,j]=S(y.Asc),[p,D]=S(c.Name),[i,C]=S({orderBy:void 0,filter:h,states:u?.map(A).filter(e=>e!==void 0),pageInfo:{page:0,pageSize:x,direction:"forward",cursor:null}});Ie(()=>{let e;p?e={field:Ne[p]??c.Name,direction:I}:e=void 0,C(r=>({...r,orderBy:e,pageInfo:{...r.pageInfo,page:0,cursor:null},filter:h,states:u?.map(A).filter(a=>a!==void 0)}))},[h,u,p,I]);const{data:n,isLoading:_}=Ee({checkId:O,trackId:F,orderBy:i.orderBy,filter:i.filter,states:i.states?.length?i.states:void 0,[i.pageInfo.direction==="forward"?"first":"last"]:i.pageInfo.pageSize,[i.pageInfo.direction==="forward"?"after":"before"]:i.pageInfo.cursor}),K=n?.checkEntities.edges.map(e=>e.node.entityRef)??[],{data:R,isLoading:M}=we({entityRefs:K,fields:Te}),W=b(()=>n?.checkEntities.edges??[],[n]),H=b(()=>n?.checkEntities.totalCount??0,[n])>x,w=z((e,r)=>{const a=e>i.pageInfo.page?"forward":"backward",k=a==="forward"?n?.checkEntities.pageInfo.endCursor??null:n?.checkEntities.pageInfo.startCursor??null;C({...i,pageInfo:{page:e,pageSize:r,direction:a,cursor:k}})},[n,i]),L=b(()=>!n?.checkEntities.edges?.length||!R?.items?.length?[]:ye(n.checkEntities.edges.map(e=>{const r=R.items.find(a=>!!a&&P(a)===e.node.entityRef);return r?Le({checkDetails:e.node,entity:r}):void 0})),[n?.checkEntities.edges,R?.items]),U=({row:e})=>{const r=Re(),a=Z(ee),k=z(o=>{const s=J(P(o)),f=a(s);r(`${f}/soundcheck`)},[r,a]),q=B(e.entity,V).map(o=>E(o,{defaultKind:o.kind})).join(", "),Y=B(e.entity,X,{kind:"system"}).map(o=>E(o,{defaultKind:"system"})).join(", "),G=he(L.flatMap(o=>o.entity.relations?.filter(({type:s,targetRef:f})=>s==="ownedBy"&&f).map(s=>s.targetRef)||[])),{profileImageMap:Q}=ke(G),T=e.entity.relations?.find(({type:o})=>o==="ownedBy")?.targetRef;let v;T&&(v=Q?.[T]);const N=E(e.entity,{defaultKind:"Component"});return m(re,{onAction:()=>k(e.entity),children:[t(Se,{children:t(ae,{children:(o=>{const s=ve[o],f=ue(o.toLowerCase());return t("span",{title:f,children:s})})(e.state)})}),t(g,{title:N}),t(g,{title:Y}),t(se,{name:q,src:v??N}),t(g,{title:e.entity.spec?.type}),t(g,{title:e.entity.spec?.lifecycle})]},e.id)};return _||M?t(Ce,{}):W.length?m($,{children:[m(te,{onSortChange:({direction:e,column:r})=>{D(String(r)),j(e==="ascending"?y.Desc:y.Asc)},sortDescriptor:{direction:I===y.Asc?"descending":"ascending",column:p},children:[m(ie,{children:[t(d,{id:"state",style:{width:"5%"}}),t(d,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Name"}),t(d,{id:"system",allowsSorting:!0,style:{width:"20%"},children:"System"}),t(d,{id:"owner",allowsSorting:!0,style:{width:"20%"},children:"Owner"}),t(d,{id:"type",allowsSorting:!0,style:{width:"10%"},children:"Type"}),t(d,{id:"lifecycle",allowsSorting:!0,style:{width:"10%"},children:"Lifecycle"})]}),t(oe,{children:L.map(e=>t(U,{row:e},e.id))})]}),H&&t(ne,{showPageSizeOptions:!0,tabIndex:i.pageInfo.page,pageSize:i.pageInfo.pageSize,rowCount:n?.checkEntities.totalCount,offset:i.pageInfo.page*i.pageInfo.pageSize,onPreviousPage:()=>{const e=i.pageInfo.page-1;w(e,i.pageInfo.pageSize)},onNextPage:()=>{const e=i.pageInfo.page+1;w(e,i.pageInfo.pageSize)},onPageSizeChange:e=>{w(i.pageInfo.page,e)}})]}):t(be,{title:"No check entities found",body:"There are no check entities found."})};export{Pe as CheckEntitiesTableBUI};
2
2
  //# sourceMappingURL=CheckEntitiesTableBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as l,Fragment as ie}from"react/jsx-runtime";import{parseEntityRef as oe}from"@backstage/catalog-model";import{useRouteRef as v}from"@backstage/core-plugin-api";import{usePermission as se}from"@backstage/plugin-permission-react";import{Box as f,HeaderPage as ae,Flex as U}from"@backstage/ui";import{makeStyles as me}from"@material-ui/core";import{toEntityFilterQuery as R,combineEntityFilterQueries as ne,soundcheckCheckReadPermission as ce}from"@spotify/backstage-plugin-soundcheck-common";import{useState as w,useMemo as s,useEffect as le}from"react";import{useSearchParams as pe,useParams as de}from"react-router-dom";import fe from"react-use/lib/useDebounce";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useCheck as he}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useTrack as ue}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCheckStatus as ge}from"../../hooks/aggregations/useCheckStatus.esm.js";import"react-use/lib/useLocalStorage";import{useFilters as ke}from"../../hooks/filters/useFilters.esm.js";import{useLCPReporting as be}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Ie}from"../../hooks/useLoadTimeReporting.esm.js";import{trackDetailsRouteRef as Se,checksPageRouteRef as ye,tracksPageRouteRef as Ee}from"../../routes.esm.js";import{DescriptionCard as Te}from"../Cards/DescriptionCard/DescriptionCard.esm.js";import"../Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js";import"../TrackPage/TrackStatusBarBUI.esm.js";import"../TrackPage/TrackStatusTableBUI.esm.js";import{CheckStatusCard as Ce}from"../Cards/CheckStatusCard/CheckStatusCard.esm.js";import{HistoricalCheckStatusCard as ve}from"../Cards/HistoricalCheckStatusCard/HistoricalCheckStatusCard.esm.js";import{ChipSelector as Re}from"../ChipSelector/ChipSelector.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as V}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import"lodash";import{toFilter as we}from"../FilterSidebar/util.esm.js";import{LoadingTableSkeleton as Pe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as Ae}from"../Menus/SimpleMenu.esm.js";import{useCheckActions as Fe}from"../Menus/useCheckActions.esm.js";import{PageCustomActions as Le}from"../PageCustomActions/PageCustomActions.esm.js";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{parseNumberOfDays as Ne}from"../TechHealth/Filters/utils.esm.js";import{CheckEntitiesTableBUI as xe}from"./CheckEntitiesTable/CheckEntitiesTableBUI.esm.js";import{ExemptionsTableBUI as je}from"./ExemptionsTableBUI.esm.js";const De=me(()=>({headerDescription:{margin:"var(--bui-space-1) 0 0","& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},editButton:{marginLeft:"auto"},container:{padding:"0 var(--bui-space-3) var(--bui-space-6)"},tables:{margin:"var(--bui-space-12) 0 0"},tableContent:{margin:"var(--bui-space-3) 0 0"}})),h={ENTITIES:"Entities",EXEMPTIONS:"Exemptions"},Be=(p,e)=>p.levels.flatMap(({checks:d})=>d).find(({id:d})=>d===e)||null,Oe=()=>{const p=De(),[e,d]=pe(),{trackId:i,checkId:t}=de(),{data:a,isLoading:u}=ue(i),{data:g,isLoading:y}=he(t),P=g?.ownerEntityRef,Q=P?oe(P).name:void 0,A=Fe(g??void 0),$=v(Se),H=v(ye),X=v(Ee),[F,q]=w(new Set([h.ENTITIES])),L=F.values().next().value??h.ENTITIES,[n,W]=w(e.get("search")||""),[N,z]=w(""),m=s(()=>e.getAll("states"),[e]),k=s(()=>e.getAll("owners"),[e]),b=s(()=>e.getAll("lifecycles"),[e]),I=s(()=>e.getAll("types"),[e]),S=s(()=>e.getAll("systems"),[e]),E=s(()=>Ne(e.get("numberOfDays")),[e]);fe(()=>{z(n);const o=new URLSearchParams(e.toString());n?o.set("search",n):o.delete("search"),d(o,{replace:!0})},300,[n]);const x=s(()=>({routeName:"soundcheck-check-insights",additionalAttributes:{checkId:t||"",trackId:i||"",filtersApplied:k.length+b.length+I.length+S.length+m.length,ownersFilter:k.join(",")||"",lifecyclesFilter:b.join(",")||"",typesFilter:I.join(",")||"",systemsFilter:S.join(",")||"",statesFilter:m.join(",")||"",numberOfDays:E,checkSearch:N}}),[t,i,k,b,I,S,m,E,N]),{reportContentLoaded:j}=Ie(x),{reporter:G}=be(x),c=s(()=>g??a?.levels.flatMap(o=>o.checks).find(o=>o.id===t),[g,t,a?.levels]),T=we({lifecycles:b,owners:k,types:I,systems:S}),{data:J,isLoading:D}=ge({checkId:t,trackId:i,filter:T,states:m?.length?m:void 0},!!t);let C;if(t)if(a){const o=R(a.filter),re=R(Be(a,t)?.filter);C=ne(o,re)}else c?.filter&&(C=R(c.filter));const{loading:B,allowed:O}=se({permission:ce,resourceRef:t}),K=s(()=>!!c&&!B&&!O,[O,c,B]),{filters:Y,selected:Z,setSelected:_,onRemoveTag:ee,selectedTags:te}=ke({entityFilterQuery:C,hasStatusFilters:!0}),M=G?.getLCPValue();return le(()=>{!y&&!D&&(!i||!u)&&j({lcp:M})},[y,D,u,i,j,M]),y||i&&u?r(Pe,{}):K?r(V,{title:"Cannot view check",body:`User does not have permission to view check with id: ${t}.`}):i&&!u&&!a?r(V,{title:"No track found",body:`There is no track with the requested id: ${i}.`}):l(ie,{children:[r(f,{children:r(ae,{title:c?.name??"",breadcrumbs:i?[{label:"Tracks",href:X()},{label:a?.name??"Track",href:$({trackId:i})}]:[{label:"Checks",href:H()}],customActions:r(Ae,{disabled:!A.length,placement:"left top",menuActions:A})})}),l(f,{className:p.container,children:[l(U,{children:[r(Te,{description:c?.description??void 0,owner:Q}),r(Ce,{states:m,status:J}),r(ve,{checkId:t,trackId:i,filter:T,states:m,numberOfDays:E})]}),l(f,{className:p.tables,children:[l(U,{justify:"between",children:[r(f,{minWidth:"12rem",children:r(Re,{options:Object.values(h),selected:F,ariaLabel:"Sections",onSelectionChange:q})}),r(Le,{searchValue:n,setSearchValue:o=>W(o),filters:Y,selected:Z,setSelected:_,onRemoveTag:ee,selectedTags:te})]}),l(f,{className:p.tableContent,children:[L===h.ENTITIES&&r(xe,{checkId:t,trackId:a?.id,filter:T,states:m,searchValue:n}),L===h.EXEMPTIONS&&r(je,{checkId:t,searchValue:n})]})]})]})]})};export{Oe as CheckPageBUI};
1
+ import{jsx as r,jsxs as n,Fragment as ie}from"react/jsx-runtime";import{parseEntityRef as oe}from"@backstage/catalog-model";import{useRouteRef as v}from"@backstage/core-plugin-api";import{usePermission as se}from"@backstage/plugin-permission-react";import{HeaderPage as ae,Container as me,Flex as U,Box as R}from"@backstage/ui";import{makeStyles as ce}from"@material-ui/core";import{toEntityFilterQuery as w,combineEntityFilterQueries as le,soundcheckCheckReadPermission as ne}from"@spotify/backstage-plugin-soundcheck-common";import{useState as N,useMemo as s,useEffect as pe}from"react";import{useSearchParams as de,useParams as fe}from"react-router-dom";import he from"react-use/lib/useDebounce";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useCheck as ue}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useTrack as ke}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCheckStatus as ge}from"../../hooks/aggregations/useCheckStatus.esm.js";import"react-use/lib/useLocalStorage";import{useFilters as Ie}from"../../hooks/filters/useFilters.esm.js";import{useLCPReporting as Se}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as be}from"../../hooks/useLoadTimeReporting.esm.js";import{trackDetailsRouteRef as ye,checksPageRouteRef as Ee,tracksPageRouteRef as Te}from"../../routes.esm.js";import{DescriptionCard as Ce}from"../Cards/DescriptionCard/DescriptionCard.esm.js";import"../Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js";import"../TrackPage/TrackStatusBarBUI.esm.js";import"../TrackPage/TrackStatusTableBUI.esm.js";import{CheckStatusCard as ve}from"../Cards/CheckStatusCard/CheckStatusCard.esm.js";import{HistoricalCheckStatusCard as Re}from"../Cards/HistoricalCheckStatusCard/HistoricalCheckStatusCard.esm.js";import{ChipSelector as we}from"../ChipSelector/ChipSelector.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as V}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import"lodash";import{toFilter as Ne}from"../FilterSidebar/util.esm.js";import{LoadingTableSkeleton as Pe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as Fe}from"../Menus/SimpleMenu.esm.js";import{useCheckActions as Ae}from"../Menus/useCheckActions.esm.js";import{PageCustomActions as Le}from"../PageCustomActions/PageCustomActions.esm.js";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{parseNumberOfDays as je}from"../TechHealth/Filters/utils.esm.js";import{CheckEntitiesTableBUI as xe}from"./CheckEntitiesTable/CheckEntitiesTableBUI.esm.js";import{ExemptionsTableBUI as Oe}from"./ExemptionsTableBUI.esm.js";const Be=ce(()=>({container:{marginBottom:"var(--bui-space-12)"},tables:{margin:"var(--bui-space-12) 0 0"},tableContent:{margin:"var(--bui-space-3) 0 0"}})),p={ENTITIES:"Entities",EXEMPTIONS:"Exemptions"},De=(d,e)=>d.levels.flatMap(({checks:f})=>f).find(({id:f})=>f===e)||null,Me=()=>{const d=Be(),[e,f]=de(),{trackId:i,checkId:t}=fe(),{data:a,isLoading:h}=ke(i),{data:u,isLoading:b}=ue(t),P=u?.ownerEntityRef,Q=P?oe(P).name:void 0,F=Ae(u??void 0),H=v(ye),X=v(Ee),$=v(Te),[A,q]=N(new Set([p.ENTITIES])),y=A.values().next().value??p.ENTITIES,[c,W]=N(e.get("search")||""),[L,z]=N(""),m=s(()=>e.getAll("states"),[e]),k=s(()=>e.getAll("owners"),[e]),g=s(()=>e.getAll("lifecycles"),[e]),I=s(()=>e.getAll("types"),[e]),S=s(()=>e.getAll("systems"),[e]),E=s(()=>je(e.get("numberOfDays")),[e]);he(()=>{z(c);const o=new URLSearchParams(e.toString());c?o.set("search",c):o.delete("search"),f(o,{replace:!0})},300,[c]);const j=s(()=>({routeName:"soundcheck-check-insights",additionalAttributes:{checkId:t||"",trackId:i||"",filtersApplied:k.length+g.length+I.length+S.length+m.length,ownersFilter:k.join(",")||"",lifecyclesFilter:g.join(",")||"",typesFilter:I.join(",")||"",systemsFilter:S.join(",")||"",statesFilter:m.join(",")||"",numberOfDays:E,checkSearch:L}}),[t,i,k,g,I,S,m,E,L]),{reportContentLoaded:x}=be(j),{reporter:G}=Se(j),l=s(()=>u??a?.levels.flatMap(o=>o.checks).find(o=>o.id===t),[u,t,a?.levels]),T=Ne({lifecycles:g,owners:k,types:I,systems:S}),{data:J,isLoading:O}=ge({checkId:t,trackId:i,filter:T,states:m?.length?m:void 0},!!t);let C;if(t)if(a){const o=w(a.filter),re=w(De(a,t)?.filter);C=le(o,re)}else l?.filter&&(C=w(l.filter));const{loading:B,allowed:D}=se({permission:ne,resourceRef:t}),K=s(()=>!!l&&!B&&!D,[D,l,B]),{filters:Y,selected:Z,setSelected:_,onRemoveTag:ee,selectedTags:te}=Ie({entityFilterQuery:C,hasStatusFilters:!0}),M=G?.getLCPValue();return pe(()=>{!b&&!O&&(!i||!h)&&x({lcp:M})},[b,O,h,i,x,M]),b||i&&h?r(Pe,{}):K?r(V,{title:"Cannot view check",body:`User does not have permission to view check with id: ${t}.`}):i&&!h&&!a?r(V,{title:"No track found",body:`There is no track with the requested id: ${i}.`}):n(ie,{children:[r(ae,{title:l?.name??"",breadcrumbs:i?[{label:"Tracks",href:$()},{label:a?.name??"Track",href:H({trackId:i})}]:[{label:"Checks",href:X()}],customActions:r(Fe,{disabled:!F.length,placement:"left top",menuActions:F})}),n(me,{className:d.container,children:[n(U,{children:[r(Ce,{description:l?.description??void 0,owner:Q}),r(ve,{states:m,status:J}),r(Re,{checkId:t,trackId:i,filter:T,states:m,numberOfDays:E})]}),n(R,{className:d.tables,children:[n(U,{justify:"between",children:[r(R,{minWidth:"12rem",children:r(we,{options:Object.values(p),selected:A,ariaLabel:"Sections",onSelectionChange:q})}),r(Le,{searchValue:c,setSearchValue:o=>W(o),filters:Y,selected:Z,setSelected:_,onRemoveTag:ee,selectedTags:te,showSearch:y!==p.ENTITIES})]}),n(R,{className:d.tableContent,children:[y===p.ENTITIES&&r(xe,{checkId:t,trackId:a?.id,filter:T,states:m}),y===p.EXEMPTIONS&&r(Oe,{checkId:t,searchValue:c})]})]})]})]})};export{Me as CheckPageBUI};
2
2
  //# sourceMappingURL=CheckPageBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as o,Fragment as m}from"react/jsx-runtime";import{useRouteRef as u}from"@backstage/core-plugin-api";import{Grid as f,Link as y,Card as R,CardHeader as x,Text as l,CardBody as L,Box as n,HeaderPage as B}from"@backstage/ui";import{makeStyles as N}from"@material-ui/core/styles";import{groupBy as T}from"lodash";import{useMemo as g,useEffect as v}from"react";import{useCheckTemplates as P}from"../../hooks/checks/useCheckTemplates.esm.js";import{useLCPReporting as H}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as I}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as j,checksPageRouteRef as D}from"../../routes.esm.js";import{DocLinkButton as U}from"../DocLinkButton/DocLinkButton.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as A}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"react-router-dom";import{LoadingIndicator as E}from"../LoadingIndicator/LoadingIndicator.esm.js";import{TemplateCategoryBUI as O}from"./TemplateCategoryBUI.esm.js";const S=N(()=>({container:{padding:"0 var(--bui-space-5) var(--bui-space-6)"},link:{"&:hover":{textDecoration:"none"}},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),F=()=>{const s=g(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:p}=I(s),{reporter:k}=H(s),r=S(),C=u(j),{data:c,isLoading:i}=P(),d=g(()=>T(c??[],"category"),[c]),h=k?.getLCPValue();v(()=>{i||p({lcp:h})},[i,p,h]);const b=u(D);let t;return i?t=e(E,{}):c?.length?t=o(m,{children:[e(f.Root,{columns:"5",gap:"3",mb:"6",children:e(y,{href:C(),className:r.link,children:o(R,{className:r.fullHeightCard,children:[e(x,{children:e(l,{variant:"body-large",style:{fontWeight:"bold"},children:"Custom Check"})}),e(L,{children:e(l,{children:"Create a custom check using the facts collected about your entities."})})]})})}),Object.keys(d).sort().map(a=>o(m,{children:[e(n,{mb:"3",children:e(l,{variant:"title-x-small",children:a})}),e(f.Root,{columns:"5",gap:"3",mb:"6",children:e(O,{templates:d[a]},a)})]}))]}):t=e(A,{title:"No check templates",body:"No check templates found."}),o(m,{children:[e(n,{children:e(B,{title:"Check Templates",breadcrumbs:[{label:"All Checks",href:b()}],customActions:e(U,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})})}),e(n,{className:r.container,children:t})]})};export{F as CheckTemplatesPageBUI};
1
+ import{jsx as e,jsxs as o,Fragment as m}from"react/jsx-runtime";import{useRouteRef as h}from"@backstage/core-plugin-api";import{Grid as u,Link as b,Card as y,CardHeader as R,Text as n,CardBody as x,Box as B,HeaderPage as L,Container as N}from"@backstage/ui";import{makeStyles as T}from"@material-ui/core/styles";import{groupBy as P}from"lodash";import{useMemo as f,useEffect as v}from"react";import{useCheckTemplates as H}from"../../hooks/checks/useCheckTemplates.esm.js";import{useLCPReporting as I}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as j}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as D,checksPageRouteRef as U}from"../../routes.esm.js";import{DocLinkButton as A}from"../DocLinkButton/DocLinkButton.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as E}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"react-router-dom";import{LoadingIndicator as M}from"../LoadingIndicator/LoadingIndicator.esm.js";import{TemplateCategoryBUI as S}from"./TemplateCategoryBUI.esm.js";const F=T(()=>({container:{marginBottom:"var(--bui-space-12)"},link:{"&:hover":{textDecoration:"none"}},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),G=()=>{const r=F(),l=f(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:s}=j(l),{reporter:g}=I(l),k=h(D),{data:c,isLoading:i}=H(),p=f(()=>P(c??[],"category"),[c]),d=g?.getLCPValue();v(()=>{i||s({lcp:d})},[i,s,d]);const C=h(U);let t;return i?t=e(M,{}):c?.length?t=o(m,{children:[e(u.Root,{columns:"5",gap:"3",mb:"6",children:e(b,{href:k(),className:r.link,children:o(y,{className:r.fullHeightCard,children:[e(R,{children:e(n,{variant:"body-large",style:{fontWeight:"bold"},children:"Custom Check"})}),e(x,{children:e(n,{children:"Create a custom check using the facts collected about your entities."})})]})})}),Object.keys(p).sort().map(a=>o(m,{children:[e(B,{mb:"3",children:e(n,{variant:"title-x-small",children:a})}),e(u.Root,{columns:"5",gap:"3",mb:"6",children:e(S,{templates:p[a]},a)})]}))]}):t=e(E,{title:"No check templates",body:"No check templates found."}),o(m,{children:[e(L,{title:"Check Templates",breadcrumbs:[{label:"All Checks",href:C()}],customActions:e(A,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})}),e(N,{className:r.container,children:t})]})};export{G as CheckTemplatesPageBUI};
2
2
  //# sourceMappingURL=CheckTemplatesPageBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as c,Fragment as C,jsx as e}from"react/jsx-runtime";import{Content as y,ItemCardGrid as b}from"@backstage/core-components";import{useRouteRef as p}from"@backstage/core-plugin-api";import{Box as L,HeaderPage as x}from"@backstage/ui";import{Typography as n,Box as d,Card as R,CardContent as v}from"@material-ui/core";import{makeStyles as N}from"@material-ui/core/styles";import T from"lodash";import{useMemo as h,useEffect as B}from"react";import{Link as P}from"react-router-dom";import{useCheckTemplates as D}from"../../hooks/checks/useCheckTemplates.esm.js";import{useFeatureFlag as j}from"../../hooks/useFeatureFlag.esm.js";import{useLCPReporting as F}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as A}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as H,checksPageRouteRef as I}from"../../routes.esm.js";import{DocLinkButton as S}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as W}from"../LoadingIndicator/LoadingIndicator.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as $}from"../SoundcheckHeader/useHeader.esm.js";import{TemplateCategory as w}from"./TemplateCategory.esm.js";const E=N(t=>({content:{display:"flex",flexDirection:"column",gap:t.spacing(2)},grid:{marginLeft:t.spacing(2)},cardContent:{"&:hover":{backgroundColor:t.palette.action.hover}},docsLink:{color:t.palette.text.primary},link:{textDecoration:"none"}})),G=()=>{const t=h(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:m}=A(t),{reporter:u}=F(t),r=E(),f=p(H),{data:o,isLoading:i}=D(),s=h(()=>T.groupBy(o??[],"category"),[o]);$({title:"What would you like to check?",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"});const l=u?.getLCPValue();B(()=>{i||m({lcp:l})},[i,m,l]);const g=j("backstage-ui"),k=p(I);return c(C,{children:[g&&e(L,{children:e(x,{title:"Check Templates",breadcrumbs:[{label:"All Checks",href:k()}],customActions:e(S,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})})}),c("div",{children:[i&&e(W,{}),o&&o.length===0&&e(n,{children:"No check templates."}),o&&o.length&&c(y,{className:r.content,children:[e(d,{className:r.grid,children:e(b,{children:e(P,{to:f(),className:r.link,children:e(R,{children:c(v,{className:r.cardContent,children:[e(d,{mb:1,children:e(n,{variant:"subtitle1",style:{fontWeight:"bold"},component:"div",children:"Custom Check"})}),e(n,{variant:"body1",children:"Create a custom check using the facts collected about your entities."})]})})})})}),Object.keys(s).sort().map(a=>e(w,{name:a,templates:s[a]},a))]})]})]})};export{G as CheckTemplatesPageDeprecated};
1
+ import{jsxs as n,jsx as e}from"react/jsx-runtime";import{Content as f,ItemCardGrid as g}from"@backstage/core-components";import{useRouteRef as k}from"@backstage/core-plugin-api";import{Typography as a,Box as l,Card as C,CardContent as y}from"@material-ui/core";import{makeStyles as L}from"@material-ui/core/styles";import b from"lodash";import{useMemo as d,useEffect as x}from"react";import{Link as v}from"react-router-dom";import{useCheckTemplates as N}from"../../hooks/checks/useCheckTemplates.esm.js";import{useLCPReporting as R}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as T}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as j}from"../../routes.esm.js";import{LoadingIndicator as D}from"../LoadingIndicator/LoadingIndicator.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../SoundcheckHeader/useHeader.esm.js";import{TemplateCategory as B}from"./TemplateCategory.esm.js";const G=L(t=>({content:{display:"flex",flexDirection:"column",gap:t.spacing(2)},grid:{marginLeft:t.spacing(2)},cardContent:{"&:hover":{backgroundColor:t.palette.action.hover}},docsLink:{color:t.palette.text.primary},link:{textDecoration:"none"}})),I=()=>{const t=d(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:m}=T(t),{reporter:h}=R(t),r=G(),u=k(j),{data:o,isLoading:c}=N(),s=d(()=>b.groupBy(o??[],"category"),[o]);P({title:"What would you like to check?",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"});const p=h?.getLCPValue();return x(()=>{c||m({lcp:p})},[c,m,p]),n("div",{children:[c&&e(D,{}),o&&o.length===0&&e(a,{children:"No check templates."}),o&&o.length&&n(f,{className:r.content,children:[e(l,{className:r.grid,children:e(g,{children:e(v,{to:u(),className:r.link,children:e(C,{children:n(y,{className:r.cardContent,children:[e(l,{mb:1,children:e(a,{variant:"subtitle1",style:{fontWeight:"bold"},component:"div",children:"Custom Check"})}),e(a,{variant:"body1",children:"Create a custom check using the facts collected about your entities."})]})})})})}),Object.keys(s).sort().map(i=>e(B,{name:i,templates:s[i]},i))]})]})};export{I as CheckTemplatesPageDeprecated};
2
2
  //# sourceMappingURL=CheckTemplatesPageDeprecated.esm.js.map