@spotify/backstage-plugin-soundcheck 0.19.7 → 0.19.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/alpha/entity-content.esm.js +1 -1
- package/dist/alpha.d.ts +3 -116
- package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
- package/dist/components/AreaChart/AreaChart.esm.js +1 -1
- package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
- package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignMilestonesStep.esm.js +1 -1
- package/dist/components/CampaignForm/hooks/utils.esm.js +1 -1
- package/dist/components/CampaignForm/utils/campaignFormUtils.esm.js +2 -2
- package/dist/components/CampaignPage/CampaignPage.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignStatusBarBUI.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignStatusCard.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignStatusTableBUI.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
- package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
- package/dist/components/Cards/HistoricalCheckStatusCard/HistoricalCheckStatusCard.esm.js +1 -1
- package/dist/components/Cards/TrackStatusCard/TrackStatusCard.esm.js +1 -1
- package/dist/components/CategoryBar/CategoryBar.esm.js +1 -1
- package/dist/components/Charts/chartUtils.esm.js +1 -1
- package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
- package/dist/components/CheckForm/CheckForm.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckReviewStep.esm.js +1 -1
- package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
- package/dist/components/CheckForm/utils/validation.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +1 -1
- package/dist/components/CheckPage/CheckPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckPageBUI.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusHistoryChartBUI.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusTableBUI.esm.js +1 -1
- package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +1 -1
- package/dist/components/CheckPage/utils.esm.js +1 -1
- package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
- package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/TemplateCategory.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
- package/dist/components/ChecksTab/ChecksTab.esm.js +1 -1
- package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorFactTable.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorFactTableBUI.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/CollectorOption.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/JsonFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/RegexFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListPageDeprecated.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
- package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorerContext.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorerDialogBUI.esm.js +1 -1
- package/dist/components/Filter/FilterComponent.esm.js +1 -1
- package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
- package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
- package/dist/components/Filter/types.esm.js +1 -1
- package/dist/components/Filter/utils.esm.js +1 -1
- package/dist/components/FilterSidebar/FilterSidebar.esm.js +1 -1
- package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
- package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
- package/dist/components/FormStepper/FormStepper.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/visualizations/LoadingOverlay.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoCirclePacking.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoIcicle.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoSunburst.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoTreemap.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/visualizations/VisualizationBreadcrumb.esm.js +1 -1
- package/dist/components/ImportExportPanel/ImportExportPanelBUI.esm.js +1 -1
- package/dist/components/ImportExportPanel/ImportExportPanelDeprecated.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
- package/dist/components/Pagination/Pagination.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPageWrapper.esm.js +1 -1
- package/dist/components/SoundcheckHeader/Breadcrumbs.esm.js +1 -1
- package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
- package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +1 -1
- package/dist/components/SoundcheckHeader/useHeader.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
- package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
- package/dist/components/TechHealth/TechHealth.esm.js +1 -1
- package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +1 -1
- package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
- package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +1 -1
- package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
- package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
- package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js +1 -1
- package/dist/components/TrackForm/TrackForm.esm.js +1 -1
- package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackStatusTableBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
- package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
- package/dist/components/TracksPage/TracksPage.esm.js +1 -1
- package/dist/components/TracksTab/TracksTab.esm.js +1 -1
- package/dist/hooks/aggregations/useAggregatedCheckPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useAggregatedEntityPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useAggregatedGroupPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useCertificationStatus.esm.js +1 -1
- package/dist/hooks/aggregations/useCertificationStatusHistory.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckStatusHistory.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckStatuses.esm.js +1 -1
- package/dist/hooks/aggregations/useEntityPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useGroupPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useTrackPassRateTrend.esm.js +1 -1
- package/dist/hooks/cache/useEntityCountCached.esm.js +1 -1
- package/dist/hooks/cache/useTrackCountCached.esm.js +1 -1
- package/dist/hooks/campaigns/useGetCampaign.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityCount.esm.js +1 -1
- package/dist/hooks/checks/useCheck.esm.js +1 -1
- package/dist/hooks/checks/useExecutableChecks.esm.js +1 -1
- package/dist/hooks/checks/useGetChecks.esm.js +1 -1
- package/dist/hooks/collectors/useGetCollectors.esm.js +1 -1
- package/dist/hooks/collectors/useGetFactSchema.esm.js +1 -1
- package/dist/hooks/collectors/useUpdateCollectorConfig.esm.js +1 -1
- package/dist/hooks/entities/useEntityRefsForUser.esm.js +1 -1
- package/dist/hooks/exemptions/useExemptions.esm.js +1 -1
- package/dist/hooks/facets/useFacetsForOwner.esm.js +1 -1
- package/dist/hooks/filters/useFilters.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/tracks/useGetTracksApplicableEntityCount.esm.js +1 -1
- package/dist/hooks/tracks/useTrack.esm.js +1 -1
- package/dist/hooks/useSortSearchParams.esm.js +2 -0
- package/dist/index.d.ts +11 -11
- package/dist/routes.esm.js +1 -1
- package/dist/utils/filters.esm.js +1 -1
- package/dist/utils/formStyles.esm.js +1 -1
- package/dist/utils/helpers.esm.js +1 -1
- package/dist/utils/json.esm.js +2 -0
- package/dist/utils/validation.esm.js +1 -1
- package/package.json +19 -19
- package/dist/components/CampaignPage/CampaignPageDeprecated.esm.js +0 -2
- package/dist/components/CampaignPage/CampaignStatusHistoryTile.esm.js +0 -2
- package/dist/components/CampaignPage/CampaignStatusTile.esm.js +0 -2
- package/dist/components/CampaignPage/DaysRemainingTile.esm.js +0 -2
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js +0 -2
- package/dist/components/CampaignsPage/CampaignListPage/CampaignMetadata.esm.js +0 -2
- package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +0 -2
- package/dist/components/CampaignsPage/CampaignListPage/CampaignTypes.esm.js +0 -2
- package/dist/components/CampaignsPage/CampaignListPage/CampaignsOverviewSkeleton.esm.js +0 -2
- package/dist/components/Charts/LoadingChart.esm.js +0 -2
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +0 -2
- package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +0 -2
- package/dist/components/CheckPage/CheckPageDeprecated.esm.js +0 -2
- package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +0 -2
- package/dist/components/CheckPage/CheckStatusTable.esm.js +0 -2
- package/dist/components/CheckPage/ExemptionsTable.esm.js +0 -2
- package/dist/components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js +0 -2
- package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +0 -2
- package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +0 -2
- package/dist/components/ChecksPage/skeletons/ChecksOverviewSkeleton.esm.js +0 -2
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListSkeleton.esm.js +0 -2
- package/dist/components/ColorChip/ColorChip.esm.js +0 -2
- package/dist/components/GroupHierarchySelector/GroupHierarchyCategorySelection.esm.js +0 -2
- package/dist/components/GroupHierarchySelector/GroupHierarchyChip.esm.js +0 -2
- package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +0 -2
- package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +0 -2
- package/dist/components/GroupHierarchySelector/GroupHierarchySelectorDialog.esm.js +0 -2
- package/dist/components/HierarchicalTechInsightsPage/ColorLegend.esm.js +0 -2
- package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +0 -2
- package/dist/components/HierarchicalTechInsightsPage/HierarchyTable.esm.js +0 -2
- package/dist/components/HierarchicalTechInsightsPage/LowestPerformingTeams.esm.js +0 -2
- package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +0 -2
- package/dist/components/HierarchicalTechInsightsPage/TeamPerformanceCard.esm.js +0 -2
- package/dist/components/HierarchicalTechInsightsPage/TeamPerformanceListCard.esm.js +0 -2
- package/dist/components/HierarchicalTechInsightsPage/TopPerformingTeams.esm.js +0 -2
- package/dist/components/HierarchicalTechInsightsPage/visualizations/findNodePath.esm.js +0 -2
- package/dist/components/LevelsTable/CheckRowContent.esm.js +0 -2
- package/dist/components/LevelsTable/LevelsTable.esm.js +0 -2
- package/dist/components/PassingPercentProgressbar/PassPercentageProgressbar.esm.js +0 -2
- package/dist/components/QuickstartPage/HowDoIListItem.esm.js +0 -2
- package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +0 -2
- package/dist/components/QuickstartPage/QuickstartPage.esm.js +0 -3
- package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +0 -7
- package/dist/components/QuickstartPage/styles.esm.js +0 -2
- package/dist/components/RichTooltip/RichTooltip.esm.js +0 -2
- package/dist/components/RoutingPage/NewFeatureTab.esm.js +0 -2
- package/dist/components/RoutingPage/RoutingPageDeprecated.esm.js +0 -2
- package/dist/components/RoutingPage/RoutingPageWrapperDeprecated.esm.js +0 -2
- package/dist/components/SearchFilters/SearchFilters.esm.js +0 -2
- package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js +0 -2
- package/dist/components/SoundcheckEntityLink/SoundcheckEntityLink.esm.js +0 -2
- package/dist/components/SoundcheckHeader/headerUtil.esm.js +0 -2
- package/dist/components/TeamStatusBar/TeamStatusBar.esm.js +0 -2
- package/dist/components/TechInsights/FilterControls.esm.js +0 -2
- package/dist/components/TechInsights/SummaryTiles.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsPageDeprecated.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsTableView.esm.js +0 -2
- package/dist/components/TimePeriodBar/TimePeriodBar.esm.js +0 -2
- package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +0 -2
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +0 -2
- package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +0 -2
- package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +0 -2
- package/dist/components/TrackPage/TrackHistoryChart.esm.js +0 -2
- package/dist/components/TrackPage/TrackPageDeprecated.esm.js +0 -2
- package/dist/components/TrackPage/TrackProgressCard.esm.js +0 -2
- package/dist/components/TrackPage/TrackStatus.esm.js +0 -2
- package/dist/components/TrackPage/TrackStatusBar.esm.js +0 -2
- package/dist/components/TrackPage/TrackStatusTable.esm.js +0 -2
- package/dist/components/TrackPage/utils.esm.js +0 -2
- package/dist/components/TrackSelection/TrackSelection.esm.js +0 -2
- package/dist/components/TracksPage/TrackListPage/TrackEmptyState.esm.js +0 -2
- package/dist/components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js +0 -2
- package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +0 -2
- package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +0 -2
- package/dist/components/TracksPage/TrackListPage/TracksOverviewSkeleton.esm.js +0 -2
- package/dist/hooks/campaigns/useGetCampaignOwners.esm.js +0 -2
- package/dist/hooks/checks/useGetCheckOwners.esm.js +0 -2
- package/dist/hooks/heirarchy/useGroupTypeHierarchy.esm.js +0 -2
- package/dist/hooks/tracks/useGetTrackOwners.esm.js +0 -2
- package/dist/utils/colors.esm.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @spotify/backstage-plugin-soundcheck
|
|
2
2
|
|
|
3
|
+
## 0.19.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependency `cronstrue` to `^3.0.0`.
|
|
8
|
+
- Updated dependency `backstage` to `1.46.0`.
|
|
9
|
+
- Fixed search on Tech Insights Explorer BUI pages.
|
|
10
|
+
- Removed feature flag for tech health.
|
|
11
|
+
- Fixed an issue where updates to an integration configuration were not immediately reflected in the UI.
|
|
12
|
+
- Fix issue where facts with periods in their name were not being suggested properly.
|
|
13
|
+
- Fixed a regression in the Current Status card for a Campaign.
|
|
14
|
+
- Make the Backstage UI theme the default Soundcheck theme.
|
|
15
|
+
- Fix missing Soundcheck Scorecard Extension for Group Entities
|
|
16
|
+
- Get check entities from catalog when user-provided filters are present (owner filter)
|
|
17
|
+
- Added possibility to configure more complex filter conditions in No-Code UI.
|
|
18
|
+
- Fix collection configuration not showing as being scheduled or having a source.
|
|
19
|
+
- Fix Check Current Status card and Historical Status card to use the same applicable count.
|
|
20
|
+
- Fix imported tracks so external checks render correctly in the Edit Check form
|
|
21
|
+
- Updated dependencies
|
|
22
|
+
- @spotify/backstage-plugin-core@0.8.13
|
|
23
|
+
- @spotify/backstage-plugin-soundcheck-common@0.19.4
|
|
24
|
+
|
|
25
|
+
## 0.19.8
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- Fixed search on Tech Insights Explorer BUI pages.
|
|
30
|
+
|
|
3
31
|
## 0.19.7
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{convertLegacyRouteRef as r,compatWrapper as o}from"@backstage/core-compat-api";import{EntityContentBlueprint as n,EntityCardBlueprint as a}from"@backstage/plugin-catalog-react/alpha";import{entityRootRouteRef as i,groupRootRouteRef as c}from"../routes.esm.js";const p=n.make({name:"entity",params:{path:"soundcheck",title:"Soundcheck",routeRef:r(i),loader:()=>import("../components/EntitySoundcheckContent.esm.js").then(e=>o(t(e.EntitySoundcheckContent,{})))}}),m=a.make({name:"card",params:{loader:()=>import("../components/EntitySoundcheckCard/index.esm.js").then(e=>o(t(e.EntitySoundcheckCard,{})))}}),u=n.make({name:"group",params:{path:"soundcheck-overview",title:"Soundcheck Overview",filter:"kind:group",routeRef:r(c),loader:()=>import("../components/OverviewPage/index.esm.js").then(e=>o(t(e.FixedGroupOverviewPage,{})))}});export{m as entitySoundcheckCard,p as entitySoundcheckContent,u as groupSoundcheckContent};
|
|
2
2
|
//# sourceMappingURL=entity-content.esm.js.map
|
package/dist/alpha.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import * as _backstage_catalog_model from '@backstage/catalog-model';
|
|
2
1
|
import * as react from 'react';
|
|
3
|
-
import * as _backstage_plugin_catalog_react_alpha from '@backstage/plugin-catalog-react/alpha';
|
|
4
2
|
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
5
|
-
import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
6
3
|
|
|
7
4
|
/**
|
|
8
5
|
* @public
|
|
@@ -10,114 +7,6 @@ import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
|
10
7
|
* The Soundcheck plugin for use within Backstage´s new frontend system
|
|
11
8
|
*/
|
|
12
9
|
declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin<{}, {}, {
|
|
13
|
-
"api:soundcheck": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
14
|
-
kind: "api";
|
|
15
|
-
name: undefined;
|
|
16
|
-
config: {};
|
|
17
|
-
configInput: {};
|
|
18
|
-
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_core_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
19
|
-
inputs: {};
|
|
20
|
-
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_core_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_core_plugin_api.AnyApiFactory>;
|
|
21
|
-
}>;
|
|
22
|
-
"entity-card:soundcheck/card": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
23
|
-
kind: "entity-card";
|
|
24
|
-
name: "card";
|
|
25
|
-
config: {
|
|
26
|
-
filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
27
|
-
type: "content" | "summary" | "info" | undefined;
|
|
28
|
-
};
|
|
29
|
-
configInput: {
|
|
30
|
-
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
31
|
-
type?: "content" | "summary" | "info" | undefined;
|
|
32
|
-
};
|
|
33
|
-
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
|
|
34
|
-
optional: true;
|
|
35
|
-
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
36
|
-
optional: true;
|
|
37
|
-
}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_plugin_catalog_react_alpha.EntityCardType, "catalog.entity-card-type", {
|
|
38
|
-
optional: true;
|
|
39
|
-
}>;
|
|
40
|
-
inputs: {};
|
|
41
|
-
params: {
|
|
42
|
-
loader: () => Promise<JSX.Element>;
|
|
43
|
-
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
44
|
-
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
45
|
-
};
|
|
46
|
-
}>;
|
|
47
|
-
"entity-content:soundcheck/entity": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
48
|
-
kind: "entity-content";
|
|
49
|
-
name: "entity";
|
|
50
|
-
config: {
|
|
51
|
-
path: string | undefined;
|
|
52
|
-
title: string | undefined;
|
|
53
|
-
filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
54
|
-
group: string | false | undefined;
|
|
55
|
-
};
|
|
56
|
-
configInput: {
|
|
57
|
-
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
58
|
-
title?: string | undefined;
|
|
59
|
-
path?: string | undefined;
|
|
60
|
-
group?: string | false | undefined;
|
|
61
|
-
};
|
|
62
|
-
output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
63
|
-
optional: true;
|
|
64
|
-
}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
|
|
65
|
-
optional: true;
|
|
66
|
-
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
67
|
-
optional: true;
|
|
68
|
-
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-group", {
|
|
69
|
-
optional: true;
|
|
70
|
-
}>;
|
|
71
|
-
inputs: {};
|
|
72
|
-
params: {
|
|
73
|
-
defaultPath?: [Error: `Use the 'path' param instead`];
|
|
74
|
-
path: string;
|
|
75
|
-
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
76
|
-
title: string;
|
|
77
|
-
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
78
|
-
group?: ("operation" | "development" | "overview" | "documentation" | "deployment" | "observability") | (string & {});
|
|
79
|
-
loader: () => Promise<JSX.Element>;
|
|
80
|
-
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
81
|
-
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
82
|
-
};
|
|
83
|
-
}>;
|
|
84
|
-
"entity-content:soundcheck/group": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
85
|
-
kind: "entity-content";
|
|
86
|
-
name: "group";
|
|
87
|
-
config: {
|
|
88
|
-
path: string | undefined;
|
|
89
|
-
title: string | undefined;
|
|
90
|
-
filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
91
|
-
group: string | false | undefined;
|
|
92
|
-
};
|
|
93
|
-
configInput: {
|
|
94
|
-
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
95
|
-
title?: string | undefined;
|
|
96
|
-
path?: string | undefined;
|
|
97
|
-
group?: string | false | undefined;
|
|
98
|
-
};
|
|
99
|
-
output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
100
|
-
optional: true;
|
|
101
|
-
}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
|
|
102
|
-
optional: true;
|
|
103
|
-
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
104
|
-
optional: true;
|
|
105
|
-
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-group", {
|
|
106
|
-
optional: true;
|
|
107
|
-
}>;
|
|
108
|
-
inputs: {};
|
|
109
|
-
params: {
|
|
110
|
-
defaultPath?: [Error: `Use the 'path' param instead`];
|
|
111
|
-
path: string;
|
|
112
|
-
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
113
|
-
title: string;
|
|
114
|
-
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
115
|
-
group?: ("operation" | "development" | "overview" | "documentation" | "deployment" | "observability") | (string & {});
|
|
116
|
-
loader: () => Promise<JSX.Element>;
|
|
117
|
-
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
118
|
-
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
119
|
-
};
|
|
120
|
-
}>;
|
|
121
10
|
"integration:soundcheck/azure": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
122
11
|
kind: "integration";
|
|
123
12
|
name: "azure";
|
|
@@ -349,26 +238,24 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
349
238
|
configInput: {};
|
|
350
239
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<{
|
|
351
240
|
title: string;
|
|
352
|
-
icon:
|
|
241
|
+
icon: _backstage_frontend_plugin_api.IconComponent;
|
|
353
242
|
routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
|
|
354
243
|
}, "core.nav-item.target", {}>;
|
|
355
244
|
inputs: {};
|
|
356
245
|
params: {
|
|
357
246
|
title: string;
|
|
358
|
-
icon:
|
|
247
|
+
icon: _backstage_frontend_plugin_api.IconComponent;
|
|
359
248
|
routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
|
|
360
249
|
};
|
|
361
250
|
}>;
|
|
362
251
|
"page:soundcheck/SoundcheckRoutingPage": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
363
252
|
config: {
|
|
364
253
|
title: string | undefined;
|
|
365
|
-
} & {
|
|
366
254
|
path: string | undefined;
|
|
367
255
|
};
|
|
368
256
|
configInput: {
|
|
369
257
|
title?: string | undefined;
|
|
370
|
-
|
|
371
|
-
path?: string | undefined;
|
|
258
|
+
path?: string | undefined | undefined;
|
|
372
259
|
};
|
|
373
260
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
374
261
|
optional: true;
|
|
@@ -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/
|
|
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/CampaignTechInsightsExplorerPage.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/SoundcheckHeader/SoundcheckHeader.esm.js";import"../components/SoundcheckHeader/SoundcheckHeaderContext.esm.js";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/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/IntegrationsListPageBUI.esm.js";import"../components/OverviewPage/OverviewPageContent.esm.js";import"../components/TechHealth/TechHealth.esm.js";import"../components/TechInsights/TechInsightsPageBUI.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/TrackTechInsightsExplorerPage.esm.js";import"../components/TracksPage/TracksListPageBUI.esm.js";import"@spotify/backstage-plugin-core";import"../components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.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{jsx as t,jsxs as C,Fragment as ce}from"react/jsx-runtime";import{makeStyles as pe,useTheme as ye}from"@material-ui/core/styles";import{schemeCategory10 as me}from"d3-scale-chromatic";import{useState as b,useRef as D,createElement as ue,Fragment as z}from"react";import{ResponsiveContainer as he,AreaChart as xe,CartesianGrid as fe,XAxis as ge,Label as G,YAxis as ve,Tooltip as ke,Legend as Ae,Area as Le,Dot as E,Line as Ce}from"recharts";import{ChartTooltip as be}from"./ChartTooltip.esm.js";import Ke from"./Legend.esm.js";import{yDomain as we,hasUniqueValueForKey as P}from"./utils.esm.js";const Te=pe(o=>({root:{height:"100%",width:"100%"},gridLine:{stroke:o.palette.divider},xAxis:{fontSize:"0.75rem",fill:o.palette.text.secondary},yAxis:{fontSize:"0.75rem",fill:o.palette.text.secondary},tooltip:{borderRadius:o.shape.borderRadius,border:`1px solid ${o.palette.divider}`,backgroundColor:o.palette.background.paper,color:o.palette.text.primary,boxShadow:o.shadows[1]}})),Se=({data:o=[],categories:A=[],index:h,colors:K=me,categoryColors:W={},valueFormatter:w=
|
|
1
|
+
import{jsx as t,jsxs as C,Fragment as ce}from"react/jsx-runtime";import{makeStyles as pe,useTheme as ye}from"@material-ui/core/styles";import{schemeCategory10 as me}from"d3-scale-chromatic";import{useState as b,useRef as D,createElement as ue,Fragment as z}from"react";import{ResponsiveContainer as he,AreaChart as xe,CartesianGrid as fe,XAxis as ge,Label as G,YAxis as ve,Tooltip as ke,Legend as Ae,Area as Le,Dot as E,Line as Ce}from"recharts";import{ChartTooltip as be}from"./ChartTooltip.esm.js";import Ke from"./Legend.esm.js";import{yDomain as we,hasUniqueValueForKey as P}from"./utils.esm.js";const Te=pe(o=>({root:{height:"100%",width:"100%"},gridLine:{stroke:o.palette.divider},xAxis:{fontSize:"0.75rem",fill:o.palette.text.secondary},yAxis:{fontSize:"0.75rem",fill:o.palette.text.secondary},tooltip:{borderRadius:o.shape.borderRadius,border:`1px solid ${o.palette.divider}`,backgroundColor:o.palette.background.paper,color:o.palette.text.primary,boxShadow:o.shadows[1]}})),Se=({data:o=[],categories:A=[],index:h,colors:K=me,categoryColors:W={},valueFormatter:w=d=>d.toString(),startEndOnly:T=!1,showXAxis:j=!0,showYAxis:R=!0,showGridLines:q=!0,yAxisWidth:I=56,intervalType:M="equidistantPreserveStart",showTooltip:X=!0,showLegend:Y=!0,autoMinValue:B=!1,minValue:H,maxValue:U,allowDecimals:Z=!0,connectNulls:S=!1,className:J,onValueChange:p,enableLegendSlider:Q=!0,tickGap:_=5,xAxisLabel:L,yAxisLabel:x,type:f="default",legendPosition:Ne="right",fill:ee="gradient",tooltipCallback:N,customTooltip:O,...te})=>{const d=Te(),y=ye(),[ae,ie]=b(60),[l,g]=b(void 0),[s,u]=b(void 0),m=A.reduce((e,a,i)=>(e[a]=W[a]||K[i%K.length],e),{}),oe=we({autoMinValue:B,minValue:H,maxValue:U}),v=!!p,ne=f==="stacked"||f==="percent",F=D(void 0),V=D(void 0),re=({fillType:e,dot:a,legend:i,category:r})=>{const n=a||i&&i!==r?.1:.3,c=m[r]||y.palette.primary.main;switch(e){case"none":return t("stop",{stopColor:c,stopOpacity:0});case"gradient":return C(ce,{children:[t("stop",{offset:"5%",stopColor:c,stopOpacity:n}),t("stop",{offset:"95%",stopColor:c,stopOpacity:0})]});default:return t("stop",{stopColor:c,stopOpacity:n})}};function le(e){return`${(e*100).toFixed(0)}%`}function de(e,a){a.stopPropagation(),v&&(e.index===l?.index&&e.dataKey===l?.dataKey||P(o,e.dataKey)&&s&&s===e.dataKey?(u(void 0),g(void 0),p?.(null)):(u(e.dataKey),g({index:e.index,dataKey:e.dataKey}),p?.({eventType:"dot",categoryClicked:e.dataKey,...e.payload})))}function $(e){v&&(e===s&&!l||P(o,e)&&l&&l.dataKey===e?(u(void 0),p?.(null)):(u(e),p?.({eventType:"category",categoryClicked:e})),g(void 0))}return t("div",{className:`${d.root} ${J}`,...te,children:t(he,{children:C(xe,{data:o,onClick:v&&(s||l)?()=>{g(void 0),u(void 0),p?.(null)}:void 0,margin:{bottom:L?30:void 0,left:x?20:void 0,right:x?5:void 0,top:5},stackOffset:f==="percent"?"expand":void 0,children:[q?t(fe,{className:d.gridLine,horizontal:!0,vertical:!1}):null,t(ge,{padding:{left:20,right:20},hide:!j,dataKey:h,interval:T?"preserveStartEnd":M,tick:{transform:"translate(0, 6)"},ticks:T?[o[0][h],o[o.length-1][h]]:void 0,className:d.xAxis,tickLine:!1,axisLine:!1,minTickGap:_,children:L&&t(G,{position:"insideBottom",offset:-20,className:d.xAxis,children:L})}),t(ve,{width:I,hide:!R,axisLine:!1,tickLine:!1,type:"number",domain:oe,tick:{transform:"translate(-3, 0)"},className:d.yAxis,tickFormatter:f==="percent"?le:w,allowDecimals:Z,children:x&&t(G,{position:"insideLeft",style:{textAnchor:"middle"},angle:-90,offset:-15,className:d.yAxis,children:x})}),t(ke,{wrapperStyle:{outline:"none"},isAnimationActive:!0,animationDuration:100,cursor:{stroke:y.palette.divider,strokeWidth:1},offset:20,position:{y:0},content:({active:e,payload:a,label:i})=>{const r=a?a.map(n=>({category:n.dataKey,value:n.value,index:n.payload[h],color:m[n.dataKey]??"#000",type:n.type,payload:n.payload})):[];return N&&(e!==F.current||i!==V.current)&&(N({active:e,payload:r,label:i}),F.current=e,V.current=i),X&&e?O?ue(O,{active:e,payload:r,label:i}):t(be,{active:e,payload:r,label:i,valueFormatter:w}):null}}),Y?t(Ae,{verticalAlign:"top",height:ae,content:({payload:e})=>t(Ke,{categories:e?.map(a=>a.value)??[],colors:e?.map(a=>m[a.value]||y.palette.primary.main)??[],onClickLegendItem:v?$:void 0,activeLegend:s,enableLegendSlider:Q,setLegendHeight:ie})}):null,A.map(e=>{const a=`${e.replace(/[^a-zA-Z0-9]/g,"")}`;return C(z,{children:[t("defs",{children:t("linearGradient",{id:a,x1:"0",y1:"0",x2:"0",y2:"1",children:re({fillType:ee,dot:l,legend:s,category:e})})},e),t(Le,{stroke:m[e]||y.palette.primary.main,strokeOpacity:l||s&&s!==e?.3:1,activeDot:i=>{const{cx:r,cy:n,dataKey:c}=i;return t(E,{cx:r,cy:n,r:5,fill:m[c]||y.palette.primary.main,onClick:(k,se)=>de(i,se)})},dot:i=>{const{cx:r,cy:n,dataKey:c,index:k}=i;return l?.index===k&&l?.dataKey===e?t(E,{cx:r,cy:n,r:5,fill:m[c]||y.palette.primary.main},k):t(z,{},k)},name:e,type:"linear",dataKey:e,strokeWidth:2,strokeLinejoin:"round",strokeLinecap:"round",isAnimationActive:!1,connectNulls:S,stackId:ne?"stack":void 0,fill:`url(#${a})`},e)]},e)}),p?A.map(e=>t(Ce,{strokeOpacity:0,name:e,type:"linear",dataKey:e,stroke:"transparent",fill:"transparent",legendType:"none",tooltipType:"none",strokeWidth:12,connectNulls:S,onClick:(a,i)=>{i.stopPropagation();const{name:r}=a;$(r)}},e)):null]})})})};export{Se as AreaChart};
|
|
2
2
|
//# sourceMappingURL=AreaChart.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
|
|
1
|
+
import{jsxs as c,Fragment as g,jsx as o}from"react/jsx-runtime";import{useRouteRef as f}from"@backstage/core-plugin-api";import{HeaderPage as u}from"@backstage/ui";import{useEffect as d}from"react";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{CampaignFormProvider as e,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{campaignsPageRouteRef as i}from"../../routes.esm.js";import{CampaignForm as k}from"../CampaignForm/CampaignForm.esm.js";import{DocLinkButton as b}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:m,isLoading:r}=l();d(()=>{t(r)},[t,r]);const[a,s]=h(i),p=async n=>{await m(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(e,{children:o(k,{onSave:p,onCancel:a})})},F=()=>{const t=f(i);return c(g,{children:[o(u,{title:"Create Campaign",breadcrumbs:[{label:"All Campaigns",href:t()}],customActions:o(b,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/"})}),o(e,{children:o(x,{})})]})};export{F as CampaignCreatePage};
|
|
2
2
|
//# sourceMappingURL=CampaignCreatePage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,Fragment as d}from"react/jsx-runtime";import{Content as
|
|
1
|
+
import{jsx as e,Fragment as d}from"react/jsx-runtime";import{Content as b}from"@backstage/core-components";import{FormProvider as M}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as N}from"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import{useFeatureFlag as x}from"../../hooks/useFeatureFlag.esm.js";import{formStyles as L}from"../../utils/formStyles.esm.js";import{FormFilterSection as k}from"../FormFilterSection/FormFilterSection.esm.js";import{FormStepper as v}from"../FormStepper/FormStepper.esm.js";import{useCampaignForm as y}from"./hooks/useCampaignForm.esm.js";import{CampaignDetailsStep as A}from"./Steps/CampaignDetailsStep/CampaignDetailsStep.esm.js";import{CampaignTrackStepNew as D}from"./Steps/CampaignTrackStepNew.esm.js";import{CampaignMilestonesStep as E}from"./Steps/CampaignMilestonesStep.esm.js";import{StepNameMapping as O}from"./types/CampaignFormTypes.esm.js";import{CAMPAIGN_FIELDS as I}from"./utils/campaignFormUtils.esm.js";var c=(t=>(t.Details="Enter campaign details",t.Checks="Add checks",t.Entities="Choose the affected entities (Optional)",t.Milestones="Set campaign milestones",t))(c||{});const P=({onSave:t,onCancel:g,selectedCampaign:o})=>{const f=L(),{isLoading:i,isReadOnly:S}=N(),{formMethods:r,onSubmit:a}=y(t,o),{getValues:u,control:n,formState:{errors:m},handleSubmit:s,trigger:C}=r,l=u(),h=l.detailsStep.startDate;x("debugMode")&&console.log(l);const p=[{label:"Enter campaign details",content:()=>e(A,{control:n,isLoading:i,disabled:!1,errors:m.detailsStep,startDate:h})},{label:"Add checks",content:()=>e(d,{children:e(D,{})})},{label:"Set campaign milestones",content:()=>e(E,{control:n,isLoading:i,disabled:!1,errors:m.milestonesStep})},{label:"Choose the affected entities (Optional)",content:()=>e(k,{includeFilterName:"filtersStep.include",excludeFilterName:"filtersStep.exclude",description:I.filter.description})}],F=o?[...Array(p.length).keys()]:[0];return e(d,{children:e(b,{className:f.formWrapper,children:e(M,{...r,children:e("form",{onSubmit:s(a),children:e(v,{onClose:g,handleSubmit:s,trigger:C,onSubmit:a,initialVisited:F,stepNameMap:O,steps:p,isLoading:i,isReadOnly:S,saveButtonText:"Save Campaign"})})})})})};export{P as CampaignForm,c as CampaignStepLabel};
|
|
2
2
|
//# sourceMappingURL=CampaignForm.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as l,Fragment as y,jsx as e}from"react/jsx-runtime";import{makeStyles as
|
|
1
|
+
import{jsxs as l,Fragment as y,jsx as e}from"react/jsx-runtime";import{makeStyles as C,Divider as S,Grid as h,Typography as o,TextField as x}from"@material-ui/core";import F from"@material-ui/icons/Remove";import{useFieldArray as R,Controller as u}from"react-hook-form";import{NoBorderButton as f}from"../../NoBorderButton/NoBorderButton.esm.js";import{CAMPAIGN_FIELDS as H}from"../utils/campaignFormUtils.esm.js";const A=C(s=>({milestoneHeader:{display:"flex",alignItems:"center",marginBottom:s.spacing(1)},divider:{margin:"20px 0"},helperText:{marginLeft:0},selectContainer:{width:"250px"},section:{marginBottom:s.spacing(2)}})),B=({control:s,errors:n,isLoading:d,disabled:t})=>{const r=A(),{name:m,description:p,passrate:c}=H.milestones,{fields:g,append:v,remove:T}=R({control:s,name:"milestonesStep.milestones"}),b=()=>v({name:"",description:"",passRate:"0"});return l(y,{children:[g.map((N,i)=>l("div",{children:[i!==0&&e(S,{className:r.divider}),l(h,{container:!0,spacing:1,className:r.milestoneHeader,children:[l(h,{item:!0,xs:!0,children:[e(o,{variant:"subtitle2",children:m.name}),e(u,{name:`milestonesStep.milestones.${i}.name`,control:s,defaultValue:"",render:({field:a})=>e(x,{...a,FormHelperTextProps:{className:r.helperText},variant:"outlined",fullWidth:!0,placeholder:m.placeholder,disabled:d||t,type:"text",margin:"dense",error:!!n?.milestones?.[i]?.name,helperText:n?.milestones?.[i]?.name?.message??m.helperText})})]}),i!==0&&!t&&e(h,{item:!0,children:e(f,{label:"Remove Milestone",startIcon:e(F,{}),onClick:()=>T(i),disabled:t})})]}),l("div",{className:r.section,children:[e(o,{variant:"subtitle2",children:p.name}),e(o,{variant:"caption",children:p.description}),e(u,{name:`milestonesStep.milestones.${i}.description`,control:s,defaultValue:"",render:({field:a})=>e(x,{...a,FormHelperTextProps:{className:r.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:p.placeholder,disabled:d||t,type:"text",margin:"dense",error:!!n?.milestones?.[i]?.description,helperText:n?.milestones?.[i]?.description?.message})})]}),l("div",{className:r.section,children:[e(o,{variant:"subtitle2",children:c.name}),e(o,{variant:"caption",children:c.description}),e("div",{className:r.selectContainer,children:e(u,{name:`milestonesStep.milestones.${i}.passRate`,control:s,defaultValue:"",render:({field:a})=>e(x,{...a,FormHelperTextProps:{className:r.helperText},variant:"outlined",fullWidth:!0,placeholder:c.placeholder,disabled:d||t,type:"number",margin:"dense",error:!!n?.milestones?.[i]?.passRate,helperText:n?.milestones?.[i]?.passRate?.message??void 0})})})]})]},N.id)),e(f,{label:"Add Milestone",onClick:()=>b(),disabled:t})]})};export{B as CampaignMilestonesStep};
|
|
2
2
|
//# sourceMappingURL=CampaignMilestonesStep.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{v4 as
|
|
1
|
+
import{v4 as D}from"uuid";import{mapInputFilterToFormFilters as c}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{mapTrackFormToInput as h}from"../../TrackForm/utils/useTrackForm.esm.js";const v=({name:o,ownerEntityRef:i,description:p,targetCompletionDate:s,supportChannel:a,milestones:n,startDate:r,track:t})=>({detailsStep:{name:o,description:p,ownerEntityRef:i,supportChannel:a,startDate:r,targetCompletionDate:s,draft:t.draft??!1},tracksStep:{checks:t?.levels?.[0].checks.map(e=>({id:e.id,name:e.name??e.id,description:e.description}))},filtersStep:{include:c(t.filter),exclude:c(t.exclude)},milestonesStep:{milestones:n.map(e=>({id:Number(e.id),name:e.name,description:e.description??void 0,passRate:e.targetPercent.toString()}))}}),R=(o,i,p)=>{const{tracksStep:{checks:s},detailsStep:{name:a,description:n,ownerEntityRef:r,supportChannel:t,startDate:e,targetCompletionDate:m,draft:f},filtersStep:d,milestonesStep:{milestones:u}}=o,l=h({detailsStep:{name:a,description:n,ownerEntityRef:r,draft:f},levelsStep:{levels:[{name:"Level 1",checks:s,description:""}]},filtersStep:{include:d.include,exclude:d.exclude}},p??{},i?.track);return{id:i?.id??D(),track:{...l,type:"campaign"},name:a,description:n,ownerEntityRef:r,supportChannel:t,startDate:e,targetCompletionDate:m,milestones:u.map(({id:g,name:C,description:S,passRate:k})=>({id:g,trackId:l.id,name:C,description:S||void 0,targetPercent:parseInt(k,10),targetCompletionDate:m}))}};export{R as mapCampaignFormDataToCampaignInput,v as mapCampaignToFormValues};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{DateTime as
|
|
2
|
-
For example, selecting an include filter of 'Kind' as 'Component' and an exclude filter of 'Type' as 'Service' will select all entities with kind Component where type is NOT Service.`}};export{
|
|
1
|
+
import{DateTime as t}from"luxon";import{emptyFilters as e}from"../../Filter/types.esm.js";import{CAMPAIGN_NAME_MAX_LENGTH as a,MILESTONE_NAME_MAX_LENGTH as i}from"./validation.esm.js";const n={detailsStep:{name:"",description:"",ownerEntityRef:"",supportChannel:"",startDate:t.now(),targetCompletionDate:null,draft:!1},tracksStep:{checks:[]},filtersStep:{include:[e()],exclude:[e()]},milestonesStep:{milestones:[{name:"Target",description:"",passRate:"0"}]}},r={details:{name:{name:"Campaign name",helperText:`Max ${a} characters`,placeholder:"Example: Check for latest version of javascript and Readme files"},description:{name:"Campaign description",placeholder:"Example: Check for the latest versions of JavaScript and README files to meet this quarter's quality standards."},owner:{name:"Campaign owner",description:"Add a team as the owner of this Campaign."},support:{name:"Support channel (Optional)",description:"Set up a Slack channel for notifications.",placeholder:"Channel name"},startingDate:{name:"Starting date",placeholder:"Starting date"},endingDate:{name:"Ending date",placeholder:"Ending date"}},milestones:{name:{name:"Milestone name",helperText:`Max ${i} characters`,placeholder:"Example: 80% pass rate"},description:{name:"Milestone description",description:"Provide a detailed description of this milestone, outlining its objectives.",placeholder:"Example: The track in my campaign expects a pass rate of 80% or above"},passrate:{name:"Milestone pass rate",description:"Enter the pass rate that your tracks have to meet.",placeholder:"Example: 80%"}},filter:{description:`Use the filters below to narrow the scope of the Campaign. Only Entities that match the selected include and exclude filters will be monitored. Exclude filters must be used with with an include filter.
|
|
2
|
+
For example, selecting an include filter of 'Kind' as 'Component' and an exclude filter of 'Type' as 'Service' will select all entities with kind Component where type is NOT Service.`}};export{r as CAMPAIGN_FIELDS,n as DEFAULT_FORM_VALUES};
|
|
3
3
|
//# sourceMappingURL=campaignFormUtils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as a}from"react/jsx-runtime";import{
|
|
1
|
+
import{jsx as a}from"react/jsx-runtime";import{CampaignPageBUI as m}from"./CampaignPageBUI.esm.js";const o=()=>a(m,{});export{o as CampaignPage};
|
|
2
2
|
//# sourceMappingURL=CampaignPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as a,Fragment as
|
|
1
|
+
import{jsx as e,jsxs as a,Fragment as $}from"react/jsx-runtime";import{parseEntityRef as we}from"@backstage/catalog-model";import{useRouteRef as F}from"@backstage/core-plugin-api";import{usePermission as Re}from"@backstage/plugin-permission-react";import{Container as b,HeaderPage as Le,Box as c,Flex as Q,Text as g,Grid as N}from"@backstage/ui";import{makeStyles as Fe}from"@material-ui/core";import{toEntityFilterQuery as Ne,soundcheckCampaignReadPermission as Pe}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as xe}from"lodash";import{DateTime as S}from"luxon";import{useState as v,useMemo as I,useEffect as J}from"react";import{useParams as Ae,useSearchParams as De}from"react-router-dom";import Oe from"react-use/lib/useDebounce";import He from"react-use/lib/useLocalStorage";import{useCheckStatuses as Me}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useFilters as je}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 Be}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as Ue}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as Ke}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useLCPReporting as Ve}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as _e}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignsPageRouteRef as Ge,campaignOverviewRouteRef as qe,campaignExplorerRouteRef as $e}from"../../routes.esm.js";import{DescriptionCard as Qe}from"../Cards/DescriptionCard/DescriptionCard.esm.js";import{HistoricalTrackStatusCard as Je}from"../Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js";import"../Cards/TrackStatusCard/TrackStatusCard.esm.js";import{ChecksTable as We}from"../ChecksTable/ChecksTable.esm.js";import{ChipSelector as Xe}from"../ChipSelector/ChipSelector.esm.js";import{EmptyStateBUI as W}from"../EmptyState/EmptyStateBUI.esm.js";import"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Ye}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as Ze,CERTIFICATION_STATUS_MAP as ze}from"../FilterSidebar/util.esm.js";import{LoadingTableSkeleton as ei}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as ii}from"../Menus/SimpleMenu.esm.js";import{useCampaignActions as ti}from"../Menus/useCampaignActions.esm.js";import{PageCustomActions as ri}from"../PageCustomActions/PageCustomActions.esm.js";import{SendCampaignNotificationDialogBUI as ai}from"../SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js";import{TopFailingChecksTableBUI as oi}from"../TopFailingChecksTable/TopFailingChecksTableBUI.esm.js";import{TrackEntitiesTableBUI as si}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js";import{CampaignStatusCard as ni}from"./CampaignStatusCard.esm.js";const ci=Fe(()=>({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)"}})),u={CHECKS:"Checks",TOP_FAILING_CHECKS:"Top Failing Checks",ENTITIES:"Entities"},mi=()=>{const{owners:m,lifecycles:l,types:d,systems:p,certificationStatuses:P}=Ye(),{campaignId:o}=Ae(),X=F(Ge),[s,E]=De(),[n,x]=v(s.get("search")||""),[A,Y]=v(""),[D,Z]=v(new Set([u.CHECKS])),C=D.values().next().value??u.CHECKS;Oe(()=>{Y(n);const r=new URLSearchParams(s.toString());n?r.set("search",n):r.delete("search"),E(r,{replace:!0})},300,[n]);const O=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:A||""}}),[o,m,l,d,p,A]),{reportContentLoaded:H}=_e(O),{reporter:z}=Ve(O),h=ci(),T=I(()=>Ze({lifecycles:l,owners:m,types:d,systems:p}),[l,m,d,p]),{data:ee,isLoading:f,isError:ie}=Be({ids:[o],first:1}),i=ee?.edges?.[0]?.node,{actions:M,showNotificationDialog:j,setShowNotificationDialog:te}=ti(i??void 0),t=i?.track,re=I(()=>t?.levels.flatMap(r=>r.checks),[t?.levels]),ae=Array.from(new Set(t?.levels.flatMap(r=>r.checks).map(r=>r.id)??[])),{data:B,isLoading:oe}=Me({trackId:t?.id,checkIds:ae,filter:T},!!t),se=I(()=>Ne(t?.filter),[t]),{filters:ne,selected:ce,setSelected:me,onRemoveTag:le,selectedTags:de}=je({entityFilterQuery:se,hasCertificationStatusFilters:!0}),{data:U,isLoading:k,isError:pe}=Ue({trackId:t?.id??"",filter:T},!!i),he=S.fromISO(i?.startDate),fe=Math.max(Math.ceil(S.now().diff(he,"days").days),1),{data:K,isLoading:ge,isError:ue}=Ke({trackId:t?.id??"",filter:T,numberOfDays:fe},!!i),w=ie||pe||ue,{loading:Se,allowed:Ce}=Re({permission:Pe,resourceRef:o}),V=z?.getLCPValue();J(()=>{!f&&!k&&H({lcp:V})},[f,k,H,V]);const[y,_]=v(!1),[R,L]=He("campaign-overview-search-params","");J(()=>{!y&&s?.toString()?(R!==s.toString()&&L(s.toString()),_(!0)):y?y&&R!==s.toString()&&L(s.toString()):_(!0)},[s,E,L,R,y]);const ye=r=>{Z(r),x(""),E({},{replace:!0})},be=F(qe),ve=F($e);if(f)return e(b,{className:h.container,children:e(ei,{})});if(!f&&!i)return e(b,{className:h.container,children:e(W,{title:"Campaign not found",body:`There is no campaign with the requested id: ${o}.`})});if(!Se&&!Ce)return e(b,{className:h.container,children:e(W,{title:"Cannot view campaign",body:`No permission to view campaign with the requested id: ${o}.`})});const G=i?.ownerEntityRef,Ie=G?we(G).name:void 0,Ee=S.fromISO(i?.startDate),q=S.fromISO(i?.targetCompletionDate),Te=S.now(),ke=Math.max(Math.ceil(q.diff(Te,"days").days),0);return a($,{children:[e(Le,{title:i?.name,customActions:e(ii,{disabled:!M.length,placement:"left top",menuActions:M,label:"Campaign Actions"}),breadcrumbs:[{label:"Campaigns",href:X()}],tabs:[{id:"overview",label:"Campaign Overview",href:o?be({campaignId:o}):""},{id:"explorer",label:"Tech Insights Explorer",href:o?ve({campaignId:o}):""}]}),a(b,{className:h.container,children:[a(c,{className:h.cards,children:[e(Qe,{description:i?.description??void 0,owner:Ie,isError:w,isLoading:f}),e(ni,{campaign:i,status:U,history:K,isError:w,isLoading:k,children:a($,{children:[a(Q,{align:"baseline",mt:"3",children:[e(g,{as:"h1",variant:"title-medium",weight:"bold",children:ke}),e(g,{variant:"body-small",children:"Days remaining"})]}),a(N.Root,{children:[a(N.Item,{children:[e(c,{children:e(g,{color:"secondary",variant:"body-small",children:"Start date"})}),e(c,{children:e(g,{variant:"body-small",children:Ee.toLocaleString({month:"short",day:"numeric",year:"numeric"})})})]}),a(N.Item,{children:[e(c,{children:e(g,{color:"secondary",variant:"body-small",children:"End date"})}),e(c,{children:e(g,{variant:"body-small",children:q.toLocaleString({month:"short",day:"numeric",year:"numeric"})})})]})]})]})}),e(Je,{track:i?.track,history:K,isCampaign:!0,isError:w,isLoading:ge})]}),t&&a(c,{children:[a(Q,{justify:"between",children:[e(c,{minWidth:"16rem",children:e(Xe,{options:["Checks","Top Failing Checks","Entities"],selected:D,ariaLabel:"Sections",onSelectionChange:ye})}),e(ri,{searchValue:n,setSearchValue:r=>x(r),filters:ne,selected:ce,setSelected:me,onRemoveTag:le,selectedTags:de,showSearch:C!==u.ENTITIES})]}),a(c,{className:h.tableContent,children:[C===u.CHECKS&&e(We,{trackId:t.id,checks:re,checkStatuses:B,isLoading:f||oe,searchValue:n}),C===u.TOP_FAILING_CHECKS&&e(oi,{track:t,checkStatuses:B,certificationStatus:U?.certificationStatus,searchValue:n}),C===u.ENTITIES&&e(si,{isCampaign:!0,track:t,lifecycles:l,owners:m,types:d,systems:p,certificationStatus:xe(P)?void 0:ze[P[0]],searchValue:n})]})]}),i&&j&&e(ai,{campaign:i,isOpen:j,handleClose:()=>te(!1)})]})]})};export{mi as CampaignPageBUI};
|
|
2
2
|
//# sourceMappingURL=CampaignPageBUI.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{Skeleton as v,Box as c,Flex as h}from"@backstage/ui";import{makeStyles as B}from"@material-ui/core";import{useMemo as n}from"react";import{calculateAdjustedBarWidths as S}from"../../utils/charts.esm.js";const k=B(()=>({container:{gap:"var(--bui-space-1)",width:"100%"},barSegment:{height:"var(--bui-space-1_5)",borderRadius:"var(--bui-space-1)"},emptyBar:{width:"100%",background:"var(--bui-fg-disabled)"}})),y=({campaign:u,status:m})=>{const a=k(),d=u?.track,e=m?.certificationStatus?.statusByLevel[0],l=["var(--bui-fg-success)","var(--bui-fg-danger)","var(--bui-fg-disabled)"],t=n(()=>[e?.passed??0,e?.failed??0,e?.notReported??0],[e]),b=t.every(i=>i===0),p=n(()=>S(t),[t]);if(!d||!m)return r(v,{width:"100%"});let s;return b?s=r(c,{className:`${a.barSegment} ${a.emptyBar}`}):s=t.map((i,o)=>{const g=l[o]||"var(--bui-fg-disabled)",f=p[o]||0;return i<=0?null:r(c,{className:a.barSegment,style:{backgroundColor:g,width:`${f}%`}},`track-status-bar-segment-${o}`)}),r(h,{className:a.container,children:s})};export{y as CampaignStatusBarBUI};
|
|
2
|
+
//# sourceMappingURL=CampaignStatusBarBUI.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as o,Fragment as c}from"react/jsx-runtime";import{Text as m,Flex as l,Card as u,CardHeader as g,CardBody as h}from"@backstage/ui";import{makeStyles as C}from"@material-ui/core";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as f}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"react-router-dom";import"../../routes.esm.js";import{LoadingTableSkeleton as y}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{CampaignStatusBarBUI as S}from"./CampaignStatusBarBUI.esm.js";import{CampaignStatusTableBUI as x}from"./CampaignStatusTableBUI.esm.js";const B=C(()=>({card:{minHeight:"15.1rem"}})),H=({campaign:i,status:a,children:e,isLoading:n,isError:s,history:d})=>{const p=B();let r;return!i||!a?r=t(f,{title:"Campaign status not found",body:"There is no status for the requested campaign."}):n?r=t(y,{rowCount:3}):s?r=t(m,{color:"warning",children:"Failed to load campaign data."}):r=o(c,{children:[o(l,{direction:"column",gap:"6",children:[t(S,{campaign:i,status:a}),t(x,{status:a,statusHistory:d})]}),e]}),o(u,{className:p.card,children:[t(g,{children:t(m,{color:"secondary",children:"Current Status"})}),t(h,{children:r})]})};export{H as CampaignStatusCard};
|
|
2
|
+
//# sourceMappingURL=CampaignStatusCard.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as l,jsx as r}from"react/jsx-runtime";import{Text as d,Flex as S}from"@backstage/ui";import{makeStyles as N,createStyles as C}from"@material-ui/core/styles";import{RiLineChartLine as L,RiArrowRightDownBoxLine as B,RiArrowRightUpBoxLine as F}from"@remixicon/react";import{memo as T,useMemo as $,Fragment as D}from"react";import{compactNumberFormatter as v}from"../../utils/formatters.esm.js";const M=N(()=>C({container:{display:"grid",gridTemplateColumns:"3fr 2fr",gap:"var(--bui-space-1)",minWidth:0},item:{display:"flex",alignItems:"center",minWidth:0},legendDash:{width:"var(--bui-space-3)",height:"var(--bui-space-1_5)",borderRadius:"var(--bui-space-1)",marginRight:"var(--bui-space-2)"},category:{display:"flex",alignItems:"center",minWidth:0,flex:1},categoryText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0,flex:1},valueCell:{justifyContent:"flex-end",whiteSpace:"nowrap"},percentage:{marginLeft:"var(--bui-space-1)"}})),W=T(({status:m,statusHistory:n})=>{const a=M(),e=m?.certificationStatus.numberOfEntities??0,t=m?.certificationStatus.statusByLevel[0],p=t?.passed??0,h=e>0?Math.round(p/e*100):0,u=t?.failed??0,f=e>0?Math.round(u/e*100):0,g=t?.notReported??0,b=e>0?Math.round(g/e*100):0,s=$(()=>{if(e===void 0||n===void 0||t===void 0)return;const o=(n.certificationStatusHistory.history[0]?.statusByLevel[0].passed??0)/e*100;return t.passed/e*100-o},[n,t,e]);let c=L,i;s&&(i=`${s.toFixed(0)}% since campaign start`,s<=-1?(c=B,i=`${i}`):s>=1&&(c=F,i=`+${i}`));const y=[{label:"Passing",value:p,percentage:h,color:"var(--bui-fg-success)"},{label:"Failing",value:u,percentage:f,color:"var(--bui-fg-danger)"},{label:"Not Reported",value:g,percentage:b,color:"var(--bui-fg-disabled)"}];return l("div",{className:a.container,children:[y.map(({label:o,value:x,percentage:w,color:R})=>l(D,{children:[r("div",{className:a.item,children:l("div",{className:a.category,children:[r("span",{className:a.legendDash,style:{backgroundColor:R}}),r(d,{className:a.categoryText,variant:"body-small",children:o})]})}),r("div",{className:`${a.item} ${a.valueCell}`,children:l(d,{variant:"body-small",children:[v(x)," of"," ",v(e)," (",w,"%)"]})})]},o)),!!s&&l(S,{align:"center",gap:"1",children:[r(c,{size:"16",color:"var(--bui-gray-5)"}),r(d,{variant:"body-x-small",style:{color:"var(--bui-gray-8)"},children:i})]})]})});export{W as CampaignStatusTableBUI};
|
|
2
|
+
//# sourceMappingURL=CampaignStatusTableBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as
|
|
1
|
+
import{jsx as e,jsxs as p,Fragment as j}from"react/jsx-runtime";import{useRouteRef as b,useApi as M}from"@backstage/core-plugin-api";import{entityPresentationApiRef as $}from"@backstage/plugin-catalog-react";import{usePermission as z}from"@backstage/plugin-permission-react";import{Container as d,HeaderPage as J,Box as v,Flex as K,SearchField as Q}from"@backstage/ui";import{makeStyles as W}from"@material-ui/core";import{soundcheckCampaignReadPermission as X}from"@spotify/backstage-plugin-soundcheck-common";import{useState as k,useMemo as C,useEffect as Y}from"react";import{useParams as Z,useSearchParams as _}from"react-router-dom";import ee from"react-use/lib/useDebounce";import{useGroupHierarchy as ie}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{useHierarchicalTrackStatus as re}from"../../hooks/heirarchy/useHierarchicalTrackStatus.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 ae}from"../../hooks/campaigns/useGetCampaigns.esm.js";import{useGetAllTracks as oe}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useLCPReporting as te}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ne}from"../../hooks/useLoadTimeReporting.esm.js";import{campaignsPageRouteRef as me,campaignOverviewRouteRef as se,campaignExplorerRouteRef as ce}from"../../routes.esm.js";import{EmptyStateBUI as x}from"../EmptyState/EmptyStateBUI.esm.js";import{hierarchyToNivo as pe}from"../HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js";import{LoadingTableSkeleton as de}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{SimpleMenu as le}from"../Menus/SimpleMenu.esm.js";import{useCampaignActions as ge}from"../Menus/useCampaignActions.esm.js";import{SendCampaignNotificationDialogBUI as fe}from"../SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js";import{TechInsightsExplorerTable as ue}from"../TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js";import{TechInsightsGroupSelector as he}from"../TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js";import{TopAndBottomPerformingTeams as be}from"../TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js";const ve=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 o=ve(),{campaignId:i}=Z(),[l,A]=_(),[n,y]=k(l.get("search")||""),r=l.get("group"),[g,E]=k(""),B=b(me);ee(()=>{E(n);const a=new URLSearchParams(l.toString());n?a.set("search",n):a.delete("search"),A(a,{replace:!0})},300,[n]);const S=C(()=>({routeName:"soundcheck-tech-insights-explorer",additionalAttributes:{campaignId:i||"",group:r||"",groupsSearch:g||""}}),[i,r,g]),{reportContentLoaded:R}=ne(S),{reporter:G}=te(S),{data:D,isLoading:s}=ae({ids:[i],first:1}),t=D?.edges?.[0]?.node,{actions:w,showNotificationDialog:I,setShowNotificationDialog:F}=ge(t??void 0),m=t?.track,N=M($),{data:T}=oe({}),f=C(()=>T?.edges.find(a=>a.node.id===m?.id)?.node,[T?.edges,m?.id]),{data:L,isLoading:u}=ie(r||void 0,{enabled:!!r&&!!m?.id&&!!f,ownedEntitiesFilter:f?.filter??void 0}),{loading:H,allowed:O}=z({permission:X,resourceRef:i}),{data:h,isLoading:c}=re({trackId:m?.id??"",groupRef:r??"",skip:!m?.id}),U=C(()=>{if(!r)return;const a=L?.[r];return a?pe(a,h||null,()=>"var(--bui-fg-primary)",N,void 0):void 0},[L,N,r,h]),P=G?.getLCPValue();Y(()=>{!s&&!u&&!c&&R({lcp:P})},[s,u,c,R,P]);const q=b(se),V=b(ce);return s?e(d,{className:o.container,children:e(de,{})}):!s&&!t?e(d,{className:o.container,children:e(x,{title:"Campaign not found",body:`There is no campaign with the requested id: ${i}.`})}):!H&&!O?e(d,{className:o.container,children:e(x,{title:"Cannot view campaign",body:`No permission to view campaign with the requested id: ${i}.`})}):p(j,{children:[e(J,{title:t?.name,customActions:e(le,{disabled:!w.length,placement:"left top",menuActions:w,label:"Campaign Actions"}),breadcrumbs:[{label:"Campaigns",href:B()}],tabs:[{id:"overview",label:"Campaign Overview",href:i?q({campaignId:i}):""},{id:"explorer",label:"Tech Insights Explorer",href:i?V({campaignId:i}):""}]}),p(d,{className:o.container,children:[e(v,{className:o.teams,children:e(be,{trackStatus:h??void 0,isLoading:c,campaignId:i})}),p(v,{children:[p(K,{align:"center",gap:"3",className:o.filters,children:[e(he,{}),e(Q,{value:n,onChange:y,"aria-label":"Search",placeholder:"Search"})]}),e(v,{className:o.tableContent,children:e(ue,{tableData:U,isLoading:u||c,selectedGroup:r??void 0,searchValue:g,trackId:f?.id,campaignId:i})})]}),t&&I&&e(fe,{campaign:t,isOpen:I,handleClose:()=>F(!1)})]})]})};export{Ce as CampaignTechInsightsExplorerPage};
|
|
2
2
|
//# sourceMappingURL=CampaignTechInsightsExplorerPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as d,Fragment as
|
|
1
|
+
import{jsx as r,jsxs as d,Fragment as I}from"react/jsx-runtime";import{useApi as Q,useRouteRef as T}from"@backstage/core-plugin-api";import{entityPresentationApiRef as Y}from"@backstage/plugin-catalog-react";import{usePermission as _}from"@backstage/plugin-permission-react";import{HeaderPage as q,Container as J,Table as X,TableHeader as Z,Column as p,TableBody as ee,TablePagination as te}from"@backstage/ui";import{makeStyles as re}from"@material-ui/core";import{RiCalendarLine as ie}from"@remixicon/react";import{soundcheckCampaignCreatePermission as oe}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as ae,isEmpty as N}from"lodash";import{DateTime as A}from"luxon";import{useState as S,useMemo as l,useCallback as ne,useEffect as me}from"react";import se from"react-use/lib/useDebounce";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as pe}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePagination as ce}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useSortSearchParams as de}from"../../hooks/useSortSearchParams.esm.js";import{useProfileImages as le}from"../../hooks/catalog/useProfileImages.esm.js";import{useLCPReporting as ge}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as fe}from"../../hooks/useLoadTimeReporting.esm.js";import{useSearchNameOwner as he}from"../../hooks/useSearchNameOwner.esm.js";import{campaignCreateRouteRef as ue,campaignDetailsRouteRef as we}from"../../routes.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as ye}from"../EmptyState/EmptyStateBUI.esm.js";import{EmptyStateNoCampaigns as Ce}from"../EmptyState/EmptyStateNoCampaigns.esm.js";import{ListPageCustomActions as Se}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as Pe}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 Re}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 Le}from"../SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js";import{TableRowWithOwner as ve}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const M=10,De=["name","status","days-remaining","owner"],B=t=>{const m=A.fromISO(t),i=A.now();return Math.max(Math.ceil(m.diff(i,"days").days),0)},ke=({campaign:t,profileImageMap:m})=>{const i=l(()=>t.archived?0:B(t.targetCompletionDate),[t.archived,t.targetCompletionDate]),g=T(we),o=l(()=>t.track.levels.reduce((a,u)=>a+(u.checks?.length??0),0),[t.track.levels]),{actions:f,showNotificationDialog:s,setShowNotificationDialog:h}=Re(t);return d(I,{children:[r(ve,{ownerEntityRef:t.ownerEntityRef,href:g({campaignId:t.id}),profileImageSrc:m[t.ownerEntityRef],menuActions:f,name:t.name??"",description:t.description??"",cells:[{title:t.archived?"Archived":"Active"},{title:`${i} day${i===1?"":"s"} remaining`,icon:r(ie,{size:16})},{title:`${o} Check${o===1?"":"s"}`}]}),t&&s&&r(Le,{campaign:t,isOpen:s,handleClose:()=>h(!1)})]})},Ee=re(()=>({container:{marginBottom:"var(--bui-space-12)"}})),be=()=>{const t=Ee(),{updateSortParams:m,searchParams:i,setSearchParams:g}=de(),[o,f]=S(()=>i.get("search")??""),[s,h]=S(()=>i.get("sortDirection")==="descending"?"descending":"ascending"),[a,u]=S(()=>{const e=i.get("sort");return e&&De.includes(e)?e:""}),{data:P,isLoading:c}=pe({}),R=l(()=>P?.edges?.map(e=>e.node)??[],[P?.edges]),{profileImageMap:O}=le(R.map(e=>e.ownerEntityRef)),L=Q(Y),w=he(R,o),v=l(()=>{if(!a)return w;const e=ae(w,n=>a==="owner"?L.forEntity(n.ownerEntityRef).snapshot.primaryTitle.toLowerCase():a==="status"?n.archived?"archived":"active":a==="days-remaining"?n.archived?-1:B(n.targetCompletionDate):n.name.toLowerCase());return s==="descending"&&e.reverse(),e},[L,a,s,w]),{paginatedItems:y,reset:C,paginationProps:x}=ce({pageParam:"perPage",defaultPageSize:M,items:v});se(()=>{C();const e=new URLSearchParams(i.toString());o?e.set("search",o):e.delete("search"),g(e,{replace:!0})},300,[o]);const H=ne(({direction:e,column:n})=>{const b=String(n);u(b),h(e),C(),m({sort:b,sortDirection:e})},[C,m]),{loading:U,allowed:$}=_({permission:oe}),V=T(ue),D=l(()=>({routeName:"soundcheck-campaigns",additionalAttributes:{}}),[]),{reportContentLoaded:k}=fe(D),{reporter:z}=ge(D),E=z?.getLCPValue();me(()=>{c||k({lcp:E})},[c,k,E]);const j=!c&&!N(y),G=v.length>M,W=!c&&N(y),F=c,K=o?r(ye,{title:"No campaigns found",body:"Your current search term did not return any campaigns. Please try a different search term."}):r(Ce,{});return d(I,{children:[r(q,{customActions:r(Se,{searchValue:o,setSearchValue:f,canCreate:!U&&$,createHref:V()}),title:"Campaigns"}),d(J,{className:t.container,children:[F&&r(Pe,{rowCount:10}),W&&K,j&&d(X,{onSortChange:H,sortDescriptor:{direction:s,column:a},children:[d(Z,{children:[r(p,{allowsSorting:!0,isRowHeader:!0,id:"name",style:{width:"47%"},children:"Name"}),r(p,{allowsSorting:!0,id:"status",style:{width:"10%"},children:"Status"}),r(p,{allowsSorting:!0,id:"days-remaining",style:{width:"15%"},children:"Days Remaining"}),r(p,{id:"checks",style:{width:"10%"},children:"Checks"}),r(p,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Campaign Owner"}),r(p,{id:"actions",style:{width:"3%"}})]}),r(ee,{children:y.map(e=>r(ke,{campaign:e,profileImageMap:O??{}},e.id))})]}),G&&r(te,{...x})]})]})};export{be as CampaignListPageBUI};
|
|
2
2
|
//# sourceMappingURL=CampaignListPageBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as m}from"react/jsx-runtime";import o from"./CampaignListPage/useArchiveConfirmationModal.esm.js";import{CampaignListPageBUI as r}from"./CampaignListPageBUI.esm.js";const i=()=>m(o,{children:m(r,{})});export{i as CampaignsPage};
|
|
2
2
|
//# sourceMappingURL=CampaignsPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as o,jsxs as
|
|
1
|
+
import{jsx as o,jsxs as y,Fragment as n}from"react/jsx-runtime";import{useRouteRef as s}from"@backstage/core-plugin-api";import{usePermission as R}from"@backstage/plugin-permission-react";import{HeaderPage as b}from"@backstage/ui";import{soundcheckCampaignUpdatePermission as L}from"@spotify/backstage-plugin-soundcheck-common";import{useEffect as P}from"react";import{useParams as E}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{campaignsPageRouteRef as p,campaignDetailsRouteRef as A}from"../../routes.esm.js";import{CampaignForm as D}from"../CampaignForm/CampaignForm.esm.js";import{DocLinkButton as F}from"../DocLinkButton/DocLinkButton.esm.js";import{PageWarningMessage as S}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as j}from"../SoundcheckHeader/useHeader.esm.js";import{Loading as v}from"../TechHealth/Loading/Loading.esm.js";import{EmptyCampaignState as B}from"./CampaignEmptyState.esm.js";const H=()=>{j({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}=E(),{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:L,resourceRef:i?.id});P(()=>e(a),[e,a]);const l=s(p),C=s(A);if(!m&&!i)return o(B,{});const h=async k=>{await g(k,{onSuccess:d})};return y(n,{children:[o(b,{title:`Edit ${i?.name??t??"Campaign"}`,breadcrumbs:[{label:"All Campaigns",href:l()},{label:"Details",href:C({campaignId:t??""})}],customActions:o(F,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/"})}),o(S,{entityId:i?.id,entityName:i?.name??"",showCannotEdit:!u&&!r}),m?o(v,{}):o(n,{children:r&&o(D,{onSave:h,onCancel:c,selectedCampaign:i})})]})};export{H as EditCampaignView};
|
|
2
2
|
//# sourceMappingURL=EditCampaignView.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as t,jsx as r}from"react/jsx-runtime";import{useApi as n,configApiRef as
|
|
1
|
+
import{jsxs as t,jsx as r}from"react/jsx-runtime";import{useApi as n,configApiRef as l}from"@backstage/core-plugin-api";import{Card as f,CardHeader as h,Flex as u,Text as p,CardBody as y}from"@backstage/ui";import{makeStyles as k}from"@material-ui/core";import{CheckStatusHistoryChartBUI as C}from"../../CheckPage/CheckStatusHistoryChartBUI.esm.js";import{TimePeriodBarBUI as I}from"../../TimePeriodBar/TimePeriodBarBUI.esm.js";const b=k(()=>({card:{minHeight:"15.1rem"},cardBody:{marginTop:"var(--bui-space-1)"}})),g=({checkId:a,trackId:c,filter:i,states:s,numberOfDays:o,checkStatus:d})=>{const e=b(),m=n(l).getOptionalNumber("soundcheck.certifications.history.retentionTimeInDays");return t(f,{className:e.card,children:[r(h,{children:t(u,{align:"center",justify:"between",children:[r(p,{color:"secondary",children:"Historical Status"}),r(I,{maxNumberOfDays:m})]})}),r(y,{className:e.cardBody,children:r(C,{checkId:a,trackId:c,filter:i,states:s,checkStatus:d,numberOfDays:o})})]})};export{g as HistoricalCheckStatusCard};
|
|
2
2
|
//# sourceMappingURL=HistoricalCheckStatusCard.esm.js.map
|