@spotify/backstage-plugin-soundcheck 0.18.0 → 0.18.1
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 +29 -0
- package/dist/api.esm.js +1 -1
- package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
- package/dist/components/Badges/StatusBadge.esm.js +1 -1
- package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.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/Conditions/useRuleOptions.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/CheckPage/CheckInsightsPage.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/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/DependabotAlertsFactDetails.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/SonarQube/IssuesFactDetailsInput.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
- package/dist/components/ColorChip/ColorChip.esm.js +2 -0
- package/dist/components/Expand/Expand.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/FormControlledAutocomplete/ControlledAutocomplete.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/usePreviousSelectedGroups.esm.js +2 -0
- 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/WelcomeModal.esm.js +1 -1
- package/dist/components/QuickstartPage/styles.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
- package/dist/components/SoundcheckHeader/headerUtil.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/TechInsights/ColorLegend.esm.js +1 -1
- package/dist/components/TechInsights/ColorSchemeSelector.esm.js +2 -0
- package/dist/components/TechInsights/FilterControls.esm.js +2 -0
- package/dist/components/TechInsights/HierarchicalTechInsightsPage.esm.js +2 -0
- package/dist/components/TechInsights/HierarchyTable.esm.js +2 -0
- package/dist/components/TechInsights/LoadingOverlay.esm.js +1 -1
- package/dist/components/TechInsights/LowestPerformingTeams.esm.js +1 -1
- package/dist/components/TechInsights/NivoCirclePacking.esm.js +1 -1
- package/dist/components/TechInsights/NivoIcicle.esm.js +1 -1
- package/dist/components/TechInsights/NivoSunburst.esm.js +1 -1
- package/dist/components/TechInsights/NivoTreemap.esm.js +1 -1
- package/dist/components/TechInsights/SelectedNodeSidebar.esm.js +2 -0
- package/dist/components/TechInsights/SummaryTiles.esm.js +2 -0
- package/dist/components/TechInsights/TeamComparison/FailingComponentsTable.esm.js +1 -1
- package/dist/components/TechInsights/TeamComparison/MultiCheckStatusHistoryChart.esm.js +1 -1
- package/dist/components/TechInsights/TeamPerformanceCard.esm.js +1 -1
- package/dist/components/TechInsights/TeamStatusBar.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsCardsView.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsChartView.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsGroupSelector.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsPage2.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsTableView.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsViewSelector.esm.js +1 -1
- package/dist/components/TechInsights/Tiles/TileUtils.esm.js +1 -1
- package/dist/components/TechInsights/Tiles/TrackStatusCard.esm.js +2 -0
- package/dist/components/TechInsights/TopPerformingTeams.esm.js +1 -1
- package/dist/components/TechInsights/ViewModeControls.esm.js +2 -0
- package/dist/components/TechInsights/VisualizationBreadcrumb.esm.js +2 -0
- package/dist/components/TechInsights/findNodePath.esm.js +2 -0
- package/dist/components/TechInsights/hierarchy/GroupNode.esm.js +1 -1
- package/dist/components/TechInsights/hierarchy/Hierarchy.esm.js +1 -1
- package/dist/components/TechInsights/hierarchyToNivo.esm.js +1 -1
- package/dist/components/TechInsights/persistence/FavoriteViews.esm.js +1 -1
- package/dist/components/TechInsights/styles.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/TrackStatusChip.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TrackSelection/TrackSelection.esm.js +2 -0
- package/dist/graphql/generated/index.esm.js +188 -133
- package/dist/hooks/cache/useEntityCountCached.esm.js +2 -0
- package/dist/hooks/cache/useTrackCountCached.esm.js +2 -0
- package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityCount.esm.js +2 -0
- package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/groups/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/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/index.d.ts +3 -0
- package/dist/routes.esm.js +1 -1
- package/package.json +25 -24
- 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/TechHealth/Loading/Emoji.esm.js +0 -2
- package/dist/components/TechHealth/Loading/EmojiFountain.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/CheckComparison.esm.js +0 -2
- package/dist/components/TechInsights/TeamComparison/LineChartContainer.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/TechInsightsPage.esm.js +0 -2
- package/dist/components/TechInsights/TechInsightsSidebar.esm.js +0 -2
- package/dist/components/TechInsights/Tiles/CheckStatusTile.esm.js +0 -2
- package/dist/components/TechInsights/Tiles/TrackStatusTile.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/hierarchy/VirtualRow.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/useCheckStatusHistoriesMultiFilter.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
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,jsxs as i,Fragment as R}from"react/jsx-runtime";import{makeStyles as L,Slide as D,Dialog as E,DialogTitle as j,Box as r,IconButton as A,DialogContent as H,Typography as a,Divider as O,DialogActions as k,Button as S}from"@material-ui/core";import I from"@material-ui/icons/Close";import{uniq as N,isEmpty as g}from"lodash";import{forwardRef as z,useMemo as f}from"react";import{useGroupOptions as w}from"../../hooks/groups/useGroupOptions.esm.js";import{useGroupTypeHierarchy as M}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 W}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{LoadingIndicator as K}from"../LoadingIndicator/LoadingIndicator.esm.js";import{GroupHierarchyCategorySelection as P}from"./GroupHierarchyCategorySelection.esm.js";import{GroupHierarchyChip as y}from"./GroupHierarchyChip.esm.js";import{GroupHierarchyGroupInfo as q}from"./GroupHierarchyGroupInfo.esm.js";const F=L(n=>({dialogToolbar:{justifyContent:"flex-start"},dialogToolbarButton:{margin:n.spacing(.5,1,.5,0)},divider:{marginTop:n.spacing(2),marginBottom:n.spacing(2)}})),_=z((n,d)=>e(D,{direction:"up",ref:d,...n})),J=({open:n,handleClose:d,handleApply:b,previousGroupEntityRefs:s,selectedGroup:t,setSelectedGroup:p})=>{const m=F(),{isLoading:G,options:l}=w(),{isLoading:T,data:h}=M(),B=f(()=>{if(!h)return[];const o=[],c=u=>{o.push(u.type);for(const x of Object.values(u.children))c(x)};for(const u of Object.values(h))c(u);return N(o)},[h]),v=f(()=>l.filter(o=>o.key==="My Groups").map(o=>o.ref),[l]),C=f(()=>l.map(o=>o.ref),[l]);return i(E,{fullWidth:!0,maxWidth:"md",open:n,onClose:(o,c)=>c==="escapeKeyDown"&&d(),TransitionComponent:_,children:[e(j,{children:i(r,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[e(r,{children:"Group Selection"}),e(r,{children:e(A,{onClick:d,size:"small",children:e(I,{fontSize:"small"})})})]})}),e(H,{dividers:!0,children:i(r,{display:"flex",children:[i(r,{maxWidth:480,flex:1,children:[i(r,{marginBottom:2,children:[e(a,{variant:"h6",children:"Search All Groups"}),e(a,{variant:"subtitle2",children:"Selected Group"}),e(W,{options:C,isLoading:G,value:t,autoSelect:!1,getOptionLabel:o=>l.find(c=>c.ref===o)?.name??o,onChange:p,placeholder:"No group selected"})]}),e(O,{className:m.divider}),!t&&!g(s)&&i(r,{marginBottom:2,children:[e(a,{variant:"subtitle2",children:"Previously Selected Groups"}),e(r,{marginTop:1,children:s.map(o=>e(y,{groupEntityRef:o,selectedGroupRef:t,setSelectedGroup:p},o))})]}),!t&&!g(v)&&i(r,{marginBottom:2,children:[e(a,{variant:"subtitle2",children:"My Groups"}),e(r,{marginTop:1,children:v.map(o=>e(y,{groupEntityRef:o,selectedGroupRef:t,setSelectedGroup:p},o))})]}),t&&e(r,{marginTop:2,children:e(q,{groupEntityRef:t,selectedGroup:t,setSelectedGroup:p,groupOptions:l})})]}),i(r,{marginLeft:3,flex:1,children:[t&&!g(s)&&e(R,{children:i(r,{marginBottom:2,children:[e(a,{variant:"subtitle2",children:"Previously Selected Groups"}),e(r,{marginTop:1,children:s.map(o=>e(y,{groupEntityRef:o,selectedGroupRef:t,setSelectedGroup:p},o))})]})}),T&&i(r,{marginTop:4,marginBottom:2,children:[e(K,{}),e(r,{marginTop:2,marginBottom:2,textAlign:"center",children:e(a,{variant:"caption",children:"Loading Hierarchy Data"})})]}),!T&&i(r,{children:[e(a,{variant:"h6",children:"Search By Group Type"}),B.map(o=>e(P,{groupType:o,selectedGroupEntityRef:t,selectGroup:p,allOptions:l,isLoading:G},o))]})]})]})}),e(k,{className:m.dialogToolbar,children:i(r,{marginLeft:2,children:[e(S,{size:"small",onClick:b,variant:"contained",color:"primary",className:m.dialogToolbarButton,children:"Apply"}),e(S,{className:m.dialogToolbarButton,size:"small",onClick:d,color:"primary",children:"Cancel"})]})})]})};export{J 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
|
|
@@ -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 n,jsx as e}from"react/jsx-runtime";import{Content as v}from"@backstage/core-components";import{useApi as m,featureFlagsApiRef as w,configApiRef as C,useRouteRef as a}from"@backstage/core-plugin-api";import{usePermission as P}from"@backstage/plugin-permission-react";import{Typography as l,Grid as t,Accordion as H,AccordionSummary as S,AccordionDetails as T}from"@material-ui/core";import h from"@material-ui/icons/BarChart";import z from"@material-ui/icons/CheckCircle";import I from"@material-ui/icons/Computer";import W from"@material-ui/icons/ExpandMore";import j from"@material-ui/icons/Flag";import D from"@material-ui/icons/Timeline";import{soundcheckCollectorReadPermission as F}from"@spotify/backstage-plugin-soundcheck-common";import{integrationsPageRouteRef as Q,tracksPageRouteRef as G,checksPageRouteRef as O,campaignsPageRouteRef as q,techHealthRouteRef as B,techInsightsPageRouteRef as M}from"../../routes.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as V}from"../SoundcheckHeader/useHeader.esm.js";import{QuickstartCardBase as i}from"./QuickstartCardBase.esm.js";import{getQuickstartStyles as $}from"./styles.esm.js";import{WelcomeHelpSection as E}from"./WelcomeHelpSection.esm.js";import{WelcomeModal as J}from"./WelcomeModal.esm.js";const K=()=>{const o=$();V({title:"Welcome to Soundcheck!",description:"Soundcheck lets you define and monitor the tech health of your organization. What insights do you need today?"});const r=m(w),d=m(C).getOptionalStringArray("soundcheck.flags"),c=r.getRegisteredFlags(),u=(!c.find(s=>s.name==="soundcheck-enable-tech-insights")||r.isActive("soundcheck-enable-tech-insights"))&&(d?.includes("enable-tech-insights")??!1),{loading:g,allowed:p}=P({permission:F}),f=(!c.find(s=>s.name==="soundcheck-enable-collectors")||r.isActive("soundcheck-enable-collectors"))&&!g&&p,k=(!c.find(s=>s.name==="soundcheck-enable-tech-health")||r.isActive("soundcheck-enable-tech-health"))&&!d?.includes("soundcheck-disable-tech-health"),R=a(Q),y=a(G),b=a(O),x=a(q),A=a(B),N=a(M);return n(v,{className:o.introTitle,children:[e(J,{}),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:"}),n(t,{container:!0,direction:"row",justifyContent:"flex-start","aria-label":"getting-started-items",className:o.grid,spacing:2,children:[u&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Tech Insights",routeRef:N,icon:e(h,{}),description:`Visualize and analyze your technology landscape across teams and
|
|
2
|
+
components.`})}),k&&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:x,icon:e(j,{}),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:b,icon:e(z,{}),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:y,icon:e(D,{}),description:"Tracks encourage alignment to architectural best practices and standards."})}),f&&e(t,{item:!0,xs:12,sm:12,md:6,lg:4,className:o.cards,children:e(i,{header:"Integrations",routeRef:R,icon:e(I,{}),description:"Integrations collect raw data about your components for use in checks and tracks."})})]}),n(H,{className:o.accordion,children:[e(S,{expandIcon:e(W,{}),"aria-controls":"howdoi-content",id:"howdoi-header",children:e(l,{variant:"h5",children:"How Do I...?"})}),e(T,{children:e(E,{})})]})]})};export{K 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{jsx as o,jsxs as
|
|
1
|
+
import{jsx as o,jsxs as n}from"react/jsx-runtime";import{Dialog as s,Box as i,Typography as r,Link as a,Button as d}from"@material-ui/core";import{useState as m,useEffect as h}from"react";import{getQuickstartStyles as u}from"./styles.esm.js";const k=()=>{const e=u(),[l,t]=m(!1),c=()=>{t(!1)};return h(()=>{localStorage.getItem("hasSeenSoundcheckWelcomeModal")||(t(!0),localStorage.setItem("hasSeenSoundcheckWelcomeModal","true"))},[]),o(s,{open:l,onClose:c,"aria-labelledby":"modal-title","aria-describedby":"modal-description",children:n(i,{className:e.modal,children:[o(r,{id:"modal-title",variant:"h4",component:"div",className:e.headers,children:"Welcome to Soundcheck"}),n(r,{variant:"body1",component:"div",className:e.page,children:["You\u2019ll find default"," ",o(a,{href:"/soundcheck/tracks",className:e.link,target:"_blank",rel:"noopener noreferrer",children:"tracks"}),", ",o(a,{href:"/soundcheck/checks",className:e.link,target:"_blank",rel:"noopener noreferrer",children:"checks"}),", ","and"," ",o(a,{href:"/soundcheck/integrations",className:e.link,target:"_blank",rel:"noopener noreferrer",children:"integrations"})," ","to get you started. If you want, you can change and delete these at any time."]}),n(r,{variant:"body1",component:"div",className:e.page,children:["Check out our"," ",o(a,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/",className:e.link,target:"_blank",rel:"noopener noreferrer",children:"documentation"})," ","to learn more about Soundcheck."]}),o("div",{className:e.modalButtonContainer,children:o(d,{onClick:c,variant:"contained",children:"Got it"})})]})})};export{k as WelcomeModal};
|
|
2
2
|
//# sourceMappingURL=WelcomeModal.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"},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"},modal:{padding:n.spacing(4)},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},modalButtonContainer:{width:"100%",display:"flex",justifyContent:"flex-end"}}));export{t as getQuickstartStyles};
|
|
2
2
|
//# sourceMappingURL=styles.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as
|
|
1
|
+
import{jsx as e,jsxs as c,Fragment as k}from"react/jsx-runtime";import{Page as G,TabbedLayout as r}from"@backstage/core-components";import{useApi as f,featureFlagsApiRef as M,configApiRef as Q}from"@backstage/core-plugin-api";import{usePermission as s}from"@backstage/plugin-permission-react";import{makeStyles as W,Box as h}from"@material-ui/core";import{SpotifyLicenseBanner as q}from"@spotify/backstage-plugin-core";import{soundcheckCampaignCreatePermission as U,soundcheckCollectorReadPermission as V,soundcheckCheckCreatePermission as $,soundcheckTrackCreatePermission as z}from"@spotify/backstage-plugin-soundcheck-common";import{Routes as J,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 K}from"../../contexts/UserProvider.esm.js";import X from"../../hooks/useConfirmationModal.esm.js";import{AlertProvider as Y}from"../../hooks/useSoundcheckAlert.esm.js";import{CampaignInsightsPage as Z}from"../CampaignInsightsPage/CampaignInsightsPage.esm.js";import{CampaignsPage as _}from"../CampaignsPage/CampaignsPage.esm.js";import{CampaignCreatePage as ee}from"../CampaignCreatePage/CampaignCreatePage.esm.js";import{EditCampaignView as te}from"../CampaignsPage/EditCampaignView.esm.js";import{CheckCreatePage as ie}from"../CheckCreatePage/CheckCreatePage.esm.js";import{CheckEditPage as re}from"../CheckPage/CheckEditPage.esm.js";import{CheckInsightsPage as u}from"../CheckPage/CheckInsightsPage.esm.js";import{ChecksTab as oe}from"../ChecksTab/ChecksTab.esm.js";import{CheckTemplatesPage as ae}from"../CheckTemplatesPage/CheckTemplatesPage.esm.js";import{CollectorPage as ne}from"../CollectorPage/CollectorPage.esm.js";import{CollectorDetailsPage as ce}from"../CollectorPage/CollectorDetailsPage.esm.js";import{CollectorsPage as me}from"../CollectorsPage/CollectorsPage.esm.js";import{OverviewPageContent as se}from"../OverviewPage/OverviewPageContent.esm.js";import{QuickstartPage as P}from"../QuickstartPage/QuickstartPage.esm.js";import{SoundcheckHeader as le}from"../SoundcheckHeader/SoundcheckHeader.esm.js";import{SoundcheckHeaderProvider as pe}from"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{SoundcheckQueryClientProvider as he}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{TechHealth as de}from"../TechHealth/TechHealth.esm.js";import{HierarchicalTechInsightsPage as ge}from"../TechInsights/HierarchicalTechInsightsPage.esm.js";import"react-use/lib/useLocalStorage";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../TechInsights/styles.esm.js";import"../Charts/chartUtils.esm.js";import"../../routes.esm.js";import"../CategoryBar/CategoryBar.esm.js";import"../LoadingIndicator/LoadingIndicator.esm.js";import"../TechInsights/Tiles/TileUtils.esm.js";import"../TechInsights/TeamComparison/FailingComponentsTable.esm.js";import"../TechInsights/TeamComparison/MultiCheckStatusHistoryChart.esm.js";import"recharts";import"@material-ui/icons/Timer";import"../Charts/ChartTypes.esm.js";import"../TechInsights/hierarchy/Hierarchy.esm.js";import"../TechInsights/persistence/FavoriteViews.esm.js";import"../TechInsights/TechInsightsViewSelector.esm.js";import"@material-ui/lab";import"../GroupSelector/GroupSelector.esm.js";import{TechInsightsPage2 as ke}from"../TechInsights/TechInsightsPage2.esm.js";import{TrackCreatePage as fe}from"../TrackCreatePage/TrackCreatePage.esm.js";import{TrackEditPage as ue}from"../TrackEditPage/TrackEditPage.esm.js";import{TrackPage as Pe}from"../TrackPage/TrackPage.esm.js";import{TracksTab as Ce}from"../TracksTab/TracksTab.esm.js";const C=W(a=>({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:`${a.spacing(3)}px !important`}}})),b=({title:a="Soundcheck",children:l})=>{const m=C();return e(Y,{children:e(K,{children:e(he,{children:e(pe,{defaultTitle:a,children:e(X,{children:e(h,{className:m.root,children:c(G,{themeId:"website",children:[e(q,{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(le,{documentTitle:a}),e(h,{className:m.pageContent,children:e(h,{className:m.pageLayout,children:l})})]})})})})})})})},be=({title:a="Soundcheck",integrations:l})=>{const m=C(),o=f(M),p=f(Q).getOptionalStringArray("soundcheck.flags"),n=o.getRegisteredFlags(),v=(!n.find(i=>i.name==="soundcheck-enable-tech-insights")||o.isActive("soundcheck-enable-tech-insights"))&&(p?.includes("enable-tech-insights")??!1),x=(!n.find(i=>i.name==="soundcheck-enable-tech-health")||o.isActive("soundcheck-enable-tech-health"))&&!p?.includes("soundcheck-disable-tech-health"),I=!n.find(i=>i.name==="soundcheck-enable-collectors")||o.isActive("soundcheck-enable-collectors"),d=!n.find(i=>i.name==="soundcheck-enable-campaigns")||o.isActive("soundcheck-enable-campaigns"),{loading:T,allowed:w}=s({permission:U}),R=!T&&w,{loading:y,allowed:A}=s({permission:V}),{loading:S,allowed:D}=s({permission:$}),H=!n.find(i=>i.name==="soundcheck-enable-check-creation")||o.isActive("soundcheck-enable-check-creation"),L=!S&&D&&H,{loading:N,allowed:E}=s({permission:z}),F=!n.find(i=>i.name==="soundcheck-enable-track-creation")||o.isActive("soundcheck-enable-track-creation"),B=!N&&E&&F,O=I&&!y&&A,j=x,g=p?.includes("portal")??!1;return c(b,{title:a,children:[c(J,{children:[d&&c(k,{children:[e(t,{path:"/campaigns/:campaignId/edit",element:e(te,{})}),e(t,{path:"/campaigns/:campaignId",element:e(Z,{})}),R&&e(t,{path:"/campaigns/create",element:e(ee,{})})]}),e(t,{path:"/quickstart",element:e(P,{})}),e(t,{path:"/tech-insights/track",element:e(ge,{})}),e(t,{path:"/tracks/:trackId/edit",element:e(ue,{})}),B&&e(t,{path:"/tracks/create",element:e(fe,{})}),e(t,{path:"/tracks/:trackId",element:e(Pe,{})}),e(t,{path:"/tracks/:trackId/checks/:checkId",element:e(u,{})}),e(t,{path:"/checks/:checkId",element:e(u,{})}),e(t,{path:"/checks/:checkId/edit",element:e(re,{})}),L&&c(k,{children:[e(t,{path:"/checks/create",element:e(ie,{})}),e(t,{path:"/checks/templates",element:e(ae,{})})]}),e(t,{path:"/integrations/:integrationId",element:e(ce,{})}),e(t,{path:"/integrations/:integrationId/edit",element:e(ne,{})}),g&&e(t,{path:"/",element:e(P,{})}),e(t,{path:"/*",element:c(r,{children:[e(r.Route,{title:"Overview",path:g?"/overview":"/",children:e("div",{className:m.tabContent,children:e(se,{})})}),v&&e(r.Route,{title:"Tech Insights",path:"/tech-insights",children:e(ke,{})}),j&&e(r.Route,{title:"Tech Health",path:"/tech-health",children:e(de,{})}),e(r.Route,{title:"Checks",path:"/checks",children:e(oe,{})}),e(r.Route,{title:"Tracks",path:"/tracks",children:e(Ce,{})}),d&&e(r.Route,{title:"Campaigns",path:"/campaigns",children:e(_,{})}),O&&e(r.Route,{title:"Integrations",path:"/integrations",children:e(me,{integrations:l})})]})})]})," "]})};export{be as RoutingPage,b as RoutingPageWrapper};
|
|
2
2
|
//# sourceMappingURL=RoutingPage.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$":"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
|
|
@@ -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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{makeStyles as
|
|
1
|
+
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{makeStyles as l,Typography as r}from"@material-ui/core";import{motion as c}from"framer-motion";import{LoadingIndicator as m}from"../../LoadingIndicator/LoadingIndicator.esm.js";const s=l(()=>({container:{position:"relative",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:1,height:"100%"},textContainer:{position:"relative",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"}}));function d({title:i,subtitle:e,children:a}){const n=s();return t("div",{className:n.container,children:o("div",{className:n.textContainer,children:[t(m,{}),t("div",{style:{marginBottom:"1.1rem"}}),a??"Loading...",o(c.div,{animate:{y:0,opacity:1},initial:{y:100,opacity:0},children:[i&&t(r,{align:"center",variant:"h6",children:i}),e&&t(r,{align:"center",variant:"subtitle2",children:e})]})]})})}export{d as Loading};
|
|
2
2
|
//# sourceMappingURL=Loading.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as l,jsx as o}from"react/jsx-runtime";import{makeStyles as a}from"@material-ui/core";import{Loading as
|
|
1
|
+
import{jsxs as l,jsx as o}from"react/jsx-runtime";import{makeStyles as a,Typography as i}from"@material-ui/core";import{useEntityCountCached as d}from"../../../hooks/cache/useEntityCountCached.esm.js";import{useTrackCountCached as c}from"../../../hooks/cache/useTrackCountCached.esm.js";import{Loading as s}from"./Loading.esm.js";const u=a(e=>({container:{display:"flex",margin:"-24px",backgroundColor:e.palette.background.paper,borderTop:`1px solid ${e.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${e.palette.border}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:e.palette.background.default,height:"100%",maxWidth:"100%"},tabsPlaceholder:{height:"36.5px",backgroundColor:e.palette.background.paper}})),p=({text:e,entityCount:r,trackCount:n})=>{const t=[];return t.push(o(i,{style:{fontSize:"1.1rem"},children:e??"Loading..."})),r!==null&&(t.push(o("div",{})),t.push(l(i,{style:{fontSize:"1.1rem"},children:["Processing ",r," entities..."]}))),n!==null&&(t.push(o("div",{})),t.push(l(i,{style:{fontSize:"1.1rem"},children:["Processing ",n," tracks..."]}))),o("div",{children:t})},h=({loadingText:e})=>{const r=u(),{entityCount:n}=d(),{trackCount:t}=c();return l("div",{className:r.container,children:[o("div",{className:r.fixedColumn}),l("div",{className:r.flexibleColumn,children:[o("div",{className:r.tabsPlaceholder}),o(s,{children:o(p,{text:e,entityCount:n,trackCount:t})})]})]})};export{h as TechHealthLoading};
|
|
2
2
|
//# sourceMappingURL=TechHealthLoading.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
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 default};
|
|
2
2
|
//# sourceMappingURL=ColorLegend.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"react/jsx-runtime";import{makeStyles as i}from"@material-ui/core";import{sequentialColorInterpolators as t}from"@nivo/colors";import{interpolateRgb as o}from"d3-interpolate";import"react-router-dom";import{getPercentageColor as n}from"../../utils/colors.esm.js";i(e=>({colorSwatch:{borderRadius:4},colorSwatchContainer:{width:90,height:20},colorSwatchMenuItem:{width:90,height:20},selectorContainer:{minWidth:80},renderValueContainer:{display:"flex",alignItems:"center",paddingRight:e.spacing(3)},menuItemContainer:{display:"flex",alignItems:"center"}}));const r=e=>[{label:"Default",value:"default",interpolator:l=>o(e.palette.error.main,e.palette.success.main)(l)},{label:"Black Green",value:"black_green",interpolator:l=>o("#000000","#1DB954")(l)},{label:"Stoplight",value:"stoplight",interpolator:l=>n(e,l*100)},{label:"Viridis",value:"viridis",interpolator:t.viridis},{label:"Inferno",value:"inferno",interpolator:t.inferno},{label:"Plasma",value:"plasma",interpolator:t.plasma},{label:"Cividis",value:"cividis",interpolator:t.cividis},{label:"Warm",value:"warm",interpolator:t.warm},{label:"Cool",value:"cool",interpolator:t.cool},{label:"Cubehelix Default",value:"cubehelix_default",interpolator:t.cubehelixDefault}],p=(e,l)=>r(e).find(a=>a.value===l)?.interpolator??(a=>"#ccc");export{p as getColorInterpolator,r as getColorInterpolators};
|
|
2
|
+
//# sourceMappingURL=ColorSchemeSelector.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as p,jsx as n}from"react/jsx-runtime";import{Box as d,TextField as c,InputAdornment as z,IconButton as C,Chip as I}from"@material-ui/core";import{useTheme as k}from"@material-ui/core/styles";import S from"@material-ui/icons/Clear";import g from"@material-ui/icons/Flag";import h from"@material-ui/icons/TrackChanges";import{Autocomplete as v}from"@material-ui/lab";const A=({searchText:o,onSearchTextChange:r,selectedTrackIds:s,onSelectedTrackIdsChange:f,trackOptions:m,applicableTracks:a,isLoading:u})=>{const l=k();return u||a.length===0?null:p(d,{display:"flex",alignItems:"center",marginBottom:2,style:{gap:"8px"},children:[n(c,{placeholder:"Search tracks or campaigns...",variant:"outlined",size:"small",value:o,onChange:e=>r(e.target.value),style:{flex:1},InputProps:{endAdornment:o&&n(z,{position:"end",children:n(C,{size:"small",onClick:()=>r(""),edge:"end",children:n(S,{})})})}}),n(v,{multiple:!0,options:m,getOptionLabel:e=>e.name,value:m.filter(e=>s.includes(e.id)),onChange:(e,i)=>f(i.map(t=>t.id)),renderOption:e=>{const i=a.find(t=>t.id===e.id)?.type==="campaign";return p(d,{display:"flex",alignItems:"center",style:{gap:8},children:[i?n(g,{style:{color:l.palette.warning.main,fontSize:16}}):n(h,{style:{color:l.palette.info.main,fontSize:16}}),n("span",{children:e.name})]})},renderInput:e=>n(c,{...e,variant:"outlined",size:"small",placeholder:s.length===0?"All Tracks/Campaigns":"",style:{minWidth:300}}),renderTags:(e,i)=>e.length===0?null:e.map((t,y)=>{const x=a.find(T=>T.id===t.id)?.type==="campaign";return n(I,{label:t.name,size:"small",icon:x?n(g,{style:{color:l.palette.warning.main,fontSize:14}}):n(h,{style:{color:l.palette.info.main,fontSize:14}}),...i({index:y})},t.id)}),style:{minWidth:300}})]})};export{A as FilterControls};
|
|
2
|
+
//# sourceMappingURL=FilterControls.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as r,jsxs as s,Fragment as Te}from"react/jsx-runtime";import{useApi as re,useRouteRef as we,configApiRef as Le}from"@backstage/core-plugin-api";import{entityPresentationApiRef as Ie}from"@backstage/plugin-catalog-react";import{useTheme as ze,Box as a,Select as ne,MenuItem as T,CircularProgress as De,Typography as ae,Tabs as Pe,Tab as le}from"@material-ui/core";import{makeStyles as We}from"@material-ui/core/styles";import{sequentialColorInterpolators as N}from"@nivo/colors";import{interpolateRgb as oe}from"d3-interpolate";import{useState as w,useMemo as ce,useCallback as E,useEffect as L,useRef as se}from"react";import{useSearchParams as $e,useNavigate as Be}from"react-router-dom";import He 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 Ee}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useGroupOptions as Ge}from"../../hooks/groups/useGroupOptions.esm.js";import{useHierarchicalTrackStatus as Ae}from"../../hooks/heirarchy/useHierarchicalTrackStatus.esm.js";import{useGroupHierarchy as Ue}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{trackDetailsRouteRef as je}from"../../routes.esm.js";import{getPercentageColor as Fe}from"../../utils/colors.esm.js";import{FormFieldLabel as K}from"../FormFieldLabel/FormFieldLabel.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Me}from"../SoundcheckHeader/useHeader.esm.js";import{TrackEntitiesTable as Oe}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackSelection as Ve}from"../TrackSelection/TrackSelection.esm.js";import _e from"./ColorLegend.esm.js";import{HierarchyTable as Ze}from"./HierarchyTable.esm.js";import{hierarchyToNivo as G}from"./hierarchyToNivo.esm.js";import qe from"./LowestPerformingTeams.esm.js";import me from"./NivoCirclePacking.esm.js";import Ke from"./NivoIcicle.esm.js";import Qe from"./NivoSunburst.esm.js";import Ye from"./NivoTreemap.esm.js";import{SelectedNodeSidebar as Je}from"./SelectedNodeSidebar.esm.js";import{TechInsightsGroupSelector as Xe}from"./TechInsightsGroupSelector.esm.js";import et from"./TopPerformingTeams.esm.js";import{VisualizationBreadcrumb as tt}from"./VisualizationBreadcrumb.esm.js";const de=We(i=>({root:{display:"flex",flexDirection:"column",height:"100%",padding:i.spacing(2)},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(2),alignItems:"flex-end"},rightControls:{display:"flex",gap:i.spacing(2),alignItems:"center"},trackSelect:{minWidth:200},visualizationSelect:{minWidth:120},colorSchemeSelect:{minWidth:80},visualizationContainer:{flex:1,minHeight:400,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:24},layoutContainer:{display:"flex",height:"100%"},mainLayout:{flex:3,display:"flex",flexDirection:"column",minWidth:0},mainLayoutTable:{flex:1,display:"flex",flexDirection:"column",minWidth:0},sidebarContainer:{flex:1,minWidth:320,marginLeft:24,borderLeft:`1px solid ${i.palette.divider}`,paddingLeft:24},breadcrumbContainer:{flex:1,marginRight:16}}));function ue({interpolator:i,width:S=100,height:p=16,steps:l=40,style:m={}}){const x=`linear-gradient(to right, ${Array.from({length:l},(f,W)=>{const n=W/(l-1);return i(n)}).join(",")})`;return r(a,{style:{width:S,height:p,background:x,borderRadius:4,...m}})}function pe(i){const{children:S,value:p,index:l,...m}=i,x=de();return r("div",{role:"tabpanel",hidden:p!==l,id:`tabpanel-${l}`,"aria-labelledby":`tab-${l}`,className:x.mainContent,...m,children:p===l&&S})}const it=()=>{const i=de(),S=ze(),p=re(Ie),[l,m]=$e(),x=l.get("track")||"",[f,W]=w(x),n=l.get("group"),I=l.get("node"),[Q,Y]=w(null),[A,fe]=w(0),he=Be(),ge=we(je),[ye,h]=w(null),[d,v]=w(null),[J,$]=w(!1);Me({title:"Tech Insights"});const{data:ve}=Ee({}),c=ve?.edges.find(e=>e.node.id===f)?.node,{data:g,isLoading:be}=Ue(n||void 0,{enabled:!!n&&!!f&&!!c,ownedEntitiesFilter:c?.filter??void 0}),{data:u}=Ae({trackId:f,groupRef:n||"",skip:!f||!n}),xe=ce(()=>c?.levels?c.levels.flatMap(e=>e.checks.map(t=>t.id)):[],[c]),C=l.get("visualization")||"treemap",X=l.get("colors")||"default",U=E((e,t)=>{if(e.entityRef===t)return e;if(e.children)for(const o of e.children){const R=U(o,t);if(R)return R}return null},[]);L(()=>{if(I&&g&&n&&u&&c){const e=g[n];if(e){const t=G(e,u||null,()=>"#ccc",p,void 0);if(t){const o=U(t,I);o&&(v(o),h(o))}}}},[I,g,n,u,c,U,p]),L(()=>{if(!d&&!I&&!J&&g&&n&&u&&c){const e=g[n];if(e){const t=G(e,u||null,()=>"#ccc",p,void 0);if(t)if(C==="table"){const o=(R=>{const D=[],P=y=>{!y.children||y.children.length===0?y.numberOfEntities>0&&D.push(y):y.children.forEach(q=>P(q))};return P(R),D})(t);o.length>0?(v(o[0]),h(o[0])):(v(t),h(t))}else v(t),h(t)}}},[d,I,J,g,n,u,c,p,C]);const j=E(e=>{v(e),h(e),e===null&&d!==null?$(!0):e!==null&&$(!1);const t=new URLSearchParams(l.toString());e&&e.entityRef!==n?t.set("node",e.entityRef):t.delete("node"),m(t,{replace:!0})},[l,m,n,d]),{options:b,isLoading:B}=Ge(),[F,M]=He("soundcheck.overview.groupRef",null),z=n,O=re(Le).getOptionalString("soundcheck.overview.defaultSelectedGroupType"),H=ce(()=>{if(!B&&b.length){if(z||F){const e=z??F;return b.find(t=>t.ref===e)??b[0]}else if(O)return b.find(e=>e.type===O)??b[0];return b[0]}return null},[O,B,b,z,F]);L(()=>{if(!B&&b.length&&!z&&H){const e=new URLSearchParams(l.toString());e.set("group",H.ref),m(e,{replace:!0}),M(H.ref)}},[B,b,z,H,l,m,M]);const Ce=E(e=>{W(e);const t=new URLSearchParams(l.toString());t.set("track",e),n&&t.delete("group"),t.delete("node"),m(t),v(null),h(null)},[l,n,m]),ee=se(null),te=E(()=>{v(null),h(null),$(!1);const e=new URLSearchParams(l.toString());e.delete("node"),m(e,{replace:!0})},[l,m]),V=se(null);L(()=>{if(V.current&&V.current!==C&&g&&n&&u&&c){const e=g[n];if(e){const t=G(e,u||null,()=>"#ccc",p,void 0);if(t)if(C==="table"){const o=(R=>{const D=[],P=y=>{!y.children||y.children.length===0?y.numberOfEntities>0&&D.push(y):y.children.forEach(q=>P(q))};return P(R),D})(t);o.length>0&&(v(o[0]),h(o[0]))}else v(t),h(t)}}V.current=C},[C,g,n,u,c,p]),L(()=>{n&&n!==ee.current&&te(),ee.current=n},[n,te]),L(()=>{f!==x&&W(x)},[x]);const Se=e=>{const t=e.target.value;if(t!==null){const o=new URLSearchParams(l.toString());o.set("visualization",t),m(o),Y(null),$(!1)}},ke=e=>{const t=new URLSearchParams(l.toString());t.set("colors",e.target.value),m(t)},Ne=(e,t)=>{fe(t)},_=e=>{if(!f)return;const t=ge({trackId:f});he(`${t}?owners=${encodeURIComponent(e)}`,{replace:!0})},Z=[{label:"Default",value:"default",interpolator:e=>oe(S.palette.error.main,S.palette.success.main)(e)},{label:"Black Green",value:"black_green",interpolator:e=>oe("#000000","#1DB954")(e)},{label:"Stoplight",value:"stoplight",interpolator:e=>Fe(S,e*100)},{label:"Viridis",value:"viridis",interpolator:N.viridis},{label:"Inferno",value:"inferno",interpolator:N.inferno},{label:"Plasma",value:"plasma",interpolator:N.plasma},{label:"Cividis",value:"cividis",interpolator:N.cividis},{label:"Warm",value:"warm",interpolator:N.warm},{label:"Cool",value:"cool",interpolator:N.cool},{label:"Cubehelix Default",value:"cubehelix_default",interpolator:N.cubehelixDefault}],ie=Z.find(e=>e.value===X)?.interpolator??(e=>"#ccc"),k=e=>ie(e/100),Re=()=>{if(!n||!f||!c)return null;const e={trackId:f,groupRef:n,track:c,hierarchyData:g,trackStatus:u,getColor:k,onZoomChange:Y,onNodeHover:t=>h(t),hoveredNode:ye,selectedNode:d,onNodeSelect:j};switch(C){case"treemap":return r(Ye,{...e});case"icicle":return r(Ke,{...e});case"sunburst":return r(Qe,{...e});case"circlepack":return r(me,{...e});case"table":{const t=g?.[n];if(!t)return null;const o=G(t,u||null,k,p,void 0);return r(Ze,{hierarchyData:o??null,track:c,getColor:k,onTeamClick:_,selectedNode:d,onNodeSelect:j,trackStatus:u})}default:return r(me,{...e})}};return r(a,{className:i.root,children:s(a,{className:i.layoutContainer,children:[r(a,{className:i.mainLayout,children:s(a,{className:i.mainContent,children:[s(a,{className:i.controlsContainer,children:[s(a,{className:i.leftControls,children:[r(Xe,{onChange:e=>{v(null),h(null),M(e)}}),s(a,{minWidth:240,children:[r(K,{title:"Select Track"}),r(Ve,{selectedTrackId:f,selectTrack:Ce,selectedGroupRef:n??""})]})]}),s(a,{className:i.rightControls,children:[s(a,{className:i.visualizationSelect,children:[r(K,{title:"Visualization"}),s(ne,{value:C,onChange:Se,displayEmpty:!0,fullWidth:!0,margin:"dense",children:[r(T,{value:"circlepack",children:"Circle Pack"}),r(T,{value:"icicle",children:"Icicle"}),r(T,{value:"sunburst",children:"Sunburst"}),r(T,{value:"treemap",children:"Treemap"}),r(T,{value:"table",children:"Table"})]})]}),s(a,{className:i.colorSchemeSelect,children:[r(K,{title:"Color Scheme"}),r(ne,{value:X,fullWidth:!0,onChange:ke,margin:"dense",renderValue:e=>{const t=Z.find(o=>o.value===e)?.interpolator;return r(a,{display:"flex",alignItems:"center",pr:3,children:typeof t=="function"&&r(ue,{interpolator:t,width:90,height:20})})},children:Z.map(e=>r(T,{value:e.value,children:r(a,{display:"flex",alignItems:"center",children:e.interpolator&&r(ue,{interpolator:e.interpolator,width:90,height:20})})},e.value))})]})]})]}),f&&n&&s(Te,{children:[s(a,{className:i.visualizationContainer,children:[s(a,{mb:.5,display:"flex",alignItems:"center",children:[r(a,{className:i.breadcrumbContainer,children:r(tt,{node:d,onNodeClick:e=>{j(e)}})}),r(a,{className:i.colorLegendWrapper,children:r(_e,{interpolator:ie,orientation:"horizontal",height:24,width:"100%",markerValue:d?d.passPercentage:void 0})})]}),r(a,{className:i.visualizationContent,children:be?s(a,{className:i.loadingContainer,children:[r(De,{className:i.loadingSpinner,size:48}),r(ae,{className:i.loadingText,children:"Loading organization hierarchy..."}),r(ae,{className:i.loadingSubtext,children:"This may take a few moments while we gather data about your organization."})]}):Re()})]}),s(a,{className:i.tabsContainer,children:[s(Pe,{value:A,onChange:Ne,indicatorColor:"primary",textColor:"primary",children:[r(le,{label:"Summary"}),r(le,{label:"Entities"})]}),r(pe,{value:A,index:0,children:s(a,{className:i.summaryContainer,children:[r(a,{className:`${i.summaryBox} ${i.summaryBoxLeft}`,children:r(qe,{trackStatus:u||null,getColor:k,onTeamClick:_})}),r(a,{className:`${i.summaryBox} ${i.summaryBoxRight}`,children:r(et,{trackStatus:u||null,getColor:k,onTeamClick:_})})]})}),r(pe,{value:A,index:1,children:r(a,{className:i.entitiesContainer,children:c&&r(Oe,{track:c,initialPageSize:10,owners:d&&d.entityRef!==n?[d.entityRef]:Q?[Q]:[n],getColor:k})})})]})]})]})}),r(a,{className:i.sidebarContainer,children:d&&r(Je,{node:d,checkIds:xe,track:c,getColor:k})})]})})};export{it as HierarchicalTechInsightsPage};
|
|
2
|
+
//# sourceMappingURL=HierarchicalTechInsightsPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as h,jsx as t}from"react/jsx-runtime";import{EntityRefLink as U}from"@backstage/plugin-catalog-react";import{makeStyles as V,Typography as w,TableContainer as K,Paper as W,Table as $,TableHead as q,TableRow as I,TableCell as l,TableBody as F,Box as G,TablePagination as J}from"@material-ui/core";import N from"@material-ui/icons/ArrowDownward";import P from"@material-ui/icons/ArrowUpward";import Q from"@material-ui/icons/ChevronRight";import{useState as g,useEffect as X,useMemo as E}from"react";import{useSearchParams as Y}from"react-router-dom";import{ColorChip as Z}from"../ColorChip/ColorChip.esm.js";import{TeamStatusBar as _}from"./TeamStatusBar.esm.js";const ee=V(r=>({tableContainer:{display:"flex",flexDirection:"column",height:"100%"},selectedRow:{backgroundColor:r.palette.action.selected,"&:hover":{backgroundColor:r.palette.action.hover}},table:{"& tbody tr":{cursor:"pointer","&:hover":{backgroundColor:r.palette.action.hover}},"& tbody tr.selected":{backgroundColor:r.palette.action.selected,"&:hover":{backgroundColor:r.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:{padding:"16px 0 8px 0"},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%"}})),te=r=>{const m=[],p=o=>{!o.children||o.children.length===0?o.numberOfEntities>0&&m.push(o):o.children.forEach(u=>p(u))};return p(r),m},T=(r,m)=>{if(!r||typeof r!="object")return null;if(r.groupRef===m)return r.status;if(r.children&&Array.isArray(r.children))for(const p of r.children){const o=T(p,m);if(o)return o}return null},ne=({hierarchyData:r,getColor:m,onTeamClick:p,selectedNode:o,onNodeSelect:u,trackStatus:S})=>{const n=ee(),[f,x]=Y(),[y,R]=g(0),[C,O]=g(10),B=f.get("sortBy"),H=f.get("direction"),[d,L]=g(B||"passPercentage"),[s,D]=g(H||"desc");X(()=>{const e=new URLSearchParams(f.toString());e.set("sortBy",d),e.set("direction",s),x(e,{replace:!0})},[d,s,f,x]);const b=E(()=>r?te(r):[],[r]),k=E(()=>b.map(e=>({id:e.entityRef,name:e.name,entityRef:e.entityRef,passPercentage:e.passPercentage,numberOfEntities:e.numberOfEntities})).sort((e,c)=>{let a,i;switch(d){case"name":a=e.name.toLowerCase(),i=c.name.toLowerCase();break;case"passPercentage":a=e.passPercentage,i=c.passPercentage;break;case"numberOfEntities":a=e.numberOfEntities,i=c.numberOfEntities;break;default:return 0}return typeof a=="number"&&typeof i=="number"?s==="asc"?a-i:i-a:typeof a=="string"&&typeof i=="string"?s==="asc"?a.localeCompare(i):i.localeCompare(a):s==="asc"?a<i?-1:a>i?1:0:a>i?-1:a<i?1:0}),[b,d,s]);if(!r)return null;const j=e=>{if(u)if(o&&e.entityRef===o.entityRef)u(null);else{const c=b.find(a=>a.entityRef===e.entityRef);u(c||null)}},z=(e,c)=>{R(c)},A=e=>{O(parseInt(e.target.value,10)),R(0)},v=e=>{D(d===e&&s==="asc"?"desc":"asc"),L(e)},M=k.slice(y*C,y*C+C);return h("div",{className:n.tableContainer,children:[t(w,{variant:"h6",className:n.title,children:"Teams"}),t(K,{component:W,className:n.tableContainerPaper,children:h($,{children:[t(q,{children:h(I,{children:[t(l,{width:"32px"}),t(l,{className:n.headerCell,onClick:()=>v("name"),children:h("div",{className:n.headerContent,children:["Team",t("div",{className:n.sortIconContainer,children:d==="name"&&(s==="asc"?t(P,{className:n.sortIcon}):t(N,{className:n.sortIcon}))})]})}),t(l,{className:n.headerCell,onClick:()=>v("numberOfEntities"),children:h("div",{className:n.headerContent,children:["Entities",t("div",{className:n.sortIconContainer,children:d==="numberOfEntities"&&(s==="asc"?t(P,{className:n.sortIcon}):t(N,{className:n.sortIcon}))})]})}),t(l,{className:n.headerCell,onClick:()=>v("passPercentage"),children:h("div",{className:n.headerContent,children:["Compliance",t("div",{className:n.sortIconContainer,children:d==="passPercentage"&&(s==="asc"?t(P,{className:n.sortIcon}):t(N,{className:n.sortIcon}))})]})}),t(l,{className:n.statusColumnHeader})]})}),t(F,{children:M.map(e=>{const c=o&&e.entityRef===o.entityRef;return h(I,{hover:!0,onClick:()=>j(e),style:{cursor:"pointer"},children:[t(l,{width:"32px",align:"center",className:n.chevronCell,children:c?t(Q,{color:"primary",className:n.chevronIcon}):t("div",{className:n.placeholderDiv})}),t(l,{children:t(U,{entityRef:e.entityRef,defaultKind:"group",onClick:a=>{a.stopPropagation(),p?.(e.entityRef)}})}),t(l,{children:t(w,{variant:"body2",children:e.numberOfEntities.toLocaleString()})}),t(l,{children:t(Z,{value:`${Math.round(e.passPercentage)}%`,getColor:m,numericValue:e.passPercentage,size:"medium"})}),t(l,{children:t(G,{className:n.statusColumnCell,children:t(_,{status:T(S||null,e.entityRef)})})})]},e.id)})})]})}),t(J,{rowsPerPageOptions:[10,25,50],component:"div",count:k.length,rowsPerPage:C,page:y,onPageChange:z,onRowsPerPageChange:A})]})};export{ne as HierarchyTable};
|
|
2
|
+
//# sourceMappingURL=HierarchyTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as g,jsxs as u}from"react/jsx-runtime";import{makeStyles as f,Box as h,Typography as d}from"@material-ui/core";const p=f(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;function 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}}const x=({isLoading:e,hierarchyData:a,track:s})=>{const t=p();if(!e)return null;const{teams:n,entities:o,results:r}=y(a,s);return g(h,{className:t.overlay,children:u(h,{className:t.messageContainer,children:[g(d,{className:t.mainMessage,children:"Calculating..."}),u(d,{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 default};
|
|
2
2
|
//# sourceMappingURL=LoadingOverlay.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{useApi as g}from"@backstage/core-plugin-api";import{entityPresentationApiRef as u}from"@backstage/plugin-catalog-react";import{useTheme as c}from"@material-ui/core";import{TeamPerformanceListCard as i}from"./TeamPerformanceListCard.esm.js";const f=({trackStatus:e,getColor:a,limit:n=3,onTeamClick:r})=>{const s=c(),m=g(u);if(!e)return o(i,{title:"Teams Needing Attention",titleColor:s.palette.error.main,teams:[],getColor:a,onTeamClick:r,emptyMessage:"Loading team performance data..."});const l=(e.children||[]).filter(t=>t.status.passed+t.status.failed+t.status.warning+t.status.error+t.status.notReported>0&&(t.status.allPassPercentage??0)<50&&!t.children?.length).sort((t,p)=>(t.status.allPassPercentage??0)-(p.status.allPassPercentage??0)).slice(0,n).map(t=>({groupRef:t.groupRef,teamName:m.forEntity(t.groupRef).snapshot.primaryTitle,passPercentage:t.status.allPassPercentage??0}));return o(i,{title:"Teams Needing Attention",titleColor:s.palette.error.main,teams:l,getColor:a,onTeamClick:r,emptyMessage:"Every team is performing above 50%! \u{1F389}"})};export{f as default};
|
|
2
2
|
//# sourceMappingURL=LowestPerformingTeams.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
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 E}from"@backstage/plugin-catalog-react";import{useTheme as P}from"@material-ui/core";import{makeStyles as T}from"@material-ui/core/styles";import{ResponsiveCirclePacking as j}from"@nivo/circle-packing";import{useState as z,useEffect as L,useMemo as M}from"react";import{getContrastTextColor as b}from"./colorContrast.esm.js";import{findNodePath as C}from"./findNodePath.esm.js";import{hierarchyToNivo as A}from"./hierarchyToNivo.esm.js";import D from"./LoadingOverlay.esm.js";const F=T(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}}})),G=({groupRef:e,hierarchyData:r,trackStatus:l,getColor:m,onZoomChange:v,track:k,onNodeHover:c,selectedNode:d,onNodeSelect:x})=>{const[t,p]=z(null),f=F(),y=P(),u=w(E);L(()=>{p(d?d.id:null)},[d]);const a=M(()=>{if(!r||!e)return null;const o=r[e];return o?A(o,l||null,m,u,void 0):null},[r,l,e,m,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),x?.(o.data)};if(!a)return null;const s=!l,h=y.palette.text.disabled,R=b(h);return I("div",{className:f.root,children:[n("div",{className:f.nivoContainer,children:n(j,{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=>c?.(o.data),onMouseLeave:()=>c?.(null)})}),n(D,{isLoading:s,hierarchyData:r,track:k})]})};export{G as default};
|
|
2
2
|
//# sourceMappingURL=NivoCirclePacking.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as T,jsx as a,Fragment as M}from"react/jsx-runtime";import{useApi as j}from"@backstage/core-plugin-api";import{entityPresentationApiRef as E}from"@backstage/plugin-catalog-react";import{useTheme as L}from"@material-ui/core";import{makeStyles as W}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"./colorContrast.esm.js";import{hierarchyToNivo as O}from"./hierarchyToNivo.esm.js";import P from"./LoadingOverlay.esm.js";const F=W(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,u]=A(null),p=F(),R=L(),f=j(E);D(()=>{u(s?s.id:null)},[s]);const h=H(()=>{if(!r||!e)return null;const o=r[e];if(!o)return null;const t=O(o,l||null,c,f,void 0);if(i&&t){const g=(n,v)=>{if(n.id===v)return n;if(n.children)for(const N of n.children){const C=g(N,v);if(C)return C}return null};return g(t,i)||t}return t},[r,l,e,c,f,i]),w=o=>{const t=i===o.data.id?null:o.data.id;u(t),x?.(o.data.entityRef),S?.(o.data)};if(!h)return null;const d=!l,b=R.palette.text.disabled,I=k(b);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?b: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(M,{}),onClick:w,onMouseEnter:o=>m?.(o.data),onMouseLeave:()=>m?.(null)})}),a(P,{isLoading:d,hierarchyData:r,track:y})]})};export{Z as default};
|
|
2
2
|
//# sourceMappingURL=NivoIcicle.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as g,jsx as r,Fragment as C}from"react/jsx-runtime";import{useApi as v}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"./colorContrast.esm.js";import{hierarchyToNivo as w}from"./hierarchyToNivo.esm.js";import N 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=v(k),m=S(()=>{if(!e||!t)return null;const o=e[t];return o?w(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(C,{}),arcLabelsSkipAngle:20,onMouseEnter:o=>l?.(o.data),onMouseLeave:()=>l?.(null),onClick:o=>f?.(o.data)})}),r(N,{isLoading:i,hierarchyData:e,track:u})]})};export{T as default};
|
|
2
2
|
//# sourceMappingURL=NivoSunburst.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as y,jsx as a,Fragment as S}from"react/jsx-runtime";import{useApi as N}from"@backstage/core-plugin-api";import{entityPresentationApiRef as R}from"@backstage/plugin-catalog-react";import{useTheme as T}from"@material-ui/core";import{makeStyles as w}from"@material-ui/core/styles";import{ResponsiveTreeMap as L}from"@nivo/treemap";import{useState as M,useMemo as I}from"react";import{getContrastTextColor as i}from"./colorContrast.esm.js";import{hierarchyToNivo as j}from"./hierarchyToNivo.esm.js";import z from"./LoadingOverlay.esm.js";const A=w(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}}})),D=({groupRef:t,hierarchyData:e,trackStatus:n,getColor:l,onZoomChange:f,track:h,onNodeHover:d,onNodeSelect:b})=>{const[g,C]=M(null),s=A(),v=T(),p=N(R),m=I(()=>{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]),k=o=>{const x=g===o.data.id?null:o.data.id;C(x),f?.(o.data.entityRef),b?.(o.data)};if(!m)return null;const r=!n,c=v.palette.text.disabled,u=i(c);return y("div",{className:s.root,children:[a("div",{className:s.nivoContainer,children:a(L,{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(S,{}),onClick:k,onMouseEnter:o=>d?.(o.data),onMouseLeave:()=>d?.(null)})}),a(z,{isLoading:r,hierarchyData:e,track:h})]})};export{D as default};
|
|
2
2
|
//# sourceMappingURL=NivoTreemap.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as r,jsx as t}from"react/jsx-runtime";import{Link as M}from"@backstage/core-components";import{useApi as $,useRouteRef as V}from"@backstage/core-plugin-api";import{entityPresentationApiRef as U,EntityRefLink as F}from"@backstage/plugin-catalog-react";import{makeStyles as G,useTheme as K,Box as n,Typography as l,Chip as Q,CircularProgress as z,IconButton as Y,Tooltip as q}from"@material-ui/core";import J from"@material-ui/icons/ExpandLess";import X from"@material-ui/icons/ExpandMore";import{useState as Z,useEffect as _,useCallback as ee}from"react";import{useSearchParams as te}from"react-router-dom";import{useCheckStatuses as oe}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{trackCheckDetailsRouteRef as ae}from"../../routes.esm.js";import{getCheckStatusColor as ie}from"../../utils/colors.esm.js";import{ColorChip as R}from"../ColorChip/ColorChip.esm.js";import{getContrastTextColor as T}from"./colorContrast.esm.js";const ne=G(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},secondaryTitle:{display:"-webkit-box",WebkitLineClamp:2,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},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}})),B=e=>new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(e);function re({node:e,checkIds:h,track:s,getColor:k}){const f=K(),o=ne(),W=$(U),S=V(ae),[L]=te(),[A,N]=Z(()=>s?.levels?new Set(s.levels.map(a=>a.ordinal)):new Set),y=e?W.forEntity(e.entityRef):void 0;_(()=>{if(s?.levels){const a=new Set(s.levels.map(m=>m.ordinal));N(a)}},[s?.levels]);const P=a=>{N(m=>{const i=new Set(m);return i.has(a)?i.delete(a):i.add(a),i})},E=a=>a<50?{label:"Needs Attention",color:f.palette.error.main,textColor:T(f.palette.error.main)}:a<80?null:{label:"Healthy",color:f.palette.success.main,textColor:T(f.palette.success.main)},O=ee(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)}},[]),j=(a,m)=>{const i=a.numberOfEntities-a.notApplicable-a.exempt,g=a.passed,u=a.failed,b=a.warning,d=a.error,c=a.notReported,C=[{name:"passed",value:g},{name:"failed",value:u},{name:"warning",value:b},{name:"error",value:d},{name:"not-reported",value:c}].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}),C.map((p,x)=>r("div",{className:o.tooltipItem,children:[r("div",{className:o.tooltipCategory,children:[t("span",{style:{width:12,height:4,borderRadius:2,backgroundColor:ie(f,p.name),marginRight:8}}),t(l,{variant:"caption",children:O(p.name)})]}),t("div",{className:o.tooltipValue,children:r(l,{variant:"caption",children:[p.value," of ",B(i)," (",Math.round(p.value/i*100),"%)"]})})]},x))]})},I=oe(e&&h&&h.length?{checkIds:h,trackId:s?.id,filter:{"relations.ownedBy":[e.entityRef]}}:{checkIds:[]},!!(e&&h&&h.length)),v=E(e.passPercentage),D=()=>{if(!s?.levels||h.length===0)return t(n,{mt:2,children:t(l,{variant:"body2",color:"textSecondary",children:"No checks found for this entity."})});const a=s.levels,m=(I.data||[]).reduce((i,g)=>(i[g.id]=g,i),{});return r(n,{mt:2,className:o.checksContainer,children:[t(l,{variant:"subtitle2",className:o.checksTitle,children:"Checks"}),a.map(i=>{const g=i.name??`Level ${i.ordinal}`,u=i.ordinal,b=A.has(u);return r(n,{mb:1,children:[r(n,{className:o.levelHeader,onClick:()=>P(u),children:[t(l,{variant:"overline",className:o.levelLabel,children:g}),t(Y,{size:"small",className:o.expandIcon,children:b?t(J,{}):t(X,{})})]}),b&&i.checks.map(d=>{const c=m[d.id],C=c?c.numberOfEntities-c.notApplicable-c.exempt:0,p=c&&C>0?Math.round(c.passed/C*100):0;let x;if(s&&S&&e){const H=S({trackId:s.id,checkId:d.id}),w=new URLSearchParams(L.toString());w.set("owners",e.entityRef),x=`${H}?${w.toString()}`}return r(n,{display:"flex",alignItems:"center",mb:.5,children:[t(n,{mr:1,display:"flex",children:I.isLoading?t(R,{value:"",getColor:()=>f.palette.divider,numericValue:0,size:"small"}):t(q,{title:c?j(c,d):"",placement:"top",arrow:!0,classes:{tooltip:o.tooltip},children:t(n,{children:t(R,{value:`${p}%`,getColor:k,numericValue:p,size:"small"})})})}),t(n,{flex:1,minWidth:0,children:x?t(M,{to:x,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(n,{children:[r(n,{className:o.titleContainer,children:[r(n,{className:o.titleContent,children:[y?.snapshot.Icon&&t(n,{component:"span",className:o.titleIcon,children:t(y.snapshot.Icon,{fontSize:"small"})}),t(l,{variant:"h6",noWrap:!0,className:o.titleText,children:t(F,{entityRef:e.entityRef,defaultKind:"Group",children:y?.snapshot.primaryTitle||e.name})})]}),v&&t(Q,{label:v.label,style:{background:v.color,color:v.textColor},className:o.statusChip,size:"small"})]}),y?.snapshot.secondaryTitle&&t(l,{variant:"caption",color:"textSecondary",className:o.secondaryTitle,children:y.snapshot.secondaryTitle}),t(n,{className:o.entityContainer,children:r(l,{variant:"body2",color:"textSecondary",className:o.entityLabel,children:["Entities:"," ",t("span",{className:o.entityCount,children:B(e.numberOfEntities)})]})}),t(n,{className:o.progressContainer,children:r(n,{className:o.progressWrapper,children:[t(z,{variant:"determinate",value:100,size:80,thickness:6,className:o.progressBackground}),t(z,{variant:"determinate",value:e.passPercentage,size:80,thickness:6,style:{color:k(e.passPercentage)}}),r(l,{className:o.progressText,children:[Math.round(e.passPercentage),"%"]})]})}),D()]})}export{re as SelectedNodeSidebar};
|
|
2
|
+
//# sourceMappingURL=SelectedNodeSidebar.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as i,jsx as r,Fragment as t}from"react/jsx-runtime";import{makeStyles as v,Box as n,Paper as o,CircularProgress as l,Typography as c}from"@material-ui/core";import{useTheme as f}from"@material-ui/core/styles";import k from"@material-ui/icons/Flag";import x from"@material-ui/icons/Group";import N from"@material-ui/icons/TrackChanges";import{Skeleton as g}from"@material-ui/lab";import{getColorInterpolator as I}from"./ColorSchemeSelector.esm.js";const S=v(a=>({summaryTilesContainer:{gap:24,display:"flex",marginBottom:32},summaryTile:{flex:1,padding:24,display:"flex",alignItems:"center",background:a.palette.background.paper},summaryIconTrackChanges:{color:a.palette.info.main,fontSize:32,marginRight:16},summaryIconGroup:{color:a.palette.text.secondary,fontSize:32,marginRight:16},summaryIconCampaign:{color:a.palette.primary.main,fontSize:32,marginRight:16},summaryCircularProgress:{marginRight:16},skeletonText:{marginBottom:4}})),z=({summaryStats:a,colorInterpolator:p,isLoading:d=!1})=>{const e=S(),s=f(),u=I(s,p),m=(y,h,C,T=!1)=>i(t,{children:[y,r(n,{children:d||T?i(t,{children:[r(g,{variant:"text",width:60,height:32,className:e.skeletonText}),r(g,{variant:"text",width:80,height:20})]}):i(t,{children:[r(c,{variant:"h5",children:h}),r(c,{variant:"body2",color:"textSecondary",children:C})]})})]});return i(n,{className:e.summaryTilesContainer,children:[r(o,{className:e.summaryTile,children:m(r(k,{style:{color:s.palette.warning.main},className:e.summaryIconCampaign}),a.totalCampaigns??0,(a.totalCampaigns??0)===1?"Campaign":"Campaigns",a.totalCampaigns===void 0)}),r(o,{className:e.summaryTile,children:m(r(N,{className:e.summaryIconTrackChanges}),a.totalTracks??0,(a.totalTracks??0)===1?"Track":"Tracks",a.totalTracks===void 0)}),r(o,{className:e.summaryTile,children:m(a.avgCompliance!==void 0?r(l,{variant:"determinate",value:a.avgCompliance,size:32,thickness:4,style:{color:u(a.avgCompliance/100)},className:e.summaryCircularProgress}):r(l,{variant:"indeterminate",size:32,thickness:4,className:e.summaryCircularProgress}),a.avgCompliance!==void 0?`${a.avgCompliance}%`:"0%","Avg Compliance",a.avgCompliance===void 0)}),r(o,{className:e.summaryTile,children:m(r(x,{className:e.summaryIconGroup}),a.numTeams??0,"Teams",a.numTeams===void 0)})]})};export{z as SummaryTiles};
|
|
2
|
+
//# sourceMappingURL=SummaryTiles.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";import"react";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"../../PassingPercentProgressbar/PassPercentageProgressbar.esm.js";t(o=>({tableContainer:{width:"100%",minWidth:300,margin:"auto",marginTop:o.spacing(2),marginBottom:o.spacing(2),borderRadius:o.shape.borderRadius},headerCell:{color:o.palette.common.white,fontWeight:"bold",borderBottom:`2px solid ${o.palette.primary.dark}`},sortLabel:{color:o.palette.common.white,"&.MuiTableSortLabel-active":{color:o.palette.secondary.light},"& .MuiTableSortLabel-icon":{color:o.palette.common.white}},tableRow:{cursor:"default","&:hover":{backgroundColor:o.palette.action.hover,cursor:"default"}},progressCircle:{display:"flex",alignItems:"center",gap:o.spacing(1),minWidth:"fit-content"}}));
|
|
2
2
|
//# sourceMappingURL=FailingComponentsTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import"react/jsx-runtime";import{makeStyles as i}from"@material-ui/core";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@material-ui/icons/Timer";import"react";import"recharts";import"../../Charts/ChartTypes.esm.js";import"luxon";i({root:{height:250,width:"100%",position:"relative",borderRadius:"4px"}});
|
|
2
2
|
//# sourceMappingURL=MultiCheckStatusHistoryChart.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
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{ColorChip as u}from"../ColorChip/ColorChip.esm.js";import{getContrastTextColor as b}from"./colorContrast.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=b(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(u,{value:`${i}%`,getColor:l,numericValue:i})})]})};export{w as TeamPerformanceCard};
|
|
2
2
|
//# sourceMappingURL=TeamPerformanceCard.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
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as t,Fragment as p,jsx as e}from"react/jsx-runtime";import{useTheme as d,Box as a,Typography as n,Divider as o}from"@material-ui/core";import h from"@material-ui/icons/Flag";import f from"@material-ui/icons/TrackChanges";const y=({filteredCampaignTracks:l,filteredNonCampaignTracks:s,campaignTracks:g,TrackCard:m,classes:i})=>{const c=d();return t(p,{children:[t(a,{display:"flex",alignItems:"center",className:i.sectionHeader,style:{marginTop:32,gap:12},children:[e(h,{style:{color:c.palette.warning.main},fontSize:"large"}),e(n,{variant:"h5",children:"Campaigns"})]}),e(o,{style:{marginBottom:16}}),l.length>0?e(a,{className:i.gridContainer,style:{marginTop:0},children:e(a,{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",style:{gap:24},children:l.map(r=>e(m,{track:r},r.id))})}):e(a,{className:i.emptyState,children:e(n,{variant:"h6",children:g.length>0?"No active campaigns matching the current filters":"No active campaigns."})}),s.length>0&&t(a,{className:i.gridContainer,children:[t(a,{display:"flex",alignItems:"center",className:i.sectionHeader,style:{gap:12},children:[e(f,{style:{color:c.palette.info.main},fontSize:"large"}),e(n,{variant:"h5",children:"Tracks"})]}),e(o,{style:{marginBottom:16}}),e(a,{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",style:{gap:24},children:s.map(r=>e(m,{track:r},r.id))})]})]})};export{y as TechInsightsCardsView};
|
|
2
|
+
//# sourceMappingURL=TechInsightsCardsView.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as a,jsxs as r,Fragment as w}from"react/jsx-runtime";import{Box as c,Divider as T,Button as S,FormControl as C,InputLabel as v,Select as x,MenuItem as m,Typography as A}from"@material-ui/core";import{ResponsiveContainer as P,BarChart as B,CartesianGrid as L,XAxis as N,YAxis as z,Bar as M,RadarChart as $,PolarGrid as D,PolarAngleAxis as K,PolarRadiusAxis as U,Radar as W}from"recharts";const j=({filteredCampaignTracks:p,filteredNonCampaignTracks:g,trackStatusMap:s,chartType:o,showRadar:R,searchParams:n,setSearchParams:d,handleTrackClick:u,theme:i,classes:h})=>{const I=e=>{e&&e.trackId&&u(e.trackId)};return a(c,{className:h.chartContainer,children:r(c,{className:h.chartSection,children:[a(T,{style:{marginBottom:16}}),p.length>0||g.length>0?r(c,{className:h.barChart,children:[r(c,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[a(c,{display:"flex",style:{gap:8},children:R&&r(w,{children:[a(S,{variant:o==="bar"?"contained":"outlined",size:"small",onClick:()=>{const e=new URLSearchParams(n.toString());e.set("chartType","bar"),d(e,{replace:!0})},children:"Bar"}),a(S,{variant:o==="radar"?"contained":"outlined",size:"small",onClick:()=>{const e=new URLSearchParams(n.toString());e.set("chartType","radar"),d(e,{replace:!0})},children:"Radar"})]})}),o==="bar"&&r(c,{display:"flex",style:{gap:16},children:[r(C,{size:"small",style:{minWidth:120},children:[a(v,{children:"Sort By"}),r(x,{value:n.get("chartSort")?.split("-")[0]||"value",onChange:e=>{const t=new URLSearchParams(n.toString()),l=n.get("chartSort")?.split("-")[1]||"asc";t.set("chartSort",`${e.target.value}-${l}`),d(t,{replace:!0})},children:[a(m,{value:"name",children:"Name"}),a(m,{value:"value",children:"Compliance"})]})]}),r(C,{size:"small",style:{minWidth:120},children:[a(v,{children:"Direction"}),r(x,{value:n.get("chartSort")?.split("-")[1]||"asc",onChange:e=>{const t=new URLSearchParams(n.toString()),l=n.get("chartSort")?.split("-")[0]||"name";t.set("chartSort",`${l}-${e.target.value}`),d(t,{replace:!0})},children:[a(m,{value:"asc",children:"Ascending"}),a(m,{value:"desc",children:"Descending"})]})]})]})]}),o==="bar"?a(P,{width:"100%",height:500,children:r(B,{data:[...p.map(e=>{const t=s.get(e.id)?.status?.allPassPercentage??0;return{name:e.name,compliance:Math.round(t),trackId:e.id,type:"campaign"}}),...g.map(e=>{const t=s.get(e.id)?.status?.allPassPercentage??0;return{name:e.name,compliance:Math.round(t),trackId:e.id,type:"track"}})].sort((e,t)=>{const l=n.get("chartSort")||"value-asc",[b,y]=l.split("-");if(b==="value"){const f=t.compliance-e.compliance;return y==="desc"?f:-f}const k=e.name.localeCompare(t.name);return y==="desc"?-k:k}),margin:{top:20,right:30,left:20,bottom:20},children:[a(L,{strokeDasharray:"0",strokeWidth:.5,vertical:!1}),a(N,{dataKey:"name",angle:-45,textAnchor:"end",height:80,interval:0,tick:{fontSize:12,fill:i.palette.text.primary},axisLine:!1}),a(z,{domain:[0,100],tickFormatter:e=>`${e}%`,tick:{fontSize:12,fill:i.palette.text.primary},axisLine:!1}),a(M,{dataKey:"compliance",fill:i.palette.info.main,onClick:e=>u(e.trackId),style:{cursor:"pointer"}})]})}):a(P,{width:"100%",height:500,children:r($,{cx:"50%",cy:"50%",outerRadius:"80%",data:[...p.map(e=>{const t=s.get(e.id)?.status?.allPassPercentage??0;return{name:e.name,compliance:Math.round(t),trackId:e.id,type:"campaign"}}),...g.map(e=>{const t=s.get(e.id)?.status?.allPassPercentage??0;return{name:e.name,compliance:Math.round(t),trackId:e.id,type:"track"}})],children:[a(D,{strokeWidth:.5}),a(K,{dataKey:"name",tick:{fill:i.palette.text.primary}}),a(U,{angle:30,domain:[0,100],tick:{fill:i.palette.text.primary}}),a(W,{name:"Compliance",dataKey:"compliance",stroke:i.palette.info.main,fill:i.palette.info.main,fillOpacity:.6,onClick:I,style:{cursor:"pointer"}})]})})]}):a(c,{className:h.emptyState,children:a(A,{variant:"h6",children:"No tracks or campaigns matching the current filters."})})]})})};export{j as TechInsightsChartView};
|
|
2
|
+
//# sourceMappingURL=TechInsightsChartView.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsxs as h,jsx as l}from"react/jsx-runtime";import{useApi as y,configApiRef as S}from"@backstage/core-plugin-api";import{EntityDisplayName as G}from"@backstage/plugin-catalog-react";import{Box as g,Chip as x}from"@material-ui/core";import{useMemo as v,useEffect as R,useCallback as w}from"react";import{useSearchParams as L}from"react-router-dom";import P from"react-use/lib/useLocalStorage";import{useGroupOptions as b}from"../../hooks/groups/useGroupOptions.esm.js";import"../GroupHierarchySelector/GroupHierarchySelectorDialog.esm.js";import{GroupHierarchySelector as k}from"../GroupHierarchySelector/GroupHierarchySelector.esm.js";import{usePreviousSelectedGroups as C}from"../GroupHierarchySelector/usePreviousSelectedGroups.esm.js";const I=({onChange:m})=>{const{options:o,isLoading:n}=b(),[t,s]=L(),[c,p]=P("soundcheck.overview.groupRef",null),i=t.get("group"),u=y(S).getOptionalString("soundcheck.overview.defaultSelectedGroupType"),{addGroup:a}=C(),r=v(()=>{if(!n&&o.length){if(i||c){const e=i??c;return o.find(f=>f.ref===e)??o[0]}else if(u)return o.find(e=>e.type===u)??o[0];return o[0]}return null},[u,n,o,i,c]);R(()=>{if(!n&&o.length&&!i&&r){const e=new URLSearchParams(t.toString());e.set("group",r.ref),s(e,{replace:!0}),p(r.ref),m?.(r.ref),a(r.ref)}},[n,o,i,r,t,s,p]);const d=w(e=>{const f=new URLSearchParams(t.toString());f.set("group",e),s(f),p(e),m?.(e),a(e)},[a,m,t,p,s]);return h(g,{display:"flex",alignItems:"center",children:[l(k,{currentSelectedGroup:r?.ref,applyGroup:d},r?.ref),r?.ref&&l(g,{display:"flex",alignItems:"center",marginLeft:1,children:l(x,{size:"small",color:"secondary",style:{marginBottom:4,marginTop:4},label:l(G,{entityRef:r.ref})})})]})};export{I as TechInsightsGroupSelector};
|
|
2
2
|
//# sourceMappingURL=TechInsightsGroupSelector.esm.js.map
|