@spotify/backstage-plugin-soundcheck 0.12.8 → 0.12.10
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 +22 -0
- package/alpha/package.json +2 -2
- package/dist/api.esm.js +1 -1
- package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
- package/dist/components/CacheConfig/utils.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignChecks.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignDetailsPage.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignResultsTable.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignListPage/CampaignListPage.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
- package/dist/components/CampaignsTab/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/CampaignForm.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/EditCampaignView.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignScheduleField/CampaignScheduleField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignScheduleField/EndDateChips.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignMilestonesStep.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignTrackStep.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/hooks/useCampaignForm.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/hooks/utils.esm.js +1 -1
- package/dist/components/CampaignsTab/MutateCampaignsViews/utils/validation.esm.js +1 -1
- package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
- package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
- package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
- package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
- package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
- package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
- package/dist/components/CheckCard/CheckCard.esm.js +1 -1
- package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
- package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
- package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +2 -0
- package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +2 -0
- package/dist/components/CheckPage/CheckEntitiesTable/utils.esm.js +2 -0
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +2 -0
- package/dist/components/CheckPage/CheckPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckStatusBar.esm.js +2 -0
- package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +2 -0
- package/dist/components/CheckPage/CheckStatusTable.esm.js +2 -0
- package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +2 -0
- package/dist/components/CheckPage/StatusRow.esm.js +2 -0
- package/dist/components/CheckPage/utils.esm.js +2 -0
- package/dist/components/ChecksErrors/ChecksErrors.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/useRuleInputHandlers.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
- package/dist/components/ChecksPage/MutateCheckViews/utils/checkFormUtils.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/FactCollectionConfig.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
- package/dist/components/DraggableChip/DraggableChip.esm.js +1 -1
- package/dist/components/DroppableInput/DroppableInput.esm.js +1 -1
- package/dist/components/EditTrackPage/EditTrackPage.esm.js +1 -1
- package/dist/components/EmptyState/EmptyState.esm.js +1 -1
- package/dist/components/EntityContent/EntityContent.esm.js +1 -1
- package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/Filter/FilterComponent.esm.js +1 -1
- package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
- package/dist/components/Filter/utils.esm.js +1 -1
- package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
- package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
- package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
- package/dist/components/Frequency/util.esm.js +1 -1
- package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
- package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
- package/dist/components/LevelCard/LevelCard.esm.js +1 -1
- package/dist/components/LevelCard/LevelTooltip.esm.js +1 -1
- package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
- package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
- package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
- package/dist/components/OverviewPage/CampaignRow/CampaignRow.esm.js +1 -1
- package/dist/components/OverviewPage/CampaignRow/utils.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
- package/dist/components/OverviewPage/OverviewTabs.esm.js +1 -1
- package/dist/components/OverviewPage/TableContent/TableContent.esm.js +1 -1
- package/dist/components/OverviewPage/TableContent/VirtualTableContent.esm.js +1 -1
- package/dist/components/Pagination/CursorPagination.esm.js +1 -1
- package/dist/components/Pagination/Pagination.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
- package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
- package/dist/components/ResultsTable/CheckCell/CheckCell.esm.js +1 -1
- package/dist/components/ResultsTable/HighestLevelBadge.esm.js +1 -1
- package/dist/components/ResultsTable/ProgramCheckIndicator.esm.js +1 -1
- package/dist/components/ResultsTable/ProgramCheckRow.esm.js +1 -1
- package/dist/components/ResultsTable/ProgramTitleRow.esm.js +1 -1
- package/dist/components/ResultsTable/ResultsTableFooter.esm.js +1 -1
- package/dist/components/ResultsTable/skeletons/ResultsTableSkeleton.esm.js +1 -1
- package/dist/components/ResultsTable/virtualized/Row.esm.js +1 -1
- package/dist/components/ResultsTable/virtualized/VirtualizedResultsTable.esm.js +1 -1
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/SearchBar/SearchBar.esm.js +1 -1
- package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
- package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
- package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
- package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
- package/dist/components/TechHealth/Filters/utils.esm.js +1 -1
- package/dist/components/TechHealth/TechHealth.esm.js +1 -1
- package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
- package/dist/components/TechHealthTabs/TechHealthExportFunctions.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
- package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
- package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
- package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
- package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
- package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackLevelsChart.esm.js +1 -1
- package/dist/components/TrackPage/TrackPage.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +47 -27
- package/dist/hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js +1 -1
- package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
- package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
- package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
- package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
- package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
- package/dist/hooks/checks/useExecuteCheck.esm.js +2 -0
- package/dist/hooks/entities/useCheckEntities.esm.js +2 -0
- package/dist/hooks/entities/useEntityRefsForUser.esm.js +1 -1
- package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
- package/dist/hooks/graphqlKeys.esm.js +1 -1
- package/dist/hooks/groups/useAllGroups.esm.js +1 -1
- package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
- package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
- package/dist/hooks/tracks/useGetChecksMap.esm.js +1 -1
- package/dist/hooks/useFeatureFlag.esm.js +2 -0
- package/dist/images/k8s_blue.svg +108 -0
- package/dist/images/k8s_white.svg +108 -0
- package/dist/routes.esm.js +1 -1
- package/dist/text.esm.js +1 -1
- package/package.json +26 -19
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Grid as
|
|
1
|
+
import{Grid as l,Button as B,Menu as I,MenuItem as L,ListItemIcon as w,ListItemText as z}from"@material-ui/core";import{makeStyles as M}from"@material-ui/core/styles";import N from"@material-ui/icons/Apps";import G from"@material-ui/icons/GridOn";import P from"@material-ui/icons/KeyboardArrowDown";import V from"@material-ui/icons/Reorder";import{ToggleButtonGroup as R,ToggleButton as d}from"@material-ui/lab";import e,{useRef as A,useState as u,useEffect as D}from"react";import{CSVLink as O}from"react-csv";import{SearchBar as W}from"../SearchBar/SearchBar.esm.js";import{ViewMode as h}from"./techHealthTabUtils.esm.js";const _=M(t=>({header:{padding:t.spacing(0,0,1),display:"flex"},headerButtons:{display:"flex",gap:t.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},exportButton:{height:"40px",width:"112px"},csvLink:{display:"none"},menuIconSize:{minWidth:t.spacing(4),color:t.palette.text.primary},menuList:{backgroundColor:t.palette.background.paper,color:t.palette.text.primary}})),j=({viewMode:t,setViewMode:g,isLoading:m,searchTerm:f,setSearchTerm:E,searchPlaceholder:x,fetchCsvData:v,csvFilename:b})=>{const r=_(),c=A(),S=(a,p)=>{p!==null&&g(p)},[s,n]=u(null),[o,k]=u([]),i=!!s,C=a=>{n(a.currentTarget)},T=()=>{n(null)},y=async()=>{n(null);const a=await v();k(a)};return D(()=>{o.length&&c?.current?.link.click()},[o]),e.createElement(l,{container:!0,spacing:2,className:r.header},e.createElement(l,{item:!0,xs:6},e.createElement(W,{searchTerm:f,setSearchTerm:E,disabled:m,placeholder:x||"Search",variant:"outlined",size:"small"})),e.createElement(l,{item:!0,xs:6,className:r.headerButtons},e.createElement(B,{id:"export-button",className:r.exportButton,disabled:m,variant:"contained",color:"primary","aria-controls":i?"export-menu":void 0,"aria-haspopup":"true","aria-expanded":i?"true":void 0,onClick:C,endIcon:e.createElement(P,null)},"Export"),e.createElement(O,{data:o,filename:b,className:r.csvLink,ref:c,target:"_blank"}),e.createElement(I,{id:"export-menu",anchorEl:s,getContentAnchorEl:null,open:i,onClose:T,MenuListProps:{"aria-labelledby":"export-button",disablePadding:!0,className:r.menuList},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}},e.createElement(L,{onClick:y},e.createElement(w,{color:"inherit",className:r.menuIconSize},e.createElement(G,{fontSize:"small"})),e.createElement(z,null,"CSV"))),e.createElement(R,{size:"small",value:t,exclusive:!0,onChange:S},e.createElement(d,{value:h.TABLE,title:"Table view"},e.createElement(V,{color:"inherit"})),e.createElement(d,{value:h.GRID,title:"Grid view"},e.createElement(N,{color:"inherit"})))))};export{j as PassRateTabHeader};
|
|
2
2
|
//# sourceMappingURL=PassRateTabHeader.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as
|
|
1
|
+
import{parseEntityRef as c}from"@backstage/catalog-model";import{DateTime as h}from"luxon";function s(a,t){const e=a;if(t){const n=h.utc();for(let o=t-1;o>=0;o--)e.push(n.minus({day:o}).toISODate())}return e}function r(a){if(!a)return 0;const t=a.map(e=>e.trendPassRates?.length??1);return Math.max(1,...t)}function u(a){const t=[];return t.push(s(["check_id","check_name","check_owner_ref"],r(a))),a?.length&&a.map(e=>{t.push([e.id,e.checkName,e.checkOwnerRef,...e.trendPassRates??[e.snapshotPassRate]])}),t}function p(a){const t=[];if(t.push(s(["entity_ref","entity_name","entity_owner_ref"],r(a))),a?.length)for(const e of a){const n=e.trendPassRates?.length?e.trendPassRates:[e.snapshotPassRate];t.push([e.id,c(e.id).name,e.entityOwnerRef??"",...n])}return t}function m(a){const t=[];return t.push(s(["team_ref","team_name"],r(a))),a?.length&&a.map(e=>{t.push([e.id,e.groupTitle??c(e.id).name,...e.trendPassRates??[e.snapshotPassRate]])}),t}function R(a,t,e){return e?[e.find(({trackId:n})=>n===a.id)?.campaignId??"",a.trackName,a.trackOwnerRef]:[a.id,a.trackName,a.trackOwnerRef,t.levelOrdinal,t.levelName??`Level ${t.levelOrdinal}`,...t.trendPassRates??[t.snapshotPassRate]]}function d(a,t){const e=[],n=a?.length?Math.max(...a.map(l=>r(l.levels))):0,o=t?["campaign_id","campaign_name","campaign_owner"]:["track_id","track_name","track_owner_ref","level_ordinal","level_name"];return e.push(s(o,n)),a?.length&&a.map(l=>{l.levels?.map(i=>{e.push(R(l,i,t))})}),e}function v(a){const t=[];return t.push(s(["name"],a?.overallCheckPassRates?.length??0)),a?.overallCheckPassRates?.length&&t.push(["Check Pass Rate",...a.overallCheckPassRates]),t}function P(a){const t=[];return t.push(s(["level_ordinal","level_name"],r(a?.overallTrackPassRate))),a?.overallTrackPassRate?.length&&a.overallTrackPassRate.map(e=>{t.push([e.levelOrdinal,`Level ${e.levelOrdinal}`,...e.trendPassRates??[e.snapshotPassRate]])}),t}function f(a){const t=[];return t.push(s(["entity_ref","entity_name"],r(a?.overallEntityPassRates))),a?.overallEntityPassRates?.length&&a.overallEntityPassRates.map(e=>{t.push([e.id,c(e.id).name,...e.trendPassRates??[0]])}),t}function g(a){const t=[];return t.push(s(["team_ref","team_name"],1)),a?.groupPassRates?.edges.length&&a?.groupPassRates?.edges.map(({node:e})=>{t.push([e.id,e.groupTitle??c(e.id).name,e.snapshotPassRate])}),t}export{u as checkPassRatesToCsv,p as entityPassRatesToCsv,s as getHeaderRowWithDates,r as getHistoryLength,m as groupPassRatesToCsv,v as overallCheckPassRateToCsv,f as overallEntityPassRatesToCsv,g as overallGroupPassRatesToCsv,P as overallTrackPassRatesToCsv,d as trackPassRatesToCsv};
|
|
2
2
|
//# sourceMappingURL=TechHealthExportFunctions.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Box as m,Typography as s}from"@material-ui/core";import t from"react";import"recharts";import{convertPassRateToDataPoints as n}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as p}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as i}from"../PassRateTabStyles.esm.js";const l=({row:{trendPassRates:r,snapshotPassRate:
|
|
1
|
+
import{Box as m,Typography as s}from"@material-ui/core";import t from"react";import"recharts";import{convertPassRateToDataPoints as n}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as p}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as i}from"../PassRateTabStyles.esm.js";const l=({row:{trendPassRates:r,snapshotPassRate:o}})=>{const e=i(),a=n(r??[]);return t.createElement(m,{className:e.flexColumn},t.createElement(s,null,Math.round(o),"%"),t.createElement(p,{chartData:a,tableChart:!0}))};export{l as TrackTrendColumn};
|
|
2
2
|
//# sourceMappingURL=TrackLevelTrendColumn.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRouteRef as
|
|
1
|
+
import{useRouteRef as N}from"@backstage/core-plugin-api";import{Typography as k,Box as O,Grid as A}from"@material-ui/core";import e,{useState as d,useEffect as y,useMemo as D}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as S}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import{trackDetailsRouteRef as F}from"../../../routes.esm.js";import{trackPassRatesCsvFilename as G}from"../../../utils/charts.esm.js";import{PassRateGrid as x}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as B}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as V}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as I}from"../../TechHealth/Loading/Loading.esm.js";import{trackPassRatesToCsv as $}from"../TechHealthExportFunctions.esm.js";import{ActionColumn as H}from"../ActionColumn.esm.js";import{NameColumn as W}from"../NameColumn.esm.js";import{OwnerColumn as j}from"../OwnerColumn.esm.js";import{PassRateTabHeader as q}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as z}from"../PassRateTabStyles.esm.js";import{ViewMode as g,generateTrackPassRateGridData as J,getDetailsRoute as K}from"../techHealthTabUtils.esm.js";import{TrackTrendColumn as Q}from"./TrackLevelTrendColumn.esm.js";const v=(m,n,a)=>{const i=Math.min(5,n-m+1);return Array.from({length:i}).map((l,s)=>{const o=m+s;return{label:a?"PROGRESS":`LEVEL ${o}`,id:`levels-${s}`,renderCell:r=>{const t=r.levels?.find(({levelOrdinal:u})=>u===o);return t?e.createElement(Q,{row:t}):e.createElement(e.Fragment,null)}}})},P=(m,n,a,i)=>{const l=m.flatMap(r=>r.levels?.map(t=>t.levelOrdinal)||[]),s=Math.min(...l),o=Math.max(...l);return[{label:"NAME",id:"trackName",renderCell:r=>e.createElement(W,{name:r.trackName??r.id,description:r.trackDescription})},...v(s,o,!!a),{label:"OWNER",id:"trackOwnerRef",renderCell:r=>e.createElement(j,{ownerEntityRef:r.trackOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>e.createElement(H,{navigateTo:K(r,n,a,i)})}]},U=()=>{const m=z(),{filter:n}=V(),a=N(F),{data:i,isLoading:l,isError:s}=S(n),[o,r]=d(g.TABLE),[t,u]=d(""),[f,R]=d(0),[E,h]=d(10);y(()=>{R(0)},[n,t]);const w=D(()=>P(i?.individualTrackPassRate??[],a),[i?.individualTrackPassRate,a]);if(l)return e.createElement(I,null);if(s)return e.createElement(k,{color:"error"},"Failed to load tracks");const{individualTrackPassRate:T}=i;if(!T)return e.createElement(k,{color:"error"},"No available tracks");const c=t.length?T.filter(({id:p,trackName:C})=>C?.toLowerCase()?.includes(t.toLowerCase())||p.toLowerCase().includes(t.toLowerCase())):T,b=async()=>$(c),L=(p,C)=>{R(()=>C)},M=p=>{h(+p.target.value),R(0)};return e.createElement(O,{className:m.root},e.createElement(A,{container:!0,direction:"row"},e.createElement(q,{viewMode:o,setViewMode:r,isLoading:l,searchTerm:t,setSearchTerm:u,searchPlaceholder:"Search Available Tracks",fetchCsvData:b,csvFilename:G}),o===g.TABLE&&e.createElement(B,{data:c,columns:w}),o===g.GRID&&e.createElement(x,{data:J(c.slice(f*E,(f+1)*E),a),totalCount:c?.length??0,page:f,rowsPerPage:E,onPageChange:L,onRowsPerPageChange:M})))};export{U as TrackResultsTab,P as generateColumns,v as generateTrendColumns};
|
|
2
2
|
//# sourceMappingURL=TrackResultsTab.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as
|
|
1
|
+
import{parseEntityRef as p}from"@backstage/catalog-model";import"react";import"recharts";import{convertPassRateToDataPoints as l}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{formatLineChartData as P}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"../PassRateGrid/PassRateGrid.esm.js";import{Trend as n}from"../PassRateGrid/types.esm.js";var m=(e=>(e[e.TABLE=0]="TABLE",e[e.GRID=1]="GRID",e))(m||{});function i(e){if(!e||!e.length)return n.FLAT;if(e.length===1)return e[0]>0?n.UP:n.FLAT;const t=e[e.length-1]-e[0];return t<0?n.DOWN:t>0?n.UP:n.FLAT}function u(e,t){return e.map(a=>({id:a.id,name:a.checkName??a.id,description:a.checkDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.checkOwnerRef??void 0,navigateTo:t({checkId:a.id})}))}function h(e,t){return e.map(a=>({id:a.id,name:p(a.id).name,description:a.entityDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.entityOwnerRef??void 0,navigateTo:`${t(p(a.id))}/soundcheck`}))}function f(e,t){return e.map(a=>({id:a.id,name:a.groupTitle??p(a.id).name,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},navigateTo:t(p(a.id))}))}const c=(e,t,a,o)=>{if(t)return t({trackId:e});if(a&&o){const s=o.find(({trackId:r})=>r===e)?.campaignId;if(s)return a({campaignId:s})}};function g(e,t,a,o){return e.map(s=>({id:s.id,name:s.trackName??s.id,description:s.trackDescription??void 0,lineChart:{snapshotPassRates:s.levels?.map(({levelOrdinal:r,levelName:d,snapshotPassRate:R,trendPassRates:v})=>({name:d?`Level ${r} (${d})`:`Level ${r}`,value:R,trend:i(v??[])}))??[],trendPassRates:P({overallTrackPassRate:s.levels}),lineConfigs:s.levels?.map(({levelOrdinal:r,levelName:d})=>({dataKey:`Level${r}`,name:d??`Level ${r}`}))??[]},owner:s.trackOwnerRef??void 0,navigateTo:c(s.id,t,a,o)}))}export{m as ViewMode,i as calculateTrend,u as generateCheckPassRateGridData,h as generateEntityPassRateGridData,f as generateGroupPassRateGridData,g as generateTrackPassRateGridData,c as getDetailsRoute};
|
|
2
2
|
//# sourceMappingURL=techHealthTabUtils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as g,Grid as i,Typography as m}from"@material-ui/core";import e,{useState as x}from"react";import{DraggableChip as b}from"../../../../DraggableChip/DraggableChip.esm.js";import{LoadingIndicator as C}from"../../../../LoadingIndicator/LoadingIndicator.esm.js";import{SearchBar as E}from"../../../../SearchBar/SearchBar.esm.js";const f=g(t=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:0},subtitle:{color:t.palette.text.primary},chipContainer:{display:"flex",flexDirection:"column",alignItems:"flex-start",padding:t.spacing(1),gap:t.spacing(.75)}})),y=({chips:t,disabled:l,onContextMenuAdd:a})=>e.createElement(e.Fragment,null,t.map(n=>e.createElement(b,{disabled:l,key:n.id,chip:n,onContextMenuAdd:a?()=>a(n):void 0}))),S=()=>e.createElement(m,{variant:"body1",color:"textSecondary"},"There are no matches."),T=({isLoading:t,chips:l=[],disabled:a,label:n,onContextMenuAdd:d})=>{const
|
|
1
|
+
import{makeStyles as g,Grid as i,Typography as m}from"@material-ui/core";import e,{useState as x}from"react";import{DraggableChip as b}from"../../../../DraggableChip/DraggableChip.esm.js";import{LoadingIndicator as C}from"../../../../LoadingIndicator/LoadingIndicator.esm.js";import{SearchBar as E}from"../../../../SearchBar/SearchBar.esm.js";const f=g(t=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingTop:0},subtitle:{color:t.palette.text.primary},chipContainer:{display:"flex",flexDirection:"column",alignItems:"flex-start",padding:t.spacing(1),gap:t.spacing(.75)}})),y=({chips:t,disabled:l,onContextMenuAdd:a})=>e.createElement(e.Fragment,null,t.map(n=>e.createElement(b,{disabled:l,key:n.id,chip:n,onContextMenuAdd:a?()=>a(n):void 0}))),S=()=>e.createElement(m,{variant:"body1",color:"textSecondary"},"There are no matches."),T=({isLoading:t,chips:l=[],disabled:a,label:n,onContextMenuAdd:d})=>{const o=f(),[c,p]=x(""),s=l.filter(u=>u.name.toLowerCase().includes(c.toLowerCase())),h=l.length>0||c;let r=null;return t?r=e.createElement(C,null):s.length>0?r=e.createElement(y,{disabled:a??!1,chips:s,onContextMenuAdd:d}):h&&(r=e.createElement(S,null)),e.createElement(i,{container:!0},e.createElement(i,{item:!0,xs:12,className:o.columnHeader},e.createElement(m,{variant:"subtitle1",className:o.subtitle},n??"Checks")),e.createElement(i,{item:!0,xs:12},e.createElement(E,{searchTerm:c,disabled:t||a,setSearchTerm:p,placeholder:"Search Available Checks",variant:"outlined",size:"small"})),e.createElement(i,{item:!0,className:o.chipContainer,xs:12},r))};export{T as ChecksSection};
|
|
2
2
|
//# sourceMappingURL=ChecksSection.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as x}from"@material-ui/core";import{findIndex as C}from"lodash";import s,{useCallback as m,useEffect as D}from"react";import{useFormContext as E,useFieldArray as S}from"react-hook-form";import{ChecksErrors as b}from"../../../../ChecksErrors/ChecksErrors.esm.js";import{DroppableInput as y}from"../../../../DroppableInput/DroppableInput.esm.js";const F=x(()=>({container:{display:"flex",flexDirection:"column"}})),I=({index:c,disabled:a,addedCheck:o,onRemoveCheck:n})=>{const d=F(),{control:p,formState:{errors:f}}=E(),{fields:t,remove:i,append:e}=S({control:p,name:`levelsStep.levels.${c}.checks`,rules:{required:!0}}),h=m(r=>{e(r)},[e]),u=m(r=>{const k=C(t,v=>v.id===r.id);i(k),n(r)},[i,n,t]);D(()=>{o&&e(o)},[o,e]);const l=f?.levelsStep?.levels?.[c]?.checks;return s.createElement("div",{className:d.container},s.createElement(y,{chips:t,onDelete:u,onDrop:h,error:!!l,placeholder:"Drag and drop checks here to include them in this level",disabled:a}),l&&s.createElement(b,{checksErrors:l}))};export{I as LevelChipsSection};
|
|
2
2
|
//# sourceMappingURL=LevelChipsSection.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as h,Grid as n,Typography as f,FormHelperText as E}from"@material-ui/core";import e from"react";import{useFormContext as b,useFieldArray as x}from"react-hook-form";import{FormTextInput as m}from"../../../../FormTextInput/FormTextInput.esm.js";import{NoBorderButton as c}from"../../../../NoBorderButton/NoBorderButton.esm.js";import{LevelChipsSection as S}from"./LevelChipsSection.esm.js";const y=h(t=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{color:t.palette.text.primary},levelHeader:{display:"flex",alignItems:"center"},removeButton:{minWidth:120,display:"flex",alignItems:"center",marginLeft:t.spacing(1)},inputNameBase:{fontSize:t.typography.subtitle1.fontSize,fontWeight:700},inputDescriptionBase:{fontSize:t.typography.fontSize,fontWeight:"normal"},errorText:{color:t.palette.error.main},buttonContainer:{marginRight:t.spacing(2)}})),k=({disabled:t,addedCheck:p,onRemoveCheck:d})=>{const a=y(),{control:r,formState:{errors:s},getValues:o}=b(),{fields:i,remove:v,append:u}=x({control:r,name:"levelsStep.levels"});return e.createElement(n,{container:!0},e.createElement(n,{item:!0,xs:12,className:a.columnHeader},e.createElement(f,{variant:"subtitle1",className:a.subtitle},"Levels"),e.createElement("div",{className:a.buttonContainer},!t&&e.createElement(c,{label:"Add Level",onClick:()=>u({name:`Level ${i.length+1}`,description:"",checks:[]})}))),e.createElement(n,{container:!0,item:!0,spacing:5},i.map((g,l)=>e.createElement(n,{container:!0,item:!0,xs:12,spacing:2,key:g.id},e.createElement(n,{item:!0,xs:12,className:a.levelHeader},e.createElement(n,{container:!0,spacing:1},e.createElement(n,{item:!0,xs:!0},e.createElement(m,{name:`levelsStep.levels.${l}.name`,placeholder:"Level Name",control:r,disabled:t,variant:"outlined",size:"small",inputProps:{classes:{input:a.inputNameBase}},margin:"none",error:s?.levelsStep?.levels?.[l]?.name})),!t&&i.length>1&&e.createElement(n,{item:!0,className:a.removeButton},e.createElement(c,{label:"Remove Level",onClick:()=>v(l),disabled:t})))),e.createElement(n,{item:!0,xs:12},e.createElement(S,{index:l,disabled:t,addedCheck:p,onRemoveCheck:d}),s?.levelsStep?.levels?.[l]?.checks?.message&&e.createElement(E,{className:a.errorText},s?.levelsStep?.levels?.[l]?.checks?.message)),e.createElement(n,{item:!0,xs:12},e.createElement(m,{name:`levelsStep.levels.${l}.description`,placeholder:"Enter description here",control:r,disabled:t,label:`${o(`levelsStep.levels.${l}.name`)}'s description`,variant:"outlined",size:"small",inputProps:{classes:{input:a.inputDescriptionBase},"aria-label":`${o(`levelsStep.levels.${l}.name`)} description`},margin:"none"}))))))};export{k as LevelsSection};
|
|
2
2
|
//# sourceMappingURL=LevelsSection.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import d from"react";import{useFormContext as m}from"react-hook-form";import{FormMarkdownInput as s}from"../../../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as a}from"../../../utils/trackFormUtils.esm.js";const c=({isLoading:e,disabled:r})=>{const{control:o,formState:{errors:t}}=m(),{name:i,description:n,placeholder:p}=a.description;return d.createElement(s,{name:"detailsStep.description",control:o,error:t.detailsStep?.description,label:i,description:n,placeholder:r?void 0:p,disabled:r||e})};export{c as TrackDescriptionInput};
|
|
2
2
|
//# sourceMappingURL=TrackDescriptionInput.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as n}from"@material-ui/core/styles";import e from"react";import{useTrackFormContext as a}from"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import"../../../../contexts/UserProvider.esm.js";import{TrackDescriptionInput as m}from"./TrackDescriptionInput/TrackDescriptionInput.esm.js";import{TrackDocumentationUrlInput as c}from"./TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js";import{TrackNameInput as l}from"./TrackNameInput/TrackNameInput.esm.js";import{TrackOwnerSelect as s}from"./TrackOwnerSelect/TrackOwnerSelect.esm.js";const p=n(o=>({container:{display:"flex",flexDirection:"column",gap:o.spacing(2)}})),d=()=>{const o=p(),{isLoading:t,isReadOnly:r,selectedItem:i}=a();return e.createElement("div",{className:o.container},e.createElement(l,{disabled:r,isLoading:t}),e.createElement(m,{isLoading:t,disabled:r}),e.createElement(s,{disabled:t||r,ownerEntityRef:i?.ownerEntityRef??void 0}),e.createElement(c,{isLoading:t,disabled:r}))};export{d as TrackDetailsStep};
|
|
2
2
|
//# sourceMappingURL=TrackDetailsStep.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as d,Typography as r}from"@material-ui/core";import e from"react";import{useFormContext as s}from"react-hook-form";import{FormTextInput as p}from"../../../../FormTextInput/FormTextInput.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as u}from"../../../utils/trackFormUtils.esm.js";const f=d(t=>({container:{display:"flex",flexDirection:"column"},fieldContainer:{width:"300px",marginTop:t.spacing(1)}})),v=({isLoading:t,disabled:a})=>{const n=f(),{control:i,formState:{errors:o}}=s(),{name:m,description:l,placeholder:c}=u.documentationURL;return e.createElement("div",{className:n.container},e.createElement("div",null,e.createElement(r,{variant:"subtitle2"},m),e.createElement(r,{variant:"caption"},l)),e.createElement("div",{className:n.fieldContainer},e.createElement(p,{name:"detailsStep.documentationURL",control:i,placeholder:c,disabled:a||t,variant:"outlined",margin:"dense",error:o?.detailsStep?.documentationURL,helperText:o?.detailsStep?.documentationURL?.message??void 0})))};export{v as TrackDocumentationUrlInput};
|
|
2
2
|
//# sourceMappingURL=TrackDocumentationUrlInput.esm.js.map
|
package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Typography as
|
|
1
|
+
import{Typography as l,TextField as d}from"@material-ui/core";import{makeStyles as f}from"@material-ui/core/styles";import e from"react";import{useFormContext as x,Controller as u}from"react-hook-form";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as T}from"../../../utils/trackFormUtils.esm.js";const g=f(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)},helperText:{marginLeft:0},field:{marginTop:"-10px"}})),h=({disabled:t,isLoading:n})=>{const r=g(),{control:o,formState:{errors:a}}=x(),{placeholder:i,name:m,description:p,helperText:s}=T.name;return e.createElement("div",{className:r.container},e.createElement("div",null,e.createElement(l,{variant:"subtitle2"},m),e.createElement(l,{variant:"caption"},p)),e.createElement(u,{name:"detailsStep.name",control:o,defaultValue:"",render:({field:c})=>e.createElement(d,{...c,FormHelperTextProps:{className:r.helperText},className:r.field,variant:"outlined",margin:"dense",fullWidth:!0,placeholder:i,disabled:n||t,type:"text",error:!!a.detailsStep?.name,helperText:a.detailsStep?.name?.message??s})}))};export{h as TrackNameInput};
|
|
2
2
|
//# sourceMappingURL=TrackNameInput.esm.js.map
|
package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as
|
|
1
|
+
import{parseEntityRef as v}from"@backstage/catalog-model";import{Typography as m}from"@material-ui/core";import{makeStyles as E}from"@material-ui/core/styles";import{uniqBy as y}from"lodash";import t from"react";import{useFormContext as g}from"react-hook-form";import"../../../../../contexts/TrackFormContext.esm.js";import"../../../../../contexts/CheckFormContext.esm.js";import"../../../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as S}from"../../../../../contexts/UserProvider.esm.js";import{FormControlledSelect as b}from"../../../../FormControlledSelect/FormControlledSelect.esm.js";import{useOptions as R}from"../../../../GroupSelector/useOptions.esm.js";import"../../../utils/validation.esm.js";import{TRACK_FIELDS as w}from"../../../utils/trackFormUtils.esm.js";const x=E(n=>({container:{display:"flex",flexDirection:"column",gap:n.spacing(1)}})),F=({disabled:n,ownerEntityRef:o})=>{const l=x(),{options:p,isLoading:i}=R(),{user:s,userEntityRef:a}=S(),{control:c,formState:{errors:f}}=g();let e=y(p.map(r=>({value:r.ref,label:r.name})),"value");a&&(e=[{value:a,label:s?.metadata.name},...e]),o&&a!==o&&!e.some(r=>r.value===o)&&(e=[{value:o,label:v(o).name},...e]);const{name:d,description:u}=w.owner;return t.createElement("div",{className:l.container},t.createElement("div",null,t.createElement(m,{variant:"subtitle2"},d),t.createElement(m,{variant:"caption"},u)),t.createElement("div",null,t.createElement(b,{name:"detailsStep.ownerEntityRef",control:c,options:i?void 0:e,disabled:n||i,helperText:f?.detailsStep?.ownerEntityRef?.message??void 0})))};export{F as TrackOwnerSelect};
|
|
2
2
|
//# sourceMappingURL=TrackOwnerSelect.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{zodResolver as
|
|
1
|
+
import{zodResolver as S}from"@hookform/resolvers/zod";import{useMemo as v,useEffect as h}from"react";import{useForm as k}from"react-hook-form";import{v4 as R}from"uuid";import{useTrackFormContext as y}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as F}from"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetChecksMap as w}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{mapInputFilterToFormFilters as E,mapFiltersToInputFilter as T}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{trackFormSchema as g}from"./validation.esm.js";const l={detailsStep:{name:"",description:"",ownerEntityRef:""},levelsStep:{levels:[{name:"Level 1",description:"",checks:[]}]},filtersStep:{}},M=({name:t,description:o,ownerEntityRef:r,filter:e,levels:i,documentationURL:a})=>({detailsStep:{name:t,ownerEntityRef:r,description:o??"",documentationURL:a??void 0},levelsStep:{levels:i?.map(s=>({name:s.name??`Level ${s.ordinal}`??"Level 1",description:s.description??"",checks:s.checks.map(n=>({id:n.id,name:n.name??n.id,description:n.description??""}))}))||[]},filtersStep:{filter:E(e)}}),c=(t,o,r)=>({id:r?.id??R(),ownerEntityRef:t.detailsStep.ownerEntityRef,description:t.detailsStep.description,name:t.detailsStep.name,documentationURL:t.detailsStep.documentationURL??"",type:r?.type??"standard",levels:t.levelsStep.levels?.map((e,i)=>({ordinal:i+1,name:e.name??"",description:e.description??"",checks:e.checks.map(a=>o[a.id])})),filter:T(t.filtersStep.filter)}),C=t=>{const{selectedItem:o}=y(),r=v(()=>o?M(o):l,[o]),e=k({defaultValues:r,mode:"onChange",resolver:S(g)}),{userEntityRef:i}=F();h(()=>{!o&&i&&!e.getValues("detailsStep.ownerEntityRef")&&e.setValue("detailsStep.ownerEntityRef",i)},[o,i,e]);const{checkChips:a,checksLoading:s,checksMap:n}=w(),d=new Set(e.getValues("levelsStep.levels").flatMap(m=>m.checks.map(p=>p.id))),f=a.filter(m=>!d.has(m.id)),{showModal:u}=L();return{formMethods:e,onSubmit:async m=>{if(!await u({title:"Save Track",message:`Are you sure you want to save track: ${m.detailsStep.name}?`,error:!1}))return;const p=c(m,n??{},o);t(p)},selectableChips:f,checksLoading:s}};export{l as DEFAULT_TRACK_FORM_VALUES,c as mapTrackFormToInput,C as useTrackForm};
|
|
2
2
|
//# sourceMappingURL=useTrackForm.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"react";import{trackPassRatesSummaryCsvFilename as
|
|
1
|
+
import t from"react";import{trackPassRatesSummaryCsvFilename as s}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{TrackPassRateHistoryLineChart as i}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"@backstage/catalog-model";import"luxon";import{useSummaryAggregationsContext as n}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import{TrackSummaryBarChart as p}from"../Charts/BarChart/TrackSummaryBarChart.esm.js";import{OverviewChartCard as c}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallTrackPassRatesToCsv as l}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const C=()=>{const{trackPassRateOverviewTrend:{data:r,isLoading:a,isError:e}}=n(),o=r?.overallTrackPassRate?.length,m=!r?.overallTrackPassRate||!o||a||e;return t.createElement(c,{title:"Track pass rate",subtitle:"Aggregate pass rate for tracks",summaryCardContent:t.createElement(p,null),chartSectionContent:t.createElement(i,null),disableDataExport:m,csvFilename:s,csvData:l(r)})};export{C as TrackHistoryChartCard};
|
|
2
2
|
//# sourceMappingURL=TrackHistoryChartCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseEntityRef as
|
|
1
|
+
import{parseEntityRef as T}from"@backstage/catalog-model";import{EntityDisplayName as I}from"@backstage/plugin-catalog-react";import{makeStyles as $,Typography as B,Checkbox as C}from"@material-ui/core";import D from"@material-ui/icons/Category";import G from"@material-ui/icons/Class";import M from"@material-ui/icons/Group";import N from"@material-ui/icons/Loop";import{toEntityFilterQuery as j}from"@spotify/backstage-plugin-soundcheck-common";import e,{useMemo as P}from"react";import{useGetEntityFacets as l}from"../../../hooks/catalog/useGetEntityFacets.esm.js";import i from"../../MultiSelectFilter/MultiSelectFilter.esm.js";const Q=$(t=>({root:{display:"flex",flexDirection:"row",alignItems:"center",gap:t.spacing(2)}})),c=(t,{selected:n})=>e.createElement(e.Fragment,null,e.createElement(C,{value:t,checked:n,color:"primary"}),e.createElement(I,{entityRef:t,hideIcon:!0})),q=({track:t,label:n,owners:p,setOwners:y,lifecycles:f,setLifecycles:d,types:E,setTypes:u,systems:g,setSystems:b})=>{const h=Q(),r=j(t.filter),{data:w,isLoading:F}=l("relations.ownedBy",r),{data:o,isLoading:L}=l("spec.lifecycle",r),{data:s,isLoading:O}=l("spec.type",r),{data:a,isLoading:k}=l("relations.partOf",r),m=P(()=>a?.filter(S=>{try{return T(S).kind.toLowerCase()==="system"}catch{return!1}}),[a]),v=(o||[]).length<=1,x=(s||[]).length<=1,R=(m||[]).length<=1;return e.createElement("div",{className:h.root},e.createElement(B,{variant:"caption"},`${n}:`),e.createElement(i,{name:"system",label:"System",icon:e.createElement(D,null),filters:g,setFilters:b,options:m??[],disabled:k||R,customRenderOption:c}),e.createElement(i,{name:"owner",label:"Owner",icon:e.createElement(M,null),filters:p,setFilters:y,options:w??[],disabled:F,customRenderOption:c}),e.createElement(i,{name:"type",label:"Type",icon:e.createElement(G,null),filters:E,setFilters:u,options:s??[],disabled:O||x}),e.createElement(i,{name:"lifecycle",label:"Lifecycle",icon:e.createElement(N,null),filters:f,setFilters:d,options:o??[],disabled:L||v}))};export{q as FilterBar};
|
|
2
2
|
//# sourceMappingURL=FilterBar.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{stringifyEntityRef as
|
|
1
|
+
import{stringifyEntityRef as v}from"@backstage/catalog-model";import{Table as B}from"@backstage/core-components";import{makeStyles as R}from"@material-ui/core";import L from"lodash";import m,{useState as z,useEffect as O,useCallback as y}from"react";import{TrackEntityField as n,Direction as u}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as P}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as x}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as a}from"./columns.esm.js";import{toTrackEntityRow as D}from"./utils.esm.js";const N=[a.createBadgeColumn(),a.createNameColumn(),a.createStatusColumn(),a.createSystemColumn(),a.createOwnerColumn(),a.createSpecTypeColumn(),a.createSpecLifecycleColumn()],F=[n.CertificationLevel,n.Name,n.CheckPassRate,n.System,n.Owner,n.Type,n.Lifecycle],w=d=>{const{lifecycles:i,owners:s,types:c,systems:l}=d,g=i?.length?{"spec.lifecycle":i}:void 0,e=s?.length?{"relations.ownedBy":s}:void 0,f=c?.length?{"spec.type":c}:void 0,r=l?.length?{"relations.partOf":l}:void 0;return{...g,...e,...f,...r}},A=R({tableContainer:{display:"flex",flexDirection:"column",height:"100%",width:"99%"}}),W=({track:d,lifecycles:i,owners:s,types:c,systems:l})=>{const g=A(),[e,f]=z({orderBy:void 0,filter:w({lifecycles:i,owners:s,types:c,systems:l}),pageInfo:{page:0,pageSize:25,direction:"forward",cursor:null}});O(()=>{f(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:w({lifecycles:i,owners:s,types:c,systems:l})}))},[i,s,c,l]);const{data:r,isLoading:C}=x({trackId:d.id,orderBy:e.orderBy,filter:e.filter,[e.pageInfo.direction==="forward"?"first":"last"]:e.pageInfo.pageSize,[e.pageInfo.direction==="forward"?"after":"before"]:e.pageInfo.cursor}),k=y((t,p)=>{let o;t===-1?o=void 0:o={field:F[t],direction:p==="asc"?u.Asc:u.Desc},f({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),h=y((t,p)=>{const o=t>e.pageInfo.page?"forward":"backward",b=o==="forward"?r?.trackEntities.pageInfo.endCursor??null:r?.trackEntities.pageInfo.startCursor??null;f({...e,pageInfo:{page:t,pageSize:p,direction:o,cursor:b}})},[r,e]),I=r?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:E,isLoading:S}=P({entityRefs:I}),T=L.compact(r?.trackEntities.edges.map(t=>{const p=E?.items.find(o=>!!o&&v(o)===t.node.entityRef);return p?D({trackDetails:t.node,track:d,entity:p}):void 0}))??[];return m.createElement("div",{className:g.tableContainer},m.createElement(B,{columns:N,data:T,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:25,search:!1,showTitle:!1,padding:"dense"},onOrderChange:k,onPageChange:h,page:e.pageInfo.page,totalCount:r?.trackEntities.totalCount??0,isLoading:C||S,components:{Toolbar:()=>null}}))};export{W as TrackEntitiesTable};
|
|
2
2
|
//# sourceMappingURL=TrackEntitiesTable.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{makeStyles as
|
|
1
|
+
import{makeStyles as x,lighten as b,darken as h,Typography as r}from"@material-ui/core";import a,{useState as R,useRef as E}from"react";import S from"../../RichTooltip/RichTooltip.esm.js";import{getProgressColor as i}from"../utils.esm.js";const m=e=>{const t=e.passed+e.failed+e.warning+e.notReported;return t===0?100:Math.round(e.passed/t*100)},C=(e,t)=>e.levels.find(n=>n.ordinal===t),L=x(e=>({cell:{backgroundColor:({passRate:t})=>i(e,t),color:({passRate:t})=>e.palette.getContrastText(i(e,t)),cursor:"default",borderRadius:"4px",textAlign:"center",fontSize:".9rem",width:"50px"},tooltip:{width:"225px"},topLevelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingBottom:e.spacing(1)},levelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingTop:e.spacing(1),paddingBottom:e.spacing(1)},bottomLevelStatus:{paddingTop:e.spacing(1)},levelPassRate:{backgroundColor:({passRate:t})=>b(i(e,t),.75),color:({passRate:t})=>h(i(e,t),.7),borderRadius:"4px",textAlign:"center",fontSize:".7rem",width:"32px",height:"15px"}})),k=({track:e,status:t})=>{const n=m(t),s=L({passRate:n}),[u,p]=R(!1),d=E(null),g=()=>{d.current=setTimeout(()=>p(!0),500)},v=()=>{clearTimeout(d.current),p(!1)};return a.createElement(S,{content:a.createElement("div",{className:s.tooltip},t.statusByLevel.map((o,c)=>{let l;c===0?l=s.topLevelStatus:c===t.statusByLevel.length-1?l=s.bottomLevelStatus:l=s.levelStatus;const f=o.passed+o.failed+o.warning+o.notReported,y=C(e,o.ordinal);return a.createElement("div",{key:c,className:l,style:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},a.createElement("div",null,a.createElement(r,{variant:"caption",style:{fontWeight:"bold"}},y?.name??`Level ${o.ordinal}`)),a.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.createElement(r,{variant:"caption"},`Passing ${o.passed} of ${f} checks`),a.createElement(r,{className:s.levelPassRate},`${m(o)}%`)))})),open:u,placement:"bottom",onClose:()=>p(!1)},a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},onMouseEnter:g,onMouseLeave:v},a.createElement(r,{className:s.cell},`${n}%`)))};export{k as TrackStatusChip};
|
|
2
2
|
//# sourceMappingURL=TrackStatusChip.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{OverflowTooltip as
|
|
1
|
+
import{OverflowTooltip as s}from"@backstage/core-components";import{EntityRefLink as d,EntityRefLinks as o}from"@backstage/plugin-catalog-react";import{makeStyles as u,Chip as m}from"@material-ui/core";import r from"react";import{LevelBadge as c}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as p}from"../../Badges/NoLevelBadge.esm.js";import"../../Badges/CampaignBadge.esm.js";import{TrackStatusChip as f}from"./TrackStatusChip.esm.js";const i=u(()=>({linkHover:{"& span":{"&:hover":{textDecoration:"underline"}}}})),y=Object.freeze({createBadgeColumn(){return{title:"",field:"badge",render:e=>e.badge?r.createElement(c,{badge:e.badge}):r.createElement(p,null),width:"auto",align:"center",sorting:!1}},createStatusColumn(){return{title:"Checks",field:"status",render:e=>e.status&&r.createElement(f,{track:e.track,status:e.status}),width:"auto",align:"center",sorting:!1}},createNameColumn(e){return{title:"Name",field:"resolved.entityRef",highlight:!0,customSort(t,a){return 0},render:({entity:t})=>{const a=i();return r.createElement(d,{entityRef:t,defaultKind:e?.defaultKind||"Component",className:a.linkHover})}}},createSystemColumn(){return{title:"System",field:"resolved.partOfSystemRelationTitle",customSort(e,t){return 0},render:({resolved:e})=>{const t=i();return r.createElement(o,{entityRefs:e.partOfSystemRelations,defaultKind:"system",className:t.linkHover})}}},createOwnerColumn(){return{title:"Owner",field:"resolved.ownedByRelationsTitle",customSort(e,t){return 0},render:({resolved:e})=>{const t=i();return r.createElement(o,{entityRefs:e.ownedByRelations,defaultKind:"group",className:t.linkHover})}}},createSpecTypeColumn(){return{title:"Type",field:"entity.spec.type",customSort(e,t){return 0}}},createSpecLifecycleColumn(){return{title:"Lifecycle",field:"entity.spec.lifecycle",customSort(e,t){return 0},width:"auto"}},createMetadataDescriptionColumn(){return{title:"Description",field:"entity.metadata.description",customSort(e,t){return 0},render:({entity:e})=>r.createElement(s,{text:e.metadata.description,placement:"bottom-start"}),width:"auto"}},createTagsColumn(){return{title:"Tags",field:"entity.metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:e})=>r.createElement(r.Fragment,null,e.metadata.tags&&e.metadata.tags.map(t=>r.createElement(m,{key:t,label:t,size:"small",variant:"outlined",style:{marginBottom:"0px"}}))),width:"auto",sorting:!1}},createTitleColumn(e){return{title:"Title",field:"entity.metadata.title",customSort(t,a){return 0},hidden:e?.hidden,searchable:!0}},createLabelColumn(e,t){return{title:t?.title||"Label",field:"entity.metadata.labels",customSort(a,n){return 0},cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:a})=>{const n=a.metadata?.labels,l=n&&n[e]||t?.defaultValue;return r.createElement(r.Fragment,null,l&&r.createElement(m,{key:l,label:l,size:"small",variant:"outlined"}))},width:"auto",sorting:!1}},createNamespaceColumn(){return{title:"Namespace",field:"entity.metadata.namespace",customSort(e,t){return 0},width:"auto"}}});export{y as columnFactories};
|
|
2
2
|
//# sourceMappingURL=columns.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{RELATION_PART_OF as
|
|
1
|
+
import{RELATION_PART_OF as y,RELATION_OWNED_BY as f,stringifyEntityRef as l}from"@backstage/catalog-model";import{getEntityRelations as r,humanizeEntityRef as i}from"@backstage/plugin-catalog-react";function R(d){const{trackDetails:n,track:m,entity:t}=d,a=r(t,y,{kind:"system"}),o=r(t,f),s=l(t);return{id:s,entity:t,badge:n.badge??void 0,track:m,status:n.status,resolved:{name:i(t,{defaultKind:"Component"}),entityRef:s,ownedByRelationsTitle:o.map(e=>i(e,{defaultKind:"group"})).join(", "),ownedByRelations:o,partOfSystemRelationTitle:a.map(e=>i(e,{defaultKind:"system"})).join(", "),partOfSystemRelations:a}}}export{R as toTrackEntityRow};
|
|
2
2
|
//# sourceMappingURL=utils.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Typography as f}from"@material-ui/core";import
|
|
1
|
+
import{Typography as f}from"@material-ui/core";import u from"lodash";import{DateTime as d}from"luxon";import l from"react";import"recharts";import"../Charts/ChartTypes.esm.js";import{LineChart as y}from"../Charts/LineChart/LineChart.esm.js";import{formatDate as h}from"../Charts/chartUtils.esm.js";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";const p=r=>{const t=r?.certificationStatusHistory.history??[],o=r?.certificationStatusHistory.numberOfEntities,i=d.utc();return u.map(t,(e,a)=>{let m={name:h(i,t.length-a-1)};const c=[];for(const n of e.statusByLevel){const s=n.cumulativelyPassed;c.push(o?Math.round(s/o*100):100)}return e.statusByLevel.forEach((n,s)=>{m={...m,[`Level ${n.ordinal}`]:c[s]}}),m})},v=({track:r,data:t,isError:o})=>{if(o)return l.createElement(f,{color:"error"},"Failed to load track data.");const i=p(t),e=t?.certificationStatusHistory?r?.levels.map(a=>({dataKey:`Level ${a.ordinal}`,name:`Level ${a.ordinal}`}))??[]:[];return l.createElement(y,{data:i,lines:e})};export{v as TrackHistoryChart,p as formatLineChartData};
|
|
2
2
|
//# sourceMappingURL=TrackHistoryChart.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useTheme as
|
|
1
|
+
import{useTheme as l}from"@material-ui/core";import r from"react";import{ChartWrapper as s}from"../Charts/ChartWrapper/ChartWrapper.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import{getChartColors as p}from"../Charts/chartUtils.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import{BarChart as u,BarChartLayout as c}from"../Charts/BarChart/BarChart.esm.js";const f=(e,t)=>{if(!t)return[];const a=[],m=t.numberOfEntities;for(const n of t.statusByLevel){const o=n.cumulativelyPassed;a.push(m?Math.round(o/m*100):100)}const i=p(e);return t.statusByLevel.map(({ordinal:n},o)=>({name:`Level ${n}`,passRate:a[o],fill:i[o%i.length]}))??[]},h=({data:e,isLoading:t})=>{const a=l();return r.createElement(r.Fragment,null,!t&&e&&r.createElement("div",null,r.createElement(s,null,r.createElement(u,{data:f(a,e.certificationStatus),layout:c.Horizontal}))))};export{h as TrackLevelsChart};
|
|
2
2
|
//# sourceMappingURL=TrackLevelsChart.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{MarkdownContent as
|
|
1
|
+
import{MarkdownContent as M}from"@backstage/core-components";import{useRouteRef as U}from"@backstage/core-plugin-api";import{EntityRefLink as V}from"@backstage/plugin-catalog-react";import{usePermission as v}from"@backstage/plugin-permission-react";import{makeStyles as A,Paper as G,Typography as W,Button as j,Divider as q,Tabs as z,Tab as C}from"@material-ui/core";import{soundcheckTrackReadPermission as J,soundcheckTrackUpdatePermission as K}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as Q}from"react";import{useParams as X,useNavigate as Y}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as Z}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as _}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as $}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import{useSearchParam as g}from"../../hooks/useSearchParam.esm.js";import{trackEditRouteRef as ee}from"../../routes.esm.js";import{LevelCard as te}from"../LevelCard/LevelCard.esm.js";import{LoadingIndicator as re}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as ae}from"../PageWarningMessage/PageWarningMessage.esm.js";import{FilterBar as ie}from"./FilterBar/FilterBar.esm.js";import{TrackEntitiesTable as ne}from"./TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackProgressCard as se}from"./TrackProgressCard.esm.js";const h=t=>{const{lifecycles:a,owners:l,types:i,systems:m}=t,n=a?.length?{"spec.lifecycle":a}:void 0,d=l?.length?{"relations.ownedBy":l}:void 0,s=i?.length?{"spec.type":i}:void 0,p=m?.length?{"relations.partOf":m}:void 0;if(n||d||s||p)return{...n,...d,...s,...p}},oe=A(t=>({root:{height:"100%",background:t.palette.background.default},header:{backgroundColor:t.palette.background.paper,borderRadius:0},trackProgressContainer:{margin:t.spacing(2,0,2,2)},trackContainerContent:{padding:t.spacing(2,2,1),backgroundColor:t.palette.background.paper},levelCard:{margin:t.spacing(1,0,2)},editButton:{marginLeft:"auto"},tabsContainer:{margin:t.spacing(1,0,1,2)},filterBar:{marginTop:t.spacing(1)},trackEntitiesContainer:{marginTop:t.spacing(1)}}));function b({children:t,value:a,index:l}){return e.createElement("div",{hidden:a!==l},a===l&&t)}const le=()=>{const t=oe(),[a,l]=Q(0),[i,m]=g("owners"),[n,d]=g("lifecycles"),[s,p]=g("types"),[c,w]=g("systems"),T=(u,y)=>{l(y)},{trackId:o}=X(),{data:N,isLoading:f,isError:L}=Z({ids:[o??""],first:1}),r=N?.edges?.[0]?.node,{data:E,isLoading:k,isError:P}=_({trackId:o,filter:h({lifecycles:n,owners:i,types:s,systems:c})},!!o),{data:R,isLoading:B,isError:I}=$({trackId:o,filter:h({lifecycles:n,owners:i,types:s,systems:c}),numberOfDays:30},!!o),{loading:x,allowed:S}=v({permission:J,resourceRef:o}),{loading:F,allowed:O}=v({permission:K,resourceRef:o}),D=Y(),H=U(ee);return e.createElement("div",null,e.createElement(ae,{entityName:"track",entityId:o,showNotFound:!f&&!r,showCannotView:!x&&!S}),f&&e.createElement(re,null),r&&e.createElement("div",{className:t.root},e.createElement(G,{elevation:3,className:t.header},e.createElement("div",{className:t.trackContainerContent},e.createElement("div",{style:{display:"flex",alignItems:"center"}},e.createElement("div",null,e.createElement(W,{variant:"h5"},r.name),e.createElement(V,{entityRef:r.ownerEntityRef})),!F&&O&&r.isEditable&&e.createElement(j,{className:t.editButton,variant:"contained",color:"primary",onClick:()=>{D(H({trackId:r.id}))}},"Edit Track")),e.createElement(M,{content:r.description??""}),e.createElement(q,null),e.createElement("div",{className:t.filterBar},e.createElement(ie,{label:"Filter",track:r,owners:i,setOwners:m,lifecycles:n,setLifecycles:d,types:s,setTypes:p,systems:c,setSystems:w})))),e.createElement("div",{className:t.trackProgressContainer},e.createElement(se,{track:r,status:E,history:R,isLoading:f||k||B,isError:L||P||I})),e.createElement("div",{className:t.tabsContainer},e.createElement(z,{value:a,onChange:T},e.createElement(C,{label:"Levels"}),e.createElement(C,{label:"Entities"})),e.createElement(b,{value:a,index:0},r&&r.levels?.map((u,y)=>e.createElement("div",{className:t.levelCard,key:u.ordinal},e.createElement(te,{track:r,level:u,index:y,data:E,isLoading:f||k,lifecycles:n,owners:i,types:s,systems:c})))),e.createElement(b,{value:a,index:1},r&&e.createElement("div",{className:t.trackEntitiesContainer},e.createElement(ne,{track:r,lifecycles:n,owners:i,types:s,systems:c}))))))};export{le as TrackPage};
|
|
2
2
|
//# sourceMappingURL=TrackPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useApi as Q,featureFlagsApiRef as
|
|
1
|
+
import{useApi as Q,featureFlagsApiRef as U}from"@backstage/core-plugin-api";import{usePermission as W}from"@backstage/plugin-permission-react";import{makeStyles as Z,Button as T,Grid as o}from"@material-ui/core";import{soundcheckTrackCreatePermission as $}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as i,useEffect as q}from"react";import z from"react-use/lib/useDebounce";import{useTrackFormContext as J}from"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as K}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetTrackOwners as V}from"../../../hooks/tracks/useGetTrackOwners.esm.js";import X from"../../../images/no-results.svg";import{FilterDefault as y}from"../../../utils/filters.esm.js";import{EmptyState as v}from"../../EmptyState/EmptyState.esm.js";import{Pagination as Y}from"../../Pagination/Pagination.esm.js";import{SearchFilters as _}from"../../SearchFilters/SearchFilters.esm.js";import{TrackEmptyState as d,TrackNoResults as x}from"./TrackEmptyState.esm.js";import{TracksOverviewSkeleton as ee}from"./TracksOverviewSkeleton.esm.js";import{TrackSummaryCard as re}from"./TrackSummaryCard.esm.js";const te=Z(t=>({headerButtons:{display:"flex",gap:t.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:t.spacing(0,0,1)},container:{padding:t.spacing(3),gap:t.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:t.spacing(1.5),paddingBottom:t.spacing(1.5)}})),ae=({tracksPerPage:t,currentCursor:w})=>{const n=te(),[g,A]=i(w),[l,b]=i(""),[u,S]=i(y.Alpha),[f,N]=i(y.Owner),[B,F]=i(""),{data:I,isLoading:O}=V();z(()=>{F(l)},500,[l]);const{setShowAddModal:h}=J(),{loading:k,allowed:L}=W({permission:$}),{data:a,isLoading:c}=K({ids:void 0,types:["standard","playlist"],first:t,after:g,orderAlphabetical:u,searchByOwner:f,searchByName:B}),[m,G]=i(a),p=m?.edges?.map(r=>r.node),[P,R]=i([]),C=Q(U),D=!C.getRegisteredFlags().find(r=>r.name==="soundcheck-enable-track-creation")||C.isActive("soundcheck-enable-track-creation"),E=!L||!D,j=r=>{S(r.target.value)},H=r=>{N(r.target.value)};if(q(()=>{a&&G(()=>({totalCount:a.totalCount,edges:a.edges,pageInfo:{startCursor:a.pageInfo.startCursor,endCursor:a.pageInfo.endCursor,hasNextPage:a?.pageInfo.hasNextPage??!1,hasPreviousPage:a?.pageInfo.hasPreviousPage??!1}}))},[a]),!c&&!p)return e.createElement(v,{title:d.title,description:d.description,imgSrc:X,action:!k&&e.createElement(T,{disabled:E,variant:"contained",color:"primary",onClick:()=>h(!0)},d.callToAction)});let s;c?s=e.createElement(ee,null):p?.length?s=p?.map(r=>e.createElement(o,{key:r.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`track card ${r.id}`},e.createElement(re,{summary:r}))):s=e.createElement(o,{xs:12,item:!0,role:"listitem","aria-label":"result"},e.createElement(v,{title:x.title,description:x.description}));const M=m?.pageInfo.hasNextPage||P?.length>0;return e.createElement(o,{container:!0,direction:"row",className:n.container},e.createElement(o,{container:!0,className:n.header},e.createElement(_,{searchPlaceholder:"Search Available Tracks",isLoading:c||O,searchTerm:l,setSearchTerm:b,filterAlpha:u,handleAlphabeticalFilterChange:j,filterOwner:f,handleOwnerFilterChange:H,owners:I}),e.createElement(o,{item:!0,xs:2,className:n.headerButtons},!k&&e.createElement(T,{disabled:E,variant:"contained",color:"primary",onClick:()=>h(!0),className:n.createButton},"Create Track"))),e.createElement(o,{container:!0,spacing:4,role:"list","aria-label":"tracks"},s),M&&e.createElement(o,{item:!0,xs:12},e.createElement(Y,{response:m,listingsPerPage:t,cursor:g,setCursor:A,prevCursors:P,setPrevCursors:R,labelPerPageDropdown:"Tracks Per Page:",urlRoute:"tracks?tracksPerPage="})))};export{ae as TrackListPage};
|
|
2
2
|
//# sourceMappingURL=TrackListPage.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Link as
|
|
1
|
+
import{Link as d}from"@backstage/core-components";import{EntityRefLink as p}from"@backstage/plugin-catalog-react";import{makeStyles as h,List as f,Typography as m,ListItem as a,Tooltip as n,ListItemIcon as i,ListItemText as l}from"@material-ui/core";import y from"@material-ui/icons/DoneAllRounded";import I from"@material-ui/icons/Group";import g from"@material-ui/icons/Menu";import L from"@material-ui/icons/OpenInNew";import e from"react";const N=h(r=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:r.spacing(2)},listItem:{padding:0},listItemText:{margin:0},iconContainer:{minWidth:"auto",paddingRight:r.spacing(1)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),k=({track:r})=>{const t=N(),o=r.levels?.length??0,c=r.levels?.reduce((s,E)=>s+E.checks.length,0);return e.createElement(f,{dense:!0,disablePadding:!0,className:t.cardSection},e.createElement(m,{variant:"overline",color:"textSecondary"},"Track Details"),e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Levels"},e.createElement(i,{className:t.iconContainer},e.createElement(g,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:t.listItemText,primary:e.createElement(m,{variant:"body2",color:"textPrimary"},`${o} ${o===1?"Level":"Levels"}`)})),e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Checks"},e.createElement(i,{className:t.iconContainer},e.createElement(y,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:t.listItemText,primary:e.createElement(m,{variant:"body2",color:"textPrimary"},`${c} ${c===1?"Check":"Checks"}`)})),r.documentationURL&&e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Documentation"},e.createElement(i,{className:t.iconContainer},e.createElement(L,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:t.listItemText,primary:e.createElement(d,{to:r.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),e.createElement(a,{disableGutters:!0,className:t.listItem},e.createElement(n,{title:"Owner"},e.createElement(i,{className:t.iconContainer},e.createElement(I,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:t.listItemText,primary:e.createElement(p,{entityRef:r.ownerEntityRef,hideIcon:!0,underline:"hover",className:t.ownerLink})})))};export{k as TrackMetadata};
|
|
2
2
|
//# sourceMappingURL=TrackMetadata.esm.js.map
|