@spotify/backstage-plugin-soundcheck 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +69 -0
- package/config.d.ts +21 -0
- package/dist/alpha/apis.esm.js +1 -1
- package/dist/alpha/entity-content.esm.js +1 -1
- package/dist/alpha/pages.esm.js +1 -1
- package/dist/alpha/plugin.esm.js +1 -1
- package/dist/alpha.d.ts +83 -77
- package/dist/api.esm.js +1 -1
- package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
- package/dist/components/Badges/CampaignBadge.esm.js +1 -1
- package/dist/components/Badges/StatusBadge.esm.js +1 -1
- package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
- package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignTrackStepNew.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/CampaignForm/utils/validation.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +1 -1
- package/dist/components/CampaignInsightsPage/DaysRemainingTile.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
- package/dist/components/CategoryBar/CategoryBar.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
- package/dist/components/CheckDetails/FixMeDialog.esm.js +1 -1
- package/dist/components/CheckForm/CheckForm.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
- package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +1 -1
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
- package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorFactTable.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Common/CollectorConfigAlert.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Common/PortalConfigAlert.esm.js +2 -0
- package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/DependabotAlertsFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/IssuesFactDetailsInput.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.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/ColorChip/ColorChip.esm.js +2 -0
- package/dist/components/EmptyState/EmptyState.esm.js +1 -1
- package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
- package/dist/components/Expand/Expand.esm.js +1 -1
- package/dist/components/ExpandableSection/ExpandableSection.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/FactExplorerDialog.esm.js +1 -1
- package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
- package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +2 -0
- package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
- package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
- package/dist/components/Frequency/util.esm.js +1 -1
- package/dist/components/GroupHierarchySelector/GroupHierarchyCategorySelection.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchyChip.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/GroupHierarchySelectorDialog.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/getAllOwnedEntityCount.esm.js +2 -0
- package/dist/components/GroupHierarchySelector/usePreviousSelectedGroups.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/ColorLegend.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/HierarchyTable.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/LowestPerformingTeams.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/TeamPerformanceCard.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/TopPerformingTeams.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/getLeafNodes.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/LoadingOverlay.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoCirclePacking.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoHeatmap.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoIcicle.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoSunburst.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoTreemap.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/VisualizationBreadcrumb.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/findNodePath.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +2 -0
- package/dist/components/ImportExportPanel/ImportExportPanel.esm.js +1 -1
- package/dist/components/LevelsTable/LevelsTable.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
- package/dist/components/QuickstartPage/HowDoIListItem.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -1
- package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +5 -5
- package/dist/components/QuickstartPage/styles.esm.js +1 -1
- package/dist/components/RoutingPage/NewFeatureTab.esm.js +2 -0
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/SearchBar/SearchBar.esm.js +1 -1
- package/dist/components/SoundcheckEntityLink/SoundcheckEntityLink.esm.js +2 -0
- package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
- package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
- package/dist/components/TeamStatusBar/TeamStatusBar.esm.js +2 -0
- package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
- package/dist/components/TechHealth/Loading/Loading.esm.js +1 -1
- package/dist/components/TechHealth/Loading/TechHealthLoading.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/FilterControls.esm.js +2 -0
- package/dist/components/TechInsights/SummaryTiles.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsCardsView.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsTableView.esm.js +2 -0
- package/dist/components/TechInsights/TrackStatusCard.esm.js +2 -0
- package/dist/components/TechInsights/ViewModeControls.esm.js +2 -0
- package/dist/components/TechInsights/convertToCommonTrackStatus.esm.js +2 -0
- package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +2 -0
- package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
- package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TrackPage/TrackStatusBar.esm.js +1 -1
- package/dist/components/TrackPage/TrackStatusTable.esm.js +1 -1
- package/dist/components/TrackSelection/TrackSelection.esm.js +2 -0
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
- package/dist/components/TracksPage/TracksPage.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +202 -149
- package/dist/hooks/cache/useEntityCountCached.esm.js +2 -0
- package/dist/hooks/cache/useTrackCountCached.esm.js +2 -0
- package/dist/hooks/campaigns/useCreateCampaign.esm.js +1 -1
- package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityCount.esm.js +2 -0
- package/dist/hooks/catalog/useGetLimitedEntityRefs.esm.js +2 -0
- package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
- package/dist/hooks/collectors/useDeleteCollectorConfig.esm.js +2 -0
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
- package/dist/hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js +2 -0
- package/dist/hooks/heirarchy/useGroupHierarchy.esm.js +1 -1
- package/dist/hooks/heirarchy/useGroupTypeHierarchy.esm.js +2 -0
- package/dist/hooks/heirarchy/useHierarchicalTrackStatus.esm.js +1 -1
- package/dist/hooks/tracks/useCreateTrack.esm.js +1 -1
- package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
- package/dist/hooks/tracks/useGetTracksApplicableEntityCount.esm.js +2 -0
- package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +2 -0
- package/dist/hooks/useFeatureFlag.esm.js +1 -1
- package/dist/hooks/useLCPReporting.esm.js +2 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.esm.js +1 -1
- package/dist/routes.esm.js +1 -1
- package/dist/utils/colors.esm.js +1 -1
- package/dist/utils/lcpReporting.esm.js +2 -0
- package/package.json +27 -24
- package/dist/components/CheckCard/CheckCard.esm.js +0 -2
- package/dist/components/CheckCard/CheckHistoryChart.esm.js +0 -2
- package/dist/components/CheckCard/utils.esm.js +0 -2
- package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +0 -2
- package/dist/components/QuickstartPage/QuickStartChecksCard.esm.js +0 -2
- package/dist/components/QuickstartPage/QuickstartCollectorConfigurationsCard.esm.js +0 -2
- package/dist/components/QuickstartPage/QuickstartTracksCard.esm.js +0 -2
- package/dist/components/QuickstartPage/WelcomeModal.esm.js +0 -2
- package/dist/components/TechHealth/Loading/Emoji.esm.js +0 -2
- package/dist/components/TechHealth/Loading/EmojiFountain.esm.js +0 -2
- package/dist/components/TechInsights/ColorLegend.esm.js +0 -2
- package/dist/components/TechInsights/LoadingOverlay.esm.js +0 -2
- package/dist/components/TechInsights/LowestPerformingTeams.esm.js +0 -2
- package/dist/components/TechInsights/NivoCirclePacking.esm.js +0 -2
- package/dist/components/TechInsights/NivoIcicle.esm.js +0 -2
- package/dist/components/TechInsights/NivoSunburst.esm.js +0 -2
- package/dist/components/TechInsights/NivoTreemap.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/CheckComparison.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/FailingComponentsTable.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/LineChartContainer.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/MultiCheckStatusHistoryChart.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/MultiTrackHistoryChart.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/TeamComparison.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/TrackComparison.esm.js +0 -2
- package/dist/components/TechInsights/TeamPerformanceCard.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsGroupSelector.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsPage2.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsSidebar.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsViewSelector.esm.js +0 -2
- package/dist/components/TechInsights/Tiles/CheckStatusTile.esm.js +0 -2
- package/dist/components/TechInsights/Tiles/TileUtils.esm.js +0 -2
- package/dist/components/TechInsights/Tiles/TrackStatusTile.esm.js +0 -2
- package/dist/components/TechInsights/TopPerformingTeams.esm.js +0 -2
- package/dist/components/TechInsights/TrackCardGrid.esm.js +0 -2
- package/dist/components/TechInsights/TrackCardGridBox.esm.js +0 -2
- package/dist/components/TechInsights/colorContrast.esm.js +0 -2
- package/dist/components/TechInsights/hierarchy/GroupNode.esm.js +0 -2
- package/dist/components/TechInsights/hierarchy/Hierarchy.esm.js +0 -2
- package/dist/components/TechInsights/hierarchy/VirtualRow.esm.js +0 -2
- package/dist/components/TechInsights/hierarchyToNivo.esm.js +0 -2
- package/dist/components/TechInsights/persistence/FavoriteViews.esm.js +0 -2
- package/dist/components/TechInsights/styles.esm.js +0 -2
- package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +0 -2
- package/dist/hooks/aggregations/useCertificationStatusHistories.esm.js +0 -2
- package/dist/hooks/aggregations/useCertificationStatuses.esm.js +0 -2
- package/dist/hooks/aggregations/useCheckStatusByGroups.esm.js +0 -2
- package/dist/hooks/aggregations/useCheckStatusHistories.esm.js +0 -2
- package/dist/hooks/aggregations/useCheckStatusHistoriesMultiFilter.esm.js +0 -2
- package/dist/hooks/heirarchy/useGetDescendentsOfGroups.esm.js +0 -2
- package/dist/hooks/heirarchy/useRootGroups.esm.js +0 -2
- package/dist/hooks/savedViews/useDeleteView.esm.js +0 -2
- package/dist/hooks/savedViews/useSaveView.esm.js +0 -2
- package/dist/hooks/savedViews/useSavedViews.esm.js +0 -2
- /package/dist/components/{TrackPage/FilterBar → FilterSidebar}/util.esm.js +0 -0
- /package/dist/components/{TechInsights → HierarchicalTechInsightsPage}/TeamPerformanceListCard.esm.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import a from"lodash";import{TimeUnit as n}from"./types.esm.js";const i=()=>({type:"HumanDuration",unit:n.
|
|
1
|
+
import a from"lodash";import{TimeUnit as n}from"./types.esm.js";const i=()=>({type:"HumanDuration",unit:n.Days,value:1,cron:""}),m=()=>({type:"HumanDuration",unit:n.Minutes,value:15,cron:""}),s=[n.Months,n.Weeks,n.Days,n.Hours,n.Minutes,n.Seconds];function f(t){return s.includes(t)}function c(t){switch(t){case"months":return n.Months;case"weeks":return n.Weeks;case"days":return n.Days;case"hours":return n.Hours;case"minutes":return n.Minutes;case"seconds":return n.Seconds;default:return null}}function l(t){if(t){const{cron:r,type:e,unit:u,value:o}=t;return e==="HumanDuration"?{[u]:o}:{cron:r}}}function y(t){const r=i();if(t&&a.isObject(t)){if("cron"in t)return{...r,type:"cron",cron:t.cron};const e=Object.entries(t);if(e.length){const[u,o]=e[0];return{...r,unit:c(u)??n.Days,value:o}}}return r}export{s as VALID_TIME_UNITS,i as defaultFrequency,m as defaultInitialDelay,f as isTimeUnit,l as mapFrequencyToHumanDurationOrCron,y as mapHumanDurationOrCronToFrequency,c as toTimeUnit};
|
|
2
2
|
//# sourceMappingURL=util.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as m,jsx as t}from"react/jsx-runtime";import{Box as l,Typography as c}from"@material-ui/core";import{upperFirst as f,isEmpty as g}from"lodash";import{useMemo as i}from"react";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{ControlledAutocomplete as G}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{GroupHierarchyChip as x}from"./GroupHierarchyChip.esm.js";const C=({selectedGroupEntityRef:p,groupType:o,allOptions:a,selectGroup:n,isLoading:u})=>{const e=i(()=>a.filter(r=>r.type===o),[a,o]),d=i(()=>e.map(r=>r.ref),[e]),s=i(()=>e.filter(r=>r.key==="My Groups").map(r=>r.ref),[e]),y=i(()=>e.find(r=>r.ref===p)?.ref||null,[e,p]);return m(l,{maxWidth:480,marginBottom:1,children:[t(c,{variant:"subtitle2",children:f(o)}),t(G,{value:y,options:d,onChange:n,autoSelect:!1,getOptionLabel:r=>e.find(h=>h.ref===r)?.name??r,isLoading:u,placeholder:`Search all ${o}s`}),!g(s)&&m(l,{marginTop:1,children:[m(c,{variant:"subtitle2",children:["My ",f(o),"s"]}),t(l,{marginTop:1,children:s.map(r=>t(x,{selectedGroupRef:p,groupEntityRef:r,setSelectedGroup:n},r))})]})]})};export{C as GroupHierarchyCategorySelection};
|
|
2
|
+
//# sourceMappingURL=GroupHierarchyCategorySelection.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{EntityDisplayName as l}from"@backstage/plugin-catalog-react";import{Chip as p}from"@material-ui/core";const n=({groupEntityRef:o,selectedGroupRef:e,setSelectedGroup:i})=>{if(!o)return null;const t=o===e;return r(p,{onClick:t?void 0:()=>i(o),size:"small",color:t?"secondary":"default",label:r(l,{entityRef:o,disableTooltip:!0}),style:{marginBottom:6}},o)};export{n as GroupHierarchyChip};
|
|
2
|
+
//# sourceMappingURL=GroupHierarchyChip.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as r,jsx as e,Fragment as v}from"react/jsx-runtime";import{useEntityPresentation as R,EntityDisplayName as w}from"@backstage/plugin-catalog-react";import{Box as l,Typography as o}from"@material-ui/core";import{isEmpty as d}from"lodash";import{useMemo as c}from"react";import{useGroupHierarchy as B}from"../../hooks/heirarchy/useGroupHierarchy.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{ControlledAutocomplete as O}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{LoadingIndicator as T}from"../LoadingIndicator/LoadingIndicator.esm.js";import{getAllOwnedEntityCount as x}from"./getAllOwnedEntityCount.esm.js";import{GroupHierarchyChip as C}from"./GroupHierarchyChip.esm.js";const S=({filteredGroupOptions:t,setSelectedGroup:s,selectedGroupRef:m})=>{const a=c(()=>t.map(n=>n.ref),[t]),h=c(()=>t.find(n=>n.ref===m)?.ref||null,[t,m]);return r(v,{children:[!d(t)&&t.length>=20&&e(l,{marginBottom:2,children:e(O,{options:a,onChange:s,value:h,autoSelect:!1,getOptionLabel:n=>t.find(f=>f.ref===n)?.name??n,placeholder:"Search groups"})}),!d(t)&&t.length<20&&t.map(({ref:n})=>e(C,{setSelectedGroup:s,groupEntityRef:n},n))]})},H=({groupEntityRef:t,selectedGroup:s,setSelectedGroup:m,groupOptions:a})=>{const{primaryTitle:h,secondaryTitle:n}=R(t),{isLoading:f,data:b}=B(t,{includeParent:!0}),i=b?.[t],y=c(()=>x(i),[i]),g=c(()=>{const u=i?.children??{};return Object.values(u).map(p=>({ref:p.entityRef,type:p.type}))},[i?.children]),G=c(()=>{if(d(g))return[];const u=new Set(g.map(p=>p.ref));return a.filter(p=>u.has(p.ref))},[g,a]),E=c(()=>{if(d(i?.parents))return[];const u=new Set(i?.parents??[]);return a.filter(p=>u.has(p.ref))},[i?.parents,a]);return r(l,{children:[r(l,{marginBottom:1,children:[e(o,{variant:"h6",children:e(w,{entityRef:t})}),e(o,{variant:"caption",children:n})]}),f&&r(l,{textAlign:"center",marginTop:2,marginBottom:2,children:[e(T,{}),e(l,{marginTop:2,children:e(o,{variant:"caption",children:"Loading Group Hierarchy"})})]}),i?.ownedEntityRefs&&r(l,{marginBottom:2,children:[e(o,{variant:"subtitle2",children:"Entity Ownership"}),r(o,{variant:"body2",children:[r("strong",{children:[h," directly owns:"]})," ",i.ownedEntityRefs.length," ",i.ownedEntityRefs.length===0?"Entity":"Entities"]}),r(o,{variant:"body2",children:[r("strong",{children:[h," and it's subgroups own:"]})," ",y," ",y===0?"Entity":"Entities"]})]}),!f&&r(v,{children:[r(l,{marginBottom:2,children:[e(o,{variant:"subtitle2",children:"Select Child Group"}),d(G)&&e(o,{variant:"body2",children:"No child groups"}),e(S,{filteredGroupOptions:G,setSelectedGroup:m,selectedGroupRef:s})]}),r(l,{marginBottom:2,children:[e(o,{variant:"subtitle2",children:"Select Parent Group"}),d(E)&&e(o,{variant:"body2",children:"No parent groups"}),e(S,{filteredGroupOptions:E,setSelectedGroup:m,selectedGroupRef:s})]})]})]})};export{H as GroupHierarchyGroupInfo};
|
|
2
|
+
//# sourceMappingURL=GroupHierarchyGroupInfo.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as h,Fragment as y,jsx as r}from"react/jsx-runtime";import{useApi as G,configApiRef as S}from"@backstage/core-plugin-api";import{makeStyles as g,Button as R}from"@material-ui/core";import k from"@material-ui/icons/Menu";import{RiFilter3Line as A}from"@remixicon/react";import{useState as p,useCallback as n}from"react";import{GroupHierarchySelectorDialog as v}from"./GroupHierarchySelectorDialog.esm.js";import{usePreviousSelectedGroups as x}from"./usePreviousSelectedGroups.esm.js";const B=g({filterButton:{width:18}}),C=({buttonProps:s,currentSelectedGroup:o,applyGroup:i})=>{const u=B(),[c,t]=p(!1),[e,l]=p(""),{groupEntityRefs:a}=x(),m=G(S).getOptionalStringArray("soundcheck.flags")?.includes("portal")??!1,f=n(()=>{o&&l(o),t(!0)},[o]),d=n(()=>{i(e),t(!1)},[i,e]);return h(y,{children:[r(R,{onClick:f,color:"primary",variant:"outlined",...s,size:"small",startIcon:m?r(A,{className:u.filterButton}):r(k,{}),children:"Group"}),r(v,{open:c,handleClose:()=>t(!1),handleApply:d,previousGroupEntityRefs:a,selectedGroup:e,setSelectedGroup:l})]})};export{C as GroupHierarchySelector};
|
|
2
|
+
//# sourceMappingURL=GroupHierarchySelector.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,jsxs as i,Fragment as L}from"react/jsx-runtime";import{makeStyles as k,Slide as A,Dialog as E,DialogTitle as j,Box as o,IconButton as H,DialogContent as I,Typography as n,Switch as O,Divider as z,DialogActions as N,Button as b}from"@material-ui/core";import w from"@material-ui/icons/Close";import{uniq as M,isEmpty as f}from"lodash";import{forwardRef as W,useMemo as y}from"react";import P from"react-use/lib/useLocalStorage";import{useGroupOptions as q}from"../../hooks/groups/useGroupOptions.esm.js";import{useGroupTypeHierarchy as F}from"../../hooks/heirarchy/useGroupTypeHierarchy.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{ControlledAutocomplete as K}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{LoadingIndicator as Q}from"../LoadingIndicator/LoadingIndicator.esm.js";import{GroupHierarchyCategorySelection as U}from"./GroupHierarchyCategorySelection.esm.js";import{GroupHierarchyChip as G}from"./GroupHierarchyChip.esm.js";import{GroupHierarchyGroupInfo as $}from"./GroupHierarchyGroupInfo.esm.js";const J=k(l=>({dialogToolbar:{justifyContent:"flex-start"},dialogToolbarButton:{margin:l.spacing(.5,1,.5,0)},divider:{marginTop:l.spacing(2),marginBottom:l.spacing(2)}})),V=W((l,s)=>e(A,{direction:"up",ref:s,...l})),X=({open:l,handleClose:s,handleApply:C,previousGroupEntityRefs:m,selectedGroup:t,setSelectedGroup:c})=>{const u=J(),[p,x]=P("advanced-group-selector",!1),{isLoading:v,options:a}=q(),{isLoading:T,data:g}=F(),B=y(()=>{if(!g)return[];const r=[],d=h=>{r.push(h.type);for(const D of Object.values(h.children))d(D)};for(const h of Object.values(g))d(h);return M(r)},[g]),S=y(()=>a.filter(r=>r.key==="My Groups").map(r=>r.ref),[a]),R=y(()=>a.map(r=>r.ref),[a]);return i(E,{maxWidth:"md",open:l,onClose:(r,d)=>d==="escapeKeyDown"&&s(),TransitionComponent:V,children:[e(j,{children:i(o,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[e(o,{display:"flex",alignItems:"center",children:e(o,{children:"Group Selection"})}),e(o,{children:e(H,{onClick:s,size:"small",children:e(w,{fontSize:"small"})})})]})}),e(I,{dividers:!0,children:i(o,{display:"flex",children:[i(o,{minWidth:320,maxWidth:480,flex:1,children:[i(o,{marginBottom:2,children:[e(n,{variant:"h6",children:"Search All Groups"}),e(n,{variant:"subtitle2",children:"Selected Group"}),e(K,{options:R,isLoading:v,value:t,autoSelect:!1,getOptionLabel:r=>a.find(d=>d.ref===r)?.name??r,onChange:c,placeholder:"No group selected"}),i(o,{marginTop:1,display:"flex",alignItems:"center",children:[e(n,{variant:"caption",component:"div",children:"Advanced Selector"}),e(O,{onClick:()=>x(!p),checked:p,size:"small","aria-label":"toggle advanced"})]})]}),e(z,{className:u.divider}),(!t||!p)&&!f(m)&&i(o,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Previously Selected Groups"}),e(o,{marginTop:1,children:m.map(r=>e(G,{groupEntityRef:r,selectedGroupRef:t,setSelectedGroup:c},r))})]}),(!t||!p)&&!f(S)&&i(o,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"My Groups"}),e(o,{marginTop:1,children:S.map(r=>e(G,{groupEntityRef:r,selectedGroupRef:t,setSelectedGroup:c},r))})]}),p&&t&&e(o,{marginTop:2,children:e($,{groupEntityRef:t,selectedGroup:t,setSelectedGroup:c,groupOptions:a})})]}),p&&i(o,{marginLeft:3,flex:1,children:[t&&!f(m)&&e(L,{children:i(o,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Previously Selected Groups"}),e(o,{marginTop:1,children:m.map(r=>e(G,{groupEntityRef:r,selectedGroupRef:t,setSelectedGroup:c},r))})]})}),T&&i(o,{marginTop:4,marginBottom:2,children:[e(Q,{}),e(o,{marginTop:2,marginBottom:2,textAlign:"center",children:e(n,{variant:"caption",children:"Loading Hierarchy Data"})})]}),!T&&i(o,{children:[e(n,{variant:"h6",children:"Search By Group Type"}),B.map(r=>e(U,{groupType:r,selectedGroupEntityRef:t,selectGroup:c,allOptions:a,isLoading:v},r))]})]})]})}),e(N,{className:u.dialogToolbar,children:i(o,{marginLeft:2,children:[e(b,{size:"small",onClick:C,variant:"contained",color:"primary",className:u.dialogToolbarButton,disabled:!t,children:"Apply"}),e(b,{className:u.dialogToolbarButton,size:"small",onClick:s,color:"primary",children:"Cancel"})]})})]})};export{X as GroupHierarchySelectorDialog};
|
|
2
|
+
//# sourceMappingURL=GroupHierarchySelectorDialog.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback as n}from"react";import u from"react-use/lib/useLocalStorage";const c=10,i=l=>{const[o,s]=u("soundcheck-previously-selected-groups",[]),p=n(r=>{const e=o??[],t=e.indexOf(r);t>-1&&e.splice(t,1),e.unshift(r),e.length>c&&e.pop(),s(e)},[o,s]);return{groupEntityRefs:o,addGroup:p}};export{i as usePreviousSelectedGroups};
|
|
2
|
+
//# sourceMappingURL=usePreviousSelectedGroups.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as l,jsx as e}from"react/jsx-runtime";import{makeStyles as u,useTheme as b,Box as n,Typography as s}from"@material-ui/core";const y=u({container:{display:"flex",flexDirection:"column",alignItems:"center",minHeight:0},gradientBox:{borderRadius:4,margin:0,minHeight:0,width:"100%",flex:1},captionTop:{marginBottom:4},captionBottom:{marginTop:4}}),v=({interpolator:h,minLabel:d="0%",maxLabel:c="100%",width:r="100%",height:p="100%",steps:m=40,orientation:t="vertical",markerValue:o})=>{const i=y(),a=b(),g=Array.from({length:m},(k,f)=>{const z=f/(m-1);return h(z)}),x=t==="horizontal"?`linear-gradient(to right, ${g.join(",")})`:`linear-gradient(to top, ${g.join(",")})`;return l(n,{className:i.container,height:t==="horizontal"?p:void 0,width:t==="horizontal"?r:void 0,style:{flexDirection:t==="horizontal"?"row":"column",width:r,alignItems:t==="horizontal"?"flex-end":"center",position:"relative"},children:[e(s,{variant:"caption",className:i.captionTop,style:{marginRight:t==="horizontal"?8:0,marginBottom:t==="horizontal"?0:4,alignSelf:t==="horizontal"?"flex-end":"center"},children:t==="horizontal"?d:c}),l(n,{style:{position:"relative",width:t==="horizontal"?r:void 0,height:t==="horizontal"?p:void 0,zIndex:1},children:[e(n,{className:i.gradientBox,style:{background:x,width:"100%",height:"100%"}}),t==="horizontal"&&typeof o=="number"&&l(n,{style:{position:"absolute",left:`calc(${o}% - 6px)`,top:0,height:"100%",width:"12px",zIndex:3,pointerEvents:"none",display:"block"},children:[e(n,{style:{position:"absolute",left:"5.5px",top:0,width:"1px",height:"100%",background:a.palette.background.default,margin:0,boxSizing:"border-box",zIndex:1}}),e("svg",{width:"12",height:"12",style:{position:"absolute",left:0,top:"50%",transform:"translateY(-50%)",background:"transparent",pointerEvents:"none",zIndex:2},children:e("circle",{cx:"6",cy:"6",r:"5",fill:h(o/100),stroke:a.palette.background.default,strokeWidth:"1"})}),typeof o=="number"&&e(s,{variant:"caption",style:{position:"absolute",left:"50%",top:"-16px",transform:"translateX(-50%)",color:a.palette.text.secondary,pointerEvents:"none",zIndex:3,fontSize:"0.7rem"},children:`${Math.round(o)}%`})]})]}),e(s,{variant:"caption",className:i.captionBottom,style:{marginLeft:t==="horizontal"?8:0,marginBottom:t==="horizontal"?0:4,alignSelf:t==="horizontal"?"flex-end":"center"},children:t==="horizontal"?c:d})]})};export{v as ColorLegend};
|
|
2
|
+
//# sourceMappingURL=ColorLegend.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as d,Fragment as re}from"react/jsx-runtime";import{useApi as O,useRouteRef as ae,featureFlagsApiRef as Re,configApiRef as Te}from"@backstage/core-plugin-api";import{entityPresentationApiRef as we}from"@backstage/plugin-catalog-react";import{useTheme as ze,Button as Ie,Box as a,Select as oe,MenuItem as v,CircularProgress as Le,Typography as le,Tabs as Pe,Tab as ce}from"@material-ui/core";import{makeStyles as Be}from"@material-ui/core/styles";import De from"@material-ui/icons/ViewList";import{useState as w,useMemo as D,useCallback as W,useEffect as z,useRef as se}from"react";import{useSearchParams as We,useNavigate as He}from"react-router-dom";import $e from"react-use/lib/useLocalStorage";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{useGetAllTracks as Ae}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useGroupOptions as Ee}from"../../hooks/groups/useGroupOptions.esm.js";import{useHierarchicalTrackStatus as Ge}from"../../hooks/heirarchy/useHierarchicalTrackStatus.esm.js";import{useGroupHierarchy as Ue}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{useLCPReporting as je}from"../../hooks/useLCPReporting.esm.js";import{trackDetailsRouteRef as Fe,techInsightsPageRouteRef as Ve}from"../../routes.esm.js";import{getColorInterpolators as Me}from"../../utils/colors.esm.js";import{EmptyState as Oe}from"../EmptyState/EmptyState.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Ze}from"../SoundcheckHeader/useHeader.esm.js";import{TechInsightsGroupSelector as qe}from"../TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js";import{TrackEntitiesTable as Je}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackSelection as Ke}from"../TrackSelection/TrackSelection.esm.js";import{ColorLegend as Qe}from"./ColorLegend.esm.js";import{HierarchyTable as Xe}from"./HierarchyTable.esm.js";import{LowestPerformingTeams as Ye}from"./LowestPerformingTeams.esm.js";import{SelectedNodeSidebar as _e}from"./SelectedNodeSidebar.esm.js";import et from"./TopPerformingTeams.esm.js";import{NivoCirclePacking as de}from"./visualizations/NivoCirclePacking.esm.js";import"./visualizations/NivoHeatmap.esm.js";import{NivoIcicle as tt}from"./visualizations/NivoIcicle.esm.js";import{NivoSunburst as it}from"./visualizations/NivoSunburst.esm.js";import{NivoTreemap as nt}from"./visualizations/NivoTreemap.esm.js";import{VisualizationBreadcrumb as rt}from"./visualizations/VisualizationBreadcrumb.esm.js";import{hierarchyToNivo as me}from"./visualizations/hierarchyToNivo.esm.js";const ue=Be(i=>({root:{display:"flex",flexDirection:"column",height:"100%",padding:i.spacing(2,4)},mainContent:{flex:1,display:"flex",flexDirection:"column",minHeight:0},controlsContainer:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:i.spacing(2)},leftControls:{display:"flex",gap:i.spacing(1.5),alignItems:"center"},rightControls:{display:"flex",gap:i.spacing(2),alignItems:"center"},trackSelect:{minWidth:200},visualizationSelect:{minWidth:120},colorSchemeSelect:{minWidth:80},visualizationContainer:{flex:1,display:"flex",flexDirection:"column",gap:i.spacing(.5),width:"100%"},visualizationHeader:{display:"flex",justifyContent:"flex-end",alignItems:"center",marginBottom:i.spacing(2)},visualizationBox:{flex:1,minHeight:500},visualizationWrapper:{display:"flex",flexDirection:"row",height:"calc(100% - 56px)"},colorLegendContainer:{marginLeft:i.spacing(2),display:"flex",alignItems:"center"},colorLegendWrapper:{width:300},visualizationContent:{flex:1},loadingContainer:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",minHeight:500,backgroundColor:i.palette.background.default,borderRadius:i.shape.borderRadius},loadingSpinner:{marginBottom:i.spacing(2)},loadingText:{color:i.palette.text.secondary,fontSize:"1.1rem",fontWeight:500,textAlign:"center"},loadingSubtext:{color:i.palette.text.secondary,fontSize:"0.875rem",opacity:.8,textAlign:"center",marginTop:i.spacing(1)},summaryContainer:{display:"flex",flexDirection:"row",width:"100%",minHeight:300,padding:24},summaryBox:{flex:1,minWidth:0,display:"flex",flexDirection:"column"},summaryBoxLeft:{marginRight:i.spacing(1)},summaryBoxRight:{marginLeft:i.spacing(1)},entitiesContainer:{padding:24},tabsContainer:{width:"100%",marginTop:8},layoutContainer:{display:"flex",height:"100%"},mainLayout:{flex:3,display:"flex",flexDirection:"column",minWidth:0},mainLayoutTable:{flex:1,display:"flex",flexDirection:"column",minWidth:0},sidebarCollapsed:{width:0},sidebarTransition:{transition:"width 0.25s",height:"100%"},sidebarContainer:{height:"100%",marginLeft:24,borderLeft:`1px solid ${i.palette.divider}`,paddingLeft:24},breadcrumbContainer:{flex:1,marginRight:16},input:{backgroundColor:i.palette.background.paper}}));function he({interpolator:i,width:b=100,height:p=16,steps:o=40,style:l={}}){const g=`linear-gradient(to right, ${Array.from({length:o},(c,I)=>{const r=I/(o-1);return i(r)}).join(",")})`;return t(a,{style:{width:b,height:p,background:g,borderRadius:4,...l}})}function pe(i){const{children:b,value:p,index:o,...l}=i,g=ue();return t("div",{role:"tabpanel",hidden:p!==o,id:`tabpanel-${o}`,"aria-labelledby":`tab-${o}`,className:g.mainContent,...l,children:p===o&&b})}const at=()=>{const i=ue(),b=ze(),p=O(we),[o,l]=We(),g=o.get("track")||"",[c,I]=w(g),r=o.get("group"),H=o.get("node"),[Z,$]=w(null),[A,ge]=w(0),E=He(),fe=ae(Fe),q=ae(Ve),[ye,x]=w(null),[u,k]=w(null),J=O(Re),K=O(Te);je({routeName:"soundcheck-tech-insights-track",additionalAttributes:{trackId:c,group:r||"",visualization:o.get("visualization")||"table"}});const xe=D(()=>t(Ie,{variant:"contained",color:"primary",startIcon:t(De,{}),onClick:()=>{E(q())},children:"All Tracks"}),[q,E]);Ze({title:"Tech Insights",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tech-insights",sectionRight:xe});const{data:Ce}=Ae({}),s=Ce?.edges.find(e=>e.node.id===c)?.node,{data:S,isLoading:Q}=Ue(r||void 0,{enabled:!!r&&!!c&&!!s,ownedEntitiesFilter:s?.filter??void 0}),{data:f}=Ge({trackId:c,groupRef:r||"",skip:!c||!r}),ve=D(()=>s?.levels?s.levels.flatMap(e=>e.checks.map(n=>n.id)):[],[s]),C=o.get("visualization")||"table",X=o.get("colors")||"default",G=W((e,n)=>{if(e.entityRef===n)return e;if(e.children)for(const m of e.children){const ne=G(m,n);if(ne)return ne}return null},[]);z(()=>{if(H&&S&&r&&f&&s){const e=S[r];if(e){const n=me(e,f||null,()=>"#ccc",p,void 0);if(n){const m=G(n,H);m&&(k(m),x(m))}}}},[H,S,r,f,s,G,p]);const U=W(e=>{k(e),x(e);const n=new URLSearchParams(o.toString());e&&e.entityRef!==r?n.set("node",e.entityRef):n.delete("node"),l(n,{replace:!0})},[o,l,r]),{options:h,isLoading:N}=Ee(),[j,L]=$e("soundcheck.overview.groupRef",null),R=r,F=K.getOptionalString("soundcheck.overview.defaultSelectedGroupType"),P=D(()=>{if(!N&&h.length){if(R||j){const e=R??j;return h.find(n=>n.ref===e)??h[0]}else if(F)return h.find(e=>e.type===F)??h[0];return h[0]}return null},[F,N,h,R,j]);z(()=>{if(!N&&h.length&&!R&&P){const e=new URLSearchParams(o.toString());e.set("group",P.ref),l(e,{replace:!0}),L(P.ref)}},[N,h,R,P,o,l,L]);const Y=W(e=>{I(e);const n=new URLSearchParams(o.toString());n.set("track",e),r&&n.delete("group"),n.delete("node"),l(n),k(null),x(null)},[o,r,l]),_=se(null),T=W(()=>{k(null),x(null),$(null);const e=new URLSearchParams(o.toString());e.delete("node"),l(e,{replace:!0})},[o,l]),V=se(null);z(()=>{V.current&&V.current!==C&&T(),V.current=C},[C,T]),z(()=>{r&&r!==_.current&&T(),_.current=r},[r,T]),z(()=>{c!==g&&I(g)},[g]);const be=e=>{const n=e.target.value;if(n!==null){const m=new URLSearchParams(o.toString());m.set("visualization",n),l(m),$(null)}},ke=e=>{const n=new URLSearchParams(o.toString());n.set("colors",e.target.value),l(n)},Se=(e,n)=>{ge(n)},B=e=>{if(!c)return;const n=fe({trackId:c});E(`${n}?owners=${encodeURIComponent(e)}`)},M=Me(b),ee=M.find(e=>e.value===X)?.interpolator??(e=>"#ccc"),y=e=>ee(e/100),Ne=()=>{if(!r||!c||!s)return null;const e={trackId:c,groupRef:r,track:s,hierarchyData:S,trackStatus:f,getColor:y,onZoomChange:$,onNodeHover:n=>x(n),hoveredNode:ye,selectedNode:u,onNodeSelect:U};switch(C){case"treemap":return t(nt,{...e});case"icicle":return t(tt,{...e});case"sunburst":return t(it,{...e});case"circlepack":return t(de,{...e});case"table":{const n=S?.[r];if(!n)return null;const m=me(n,f||null,y,p,void 0);return t(Xe,{hierarchyData:m??null,getColor:y,selectedNode:u,onNodeSelect:U,trackStatus:f,onTeamClick:B})}default:return t(de,{...e})}},te=(!J.getRegisteredFlags().find(e=>e.name==="soundcheck-enable-tech-insights-visualizations")||J.isActive("soundcheck-enable-tech-insights-visualizations"))&&K.getOptionalBoolean("soundcheck.techInsights.showExperimentalVisualizations"),ie=D(()=>d(re,{children:[t(qe,{onChange:e=>{k(null),x(null),L(e)}}),t(a,{minWidth:320,children:t(Ke,{selectedTrackId:c,selectTrack:Y,selectedGroupRef:r??""})})]}),[Y,r,c,L]);return!(N||Q)&&(!s||!r)?t(a,{className:i.root,children:t(Oe,{title:"No Group or Track Selected",description:"Select a group and track in order to view insights.",action:t(a,{display:"flex",flexDirection:"column",gridGap:12,children:ie})})}):t(a,{className:i.root,children:d(a,{className:i.layoutContainer,children:[t(a,{className:i.mainLayout,children:d(a,{className:i.mainContent,children:[d(a,{className:i.controlsContainer,children:[t(a,{className:i.leftControls,children:ie}),te&&d(a,{className:i.rightControls,children:[t(a,{className:i.visualizationSelect,children:d(oe,{className:i.input,value:C,onChange:be,displayEmpty:!0,fullWidth:!0,"aria-label":"visualization select",margin:"dense",placeholder:"Visualization",variant:"outlined",children:[t(v,{value:"circlepack",children:"Circle Pack"}),t(v,{value:"icicle",children:"Icicle"}),t(v,{value:"sunburst",children:"Sunburst"}),t(v,{value:"treemap",children:"Treemap"}),t(v,{value:"table",children:"Table"})]})}),t(a,{className:i.colorSchemeSelect,children:t(oe,{className:i.input,value:X,fullWidth:!0,"aria-label":"color schema",onChange:ke,margin:"dense",placeholder:"Color Scheme",variant:"outlined",renderValue:e=>{const n=M.find(m=>m.value===e)?.interpolator;return t(a,{display:"flex",alignItems:"center",pr:3,children:typeof n=="function"&&t(he,{interpolator:n,width:90,height:20})})},children:M.map(e=>t(v,{value:e.value,children:t(a,{display:"flex",alignItems:"center",children:e.interpolator&&t(he,{interpolator:e.interpolator,width:90,height:20})})},e.value))})})]})]}),c&&r&&d(re,{children:[d(a,{className:i.visualizationContainer,minHeight:C!=="table"?400:void 0,children:[d(a,{mb:.5,display:"flex",alignItems:"center",children:[t(a,{className:i.breadcrumbContainer,children:t(rt,{node:u,onNodeClick:e=>{U(e)}})}),te&&t(a,{className:i.colorLegendWrapper,children:t(Qe,{interpolator:ee,orientation:"horizontal",height:24,width:"100%",markerValue:u?u.passPercentage:void 0})})]}),t(a,{className:i.visualizationContent,children:Q?d(a,{className:i.loadingContainer,children:[t(Le,{className:i.loadingSpinner,size:48}),t(le,{className:i.loadingText,children:"Loading organization hierarchy..."}),t(le,{className:i.loadingSubtext,children:"This may take a few moments while we gather data about your organization."})]}):Ne()})]}),d(a,{className:i.tabsContainer,children:[d(Pe,{value:A,onChange:Se,indicatorColor:"primary",textColor:"primary",children:[t(ce,{label:"Summary"}),t(ce,{label:"Entities"})]}),t(pe,{value:A,index:0,children:d(a,{className:i.summaryContainer,children:[t(a,{className:`${i.summaryBox} ${i.summaryBoxLeft}`,children:t(Ye,{trackStatus:f||null,getColor:y,onTeamClick:B})}),t(a,{className:`${i.summaryBox} ${i.summaryBoxRight}`,children:t(et,{trackStatus:f||null,getColor:y,onTeamClick:B})})]})}),t(pe,{value:A,index:1,children:t(a,{className:i.entitiesContainer,children:s&&t(Je,{track:s,initialPageSize:10,owners:u&&u.entityRef!==r?[u.entityRef]:Z?[Z]:[r],getColor:y})})})]})]})]})}),t(a,{className:i.sidebarTransition,width:u?360:0,children:t(a,{className:i.sidebarContainer,children:u&&t(_e,{node:u,clearSelectedNode:T,checkIds:ve,track:s,getColor:y,onTeamClick:B})})})]})})};export{at as HierarchicalTechInsightsPage};
|
|
2
|
+
//# sourceMappingURL=HierarchicalTechInsightsPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as f,jsx as t}from"react/jsx-runtime";import{useApi as q}from"@backstage/core-plugin-api";import{entityPresentationApiRef as G}from"@backstage/plugin-catalog-react";import{makeStyles as J,Typography as R,TableContainer as K,Paper as Q,Table as X,TableHead as Y,TableRow as E,TableCell as m,TableSortLabel as w,TableBody as Z,Box as k,Link as ee,TablePagination as te}from"@material-ui/core";import ne from"@material-ui/icons/ArrowDownward";import ae from"@material-ui/icons/ArrowUpward";import{useState as C,useEffect as re,useMemo as I}from"react";import{useSearchParams as ie}from"react-router-dom";import{ColorChip as oe}from"../ColorChip/ColorChip.esm.js";import{TeamStatusBar as le}from"../TeamStatusBar/TeamStatusBar.esm.js";const se=J(n=>({tableContainer:{display:"flex",flexDirection:"column",height:"100%"},selectedRow:{backgroundColor:n.palette.action.hover},table:{"& tbody tr":{cursor:"pointer","&:hover":{backgroundColor:n.palette.action.hover}},"& tbody tr.selected":{backgroundColor:n.palette.action.selected,"&:hover":{backgroundColor:n.palette.action.selected}}},headerCell:{cursor:"pointer"},headerContent:{display:"flex",alignItems:"center"},sortIconContainer:{width:"24px",display:"flex",justifyContent:"center"},sortIcon:{fontSize:"20px"},tableContainerPaper:{boxShadow:"none"},title:{paddingBottom:"8px"},chevronIcon:{fontSize:"20px"},chevronCell:{verticalAlign:"middle",padding:"8px 4px",lineHeight:1},placeholderDiv:{width:"20px",height:"20px",display:"inline-block"},statusColumnHeader:{width:"300px"},statusColumnCell:{width:"100%"},groupDisplayName:{lineHeight:"24px",fontWeight:"bold"}})),ce=n=>{const p=[],c=o=>{!o.children||o.children.length===0?o.numberOfEntities>0&&p.push(o):o.children.forEach(y=>c(y))};return c(n),p},O=(n,p)=>{if(!n||typeof n!="object")return null;if(n.groupRef===p)return n.status;if(n.children&&Array.isArray(n.children))for(const c of n.children){const o=O(c,p);if(o)return o}return null},de=({hierarchyData:n,getColor:p,selectedNode:c,onNodeSelect:o,onTeamClick:y,trackStatus:z})=>{const i=se(),A=q(G),[u,N]=ie(),[b,S]=C(0),[g,B]=C(10),L=u.get("sortBy"),D=u.get("direction"),[l,H]=C(L||"passPercentage"),[s,j]=C(D||"asc");re(()=>{const e=new URLSearchParams(u.toString());e.set("sortBy",l),e.set("direction",s),N(e,{replace:!0})},[l,s,u,N]);const P=I(()=>n?ce(n):[],[n]),T=I(()=>P.map(e=>({id:e.entityRef,name:e.name,entityRef:e.entityRef,passPercentage:e.passPercentage,numberOfEntities:e.numberOfEntities})).sort((e,d)=>{let a,r;switch(l){case"name":a=e.name.toLowerCase(),r=d.name.toLowerCase();break;case"passPercentage":a=e.passPercentage,r=d.passPercentage;break;case"numberOfEntities":a=e.numberOfEntities,r=d.numberOfEntities;break;default:return 0}return typeof a=="number"&&typeof r=="number"?s==="asc"?a-r:r-a:typeof a=="string"&&typeof r=="string"?s==="asc"?a.localeCompare(r):r.localeCompare(a):s==="asc"?a<r?-1:a>r?1:0:a>r?-1:a<r?1:0}),[P,l,s]);if(!n)return null;const M=e=>{if(o)if(c&&e.entityRef===c.entityRef)o(null);else{const d=P.find(a=>a.entityRef===e.entityRef);o(d||null)}},U=(e,d)=>{S(d)},V=e=>{B(parseInt(e.target.value,10)),S(0)},v=e=>{j(l===e&&s==="asc"?"desc":"asc"),H(e)},x=e=>e.direction==="asc"?t(ae,{...e,fontSize:"small"}):t(ne,{...e,fontSize:"small"}),W=T.slice(b*g,b*g+g);return f("div",{className:i.tableContainer,children:[t(R,{variant:"h6",className:i.title,children:"Teams"}),t(K,{component:Q,className:i.tableContainerPaper,children:f(X,{size:"small",children:[t(Y,{children:f(E,{children:[t(m,{className:i.headerCell,width:"35%",children:t(w,{active:l==="name",direction:l==="name"?s:"desc",onClick:()=>v("name"),IconComponent:x,children:t("div",{className:i.headerContent,children:"Team"})})}),t(m,{className:i.headerCell,width:"15%",children:t(w,{active:l==="numberOfEntities",direction:l==="numberOfEntities"?s:"desc",onClick:()=>v("numberOfEntities"),IconComponent:x,children:t("div",{className:i.headerContent,children:"Entities"})})}),t(m,{className:i.headerCell,width:"25%",children:t(w,{active:l==="passPercentage",direction:l==="passPercentage"?s:"desc",onClick:()=>v("passPercentage"),IconComponent:x,children:t("div",{className:i.headerContent,children:"Compliance"})})}),t(m,{className:i.statusColumnHeader,width:"25%"})]})}),t(Z,{children:W.map(e=>{const d=c&&e.entityRef===c.entityRef,a=A.forEntity(e.entityRef),r=a.snapshot.Icon,F=a.snapshot.primaryTitle||e.entityRef,h=O(z||null,e.entityRef),_=(h?.passed??0)+(h?.failed??0)+(h?.warning??0)+(h?.error??0)+(h?.notReported??0);return f(E,{hover:!0,onClick:()=>M(e),className:d?i.selectedRow:"",style:{cursor:"pointer"},children:[t(m,{style:{verticalAlign:"middle"},children:f(k,{display:"flex",alignItems:"center",height:"100%",children:[r&&t(k,{marginRight:1,display:"flex",alignItems:"center",height:"24px",children:t(r,{fontSize:"small"})}),t(ee,{component:"button",onClick:$=>{$.stopPropagation(),y?.(e.entityRef)},children:t(R,{variant:"body2",className:i.groupDisplayName,children:F})})]})}),t(m,{children:t(R,{variant:"body2",children:e.numberOfEntities.toLocaleString()})}),t(m,{children:t(oe,{value:h&&_>0?`${Math.round(e.passPercentage)}%`:"N/A",getColor:p,numericValue:e.passPercentage,size:"medium"})}),t(m,{children:t(k,{className:i.statusColumnCell,children:t(le,{status:h})})})]},e.id)})})]})}),t(te,{rowsPerPageOptions:[10,25,50],component:"div",count:T.length,rowsPerPage:g,page:b,onPageChange:U,onRowsPerPageChange:V})]})};export{de as HierarchyTable};
|
|
2
|
+
//# sourceMappingURL=HierarchyTable.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{useApi as f}from"@backstage/core-plugin-api";import{entityPresentationApiRef as u}from"@backstage/plugin-catalog-react";import{useTheme as c}from"@material-ui/core";import{useMemo as P}from"react";import{getLeafNodes as d}from"./getLeafNodes.esm.js";import{TeamPerformanceListCard as m}from"./TeamPerformanceListCard.esm.js";const C=({trackStatus:t,getColor:r,limit:i=3,onTeamClick:a})=>{const s=c(),n=f(u),l=P(()=>t?d(t):[],[t]);if(!t)return o(m,{title:"Teams Needing Attention",titleColor:s.palette.error.main,teams:[],getColor:r,onTeamClick:a,emptyMessage:"Loading team performance data..."});const p=l.filter(e=>e.status.passed+e.status.failed+e.status.warning+e.status.error+e.status.notReported>0&&(e.status.allPassPercentage??0)<50&&!e.children?.length).sort((e,g)=>(e.status.allPassPercentage??0)-(g.status.allPassPercentage??0)).slice(0,i).map(e=>({groupRef:e.groupRef,teamName:n.forEntity(e.groupRef).snapshot.primaryTitle,passPercentage:e.status.allPassPercentage??0}));return o(m,{title:"Teams Needing Attention",titleColor:s.palette.error.main,teams:p,getColor:r,onTeamClick:a,emptyMessage:"Every team is performing above 50%! \u{1F389}"})};export{C as LowestPerformingTeams};
|
|
2
|
+
//# sourceMappingURL=LowestPerformingTeams.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as r,jsx as t}from"react/jsx-runtime";import{Link as U}from"@backstage/core-components";import{useApi as F,useRouteRef as Y}from"@backstage/core-plugin-api";import{entityPresentationApiRef as _}from"@backstage/plugin-catalog-react";import{makeStyles as q,useTheme as G,Box as i,Link as J,Typography as l,Chip as K,IconButton as z,CircularProgress as T,Tooltip as Q}from"@material-ui/core";import X from"@material-ui/icons/Close";import Z from"@material-ui/icons/ExpandLess";import ee from"@material-ui/icons/ExpandMore";import{useState as te,useEffect as oe,useCallback as ae}from"react";import{useSearchParams as ie}from"react-router-dom";import{useCheckStatuses as ne}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{trackCheckDetailsRouteRef as re}from"../../routes.esm.js";import{getContrastTextColor as R,getCheckStatusColor as le}from"../../utils/colors.esm.js";import{ColorChip as B}from"../ColorChip/ColorChip.esm.js";const se=q(e=>({checkLinkText:{color:"inherit",textDecoration:"none"},emptyStateIcon:{fontSize:e.typography.h3.fontSize,color:e.palette.text.secondary,opacity:.4,marginBottom:12},emptyStateText:{color:e.palette.text.secondary,textAlign:"center"},checksContainer:{flex:1,overflowY:"auto",minHeight:0},checksTitle:{fontWeight:"bold",marginBottom:4},levelHeader:{display:"flex",alignItems:"center",cursor:"pointer"},levelLabel:{fontWeight:"bold",letterSpacing:1,color:e.palette.text.secondary,marginBottom:2,flex:1},expandIcon:{fontSize:e.typography.body2.fontSize,color:e.palette.text.secondary},progressContainer:{display:"flex",alignItems:"center",justifyContent:"flex-start",marginBottom:16},progressWrapper:{position:"relative",display:"inline-flex"},progressBackground:{position:"absolute",color:e.palette.divider},progressText:{position:"absolute",top:0,left:0,bottom:0,right:0,display:"flex",alignItems:"center",justifyContent:"center",fontSize:e.typography.body1.fontSize,fontWeight:"bold"},checkName:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis","&:hover":{textDecoration:"underline"}},checkMessage:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},statusChip:{fontSize:e.typography.caption.fontSize,height:22,borderRadius:12,marginLeft:8,marginBottom:0},secondaryTitle:{display:"-webkit-box",WebkitLineClamp:5,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",marginBottom:8,marginTop:2,lineHeight:1.4,paddingBottom:4},entityCount:{fontSize:e.typography.caption.fontSize},entityLabel:{fontSize:e.typography.caption.fontSize},entityContainer:{display:"flex",alignItems:"center",marginBottom:16},titleContainer:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:.5},titleContent:{display:"flex",alignItems:"center",minWidth:0},titleStatus:{display:"flex",alignItems:"center"},titleIcon:{display:"flex",alignItems:"center",marginRight:8},titleText:{minWidth:0,fontWeight:"bold"},emptyStateContainer:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",marginTop:2,marginBottom:1},tooltip:{color:e.palette.text.primary,fontSize:e.typography.caption.fontSize,borderRadius:e.shape.borderRadius,padding:e.spacing(1)},tooltipItem:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:e.spacing(.5)},tooltipCategory:{display:"flex",alignItems:"center",flex:1,fontSize:e.typography.body2.fontSize,marginRight:e.spacing(2)},tooltipValue:{fontSize:e.typography.body2.fontSize,color:e.palette.text.primary}})),L=e=>new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(e),ce=({node:e,clearSelectedNode:W,checkIds:h,track:c,getColor:k,onTeamClick:A})=>{const f=G(),o=se(),P=F(_),S=Y(re),[j]=ie(),[O,N]=te(()=>c?.levels?new Set(c.levels.map(a=>a.ordinal)):new Set),g=e?P.forEntity(e.entityRef):void 0;oe(()=>{if(c?.levels){const a=new Set(c.levels.map(m=>m.ordinal));N(a)}},[c?.levels]);const D=a=>{N(m=>{const n=new Set(m);return n.has(a)?n.delete(a):n.add(a),n})},E=a=>a<50?{label:"Needs Attention",color:f.palette.error.main,textColor:R(f.palette.error.main)}:a<80?null:{label:"Healthy",color:f.palette.success.main,textColor:R(f.palette.success.main)},H=ae(a=>{switch(a){case"not-applicable":case"notApplicable":return"Not Applicable";case"not-reported":case"notReported":return"Not Reported";default:return a.charAt(0).toUpperCase()+a.slice(1)}},[]),M=(a,m)=>{const n=a.numberOfEntities-a.notApplicable-a.exempt,y=a.passed,u=a.failed,C=a.warning,d=a.error,s=a.notReported,x=[{name:"passed",value:y},{name:"failed",value:u},{name:"warning",value:C},{name:"error",value:d},{name:"not-reported",value:s}].filter(p=>p.value>0);return r("div",{className:o.tooltip,children:[t(l,{variant:"caption",style:{fontWeight:"bold",marginBottom:8,display:"block"},children:m.name}),x.map((p,v)=>r("div",{className:o.tooltipItem,children:[r("div",{className:o.tooltipCategory,children:[t("span",{style:{width:12,height:4,borderRadius:2,backgroundColor:le(f,p.name),marginRight:8}}),t(l,{variant:"caption",children:H(p.name)})]}),t("div",{className:o.tooltipValue,children:r(l,{variant:"caption",children:[p.value," of ",L(n)," (",Math.round(p.value/n*100),"%)"]})})]},v))]})},I=ne(e&&h&&h.length?{checkIds:h,trackId:c?.id,filter:{"relations.ownedBy":[e.entityRef]}}:{checkIds:[]},!!(e&&h&&h.length)),b=E(e.passPercentage),V=()=>{if(!c?.levels||h.length===0)return t(i,{mt:2,children:t(l,{variant:"body2",color:"textSecondary",children:"No checks found for this entity."})});const a=c.levels,m=(I.data||[]).reduce((n,y)=>(n[y.id]=y,n),{});return r(i,{mt:2,className:o.checksContainer,children:[t(l,{variant:"subtitle2",className:o.checksTitle,children:"Checks"}),a.map(n=>{const y=n.name??`Level ${n.ordinal}`,u=n.ordinal,C=O.has(u);return r(i,{mb:1,children:[r(i,{className:o.levelHeader,onClick:()=>D(u),children:[t(l,{variant:"overline",className:o.levelLabel,children:y}),t(z,{size:"small",className:o.expandIcon,children:C?t(Z,{}):t(ee,{})})]}),C&&n.checks.map(d=>{const s=m[d.id],x=s?s.numberOfEntities-s.notApplicable-s.exempt:0,p=s&&x>0?Math.round(s.passed/x*100):0;let v;if(c&&S&&e){const $=S({trackId:c.id,checkId:d.id}),w=new URLSearchParams(j.toString());w.set("owners",e.entityRef),v=`${$}?${w.toString()}`}return r(i,{display:"flex",alignItems:"center",mb:.5,children:[t(i,{mr:1,display:"flex",children:I.isLoading?t(B,{value:"",getColor:()=>f.palette.divider,numericValue:0,size:"small"}):t(Q,{title:s?M(s,d):"",placement:"top",arrow:!0,classes:{tooltip:o.tooltip},children:t(i,{children:t(B,{value:s&&x>0?`${p}%`:"N/A",getColor:k,numericValue:p,size:"small"})})})}),t(i,{flex:1,minWidth:0,children:v?t(U,{to:v,style:{color:"inherit",textDecoration:"none"},className:o.checkLinkText,children:t(l,{variant:"body2",className:o.checkName,children:d.name})}):t(l,{variant:"body2",className:o.checkName,children:d.name})})]},d.id)})]},u)})]})};return r(i,{children:[r(i,{className:o.titleContainer,children:[r(i,{className:o.titleContent,children:[g?.snapshot.Icon&&t(i,{component:"span",className:o.titleIcon,children:t(g.snapshot.Icon,{fontSize:"small"})}),t(J,{component:"button",onClick:()=>A?.(e.entityRef),noWrap:!0,children:t(l,{variant:"h6",noWrap:!0,className:o.titleText,children:g?.snapshot.primaryTitle||e.name})})]}),r(i,{className:o.titleStatus,children:[b&&t(K,{label:b.label,style:{background:b.color,color:b.textColor},className:o.statusChip,size:"small"}),t(z,{onClick:W,size:"small",children:t(X,{})})]})]}),g?.snapshot.secondaryTitle&&t(l,{variant:"caption",color:"textSecondary",className:o.secondaryTitle,children:g.snapshot.secondaryTitle}),t(i,{className:o.entityContainer,children:r(l,{variant:"body2",color:"textSecondary",className:o.entityLabel,children:["Entities:"," ",t("span",{className:o.entityCount,children:L(e.numberOfEntities)})]})}),t(i,{className:o.progressContainer,children:r(i,{className:o.progressWrapper,children:[t(T,{variant:"determinate",value:100,size:80,thickness:6,className:o.progressBackground}),t(T,{variant:"determinate",value:e.passPercentage,size:80,thickness:6,style:{color:k(e.passPercentage)}}),r(l,{className:o.progressText,children:[Math.round(e.passPercentage),"%"]})]})}),t(V,{})]})};export{ce as SelectedNodeSidebar};
|
|
2
|
+
//# sourceMappingURL=SelectedNodeSidebar.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as s,jsx as o}from"react/jsx-runtime";import{useApi as g}from"@backstage/core-plugin-api";import{entityPresentationApiRef as y}from"@backstage/plugin-catalog-react";import{makeStyles as x,Box as n,Typography as p}from"@material-ui/core";import{useTheme as C}from"@material-ui/core/styles";import{getContrastTextColor as u}from"../../utils/colors.esm.js";import{ColorChip as b}from"../ColorChip/ColorChip.esm.js";const T=x(t=>({card:{display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:t.palette.background.paper,borderRadius:8,padding:t.spacing(1,2),marginBottom:0,boxShadow:"none",width:"100%",cursor:"pointer"},cardContent:{flex:1,minWidth:0},titleRow:{display:"flex",alignItems:"center"},icon:{display:"flex",alignItems:"center",marginRight:t.spacing(1)},title:{fontWeight:"bold"},secondaryTitle:{display:"block",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},chipContainer:{marginLeft:t.spacing(2),flexShrink:0}})),w=({teamName:t,passPercentage:i,getColor:l,entityRef:c,onClick:a})=>{const d=C(),e=T(),m=g(y),h=l(i),f=u(d.palette.background.paper),r=m.forEntity(c);return s(n,{className:e.card,style:{color:f,border:`1px solid ${h}`,cursor:a?"pointer":void 0},onClick:a?()=>a(c):void 0,tabIndex:a?0:-1,children:[s(n,{className:e.cardContent,children:[s(n,{className:e.titleRow,children:[r?.snapshot.Icon&&o(n,{component:"span",className:e.icon,children:o(r.snapshot.Icon,{})}),o(p,{variant:"subtitle1",className:e.title,children:r?.snapshot.primaryTitle||t})]}),r?.snapshot.secondaryTitle&&o(p,{variant:"caption",color:"textSecondary",className:e.secondaryTitle,children:r.snapshot.secondaryTitle})]}),o(n,{className:e.chipContainer,children:o(b,{value:`${i}%`,getColor:l,numericValue:i})})]})};export{w as TeamPerformanceCard};
|
|
2
|
+
//# sourceMappingURL=TeamPerformanceCard.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{useApi as u}from"@backstage/core-plugin-api";import{entityPresentationApiRef as f}from"@backstage/plugin-catalog-react";import{useTheme as g}from"@material-ui/core";import{useMemo as P}from"react";import{getLeafNodes as d}from"./getLeafNodes.esm.js";import{TeamPerformanceListCard as m}from"./TeamPerformanceListCard.esm.js";const T=({trackStatus:t,getColor:s,limit:i=3,onTeamClick:a})=>{const r=g(),l=u(f),n=P(()=>t?d(t):[],[t]);if(!t)return o(m,{title:"Top Performing Teams",titleColor:r.palette.success.main,teams:[],getColor:s,onTeamClick:a,emptyMessage:"Loading team performance data..."});const p=n.filter(e=>e.status.passed+e.status.failed+e.status.warning+e.status.error+e.status.notReported>0&&(e.status.allPassPercentage??0)>=80&&!e.children?.length).sort((e,c)=>(c.status.allPassPercentage??0)-(e.status.allPassPercentage??0)).slice(0,i).map(e=>({groupRef:e.groupRef,teamName:l.forEntity(e.groupRef).snapshot.primaryTitle,passPercentage:e.status.allPassPercentage??0}));return o(m,{title:"Top Performing Teams",titleColor:r.palette.success.main,teams:p,getColor:s,onTeamClick:a,emptyMessage:"No teams have reached the 80% mark yet, keep pushing!"})};export{T as default};
|
|
2
|
+
//# sourceMappingURL=TopPerformingTeams.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as g,jsxs as h}from"react/jsx-runtime";import{makeStyles as d,Box as u,Typography as p}from"@material-ui/core";const f=d(e=>({overlay:{position:"absolute",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.7)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3},messageContainer:{textAlign:"center",padding:e.spacing(2)},mainMessage:{color:e.palette.common.white,fontSize:"1.5rem",marginBottom:e.spacing(2)},statsMessage:{color:e.palette.common.white,fontSize:"0.875rem",opacity:.8}})),l=e=>new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(e),m=(e,a,s)=>e===1?a:s,y=(e,a)=>{if(!e)return{teams:0,entities:0,checks:0};let s=0,t=0;const n=i=>{s+=1,t+=i.ownedEntityRefs?.length||0,Object.values(i.children||{}).forEach(c=>{n(c)})},o=Object.values(e)[0];o&&n(o);const r=a?.levels?.reduce((i,c)=>i+(c.checks?.length||0),0)||0;return{teams:s,entities:t,results:r*t}},x=({isLoading:e,hierarchyData:a,track:s})=>{const t=f();if(!e)return null;const{teams:n,entities:o,results:r}=y(a,s);return g(u,{className:t.overlay,children:h(u,{className:t.messageContainer,children:[g(p,{className:t.mainMessage,children:"Calculating..."}),h(p,{className:t.statsMessage,children:["Aggregating the statuses for ",l(n||0)," ",m(n||0,"team","teams")," owning"," ",l(o||0)," ",m(o||0,"entity","entities")," across"," ",l(r||0)," check"," ",m(r||0,"result","results")]})]})})};export{x as LoadingOverlay};
|
|
2
|
+
//# sourceMappingURL=LoadingOverlay.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as I,jsx as n,Fragment as S}from"react/jsx-runtime";import{useApi as w}from"@backstage/core-plugin-api";import{entityPresentationApiRef as P}from"@backstage/plugin-catalog-react";import{useTheme as E}from"@material-ui/core";import{makeStyles as L}from"@material-ui/core/styles";import{ResponsiveCirclePacking as T}from"@nivo/circle-packing";import{useState as j,useEffect as z,useMemo as M}from"react";import{getContrastTextColor as b}from"../../../utils/colors.esm.js";import{findNodePath as C}from"./findNodePath.esm.js";import{hierarchyToNivo as A}from"./hierarchyToNivo.esm.js";import{LoadingOverlay as D}from"./LoadingOverlay.esm.js";const O=L(e=>({root:{position:"relative",width:"100%",height:"100%"},nivoContainer:{width:"100%",height:"100%"},tooltip:{position:"absolute",pointerEvents:"none",zIndex:1e3},tooltipContent:{backgroundColor:e.palette.background.paper,padding:e.spacing(1),borderRadius:e.shape.borderRadius,boxShadow:e.shadows[1]},loadingOverlay:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.7)",zIndex:1e3,"& > *":{color:e.palette.common.white}}})),F=({groupRef:e,hierarchyData:r,trackStatus:l,getColor:c,onZoomChange:v,track:k,onNodeHover:m,selectedNode:d,onNodeSelect:y})=>{const[t,p]=j(null),f=O(),x=E(),u=w(P);z(()=>{p(d?d.id:null)},[d]);const a=M(()=>{if(!r||!e)return null;const o=r[e];return o?A(o,l||null,c,u,void 0):null},[r,l,e,c,u]),N=o=>{if(t===o.data.id)return;const i=t===o.data.id?null:o.data.id;p(i),v?.(o.data.entityRef),y?.(o.data)};if(!a)return null;const s=!l,h=x.palette.text.disabled,R=b(h);return I("div",{className:f.root,children:[n("div",{className:f.nivoContainer,children:n(T,{data:a,margin:{top:20,right:20,bottom:20,left:20},borderWidth:1,borderColor:{from:"color",modifiers:[["darker",1.25]]},colors:o=>s?h:o.data.color,childColor:{from:"color"},enableLabels:!0,label:o=>{if(!t)return o.data.name;const i=C(a,o.data.id),g=C(a,t);return!i||!g?"":i.length>=g.length?o.data.name:""},labelsSkipRadius:14,labelTextColor:o=>s?R:b(o.data.color||"#fff"),zoomedId:t,motionConfig:"default",isInteractive:!0,tooltip:()=>n(S,{}),onClick:N,onMouseEnter:o=>m?.(o.data),onMouseLeave:()=>m?.(null)})}),n(D,{isLoading:s,hierarchyData:r,track:k})]})};export{F as NivoCirclePacking};
|
|
2
|
+
//# sourceMappingURL=NivoCirclePacking.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";import"@nivo/heatmap";import"react";import"@nivo/colors";import"d3-color";import"d3-interpolate";import"d3-scale";t(()=>({heatmapContainer:{height:600,width:"100%"},trackLink:{color:"inherit",textDecoration:"none"}}));
|
|
2
|
+
//# sourceMappingURL=NivoHeatmap.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as T,jsx as a,Fragment as L}from"react/jsx-runtime";import{useApi as M}from"@backstage/core-plugin-api";import{entityPresentationApiRef as j}from"@backstage/plugin-catalog-react";import{useTheme as E}from"@material-ui/core";import{makeStyles as O}from"@material-ui/core/styles";import{ResponsiveIcicle as z}from"@nivo/icicle";import{useState as A,useEffect as D,useMemo as H}from"react";import{getContrastTextColor as k}from"../../../utils/colors.esm.js";import{hierarchyToNivo as P}from"./hierarchyToNivo.esm.js";import{LoadingOverlay as W}from"./LoadingOverlay.esm.js";const F=O(e=>({root:{position:"relative",width:"100%",height:"100%"},nivoContainer:{width:"100%",height:"100%"},tooltip:{position:"absolute",pointerEvents:"none",zIndex:1e3},tooltipContent:{backgroundColor:e.palette.background.paper,padding:e.spacing(1),borderRadius:e.shape.borderRadius,boxShadow:e.shadows[1]},loadingOverlay:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.7)",zIndex:1e3,"& > *":{color:e.palette.common.white}}})),Z=({groupRef:e,hierarchyData:r,trackStatus:l,getColor:c,onZoomChange:x,track:y,onNodeHover:m,selectedNode:s,onNodeSelect:S})=>{const[i,f]=A(null),p=F(),R=E(),u=M(j);D(()=>{f(s?s.id:null)},[s]);const h=H(()=>{if(!r||!e)return null;const o=r[e];if(!o)return null;const t=P(o,l||null,c,u,void 0);if(i&&t){const b=(n,v)=>{if(n.id===v)return n;if(n.children)for(const N of n.children){const C=b(N,v);if(C)return C}return null};return b(t,i)||t}return t},[r,l,e,c,u,i]),w=o=>{const t=i===o.data.id?null:o.data.id;f(t),x?.(o.data.entityRef),S?.(o.data)};if(!h)return null;const d=!l,g=R.palette.text.disabled,I=k(g);return T("div",{className:p.root,children:[a("div",{className:p.nivoContainer,children:a(z,{data:h,margin:{top:20,right:20,bottom:20,left:20},borderWidth:1,borderColor:{from:"color",modifiers:[["darker",1.25]]},animateOnMount:!1,colors:o=>d?g:o.data.color,enableLabels:!0,label:o=>o.data.name,labelRotation:270,labelSkipWidth:12,labelSkipHeight:32,labelTextColor:o=>d?I:k(o.data.color||"#fff"),motionConfig:"default",isInteractive:!0,tooltip:()=>a(L,{}),onClick:w,onMouseEnter:o=>m?.(o.data),onMouseLeave:()=>m?.(null)})}),a(W,{isLoading:d,hierarchyData:r,track:y})]})};export{Z as NivoIcicle};
|
|
2
|
+
//# sourceMappingURL=NivoIcicle.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as g,jsx as r,Fragment as v}from"react/jsx-runtime";import{useApi as C}from"@backstage/core-plugin-api";import{entityPresentationApiRef as k}from"@backstage/plugin-catalog-react";import{useTheme as x}from"@material-ui/core";import{makeStyles as y}from"@material-ui/core/styles";import{ResponsiveSunburst as L}from"@nivo/sunburst";import{useMemo as S}from"react";import{getContrastTextColor as p}from"../../../utils/colors.esm.js";import{hierarchyToNivo as N}from"./hierarchyToNivo.esm.js";import{LoadingOverlay as w}from"./LoadingOverlay.esm.js";const R=y(t=>({root:{position:"relative",width:"100%",height:"100%"},nivoContainer:{width:"100%",height:"100%"},tooltip:{position:"absolute",pointerEvents:"none",zIndex:1e3},tooltipContent:{backgroundColor:t.palette.background.paper,padding:t.spacing(1),borderRadius:t.shape.borderRadius,boxShadow:t.shadows[1]},loadingOverlay:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.7)",zIndex:1e3,"& > *":{color:t.palette.common.white}}})),T=({groupRef:t,hierarchyData:e,trackStatus:a,getColor:n,track:u,onNodeHover:l,onNodeSelect:f})=>{const s=R(),h=x(),d=C(k),m=S(()=>{if(!e||!t)return null;const o=e[t];return o?N(o,a||null,n,d,void 0):null},[e,a,t,n,d]);if(!m)return null;const i=!a,c=h.palette.text.disabled,b=p(c);return g("div",{className:s.root,children:[r("div",{className:s.nivoContainer,children:r(L,{data:m,margin:{top:20,right:20,bottom:20,left:20},borderWidth:1,borderColor:{from:"color",modifiers:[["darker",1.25]]},colors:o=>i?c:o.data.color,childColor:{from:"color"},animate:!1,enableArcLabels:!0,arcLabel:o=>o.data.name,arcLabelsTextColor:o=>i?b:p(o.data.color||"#fff"),motionConfig:"default",isInteractive:!0,tooltip:()=>r(v,{}),arcLabelsSkipAngle:20,onMouseEnter:o=>l?.(o.data),onMouseLeave:()=>l?.(null),onClick:o=>f?.(o.data)})}),r(w,{isLoading:i,hierarchyData:e,track:u})]})};export{T as NivoSunburst};
|
|
2
|
+
//# sourceMappingURL=NivoSunburst.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as k,jsx as a,Fragment as N}from"react/jsx-runtime";import{useApi as S}from"@backstage/core-plugin-api";import{entityPresentationApiRef as T}from"@backstage/plugin-catalog-react";import{useTheme as L}from"@material-ui/core";import{makeStyles as R}from"@material-ui/core/styles";import{ResponsiveTreeMap as w}from"@nivo/treemap";import{useState as I,useMemo as M}from"react";import{getContrastTextColor as i}from"../../../utils/colors.esm.js";import{hierarchyToNivo as j}from"./hierarchyToNivo.esm.js";import{LoadingOverlay as z}from"./LoadingOverlay.esm.js";const O=R(t=>({root:{position:"relative",width:"100%",height:"100%"},nivoContainer:{width:"100%",height:"100%"},tooltip:{position:"absolute",pointerEvents:"none",zIndex:1e3},tooltipContent:{backgroundColor:t.palette.background.paper,padding:t.spacing(1),borderRadius:t.shape.borderRadius,boxShadow:t.shadows[1]},loadingOverlay:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.7)",zIndex:1e3,"& > *":{color:t.palette.common.white}}})),A=({groupRef:t,hierarchyData:e,trackStatus:n,getColor:l,onZoomChange:f,track:h,onNodeHover:d,onNodeSelect:b})=>{const[g,v]=I(null),s=O(),C=L(),p=S(T),m=M(()=>{if(!e||!t)return null;const o=e[t];return o?j(o,n||null,l,p,void 0):null},[e,n,t,l,p]),y=o=>{const x=g===o.data.id?null:o.data.id;v(x),f?.(o.data.entityRef),b?.(o.data)};if(!m)return null;const r=!n,c=C.palette.text.disabled,u=i(c);return k("div",{className:s.root,children:[a("div",{className:s.nivoContainer,children:a(w,{data:m,label:o=>o.data.name,margin:{top:20,right:20,bottom:20,left:20},labelSkipSize:24,labelTextColor:o=>r?u:i(o.data.color||"#fff"),nodeOpacity:1,parentLabel:o=>o.data.name,parentLabelPosition:"top",parentLabelTextColor:o=>r?u:i(o.data.color||"#fff"),colors:o=>r?c:o.data.color,borderColor:{from:"color",modifiers:[["darker",1.25]]},isInteractive:!0,animate:!1,tooltip:()=>a(N,{}),onClick:y,onMouseEnter:o=>d?.(o.data),onMouseLeave:()=>d?.(null)})}),a(z,{isLoading:r,hierarchyData:e,track:h})]})};export{A as NivoTreemap};
|
|
2
|
+
//# sourceMappingURL=NivoTreemap.esm.js.map
|
package/dist/components/HierarchicalTechInsightsPage/visualizations/VisualizationBreadcrumb.esm.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as m}from"react/jsx-runtime";import{makeStyles as d,Box as s,Link as l,Typography as b}from"@material-ui/core";import p from"@material-ui/icons/ChevronRight";import{Fragment as h}from"react";const u=d(e=>({breadcrumbContainer:{display:"flex",alignItems:"center",height:24},chevronIcon:{color:e.palette.text.secondary,marginLeft:4,marginRight:4},breadcrumbLink:{color:e.palette.text.secondary,fontWeight:400,cursor:"pointer",background:"none",border:"none",padding:0,font:"inherit",textDecoration:"none","&:hover":{textDecoration:"underline"},"&.active":{color:e.palette.text.primary,fontWeight:600},"&.disabled":{cursor:"default","&:hover":{textDecoration:"none"}}},breadcrumbText:{color:"inherit",fontWeight:"inherit"}})),f=({node:e,onNodeClick:i})=>{const n=u();if(!e)return t("div",{className:n.breadcrumbContainer});const c=(r=>{const o=[r];let a=r.parent;for(;a;)o.unshift(a),a=a.parent;return o})(e);return t(s,{className:n.breadcrumbContainer,children:c.map((r,o)=>m(h,{children:[o>0&&t(p,{fontSize:"small",className:n.chevronIcon}),t(l,{component:"button",variant:"body2",onClick:()=>i?.(r),className:`${n.breadcrumbLink} ${r===e?"active":""} ${i?"":"disabled"}`,children:t(b,{variant:"body2",component:"span",className:n.breadcrumbText,children:r.name})})]},r.id))})};export{f as VisualizationBreadcrumb};
|
|
2
|
+
//# sourceMappingURL=VisualizationBreadcrumb.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const h=(e,n)=>{if(!e||typeof e!="object")return null;if(e.groupRef===n)return e.status;if(e.children&&Array.isArray(e.children))for(const i of e.children){const s=h(i,n);if(s)return s}return null},d=(e,n,i,s,a)=>{const c=s.forEntity(e.entityRef).snapshot.primaryTitle,f=e.entityRef,o=n?h(n,f):null,p=i(o?.allPassPercentage||0),u=e.ownedEntityRefs?.length||0;if(!e.children||Object.keys(e.children).length===0){if(u===0)return;const r=Math.log(u+1);if(r===0)return;const l={id:c,name:c,entityRef:f,value:r,numberOfEntities:u,color:p,passPercentage:o?.allPassPercentage||0,children:[]};return a&&(l.parent=a),l}const y=Object.values(e.children),t={id:c,name:c,entityRef:f,numberOfEntities:0,color:"",passPercentage:0,children:[]};a&&(t.parent=a);const g=y.map(r=>{const l=d(r,n,i,s,t);return t.numberOfEntities+=l?.numberOfEntities??0,l}).filter(r=>r!==void 0);return t.children=g,t.color=i(o?.allPassPercentage||0),t.passPercentage=o?.allPassPercentage||0,t};export{d as hierarchyToNivo};
|
|
2
|
+
//# sourceMappingURL=hierarchyToNivo.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as y,Fragment as F,jsx as r}from"react/jsx-runtime";import{makeStyles as L,Tooltip as $,IconButton as x,CircularProgress as b}from"@material-ui/core";import M from"@material-ui/icons/GetApp";import O from"@material-ui/icons/Publish";import P from"js-yaml";import{capitalize as a}from"lodash";import{useState as E}from"react";import{useSoundcheckAlert as H}from"../../hooks/useSoundcheckAlert.esm.js";const J=L(e=>({button:{height:"44px",lineHeight:"1.25rem",padding:e.spacing(1.5,1),marginRight:e.spacing(.5),borderRadius:"12px",color:e.palette.text.primary}})),V=({resourceType:e,disableImport:w,disableExport:I,onImport:A,onExport:S})=>{const k=`${a(e)} Import Success`,n=`Error Importing ${a(e)}s`,v=`Error Exporting ${a(e)}s`,l=J(),{showAlert:s}=H(),[z,c]=E(!1),[C,p]=E(!1),N=async()=>{try{p(!0),await S()}catch(t){s({title:v,message:`An error occurred while exporting ${e}s: ${t.message}`,severity:"error"})}finally{p(!1)}},R=async t=>{try{c(!0);const o=t.target?.files?.[0],m=new FileReader;o&&(m.readAsText(o,"utf-8"),m.onload=async T=>{const d=T.target?.result?.toString();if(d){const j=P.load(d);try{const{created:g,skipped:B,failed:i}=await A(j);let h=k,u="success",f=`Successfully imported ${g.length} ${e}(s), failed ${i.length} ${e}(s), ${B.length} ${e}(s) already existed.`;i.length&&(h=n,u=g.length?"warning":"error",f+=` Errors: ${JSON.stringify(i)}.`),s({title:h,message:f,severity:u})}catch{}}})}catch(o){s({title:n,message:`An error occurred while importing ${e}s: ${o.message}`,severity:"error"})}finally{t.target.value="",c(!1)}};return y(F,{children:[r($,{title:`Export all ${e}s`,children:r(x,{className:l.button,disabled:I,onClick:N,children:C?r(b,{size:24}):r(
|
|
1
|
+
import{jsxs as y,Fragment as F,jsx as r}from"react/jsx-runtime";import{makeStyles as L,Tooltip as $,IconButton as x,CircularProgress as b}from"@material-ui/core";import M from"@material-ui/icons/GetApp";import O from"@material-ui/icons/Publish";import P from"js-yaml";import{capitalize as a}from"lodash";import{useState as E}from"react";import{useSoundcheckAlert as H}from"../../hooks/useSoundcheckAlert.esm.js";const J=L(e=>({button:{height:"44px",lineHeight:"1.25rem",padding:e.spacing(1.5,1),marginRight:e.spacing(.5),borderRadius:"12px",color:e.palette.text.primary}})),V=({resourceType:e,disableImport:w,disableExport:I,onImport:A,onExport:S})=>{const k=`${a(e)} Import Success`,n=`Error Importing ${a(e)}s`,v=`Error Exporting ${a(e)}s`,l=J(),{showAlert:s}=H(),[z,c]=E(!1),[C,p]=E(!1),N=async()=>{try{p(!0),await S()}catch(t){s({title:v,message:`An error occurred while exporting ${e}s: ${t.message}`,severity:"error"})}finally{p(!1)}},R=async t=>{try{c(!0);const o=t.target?.files?.[0],m=new FileReader;o&&(m.readAsText(o,"utf-8"),m.onload=async T=>{const d=T.target?.result?.toString();if(d){const j=P.load(d);try{const{created:g,skipped:B,failed:i}=await A(j);let h=k,u="success",f=`Successfully imported ${g.length} ${e}(s), failed ${i.length} ${e}(s), ${B.length} ${e}(s) already existed.`;i.length&&(h=n,u=g.length?"warning":"error",f+=` Errors: ${JSON.stringify(i)}.`),s({title:h,message:f,severity:u})}catch{}}})}catch(o){s({title:n,message:`An error occurred while importing ${e}s: ${o.message}`,severity:"error"})}finally{t.target.value="",c(!1)}};return y(F,{children:[r($,{title:`Export all ${e}s`,children:r(x,{className:l.button,disabled:I,onClick:N,children:C?r(b,{size:24}):r(M,{})})}),r($,{title:`Import YAML ${e}(s)`,children:y(x,{className:l.button,disabled:w,component:"label",children:[z?r(b,{size:24}):r(O,{}),r("input",{type:"file",hidden:!0,onChange:R,accept:".yaml"})]})})]})};export{V as ImportExportPanel};
|
|
2
2
|
//# sourceMappingURL=ImportExportPanel.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,Fragment as
|
|
1
|
+
import{jsx as e,Fragment as d,jsxs as s}from"react/jsx-runtime";import{TableRow as r,useTheme as k,TableContainer as C,Table as h,TableBody as m,TableCell as p,Box as x,IconButton as y,Typography as T,Collapse as L}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import w from"@material-ui/icons/KeyboardArrowDown";import N from"@material-ui/icons/KeyboardArrowUp";import{memo as S,useState as I,useCallback as R}from"react";import{CheckRowContent as B}from"./CheckRowContent.esm.js";const g=b(l=>({root:{width:"100%"},levelCell:{display:"flex",alignItems:"flex-start",width:"100%",padding:l.spacing(1)},levelContent:{display:"flex",flexDirection:"column",gap:l.spacing(2),width:"100%"},levelHeader:{display:"flex",alignItems:"center"},levelName:{fontSize:"1rem",fontWeight:500,lineHeight:1,marginLeft:l.spacing(1)},headerCell:{fontWeight:500,color:l.palette.text.secondary,padding:l.spacing(2)}})),v=S(({checks:l,checkStatuses:a,theme:c,trackId:t})=>e(d,{children:l.map(n=>{const i=a?.find(o=>o.id===n.id);return e(r,{children:e(B,{check:n,status:i,theme:c,trackId:t})})})}));v.displayName="CheckRows";const f=({level:l,children:a,hideLevel:c})=>{const t=g(),[n,i]=I(!0),o=R(()=>{i(u=>!u)},[]);return s(d,{children:[!c&&e(r,{children:e(p,{colSpan:4,className:t.levelCell,children:s(x,{className:t.levelHeader,children:[e(y,{size:"small",onClick:o,children:n?e(N,{}):e(w,{})}),e(T,{className:t.levelName,children:l.name??`Level ${l.ordinal}`})]})})}),e(r,{children:e(p,{style:{paddingTop:0,paddingBottom:0},children:e(L,{in:n,timeout:"auto",unmountOnExit:!0,children:e(h,{size:"small",padding:"none",children:e(m,{children:a})})})})})]})},z=({track:l,checkStatuses:a,hideLevel:c})=>{const t=g(),n=k();return l.levels?.length?e(C,{component:"div",className:t.root,children:e(h,{children:e(m,{children:l.levels.map(i=>e(f,{level:i,hideLevel:c,children:e(v,{checks:i.checks,checkStatuses:a,theme:n,trackId:l.id})},i.ordinal))})})}):null};export{f as LevelRow,z as LevelsTable};
|
|
2
2
|
//# sourceMappingURL=LevelsTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Page as n,Header as m}from"@backstage/core-components";import{makeStyles as c}from"@material-ui/core";import{SpotifyLicenseBanner as s}from"@spotify/backstage-plugin-core";import{UserProvider as a}from"../../contexts/UserProvider.esm.js";import d from"../../hooks/useConfirmationModal.esm.js";import{useLCPReporting as p}from"../../hooks/useLCPReporting.esm.js";import{soundcheckBackend as v,invalidLicenseMessage as l}from"../../utils/license.esm.js";import{SoundcheckQueryClientProvider as f}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{OverviewPageContent as h}from"./OverviewPageContent.esm.js";const g=c(r=>({overviewContainer:{padding:r.spacing(1,3)}})),u=r=>{const{title:i="Soundcheck"}=r,o=g();return p({routeName:"soundcheck-overview",additionalAttributes:{pageTitle:i}}),e(f,{children:e(a,{children:e(d,{children:t(n,{themeId:"website",children:[e(s,{backend:v,invalidLicenseMessage:l}),e(m,{title:i}),e("div",{className:o.overviewContainer,children:e(h,{})})]})})})})};export{u as OverviewPage};
|
|
2
2
|
//# sourceMappingURL=OverviewPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as L}from"react/jsx-runtime";import{makeStyles as G,Grid as m}from"@material-ui/core";import{createContext as D,useState as t,useEffect as $,useCallback as j}from"react";import{useSearchParams as H}from"react-router-dom";import N from"react-use/lib/useDebounce";import{useFacetsForOwner as B}from"../../hooks/facets/useFacetsForOwner.esm.js";import{LoadingIndicator as R}from"../LoadingIndicator/LoadingIndicator.esm.js";import{OverviewTable as z}from"../OverviewTable/OverviewTable.esm.js";import{RowHeights as A}from"../OverviewTable/resultsTableUtils.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as I}from"../SoundcheckHeader/useHeader.esm.js";import{OverviewPageHeader as T}from"./OverviewPageHeader.esm.js";const
|
|
1
|
+
import{jsx as r,jsxs as L}from"react/jsx-runtime";import{makeStyles as G,Grid as m}from"@material-ui/core";import{createContext as D,useState as t,useEffect as $,useCallback as j}from"react";import{useSearchParams as H}from"react-router-dom";import N from"react-use/lib/useDebounce";import{useFacetsForOwner as B}from"../../hooks/facets/useFacetsForOwner.esm.js";import{LoadingIndicator as R}from"../LoadingIndicator/LoadingIndicator.esm.js";import{OverviewTable as z}from"../OverviewTable/OverviewTable.esm.js";import{RowHeights as A}from"../OverviewTable/resultsTableUtils.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as I}from"../SoundcheckHeader/useHeader.esm.js";import{OverviewPageHeader as T}from"./OverviewPageHeader.esm.js";const X=G(e=>({tableContainer:{padding:0,backgroundColor:"transparent",paddingBottom:A.paginationControl},campaignsGrid:{margin:`0 0 ${e.spacing(3)}px`,border:`1px solid ${e.palette.divider}`},campaignsCard:{display:"flex",width:"100%",flexDirection:"column",padding:e.spacing(2),gap:e.spacing(2)},campaignsLink:{textAlign:"center",margin:`${e.spacing(1)}rem 0 ${e.spacing(1)}`},tableLoading:{backgroundColor:e.palette.background.paper,padding:e.spacing(6)},noPadding:{padding:0},accordion:{boxShadow:"none"}})),b=D({searchValue:"",updateSearchValue:e=>{},debouncedSearchValue:"",updateDebouncedSearchValue:e=>{},pivot:!1,updatePivot:e=>{}}),q=({isFixedGroup:e=!1})=>{const[a,l]=H(),{group:g,kind:n,type:d}=Object.fromEntries(a.entries());I();const[i,u]=t(void 0),[k,x]=t(void 0),[y,C]=t(),[p,S]=t(""),[w,f]=t(""),[P,V]=t(!1);N(()=>{f(p)},800,[p]),$(()=>{(i?.kind!==n||i?.type!==d)&&u({kind:n,type:d})},[n,d,i]);const{data:h,isLoading:v}=B(g),E=k||y,O=j((o,c,F)=>{o&&(u({kind:o,type:c}),c?(a.set("kind",o),a.set("type",c)):(a.delete("type"),a.set("kind",o)),l(a,{replace:F}))},[a,l]),s=X();return r(b.Provider,{value:{searchValue:p,updateSearchValue:S,debouncedSearchValue:w,updateDebouncedSearchValue:f,pivot:P,updatePivot:V},children:L(m,{container:!0,spacing:0,children:[r(m,{item:!0,xs:12,className:s.noPadding,children:r(T,{unfilteredFacets:h,kind:i?.kind,type:i?.type,onChange:O,setError:C,isLoading:v,isFixedGroup:e})}),r(m,{item:!0,xs:12,className:s.tableContainer,children:v?r("div",{className:s.tableLoading,children:r(R,{size:80})}):r(z,{facets:h,kind:i?.kind,type:i?.type,setError:x,hasError:E,ownerEntityRef:g,isFixedGroup:e})})]})})};export{q as OverviewPageContent,b as OverviewPageContext};
|
|
2
2
|
//# sourceMappingURL=OverviewPageContent.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as i,jsx as t}from"react/jsx-runtime";import{EntityRefLink as f}from"@backstage/plugin-catalog-react";import{makeStyles as y,List as N,Typography as o,ListItem as a,Tooltip as l,ListItemIcon as m,ListItemText as c}from"@material-ui/core";import
|
|
1
|
+
import{jsxs as i,jsx as t}from"react/jsx-runtime";import{EntityRefLink as f}from"@backstage/plugin-catalog-react";import{makeStyles as y,List as N,Typography as o,ListItem as a,Tooltip as l,ListItemIcon as m,ListItemText as c}from"@material-ui/core";import g from"@material-ui/icons/Group";import x from"@material-ui/icons/TrendingDown";import L from"@material-ui/icons/TrendingFlat";import T from"@material-ui/icons/TrendingUp";import{Trend as s}from"./types.esm.js";const R=y(r=>({cardSection:{marginBottom:r.spacing(2)},listItem:{padding:0},listItemText:{margin:0},listItemIcon:{marginRight:r.spacing(1),minWidth:0},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),S=({ownerEntityRef:r,passRates:d})=>{const e=R();return i(N,{dense:!0,disablePadding:!0,className:e.cardSection,children:[t(o,{variant:"overline",color:"textSecondary",children:"Details"}),r&&i(a,{disableGutters:!0,className:e.listItem,children:[t(l,{title:"Owner",children:t(m,{className:e.listItemIcon,children:t(g,{color:"inherit",fontSize:"small"})})}),t(c,{className:e.listItemText,primary:t(f,{className:e.ownerLink,entityRef:r??"No Owner",hideIcon:!0})})]}),d.map(({name:h,value:p,trend:n},I)=>i(a,{disableGutters:!0,className:e.listItem,children:[t(l,{title:"The most recent pass rate.",children:i(m,{className:e.listItemIcon,children:[n===s.UP&&t(T,{color:"inherit",fontSize:"small"}),n===s.DOWN&&t(x,{color:"inherit",fontSize:"small"}),n===s.FLAT&&t(L,{color:"inherit",fontSize:"small"})]})}),t(c,{className:e.listItemText,primary:i(o,{variant:"body2",color:"textPrimary",children:[h??"Latest Pass Rate",": ",i("b",{children:[Math.round(p),"%"]})]})})]},I))]})};export{S as PassRateMetadata};
|
|
2
2
|
//# sourceMappingURL=PassRateMetadata.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as l,jsx as t}from"react/jsx-runtime";import{Grid as e,Typography as
|
|
1
|
+
import{jsxs as l,jsx as t}from"react/jsx-runtime";import{Grid as e,Typography as r,Button as a}from"@material-ui/core";import{getQuickstartStyles as m}from"./styles.esm.js";const d=({title:n,description:o,onClick:s,className:c})=>{const i=m();return l(e,{container:!0,direction:"row",alignItems:"center",className:c,children:[t(e,{item:!0,xs:3,children:t(r,{variant:"h6",children:n})}),t(e,{item:!0,xs:!0,className:i.flexGrowGrid,children:t(r,{variant:"body1",children:o})}),t(e,{item:!0,xs:1,container:!0,justifyContent:"flex-end",children:t(a,{onClick:s,className:i.dontYellAtMeButton,children:"Go"})})]})};export{d as HowDoIListItem};
|
|
2
2
|
//# sourceMappingURL=HowDoIListItem.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as s,jsx as a}from"react/jsx-runtime";import{Box as e,Typography as c,Divider as l}from"@material-ui/core";import{useNavigate as h}from"react-router-dom";import{Card as p}from"../SummaryCard/SummaryCard.esm.js";import{getQuickstartStyles as N}from"./styles.esm.js";const f=({header:o,routeRef:t,icon:i,description:d})=>{const r=N(),m=h(),n=()=>{m(t())};return s(p,{className:r.cardBase,onClick:n,children:[s(e,{className:r.cardHeader,children:[i&&a(e,{className:r.cardIcon,children:i}),a(c,{variant:"h5",className:r.headers,children:o})]}),a(l,{className:r.divider}),a(e,{children:a(c,{variant:"body1",component:"div",className:r.mainPoint,children:d})})]})};export{f as QuickstartCardBase};
|
|
2
2
|
//# sourceMappingURL=QuickstartCardBase.esm.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsxs as c,jsx as e}from"react/jsx-runtime";import{Content as P}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as v,configApiRef as w,useRouteRef as a}from"@backstage/core-plugin-api";import{usePermission as S}from"@backstage/plugin-permission-react";import{Typography as l,Grid as t,Accordion as T,AccordionSummary as z,AccordionDetails as I}from"@material-ui/core";import h from"@material-ui/icons/BarChart";import H from"@material-ui/icons/CheckCircle";import D from"@material-ui/icons/Computer";import j from"@material-ui/icons/ExpandMore";import O from"@material-ui/icons/Flag";import Q from"@material-ui/icons/Timeline";import{soundcheckCollectorReadPermission as W}from"@spotify/backstage-plugin-soundcheck-common";import{useLCPReporting as q}from"../../hooks/useLCPReporting.esm.js";import{integrationsPageRouteRef as B,tracksPageRouteRef as F,checksPageRouteRef as G,campaignsPageRouteRef as L,techHealthRouteRef as V,techInsightsPageRouteRef as $}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as E}from"../SoundcheckHeader/useHeader.esm.js";import{QuickstartCardBase as i}from"./QuickstartCardBase.esm.js";import{getQuickstartStyles as J}from"./styles.esm.js";import{WelcomeHelpSection as K}from"./WelcomeHelpSection.esm.js";const M=()=>{const o=J();E({title:"Welcome to Soundcheck!",description:"Soundcheck lets you define and monitor the tech health of your organization. What insights do you need today?"}),q({routeName:"soundcheck-quickstart"});const r=m(v),n=m(w),u=n.getOptionalStringArray("soundcheck.flags"),d=r.getRegisteredFlags(),p=n.getOptionalBoolean("soundcheck.techInsights.enabled"),{loading:g,allowed:f}=S({permission:W}),k=(!d.find(s=>s.name==="soundcheck-enable-collectors")||r.isActive("soundcheck-enable-collectors"))&&!g&&f,R=(!d.find(s=>s.name==="soundcheck-enable-tech-health")||r.isActive("soundcheck-enable-tech-health"))&&!u?.includes("soundcheck-disable-tech-health"),y=a(B),b=a(F),x=a(G),N=a(L),A=a(V),C=a($);return c(P,{className:o.introTitle,children:[e(l,{className:o.welcomeSection,children:"This is your starting point for exploring and managing your tech health initiatives. Here are some key areas to get you started:"}),c(t,{container:!0,direction:"row",justifyContent:"flex-start","aria-label":"getting-started-items",className:o.grid,spacing:2,children:[p&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tech Insights",routeRef:C,icon:e(h,{}),description:`Visualize and analyze your technology landscape across teams and
|
|
2
|
+
components.`})}),R&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tech Health",routeRef:A,icon:e(h,{}),description:"Detailed query and analysis tool across teams, components, tracks, and checks."})}),e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Campaigns",routeRef:N,icon:e(O,{}),description:"Organize and manage coordinated initiatives across your organization."})}),e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Checks",routeRef:x,icon:e(H,{}),description:"Checks are comparisons between defined acceptable fact values and actual fact values."})}),e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tracks",routeRef:b,icon:e(Q,{}),description:"Tracks encourage alignment to architectural best practices and standards."})}),k&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Integrations",routeRef:y,icon:e(D,{}),description:"Integrations collect raw data about your components for use in checks and tracks."})})]}),c(T,{className:o.accordion,children:[e(z,{expandIcon:e(j,{}),"aria-controls":"howdoi-content",id:"howdoi-header",children:e(l,{variant:"h5",children:"How Do I...?"})}),e(I,{children:e(K,{})})]})]})};export{M as QuickstartPage};
|
|
2
3
|
//# sourceMappingURL=QuickstartPage.esm.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
2
|
-
you'll be presented with a list of templates from which to choose.`,onClick:()=>t(
|
|
3
|
-
the collector you wish to configure.`,onClick:()=>t(
|
|
4
|
-
Your team's components will appear in the table along with their check statuses.`,onClick:()=>t(
|
|
1
|
+
import{jsx as e,jsxs as d}from"react/jsx-runtime";import{useRouteRef as i}from"@backstage/core-plugin-api";import{Grid as r}from"@material-ui/core";import{useNavigate as u}from"react-router-dom";import{checkCreateRouteRef as C,checkTemplatesRouteRef as f,trackCreateRouteRef as w,integrationsPageRouteRef as b,rootRouteRef as R,checksPageRouteRef as N,tracksPageRouteRef as G}from"../../routes.esm.js";import{HowDoIListItem as c}from"./HowDoIListItem.esm.js";import{getQuickstartStyles as y}from"./styles.esm.js";const T=()=>{const a=y(),t=u(),n=i(C),s=i(f),l=i(w),h=i(b),m=i(R),k=i(N),p=i(G),o=g=>g%2===0?a.bgColorEven:a.bgColorOdd;return e("div",{className:a.howDoIList,children:e(r,{container:!0,direction:"column","aria-label":"getting-started-items",className:a.grid,children:d(r,{item:!0,children:[e(c,{className:o(0),title:"Create a new check from scratch?",description:"Go to the Checks page and click the 'Create Check' button, then select 'Custom Check'.",onClick:()=>t(n())}),e(c,{className:o(1),title:"Add a new check from a template?",description:`Go to the Checks page and click the 'Create Check' button. There,
|
|
2
|
+
you'll be presented with a list of templates from which to choose.`,onClick:()=>t(s())}),e(c,{className:o(0),title:"Add a new track?",description:"Go to the Tracks page and click the 'Create Track' button.",onClick:()=>t(l())}),e(c,{className:o(1),title:"Configure an Integration?",description:`Go to the Integrations page and click the 'Configure' button below
|
|
3
|
+
the collector you wish to configure.`,onClick:()=>t(h())}),e(c,{className:o(0),title:"Check my team's components?",description:`Go to the Overview page and select your team from the drop-down in the top-right corner.
|
|
4
|
+
Your team's components will appear in the table along with their check statuses.`,onClick:()=>t(m())}),e(c,{className:o(1),title:"See which components are passing a Check?",description:`Go to the insights page for the Check by clicking the 'View' button on the Checks page. Scroll
|
|
5
5
|
down and look at the 'Entities' table.`,onClick:()=>t(k())}),e(c,{className:o(0),title:"See which components are passing a Track?",description:`Go to the insights page for the Track by clicking the 'View' button on the Tracks page. Select
|
|
6
|
-
the 'Entities' tab.`,onClick:()=>t(
|
|
6
|
+
the 'Entities' tab.`,onClick:()=>t(p())})]})})})};export{T as WelcomeHelpSection};
|
|
7
7
|
//# sourceMappingURL=WelcomeHelpSection.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as a}from"@material-ui/core";const t=a(
|
|
1
|
+
import{makeStyles as a}from"@material-ui/core";const t=a(n=>({grid:{padding:n.spacing(0),margin:n.spacing(0),width:"100%"},helpSection:{padding:n.spacing(1),margin:n.spacing(1)},howDoIList:{backgroundColor:n.palette.background.paper,width:"100%",padding:n.spacing(2),margin:n.spacing(1)},bgColorEven:{backgroundColor:n.palette.background.default,minHeight:"65px"},bgColorOdd:{backgroundColor:n.palette.background.paper,minHeight:"65px"},headers:{marginBottom:n.spacing(1),fontSize:"1.2rem",display:"flex",alignItems:"center"},divider:{marginTop:n.spacing(1),marginBottom:n.spacing(1)},cards:{width:"100%"},introTitle:{padding:n.spacing(1),paddingTop:n.spacing(2),paddingLeft:n.spacing(2),margin:"0, 3rem, 0, 0",display:"flex",flexDirection:"column",minHeight:"100vh"},page:{marginBottom:n.spacing(2)},link:{color:n.palette.link},list:{paddingLeft:n.spacing(0),padding:n.spacing(1)},mainPoint:{marginBottom:n.spacing(1),fontSize:"1.1rem",fontStyle:"italic"},card:{padding:n.spacing(1),margin:n.spacing(1),minHeight:"auto"},cardGrid:{padding:n.spacing(1),alignItems:"left",justifyContent:"left",width:"100%",textDecoration:"none",color:n.palette.text.primary},description:{margin:"0px",padding:"0px",textDecoration:"none"},buttonBox:{marginTop:"auto"},dontYellAtMeButton:{alignSelf:"flex-end",textTransform:"none",width:"100%",borderRadius:"30px",borderStyle:"solid",borderWidth:"1px",margin:n.spacing(.5)},headerButton:{fontSize:n.typography.body2.fontSize,textTransform:"none"},welcomeSection:{marginBottom:n.spacing(2),textAlign:"center"},cardBase:{minHeight:"75px",minWidth:"150px",cursor:"pointer","&:hover":{boxShadow:n.shadows[4]}},cardHeader:{display:"flex",alignItems:"center"},cardIcon:{marginRight:n.spacing(1),color:n.palette.primary.main},cardButtonBox:{marginTop:"auto"},accordion:{marginTop:n.spacing(3)},flexGrowGrid:{flexGrow:1}}));export{t as getQuickstartStyles};
|
|
2
2
|
//# sourceMappingURL=styles.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as t,jsx as s}from"react/jsx-runtime";import{makeStyles as o,Box as p}from"@material-ui/core";const n=o(()=>({superScript:{fontSize:"0.5rem"}})),c=({title:e})=>{const r=n();return t(p,{component:"span",children:[e," ",s("sup",{className:r.superScript,children:"New"})]})};export{c as NewFeatureTab};
|
|
2
|
+
//# sourceMappingURL=NewFeatureTab.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as
|
|
1
|
+
import{jsx as e,jsxs as a,Fragment as h}from"react/jsx-runtime";import{Page as M,TabbedLayout as r}from"@backstage/core-components";import{useApi as u,featureFlagsApiRef as Q,configApiRef as W}from"@backstage/core-plugin-api";import{usePermission as s}from"@backstage/plugin-permission-react";import{makeStyles as q,Box as d}from"@material-ui/core";import{SpotifyLicenseBanner as U}from"@spotify/backstage-plugin-core";import{soundcheckCampaignCreatePermission as V,soundcheckCollectorReadPermission as $,soundcheckCheckCreatePermission as z,soundcheckTrackCreatePermission as J}from"@spotify/backstage-plugin-soundcheck-common";import{Helmet as K}from"react-helmet";import{Routes as X,Route as t}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import{UserProvider as Y}from"../../contexts/UserProvider.esm.js";import Z from"../../hooks/useConfirmationModal.esm.js";import{AlertProvider as _}from"../../hooks/useSoundcheckAlert.esm.js";import{CampaignInsightsPage as ee}from"../CampaignInsightsPage/CampaignInsightsPage.esm.js";import{CampaignsPage as te}from"../CampaignsPage/CampaignsPage.esm.js";import{CampaignCreatePage as ie}from"../CampaignCreatePage/CampaignCreatePage.esm.js";import{EditCampaignView as re}from"../CampaignsPage/EditCampaignView.esm.js";import{CheckCreatePage as ae}from"../CheckCreatePage/CheckCreatePage.esm.js";import{CheckEditPage as oe}from"../CheckPage/CheckEditPage.esm.js";import{CheckInsightsPage as P}from"../CheckPage/CheckInsightsPage.esm.js";import{ChecksTab as ce}from"../ChecksTab/ChecksTab.esm.js";import{CheckTemplatesPage as ne}from"../CheckTemplatesPage/CheckTemplatesPage.esm.js";import{CollectorPage as le}from"../CollectorPage/CollectorPage.esm.js";import{CollectorDetailsPage as se}from"../CollectorPage/CollectorDetailsPage.esm.js";import{CollectorsPage as me}from"../CollectorsPage/CollectorsPage.esm.js";import{HierarchicalTechInsightsPage as he}from"../HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js";import{OverviewPageContent as de}from"../OverviewPage/OverviewPageContent.esm.js";import{QuickstartPage as C}from"../QuickstartPage/QuickstartPage.esm.js";import{SoundcheckHeader as pe}from"../SoundcheckHeader/SoundcheckHeader.esm.js";import{SoundcheckHeaderProvider as ge}from"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{SoundcheckQueryClientProvider as ke}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{TechHealth as fe}from"../TechHealth/TechHealth.esm.js";import{TechInsightsPage as ue}from"../TechInsights/TechInsightsPage.esm.js";import{TrackCreatePage as Pe}from"../TrackCreatePage/TrackCreatePage.esm.js";import{TrackEditPage as Ce}from"../TrackEditPage/TrackEditPage.esm.js";import{TrackPage as be}from"../TrackPage/TrackPage.esm.js";import{TracksTab as ve}from"../TracksTab/TracksTab.esm.js";import{NewFeatureTab as Ie}from"./NewFeatureTab.esm.js";const b=q(o=>({tabContent:{margin:0,padding:0},root:{"& > *":{display:"flex",flexDirection:"column",flexGrow:1}},pageContent:{display:"flex",flexDirection:"row",flexGrow:1},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",maxWidth:"100%","& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",padding:`${o.spacing(3)}px !important`}}})),v=({title:o="Soundcheck",children:m})=>{const n=b();return e(_,{children:e(Y,{children:e(ke,{children:e(ge,{defaultTitle:o,children:e(Z,{children:e(d,{className:n.root,children:a(M,{themeId:"website",children:[e(U,{backend:"soundcheck",invalidLicenseMessage:"Submitted facts and check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),e(pe,{documentTitle:o}),e(d,{className:n.pageContent,children:e(d,{className:n.pageLayout,children:m})})]})})})})})})})},Te=({title:o="Soundcheck",integrations:m})=>{const n=b(),c=u(Q),p=u(W),g=p.getOptionalStringArray("soundcheck.flags"),l=c.getRegisteredFlags(),I=p.getOptionalBoolean("soundcheck.techInsights.enabled"),T=(!l.find(i=>i.name==="soundcheck-enable-tech-health")||c.isActive("soundcheck-enable-tech-health"))&&!g?.includes("soundcheck-disable-tech-health"),x=!l.find(i=>i.name==="soundcheck-enable-collectors")||c.isActive("soundcheck-enable-collectors"),k=!l.find(i=>i.name==="soundcheck-enable-campaigns")||c.isActive("soundcheck-enable-campaigns"),{loading:w,allowed:R}=s({permission:V}),y=!w&&R,{loading:A,allowed:S}=s({permission:$}),{loading:H,allowed:D}=s({permission:z}),L=!l.find(i=>i.name==="soundcheck-enable-check-creation")||c.isActive("soundcheck-enable-check-creation"),N=!H&&D&&L,{loading:F,allowed:O}=s({permission:J}),B=!l.find(i=>i.name==="soundcheck-enable-track-creation")||c.isActive("soundcheck-enable-track-creation"),E=!F&&O&&B,j=x&&!A&&S,G=T,f=g?.includes("portal")??!1;return a(v,{title:o,children:[a(X,{children:[k&&a(h,{children:[e(t,{path:"/campaigns/:campaignId/edit",element:e(re,{})}),e(t,{path:"/campaigns/:campaignId",element:e(ee,{})}),y&&e(t,{path:"/campaigns/create",element:e(ie,{})})]}),e(t,{path:"/quickstart",element:e(C,{})}),e(t,{path:"/tech-insights/track",element:e(he,{})}),e(t,{path:"/tracks/:trackId/edit",element:e(Ce,{})}),E&&e(t,{path:"/tracks/create",element:e(Pe,{})}),e(t,{path:"/tracks/:trackId",element:e(be,{})}),e(t,{path:"/tracks/:trackId/checks/:checkId",element:e(P,{})}),e(t,{path:"/checks/:checkId",element:e(P,{})}),e(t,{path:"/checks/:checkId/edit",element:e(oe,{})}),N&&a(h,{children:[e(t,{path:"/checks/create",element:e(ae,{})}),e(t,{path:"/checks/templates",element:e(ne,{})})]}),e(t,{path:"/integrations/:integrationId",element:e(se,{})}),e(t,{path:"/integrations/:integrationId/edit",element:e(le,{})}),f&&e(t,{path:"/",element:e(C,{})}),e(t,{path:"/*",element:a(r,{children:[e(r.Route,{title:"Overview",path:f?"/overview":"/",children:e("div",{className:n.tabContent,children:e(de,{})})}),I&&e(r.Route,{title:e(Ie,{title:"Tech Insights"}),path:"/tech-insights",children:a(h,{children:[e(K,{title:"Tech Insights"}),e(ue,{})]})}),G&&e(r.Route,{title:"Tech Health",path:"/tech-health",children:e(fe,{})}),e(r.Route,{title:"Checks",path:"/checks",children:e(ce,{})}),e(r.Route,{title:"Tracks",path:"/tracks",children:e(ve,{})}),k&&e(r.Route,{title:"Campaigns",path:"/campaigns",children:e(te,{})}),j&&e(r.Route,{title:"Integrations",path:"/integrations",children:e(me,{integrations:m})})]})})]})," "]})};export{Te as RoutingPage,v as RoutingPageWrapper};
|
|
2
2
|
//# sourceMappingURL=RoutingPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{makeStyles as h,TextField as u,InputAdornment as c,IconButton as f}from"@material-ui/core";import g from"@material-ui/icons/Close";import x from"@material-ui/icons/Search";import{useRef as B,useEffect as I}from"react";const
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{makeStyles as h,TextField as u,InputAdornment as c,IconButton as f}from"@material-ui/core";import g from"@material-ui/icons/Close";import x from"@material-ui/icons/Search";import{useRef as B,useEffect as I}from"react";const y=h(r=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"},searchBar:{color:r.palette.text.primary,paddingLeft:r.spacing(1)},iconWrapper:{marginLeft:0}})),N=({searchTerm:r,setSearchTerm:o,showClear:s=!0,placeholder:i="Search...",disabled:a,...l})=>{const t=y(),n=B(null);I(()=>{!a&&n.current&&n.current.focus()},[a]);const p=m=>{o(m.target.value)},d=()=>{o("")};return e(u,{...l,disabled:a,inputRef:n,fullWidth:!0,placeholder:i,value:r,onChange:p,InputProps:{className:t.searchBar,startAdornment:e(c,{className:t.iconWrapper,position:"start",children:e(x,{className:t.searchIcon,"data-testid":"search-icon"})}),endAdornment:s&&r?e(c,{position:"end",children:e(f,{edge:"end",onClick:d,className:t.clearButton,children:e(g,{})})}):null}})};export{N as SearchBar};
|
|
2
2
|
//# sourceMappingURL=SearchBar.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as i}from"react/jsx-runtime";import{parseEntityRef as m,stringifyEntityRef as s}from"@backstage/catalog-model";import{Link as f}from"@backstage/core-components";import{useRouteRef as k}from"@backstage/core-plugin-api";import{entityRouteRef as d}from"@backstage/plugin-catalog-react";const p=({entity:e,trackId:t,checkId:o,className:c})=>{const n=k(d),a=m(s(e));let r=`${n(a)}/soundcheck`;return t&&o?r+=`/tracks/${t}/checks/${o}`:t&&(r+=`/tracks/${t}`),i(f,{to:r,className:c,children:e.metadata.title||e.metadata.name})};export{p as SoundcheckEntityLink};
|
|
2
|
+
//# sourceMappingURL=SoundcheckEntityLink.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as o,jsx as i,Fragment as
|
|
1
|
+
import{jsxs as o,jsx as i,Fragment as S}from"react/jsx-runtime";import{Header as R}from"@backstage/core-components";import{useRouteRef as d,useApi as v,configApiRef as y}from"@backstage/core-plugin-api";import{makeStyles as N,Link as x,Typography as p,Button as C}from"@material-ui/core";import T from"@material-ui/icons/InfoOutlined";import L from"@material-ui/icons/MenuBook";import{useContext as B}from"react";import{useLocation as H,useNavigate as w}from"react-router-dom";import{rootRouteRef as z,quickstartRouteRef as A}from"../../routes.esm.js";import{Breadcrumbs as I}from"./Breadcrumbs.esm.js";import{generateBreadcrumbs as O}from"./headerUtil.esm.js";import{SoundcheckHeaderContext as j}from"./SoundcheckHeaderContext.esm.js";const q=N(e=>({subtitle:{maxWidth:"75%",marginTop:e.spacing(.5),whiteSpace:"pre-line"},docLink:{display:"flex",alignItems:"center",marginTop:e.spacing(.5),marginBottom:e.spacing(0),width:"fit-content",fontSize:e.typography.body2.fontSize,color:"inherit"},descriptionIcon:{marginRight:e.spacing(.25)},headerContent:{color:e.page.fontColor},link:{},button:{textTransform:"none",marginRight:e.spacing(2),color:e.page.fontColor},icon:{paddingRight:e.spacing(1)},title:{},breadcrumbs:{}}),{name:"SoundcheckHeader"}),D=({documentTitle:e})=>{const{title:n,description:r,docLink:a,customSubtitle:c,sectionRight:s}=B(j),t=q(),l=H().pathname?.replace(/\/+$/,"")??"",h=O(l),g=d(z),m=l===g(),u=v(y).getOptionalStringArray("soundcheck.flags")?.includes("portal")??!1,f=d(A),b=w(),k=f();return o(R,{pageTitleOverride:e,title:i(S,{children:m?i("div",{className:t.title,children:n}):o("div",{className:t.title,children:[i(I,{className:t.breadcrumbs,pages:h}),n]})}),subtitle:o("div",{className:t.headerContent,children:[a&&o(x,{target:"_blank",href:a,className:t.docLink,children:[i(T,{className:t.descriptionIcon,fontSize:"inherit"}),"Documentation"]}),!!c&&i("div",{children:c}),typeof r=="string"?i(p,{className:t.subtitle,variant:"body2",color:"inherit",children:r}):i("div",{children:r})]}),children:[m&&!u&&o(C,{className:t.button,onClick:()=>b(k),color:"inherit",variant:"outlined",children:[i(L,{className:t.icon}),i(p,{children:"Get Started with Soundcheck"})]}),!!s&&i("div",{children:s})]})};export{D as SoundcheckHeader};
|
|
2
2
|
//# sourceMappingURL=SoundcheckHeader.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const a=e=>{const c={"^/soundcheck/campaigns$":"Campaigns","^/soundcheck/campaigns/create":"Create","^/soundcheck/campaigns/.*/edit":"Edit","^/soundcheck/campaigns/[^/]+$":"Campaign Insights","^/soundcheck/tracks$":"Tracks","^/soundcheck/tracks/create":"Create","^/soundcheck/tracks/.*/edit":"Edit","^/soundcheck/tracks/[^/]+$":"Track Insights","^/soundcheck/tracks/.*/checks/[^/]+$":"Check Insights","^/soundcheck/checks$":"Checks","^/soundcheck/checks/.*/edit":"Edit","^/soundcheck/checks/create":"Create","^/soundcheck/checks/templates$":"Templates","^/soundcheck/checks/[^/]+$":"Details","^/soundcheck/integrations/[^/]+$":"
|
|
1
|
+
const a=e=>{const c={"^/soundcheck/campaigns$":"Campaigns","^/soundcheck/campaigns/create":"Create","^/soundcheck/campaigns/.*/edit":"Edit","^/soundcheck/campaigns/[^/]+$":"Campaign Insights","^/soundcheck/tracks$":"Tracks","^/soundcheck/tracks/create":"Create","^/soundcheck/tracks/.*/edit":"Edit","^/soundcheck/tracks/[^/]+$":"Track Insights","^/soundcheck/tracks/.*/checks/[^/]+$":"Check Insights","^/soundcheck/checks$":"Checks","^/soundcheck/checks/.*/edit":"Edit","^/soundcheck/checks/create":"Create","^/soundcheck/checks/templates$":"Templates","^/soundcheck/checks/[^/]+$":"Details","^/soundcheck/integrations/.*/edit":"Configure","^/soundcheck/integrations/[^/]+$":"Details","^/soundcheck/integrations$":"Integrations","^/soundcheck/tech-health$":"Tech Health","^/soundcheck/tech-health/campaigns":"Campaigns","^/soundcheck/tech-health/checks":"Checks","^/soundcheck/tech-health/tracks":"Tracks","^/soundcheck/tech-health/entities":"Entities","^/soundcheck/tech-health/teams":"Teams","^/soundcheck/tech-insights/track$":"Track","^/soundcheck/tech-insights$":"Tech Insights","^/soundcheck/quickstart":"Quick Start"};for(const[s,t]of Object.entries(c))if(new RegExp(s).test(e))return t;return null},i=e=>e.split("/").filter(c=>c).map((c,s,t)=>{const h=`/${t.slice(0,s+1).join("/")}`,n=a(h);if(n)return h===e?{title:n}:{path:h,title:n}}).filter(c=>!!c);export{i as generateBreadcrumbs};
|
|
2
2
|
//# sourceMappingURL=headerUtil.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as a}from"react/jsx-runtime";import{useTheme as c,Box as d}from"@material-ui/core";import{makeStyles as g}from"@material-ui/core/styles";import{useMemo as s,useCallback as u}from"react";import{getCheckStatusColor as t}from"../../utils/colors.esm.js";import{CategoryBar as f}from"../CategoryBar/CategoryBar.esm.js";const h=g(e=>({categoryBar:{"& .MuiBox-root > div":{height:"8px"}}})),x=({status:e,className:p})=>{const i=h(),r=c(),m=s(()=>({passed:e?.passed??0,failed:e?.failed??0,warning:e?.warning??0,error:e?.error??0,exempt:e?.exempt??0,notReported:e?.notReported??0}),[e]),n=u(o=>{switch(o){case"notApplicable":return"Not Applicable";case"notReported":return"Not Reported";default:return o.charAt(0).toUpperCase()+o.slice(1)}},[]),l=s(()=>({passed:t(r,"passed"),failed:t(r,"failed"),warning:t(r,"warning"),error:t(r,"error"),exempt:t(r,"exempt"),notReported:t(r,"not-reported")}),[r]);return a(d,{className:p,style:{width:"100%"},children:a(f,{className:i.categoryBar,data:m,categories:["passed","failed","warning","error","exempt","notReported"],categoryColors:l,showTooltip:!0,valueFormatter:o=>o.toString(),categoryFormatter:n})})};export{x as TeamStatusBar};
|
|
2
|
+
//# sourceMappingURL=TeamStatusBar.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as n,jsxs as S}from"react/jsx-runtime";import{makeStyles as L,alpha as y,Box as h,Chip as I,TextField as O,FormControlLabel as
|
|
1
|
+
import{jsx as n,jsxs as S}from"react/jsx-runtime";import{makeStyles as L,alpha as y,Box as h,Chip as I,TextField as O,FormControlLabel as w,Checkbox as E}from"@material-ui/core";import T from"@material-ui/icons/CheckBox";import z from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as j}from"@material-ui/lab";import{remove as N}from"lodash";import{useState as m,useEffect as P,useCallback as g,useMemo as V}from"react";import{CollapsablePanel as W}from"../../CollapsablePanel/CollapsablePanel.esm.js";import{ListboxVirtualized as B}from"../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useFilterContext as D}from"./FilterProvider.esm.js";import{Facet as b,facetTooltips as H}from"./types.esm.js";const $=L(({palette:e,spacing:o})=>({chip:{maxWidth:"45%",textOverflow:"ellipsis",margin:o(.5,.5,.5,0),overflow:"hidden","& svg":{color:y(e.common.white,.7),"&:hover":{color:e.common.white}},backgroundColor:e.action.disabledBackground},autoCompleteInput:{"&& input":{margin:o(1,0,0,0),padding:`${o(0,1,1,1)} !important`,width:"100%",display:"flex",alignItems:"center",justifyContent:"center"},"&& button":{"&:hover":{backgroundColor:"transparent"}}},autoComplete:{margin:o(.5,0,1,0)},selectionLabel:{lineHeight:"1em"}})),q=({facet:e})=>{const o=$(),{getFacetOptions:C,getFacetOptionLabel:r,getSelectedFacetValues:i,setSelectedFacetValues:p}=D(),[x,d]=m(!1),[k,u]=m(!1),[F,f]=m("");P(()=>{d(!!i(e)?.length)},[i,e]);const s=g(t=>{if(e===b.Entity&&t[t.length-1]){const l=t[t.length-1];if(!l.includes(":")||!l.includes("/")){u(!0),f("Custom entities require a valid kind and namespace such as: component:default/entity");return}}u(!1),f(""),p(e,t)},[e,p]),a=V(()=>i(e),[e,i]),v=g(t=>{const l=[...a];N(l,c=>c===t),s(l)},[a,s]);return n(W,{label:e,tooltip:H[e],isExpanded:x,setIsExpanded:d,children:S(h,{children:[n(h,{children:a.map(t=>n(I,{label:r(e,t),size:"small",className:o.chip,onDelete:()=>v(t),clickable:!1},t))}),n(j,{className:o.autoComplete,disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:e===b.Entity,popupIcon:null,renderTags:()=>null,options:C(e),getOptionLabel:t=>r(e,t),value:a,onChange:(t,l)=>s(l),ListboxComponent:B,ListboxProps:{itemHeight:50},renderInput:t=>n(O,{...t,className:o.autoCompleteInput,placeholder:`Search for ${e}`,error:k,helperText:F}),renderOption:(t,{selected:l})=>n(w,{onClick:c=>c.preventDefault(),control:n(E,{icon:n(z,{fontSize:"small"}),checkedIcon:n(T,{fontSize:"small"}),checked:l}),classes:{label:o.selectionLabel},label:r(e,t)})})]})})};export{q as FacetFilter};
|
|
2
2
|
//# sourceMappingURL=FacetFilter.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as F}from"react/jsx-runtime";import{parseEntityRef as L}from"@backstage/catalog-model";import{humanizeEntityRef as S}from"@backstage/plugin-catalog-react";import{createFilterOptions as U}from"@material-ui/lab/Autocomplete";import{createContext as V,useCallback as h,useMemo as E,useContext as M}from"react";import R from"react-use/lib/useLocalStorage";import{useLoggedInUser as T}from"../../../contexts/UserProvider.esm.js";import{useFacetFilters as k}from"../../../hooks/facets/useFacetFilters.esm.js";import{TechHealthLoading as A}from"../Loading/TechHealthLoading.esm.js";import{useFacetOptions as C}from"./useFacetOptions.esm.js";import{emptyFacetFilters as N,DEFAULT_NUMBER_OF_DAYS as w,mapFacetFiltersToFilter as I}from"./utils.esm.js";const m=V({facetOptionsLoading:!1,getFacetOptions:()=>[],getFacetOptionLabel:()=>"",facetFilters:N(),clearAllFilters:()=>{},getSelectedFacetValues:()=>[],setSelectedFacetValues:()=>{},setManySelectedFacetValues:()=>{},numberOfDays:w,setNumberOfDays:()=>{},filter:{},loggedInUser:"Unknown"}),_=()=>M(m),f=l=>{const{userEntityRef:c,loading:u}=T(),{isLoading:n,facetOptions:r}=C(),[p]=R("soundcheck.overview.groupRef",null),{facetFilters:a,numberOfDays:o,setFacetFilter:d,setManyFacetFilters:g,getFacetFilter:O,clearFacetFilters:y,setNumberOfDays:b}=k(r,p??void 0),v=h(e=>r[e].map(({value:t})=>t),[r]),x=E(()=>I(r,a,o,c),[a,r,o,c]),D={facetOptionsLoading:n,getFacetOptions:v,getFacetOptionLabel:(e,t)=>{let s=r[e].find(i=>i.value===t)?.label;if(!s)try{const i=L(t);s=S(i)}catch{}return U(),s??t},facetFilters:a,clearAllFilters:y,getSelectedFacetValues:e=>O(e),setSelectedFacetValues:(e,t)=>{d(e,t)},setManySelectedFacetValues:(e,t)=>{g(e,t)},numberOfDays:o,setNumberOfDays:b,filter:x??{},loggedInUser:"Unknown"};return n||u?F(A,{loadingText:l.loadingText}):F(m.Provider,{...l,value:D})};export{f as FilterProvider,f as default,_ as useFilterContext};
|
|
2
2
|
//# sourceMappingURL=FilterProvider.esm.js.map
|